:root{--night: #080b18;--win: #030814;--line: #ffffff;--txt: #ffffff;--read: #d6dff2;--dim: #aebdd9;--dimmer: #8a9ab8;--gold: #ffd34e;--goldd: #7a5c12;--red: #ff6259;--cyan: #6fd0ff;--green: #7ee07e;--ui: "Hiragino Sans", "Yu Gothic UI", "Yu Gothic", "Meiryo", system-ui, sans-serif;--num: Consolas, "MS Gothic", ui-monospace, monospace}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--night);color:var(--txt);font-family:var(--ui);font-size:16px;font-weight:500;line-height:1.85;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}#root{display:flex;justify-content:center}.app{width:100%;max-width:460px;min-height:100%;padding:12px 12px 18px;display:flex;flex-direction:column;gap:10px}.win{background:var(--win);border:3px solid var(--line);border-radius:7px;box-shadow:0 0 0 3px var(--night);padding:13px 15px}.stage{position:relative;overflow:hidden;border:3px solid var(--line);border-radius:7px;box-shadow:0 0 0 3px var(--night);background:linear-gradient(180deg,#0a1024,#1b2750);padding:16px 14px;display:flex;flex-direction:column;align-items:center;gap:8px}canvas.scene{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;image-rendering:pixelated;z-index:0}.stage>*:not(canvas.scene){position:relative;z-index:1}.stage .lbl,.stage .en,.stage .big{text-shadow:0 0 6px #050810,0 0 6px #050810,2px 2px 0 #050810}canvas.sprite{image-rendering:pixelated;display:block}.float{animation:bob 1.9s steps(2,end) infinite}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@media(prefers-reduced-motion:reduce){.float,.cur:after{animation:none}}.cur:after{content:"▼";color:var(--gold);margin-left:6px;animation:blink 1s steps(2) infinite}@keyframes blink{50%{opacity:0}}.lbl{font-size:13px;letter-spacing:.08em;color:var(--dimmer);font-weight:600}.n{font-family:var(--num);font-variant-numeric:tabular-nums}.gold{color:var(--gold)}.red{color:var(--red)}.cyan{color:var(--cyan)}.green{color:var(--green)}.dim{color:var(--dim)}.big{font-size:22px;letter-spacing:.04em;font-weight:700}.g-big{color:var(--gold);font-size:30px;font-family:var(--num);font-weight:700;text-shadow:2px 2px 0 var(--goldd)}.en{font-size:33px;font-weight:700;text-shadow:2px 2px 0 #000;text-align:center;word-break:break-word}.row{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:15px}.lrow{display:flex;justify-content:space-between;gap:10px;font-size:14.5px;padding:3px 0}.grow{flex:1}.center{text-align:center}.gauge{height:10px;border:2px solid var(--line);border-radius:2px;background:#000;overflow:hidden}.gauge>i{display:block;height:100%;background:var(--gold);transition:width .35s ease}.gauge>i.c{background:var(--cyan)}.gauge>i.r{background:var(--red)}.choices{display:flex;flex-direction:column;gap:4px}button.choice,button.cmd{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--dim);font:inherit;font-size:16px;text-align:left;padding:7px 8px 7px 26px;position:relative;border-radius:5px;cursor:pointer;width:100%}button.choice:before,button.cmd:before{content:"▶";position:absolute;left:6px;color:var(--gold);opacity:0}button.choice:hover:not(:disabled),button.cmd:hover:not(:disabled),button.choice:focus-visible,button.cmd:focus-visible{color:var(--txt);outline:none}button.choice:hover:not(:disabled):before,button.cmd:hover:not(:disabled):before,button.choice:focus-visible:before,button.cmd:focus-visible:before{opacity:1}button.choice:focus-visible,button.cmd:focus-visible{background:#16223f}button.cmd{font-weight:700;color:var(--txt)}button.cmd.sel{color:var(--gold)}button.cmd.sel:before{opacity:1}button.choice.ok{color:var(--green);font-weight:700}button.choice.ok:before{content:"◯";opacity:1;color:var(--green)}button.choice.ng{color:var(--red);font-weight:700}button.choice.ng:before{content:"×";opacity:1;color:var(--red)}button.choice:disabled{cursor:default}.notice{border:3px solid var(--red);border-radius:7px;box-shadow:0 0 0 3px var(--night);background:var(--win);padding:11px 14px;font-size:14px;color:var(--read)}.notice.info{border-color:var(--cyan)}.pin,.num-input,.text-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#0c1428;border:2px solid var(--dimmer);border-radius:5px;color:var(--txt);font:inherit;font-family:var(--num)}.pin{display:block;margin:10px auto 0;width:6em;text-align:center;font-size:30px;letter-spacing:.35em;text-indent:.35em;padding:4px 0}.num-input{width:4.5em;text-align:right;padding:2px 6px;font-size:15px}.text-input{width:100%;margin:6px 0;padding:8px 10px;font-family:var(--ui);font-size:15px}.pin:focus,.num-input:focus,.text-input:focus{outline:none;border-color:var(--gold)}button.cmd:disabled{color:var(--dimmer);cursor:default}button.message{-webkit-appearance:none;-moz-appearance:none;appearance:none;font:inherit;color:var(--txt);text-align:left;width:100%;cursor:pointer;font-size:17px;line-height:2}button.message:focus-visible{outline:none;border-color:var(--gold)}.hero-picker{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}button.hero-choice{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#0c1428;border:2px solid #2b3859;border-radius:7px;padding:6px 0;cursor:pointer;display:flex;justify-content:center}button.hero-choice.on{border-color:var(--gold);background:#1a2440}button.hero-choice:focus-visible{outline:2px solid var(--gold)}.howto{border:2px dashed var(--dimmer);border-radius:7px;padding:10px 12px;font-size:14px;color:var(--read);line-height:1.9}.howto b{color:var(--gold)}.island{position:relative;width:100%;border:3px solid var(--line);border-radius:7px;box-shadow:0 0 0 3px var(--night);overflow:hidden;background:#1e4e7a}.island>canvas{display:block;width:100%;height:100%;image-rendering:pixelated}button.castle{position:absolute;transform:translate(-50%,-60%);-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;padding:0;cursor:pointer;display:flex;flex-direction:column;align-items:center;filter:drop-shadow(0 2px 0 rgba(0,0,0,.45))}button.castle:hover,button.castle:focus-visible{outline:none;transform:translate(-50%,-66%)}button.castle.on{filter:drop-shadow(0 0 0 var(--gold)) drop-shadow(0 0 4px var(--gold))}.castle-no{font-size:11px;font-weight:700;color:#fff;text-shadow:1px 1px 0 #000,-1px 1px 0 #000;margin-top:-3px}.castle-hero{position:absolute;left:-14px;bottom:8px}.castle-bar{display:block;width:26px;height:3px;background:#0008;border-radius:2px;overflow:hidden}.castle-bar>i{display:block;height:100%;background:var(--gold)}.darkland{border:3px solid #4a2a5e;border-radius:7px;box-shadow:0 0 0 3px var(--night);background:radial-gradient(circle at 50% 78%,#4a1030 0%,transparent 60%),linear-gradient(180deg,#150a22,#2a0f30);padding:16px 14px;display:flex;flex-direction:column;align-items:center;gap:8px}.darkland.awake{border-color:var(--red);box-shadow:0 0 0 3px var(--night),0 0 18px #ff3b3059}.darkland .lbl{color:#c49ad0}.darkland.awake .lbl{color:var(--red)}.wordbook{border-top:1px solid #2b3859;margin-top:6px;padding-top:8px}.wordbook-tabs{display:flex;gap:6px;margin-bottom:6px}.wordbook-tabs button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#0c1428;border:2px solid #2b3859;border-radius:5px;color:var(--dim);font:inherit;font-size:12.5px;font-weight:600;padding:3px 8px;cursor:pointer}.wordbook-tabs button.on{border-color:var(--gold);color:var(--gold)}.wordbook-tabs button:focus-visible{outline:2px solid var(--gold)}.wordbook-list{max-height:46vh;overflow-y:auto;-webkit-overflow-scrolling:touch}.wordbook-row{display:grid;grid-template-columns:1.2em 1fr 1fr;gap:6px;align-items:baseline;font-size:14px;padding:2px 0;border-bottom:1px solid #1a2540}.wordbook-row:last-child{border-bottom:0}.wordbook-mark{text-align:center;font-weight:700}.wordbook-en{font-family:var(--num);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wordbook-ja{color:var(--read);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dimmer{color:var(--dimmer)}.tabs{display:grid;grid-template-columns:repeat(4,1fr) 2.4em;font-size:12.5px;text-align:center;color:var(--dimmer);font-weight:600;border-top:2px solid #23304f;padding-top:4px}.tabs button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:inherit;font:inherit;padding:5px 0;cursor:pointer}.tabs button.on{color:var(--gold)}.tabs button:focus-visible{outline:2px solid var(--gold);border-radius:4px}
