/* Wovia Ops. Tokens, base and components are the Wovia design system
   (Wovia_Design_system.html) verbatim; the "ops" block at the end adds the red
   signature and the few layouts this app needs. Fonts are self-hosted. */

@font-face{font-family:'Jost';font-style:normal;font-weight:100 900;font-display:swap;src:url("fonts/Jost-latin-ext.woff2") format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Jost';font-style:normal;font-weight:100 900;font-display:swap;src:url("fonts/Jost-latin.woff2") format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Manrope';font-style:normal;font-weight:200 800;font-display:swap;src:url("fonts/Manrope-latin-ext.woff2") format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Manrope';font-style:normal;font-weight:200 800;font-display:swap;src:url("fonts/Manrope-latin.woff2") format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:100 800;font-display:swap;src:url("fonts/JetBrainsMono-latin-ext.woff2") format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:100 800;font-display:swap;src:url("fonts/JetBrainsMono-latin.woff2") format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

:root{
/* base palette */
--obsidian:#0B0D10;
--charcoal:#16191E;
--charcoal-2:#1D2128;
--dewdrop:#E2E8F0;
--dewdrop-2:#94A3B8;
--steel:#64748B;
--amber:#F59E0B;
--amber-2:#FBBF24;
--web-glow:#38BDF8;
--venom:#84CC16;
--rose:#F43F5E;
--silk:rgba(255,255,255,.05);
--silk-2:rgba(255,255,255,.08);
--silk-3:rgba(255,255,255,.14);
--thread:rgba(226,232,240,.12);
--thread-strong:rgba(226,232,240,.28);
--thread-amber:rgba(245,158,11,.45);
--thread-glow:rgba(56,189,248,.45);
/* semantic */
--bg-page:var(--obsidian);
--bg-surface:var(--charcoal);
--bg-elevated:var(--charcoal-2);
--bg-glass:var(--silk);
--text-primary:var(--dewdrop);
--text-secondary:var(--dewdrop-2);
--text-muted:var(--steel);
--text-on-accent:var(--obsidian);
--border-default:var(--thread);
--border-strong:var(--thread-strong);
--accent:var(--amber);
--accent-hover:var(--amber-2);
--info:var(--web-glow);
--success:var(--venom);
--warning:var(--amber);
--danger:var(--rose);
--node:var(--amber);
--node-idle:var(--steel);
--focus-ring:var(--web-glow);
--link:var(--web-glow);
--link-hover:var(--dewdrop);
/* ops signature: bright red */
--red:#FF1F3D;
--red-2:#FF4D64;
--thread-red:rgba(255,31,61,.45);
--glow-red:0 0 10px rgba(255,31,61,.6),0 0 24px rgba(255,31,61,.25);
}
:root{
--font-display:"Jost","Avenir Next","Helvetica Neue",sans-serif;
--font-body:"Manrope","Segoe UI",system-ui,sans-serif;
--font-mono:"JetBrains Mono","SF Mono",Menlo,monospace;
--weight-display:300;--weight-display-thin:200;--weight-body:400;--weight-medium:500;--weight-semibold:600;
--text-xs:11px;--text-sm:13px;--text-md:15px;--text-lg:18px;--text-xl:24px;--text-2xl:32px;--text-3xl:44px;--text-4xl:60px;
--leading-tight:1.1;--leading-snug:1.3;--leading-body:1.55;
--tracking-display:.08em;--tracking-hero:.14em;--tracking-label:.18em;--tracking-body:0;
}
:root{
--space-0:0;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--space-16:64px;--space-20:80px;--space-24:96px;
--container:1200px;--sidebar-w:240px;--control-h-sm:32px;--control-h-md:40px;--control-h-lg:48px;
}
:root{
--radius-none:0;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-pill:999px;
--oct-cut:10px;
--clip-oct:polygon(var(--oct-cut) 0,calc(100% - var(--oct-cut)) 0,100% var(--oct-cut),100% calc(100% - var(--oct-cut)),calc(100% - var(--oct-cut)) 100%,var(--oct-cut) 100%,0 calc(100% - var(--oct-cut)),0 var(--oct-cut));
--border-thread:1px solid var(--thread);--border-thread-strong:1px solid var(--thread-strong);
--shadow-card:0 24px 48px -16px rgba(0,0,0,.6);
--shadow-float:0 12px 32px -8px rgba(0,0,0,.7),0 0 0 1px var(--thread);
--glow-amber:0 0 10px rgba(245,158,11,.6),0 0 24px rgba(245,158,11,.25);
--glow-web:0 0 10px rgba(56,189,248,.6),0 0 24px rgba(56,189,248,.25);
--glow-venom:0 0 10px rgba(132,204,22,.6),0 0 24px rgba(132,204,22,.25);
--node-size:6px;--blur-glass:12px;
--ease-silk:cubic-bezier(.22,1,.36,1);--ease-tension:cubic-bezier(.65,0,.35,1);
--dur-fast:160ms;--dur-base:320ms;--dur-slow:900ms;--dur-pulse:2400ms;
}

html{color-scheme:dark}
*{box-sizing:border-box}
body{margin:0;background:var(--bg-page);color:var(--text-primary);font-family:var(--font-body);font-size:var(--text-md);line-height:var(--leading-body);-webkit-font-smoothing:antialiased;min-height:100vh;overflow-x:hidden}
a{color:var(--link);text-decoration:none;transition:color var(--dur-fast) var(--ease-silk)}
a:hover{color:var(--link-hover)}
h1,h2,h3,h4{font-family:var(--font-display);font-weight:var(--weight-display);letter-spacing:var(--tracking-display);line-height:var(--leading-tight);margin:0}
code,pre,kbd{font-family:var(--font-mono)}
:focus-visible{outline:1px solid var(--focus-ring);outline-offset:2px;box-shadow:var(--glow-web)}
::selection{background:rgba(245,158,11,.35)}
[hidden]{display:none!important}
@keyframes wv-pulse{0%,100%{box-shadow:0 0 0 0 rgba(245,158,11,.55)}50%{box-shadow:0 0 0 6px rgba(245,158,11,0)}}
@keyframes wv-pulse-red{0%,100%{box-shadow:0 0 0 0 rgba(255,31,61,.55)}50%{box-shadow:0 0 0 6px rgba(255,31,61,0)}}
@keyframes wv-draw{to{stroke-dashoffset:0}}
@keyframes wv-breathe{0%,100%{opacity:.55}50%{opacity:1}}
@keyframes wv-spin{to{transform:rotate(360deg)}}
@keyframes wv-rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes wv-fade{from{opacity:0}to{opacity:1}}
@keyframes wv-silk-sheen{from{background-position:120% 0}to{background-position:-20% 0}}

/* ---- Button ---- */
.wv-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:var(--font-display);font-weight:400;letter-spacing:var(--tracking-display);text-transform:uppercase;border:1px solid transparent;cursor:pointer;background:none;color:var(--text-primary);border-radius:var(--radius-sm);transition:color var(--dur-base) var(--ease-silk),background var(--dur-base) var(--ease-silk),border-color var(--dur-base) var(--ease-silk),box-shadow var(--dur-base) var(--ease-silk),transform var(--dur-fast) var(--ease-silk);text-decoration:none;white-space:nowrap;line-height:1}
.wv-btn:active{transform:scale(.98)}
.wv-btn[data-size=sm]{height:var(--control-h-sm);padding:0 14px;font-size:var(--text-xs)}
.wv-btn[data-size=md]{height:var(--control-h-md);padding:0 20px;font-size:var(--text-sm)}
.wv-btn[data-size=lg]{height:var(--control-h-lg);padding:0 28px;font-size:var(--text-md)}
.wv-btn[data-variant=primary]{background:var(--accent);border-color:var(--accent);color:var(--text-on-accent);font-weight:500}
.wv-btn[data-variant=primary]::before{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(115deg,transparent 35%,rgba(255,255,255,.45) 50%,transparent 65%);background-size:250% 100%;background-position:120% 0;opacity:0;transition:opacity var(--dur-base) var(--ease-silk)}
.wv-btn[data-variant=primary]:hover{box-shadow:var(--glow-amber);background:var(--accent-hover);border-color:var(--accent-hover)}
.wv-btn[data-variant=primary]:hover::before{opacity:1;animation:wv-silk-sheen 1.1s var(--ease-silk) forwards}
.wv-btn[data-variant=secondary]{border-color:var(--thread-strong);color:var(--text-primary);background:transparent}
.wv-btn[data-variant=secondary]:hover{border-color:var(--accent);color:var(--accent-hover);box-shadow:0 0 0 1px rgba(245,158,11,.15),0 0 18px -4px rgba(245,158,11,.5)}
.wv-btn[data-variant=secondary] .wv-btn-node{position:absolute;width:5px;height:5px;border-radius:50%;background:var(--node-idle);opacity:0;transition:opacity var(--dur-base) var(--ease-silk),background var(--dur-base)}
.wv-btn[data-variant=secondary] .wv-btn-node.tl{top:-3px;left:-3px}.wv-btn[data-variant=secondary] .wv-btn-node.br{bottom:-3px;right:-3px}
.wv-btn[data-variant=secondary]:hover .wv-btn-node{opacity:1;background:var(--accent);box-shadow:var(--glow-amber)}
.wv-btn[data-variant=ghost]{color:var(--text-secondary)}
.wv-btn[data-variant=ghost]:hover{color:var(--text-primary);background:var(--silk-2)}
.wv-btn[data-variant=danger]{border-color:rgba(244,63,94,.5);color:var(--danger)}
.wv-btn[data-variant=danger]:hover{background:rgba(244,63,94,.1);box-shadow:0 0 18px -4px rgba(244,63,94,.5)}
.wv-btn[disabled],.wv-btn[aria-disabled=true]{opacity:.4;pointer-events:none}
.wv-btn-thread{position:absolute;top:50%;left:100%;width:44px;height:1px;background:linear-gradient(90deg,var(--accent),rgba(245,158,11,0));transform:scaleX(0);transform-origin:left;transition:transform var(--dur-slow) var(--ease-silk);pointer-events:none}
.wv-btn-thread::after{content:"";position:absolute;right:-3px;top:-2.5px;width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:var(--glow-amber);opacity:0;transition:opacity var(--dur-base) var(--ease-silk) .4s}
.wv-btn:hover .wv-btn-thread{transform:scaleX(1)}.wv-btn:hover .wv-btn-thread::after{opacity:1}
.wv-btn-icon{display:inline-flex;width:1.15em;height:1.15em;align-items:center;justify-content:center}
.wv-btn-icon svg{width:100%;height:100%}

