:root{color-scheme:dark;--ink:#eefcff;--muted:#a7c1cd;--bg:#050b13;--panel:#0b1928;--panel-2:#102b3b;--line:#214858;--cyan:#54e6d8;--cyan-dark:#0b827d;--gold:#ffd166;--danger:#ff7d8f;--ok:#81e6a2;--shadow:0 24px 70px rgb(0 0 0/.42);--radius:20px;--space:clamp(1rem,4vw,1.5rem);font-family:Inter,"Noto Sans JP",system-ui,sans-serif}
*{box-sizing:border-box}html{min-height:100%;background:var(--bg)}body{min-height:100vh;margin:0;color:var(--ink);background:radial-gradient(circle at 80% 0%,#123349 0,transparent 32rem),linear-gradient(165deg,#07111d,#03070d 70%);line-height:1.65}body:before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.25;background-image:radial-gradient(#fff 1px,transparent 1px);background-size:53px 53px}.app-shell{position:relative;max-width:760px;min-height:100vh;margin:auto;background:rgb(5 11 19/.55)}.topbar{position:sticky;z-index:20;top:0;display:flex;align-items:center;justify-content:space-between;padding:.85rem max(1rem,env(safe-area-inset-left));border-bottom:1px solid rgb(84 230 216/.2);background:rgb(5 11 19/.86);backdrop-filter:blur(14px)}.brand{display:flex;gap:.6rem;align-items:center;font-size:.78rem;font-weight:800;letter-spacing:.16em}.brand span:first-child{color:var(--gold)}main{padding:var(--space);padding-bottom:max(2rem,env(safe-area-inset-bottom))}.skip-link{position:fixed;z-index:99;top:.5rem;left:.5rem;translate:0 -200%;padding:.7rem 1rem;color:#001a1a;background:var(--cyan)}.skip-link:focus{translate:0}.card{padding:clamp(1.1rem,4vw,1.7rem);border:1px solid var(--line);border-radius:var(--radius);background:linear-gradient(155deg,rgb(16 43 59/.94),rgb(8 22 35/.96));box-shadow:var(--shadow)}.hero{min-height:68vh;display:grid;align-content:center}.eyebrow{margin:0 0 .4rem;color:var(--cyan);font-size:.75rem;font-weight:800;letter-spacing:.18em;text-transform:uppercase}h1,h2,h3{line-height:1.25;text-wrap:balance}h1{font-size:clamp(2rem,9vw,3.7rem);margin:.2rem 0 1rem}h2{font-size:clamp(1.45rem,6vw,2rem)}p{max-width:65ch}.muted,.meta{color:var(--muted)}.lead{font-size:1.08rem}.actions{display:grid;gap:.75rem;margin-top:1.4rem}.actions.inline{grid-template-columns:repeat(auto-fit,minmax(10rem,1fr))}button,.button,input{font:inherit}button,.button{min-height:48px;border:0;border-radius:14px;padding:.8rem 1.1rem;font-weight:800;cursor:pointer}.primary{color:#031212;background:var(--cyan)}.secondary{color:var(--ink);background:var(--panel-2);border:1px solid var(--line)}.danger{color:#fff;background:#852c3a}.icon-button{min-height:40px;padding:.5rem .75rem;color:var(--ink);background:var(--panel-2);border:1px solid var(--line)}button:focus-visible,.button:focus-visible,input:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--gold);outline-offset:3px}button:disabled{cursor:not-allowed;opacity:.45}.checklist{display:grid;gap:.8rem;padding:0;list-style:none}.checklist label{display:flex;gap:.8rem;align-items:flex-start}.checklist input{inline-size:1.35rem;block-size:1.35rem;margin-top:.2rem;accent-color:var(--cyan)}.banner{position:sticky;z-index:19;top:58px;padding:.55rem 1rem;text-align:center;color:#06120e;background:var(--gold);font-size:.85rem;font-weight:800}.loading-screen{min-height:75vh;display:grid;place-content:center;text-align:center}.loading-screen progress{width:min(80vw,360px);accent-color:var(--cyan)}.orbit-loader{position:relative;width:86px;height:86px;margin:0 auto 1.5rem;border:1px solid var(--line);border-radius:50%;animation:spin 3s linear infinite}.orbit-loader span{position:absolute;top:-5px;left:35px;width:14px;height:14px;border-radius:50%;background:var(--cyan);box-shadow:0 0 24px var(--cyan)}.subtitle{padding:1rem;border-left:3px solid var(--cyan);background:#06101b;color:#dffcf9;white-space:pre-line}.objective{padding:.9rem 1rem;border:1px dashed var(--cyan);border-radius:14px}.progress-dots{display:flex;gap:.45rem;margin:1rem 0}.progress-dots span{width:100%;height:5px;border-radius:9px;background:var(--line)}.progress-dots .done{background:var(--cyan)}#map{height:280px;border:1px solid var(--line);border-radius:16px;background:#10222d}.arrival-button{width:100%;margin-top:1rem;color:#101005;background:var(--gold);font-size:1.05rem}.status-line{display:flex;gap:.5rem;align-items:center;margin:.7rem 0;color:var(--muted)}.status-dot{width:.65rem;height:.65rem;border-radius:50%;background:var(--gold)}.puzzle-image{width:100%;max-height:420px;object-fit:contain;border-radius:12px;background:#071523}.zoomable{cursor:zoom-in}.answer-form{display:grid;gap:.8rem}.answer-form input{width:100%;min-height:52px;padding:.8rem 1rem;color:var(--ink);background:#050d16;border:1px solid var(--line);border-radius:12px;font-size:1.05rem}.feedback{min-height:1.7em;font-weight:700}.feedback.error{color:var(--danger)}.hints{display:grid;gap:.65rem}.hint{padding:.75rem 1rem;border-left:3px solid var(--gold);background:#111b24}.inventory{display:flex;gap:.6rem;flex-wrap:wrap}.part{display:grid;place-items:center;width:54px;height:54px;border:1px solid var(--line);border-radius:12px;color:var(--muted);background:#08131e;font-size:1.45rem;font-weight:900}.part.owned{color:var(--ink);border-color:var(--cyan);box-shadow:inset 0 0 20px rgb(84 230 216/.16)}.part-gain{animation:gain .8s both}.reorder{display:grid;grid-template-columns:repeat(4,1fr);gap:.55rem}.letter-tile{aspect-ratio:1;padding:0;font-size:clamp(1.6rem,10vw,3rem);color:var(--ink);background:var(--panel-2);border:2px solid var(--line)}.letter-tile[aria-pressed=true]{border-color:var(--gold);translate:0 -5px}.dialog-backdrop{position:fixed;z-index:50;inset:0;display:grid;place-items:center;padding:1rem;background:rgb(0 0 0/.76)}dialog{width:min(92vw,580px);max-height:88vh;overflow:auto;padding:1.2rem;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}dialog::backdrop{background:rgb(0 0 0/.72)}.scan-flash{position:fixed;z-index:45;inset:0;pointer-events:none;background:linear-gradient(transparent 48%,rgb(84 230 216/.5) 50%,transparent 52%);animation:scan .8s ease-out}.success{color:var(--ok)}.ending-star{font-size:4rem;text-align:center;color:var(--gold)}.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}@keyframes spin{to{rotate:360deg}}@keyframes gain{0%{scale:.4;opacity:0}60%{scale:1.18}100%{scale:1;opacity:1}}@keyframes scan{from{translate:0 -100%}to{translate:0 100%}}@media(min-width:640px){.actions:not(.stack){grid-template-columns:repeat(2,1fr)}main{padding-top:2rem}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
:root .loading-screen{display:flex;flex-direction:column;align-items:center;justify-content:center}:root .loading-screen h1{width:100%;overflow-wrap:anywhere}
.device-pickup{position:relative;min-height:calc(100vh - 8rem);display:grid;place-items:center;align-content:center;overflow:hidden;text-align:center;isolation:isolate}.device-pickup:before{content:"";position:absolute;z-index:-1;width:min(88vw,520px);aspect-ratio:1;border:1px solid rgb(84 230 216/.2);border-radius:50%;background:radial-gradient(circle,rgb(84 230 216/.13),transparent 63%);box-shadow:0 0 80px rgb(84 230 216/.08);animation:pickup-radar 3s ease-in-out infinite}.pickup-target{display:grid;justify-items:center;gap:1.15rem;padding:1.5rem;color:var(--ink);background:transparent}.pickup-target:disabled{opacity:1}.pickup-phone{position:relative;display:block;width:clamp(132px,38vw,180px);aspect-ratio:.52;border:3px solid #527487;border-radius:28px;background:linear-gradient(145deg,#1b3444,#07111a 56%);box-shadow:0 24px 55px rgb(0 0 0/.55),0 0 35px rgb(84 230 216/.14);transform:perspective(650px) rotateX(11deg) rotateZ(-5deg);transition:filter .25s}.pickup-screen{position:absolute;inset:13px 9px 14px;display:grid;place-content:center;gap:1rem;border:1px solid rgb(84 230 216/.35);border-radius:20px;background:radial-gradient(circle at 50% 42%,rgb(84 230 216/.28),transparent 34%),linear-gradient(160deg,#0b2634,#03090f);overflow:hidden}.pickup-screen:after{content:"";position:absolute;inset:-60% 0;background:linear-gradient(transparent 42%,rgb(84 230 216/.3) 50%,transparent 58%);animation:pickup-scan 2.2s linear infinite}.pickup-speaker{position:absolute;z-index:2;top:7px;left:50%;width:32px;height:4px;border-radius:9px;background:#527487;translate:-50% 0}.pickup-camera{position:absolute;z-index:2;top:7px;left:calc(50% + 24px);width:4px;height:4px;border-radius:50%;background:var(--cyan)}.pickup-signal{font-size:3.2rem;color:var(--cyan);text-shadow:0 0 22px var(--cyan);animation:pickup-pulse 1.4s ease-in-out infinite}.pickup-line{width:64px;height:4px;border-radius:9px;background:rgb(84 230 216/.7)}.pickup-line.short{width:42px;justify-self:center;opacity:.5}.pickup-tap{font-size:clamp(1.5rem,7vw,2.2rem);font-weight:950;letter-spacing:.18em;color:var(--gold);text-shadow:0 0 18px rgb(255 209 102/.35);animation:pickup-tap 1s ease-in-out infinite}.pickup-caption{margin:.5rem 0 0;color:var(--muted)}.device-pickup.is-picking-up:before{animation:pickup-flare .8s ease-out both}.device-pickup.is-picking-up .pickup-phone{animation:pickup-zoom .9s cubic-bezier(.2,.75,.2,1) both}.device-pickup.is-picking-up .pickup-tap,.device-pickup.is-picking-up .pickup-caption,.device-pickup.is-picking-up>.eyebrow{animation:pickup-fade .25s ease-out both}@keyframes pickup-radar{50%{scale:1.08;opacity:.55}}@keyframes pickup-scan{to{translate:0 120%}}@keyframes pickup-pulse{50%{scale:1.14;opacity:.7}}@keyframes pickup-tap{50%{translate:0 -5px;opacity:.62}}@keyframes pickup-zoom{0%{transform:perspective(650px) rotateX(11deg) rotateZ(-5deg);filter:brightness(1)}65%{transform:perspective(650px) rotateX(0) rotateZ(0) scale(2.3);filter:brightness(1.5)}100%{transform:perspective(650px) rotateX(0) rotateZ(0) scale(7);filter:brightness(2.4);opacity:0}}@keyframes pickup-flare{to{scale:2.5;opacity:0}}@keyframes pickup-fade{to{opacity:0}}
@media(prefers-reduced-motion:reduce){.device-pickup:before,.pickup-screen:after,.pickup-signal,.pickup-tap,.device-pickup.is-picking-up:before,.device-pickup.is-picking-up .pickup-phone,.device-pickup.is-picking-up .pickup-tap,.device-pickup.is-picking-up .pickup-caption,.device-pickup.is-picking-up>.eyebrow{animation-duration:.01ms!important;animation-iteration-count:1!important}}
.part{width:68px;height:68px;padding:.25rem}.part img{width:100%;height:100%;object-fit:contain}.acquired-part{width:min(58vw,220px);height:min(58vw,220px);margin:0 auto 1rem;border:0;background:radial-gradient(circle,rgb(84 230 216/.16),transparent 68%)}.part-tile{aspect-ratio:.72;padding:.25rem;color:var(--ink);background:var(--panel-2);border:2px solid var(--line)}.part-tile img{width:100%;height:100%;object-fit:contain;pointer-events:none}.part-tile[aria-pressed=true]{border-color:var(--gold);translate:0 -5px;box-shadow:0 0 18px rgb(255 209 102/.24)}
.incoming-call{min-height:calc(100dvh - 8rem);display:grid;place-items:center;padding:clamp(.25rem,2vw,1rem)}
.incoming-phone{position:relative;display:flex;flex-direction:column;width:min(100%,370px);min-height:min(680px,calc(100dvh - 8rem));overflow:hidden;padding:1.5rem clamp(1.25rem,5vw,2rem) 2rem;border:2px solid #4b6c80;border-radius:42px;background:radial-gradient(circle at 50% 26%,rgb(55 108 138/.36),transparent 42%),linear-gradient(165deg,#152d40,#08131e 72%);box-shadow:inset 0 0 0 6px #091622,0 28px 70px rgb(0 0 0/.58),0 0 45px rgb(84 230 216/.12);text-align:center}
.incoming-phone:before{content:"";position:absolute;top:9px;left:50%;width:72px;height:17px;translate:-50% 0;border-radius:0 0 12px 12px;background:#06111c}
.incoming-status{display:flex;justify-content:space-between;gap:.5rem;color:#adcad6;font-size:.65rem;font-weight:800;letter-spacing:.12em}
.incoming-caller{display:grid;justify-items:center;align-content:center;flex:1;min-height:290px}
.incoming-kicker{margin:0 0 2rem;color:var(--cyan);font-size:.7rem;font-weight:800;letter-spacing:.24em}
.incoming-avatar{display:grid;place-items:center;width:100px;height:100px;margin-bottom:1.2rem;border:1px solid rgb(84 230 216/.45);border-radius:50%;color:var(--cyan);background:radial-gradient(circle,rgb(84 230 216/.22),rgb(17 43 60/.8));box-shadow:0 0 0 10px rgb(84 230 216/.06),0 0 40px rgb(84 230 216/.18);font-size:2.8rem;animation:incoming-pulse 2s ease-in-out infinite}
.incoming-caller h1{margin:.2rem 0;font-size:clamp(2rem,9vw,2.7rem);letter-spacing:.1em}
.incoming-description{margin:.1rem 0;color:var(--muted);font-size:.9rem}
.incoming-ringing{margin-top:1.5rem;color:var(--cyan);font-size:.82rem;letter-spacing:.12em}
.incoming-actions{display:grid;justify-items:center;gap:.8rem;padding-top:1rem}
.answer-call{display:grid;justify-items:center;gap:.55rem;min-height:0;padding:.25rem 1.2rem;color:var(--ink);background:transparent}
.answer-icon{display:grid;place-items:center;width:72px;height:72px;border-radius:50%;color:#052014;background:#73e8a4;box-shadow:0 0 0 9px rgb(115 232 164/.1),0 8px 25px rgb(69 215 134/.3)}
.answer-icon svg{width:31px;height:31px}
.answer-call:hover .answer-icon{background:#a2f4c1;scale:1.05}
#ring-replay{min-height:40px;padding:.35rem .8rem;font-size:.82rem}
@keyframes incoming-pulse{50%{box-shadow:0 0 0 17px rgb(84 230 216/.03),0 0 55px rgb(84 230 216/.3)}}
@media(prefers-reduced-motion:reduce){.incoming-avatar{animation:none}}
/* Leafletの高いz-indexを地図内に閉じ込め、通話アイランドやヘッダーより手前に出さない。 */
#map{position:relative;z-index:0;isolation:isolate}
.call-island-wrap{position:sticky;z-index:19;top:66px;display:flex;justify-content:center;padding:.4rem .6rem 0;pointer-events:none}
.call-island-wrap[hidden]{display:none}
.call-island{display:flex;align-items:center;gap:.55rem;width:min(100%,420px);min-height:62px;padding:.55rem .7rem;border:1px solid rgb(84 230 216/.38);border-radius:999px;color:var(--ink);background:linear-gradient(135deg,#0b1826,#102d3b);box-shadow:0 10px 32px rgb(0 0 0/.42),inset 0 0 20px rgb(84 230 216/.05);pointer-events:auto}
.call-avatar{display:grid;flex:none;place-items:center;width:36px;height:36px;border-radius:50%;color:var(--cyan);background:#1c4550;font-size:1.25rem}
.call-details{display:grid;align-content:center;min-width:0;line-height:1.25;text-align:left}
.call-details strong{font-size:.84rem;white-space:nowrap}
.call-details time{color:#a2d4d0;font-size:.72rem;font-variant-numeric:tabular-nums}
.call-controls{display:flex;gap:.22rem;margin-left:auto}
.call-icon-button{display:grid;flex:none;place-items:center;width:37px;height:37px;min-height:37px;padding:0;border:1px solid rgb(84 230 216/.18);border-radius:50%;color:var(--ink);background:#193446}
.call-icon-button svg{width:19px;height:19px;fill:currentColor}
.call-icon-button#call-rewind svg,.call-icon-button#call-restart svg{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.call-icon-button#call-restart svg{stroke-width:1.2}
.call-icon-button svg text{fill:currentColor;stroke:none;font-size:7px;font-weight:800}
.call-island-wrap[data-playing=true] .call-play-shape,.call-island-wrap[data-playing=false] .call-pause-shape{display:none}
.call-island-wrap:not([hidden])+.banner{top:136px}
@media(max-width:350px){.call-island{gap:.35rem;padding:.45rem}.call-icon-button{width:34px;height:34px;min-height:34px}.call-controls{gap:.12rem}}
.puzzle-explanation{margin:1.2rem 0;padding:.2rem 1rem;border:1px solid var(--line);border-radius:14px;background:rgb(5 16 27/.7)}
.puzzle-explanation summary{padding:.75rem .15rem;color:var(--cyan);font-weight:800;cursor:pointer}
.puzzle-explanation summary:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.puzzle-explanation[open] summary{border-bottom:1px solid var(--line)}
.puzzle-explanation p{margin:.9rem .15rem 1rem;white-space:pre-line}
.header-actions{display:flex;align-items:center;gap:.4rem}
.topbar{gap:.4rem}
.debug-button{color:var(--gold);border-color:rgb(255 209 102/.5);font-size:.72rem;letter-spacing:.06em}
.debug-button[hidden]{display:none}
dialog.debug-dialog{width:min(92vw,460px)}
.debug-panel-label{display:block;margin:.8rem 0 .4rem;font-weight:800}
.debug-stage-select{width:100%;min-height:48px;padding:.65rem .8rem;border:1px solid var(--line);border-radius:12px;color:var(--ink);background:var(--panel-2);font:inherit}
.debug-panel-note{color:var(--muted);font-size:.86rem}
@media(max-width:480px){body.debug-mode .topbar .brand span:last-child{display:none}}
@media(max-width:440px){.topbar .brand{font-size:.65rem;letter-spacing:.08em}.header-actions .icon-button{padding:.4rem .5rem;font-size:.72rem}}
@media(max-width:360px){.topbar .brand span:last-child{display:none}}
dialog.conversation-dialog[open]{display:flex;flex-direction:column;max-height:88dvh}
.conversation-dialog>div:first-of-type{min-height:0;overflow-y:auto}
.conversation-dialog>.actions{flex:none;margin-top:.7rem;padding-top:.7rem;border-top:1px solid var(--line)}
.conversation-log{display:grid;gap:1rem;padding:0;margin:.8rem 0;list-style:none}
.conversation-entry{padding:.85rem 1rem;border:1px solid var(--line);border-radius:14px;background:#08131f}
.conversation-meta{margin:0;color:var(--cyan);font-size:.72rem;font-weight:800;letter-spacing:.08em}
.conversation-entry h3{margin:.3rem 0 .4rem;font-size:1rem}
.conversation-text{margin:0;white-space:pre-line;overflow-wrap:anywhere}
.subtitle-panel{margin:1rem 0;border:1px solid var(--line);border-radius:14px;background:rgb(5 16 27/.7)}
.subtitle-panel summary{padding:.8rem 1rem;color:var(--cyan);font-weight:800;cursor:pointer}
.subtitle-panel summary:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.subtitle-panel[open] summary{border-bottom:1px solid var(--line)}
.subtitle-panel .subtitle{margin:.75rem;overflow-wrap:anywhere}
.location-fallback{margin:1rem 0;border:1px solid var(--line);border-radius:14px;background:rgb(5 16 27/.6)}
.location-fallback summary{padding:.8rem 1rem;color:var(--muted);font-weight:700;cursor:pointer}
.location-fallback summary:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.location-fallback[open] summary{border-bottom:1px solid var(--line)}
.location-fallback p{margin:.85rem 1rem;color:var(--muted);font-size:.9rem}
.fallback-actions{display:grid;gap:.6rem;padding:0 1rem 1rem}
.fallback-actions button{width:100%;font-weight:700}
.pickup-white-in{position:fixed;z-index:100;inset:0;pointer-events:none;background:#fff;animation:pickup-white-reveal 5s ease-out both;will-change:opacity}
@keyframes pickup-white-reveal{to{opacity:0}}
.repair-scene{position:relative;isolation:isolate;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:calc(100dvh - 10rem);overflow:hidden;padding:clamp(1.25rem,5vw,2.5rem);border:1px solid rgb(84 230 216/.3);border-radius:var(--radius);background:radial-gradient(circle at 50% 43%,#16374a 0,#0b1b2c 43%,#050b13 85%);box-shadow:var(--shadow);text-align:center}
.repair-scene::before{content:"";position:absolute;inset:0;z-index:-1;opacity:.3;background-image:radial-gradient(#d8fcf7 1px,transparent 1px);background-size:41px 41px}
.repair-scene h1{margin:.2rem 0;font-size:clamp(1.8rem,8vw,3rem)}
.repair-frame{position:relative;flex:none;width:min(72vw,300px);aspect-ratio:1;margin:1rem 0 .7rem;isolation:isolate}
.repair-ring{position:absolute;inset:13%;border:1px solid rgb(84 230 216/.38);border-radius:50%;box-shadow:0 0 0 16px rgb(84 230 216/.035),inset 0 0 32px rgb(84 230 216/.08)}
.repair-ring::before,.repair-ring::after{content:"";position:absolute;inset:12%;border:1px dashed rgb(84 230 216/.32);border-radius:50%}
.repair-ring::after{inset:-10%;border-style:solid;border-color:transparent rgb(255 209 102/.35) transparent rgb(84 230 216/.3)}
.repair-scene.is-running .repair-ring{animation:repair-orbit 10s linear infinite}
.repair-core{position:absolute;z-index:2;top:50%;left:50%;display:grid;place-items:center;width:56px;height:56px;transform:translate(-50%,-50%);border:1px solid rgb(84 230 216/.5);border-radius:50%;color:var(--cyan);background:#091b29;box-shadow:0 0 28px rgb(84 230 216/.14);font-size:1.6rem;transition:background .8s,box-shadow .8s,color .8s}
.repair-piece{position:absolute;z-index:3;top:50%;left:50%;width:clamp(48px,17vw,66px);height:clamp(48px,17vw,66px);transform:translate(-50%,-50%);translate:var(--dock-x) var(--dock-y);object-fit:contain;filter:drop-shadow(0 0 10px rgb(84 230 216/.35));user-select:none}
.repair-scene.is-running .repair-piece{animation:repair-dock var(--dock-duration) cubic-bezier(.18,.8,.24,1.2) var(--dock-delay) both}
.repair-wave{position:absolute;inset:12%;border:2px solid var(--cyan);border-radius:50%;opacity:0;pointer-events:none}
.repair-scene.is-signal .repair-wave{animation:repair-wave 1.25s ease-out both}
.repair-scene.is-signal .repair-core{color:#fff;background:#197e83;box-shadow:0 0 24px rgb(84 230 216/.7),0 0 70px rgb(84 230 216/.3)}
.repair-progress{display:flex;gap:.65rem;align-items:baseline;justify-content:center;margin:.2rem 0;color:var(--muted);font-size:.75rem;letter-spacing:.12em}
.repair-progress strong{color:var(--gold);font-size:1.3rem;font-variant-numeric:tabular-nums}
.repair-status{min-height:3.3em;margin:.4rem 0;color:var(--ink);font-weight:700}
.repair-scene.is-complete .repair-status{color:var(--cyan)}
.repair-signal{display:flex;gap:.25rem;align-items:end;height:26px;margin-top:.25rem}
.repair-signal span{width:7px;border-radius:3px 3px 0 0;background:#57717b;opacity:.35;transition:background .8s,opacity .8s,box-shadow .8s}
.repair-signal span:nth-child(1){height:8px}.repair-signal span:nth-child(2){height:14px}.repair-signal span:nth-child(3){height:20px}.repair-signal span:nth-child(4){height:26px}
.repair-scene.is-signal .repair-signal span{background:var(--cyan);opacity:1;box-shadow:0 0 12px rgb(84 230 216/.6)}
.repair-signal-label{margin:.35rem 0;color:var(--muted);font-size:.65rem;font-weight:800;letter-spacing:.18em}
.repair-actions{display:grid;width:min(100%,300px);margin-top:1rem}
.repair-actions button{width:100%}.repair-actions button[hidden]{display:none}
@keyframes repair-dock{from{opacity:0;translate:var(--start-x) var(--start-y);rotate:-18deg;filter:brightness(.4)}to{opacity:1;translate:var(--dock-x) var(--dock-y);rotate:0deg;filter:brightness(1)}}
@keyframes repair-orbit{to{rotate:360deg}}
@keyframes repair-wave{from{opacity:.55;scale:.65}to{opacity:0;scale:1.45}}
@media(prefers-reduced-motion:reduce){.repair-ring,.repair-piece,.repair-wave{animation:none!important}.repair-piece{opacity:1;translate:var(--dock-x) var(--dock-y)}}
.repair-whiteout{position:fixed;z-index:120;inset:0;pointer-events:auto;background:#fff;opacity:0;animation:repair-whiteout 5s ease-in-out both}
@keyframes repair-whiteout{0%{opacity:0}50%{opacity:1}100%{opacity:0}}
@media(prefers-reduced-motion:reduce){.repair-whiteout{display:none}}
