:root{--bg:#10141f;--bg2:#171d2d;--card:#1d2538;--line:#34405c;--ink:#e9e4d6;--dim:#98a0b3;--accent:#d9b36c;--ok:#7fc8a0;--ng:#e07a7a;--serif:"Hiragino Mincho ProN", "Yu Mincho", "Noto Serif JP", serif;--sans:-apple-system, "Hiragino Sans", "Noto Sans JP", sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{background:var(--bg);color:var(--ink);margin:0}body{font-family:var(--serif);overscroll-behavior-y:none;min-height:100dvh;line-height:1.8}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation}input{font:inherit}.shell{min-height:100dvh;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);flex-direction:column;display:flex}.top{border-bottom:1px solid var(--line);font-family:var(--sans);letter-spacing:.12em;color:var(--dim);justify-content:space-between;align-items:center;gap:8px;padding:10px 16px;font-size:12px;display:flex}.top b{color:var(--accent);font-weight:600}.chip{border:1px solid var(--line);letter-spacing:.1em;background:0 0;border-radius:999px;padding:6px 12px;font-size:12px}.chip.on{border-color:var(--accent);color:var(--accent)}.main{flex:1;width:100%;max-width:560px;margin:0 auto;padding:24px 16px 48px}.story{cursor:pointer;-webkit-user-select:none;user-select:none;flex-direction:column;justify-content:center;gap:28px;min-height:60dvh;display:flex}.story p{margin:0;font-size:19px;animation:.8s both fade}.story.reveal p{color:var(--accent);font-size:22px}.story.quiet p{color:var(--dim)}.story .tap{font-family:var(--sans);letter-spacing:.2em;color:var(--dim);align-self:center;font-size:12px;animation:2s infinite blink}.story .chapter{font-family:var(--sans);letter-spacing:.3em;color:var(--accent);font-size:12px}@keyframes fade{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes blink{50%{opacity:.3}}.btn{border:1px solid var(--accent);width:100%;color:var(--accent);letter-spacing:.1em;background:0 0;border-radius:10px;padding:14px 16px;font-size:16px;display:block}.btn.fill{background:var(--accent);color:#1b1608;font-weight:700}.btn[disabled]{opacity:.35}.btn.sub{border-color:var(--line);color:var(--dim);padding:10px;font-size:13px}.stack{flex-direction:column;gap:12px;display:flex}.pz-chapter{font-family:var(--sans);letter-spacing:.3em;color:var(--accent);font-size:11px}.pz-title{margin:4px 0 8px;font-size:24px}.pz-prompt{color:var(--dim);margin:0 0 20px;font-size:15px}.board{background:var(--bg2);border:1px solid var(--line);border-radius:14px;padding:16px}.msg{min-height:1.8em;font-family:var(--sans);color:var(--ng);text-align:center;margin:10px 0 0;font-size:13px}.msg.ok{color:var(--ok)}.hints{font-family:var(--sans);flex-direction:column;gap:8px;margin-top:28px;font-size:14px;display:flex}.hint{background:var(--card);border-left:3px solid var(--accent);border-radius:4px;padding:8px 12px}.hint.last{border-color:var(--ok)}.answer{gap:8px;margin-top:16px;display:flex}.answer input{border:1px solid var(--line);background:var(--card);min-width:0;color:var(--ink);border-radius:10px;flex:1;padding:12px;font-size:16px}.answer button{border:1px solid var(--accent);background:var(--accent);color:#1b1608;border-radius:10px;padding:0 18px;font-weight:700}.ticket-stage{perspective:800px;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:manipulation}.ticket{color:#3a3220;font-family:var(--sans);transform-style:preserve-3d;background:#e8dfc6;border-radius:8px;padding:14px;transition:transform .5s;position:relative;box-shadow:0 6px 20px #0008}.ticket.flipping{animation:.5s flip}@keyframes flip{0%{transform:rotateY(0)}50%{transform:rotateY(90deg)}to{transform:rotateY(0)}}.ticket .head{letter-spacing:.15em;border-bottom:2px dashed #3a322055;justify-content:space-between;margin-bottom:8px;padding-bottom:6px;font-size:13px;display:flex}.ticket .zero{color:#a02a2a;font-size:18px;font-weight:800}.ticket.zero-focus .zero{animation:1.2s infinite pulse}@keyframes pulse{50%{transform:scale(1.18)}}.tgrid{grid-template-columns:repeat(5,1fr);gap:4px;display:grid}.tcell{aspect-ratio:1;font-family:var(--serif);border:1px solid #3a322033;border-radius:4px;place-items:center;font-size:24px;display:grid;position:relative}.tcell .hole{color:#a02a2a;font-family:var(--sans);background:#a02a2a14;border:2px solid #a02a2a;border-radius:50%;justify-content:flex-start;align-items:flex-start;padding:0 3px;font-size:11px;font-weight:700;display:flex;position:absolute;inset:3px}.ticket.back{background:#c9bf9f}.ticket.back .tcell{background:#00000008}.ticket.back .hole{color:#5a1010;background:#fff5;justify-content:center;align-items:center;font-size:16px}.ticket.ghost{background:#e8dfc6}.ticket-hint{text-align:center;font-family:var(--sans);color:var(--dim);margin-top:10px;font-size:12px}.cards{grid-template-columns:repeat(2,1fr);gap:12px;display:grid}.card{background:var(--card);border:1px solid var(--line);border-radius:12px;place-items:center;min-height:96px;padding:18px 8px;font-size:22px;display:grid}.card.sel{border-color:var(--accent);color:var(--accent)}.card.off{opacity:.3;text-decoration:line-through}.card.ok{border-color:var(--ok);color:var(--ok)}.shape{border:2px solid var(--ink);place-items:center;width:64px;height:64px;font-size:26px;display:grid}.shape.circle-in,.shape.circle-out{border-radius:50%}.shape.circle-out{margin-left:0;position:relative}.shape.circle-out span{position:absolute;top:-12px;right:-28px}.list{flex-direction:column;gap:10px;display:flex}.list .card{text-align:left;justify-items:start;min-height:0;padding:14px;font-size:17px}.cell-grid{gap:4px;display:grid}.cell-grid button{aspect-ratio:1;background:var(--card);border:1px solid var(--line);border-radius:6px;place-items:center;padding:0;font-size:18px;display:grid}.cell-grid button.picked{border-color:var(--accent);color:var(--accent);background:#d9b36c22}.cell-grid button.tag{color:var(--accent)}.read{text-align:center;letter-spacing:.3em;color:var(--accent);min-height:1.6em;margin:14px 0 0;font-size:28px}.tabs{gap:8px;margin-bottom:12px;display:flex}.tabs .chip{flex:1}.chip.done{border-color:var(--ok);color:var(--ok)}.dials{justify-content:center;align-items:center;gap:10px;display:flex}.dial{flex-direction:column;align-items:center;display:flex}.dial button{background:var(--card);border:1px solid var(--line);border-radius:8px;width:56px;height:36px}.dial .n{text-align:center;width:56px;font-size:36px}.clues{font-family:var(--sans);color:var(--dim);margin:0 0 18px;padding-left:20px;font-size:14px}.screen{text-align:center;letter-spacing:.5em;font-family:var(--sans);background:var(--line);border-radius:4px;margin-bottom:10px;padding:4px;font-size:11px}.seats{font-family:var(--sans);grid-template-columns:18px repeat(10,1fr);gap:3px;font-size:10px;display:grid}.seat{aspect-ratio:1;background:var(--card);color:var(--dim);border-radius:3px;place-items:center;display:grid}.seat.hi{background:var(--accent);color:#1b1608;font-weight:700}.rowlabel{color:var(--dim);place-items:center;display:grid}.tickets{grid-template-columns:repeat(3,1fr);gap:8px;margin-top:16px;display:grid}.stub{color:#3a3220;font-family:var(--sans);background:#e8dfc6;border:0;border-radius:6px;flex-direction:column;align-items:center;padding:10px 4px;display:flex}.stub b{font-size:26px;font-family:var(--serif)}.stub.used{opacity:.4}.led{background:#05070b;border:1px solid #000;border-radius:8px;padding:6px;font-family:ui-monospace,Menlo,monospace}.led button{text-align:left;color:#ffb347;background:0 0;border:0;border-bottom:1px solid #1b2230;align-items:baseline;gap:12px;width:100%;padding:12px 8px;font-size:16px;display:flex}.led button.used{opacity:.35}.led .order{color:#fff;width:1.5em}.slotline{flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;margin-bottom:18px;font-size:22px;display:flex}.slot{border:2px dashed var(--line);background:0 0;border-radius:8px;min-width:52px;height:48px;padding:0 6px;font-size:22px}.slot.filled{border-style:solid;border-color:var(--accent);color:var(--accent)}.chiprow{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.chiprow button{background:var(--card);border:1px solid var(--line);border-radius:10px;min-width:56px;height:48px;font-size:20px}.chiprow button.used{opacity:.25}.record{color:#2b2515;background:#f1ead6;border-radius:6px;padding:20px;font-family:ui-monospace,Menlo,monospace;animation:.8s both fade;box-shadow:0 8px 30px #0009}.record h3{letter-spacing:.25em;border-bottom:2px solid #2b2515;margin:0 0 12px;padding-bottom:6px;font-size:13px}.record dl{grid-template-columns:auto 1fr;gap:4px 14px;margin:0;font-size:14px;display:grid}.record dt{color:#7a6c3f}.record dd{word-break:break-all;margin:0;font-weight:700}.record .key dd,.record .key dt{color:#a02a2a}.restore{text-align:center;font-family:var(--sans);letter-spacing:.25em;color:var(--accent);margin:18px 0;font-size:12px}.drawer{z-index:20;background:#000b;justify-content:flex-end;display:flex;position:fixed;inset:0}.drawer .sheet{background:var(--bg);border-left:1px solid var(--line);width:min(420px,92vw);height:100%;padding:calc(env(safe-area-inset-top) + 16px) 16px 32px;flex-direction:column;gap:14px;display:flex;overflow-y:auto}.sheet .locked{border:1px dashed var(--line);color:var(--dim);letter-spacing:.2em;border-radius:6px;padding:14px;font-family:ui-monospace,Menlo,monospace;font-size:13px}.qbox{gap:8px;margin-top:18px;display:flex}.qbox input{border:1px solid var(--line);background:var(--card);color:var(--dim);border-radius:10px;flex:1;padding:12px}.shake{animation:.3s shake}@keyframes shake{25%{transform:translate(-6px)}75%{transform:translate(6px)}}.finalslots{justify-content:center;gap:6px;margin:4px 0 20px;display:flex}.finalslots span{border-bottom:2px solid var(--line);width:38px;height:46px;color:var(--accent);place-items:center;font-size:26px;display:grid}.flipcard.flipped{transform:rotateY(180deg)}.debug{z-index:50;font-family:var(--sans);font-size:11px;position:fixed;bottom:8px;left:8px}.debug .panel{border:1px solid var(--ng);background:#000d;border-radius:8px;flex-direction:column;gap:6px;width:min(300px,90vw);padding:8px;display:flex}.debug select,.debug button{color:#fff;background:#222;border:1px solid #555;border-radius:6px;padding:6px;font-size:12px}.dbg-answer{font-family:var(--sans);color:var(--ng);text-align:center;margin:0 0 10px;font-size:12px}.hero{text-align:center;flex-direction:column;justify-content:center;gap:18px;max-width:480px;min-height:100dvh;margin:0 auto;padding:24px;display:flex}.hero h1{letter-spacing:.2em;margin:0;font-size:34px;font-weight:500}.hero p{color:var(--dim);margin:0}.letter{background:#f4efe3;min-height:100dvh}.letter img{width:100%;height:auto;display:block}.letter .draft{color:#2b2515;max-width:560px;margin:0 auto;padding:56px 28px 120px;font-size:18px;line-height:2.1}.letter .draft p{margin:0 0 1.2em}.letter .note{font-family:var(--sans);color:#a02a2a;border:1px dashed #a02a2a;margin-bottom:32px;padding:8px;font-size:11px;line-height:1.6}