/* ---- IconButton ---- */
.wv-iconbtn{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--thread);background:var(--silk);color:var(--text-secondary);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--dur-base) var(--ease-silk);padding:0}
.wv-iconbtn[data-size=sm]{width:var(--control-h-sm);height:var(--control-h-sm)}.wv-iconbtn[data-size=md]{width:var(--control-h-md);height:var(--control-h-md)}
.wv-iconbtn svg{width:16px;height:16px}
.wv-iconbtn:hover{color:var(--text-primary);border-color:var(--thread-strong);background:var(--silk-2)}
.wv-iconbtn[data-active=true]{color:var(--accent);border-color:rgba(245,158,11,.5);box-shadow:0 0 14px -4px rgba(245,158,11,.6)}
.wv-iconbtn[data-round=true]{border-radius:50%}
.wv-iconbtn:active{transform:scale(.95)}

/* ---- Badge ---- */
.wv-badge{display:inline-flex;align-items:center;gap:7px;height:22px;padding:0 9px 0 8px;border:1px solid var(--thread);border-radius:var(--radius-pill);font-family:var(--font-display);font-size:var(--text-xs);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--text-secondary);background:var(--silk);white-space:nowrap}
.wv-badge i{width:5px;height:5px;border-radius:50%;background:var(--steel)}
.wv-badge[data-tone=info]{color:var(--info);border-color:rgba(56,189,248,.3)}.wv-badge[data-tone=info] i{background:var(--info);box-shadow:var(--glow-web)}
.wv-badge[data-tone=success]{color:var(--success);border-color:rgba(132,204,22,.3)}.wv-badge[data-tone=success] i{background:var(--success);box-shadow:var(--glow-venom)}
.wv-badge[data-tone=warning]{color:var(--accent);border-color:rgba(245,158,11,.3)}.wv-badge[data-tone=warning] i{background:var(--accent);box-shadow:var(--glow-amber)}
.wv-badge[data-tone=danger]{color:var(--danger);border-color:rgba(244,63,94,.3)}.wv-badge[data-tone=danger] i{background:var(--danger);box-shadow:0 0 8px rgba(244,63,94,.6)}
.wv-badge[data-tone=red]{color:var(--red);border-color:var(--thread-red)}.wv-badge[data-tone=red] i{background:var(--red);box-shadow:var(--glow-red)}
.wv-badge[data-pulse=true] i{animation:wv-breathe 1.6s var(--ease-silk) infinite}

