:root{--c-bg: #05080e;--c-bg-1: #080c14;--c-surface-1: #0b111b;--c-surface-2: #0f1724;--c-surface-3: #152032;--c-inset: #070b12;--c-text: #e9f0fa;--c-text-2: #a3b3c9;--c-text-3: #7b8aa0;--c-border: rgba(148, 163, 184, .15);--c-border-2: rgba(148, 163, 184, .28);--c-border-3: rgba(148, 163, 184, .42);--c-primary: #38bdf8;--c-primary-2: #22d3ee;--c-primary-soft: rgba(56, 189, 248, .12);--c-success: #34d399;--c-success-soft: rgba(52, 211, 153, .12);--c-warning: #fbbf24;--c-warning-soft: rgba(251, 191, 36, .12);--c-danger: #f87171;--c-danger-soft: rgba(248, 113, 113, .12);--c-info: #818cf8;--c-info-soft: rgba(129, 140, 248, .12);--c-on-primary: #04121a;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--sp-10: 40px;--sp-12: 48px;--sp-16: 64px;--sp-20: 80px;--r-xs: 3px;--r-sm: 6px;--r-md: 10px;--r-lg: 14px;--r-full: 999px;--fs-10: 10px;--fs-11: 11px;--fs-12: 12px;--fs-13: 13px;--fs-14: 14px;--fs-16: 16px;--fs-18: 18px;--fs-22: 22px;--fs-28: 28px;--fs-34: 34px;--fs-44: 44px;--lh-tight: 1.2;--lh-base: 1.55;--lh-loose: 1.7;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Noto Sans CJK SC", "Microsoft YaHei", sans-serif;--font-mono: ui-monospace, "SFMono-Regular", "Cascadia Code", "JetBrains Mono", "DejaVu Sans Mono", Consolas, "Liberation Mono", monospace;--shadow-1: 0 1px 0 rgba(255, 255, 255, .04) inset, 0 8px 24px rgba(0, 0, 0, .38);--shadow-2: 0 1px 0 rgba(255, 255, 255, .05) inset, 0 24px 64px rgba(0, 0, 0, .55);--shadow-glow: 0 0 0 1px rgba(56, 189, 248, .35), 0 0 28px rgba(56, 189, 248, .18);--focus-ring: 0 0 0 3px rgba(56, 189, 248, .28);--dur-1: .12s;--dur-2: .18s;--dur-3: .26s;--ease: cubic-bezier(.2, .6, .2, 1);--z-bg: 0;--z-page: 1;--z-sticky: 20;--z-overlay: 40;--z-toast: 60;--w-page: 1280px}*,*:before,*:after{box-sizing:border-box}html{color-scheme:dark;-webkit-text-size-adjust:100%}body{margin:0;min-height:100vh;background:var(--c-bg);color:var(--c-text);font-family:var(--font-sans);font-size:var(--fs-14);line-height:var(--lh-base);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}body:before{content:"";position:fixed;inset:0;z-index:var(--z-bg);pointer-events:none;background-image:linear-gradient(rgba(56,189,248,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(56,189,248,.045) 1px,transparent 1px);background-size:48px 48px;-webkit-mask-image:radial-gradient(120% 90% at 50% 0%,#000 25%,rgba(0,0,0,.35) 60%,transparent 100%);mask-image:radial-gradient(120% 90% at 50% 0%,#000 25%,rgba(0,0,0,.35) 60%,transparent 100%)}body:after{content:"";position:fixed;inset:0;z-index:var(--z-bg);pointer-events:none;background:radial-gradient(60% 40% at 50% -10%,rgba(56,189,248,.1),transparent 70%),radial-gradient(40% 30% at 100% 100%,rgba(129,140,248,.06),transparent 70%)}#app{position:relative;z-index:var(--z-page);min-height:100vh}::selection{background:#38bdf84d;color:#fff}h1,h2,h3,h4,p,figure{margin:0}a{color:var(--c-primary);text-decoration:none}a:hover{color:var(--c-primary-2)}button{font:inherit;color:inherit}:focus-visible{outline:none;box-shadow:var(--focus-ring)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#94a3b838;border-radius:var(--r-full);border:2px solid transparent;background-clip:padding-box}::-webkit-scrollbar-thumb:hover{background:#94a3b85c;background-clip:padding-box}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.tnum{font-variant-numeric:tabular-nums}.eyebrow{font-family:var(--font-mono);font-size:var(--fs-10);line-height:1.4;letter-spacing:.18em;text-transform:uppercase;color:var(--c-text-3)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important}}.panel{position:relative;background:linear-gradient(180deg,rgba(255,255,255,.018),transparent 120px),var(--c-surface-1);border:1px solid var(--c-border);border-radius:var(--r-md);box-shadow:var(--shadow-2)}.panel--bracket:before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:.55;background:linear-gradient(var(--c-primary),var(--c-primary)) left 0 top 0 / 14px 1px no-repeat,linear-gradient(var(--c-primary),var(--c-primary)) left 0 top 0 / 1px 14px no-repeat,linear-gradient(var(--c-primary),var(--c-primary)) right 0 top 0 / 14px 1px no-repeat,linear-gradient(var(--c-primary),var(--c-primary)) right 0 top 0 / 1px 14px no-repeat,linear-gradient(var(--c-primary),var(--c-primary)) left 0 bottom 0 / 14px 1px no-repeat,linear-gradient(var(--c-primary),var(--c-primary)) left 0 bottom 0 / 1px 14px no-repeat,linear-gradient(var(--c-primary),var(--c-primary)) right 0 bottom 0 / 14px 1px no-repeat,linear-gradient(var(--c-primary),var(--c-primary)) right 0 bottom 0 / 1px 14px no-repeat}.panel__hd{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--c-border);min-height:44px}.panel__bd{padding:var(--sp-4)}.btn{--btn-h: 40px;display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);height:var(--btn-h);padding:0 var(--sp-5);border:1px solid transparent;border-radius:var(--r-sm);font-size:var(--fs-13);font-weight:600;letter-spacing:.02em;cursor:pointer;white-space:nowrap;transition:background var(--dur-1) var(--ease),border-color var(--dur-1) var(--ease),color var(--dur-1) var(--ease),box-shadow var(--dur-1) var(--ease)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn--primary{background:var(--c-primary);color:var(--c-on-primary);box-shadow:0 0 0 1px #38bdf873,0 6px 20px #38bdf829}.btn--primary:hover:not(:disabled){background:var(--c-primary-2);box-shadow:0 0 0 1px #22d3ee99,0 8px 26px #22d3ee3d}.btn--ghost{background:transparent;border-color:var(--c-border-2);color:var(--c-text-2)}.btn--ghost:hover:not(:disabled){color:var(--c-text);border-color:var(--c-border-3);background:#ffffff08}.btn--danger{background:var(--c-danger-soft);border-color:#f8717166;color:#fecaca}.btn--danger:hover:not(:disabled){border-color:var(--c-danger);color:#fff}.btn--success{background:var(--c-success-soft);border-color:#34d39966;color:#bbf7d0}.btn--success:hover:not(:disabled){border-color:var(--c-success);color:#fff}.btn--block{width:100%}.btn--sm{--btn-h: 32px;padding:0 var(--sp-3);font-size:var(--fs-12)}.btn--lg{--btn-h: 48px;font-size:var(--fs-14)}.field{display:block}.field__label{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-2);margin-bottom:var(--sp-2);font-size:var(--fs-13);color:var(--c-text-2)}.field__meta{font-family:var(--font-mono);font-size:var(--fs-10);letter-spacing:.14em;color:var(--c-text-3);text-transform:uppercase}.input{width:100%;height:44px;padding:0 var(--sp-3);background:var(--c-inset);border:1px solid var(--c-border-2);border-radius:var(--r-sm);color:var(--c-text);font-family:var(--font-mono);font-size:var(--fs-14);outline:none;transition:border-color var(--dur-1) var(--ease),box-shadow var(--dur-1) var(--ease)}.input::placeholder{color:var(--c-text-3);font-family:var(--font-sans)}.input:hover{border-color:var(--c-border-3)}.input:focus{border-color:var(--c-primary);box-shadow:var(--focus-ring)}select.input{cursor:pointer}textarea.input{height:auto;min-height:88px;padding:var(--sp-2) var(--sp-3);line-height:1.6}.alert{display:flex;align-items:flex-start;gap:var(--sp-2);padding:10px 12px;border:1px solid transparent;border-radius:var(--r-sm);font-size:var(--fs-13);line-height:1.5}.alert__icon{flex:none;width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--r-xs);font-family:var(--font-mono);font-size:var(--fs-11);font-weight:700;margin-top:1px}.alert--error{background:var(--c-danger-soft);border-color:#f8717159;color:#fecaca}.alert--error .alert__icon{background:#f8717138;color:var(--c-danger)}.alert--ok{background:var(--c-success-soft);border-color:#34d39959;color:#bbf7d0}.alert--ok .alert__icon{background:#34d39933;color:var(--c-success)}.alert--info{background:var(--c-primary-soft);border-color:#38bdf852;color:#bae6fd}.alert--info .alert__icon{background:#38bdf833;color:var(--c-primary)}.badge{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 8px;border:1px solid var(--c-border-2);border-radius:var(--r-xs);background:#ffffff05;font-family:var(--font-mono);font-size:var(--fs-10);letter-spacing:.12em;text-transform:uppercase;color:var(--c-text-2);white-space:nowrap}.badge--ok{color:var(--c-success);border-color:#34d39959;background:var(--c-success-soft)}.badge--warn{color:var(--c-warning);border-color:#fbbf2459;background:var(--c-warning-soft)}.badge--danger{color:var(--c-danger);border-color:#f8717159;background:var(--c-danger-soft)}.badge--info{color:var(--c-primary);border-color:#38bdf859;background:var(--c-primary-soft)}.led{width:7px;height:7px;flex:none;border-radius:50%;background:currentColor;box-shadow:0 0 8px currentColor;color:var(--c-text-3)}.led--ok{color:var(--c-success)}.led--warn{color:var(--c-warning)}.led--danger{color:var(--c-danger)}.led--info{color:var(--c-primary)}.led--pulse{animation:led-pulse 2.4s var(--ease) infinite}@keyframes led-pulse{0%,to{opacity:1}50%{opacity:.4}}.kv{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-3);padding:7px 0;border-bottom:1px dashed rgba(148,163,184,.14);font-size:var(--fs-12)}.kv:last-child{border-bottom:0}.kv__k{color:var(--c-text-3);font-family:var(--font-mono);font-size:var(--fs-10);letter-spacing:.14em;text-transform:uppercase}.kv__v{color:var(--c-text-2);font-family:var(--font-mono);font-size:var(--fs-12)}.rule{height:1px;background:var(--c-border);border:0;margin:0}.crosshair{position:relative;height:1px;background:var(--c-border)}.crosshair:before,.crosshair:after{content:"";position:absolute;top:50%;width:9px;height:1px;background:var(--c-border-2)}.crosshair:before{left:0;transform:translate(-50%,-50%) rotate(90deg)}.crosshair:after{right:0;transform:translate(50%,-50%) rotate(90deg)}.page{width:100%;max-width:var(--w-page);margin:0 auto;padding:var(--sp-8) var(--sp-6) var(--sp-12)}
