:root{--ink:#0e1824;--muted:#5a7390;--paper:#eaf2ff;--surface:#ffffff8c;--blue:#2f6fed;--blue-bright:#5b9cff;--blue-deep:#1a4fb8;--cyan:#6ec8ff;--danger:#e23b2f;--danger-bright:#ff5a4d;--danger-deep:#8f1f1f;--ring:#5b9cff59;--font-brand:"Syne", "Noto Sans SC", sans-serif;--font-body:"Noto Sans SC", sans-serif;color:var(--ink);font-family:var(--font-body);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased}*,:before,:after{box-sizing:border-box}html,body{min-height:100%;margin:0}body{background:#0b1220;min-height:100svh}#app{min-height:100svh;position:relative;overflow:hidden}.atmosphere{z-index:0;background:radial-gradient(90% 70% at 50% 8%,#1e3a6e 0%,#0000 55%),radial-gradient(55% 45% at 88% 78%,#163050 0%,#0000 50%),radial-gradient(50% 40% at 8% 72%,#1a2848 0%,#0000 45%),linear-gradient(165deg,#101a30 0%,#0b1220 45%,#121c32 100%);position:fixed;inset:0}.atmosphere:after{content:"";opacity:.35;pointer-events:none;mix-blend-mode:soft-light;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.05'/%3E%3C/svg%3E");position:absolute;inset:0}.flash-overlay{z-index:2;pointer-events:none;opacity:0;background:radial-gradient(circle at 50% 40%,#ff463c8c,#b4141447 55%,#0000 75%);position:fixed;inset:0}html.is-alerting .flash-overlay{animation:.55s ease-in-out infinite flash-pulse}html.is-alerting .atmosphere{filter:saturate(1.15)brightness(1.05)}@keyframes flash-pulse{0%,to{opacity:.15}50%{opacity:1}}.shell{z-index:1;flex-direction:column;gap:clamp(28px,5vw,40px);width:min(720px,100%);min-height:100svh;margin:0 auto;padding:clamp(28px,6vw,56px) clamp(20px,5vw,32px) 48px;display:flex;position:relative}.site-nav{justify-content:center;gap:8px;animation:.7s ease-out both rise;display:flex}.site-nav a{color:#7f96b8;border:1px solid #0000;border-radius:8px;padding:.45rem .95rem;font-size:.88rem;font-weight:600;text-decoration:none;transition:color .15s,background .15s,border-color .15s}.site-nav a:hover{color:#c8dcff;background:#ffffff0f}.site-nav a[aria-current=page]{color:#eef5ff;background:#5b9cff38;border-color:#5b9cff73}.shell-lip{width:min(820px,100%)}.stage-lip{width:100%}.camera-stage{aspect-ratio:4/3;background:#0a1220;border-radius:16px;width:min(560px,100%);position:relative;overflow:hidden;box-shadow:0 0 0 1px #ffffff1a,0 24px 60px #00000073}.camera-video,.camera-overlay{object-fit:cover;width:100%;height:100%;position:absolute;inset:0;transform:scaleX(-1)}.camera-video{background:#0a1220}.camera-overlay{pointer-events:none}.camera-badge{z-index:2;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0a1220b8;border:1px solid #ffffff1f;border-radius:12px;flex-direction:column;gap:2px;min-width:7.5rem;padding:.65rem .9rem;transition:background .25s,border-color .25s,box-shadow .25s;display:flex;position:absolute;bottom:12px;left:12px}.camera-badge .beacon-label{letter-spacing:.04em;color:#9eb4d4;font-size:.75rem}.camera-badge .countdown{font-family:var(--font-brand);color:#eef5ff;font-size:1.65rem;font-weight:800;line-height:1}.camera-badge.is-voice{border-color:#5b9cff8c;box-shadow:0 0 24px #5b9cff59}.camera-badge.is-voice .beacon-label,.camera-badge.is-voice .countdown{color:#b8d6ff}.camera-badge.is-alert{background:#50120ec7;border-color:#e23b2fb3;animation:.45s ease-in-out infinite alert-shake;box-shadow:0 0 28px #e23b2f73}.camera-badge.is-alert .beacon-label,.camera-badge.is-alert .countdown{color:#fff}.camera-badge.is-idle .countdown,.camera-badge.is-error .countdown{color:#7f96b8}.brand-block{text-align:center;animation:.8s ease-out both rise}.brand{font-family:var(--font-brand);letter-spacing:-.04em;color:#eef5ff;text-shadow:0 0 60px #5b9cff73;margin:0;font-size:clamp(3.4rem,12vw,5.5rem);font-weight:800;line-height:.95}.brand-block h1{font-family:var(--font-body);color:#c8dcff;letter-spacing:.02em;margin:14px 0 0;font-size:clamp(1.25rem,3.5vw,1.65rem);font-weight:700}.lede{color:#7f96b8;max-width:28em;margin:10px auto 0;font-size:.98rem;line-height:1.55}.stage{flex-direction:column;align-items:center;gap:18px;animation:.9s ease-out 80ms both rise;display:flex}.beacon{aspect-ratio:1;place-items:center;width:min(280px,70vw);display:grid;position:relative}.beacon-core{z-index:2;aspect-ratio:1;background:radial-gradient(circle at 35% 30%,#8eb8ff,#2f6fed 55%,#1a4fb8 100%);border-radius:50%;flex-direction:column;justify-content:center;align-items:center;gap:4px;width:58%;transition:background .35s,box-shadow .35s,transform .35s;display:flex;position:relative;box-shadow:inset 0 0 0 1px #ffffff1f,0 20px 50px #00000059,0 0 40px #5b9cff59}.beacon-label{color:#ffffffe6;letter-spacing:.06em;font-size:.78rem}.countdown{font-family:var(--font-brand);color:#fff;font-size:clamp(2rem,8vw,2.75rem);font-weight:800;line-height:1}.beacon-ring{border:2px solid var(--blue-bright);opacity:.25;border-radius:50%;position:absolute;inset:0}.ring-a{animation:3.2s ease-in-out infinite breathe}.ring-b{opacity:.4;animation:3.2s ease-in-out .6s infinite breathe;inset:12%}.beacon.is-idle .beacon-core{background:radial-gradient(circle at 35% 30%,#5a6e8a,#2a3648 60%,#161e2a 100%);box-shadow:0 16px 40px #0000004d}.beacon.is-listen .beacon-core{animation:2s ease-in-out infinite soft-pulse}.beacon.is-voice .beacon-core{background:radial-gradient(circle at 35% 30%,#b8d6ff,#5b9cff 50%,#2f6fed 100%);transform:scale(1.04);box-shadow:inset 0 0 0 1px #fff3,0 0 55px #5b9cff99}.beacon.is-voice .beacon-ring{opacity:.7;border-color:var(--blue-bright);animation:1.1s ease-out infinite expand-ring}.beacon.is-alert .beacon-core{background:radial-gradient(circle at 35% 30%,#ff8a7a,#e23b2f 50%,#8f1f1f 100%);animation:.45s ease-in-out infinite alert-shake;box-shadow:inset 0 0 0 1px #ffffff2e,0 0 70px #e23b2fbf}.beacon.is-alert .beacon-ring{border-color:var(--danger-bright);opacity:.9;animation:.55s ease-out infinite expand-ring}.beacon.is-alert .beacon-label,.beacon.is-alert .countdown{color:#fff}.beacon.is-error .beacon-core{background:radial-gradient(circle at 35% 30%,#8aa0c4,#4a6080 60%,#243048 100%)}.prob-row{flex-direction:column;gap:10px;width:min(320px,86vw);display:flex}.prob-head{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.level-meter{background:#ffffff1a;border-radius:999px;width:100%;height:6px;position:relative;overflow:visible}.level-fill{border-radius:inherit;transform-origin:0;background:linear-gradient(90deg, var(--blue-deep), var(--blue-bright), var(--cyan));width:100%;height:100%;transition:transform 80ms linear;transform:scaleX(0)}.level-threshold{pointer-events:none;background:#ffc14d;border-radius:1px;width:2px;margin-left:-1px;position:absolute;top:-3px;bottom:-3px;box-shadow:0 0 6px #ffc14d8c}.prob-readout{color:#7f96b8;font-variant-numeric:tabular-nums;margin:0;font-size:.9rem}.prob-readout strong{color:var(--blue-bright);margin-left:.25em;font-weight:700}.prob-threshold{color:#ffc14d;font-variant-numeric:tabular-nums;white-space:nowrap;margin:0;font-size:.8rem}.sens-field{margin-top:2px}.sens-hint{color:#5a7390;margin-left:.5em;font-size:.78rem;font-weight:400}.status-line{text-align:center;color:#9eb4d4;min-height:1.4em;margin:0;font-size:.95rem}.quick-timeouts{flex-wrap:wrap;gap:8px;display:flex}.chip{color:#c8dcff;font:inherit;cursor:pointer;background:#ffffff0f;border:1px solid #ffffff29;border-radius:8px;padding:.45rem .85rem;font-size:.88rem;font-weight:600;transition:background .15s,border-color .15s,color .15s}.chip:hover{background:#5b9cff24;border-color:#5b9cff66}.chip.is-active{border-color:var(--blue-bright);color:#eef5ff;background:#5b9cff47}.controls{flex-direction:column;gap:16px;padding:20px 0 0;animation:1s ease-out .16s both rise;display:flex}.field{color:#c8dcff;flex-direction:column;gap:8px;font-size:.92rem;display:flex}.field em{color:var(--blue-bright);margin-left:.35em;font-style:normal}.field input[type=range]{appearance:none;background:#ffffff1f;border-radius:999px;outline:none;width:100%;height:6px}.field input[type=range]::-webkit-slider-thumb{appearance:none;background:var(--blue-bright);cursor:pointer;border-radius:50%;width:18px;height:18px;box-shadow:0 0 0 4px #5b9cff38}.field input[type=range]::-moz-range-thumb{background:var(--blue-bright);cursor:pointer;border:none;border-radius:50%;width:18px;height:18px}.toggle{color:#c8dcff;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:10px;width:fit-content;font-size:.92rem;display:inline-flex}.toggle input{width:1.05rem;height:1.05rem;accent-color:var(--blue-bright)}.sound-picker.is-disabled{opacity:.45}.sound-chips .chip{font-size:.84rem}.btn-preview{color:#c8dcff;background:#ffffff14;border:1px solid #ffffff29;align-self:flex-start;margin-top:2px;padding:.55rem 1rem;font-size:.88rem}.btn-preview:disabled{opacity:.45;cursor:not-allowed}.actions{flex-wrap:wrap;gap:12px;margin-top:4px;display:flex}.btn{cursor:pointer;border:none;border-radius:10px;padding:.9rem 1.5rem;font-family:inherit;font-size:1rem;font-weight:700;transition:transform .15s,filter .15s,background .2s}.btn:hover{filter:brightness(1.06)}.btn:active{transform:translateY(1px)}.btn-start{color:#071222;background:linear-gradient(135deg,#5b9cff,#2f6fed);box-shadow:0 10px 28px #2f6fed66}.btn-stop{color:#eef5ff;background:#ffffff1a;border:1px solid #ffffff2e}.btn-mute{color:#fff;background:linear-gradient(135deg,#ff5a4d,#e23b2f)}.hint{color:#5a7390;margin:4px 0 0;font-size:.8rem}.error{color:#ffb4a8;margin:0;font-size:.9rem}@keyframes breathe{0%,to{opacity:.2;transform:scale(.92)}50%{opacity:.45;transform:scale(1)}}@keyframes soft-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.03)}}@keyframes expand-ring{0%{opacity:.7;transform:scale(.85)}to{opacity:0;transform:scale(1.08)}}@keyframes alert-shake{0%,to{transform:scale(1.02)translate(0)}50%{transform:scale(1.05)translate(0)}}@keyframes rise{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}html.is-alerting .flash-overlay{opacity:.7}}@media (width<=480px){.actions{flex-direction:column}.btn{width:100%}}