/* ---- Dialog ---- */
.wv-dialog-scrim{position:fixed;inset:0;background:rgba(11,13,16,.7);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:grid;place-items:center;z-index:100;animation:wv-fade var(--dur-base) var(--ease-silk);overflow:auto;padding:24px}
.wv-dialog{position:relative;width:min(560px,calc(100vw - 32px));background:var(--bg-surface);border:1px solid var(--thread-strong);clip-path:var(--clip-oct);animation:wv-rise var(--dur-base) var(--ease-silk);color:var(--text-primary)}
.wv-dialog-wrap{position:relative;filter:drop-shadow(0 30px 60px rgba(0,0,0,.7))}
.wv-dialog-wrap .wv-node{position:absolute;width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:var(--glow-amber);transform:translate(-50%,-50%);z-index:2}
.wv-dialog-head{padding:24px 28px 0;display:flex;align-items:start;justify-content:space-between;gap:16px}
.wv-dialog-eyebrow{font-family:var(--font-display);font-size:var(--text-xs);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--text-muted);margin:0 0 6px}
.wv-dialog-title{font-family:var(--font-display);font-weight:300;font-size:var(--text-xl);letter-spacing:var(--tracking-display);margin:0}
.wv-dialog-body{padding:16px 28px 24px;color:var(--text-secondary);font-size:var(--text-sm)}
.wv-dialog-foot{border-top:1px solid var(--thread);padding:16px 28px;display:flex;justify-content:flex-end;gap:10px}
.wv-dialog-close{border:0;background:none;color:var(--text-muted);cursor:pointer;padding:4px;display:grid;place-items:center}
.wv-dialog-close:hover{color:var(--text-primary)}
.wv-dialog-close svg{width:16px;height:16px}

