.beacon-root{--bg:#0a1730;--bg-deep:#07101f;--panel:#102544;--panel-2:#0d1e38;--card-light:#fff;--stroke:#ffffff14;--stroke-hover:#ffffff29;--text:#f2f6fb;--text-2:#9badc4;--text-3:#5e7089;--text-on-card:#0a1730;--text-2-on-card:#4a5a70;--primary:#0052ff;--highlight:#4d9fff;--brand-grad:linear-gradient(135deg,#0052ff,#4d9fff);--good:#10b981;--warn:#f5a524;--bad:#ff6166;--ease:cubic-bezier(.2,.6,.2,1);--radius:16px;--radius-sm:10px;--wrap:1120px;background:var(--bg);color:var(--text);font-family:var(--font-sans),-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;min-height:100vh;position:relative;overflow-x:hidden}.beacon-root:before{content:"";filter:blur(40px);pointer-events:none;z-index:0;background:radial-gradient(60% 60% at 30% 0,#0052ff47,#0000 70%),radial-gradient(50% 50% at 75% 10%,#4d9fff2e,#0000 70%);height:70vh;position:fixed;inset:-20% -10% auto}.beacon-root>*{z-index:1;position:relative}.beacon-wrap{max-width:var(--wrap);margin:0 auto;padding-left:24px;padding-right:24px}.beacon-panel{background:linear-gradient(180deg,var(--panel)0%,var(--panel-2)100%);border:1px solid var(--stroke);border-radius:var(--radius);box-shadow:inset 0 1px #ffffff0f}.beacon-glass{-webkit-backdrop-filter:blur(14px);border:1px solid var(--stroke);background:#10254499}.beacon-card-light{background:var(--card-light);color:var(--text-on-card);border-radius:var(--radius)}.beacon-display{letter-spacing:-.03em;background:linear-gradient(#fff 0%,#a9c6ef 100%);color:#0000;-webkit-background-clip:text;background-clip:text;font-size:clamp(2.4rem,5.2vw,4rem);font-weight:700;line-height:1.04}.beacon-h2{letter-spacing:-.02em;font-size:clamp(1.6rem,3vw,2.2rem);font-weight:650;line-height:1.15}.beacon-mono{font-family:var(--font-mono),ui-monospace,"SF Mono",Menlo,monospace;font-variant-numeric:tabular-nums}.beacon-eyebrow{font-family:var(--font-mono),ui-monospace,monospace;letter-spacing:.14em;text-transform:uppercase;color:var(--text-3);font-size:.72rem}.beacon-figure-measured{color:var(--highlight)}.beacon-figure-measured.is-large{color:var(--primary)}.beacon-figure-modeled{color:var(--text)}.beacon-figure-target{color:var(--warn)}.beacon-provenance-tag{font-family:var(--font-mono),ui-monospace,monospace;letter-spacing:.08em;text-transform:uppercase;opacity:.85;white-space:nowrap;border:1px solid;border-radius:999px;padding:2px 7px;font-size:.66rem}.beacon-status-pass{color:var(--good)}.beacon-status-warn{color:var(--warn)}.beacon-status-fail{color:var(--bad)}.beacon-status-unknown{color:var(--text-3)}.beacon-input{border:1px solid var(--stroke);border-radius:var(--radius-sm);color:var(--text);transition:border-color .2s var(--ease),box-shadow .2s var(--ease);background:#07101fb3}.beacon-input::placeholder{color:var(--text-3)}.beacon-input:focus{border-color:var(--highlight);outline:none;box-shadow:0 0 0 3px #4d9fff29}.beacon-cta{background:var(--brand-grad);color:#fff;border-radius:var(--radius-sm);cursor:pointer;transition:transform .18s var(--ease),box-shadow .18s var(--ease),opacity .18s;border:none;font-weight:600;box-shadow:0 6px 24px #0052ff52}.beacon-cta:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 10px 32px #0052ff6b}.beacon-cta:disabled{opacity:.55;cursor:not-allowed}.beacon-ghost{border:1px solid var(--stroke);border-radius:var(--radius-sm);color:var(--text-2);cursor:pointer;transition:border-color .2s var(--ease),color .2s var(--ease);background:0 0}.beacon-ghost:hover{border-color:var(--stroke-hover);color:var(--text)}.beacon-reveal{opacity:0;filter:blur(6px);animation:beacon-reveal-in .7s var(--ease)forwards;transform:translateY(14px)}@keyframes beacon-reveal-in{to{opacity:1;filter:none;transform:none}}.beacon-sweep{position:relative;overflow:hidden}.beacon-sweep:after{content:"";animation:beacon-sweep-move 2.2s var(--ease)infinite;background:linear-gradient(100deg,#0000 30%,#4d9fff24 50%,#0000 70%);position:absolute;inset:0;transform:translate(-100%)}@keyframes beacon-sweep-move{to{transform:translate(100%)}}@media (prefers-reduced-motion:reduce){.beacon-reveal{opacity:1;filter:none;animation:none;transform:none}.beacon-sweep:after{animation:none}}
