*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{-webkit-font-smoothing:antialiased;background:#16213e;overflow:hidden}canvas{touch-action:none;cursor:grab;display:block}canvas.is-dragging{cursor:grabbing}canvas.is-pointing{cursor:pointer}.mission,.tray{z-index:2;background:var(--paper);border:3px solid var(--ink);box-shadow:6px 6px 0 var(--ink);pointer-events:auto;border-radius:14px;flex-direction:column;animation:.5s cubic-bezier(.2,1.4,.4,1) both card-in;display:flex;position:absolute}.mission{width:min(340px,30vw);padding:16px 18px 18px;top:64px;bottom:24px;left:clamp(16px,2.5vw,32px)}.mission__head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.mission__head .card__kicker{margin-bottom:4px}.mission__title{font-family:var(--font-display);margin:0;font-size:30px;font-weight:400;line-height:1}.mission__toggle{font:800 13px var(--font-body);color:var(--ink);border:2px solid var(--ink);box-shadow:2px 2px 0 var(--ink);cursor:pointer;background:#fff;border-radius:999px;flex:none;padding:6px 12px;display:none}.mission__body{flex:1;min-height:0;margin-top:12px;padding-right:4px;overflow-y:auto}.mission__lead{margin:0 0 8px;font-size:14px;font-weight:800}.criteria{counter-reset:criteria;gap:8px;margin:0;padding:0;list-style:none;display:grid}.criteria li{border:2px solid var(--ink);counter-increment:criteria;background:#fff;border-radius:10px;padding:8px 10px 8px 40px;font-size:13px;line-height:1.4;position:relative}.criteria li:before{content:counter(criteria);width:22px;height:22px;font:800 12px var(--font-body);color:var(--paper);background:var(--accent);border:2px solid var(--ink);border-radius:50%;place-items:center;display:grid;position:absolute;top:8px;left:8px}.mission__tips{color:#4a4a5a;margin:12px 0 0;padding-left:18px;font-size:12px;line-height:1.45}.mission__tips li+li{margin-top:4px}.switch{cursor:pointer;align-items:center;gap:10px;margin-top:14px;font-size:14px;font-weight:800;display:inline-flex}.switch input{opacity:0;position:absolute}.switch__track{border:2px solid var(--ink);background:#d9d6cc;border-radius:999px;width:40px;height:22px;transition:background .15s;position:relative}.switch__track:after{content:"";background:var(--paper);border:2px solid var(--ink);border-radius:50%;width:14px;height:14px;transition:transform .15s;position:absolute;top:2px;left:2px}.switch input:checked+.switch__track{background:var(--accent)}.switch input:checked+.switch__track:after{transform:translate(18px)}.switch input:focus-visible+.switch__track{outline:3px solid var(--cyan);outline-offset:2px}.mission__launch{width:100%;margin-top:14px;padding:14px 22px;font-size:16px}.tray{width:min(300px,26vw);padding:16px 14px 12px;top:64px;bottom:24px;right:clamp(16px,2.5vw,32px)}.panel-title{font-family:var(--font-display);margin:0;font-size:20px;font-weight:400}.tray__hint{color:#4a4a5a;margin:4px 0 10px;font-size:12px;line-height:1.4}.tray__scroll{flex:1;min-height:0;margin-right:-6px;padding:2px 6px 6px 2px;overflow-y:auto}.tray__group+.tray__group{margin-top:14px}.tray__label{font:800 11px var(--font-body);letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin:0 0 6px}.tray__grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0;padding:0;list-style:none;display:grid}.tray__empty{color:#6a6a7a;margin:0;font-size:12px}.piece-card{width:100%;min-height:98px;font:800 12px/1.2 var(--font-body);color:var(--ink);text-align:center;border:2px solid var(--ink);box-shadow:3px 3px 0 var(--ink);cursor:grab;touch-action:pan-y;-webkit-user-select:none;user-select:none;background:#fff;border-radius:10px;flex-direction:column;align-items:center;gap:4px;padding:8px 6px;transition:transform .12s,box-shadow .12s,opacity .12s;display:flex;position:relative}.piece-card:hover{box-shadow:5px 5px 0 var(--ink);transform:translate(-2px,-2px)}.piece-card:focus-visible{outline:3px solid var(--cyan);outline-offset:2px}.piece-card.is-dragging{opacity:.35}.piece-card__count{color:var(--accent);font-size:11px;position:absolute;top:4px;right:6px}.piece-icon{flex:none}.timer{z-index:3;background:var(--paper);border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);border-radius:999px;align-items:baseline;gap:10px;padding:6px 18px 7px;display:flex;position:absolute;top:14px;left:50%;transform:translate(-50%)}.timer__label{font:800 11px var(--font-body);letter-spacing:.18em;text-transform:uppercase;color:var(--accent)}.timer__value{font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:26px;line-height:1}.timer.is-urgent{color:var(--paper);background:var(--accent);animation:1s ease-in-out infinite timer-pulse}.timer.is-urgent .timer__label{color:var(--paper)}.notice{z-index:3;text-align:center;background:var(--paper);border:3px solid var(--ink);max-width:min(460px,100vw - 32px);box-shadow:4px 4px 0 var(--ink);pointer-events:none;border-radius:12px;margin:0;padding:10px 16px;font-size:14px;font-weight:800;line-height:1.35;animation:3.4s both notice;position:absolute;bottom:28px;left:50%;transform:translate(-50%)}.notice--ok{background:#dcfce7}.notice--error{background:#ffe1e6}.piece-tooltip{z-index:10;background:var(--paper);border:3px solid var(--ink);width:280px;box-shadow:5px 5px 0 var(--ink);pointer-events:none;border-radius:12px;padding:12px 14px;font-size:13px;position:fixed}.piece-tooltip__name{font-family:var(--font-display);margin:0 0 8px;font-size:17px;line-height:1.1}.piece-tooltip__name span{color:var(--accent)}.piece-facts{gap:4px;margin:0;display:grid}.piece-facts div{grid-template-columns:72px 1fr;gap:8px;display:grid}.piece-facts dt{letter-spacing:.1em;text-transform:uppercase;color:#6a6a7a;padding-top:2px;font-size:11px;font-weight:800}.piece-facts dd{margin:0;font-weight:800}.piece-tooltip__note{color:#3a3a4a;margin:8px 0 0;line-height:1.4}.piece-tooltip__hint{color:var(--accent);margin:8px 0 0;font-size:12px;font-weight:800}.drag-ghost{z-index:11;background:var(--paper);border:3px solid var(--ink);width:max-content;max-width:300px;box-shadow:4px 4px 0 var(--ink);pointer-events:none;border-radius:12px;align-items:center;gap:10px;margin:-26px 0 0 16px;padding:8px 12px 8px 8px;display:flex;position:fixed;top:0;left:0}.drag-ghost__text{gap:2px;font-size:12px;display:grid}.drag-ghost__text strong{font-size:14px}.drag-ghost__text em{color:#6a6a7a;font-style:normal;font-weight:800}.drag-ghost.is-ok{background:#dcfce7}.drag-ghost.is-ok em{color:#15803d}.drag-ghost.is-blocked{background:#ffe1e6}.drag-ghost.is-blocked em{color:#b4232f}@keyframes timer-pulse{50%{transform:translate(-50%)scale(1.06)}}@keyframes notice{0%{opacity:0;transform:translate(-50%,12px)}8%,80%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%)}}@media (width<=899px){.mission{width:auto;max-height:calc(100% - 248px);padding:12px 14px;inset:52px 12px auto}.mission__title{font-size:22px}.mission__toggle{display:inline-flex}.mission:not(.is-open) .mission__body{display:none}.mission__launch{margin-top:10px;padding:10px 18px;font-size:15px}.tray{width:auto;height:172px;padding:10px 12px 8px;inset:auto 12px 12px}.tray .panel-title{font-size:16px}.tray__hint{display:none}.tray__scroll{gap:16px;margin:6px 0 0;padding:2px 6px 8px 2px;display:flex;overflow:auto hidden}.tray__group{flex:none}.tray__group+.tray__group{margin-top:0}.tray__grid{grid-template-columns:none;grid-auto-columns:88px;grid-auto-flow:column}.piece-card{touch-action:pan-x;min-height:100px}.timer{padding:4px 14px 5px;top:10px;left:auto;right:12px;transform:none}.timer__value{font-size:20px}.notice{bottom:196px}@keyframes timer-pulse{50%{transform:scale(1.06)}}}@media (prefers-reduced-motion:reduce){.mission,.tray,.timer.is-urgent{animation:none}.notice{animation-name:notice-fade}}@keyframes notice-fade{0%,to{opacity:0}8%,80%{opacity:1}}.report{gap:8px;margin:14px 0 0;padding:0;list-style:none;display:grid}.report li{grid-template-columns:24px 1fr;align-items:start;gap:8px;font-size:13px;line-height:1.4;display:grid}.report__mark{border:2px solid var(--ink);border-radius:50%;place-items:center;width:22px;height:22px;font-size:12px;font-weight:800;display:grid}.report .is-ok{color:#4a4a5a}.report .is-ok .report__mark{background:#86efac}.report .is-fail .report__mark{color:var(--paper);background:var(--accent)}.hud{z-index:2;width:236px;color:var(--paper);font-variant-numeric:tabular-nums;border:3px solid var(--ink);box-shadow:5px 5px 0 var(--ink);background:#0d0d14d9;border-radius:14px;padding:12px 16px 14px;position:absolute;top:20px;right:clamp(16px,4vw,40px)}.hud__title{font:800 11px var(--font-body);letter-spacing:.18em;text-transform:uppercase;color:var(--cyan);margin:0 0 6px}.hud__row{justify-content:space-between;align-items:baseline;gap:12px;padding:3px 0;font-size:13px;font-weight:800;display:flex}.hud__row strong{font-family:var(--font-display);font-size:20px;font-weight:400}.hud__row--ok strong{color:#86efac}.hud__row--warn strong{color:#ffd166}.hud__row--danger strong{color:#ff6b81}.hud__gauge{background:#ffffff26;border-radius:4px;height:8px;margin:2px 0 6px;position:relative;overflow:hidden}.hud__gauge span{background:var(--cyan);position:absolute;inset:0 auto 0 0}.hud__gauge i{background:var(--accent);width:2px;position:absolute;top:0;bottom:0}.hud__warp{color:var(--cyan);margin:6px 0 0;font-size:12px;font-weight:800}.release{z-index:3;text-align:center;pointer-events:auto;justify-items:center;gap:8px;width:max-content;max-width:calc(100vw - 32px);display:grid;position:absolute;bottom:clamp(24px,8vh,72px);left:50%;transform:translate(-50%)}.release__button{font:400 clamp(20px, 3vw, 28px) var(--font-display);color:var(--paper);background:var(--accent);border:3px solid var(--ink);box-shadow:5px 5px 0 var(--ink);cursor:pointer;border-radius:999px;padding:16px 30px;transition:transform .12s,box-shadow .12s}.release__button:hover:not(:disabled){box-shadow:7px 7px 0 var(--ink);transform:translate(-2px,-2px)}.release__button:active:not(:disabled){box-shadow:2px 2px 0 var(--ink);transform:translate(2px,2px)}.release__button:focus-visible{outline:3px solid var(--cyan);outline-offset:3px}.release__button:disabled{cursor:default;background:#2a9d8f;font-size:clamp(16px,2.2vw,20px)}.release__button.is-urgent{animation:.45s ease-in-out infinite alternate release-urgent}.release__warning{color:var(--paper);background:var(--ink);border-radius:8px;margin:0;padding:6px 12px;font-weight:800}.release__hint{color:var(--paper);text-shadow:1px 1px 0 var(--ink), -1px -1px 0 var(--ink);margin:0;font-size:12px;font-weight:800}.outcome{margin:12px 0 0;padding-left:18px;font-size:15px;line-height:1.5}.outcome li+li{margin-top:4px}@keyframes release-urgent{to{transform:scale(1.07)}}@media (width<=899px){.ui-descent .card{display:none}.hud{width:200px;padding:10px 12px;top:48px;right:12px}.hud__row strong{font-size:17px}}@media (prefers-reduced-motion:reduce){.release__button.is-urgent{animation:none}}:root{--ink:#0d0d14;--paper:#fffdf5;--accent:#e94560;--cyan:#00fff5;--font-display:"Dela Gothic One", system-ui, sans-serif;--font-body:"M PLUS Rounded 1c", system-ui, sans-serif;--bar:max(11vh, 84px)}.overlay{pointer-events:none;font-family:var(--font-body);color:var(--ink);position:fixed;inset:0}.brand{z-index:2;font-family:var(--font-display);letter-spacing:.12em;color:var(--paper);text-shadow:2px 2px 0 var(--ink);font-size:14px;transition:opacity .4s;position:absolute;top:20px;left:24px}.brand span{color:var(--accent)}.card{z-index:2;background:var(--paper);border:3px solid var(--ink);max-width:min(420px,100vw - 32px);max-height:calc(100% - 96px);box-shadow:6px 6px 0 var(--ink);pointer-events:auto;border-radius:14px;padding:20px 24px 22px;animation:.5s cubic-bezier(.2,1.4,.4,1) both card-in;position:absolute;bottom:clamp(24px,10vh,96px);left:clamp(16px,5vw,64px);overflow-y:auto}.card__kicker{letter-spacing:.18em;text-transform:uppercase;color:var(--accent);margin:0 0 6px;font-size:12px;font-weight:800}.card__title{font-family:var(--font-display);margin:0;font-size:clamp(32px,6vw,52px);font-weight:400;line-height:1}.card__text{margin:10px 0 0;font-size:16px;line-height:1.5}.card__action{font:800 15px var(--font-body);color:var(--paper);background:var(--accent);border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);cursor:pointer;border-radius:999px;margin-top:18px;padding:12px 22px;transition:transform .12s,box-shadow .12s}.card__action:hover{box-shadow:6px 6px 0 var(--ink);transform:translate(-2px,-2px)}.card__action:active{box-shadow:2px 2px 0 var(--ink);transform:translate(2px,2px)}.card__action:focus-visible{outline:3px solid var(--cyan);outline-offset:3px}.letterbox{z-index:1;height:var(--bar);background:var(--ink);transition:transform .6s cubic-bezier(.7,0,.3,1);position:absolute;left:0;right:0;transform:scaleY(0)}.letterbox--top{transform-origin:top;top:0}.letterbox--bottom{transform-origin:bottom;bottom:0}.is-cinematic .letterbox{transform:scaleY(1)}.is-cinematic .brand{opacity:0}.is-cinematic .card{width:fit-content;max-width:calc(100vw - 32px);height:var(--bar);text-align:center;color:var(--paper);box-shadow:none;pointer-events:none;background:0 0;border:0;flex-direction:column;justify-content:center;margin-inline:auto;padding:0;animation-name:subtitle-in;display:flex;bottom:0;left:0;right:0}.is-cinematic .card__kicker{display:none}.is-cinematic .card__title{color:var(--paper);font-size:clamp(20px,3.4vw,28px)}.is-cinematic .card__text{color:color-mix(in srgb, var(--paper) 75%, transparent);margin-top:4px;font-size:14px}.countdown{font-family:var(--font-display);color:var(--paper);-webkit-text-stroke:6px var(--ink);paint-order:stroke fill;text-shadow:8px 8px 0 var(--accent);place-items:center;font-size:clamp(120px,28vw,260px);line-height:1;animation:.8s ease-out both count-pop;display:grid;position:absolute;inset:0}@keyframes card-in{0%{opacity:0;transform:translateY(24px)rotate(-1.5deg)}to{opacity:1;transform:none}}@keyframes subtitle-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes count-pop{0%{opacity:0;transform:scale(1.6)}20%{opacity:1;transform:scale(1)}80%{opacity:1;transform:scale(.95)}to{opacity:0;transform:scale(.9)}}@media (height<=500px){:root{--bar:56px}.brand{top:12px;left:16px}.card{max-width:min(320px,100vw - 32px);box-shadow:4px 4px 0 var(--ink);border-radius:12px;padding:12px 16px 14px;bottom:16px;left:16px}.card__kicker{margin-bottom:4px;font-size:11px}.card__title{font-size:28px}.card__text{margin-top:6px;font-size:14px;line-height:1.4}.card__action{margin-top:12px;padding:8px 16px;font-size:14px}.is-cinematic .card__title{font-size:18px}.is-cinematic .card__text{margin-top:2px;font-size:12px}.countdown{font-size:42vh}}@media (prefers-reduced-motion:reduce){.card,.countdown{animation:none}.letterbox{transition:none}}