/* ---- Tag ---- */
.wv-tag{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 6px 0 10px;border:1px solid var(--thread);border-radius:var(--radius-sm);background:var(--silk);font-size:var(--text-xs);font-family:var(--font-mono);color:var(--text-secondary);transition:border-color var(--dur-base)}
.wv-tag:hover{border-color:var(--thread-strong)}
.wv-tag[data-selected=true]{border-color:var(--accent);color:var(--accent)}
.wv-tag[data-no-remove=true]{padding-right:10px}

/* ---- Toast ---- */
.wv-toast{position:relative;display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:start;width:360px;max-width:100%;padding:14px 14px 14px 16px;background:var(--bg-elevated);border:1px solid var(--thread-strong);border-radius:var(--radius-md);box-shadow:var(--shadow-float);color:var(--text-primary);animation:wv-rise var(--dur-base) var(--ease-silk)}
.wv-toast::before{content:"";position:absolute;left:0;top:14px;bottom:14px;width:1px;background:var(--wv-tone)}
.wv-toast-dot{margin-top:5px;width:7px;height:7px;border-radius:50%;background:var(--wv-tone);box-shadow:0 0 10px var(--wv-tone)}
.wv-toast-title{font-family:var(--font-display);font-size:var(--text-sm);letter-spacing:var(--tracking-display);text-transform:uppercase;margin:0 0 2px}
.wv-toast-desc{font-size:var(--text-sm);color:var(--text-secondary);margin:0;word-break:break-word}
.wv-toast-close{border:0;background:none;color:var(--text-muted);cursor:pointer;padding:2px;display:grid;place-items:center}
.wv-toast-close:hover{color:var(--text-primary)}
.wv-toast-close svg{width:14px;height:14px}

/* ---- Checkbox / Radio ---- */
.wv-check{display:inline-flex;align-items:center;gap:10px;cursor:pointer;font-size:var(--text-sm);color:var(--text-primary);user-select:none}
.wv-check input{position:absolute;opacity:0;width:0;height:0}
.wv-check-box{position:relative;width:16px;height:16px;border:1px solid var(--thread-strong);background:var(--silk);display:grid;place-items:center;transition:all var(--dur-base) var(--ease-silk);flex:none}
.wv-check[data-kind=checkbox] .wv-check-box{border-radius:3px}
.wv-check[data-kind=radio] .wv-check-box{border-radius:50%}
.wv-check:hover .wv-check-box{border-color:var(--accent)}
.wv-check-box::after{content:"";width:6px;height:6px;border-radius:inherit;background:var(--accent);transform:scale(0);transition:transform var(--dur-base) var(--ease-silk)}
.wv-check[data-kind=checkbox] .wv-check-box::after{border-radius:1px}
.wv-check input:checked+.wv-check-box{border-color:var(--accent);box-shadow:0 0 10px -2px rgba(245,158,11,.6)}
.wv-check input:checked+.wv-check-box::after{transform:scale(1)}
.wv-check input:focus-visible+.wv-check-box{outline:1px solid var(--focus-ring);outline-offset:2px}
.wv-check small{color:var(--text-muted);display:block;font-size:var(--text-xs)}

/* ---- Input / Select ---- */
.wv-field{display:grid;gap:6px;font-family:var(--font-body);color:var(--text-primary);min-width:0}
.wv-field-label{font-family:var(--font-display);font-size:var(--text-xs);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--text-muted)}
.wv-field-hint{font-size:var(--text-xs);color:var(--text-muted)}
.wv-field[data-error=true] .wv-field-hint{color:var(--danger)}
.wv-field-box{position:relative;display:flex;align-items:center;gap:10px;height:var(--control-h-md);padding:0 12px;background:var(--silk);border:1px solid var(--thread);border-radius:var(--radius-sm);transition:border-color var(--dur-base) var(--ease-silk),box-shadow var(--dur-base) var(--ease-silk)}
.wv-field-box:hover{border-color:var(--thread-strong)}
.wv-field-box:focus-within{border-color:var(--info);box-shadow:0 0 0 1px rgba(56,189,248,.2),0 0 18px -6px rgba(56,189,248,.6)}
.wv-field[data-error=true] .wv-field-box{border-color:var(--danger)}
.wv-field-box>svg{width:15px;height:15px;color:var(--text-muted);flex:none}
.wv-field-box .wv-node{position:absolute;width:5px;height:5px;border-radius:50%;background:var(--info);box-shadow:var(--glow-web);opacity:0;transition:opacity var(--dur-base)}
.wv-field-box .wv-node.l{left:-3px;top:50%;margin-top:-2.5px}.wv-field-box .wv-node.r{right:-3px;top:50%;margin-top:-2.5px}
.wv-field-box:focus-within .wv-node{opacity:1}
.wv-field-box input:focus,.wv-field-box select:focus,.wv-field-box textarea:focus{outline:none;box-shadow:none}
.wv-field-box input,.wv-field-box select,.wv-field-box textarea{flex:1;min-width:0;background:none;border:0;outline:0;color:var(--text-primary);font:inherit;font-size:var(--text-sm);height:100%}
.wv-field-box input::placeholder,.wv-field-box textarea::placeholder{color:var(--text-muted)}
.wv-field-box select{appearance:none;-webkit-appearance:none;cursor:pointer;padding-right:8px}
.wv-field-box select option{background:var(--bg-elevated);color:var(--text-primary)}
.wv-field-box[data-area=true]{height:auto;padding:10px 12px}
.wv-field-box textarea{resize:vertical;min-height:72px;line-height:var(--leading-body)}
.wv-field-box input[type=file]{font-size:var(--text-xs);color:var(--text-secondary)}
.wv-field-box input::-webkit-calendar-picker-indicator{filter:invert(.7)}

