*{margin:0;padding:0;box-sizing:border-box}
[hidden]{display:none !important}
:root{--paper:#f3efe6;--desk:#ebe5d8;--sumi:#1d1b18;--shu:#d9452a;--ai:#24408e;--grid:rgba(36,64,142,.13)}
html,body{height:100%;background:var(--desk);color:var(--sumi);overflow:hidden;-webkit-tap-highlight-color:transparent}
body{font-family:"Noto Sans JP",system-ui,sans-serif}
#app{position:fixed;inset:0}
#gl{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}

.top{position:absolute;top:calc(env(safe-area-inset-top) + 26px);left:20px;right:20px;display:flex;align-items:baseline;justify-content:space-between;z-index:5;pointer-events:none}
.logo{font-family:"Shippori Mincho";font-weight:800;font-size:18px;letter-spacing:.08em}
.chips{display:flex;gap:12px;align-items:baseline;pointer-events:auto}
.cta{font-size:12px;font-weight:700;color:var(--shu);text-decoration:none;border-bottom:2px solid var(--shu);padding-bottom:2px}
.sound{background:none;border:1px solid rgba(29,27,24,.5);font:500 11px "Noto Sans JP";padding:3px 7px;color:var(--sumi);cursor:pointer}

.steps{position:absolute;top:calc(env(safe-area-inset-top) + 64px);left:20px;right:20px;display:flex;z-index:5;font-size:11.5px;font-weight:500;border-top:1px solid rgba(29,27,24,.5);border-bottom:1px solid rgba(29,27,24,.5);background:rgba(243,239,230,.7);pointer-events:none}
.steps span{flex:1;text-align:center;padding:7px 0;color:rgba(29,27,24,.42);transition:color .3s,background .3s}
.steps span+span{border-left:1px solid rgba(29,27,24,.25)}
.steps span.on{color:var(--sumi);font-weight:700;background:rgba(217,69,42,.08);box-shadow:inset 0 -3px 0 var(--shu)}
.steps span.done{color:var(--sumi)}

.callout{position:absolute;left:20px;right:20px;bottom:calc(env(safe-area-inset-bottom) + 34px);z-index:5;pointer-events:none}
.callout .rule{height:1px;background:rgba(29,27,24,.5);margin-bottom:12px}
.callout .say{font-family:"Shippori Mincho";font-weight:800;font-size:22px;line-height:1.4;min-height:1.4em;text-shadow:0 0 12px var(--desk),0 0 2px var(--desk)}
.callout .p{margin-top:6px;display:flex;align-items:center;gap:10px;font-size:12px}
.callout .dots{display:flex;gap:4px}
.dot{width:9px;height:9px;border:1.4px solid var(--sumi);display:inline-block}
.dot.on{background:var(--shu);border-color:var(--shu)}
.callout .rem{margin-left:auto;font-weight:700;color:var(--shu);font-size:13px}

.boot{position:absolute;inset:0;z-index:10;color:var(--sumi);transition:opacity .6s,transform .6s;background:
  linear-gradient(var(--grid) 1px,transparent 1px) 0 0/16px 16px,
  linear-gradient(90deg,var(--grid) 1px,transparent 1px) 0 0/16px 16px,var(--paper)}
.boot.off{opacity:0;transform:translateY(-4%) rotate(-1deg);pointer-events:none}
.tombo{position:absolute;width:26px;height:26px}
.tombo::before,.tombo::after{content:"";position:absolute;background:var(--sumi)}
.tombo::before{width:26px;height:1px;top:12px}.tombo::after{width:1px;height:26px;left:12px}
.t1{top:14px;left:14px}.t2{top:14px;right:14px}.t3{bottom:14px;left:14px}.t4{bottom:14px;right:14px}
.colorbar{position:absolute;top:22px;left:50%;transform:translateX(-50%);display:flex}
.colorbar i{width:16px;height:10px;display:block}
.boot .head{position:absolute;top:calc(env(safe-area-inset-top) + 66px);left:30px;right:30px;font-size:11px;letter-spacing:.06em;display:flex;justify-content:space-between;border-bottom:1px solid var(--sumi);padding-bottom:6px}
.boot .check{position:absolute;top:calc(env(safe-area-inset-top) + 104px);left:30px;right:30px;font-size:13px;line-height:2.3;max-width:520px}
.boot .check div{display:flex;align-items:center;gap:6px;transition:opacity .3s}
.boot .check .dots{flex:1;border-bottom:1px dotted rgba(29,27,24,.45);transform:translateY(-4px)}
.boot .check .st{min-width:26px;text-align:center;font-size:11px;color:rgba(29,27,24,.5)}
.sumi{display:inline-grid;place-items:center;width:24px;height:24px;border:1.6px solid var(--shu);border-radius:50%;color:var(--shu);font-family:"Shippori Mincho";font-weight:800;font-size:12px;transform:rotate(-12deg);animation:pon .25s ease-out}
@keyframes pon{from{transform:scale(1.8) rotate(-12deg);opacity:0}to{transform:scale(1) rotate(-12deg);opacity:1}}
.boot .big{position:absolute;top:40%;left:30px;font-family:"Shippori Mincho";font-weight:800;font-size:clamp(40px,min(13.5vw,8.5vh),88px);line-height:1.25;letter-spacing:.02em}
.boot .big small{display:block;font-size:13px;font-weight:600;letter-spacing:.2em;margin-bottom:10px;color:var(--ai)}
.boot .startrow{position:absolute;bottom:calc(env(safe-area-inset-bottom) + 82px);left:30px;display:flex;align-items:center;gap:20px}
.boot .start{width:108px;height:108px;background:var(--paper);border:4px solid var(--shu);color:var(--shu);font-family:"Shippori Mincho";font-weight:800;font-size:42px;transform:rotate(-4deg);box-shadow:inset 0 0 0 4px var(--paper),inset 0 0 0 6px var(--shu);cursor:pointer;transition:transform .15s}
.boot .start:active{transform:rotate(-4deg) scale(.94)}
.boot .start:disabled{opacity:.35;cursor:wait}
.boot .note{font-family:"Klee One";font-weight:600;font-size:15px;color:var(--shu);line-height:1.5}
.boot .foot{position:absolute;bottom:calc(env(safe-area-inset-bottom) + 36px);left:30px;right:30px;font-size:10.5px;letter-spacing:.08em;display:flex;justify-content:space-between;border-top:1px solid var(--sumi);padding-top:6px}

.finale{position:absolute;inset:0;z-index:8;display:flex;flex-direction:column;justify-content:flex-end;gap:12px;padding:0 22px calc(env(safe-area-inset-bottom) + 36px);background:linear-gradient(180deg,rgba(243,239,230,0) 28%,rgba(243,239,230,.9) 58%,var(--paper) 100%)}
.finale .kicker{font-family:"Klee One";font-weight:600;font-size:15px;color:var(--shu)}
.finale h1{font-family:"Shippori Mincho";font-weight:800;font-size:clamp(32px,9vw,56px);line-height:1.35}
.finale .lead{font-size:14px;color:#4a4640;margin-bottom:6px}
.finale .btn{display:block;text-align:center;padding:15px;border:2px solid var(--sumi);color:var(--sumi);text-decoration:none;font-weight:700;font-size:15px;background:var(--paper)}
.finale .btn.primary{background:var(--shu);border-color:var(--shu);color:#fff}
.finale .replay{background:none;border:none;color:#6b665f;font:500 13px "Noto Sans JP",sans-serif;text-decoration:underline;padding:6px;cursor:pointer}
.finale .credit{font-size:10px;color:#8a8580;line-height:1.5}

.flash{position:absolute;inset:0;z-index:7;pointer-events:none;background:var(--paper);opacity:0}
.nojs{position:absolute;inset:0;padding:40px 22px;background:var(--paper);z-index:20}
.nojs a{color:var(--shu)}

@media (min-width:768px){
  .callout{left:auto;right:32px;width:380px}
  .steps{left:auto;right:32px;width:380px}
  .finale{align-items:flex-start;max-width:540px;padding-left:48px}
}
@media (prefers-reduced-motion:reduce){
  .sumi{animation:none}
  .boot{transition:none}
}
