:root{--bg:#14171b;--ink:#f1ede6;--sub:#8c929a;--accent:#e8c9a0;--warn:#ff8a7a;--line:rgba(255,255,255,.16);--text:"Zen Kurenaido","Hiragino Mincho ProN","Yu Mincho",serif;--hand:"Zen Kurenaido","Hiragino Mincho ProN","Yu Mincho",serif}
[hidden]{display:none!important}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{background:radial-gradient(120% 80% at 50% 0%,#252a31 0%,var(--bg) 60%);background-color:var(--bg);color:var(--ink);font-family:var(--text);-webkit-tap-highlight-color:transparent}
body[data-state="playing"],body[data-state="intro"],body[data-state="ending"]{overflow:hidden;overscroll-behavior:none}
.app{max-width:640px;margin:0 auto;min-height:100%;min-height:100dvh;display:flex;flex-direction:column;padding:env(safe-area-inset-top) 16px env(safe-area-inset-bottom)}
button,.primary{font:inherit;color:inherit;cursor:pointer}
button{background:rgba(255,255,255,.06);border:1px solid var(--line);border-radius:999px;padding:12px 8px;font-size:14px;white-space:nowrap;font-weight:400;letter-spacing:.06em}
button:hover{background:rgba(255,255,255,.14)}
.primary{background:var(--ink);color:#14171b;border:0;border-radius:999px;padding:14px 22px;font-size:17px;font-weight:400;letter-spacing:.12em;text-decoration:none;text-align:center;display:inline-block}
.primary:hover{background:#fff}

/* タイトル */
.home{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:24px 0}
.key{margin:0 -16px;width:calc(100% + 32px)}
.key canvas{display:block;width:100%;height:auto;background:#3a424b;opacity:0;transition:opacity 1.2s}
.key canvas.on{opacity:1}
@media (min-width:640px){.key{margin:0;width:100%}.key canvas{border-radius:14px}}
.lead{font-size:clamp(17px,5vw,21px);font-weight:400;margin:26px 0 10px;letter-spacing:.08em;line-height:1.9}
.lead b{font-family:var(--hand);color:var(--accent);font-size:1.35em;font-weight:400}
.note{font-size:13px;color:var(--sub);margin:0 0 26px;line-height:1.9;letter-spacing:.06em}
#start{min-width:220px}

/* プレイ */
.play{flex:1;display:flex;flex-direction:column;min-height:0;height:100dvh;padding:10px 0}
.play-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px}
.scene-label{margin:0;font-size:12px;color:var(--accent);letter-spacing:.24em;font-weight:400}
.scene-lead{text-wrap:pretty;margin:4px 0 0;font-size:14px;line-height:1.7;color:var(--ink);letter-spacing:.04em}
.timer{font-family:var(--hand);font-size:40px;font-weight:400;line-height:1;font-variant-numeric:tabular-nums;white-space:nowrap}
.timer small{font-size:22px;color:var(--sub)}
.timer.low{color:var(--warn)}
.timer.low small{color:var(--warn)}
.slot{flex:1;min-height:0;display:flex;align-items:center;justify-content:center}
.stage{position:relative;overflow:hidden;border-radius:10px;box-shadow:0 0 0 6px #3a424b,0 0 0 8px #11161b,0 20px 60px rgba(0,0,0,.6);background:#cfd8df}
.stage canvas,.outside{position:absolute;inset:0;width:100%;height:100%;display:block}
#fog{touch-action:none;cursor:crosshair}
#fx{pointer-events:none}
/* 時間切れ：曇りが晴れて向こうの人が見える。乗り物は、そのあと走り出して景色が流れる */
#blur,#fog{transition:opacity 1.4s ease-in}
.outside{transition:transform 3s cubic-bezier(.55,0,.85,.35),filter 3s}
body[data-leaving] .outside{transform:scale(1.3) translateX(-10%);filter:blur(2px)}
.cue{position:absolute;left:0;right:0;bottom:7%;text-align:center;padding:14px 22px;font-size:18px;font-weight:400;line-height:1.8;letter-spacing:.06em;color:#fff;background:linear-gradient(transparent,rgba(0,0,0,.45) 30%,rgba(0,0,0,.45) 70%,transparent);text-shadow:0 1px 8px rgba(0,0,0,.7);pointer-events:none;opacity:0;transition:opacity .35s}
.cue.on{opacity:1}
.cue.big{bottom:auto;top:50%;transform:translateY(-50%);background:none;font-family:var(--hand);font-size:44px;font-weight:400;color:#fff}

/* 結果 */
.result{flex:1;display:flex;flex-direction:column;align-items:center;padding:12px 0 8px}
#out{display:block;width:auto;max-width:100%;height:auto;max-height:calc(100dvh - 250px);border-radius:8px;box-shadow:0 20px 60px rgba(0,0,0,.5)}
.epi{text-wrap:pretty;font-size:16px;line-height:1.9;letter-spacing:.04em;text-align:center;margin:12px 0 12px;min-height:3.4em}
.actions{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;width:100%;max-width:480px}
.actions .primary{grid-column:1/-1;margin-top:4px}
#flip[aria-pressed="true"]{background:var(--accent);color:#14171b}

.save{border:0;border-radius:14px;background:#252c33;color:var(--ink);padding:16px;max-width:min(92vw,440px);text-align:center}
.save::backdrop{background:rgba(0,0,0,.7)}
.save p{margin:0 0 10px;font-size:14px;line-height:1.7}
.save p b{color:var(--accent)}
#save-x[hidden]{display:none}
#save-x:not([hidden])+#save-dl{background:rgba(255,255,255,.08);color:var(--ink);border:1px solid var(--line);font-size:14px}
.save img{display:block;width:auto;max-width:100%;max-height:55dvh;margin:0 auto;border-radius:6px}
.save-row{display:flex;gap:8px;justify-content:center;margin-top:12px}

.foot{font-size:11px;color:var(--sub);text-align:center;line-height:1.7;padding:16px 0 20px}
.foot span{opacity:.7}
body[data-state="playing"] .foot,body[data-state="intro"] .foot,body[data-state="ending"] .foot{display:none}
.guide img{max-height:34dvh}
.steps{text-align:left;margin:14px 0 6px;padding-left:1.4em;font-size:15px;line-height:1.7}
.steps li{margin-bottom:4px}
.steps b{color:var(--accent)}
.steps b.x{display:inline-block;background:#000;color:#fff;border-radius:6px;padding:0 7px;font-family:system-ui,sans-serif}
.steps small{display:block;font-size:12px;color:var(--sub)}
.guide .warn{font-size:12px;color:var(--warn);text-align:left}

/* 遊んだあとのアンケート（最初のプレイの結果画面で1回だけ） */
.endpop{position:fixed;inset:0;z-index:50;display:none;align-items:center;justify-content:center;padding:16px;background:rgba(0,0,0,.65)}
.endpop.show{display:flex}
.ep-card{position:relative;width:100%;max-width:360px;max-height:100%;overflow-y:auto;background:#252a31;color:var(--ink);border-radius:16px;padding:26px 20px 20px;text-align:center}
.ep-x{position:absolute;right:6px;top:6px;width:36px;height:36px;padding:0;border:0;background:transparent;font-size:22px;color:var(--sub)}
.ep-head{font-size:17px;margin:0 0 14px;padding:0 22px;letter-spacing:.06em}
.ep-label{font-size:12px;color:var(--sub);margin:0 0 6px}
.stars{display:flex;justify-content:center;gap:6px;margin-bottom:14px}
.star{font-size:30px;color:#4a515a;cursor:pointer;line-height:1;user-select:none;-webkit-user-select:none}
.star.on{color:var(--accent)}
.fb-text{width:100%;height:84px;border:1px solid var(--line);border-radius:10px;padding:10px;font:inherit;font-size:15px;resize:none;margin-bottom:6px;background:#1b1f24;color:var(--ink)}
.fb-err{min-height:18px;font-size:12px;color:var(--warn);margin:0 0 6px}
.fb-note{font-size:11px;line-height:1.6;color:var(--sub);margin:4px 0 10px}
.fb-note a{color:inherit}
.fb-send,.portal-btn{width:100%}
.fb-send:disabled{opacity:.5}
.fb-thanks{display:none;font-size:15px;padding:18px 0;margin:0}
.ep-div{height:1px;background:var(--line);margin:18px 0 14px}
.portal-pitch{font-size:12px;color:var(--sub);line-height:1.7;margin:0 0 10px}