/* ---- Switch ---- */
.wv-switch{display:inline-flex;align-items:center;gap:10px;cursor:pointer;font-size:var(--text-sm);color:var(--text-primary);user-select:none}
.wv-switch input{position:absolute;opacity:0;width:0;height:0}
.wv-switch-track{position:relative;width:34px;height:14px;flex:none}
.wv-switch-track::before{content:"";position:absolute;left:0;right:0;top:50%;height:1px;background:var(--thread-strong);transition:background var(--dur-base)}
.wv-switch-knob{position:absolute;top:50%;left:0;width:14px;height:14px;margin-top:-7px;border-radius:50%;border:1px solid var(--thread-strong);background:var(--bg-elevated);display:grid;place-items:center;transition:all var(--dur-base) var(--ease-silk)}
.wv-switch-knob::after{content:"";width:4px;height:4px;border-radius:50%;background:var(--node-idle);transition:all var(--dur-base)}
.wv-switch input:checked~.wv-switch-track::before{background:var(--accent)}
.wv-switch input:checked~.wv-switch-track .wv-switch-knob{left:20px;border-color:var(--accent);box-shadow:var(--glow-amber)}
.wv-switch input:checked~.wv-switch-track .wv-switch-knob::after{background:var(--accent)}

/* ---- OrbNav ---- */
.wv-orbnav{position:relative;display:inline-flex;align-items:center;gap:0;padding:6px 8px;background:var(--silk);backdrop-filter:blur(var(--blur-glass));-webkit-backdrop-filter:blur(var(--blur-glass));border:1px solid var(--thread);border-radius:var(--radius-pill);box-shadow:var(--shadow-float);max-width:100%;overflow-x:auto;scrollbar-width:none}
.wv-orbnav-thread{position:absolute;left:24px;right:24px;top:50%;height:1px;background:var(--thread-strong);pointer-events:none}
.wv-orbnav-hub{display:flex;align-items:center;gap:10px;padding:0 14px 0 6px;font-family:var(--font-display);font-weight:300;letter-spacing:var(--tracking-hero);text-transform:uppercase;font-size:var(--text-sm);color:var(--text-primary);position:relative;white-space:nowrap}
.wv-orbnav-hubdot{width:28px;height:28px;border-radius:50%;border:1px solid var(--accent);display:grid;place-items:center;position:relative;background:var(--bg-page)}
.wv-orbnav-hubdot::after{content:"";width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:var(--glow-amber)}
.wv-orbnav-item{position:relative;display:flex;align-items:center;gap:8px;height:36px;padding:0 14px;border:0;background:none;color:var(--text-secondary);font-family:var(--font-display);font-size:var(--text-sm);letter-spacing:var(--tracking-display);text-transform:uppercase;cursor:pointer;border-radius:var(--radius-pill);transition:color var(--dur-base) var(--ease-silk),background var(--dur-base) var(--ease-silk);white-space:nowrap}
.wv-orbnav-item svg{width:15px;height:15px}
.wv-orbnav-item:hover{color:var(--text-primary);background:var(--silk-2)}
.wv-orbnav-item .wv-orbnav-node{position:absolute;left:50%;bottom:-7px;width:5px;height:5px;border-radius:50%;background:transparent;transform:translateX(-50%);transition:all var(--dur-base) var(--ease-silk)}
.wv-orbnav-item[aria-current=page]{color:var(--text-primary);background:var(--bg-page)}
.wv-orbnav-item[aria-current=page] .wv-orbnav-node{background:var(--accent);box-shadow:var(--glow-amber);animation:wv-pulse var(--dur-pulse) infinite}

