:root{--paper:#f3ead6;--ink:#2a2118;--soft:rgba(42,33,24,.62);--line:rgba(42,33,24,.2);--red:#b3261e;--serif:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;--mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
*{box-sizing:border-box}
html{background:var(--paper)}
body{margin:0;min-height:100vh;color:var(--ink);font-family:var(--serif);background:radial-gradient(ellipse at 50% 0,#f8f1e0,var(--paper) 60%,#e9dfc6);-webkit-tap-highlight-color:transparent}
a{color:inherit}
.wrap{max-width:640px;margin:0 auto;padding:max(18px,env(safe-area-inset-top)) 20px 60px}
.top{display:flex;justify-content:space-between;align-items:center;font:600 11px/1 var(--mono);letter-spacing:.16em;padding:6px 0 26px}
.top a{text-decoration:none;color:var(--soft)}
.top a:hover{color:var(--ink)}
.dots{display:flex;gap:8px}
.dots i{width:9px;height:9px;border-radius:50%;border:1.5px solid var(--ink);opacity:.35;transition:all .4s}
.dots i.on{background:var(--ink);opacity:1}
.dots i.now{opacity:1;transform:scale(1.25)}
.eyebrow{font:600 11px/1.4 var(--mono);letter-spacing:.2em;color:var(--soft);margin:0 0 14px}
h1{font-weight:400;font-size:clamp(34px,8vw,52px);line-height:1.08;letter-spacing:.01em;margin:0 0 18px}
h2{font-weight:400;font-size:clamp(26px,6vw,36px);line-height:1.15;margin:0 0 16px}
p{font-size:clamp(17px,3.9vw,20px);line-height:1.65;margin:0 0 16px}
.master{font-style:italic}
.step{display:none;animation:in .7s ease both}
.step.on{display:block}
@keyframes in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.btn{font:600 13px/1 var(--mono);letter-spacing:.16em;min-height:52px;padding:0 26px;border-radius:999px;border:1.5px solid var(--ink);background:var(--ink);color:var(--paper);cursor:pointer;touch-action:manipulation}
.btn:hover{background:#40322a}
.btn.ghost{background:transparent;color:var(--ink)}
.btn.ghost:hover{background:rgba(42,33,24,.08)}
.btn[disabled]{opacity:.4;cursor:default}
.row{display:flex;flex-wrap:wrap;gap:10px;margin:22px 0 0}
.choices{display:grid;gap:10px;margin:18px 0 0}
.choice{text-align:left;font:inherit;font-size:clamp(16px,3.6vw,18px);line-height:1.4;padding:14px 16px;border:1.5px solid var(--line);border-radius:14px;background:rgba(255,255,255,.35);color:var(--ink);cursor:pointer}
.choice:hover{border-color:var(--ink)}
.choice b{display:block;font:600 11px/1 var(--mono);letter-spacing:.16em;margin-bottom:6px;color:var(--soft)}
.arrows{display:block;margin:18px auto 22px;width:min(100%,420px);height:auto}
.quote{border-left:3px solid var(--red);padding:2px 0 2px 16px;margin:20px 0;font-style:italic;font-size:clamp(17px,3.9vw,20px);line-height:1.6}
.stage{position:relative;width:min(86vw,360px);aspect-ratio:1;margin:8px auto 4px}
.stage canvas{position:absolute;inset:0;width:100%;height:100%}
.guide{position:absolute;inset:16%;border-radius:50%;border:1.5px dashed rgba(42,33,24,.25);transform:scale(.82);transition:transform 3.5s ease-in-out}
.guide.in{transition-duration:3.5s;transform:scale(1.08)}
.guide.hold{transition-duration:3.5s;transform:scale(1.08)}
.guide.out{transition-duration:3.6s;transform:scale(.82)}
.cue{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;pointer-events:none}
.cue b{font-weight:400;font-size:clamp(22px,5.4vw,30px);letter-spacing:.04em}
.cue span{font:600 12px/1 var(--mono);letter-spacing:.2em;color:var(--soft);margin-top:10px;min-height:12px}
.time{text-align:center;font:600 12px/1 var(--mono);letter-spacing:.18em;color:var(--soft);min-height:14px}
textarea,input[type=text]{width:100%;font:inherit;font-size:clamp(17px,3.9vw,19px);line-height:1.5;padding:14px 16px;border:1.5px solid var(--line);border-radius:14px;background:rgba(255,255,255,.5);color:var(--ink);resize:vertical}
textarea:focus,input[type=text]:focus{outline:none;border-color:var(--ink)}
.fine{font:600 11px/1.6 var(--mono);letter-spacing:.1em;color:var(--soft)}
.ink{font-size:clamp(19px,4.4vw,23px);line-height:1.5;padding:16px 18px;border:1.5px dashed var(--line);border-radius:14px;margin:14px 0;word-break:break-word;white-space:pre-wrap;transition:opacity 3.2s ease,filter 3.2s ease,letter-spacing 3.2s ease,transform 3.2s ease}
.ink.gone{opacity:0;filter:blur(7px);letter-spacing:.35em;transform:translateY(-14px)}
.seal{display:inline-grid;place-items:center;width:84px;height:84px;background:var(--red);color:#f4efe4;font:400 44px/1 "Hiragino Mincho ProN","Yu Mincho",serif;transform:rotate(-5deg) scale(.4);opacity:0;border:3px solid #f4efe4;outline:3px solid var(--red);outline-offset:-9px;margin:6px 0 10px}
.seal.on{animation:stamp .55s cubic-bezier(.2,1.4,.4,1) .2s forwards}
@keyframes stamp{to{transform:rotate(-5deg) scale(1);opacity:.95}}
.prog{border-top:1px solid var(--line);margin-top:34px;padding-top:6px}
.prog li{display:flex;gap:14px;align-items:baseline;padding:12px 0;border-bottom:1px solid var(--line);list-style:none;font-size:clamp(16px,3.7vw,18px)}
.prog ul{margin:0;padding:0}
.prog li b{font:600 11px/1 var(--mono);letter-spacing:.16em;min-width:46px;color:var(--soft)}
.prog li.done b{color:var(--red)}
.prog li.soon{opacity:.55}
.prog li small{margin-left:auto;font:600 10px/1 var(--mono);letter-spacing:.14em;color:var(--soft)}
footer{margin-top:40px;padding-top:18px;border-top:1px solid var(--line)}
.snd{background:none;border:0;font:600 11px/1 var(--mono);letter-spacing:.16em;color:var(--soft);cursor:pointer;padding:10px 0}
.snd:hover{color:var(--ink)}
@media (prefers-reduced-motion:reduce){.step{animation:none}.guide{transition:none}.ink{transition:opacity 1s}}
.gate{display:none;padding:18px 0}
.gate.on{display:block}
.hub-list a{color:inherit;text-decoration:none;display:flex;gap:14px;align-items:baseline;width:100%}
.hub-list li.link:hover{background:rgba(42,33,24,.05)}
.hub-list li.locked,.hub-list li.soon{opacity:.5}
.prog a{display:flex;gap:14px;align-items:baseline;width:100%;color:inherit;text-decoration:none}
.prog li small.go{color:var(--ink)}
[hidden]{display:none!important}

.art{margin:14px 0 22px}
.art canvas{display:block;width:100%;height:auto;border-radius:16px;background:rgba(255,255,255,.28);border:1px solid var(--line)}
.art figcaption{display:flex;justify-content:space-between;gap:12px;margin-top:8px;font:600 10px/1.5 var(--mono);letter-spacing:.14em;color:var(--soft)}
.art figcaption i{display:block;font-style:normal;font-weight:400;letter-spacing:.06em;text-transform:none;font-family:var(--serif);font-size:13px}
.art figcaption .r{text-align:right;color:var(--red)}

.vbtn{font:600 10px/1 var(--mono);letter-spacing:.14em;padding:8px 11px;border-radius:999px;border:1.5px solid var(--line);background:rgba(255,255,255,.4);color:var(--soft);cursor:pointer;touch-action:manipulation}
.vbtn[aria-pressed="true"]{background:var(--ink);color:var(--paper);border-color:var(--ink)}

span.w{border-radius:4px;transition:background .15s,color .15s}
span.w.hl{background:rgba(179,38,30,.2);color:var(--ink);box-shadow:0 0 0 2px rgba(179,38,30,.2)}