/* ---- Tabs ---- */
.wv-tabs{position:relative;display:flex;gap:var(--space-2);border-bottom:1px solid var(--thread);overflow-x:auto;scrollbar-width:none}
.wv-tab{position:relative;background:none;border:0;padding:10px 14px;color:var(--text-secondary);font-family:var(--font-display);font-size:var(--text-sm);letter-spacing:var(--tracking-display);text-transform:uppercase;cursor:pointer;transition:color var(--dur-base) var(--ease-silk);white-space:nowrap}
.wv-tab:hover{color:var(--text-primary)}
.wv-tab[aria-selected=true]{color:var(--text-primary)}
.wv-tab::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--accent);transform:scaleX(0);transition:transform var(--dur-base) var(--ease-silk)}
.wv-tab[aria-selected=true]::after{transform:scaleX(1)}
.wv-tab i{position:absolute;left:50%;bottom:-3.5px;width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:var(--glow-amber);transform:translateX(-50%) scale(0);transition:transform var(--dur-base) var(--ease-silk)}
.wv-tab[aria-selected=true] i{transform:translateX(-50%) scale(1)}
.wv-tab b{font-family:var(--font-mono);font-weight:400;font-size:var(--text-xs);color:var(--text-muted);margin-left:6px}

/* ---- ThreadProgress ---- */
.wv-progress{display:grid;gap:8px;font-family:var(--font-display)}
.wv-progress-head{display:flex;justify-content:space-between;font-size:var(--text-xs);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--text-muted)}
.wv-progress-head b{font-family:var(--font-mono);font-weight:400;color:var(--text-primary)}
.wv-progress-track{position:relative;height:1px;background:var(--thread-strong)}
.wv-progress-fill{position:absolute;left:0;top:0;height:100%;background:var(--accent);box-shadow:0 0 8px rgba(245,158,11,.6);transition:width var(--dur-slow) var(--ease-silk)}
.wv-progress-fill::after{content:"";position:absolute;right:-3px;top:-3px;width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:var(--glow-amber)}
.wv-progress[data-tone=info] .wv-progress-fill,.wv-progress[data-tone=info] .wv-progress-fill::after{background:var(--info);box-shadow:var(--glow-web)}
.wv-progress[data-tone=success] .wv-progress-fill,.wv-progress[data-tone=success] .wv-progress-fill::after{background:var(--success);box-shadow:var(--glow-venom)}
.wv-progress[data-tone=red] .wv-progress-fill,.wv-progress[data-tone=red] .wv-progress-fill::after{background:var(--red);box-shadow:var(--glow-red)}

/* ---- NodalCard ---- */
.wv-card{position:relative;background:var(--bg-surface);border:1px solid var(--thread);border-radius:var(--radius-md);color:var(--text-primary);overflow:visible;transition:border-color var(--dur-base) var(--ease-silk),box-shadow var(--dur-base) var(--ease-silk);min-width:0}
.wv-card[data-glass=true]{background:rgba(22,25,30,.72);backdrop-filter:blur(var(--blur-glass));-webkit-backdrop-filter:blur(var(--blur-glass))}
.wv-card[data-elevated=true]{box-shadow:var(--shadow-card)}
.wv-card:hover{border-color:var(--thread-strong)}
.wv-card[data-active=true]{border-color:rgba(245,158,11,.45);box-shadow:0 0 0 1px rgba(245,158,11,.08),0 0 32px -12px rgba(245,158,11,.45)}
.wv-card[data-active=red]{border-color:var(--thread-red);box-shadow:0 0 0 1px rgba(255,31,61,.08),0 0 32px -12px rgba(255,31,61,.5)}
.wv-card-pattern{position:absolute;inset:0;border-radius:inherit;overflow:hidden;pointer-events:none}
.wv-card-pattern svg{position:absolute;right:-4%;top:-8%;width:58%;height:auto;opacity:.6;mask-image:linear-gradient(200deg,#000 40%,transparent 95%);-webkit-mask-image:linear-gradient(200deg,#000 40%,transparent 95%)}
.wv-card-pattern path{stroke:var(--thread);fill:none;stroke-width:1;vector-effect:non-scaling-stroke}
.wv-card-pattern circle{fill:var(--steel);opacity:.5}
.wv-card-body{position:relative;padding:var(--space-6);min-width:0}
.wv-card[data-padding=sm] .wv-card-body{padding:var(--space-4)}
.wv-card[data-padding=none] .wv-card-body{padding:0}
.wv-card-eyebrow{font-family:var(--font-display);font-size:var(--text-xs);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--text-muted);margin:0 0 var(--space-2)}
.wv-card-title{font-family:var(--font-display);font-weight:300;font-size:var(--text-xl);letter-spacing:var(--tracking-display);line-height:var(--leading-tight);margin:0 0 var(--space-4);color:var(--text-primary);overflow-wrap:anywhere}
.wv-card-footer{position:relative;border-top:1px solid var(--thread);padding:var(--space-4) var(--space-6);display:flex;align-items:center;gap:var(--space-3);color:var(--text-secondary);font-size:var(--text-sm);flex-wrap:wrap}
.wv-node{position:absolute;width:var(--node-size);height:var(--node-size);border-radius:50%;background:var(--node-idle);transform:translate(-50%,-50%);transition:background var(--dur-base) var(--ease-silk),box-shadow var(--dur-base) var(--ease-silk);z-index:1}
.wv-card:hover .wv-node,.wv-card[data-active=true] .wv-node{background:var(--node);box-shadow:var(--glow-amber)}
.wv-card[data-active=true] .wv-node{animation:wv-pulse var(--dur-pulse) var(--ease-silk) infinite}
.wv-card[data-active=red] .wv-node,.wv-card[data-active=red]:hover .wv-node{background:var(--red);box-shadow:var(--glow-red);animation:wv-pulse-red var(--dur-pulse) var(--ease-silk) infinite}
a.wv-card{display:block;color:inherit}

/* ---- Console kit layouts (ui_kits/console) ---- */
.wvk-bg{position:fixed;inset:0;pointer-events:none;z-index:0}
.wvk-bg svg{position:absolute;right:-6%;top:-14%;width:70vw;min-width:760px;opacity:.75;mask-image:linear-gradient(215deg,#000 30%,transparent 85%);-webkit-mask-image:linear-gradient(215deg,#000 30%,transparent 85%)}
.wvk-bg path{stroke:var(--thread);fill:none;stroke-width:1}
.wvk-bg circle{fill:var(--steel);opacity:.5}.wvk-bg circle.on{fill:var(--amber);opacity:1;filter:drop-shadow(0 0 4px var(--amber))}
.wvk-bg circle.hot{fill:var(--red);opacity:1;filter:drop-shadow(0 0 5px var(--red))}
.wvk-shell{position:relative;z-index:1;max-width:1200px;margin:0 auto;padding:20px 32px 64px}
.wvk-top{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:40px;flex-wrap:wrap}
.wvk-top-right{display:flex;align-items:center;gap:10px;margin-left:auto}
.wvk-h1{font-family:var(--font-display);font-weight:200;font-size:44px;letter-spacing:var(--tracking-hero);text-transform:uppercase;line-height:1.1;margin:0;overflow-wrap:anywhere}
.wvk-sub{color:var(--text-secondary);font-size:15px;max-width:560px;margin:12px 0 0}
.wvk-eyebrow{font-family:var(--font-display);font-size:11px;letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--text-muted);margin:0 0 8px}
.wvk-grid{display:grid;gap:20px}
.wvk-stat{font-family:var(--font-display);font-weight:200;font-size:40px;letter-spacing:.04em;line-height:1;font-variant-numeric:tabular-nums}
.wvk-stat small{font-family:var(--font-mono);font-size:12px;color:var(--text-muted);letter-spacing:0;margin-left:8px}
.wvk-row{display:grid;grid-template-columns:minmax(0,2fr) 1fr 1fr 110px 90px;gap:16px;align-items:center;padding:14px 0;border-bottom:1px solid var(--thread);font-size:13px;color:var(--text-secondary)}
.wvk-row:last-child{border-bottom:0}
.wvk-row b{font-weight:500;color:var(--text-primary);display:block;overflow-wrap:anywhere}
.wvk-row.head{padding:0 0 10px;font-family:var(--font-display);font-size:11px;letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--text-muted)}
.wvk-mono{font-family:var(--font-mono);font-size:12px;font-variant-numeric:tabular-nums}
.wvk-toasts{position:fixed;right:24px;bottom:24px;display:grid;gap:12px;z-index:200;max-width:calc(100vw - 48px)}
.wvk-login{min-height:100vh;display:grid;place-items:center;position:relative;z-index:1;padding:24px}
.wvk-ent{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.wvk-filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:20px 0}
.wvk-kv{display:grid;grid-template-columns:auto 1fr;gap:6px 16px;font-size:13px;color:var(--text-secondary)}
.wvk-kv b{font-family:var(--font-mono);font-weight:400;color:var(--text-primary);text-align:right;overflow-wrap:anywhere}
@media (max-width:900px){.wvk-ent{grid-template-columns:1fr}.wvk-row{grid-template-columns:1fr 1fr}.wvk-h1{font-size:32px}.wvk-shell{padding:16px 16px 48px}}

/* ---- Ops: the red signature and this app's layouts ---- */
.ops-logo{flex:none;filter:drop-shadow(0 0 6px rgba(255,31,61,.45))}
.ops-hub .ops-logo{margin-left:4px}
.wv-orbnav-item[aria-current=page] .wv-orbnav-node{background:var(--red);box-shadow:var(--glow-red);animation:wv-pulse-red var(--dur-pulse) infinite}
.wv-btn[data-variant=ops]{background:var(--red);border-color:var(--red);color:#fff;font-weight:500}
.wv-btn[data-variant=ops]::before{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(115deg,transparent 35%,rgba(255,255,255,.45) 50%,transparent 65%);background-size:250% 100%;background-position:120% 0;opacity:0;transition:opacity var(--dur-base) var(--ease-silk)}
.wv-btn[data-variant=ops]:hover{box-shadow:var(--glow-red);background:var(--red-2);border-color:var(--red-2)}
.wv-btn[data-variant=ops]:hover::before{opacity:1;animation:wv-silk-sheen 1.1s var(--ease-silk) forwards}
.wv-btn[data-variant=ops] .wv-btn-thread{background:linear-gradient(90deg,var(--red),rgba(255,31,61,0))}
.wv-btn[data-variant=ops] .wv-btn-thread::after{background:var(--red);box-shadow:var(--glow-red)}
.ops-red{color:var(--red)}
.ops-mark{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--red);box-shadow:var(--glow-red);vertical-align:middle;margin-right:8px}
.ops-head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:32px;align-items:end;margin-bottom:32px}
.ops-actions{display:flex;gap:12px;flex-wrap:wrap;justify-content:flex-end}
.ops-stats{grid-template-columns:repeat(4,minmax(0,1fr))}
.ops-two{grid-template-columns:minmax(0,3fr) minmax(0,2fr);margin-top:20px}
.ops-rows{display:grid}
.ops-row{display:grid;gap:16px;align-items:center;padding:12px 0;border-bottom:1px solid var(--thread);font-size:13px;color:var(--text-secondary);min-width:0}
.ops-row:last-child{border-bottom:0}
.ops-row>*{min-width:0}
.ops-row b{font-weight:500;color:var(--text-primary);display:block;overflow-wrap:anywhere}
.ops-row small{display:block;color:var(--text-muted);font-size:var(--text-xs);overflow-wrap:anywhere}
.ops-row.head{padding:0 0 10px;font-family:var(--font-display);font-size:11px;letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--text-muted)}
.ops-row a.row-link{color:var(--text-primary)}
.ops-row a.row-link:hover{color:var(--accent-hover)}
.ops-row .wv-field-box{height:var(--control-h-sm)}
.ops-scroll{min-width:0}
.ops-form{display:grid;gap:14px}
.ops-form .two{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.ops-form .three{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px}
.ops-note{font-size:var(--text-sm);color:var(--text-secondary);margin:0}
.ops-secret{font-family:var(--font-mono);font-size:var(--text-md);color:var(--text-primary);background:var(--silk);border:1px solid var(--thread-red);border-radius:var(--radius-sm);padding:12px 14px;word-break:break-all;user-select:all}
.ops-ledger{display:grid}
.ops-ev{display:grid;grid-template-columns:150px 120px minmax(0,1fr);gap:14px;padding:10px 0;border-bottom:1px solid var(--thread);font-size:13px;color:var(--text-secondary);align-items:start}
.ops-ev:last-child{border-bottom:0}
.ops-ev .who{color:var(--text-primary);font-weight:500}
.ops-ev .type{font-family:var(--font-display);font-size:var(--text-xs);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--text-primary)}
.ops-ev .type[data-red=true]{color:var(--red)}
.ops-ev .data{font-family:var(--font-mono);font-size:11.5px;color:var(--text-muted);overflow-wrap:anywhere}
.ops-ev .surf{display:inline-block;margin-left:8px;font-family:var(--font-mono);font-size:10px;color:var(--text-muted);letter-spacing:0}
.ops-alert{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--thread);font-size:13px;color:var(--text-secondary)}
.ops-alert:last-child{border-bottom:0}
.ops-alert a{color:var(--text-primary)}
.ops-empty{color:var(--text-muted);font-size:var(--text-sm);padding:14px 0}
.ops-bars{display:grid;gap:10px}
.ops-chips{display:flex;gap:8px;flex-wrap:wrap}
.ops-me{font-family:var(--font-display);font-size:var(--text-xs);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--text-muted);white-space:nowrap}
.ops-me b{color:var(--text-primary);font-weight:400}
.ops-loading{position:fixed;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,var(--red),var(--amber));z-index:300;animation:wv-breathe 1s infinite}
.ops-pw{display:grid;gap:12px}
.ops-link{background:none;border:0;padding:0;color:var(--link);cursor:pointer;font:inherit;font-size:var(--text-sm)}
.ops-link:hover{color:var(--link-hover)}
@media (max-width:900px){
  .ops-scroll{overflow-x:auto}
  .ops-scroll .ops-rows{min-width:600px}
  .ops-head{grid-template-columns:1fr}
  .ops-actions{justify-content:flex-start}
  .ops-stats{grid-template-columns:1fr 1fr}
  .ops-two{grid-template-columns:1fr}
  .ops-form .two,.ops-form .three{grid-template-columns:1fr}
  .ops-ev{grid-template-columns:1fr}
  .wvk-top{margin-bottom:24px}
}
