:root{
  /* accent is re-applied at runtime from the vault (defaults to electric cyan) */
  --accent:#00d4ff; --accent-2:#5eead4;

  /* deep navy foundation */
  --bg:#050a18; --bg2:#080f22; --surface:#0e1731; --surface2:#152142;
  --panel-1:rgba(20,33,66,.72); --panel-2:rgba(10,17,36,.66);
  --glass:linear-gradient(165deg,var(--panel-1) 0%,var(--panel-2) 100%);
  --glass-soft:linear-gradient(165deg,rgba(26,42,82,.55) 0%,rgba(9,16,34,.5) 100%);

  --text:#eaf1ff; --muted:#93a4c8; --dimtext:#6f81a8;
  --border:rgba(138,178,255,.14); --border-strong:rgba(138,190,255,.28);

  --ok:#34e39b; --warn:#ffb84d; --bad:#ff5f7e; --info:#3fa9ff;

  --r:22px; --r-sm:14px; --r-xs:10px;
  --shadow:0 24px 60px rgba(2,7,22,.55);
  --shadow-sm:0 10px 26px rgba(2,7,22,.4);
  --glow:0 0 0 1px color-mix(in srgb,var(--accent) 26%,transparent), 0 16px 44px color-mix(in srgb,var(--accent) 22%,transparent);
  --ease:cubic-bezier(.22,.61,.36,1);

  --font-head:'Sora','Inter',system-ui,sans-serif;
  --font-body:'Inter',system-ui,-apple-system,sans-serif;
  --font-mono:'JetBrains Mono',ui-monospace,SFMono-Regular,monospace;
}
[data-theme="light"]{
  --bg:#eef3fc; --bg2:#e6ecf9; --surface:#ffffff; --surface2:#f1f5ff;
  --panel-1:rgba(255,255,255,.92); --panel-2:rgba(242,246,255,.86);
  --glass:linear-gradient(165deg,var(--panel-1) 0%,var(--panel-2) 100%);
  --glass-soft:linear-gradient(165deg,rgba(255,255,255,.85),rgba(238,244,255,.8));
  --text:#0b1429; --muted:#5a6a8c; --dimtext:#7c8aa8;
  --border:rgba(24,54,120,.13); --border-strong:rgba(24,80,180,.26);
  --shadow:0 18px 44px rgba(24,44,96,.12); --shadow-sm:0 8px 22px rgba(24,44,96,.10);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
/* hidden must always win over component display rules (command palette, skeletons, progress) */
[hidden]{display:none!important}
body{
  position:relative;
  background:
    radial-gradient(1200px 760px at 8% -12%,color-mix(in srgb,var(--accent) 20%,transparent),transparent 62%),
    radial-gradient(1000px 640px at 104% 4%,color-mix(in srgb,var(--accent-2) 16%,transparent),transparent 58%),
    radial-gradient(900px 700px at 50% 120%,rgba(64,120,255,.14),transparent 62%),
    linear-gradient(180deg,var(--bg) 0%,var(--bg2) 100%);
  background-attachment:fixed;
  color:var(--text); font-family:var(--font-body); font-size:15px; line-height:1.62;
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
}
h1,h2,h3,h4{font-family:var(--font-head);line-height:1.22;margin:0 0 .45em;letter-spacing:-.015em;color:var(--text)}
h1{font-size:clamp(1.55rem,2.4vw,2.15rem);font-weight:700}
h2{font-size:1.14rem;font-weight:600}
h3{font-size:.98rem;font-weight:600}
p{margin:0 0 1em}
a{color:inherit;text-decoration:none}
img{max-width:100%;height:auto;display:block}
.mono{font-family:var(--font-mono);font-size:.85em;letter-spacing:-.01em}
.muted{color:var(--muted)}
.dim{opacity:.5}
.ta-r{text-align:right}
.grad{background:linear-gradient(100deg,var(--accent),var(--accent-2));-webkit-background-clip:text;background-clip:text;color:transparent}
.skip-link{position:absolute;left:-999px;top:0;background:linear-gradient(100deg,var(--accent),var(--accent-2));color:#03101f;padding:10px 18px;border-radius:0 0 12px 0;font-weight:600;z-index:99}
.skip-link:focus{left:8px;top:8px}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:8px}
::selection{background:color-mix(in srgb,var(--accent) 34%,transparent);color:var(--text)}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--accent) 22%,rgba(120,160,255,.16));border-radius:99px;border:3px solid transparent;background-clip:content-box}
::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--accent) 42%,transparent);background-clip:content-box}

/* ---------- access gate (password protection) ---------- */
html.pvp-locked,html.pvp-locked body{overflow:hidden}
html.pvp-locked body>*:not(.pvp-gate){display:none!important}
.pvp-gate{position:fixed;inset:0;z-index:200;display:grid;place-items:center;padding:22px;
  background:
    radial-gradient(900px 620px at 12% -14%,color-mix(in srgb,var(--accent) 26%,transparent),transparent 62%),
    radial-gradient(760px 540px at 106% 6%,color-mix(in srgb,var(--accent-2) 20%,transparent),transparent 58%),
    linear-gradient(180deg,var(--bg),var(--bg2))}
.pvp-gate-card{width:min(420px,94vw);display:flex;flex-direction:column;gap:15px;text-align:center;
  background:var(--glass);border:1px solid var(--border-strong);
  border-radius:26px;padding:34px 28px;box-shadow:var(--shadow),var(--glow);backdrop-filter:blur(22px)}
.pvp-gate-mark{width:56px;height:56px;margin:0 auto;display:block;filter:drop-shadow(0 8px 22px color-mix(in srgb,var(--accent) 40%,transparent))}
.pvp-gate-card h1{font-size:1.24rem;margin:0}
.pvp-gate-sub{color:var(--muted);font-size:.85rem;margin:0;line-height:1.6}
.pvp-gate-field{text-align:left;display:flex;flex-direction:column;gap:7px}
.pvp-gate-field label{font-size:.78rem;color:var(--muted);font-weight:500;letter-spacing:.02em}
.pvp-gate-row{display:flex;gap:8px;align-items:stretch}
.pvp-gate-row .input{flex:1}
.pvp-gate-row .mini{flex:none;padding:0 14px}
.pvp-gate .switch{justify-content:center;font-size:.8rem;color:var(--muted)}
.pvp-gate-msg{min-height:18px;margin:0;font-size:.8rem;color:var(--bad)}
.pvp-gate-foot{margin:0;font-size:.7rem;color:var(--dimtext);line-height:1.55}

/* ---------- layout shell ---------- */
.shell{display:grid;grid-template-columns:266px 1fr;min-height:100vh}
.sidebar{position:sticky;top:0;height:100vh;overflow-y:auto;padding:22px 16px;
  background:linear-gradient(180deg,rgba(16,27,56,.82),rgba(7,13,30,.78));
  backdrop-filter:blur(22px);border-right:1px solid var(--border);
  display:flex;flex-direction:column;gap:18px;z-index:40}
[data-theme="light"] .sidebar{background:linear-gradient(180deg,rgba(255,255,255,.92),rgba(240,245,255,.88))}
.brand{display:flex;align-items:center;gap:11px;font-family:var(--font-head);font-weight:700;font-size:1.02rem;padding:2px 6px 10px}
.brand-mark svg{width:34px;height:34px;display:block;filter:drop-shadow(0 6px 16px color-mix(in srgb,var(--accent) 40%,transparent))}
.nav{display:flex;flex-direction:column;gap:3px}
.nav-label{font-size:.65rem;letter-spacing:.18em;text-transform:uppercase;color:var(--dimtext);margin:16px 0 5px 12px}
.nav-item{position:relative;display:flex;align-items:center;gap:11px;padding:10px 13px;border-radius:14px;color:var(--muted);
  font-weight:500;font-size:.88rem;border:1px solid transparent;transition:all .2s var(--ease)}
.nav-item .ico{width:18px;text-align:center;opacity:.75;transition:.2s var(--ease)}
.nav-item:hover{background:color-mix(in srgb,var(--surface2) 70%,transparent);color:var(--text);border-color:var(--border)}
.nav-item:hover .ico{opacity:1;color:var(--accent)}
.nav-item.active{
  background:linear-gradient(100deg,color-mix(in srgb,var(--accent) 22%,transparent),color-mix(in srgb,var(--accent-2) 10%,transparent));
  color:var(--text);border-color:color-mix(in srgb,var(--accent) 34%,transparent);
  box-shadow:0 10px 26px color-mix(in srgb,var(--accent) 18%,transparent)}
.nav-item.active .ico{opacity:1;color:var(--accent)}
.nav-item.active::before{content:"";position:absolute;left:-16px;top:50%;transform:translateY(-50%);width:3px;height:22px;
  border-radius:0 4px 4px 0;background:linear-gradient(180deg,var(--accent),var(--accent-2));box-shadow:0 0 14px var(--accent)}
.side-card{margin-top:auto;background:var(--glass-soft);border:1px solid var(--border);border-radius:var(--r-sm);padding:16px;backdrop-filter:blur(12px)}
.side-card-title{font-size:.78rem;color:var(--muted);margin:0 0 10px;letter-spacing:.02em}
.side-card-meta{font-size:.76rem;color:var(--muted);margin:10px 0 12px}
.main-col{display:flex;flex-direction:column;min-width:0}
.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:12px;padding:13px 24px;
  background:linear-gradient(180deg,color-mix(in srgb,var(--bg) 84%,transparent),color-mix(in srgb,var(--bg) 58%,transparent));
  backdrop-filter:blur(20px);border-bottom:1px solid var(--border)}
.cmd-trigger{flex:1;max-width:540px;display:flex;align-items:center;gap:8px;
  background:var(--glass-soft);border:1px solid var(--border);color:var(--muted);border-radius:14px;
  padding:10px 15px;font:inherit;font-size:.85rem;cursor:pointer;text-align:left;transition:.2s var(--ease)}
.cmd-trigger:hover{border-color:var(--border-strong);color:var(--text);box-shadow:var(--shadow-sm)}
.cmd-trigger span{flex:1}
kbd{background:color-mix(in srgb,var(--surface2) 80%,transparent);border:1px solid var(--border);border-radius:7px;
  padding:2px 7px;font-size:.68rem;font-family:var(--font-mono);color:var(--muted)}
.topbar-actions{margin-left:auto;display:flex;align-items:center;gap:10px}
.accent-picker{display:flex;gap:7px;padding:5px 8px;border-radius:999px;background:var(--glass-soft);border:1px solid var(--border)}
.dot{width:16px;height:16px;border-radius:50%;background:var(--d);border:2px solid transparent;cursor:pointer;padding:0;transition:.2s var(--ease)}
.dot:hover{border-color:rgba(255,255,255,.85);transform:scale(1.14);box-shadow:0 0 12px var(--d)}
.icon-btn{background:var(--glass-soft);border:1px solid var(--border);color:var(--text);width:38px;height:38px;
  border-radius:13px;cursor:pointer;font-size:1rem;transition:.2s var(--ease)}
.icon-btn:hover{border-color:color-mix(in srgb,var(--accent) 45%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 14%,transparent)}
.only-mobile{display:none}
.content{padding:24px;display:flex;flex-direction:column;gap:22px;max-width:1520px;width:100%}
.foot{padding:20px 24px;border-top:1px solid var(--border);display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;color:var(--dimtext);font-size:.8rem}
.foot nav{display:flex;gap:18px}
.foot a{transition:.2s var(--ease)}
.foot a:hover{color:var(--accent)}
.foot.plain{border:0;justify-content:center;margin-top:30px}

/* ---------- panels ---------- */
.panel{position:relative;background:var(--glass);border:1px solid var(--border);border-radius:var(--r);padding:22px 24px;
  box-shadow:var(--shadow);backdrop-filter:blur(18px);transition:border-color .22s var(--ease),box-shadow .22s var(--ease)}
.panel::before{content:"";position:absolute;inset:0 0 auto 0;height:1px;border-radius:var(--r) var(--r) 0 0;
  background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--accent) 45%,transparent),transparent);opacity:.6;pointer-events:none}
.panel:hover{border-color:var(--border-strong)}
.panel-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.panel-head h1,.panel-head h2,.panel-head h3{margin:0}
.panel-head.sm h3{font-size:.84rem;color:var(--muted);letter-spacing:.04em;text-transform:uppercase}
.panel-tools{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.glass{background:linear-gradient(150deg,color-mix(in srgb,var(--accent) 16%,var(--panel-1)) 0%,var(--panel-2) 62%);backdrop-filter:blur(24px)}
.lead{color:var(--muted);max-width:78ch;font-size:.94rem}
.grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:22px}
.grid-2-wide{display:grid;grid-template-columns:minmax(300px,420px) 1fr;gap:22px;align-items:start}
.grid-4{display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:18px}

/* ---------- hero ---------- */
.hero-panel{position:relative;overflow:hidden;display:grid;grid-template-columns:1.25fr .85fr;gap:28px;align-items:center;
  border:1px solid var(--border-strong);border-radius:28px;padding:34px;box-shadow:var(--shadow),0 0 60px color-mix(in srgb,var(--accent) 12%,transparent)}
.hero-panel::after{content:"";position:absolute;width:420px;height:420px;right:-120px;top:-160px;border-radius:50%;
  background:radial-gradient(circle,color-mix(in srgb,var(--accent) 38%,transparent),transparent 68%);filter:blur(40px);pointer-events:none}
.hero-copy{position:relative;z-index:1}
.pill{display:inline-block;font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);
  background:color-mix(in srgb,var(--accent) 14%,transparent);border:1px solid color-mix(in srgb,var(--accent) 32%,transparent);
  padding:6px 14px;border-radius:999px;margin-bottom:14px}
.hero-copy p{color:var(--muted);max-width:62ch}
.hero-cta{display:flex;gap:11px;flex-wrap:wrap;margin:18px 0 22px}
.hero-facts{list-style:none;display:flex;gap:28px;flex-wrap:wrap;padding:18px 0 0;margin:0;border-top:1px solid var(--border)}
.hero-facts b{display:block;font-family:var(--font-head);font-size:1.4rem;
  background:linear-gradient(100deg,var(--accent),var(--accent-2));-webkit-background-clip:text;background-clip:text;color:transparent}
.hero-facts span{font-size:.76rem;color:var(--muted)}
.hero-figure{margin:0;position:relative;z-index:1}
.hero-figure img{border-radius:20px;border:1px solid var(--border);box-shadow:var(--shadow)}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 20px;border-radius:999px;
  font-weight:600;font-size:.87rem;border:1px solid transparent;cursor:pointer;font-family:var(--font-body);
  transition:transform .18s var(--ease),box-shadow .22s var(--ease),border-color .22s var(--ease),filter .2s var(--ease)}
.btn-primary{background:linear-gradient(100deg,var(--accent),var(--accent-2));color:#03101f;
  box-shadow:0 10px 26px color-mix(in srgb,var(--accent) 32%,transparent)}
.btn-primary:hover{transform:translateY(-1px);box-shadow:0 14px 34px color-mix(in srgb,var(--accent) 44%,transparent)}
.btn-ghost{background:var(--glass-soft);border-color:var(--border);color:var(--text);backdrop-filter:blur(10px)}
.btn-ghost:hover{border-color:color-mix(in srgb,var(--accent) 52%,transparent);transform:translateY(-1px);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 12%,transparent)}
.btn-sm{padding:8px 15px;font-size:.8rem}
.btn.danger,.mini.danger{color:var(--bad)}
.btn.danger:hover{border-color:color-mix(in srgb,var(--bad) 50%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--bad) 12%,transparent)}
.btn:disabled{opacity:.4;cursor:not-allowed;transform:none;box-shadow:none}

/* ---------- inputs ---------- */
.input{width:100%;background:color-mix(in srgb,var(--bg2) 72%,transparent);border:1px solid var(--border);color:var(--text);
  border-radius:13px;padding:11px 14px;font:inherit;font-size:.88rem;transition:.2s var(--ease)}
.input::placeholder{color:var(--dimtext)}
.input:hover{border-color:var(--border-strong)}
.input:focus{border-color:color-mix(in srgb,var(--accent) 60%,transparent);outline:none;
  background:color-mix(in srgb,var(--bg2) 88%,transparent);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent),0 0 22px color-mix(in srgb,var(--accent) 14%,transparent)}
.input-sm{padding:8px 12px;font-size:.81rem;width:auto;min-width:152px}
select.input{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);
  background-position:calc(100% - 17px) 51%,calc(100% - 12px) 51%;background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:34px}
select.input option{background:var(--surface);color:var(--text)}
textarea.input{resize:vertical;line-height:1.6}
.form{display:flex;flex-direction:column;gap:15px}
.field{display:flex;flex-direction:column;gap:7px}
.field label{font-size:.78rem;color:var(--muted);font-weight:500;letter-spacing:.015em}
.field-title{font-size:.78rem;color:var(--muted);font-weight:600}
.row-2{display:grid;grid-template-columns:1fr 1fr;gap:15px}
.row-3{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}
.form-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:4px}
.hint{font-size:.77rem;color:var(--muted);line-height:1.6}
.hint a{color:var(--accent)}
.hint code,.callout code{font-family:var(--font-mono);font-size:.9em;color:var(--accent);
  background:color-mix(in srgb,var(--accent) 10%,transparent);border:1px solid color-mix(in srgb,var(--accent) 22%,transparent);
  border-radius:6px;padding:1px 6px}
input[type=range]{width:100%;accent-color:var(--accent);background:transparent}
.switch{display:inline-flex;align-items:center;gap:10px;font-size:.84rem;cursor:pointer}
.switch input{display:none}
.switch span{width:40px;height:22px;background:color-mix(in srgb,var(--surface2) 85%,transparent);border:1px solid var(--border);
  border-radius:999px;position:relative;transition:.22s var(--ease);flex:none}
.switch span::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:var(--muted);transition:.22s var(--ease)}
.switch input:checked + span{background:linear-gradient(100deg,color-mix(in srgb,var(--accent) 55%,transparent),color-mix(in srgb,var(--accent-2) 40%,transparent));
  border-color:color-mix(in srgb,var(--accent) 55%,transparent);box-shadow:0 0 14px color-mix(in srgb,var(--accent) 30%,transparent)}
.switch input:checked + span::after{transform:translateX(17px);background:#fff}
.switches{display:flex;flex-wrap:wrap;gap:15px;margin-top:13px}
.adv{border:1px solid var(--border);border-radius:var(--r-sm);padding:14px 16px;background:color-mix(in srgb,var(--surface2) 34%,transparent)}
.adv summary{cursor:pointer;font-weight:600;font-size:.87rem;color:var(--muted)}
.adv summary:hover{color:var(--text)}
.adv[open] summary{color:var(--text);margin-bottom:12px}
.key-wrap{display:flex;gap:8px}
.callout{margin-top:16px;background:linear-gradient(100deg,color-mix(in srgb,var(--accent) 12%,transparent),transparent);
  border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--r-sm);padding:14px 16px;font-size:.84rem;color:var(--muted)}
.callout b{color:var(--text)}

/* ---------- tables + lists ---------- */
.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--r-sm);background:color-mix(in srgb,var(--bg2) 40%,transparent)}
.table{width:100%;border-collapse:collapse;font-size:.86rem}
.table th{text-align:left;font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--dimtext);
  padding:12px 14px;border-bottom:1px solid var(--border);white-space:nowrap;
  background:color-mix(in srgb,var(--surface2) 45%,transparent)}
.table td{padding:13px 14px;border-bottom:1px solid color-mix(in srgb,var(--border) 70%,transparent);vertical-align:middle}
.table tr:last-child td{border-bottom:0}
.table tbody tr{transition:background .18s var(--ease)}
.table tr:hover td{background:color-mix(in srgb,var(--accent) 8%,transparent)}
.cellmain b{display:block;font-weight:600}
.cellmain small{color:var(--muted);font-size:.75rem}
.row-actions{display:inline-flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.mini{background:color-mix(in srgb,var(--surface2) 75%,transparent);border:1px solid var(--border);color:var(--text);
  border-radius:9px;padding:5px 10px;font-size:.75rem;cursor:pointer;transition:.18s var(--ease)}
.mini:hover{border-color:color-mix(in srgb,var(--accent) 50%,transparent);color:var(--accent);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 10%,transparent)}
.mini.danger:hover{border-color:color-mix(in srgb,var(--bad) 50%,transparent);color:var(--bad);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--bad) 10%,transparent)}
.badge{display:inline-block;font-size:.7rem;padding:4px 11px;border-radius:999px;
  background:color-mix(in srgb,var(--accent) 10%,transparent);border:1px solid color-mix(in srgb,var(--accent) 24%,transparent);
  color:color-mix(in srgb,var(--accent) 78%,var(--text));white-space:nowrap;font-weight:500}
.score{display:inline-block;min-width:40px;text-align:center;padding:4px 9px;border-radius:999px;font-weight:600;font-size:.76rem}
.score.good{background:color-mix(in srgb,var(--ok) 16%,transparent);color:var(--ok);border:1px solid color-mix(in srgb,var(--ok) 32%,transparent)}
.score.ok{background:color-mix(in srgb,var(--warn) 16%,transparent);color:var(--warn);border:1px solid color-mix(in srgb,var(--warn) 32%,transparent)}
.score.bad{background:color-mix(in srgb,var(--bad) 16%,transparent);color:var(--bad);border:1px solid color-mix(in srgb,var(--bad) 32%,transparent)}
.empty{text-align:center;padding:30px;color:var(--muted)}
.chip-cloud{display:flex;flex-wrap:wrap;gap:8px}
.chip{font-size:.77rem;padding:7px 14px;border-radius:999px;border:1px solid var(--border);
  background:color-mix(in srgb,var(--surface2) 60%,transparent);color:var(--muted);transition:.2s var(--ease)}
.chip:hover{color:var(--text);border-color:color-mix(in srgb,var(--accent) 45%,transparent)}
.chip:nth-child(3n){border-color:color-mix(in srgb,var(--accent) 34%,var(--border));color:color-mix(in srgb,var(--accent) 70%,var(--text))}
.log{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:2px;max-height:290px;overflow:auto}
.log li{display:flex;align-items:center;gap:11px;padding:9px 6px;border-bottom:1px solid color-mix(in srgb,var(--border) 65%,transparent);font-size:.83rem}
.log li:last-child{border-bottom:0}
.log time{margin-left:auto;color:var(--dimtext);font-size:.72rem;font-family:var(--font-mono)}
.dotmark{width:7px;height:7px;border-radius:50%;background:var(--accent);flex:none;box-shadow:0 0 10px var(--accent)}
.datalist{list-style:none;padding:0;margin:0}
.datalist li{display:flex;justify-content:space-between;gap:14px;padding:11px 0;border-bottom:1px solid color-mix(in srgb,var(--border) 70%,transparent);font-size:.86rem}
.datalist li:last-child{border-bottom:0}
.datalist span{color:var(--muted)}
.checklist{list-style:none;padding:0;margin:0 0 12px}
.checklist li{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 0;border-bottom:1px solid color-mix(in srgb,var(--border) 70%,transparent)}
.checklist li:last-child{border-bottom:0}
.meter{height:8px;border-radius:99px;background:color-mix(in srgb,var(--surface2) 80%,transparent);overflow:hidden;border:1px solid var(--border)}
.meter span{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-2));
  box-shadow:0 0 12px color-mix(in srgb,var(--accent) 45%,transparent);transition:width .4s var(--ease)}
.meter.sm{width:112px}

/* ---------- stat cards ---------- */
.stat-card{position:relative;overflow:hidden;background:var(--glass);border:1px solid var(--border);border-radius:var(--r-sm);
  padding:18px;backdrop-filter:blur(14px);box-shadow:var(--shadow-sm);transition:transform .22s var(--ease),border-color .22s var(--ease),box-shadow .22s var(--ease)}
.stat-card::after{content:"";position:absolute;inset:auto -40px -50px auto;width:140px;height:140px;border-radius:50%;
  background:radial-gradient(circle,color-mix(in srgb,var(--accent) 30%,transparent),transparent 70%);filter:blur(22px);pointer-events:none}
.stat-card:hover{transform:translateY(-3px);border-color:var(--border-strong);box-shadow:var(--shadow),0 0 30px color-mix(in srgb,var(--accent) 14%,transparent)}
.stat-ico{font-size:1.05rem;color:var(--accent);display:inline-grid;place-items:center;width:34px;height:34px;border-radius:11px;
  background:color-mix(in srgb,var(--accent) 14%,transparent);border:1px solid color-mix(in srgb,var(--accent) 26%,transparent)}
.stat-label{font-size:.74rem;color:var(--muted);margin:12px 0 3px;letter-spacing:.03em}
.stat-value{font-family:var(--font-head);font-size:1.5rem;font-weight:700;margin:0;letter-spacing:-.02em}
.stat-sub{font-size:.73rem;color:var(--dimtext);margin:3px 0 0}

/* ---------- generator ---------- */
.gen-layout{display:grid;grid-template-columns:minmax(320px,430px) 1fr;align-items:start}
.preview-panel{min-width:0}
.progress-wrap{margin-bottom:16px}
.progress{height:7px;background:color-mix(in srgb,var(--surface2) 85%,transparent);border-radius:99px;overflow:hidden;border:1px solid var(--border)}
.progress span{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--accent),var(--accent-2));
  box-shadow:0 0 16px color-mix(in srgb,var(--accent) 55%,transparent);transition:width .45s var(--ease)}
.progress-meta{display:flex;justify-content:space-between;font-size:.75rem;color:var(--muted);margin-top:8px}
.seg{display:inline-flex;background:color-mix(in srgb,var(--surface2) 60%,transparent);border:1px solid var(--border);border-radius:999px;overflow:hidden;padding:3px}
.seg-btn{background:none;border:0;color:var(--muted);padding:7px 14px;font:inherit;font-size:.79rem;cursor:pointer;border-radius:999px;transition:.2s var(--ease)}
.seg-btn:hover{color:var(--text)}
.seg-btn.active{background:linear-gradient(100deg,color-mix(in srgb,var(--accent) 34%,transparent),color-mix(in srgb,var(--accent-2) 22%,transparent));
  color:var(--text);box-shadow:0 4px 14px color-mix(in srgb,var(--accent) 22%,transparent)}
.preview-stage{position:relative;background:color-mix(in srgb,var(--bg2) 70%,transparent);border:1px solid var(--border);
  border-radius:var(--r);padding:16px;display:flex;justify-content:center;min-height:430px}
.device{width:100%;transition:.3s var(--ease);background:#fff;border-radius:16px;overflow:hidden;box-shadow:var(--shadow)}
.preview-stage[data-dev="tablet"] .device{max-width:768px}
.preview-stage[data-dev="mobile"] .device{max-width:390px}
.device iframe{width:100%;height:560px;border:0;display:block;background:#fff}
.skeleton-stage{position:absolute;inset:16px;background:color-mix(in srgb,var(--bg2) 92%,transparent);border-radius:16px;padding:18px;display:flex;flex-direction:column;gap:12px}
.sk{background:linear-gradient(90deg,color-mix(in srgb,var(--surface) 90%,transparent),color-mix(in srgb,var(--accent) 14%,var(--surface2)),color-mix(in srgb,var(--surface) 90%,transparent));
  background-size:200% 100%;animation:sh 1.4s infinite;border-radius:12px}
@keyframes sh{0%{background-position:200% 0}100%{background-position:-200% 0}}
.sk-hero{height:170px}.sk-row{height:16px}.sk-row.short{width:60%}
.sk-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.sk-card{height:110px}
.split-bottom{display:grid;grid-template-columns:minmax(200px,1fr) 1.4fr;gap:16px;margin-top:18px}
.filelist{list-style:none;margin:0;padding:0;max-height:236px;overflow:auto;border:1px solid var(--border);border-radius:var(--r-sm);
  background:color-mix(in srgb,var(--bg2) 45%,transparent)}
.filelist li{display:flex;align-items:center;gap:9px;padding:8px 11px;border-bottom:1px solid color-mix(in srgb,var(--border) 60%,transparent);font-size:.78rem;cursor:pointer;transition:.16s var(--ease)}
.filelist li:last-child{border-bottom:0}
.filelist li:hover{background:color-mix(in srgb,var(--accent) 9%,transparent)}
.ftype{font-family:var(--font-mono);font-size:.6rem;text-transform:uppercase;padding:3px 7px;border-radius:6px;
  background:color-mix(in srgb,var(--surface2) 80%,transparent);color:var(--muted);border:1px solid var(--border)}
.ftype.html{color:#ff9a6b}.ftype.css{color:var(--accent)}.ftype.js{color:var(--warn)}.ftype.svg{color:var(--ok)}
.ftype.xml,.ftype.txt,.ftype.json,.ftype.md,.ftype.webmanifest{color:var(--muted)}
.fname{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fsize{color:var(--dimtext);font-size:.71rem}
.console{background:linear-gradient(180deg,rgba(4,10,24,.95),rgba(6,14,30,.92));border:1px solid var(--border);
  border-radius:var(--r-sm);padding:14px;font-family:var(--font-mono);font-size:.73rem;color:#7ef0d0;
  max-height:236px;overflow:auto;white-space:pre-wrap;margin:0}
[data-theme="light"] .console{background:linear-gradient(180deg,#0a1224,#0d1730);color:#8ff2d3}
.identity{margin-top:18px;border:1px solid var(--border);border-radius:var(--r);padding:18px;background:var(--glass-soft);backdrop-filter:blur(12px)}
.identity h3{font-size:.9rem;display:flex;align-items:center;gap:10px}
.idgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(155px,1fr));gap:14px;font-size:.81rem}
.idgrid .k{display:block;font-size:.66rem;text-transform:uppercase;letter-spacing:.12em;color:var(--dimtext);margin-bottom:5px}
.idgrid p{margin:0}
.swatches{display:flex;gap:5px}
.swatches i{width:22px;height:22px;border-radius:8px;border:1px solid var(--border)}

/* ---------- bulk + templates ---------- */
.bulk-grid,.tpl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(245px,1fr));gap:18px}
.bulk-card,.tpl{background:var(--glass);border:1px solid var(--border);border-radius:var(--r-sm);overflow:hidden;
  backdrop-filter:blur(12px);box-shadow:var(--shadow-sm);transition:transform .22s var(--ease),border-color .22s var(--ease),box-shadow .22s var(--ease)}
.bulk-card:hover,.tpl:hover{transform:translateY(-4px);border-color:color-mix(in srgb,var(--accent) 42%,transparent);
  box-shadow:var(--shadow),0 0 34px color-mix(in srgb,var(--accent) 16%,transparent)}
.bulk-thumb,.tpl-thumb{height:142px;padding:10px;display:flex;flex-direction:column;gap:7px}
.tbar,.t-nav{height:14px;border-radius:6px;display:flex;align-items:center;gap:4px;padding:0 5px}
.t-nav i{width:12px;height:6px;border-radius:2px}
.t-nav b{width:20px;height:4px;border-radius:2px;display:block}
.thero,.t-hero{height:52px;border-radius:10px}
.tline{height:6px;border-radius:3px;opacity:.5}
.tline.short{width:60%}
.tcards,.t-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;flex:1}
.tcards i,.t-cards i{border-radius:7px;display:block}
.bulk-body,.tpl-body{padding:14px;display:flex;flex-direction:column;gap:7px}
.bulk-body small,.tpl-body small{color:var(--muted);font-size:.73rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bulk-body p{margin:0;font-size:.79rem}
.tags{display:flex;gap:6px;flex-wrap:wrap}

/* bulk domain sources: pattern / manual list / file upload */
.src-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:6px 0 12px}
.dropzone{border:1px dashed color-mix(in srgb,var(--accent) 26%,var(--border));border-radius:var(--r-sm);padding:16px;
  background:color-mix(in srgb,var(--surface2) 34%,transparent);transition:.2s var(--ease)}
.dropzone.drag{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 16%,transparent)}
.dropzone .hint{margin:0}
.upload-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:6px}
.upload-row .hint{flex:1;min-width:220px}
.file-pill{display:inline-flex;align-items:center;gap:6px;font-size:.74rem;color:var(--muted);
  background:color-mix(in srgb,var(--surface2) 70%,transparent);border:1px solid var(--border);border-radius:999px;padding:5px 12px}

/* add domains one after another */
.domain-adder{display:flex;flex-direction:column;gap:9px;margin-bottom:13px}
.domain-adder > label{font-size:.78rem;color:var(--muted);font-weight:600}
.adder-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.adder-row .input{flex:1;min-width:190px}
.adder-row .btn{flex:none;white-space:nowrap}
.domain-chips{list-style:none;margin:2px 0 0;padding:0;display:flex;flex-direction:column;gap:7px;max-height:210px;overflow:auto}
.domain-chips li.muted{padding:4px 2px}
.domain-chip{display:flex;align-items:center;gap:9px;background:color-mix(in srgb,var(--surface2) 70%,transparent);
  border:1px solid var(--border);border-radius:999px;padding:5px 9px 5px 5px;font-size:.79rem;animation:slide .22s var(--ease)}
.domain-chip.dup{border-color:color-mix(in srgb,var(--warn) 50%,transparent);background:color-mix(in srgb,var(--warn) 12%,var(--surface2))}
.dc-n{flex:none;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:.67rem;font-weight:700;
  color:#03101f;background:linear-gradient(100deg,var(--accent),var(--accent-2))}
.dc-name{font-weight:600;max-width:46%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dc-topic{flex:1;min-width:0;color:var(--muted);font-size:.72rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dc-x{flex:none;margin-left:auto;width:22px;height:22px;border:0;border-radius:50%;background:none;color:var(--muted);
  font-size:.76rem;cursor:pointer;line-height:1;transition:.18s var(--ease)}
.dc-x:hover{background:color-mix(in srgb,var(--bad) 22%,transparent);color:var(--bad)}
#bulkList{margin-bottom:12px}
#bulkList label{display:block;margin:10px 0 6px;font-size:.78rem;color:var(--muted)}

/* ---------- providers ---------- */
.provider-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(195px,1fr));gap:14px;margin-top:16px}
.prov{display:flex;flex-direction:column;gap:6px;align-items:flex-start;background:var(--glass-soft);border:1px solid var(--border);
  border-radius:var(--r-sm);padding:16px;cursor:pointer;text-align:left;color:var(--text);font:inherit;
  backdrop-filter:blur(10px);transition:.22s var(--ease)}
.prov:hover{border-color:var(--border-strong);transform:translateY(-2px)}
.prov.sel{border-color:color-mix(in srgb,var(--accent) 55%,transparent);
  background:linear-gradient(150deg,color-mix(in srgb,var(--accent) 15%,transparent),var(--panel-2));
  box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 14%,transparent),0 14px 32px color-mix(in srgb,var(--accent) 16%,transparent)}
.prov-ico{width:36px;height:36px;border-radius:12px;background:color-mix(in srgb,var(--pc) 20%,transparent);
  border:1px solid color-mix(in srgb,var(--pc) 34%,transparent);display:grid;place-items:center;font-size:1rem;color:var(--pc)}
.prov-name{font-weight:600;font-size:.89rem}
.prov-state{font-size:.71rem;color:var(--dimtext);display:inline-flex;align-items:center;gap:6px}
.prov-state.on{color:var(--ok)}
.prov-state.on::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--ok);box-shadow:0 0 10px var(--ok)}
.prov-model{font-size:.67rem;color:var(--dimtext);overflow:hidden;text-overflow:ellipsis;max-width:100%;white-space:nowrap}

/* ---------- prompts ---------- */
.prompt-list{list-style:none;padding:0;margin:15px 0 0;display:flex;flex-direction:column;gap:9px;max-height:520px;overflow:auto}
.prompt-list li{display:flex;gap:10px;align-items:flex-start;justify-content:space-between;
  background:color-mix(in srgb,var(--surface2) 52%,transparent);border:1px solid var(--border);border-radius:var(--r-sm);
  padding:13px 15px;transition:.2s var(--ease)}
.prompt-list li:hover{border-color:var(--border-strong);background:color-mix(in srgb,var(--accent) 8%,var(--surface2))}
.prompt-list b{display:block;margin-bottom:5px}
.prompt-list p{margin:6px 0 0;font-size:.77rem}

/* ---------- checker ---------- */
.score-row{display:flex;gap:28px;align-items:center;flex-wrap:wrap;margin-top:12px}
.ring{width:134px;height:134px;border-radius:50%;display:grid;place-items:center;flex:none;position:relative;
  background:conic-gradient(var(--accent) calc(var(--v)*1%),color-mix(in srgb,var(--surface2) 90%,transparent) 0);
  box-shadow:0 0 40px color-mix(in srgb,var(--accent) 20%,transparent)}
.ring::after{content:"";position:absolute;inset:10px;border-radius:50%;background:linear-gradient(160deg,var(--panel-1),var(--panel-2));border:1px solid var(--border)}
.ring span,.ring small{position:relative;z-index:1}
.ring span{font-family:var(--font-head);font-size:2rem;font-weight:700}
.ring small{color:var(--muted);font-size:.66rem;text-transform:uppercase;letter-spacing:.14em}
.score-list{list-style:none;padding:0;margin:0;flex:1;min-width:280px;display:flex;flex-direction:column;gap:10px}
.score-list li{display:grid;grid-template-columns:132px 1fr 36px;gap:12px;align-items:center;font-size:.82rem;color:var(--muted)}
.score-list b{color:var(--text);text-align:right}
.checks{list-style:none;padding:0;margin:0;max-height:430px;overflow:auto}
.checks li{display:flex;gap:11px;padding:12px 0;border-bottom:1px solid color-mix(in srgb,var(--border) 65%,transparent)}
.checks li:last-child{border-bottom:0}
.checks .mark{width:24px;height:24px;border-radius:9px;display:grid;place-items:center;font-size:.74rem;flex:none}
.checks .pass .mark{background:color-mix(in srgb,var(--ok) 18%,transparent);color:var(--ok);border:1px solid color-mix(in srgb,var(--ok) 32%,transparent)}
.checks .warn .mark{background:color-mix(in srgb,var(--warn) 18%,transparent);color:var(--warn);border:1px solid color-mix(in srgb,var(--warn) 32%,transparent)}
.checks .fail .mark{background:color-mix(in srgb,var(--bad) 18%,transparent);color:var(--bad);border:1px solid color-mix(in srgb,var(--bad) 32%,transparent)}
.checks p{margin:3px 0 0;font-size:.77rem}

/* ---------- command palette + toasts ---------- */
.cmdk{position:fixed;inset:0;background:rgba(3,7,18,.66);backdrop-filter:blur(8px);z-index:80;
  display:flex;align-items:flex-start;justify-content:center;padding-top:12vh}
.cmdk[hidden]{display:none!important}
.cmdk-box{width:min(640px,92vw);background:var(--glass);border:1px solid var(--border-strong);border-radius:22px;
  box-shadow:var(--shadow),0 0 60px color-mix(in srgb,var(--accent) 14%,transparent);overflow:hidden;
  backdrop-filter:blur(24px);animation:cmdkIn .18s var(--ease)}
@keyframes cmdkIn{from{transform:translateY(-10px) scale(.985);opacity:0}}
.cmdk-input{width:100%;background:transparent;border:0;border-bottom:1px solid var(--border);color:var(--text);
  padding:18px 22px;font:inherit;font-size:1rem}
.cmdk-input::placeholder{color:var(--dimtext)}
.cmdk-input:focus{outline:none}
.cmdk-list{list-style:none;margin:0;padding:9px;max-height:330px;overflow:auto}
.cmdk-list li{padding:11px 14px;border-radius:12px;cursor:pointer;display:flex;gap:10px;align-items:center;font-size:.87rem;
  color:var(--muted);transition:.15s var(--ease)}
.cmdk-list li.sel,.cmdk-list li:hover{background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--text)}
.cmdk-list small{margin-left:auto;color:var(--dimtext);font-size:.71rem;font-family:var(--font-mono)}
.cmdk-foot{padding:10px 18px;border-top:1px solid var(--border);color:var(--dimtext);font-size:.71rem;display:flex;gap:6px;align-items:center}
.toasts{position:fixed;right:20px;bottom:20px;display:flex;flex-direction:column;gap:10px;z-index:90}
.toast{background:var(--glass);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:14px;
  padding:12px 16px;box-shadow:var(--shadow);font-size:.85rem;backdrop-filter:blur(18px);
  transition:opacity .25s var(--ease),transform .25s var(--ease);animation:slide .25s var(--ease)}
.toast.ok{border-left-color:var(--ok)}
.toast.warn{border-left-color:var(--warn)}
@keyframes slide{from{transform:translateX(22px);opacity:0}}

/* ---------- 404 ---------- */
.center-page{display:grid;place-items:center;min-height:100vh;padding:24px;text-align:center}
.notfound{max-width:580px;background:var(--glass);border:1px solid var(--border);border-radius:28px;padding:40px 34px;
  box-shadow:var(--shadow),0 0 60px color-mix(in srgb,var(--accent) 12%,transparent);backdrop-filter:blur(20px)}
.notfound img{margin:0 auto 20px}
.notfound .hero-cta{justify-content:center}

/* ---------- responsive ---------- */
@media(max-width:1150px){
  .gen-layout{grid-template-columns:1fr}
  .grid-2-wide{grid-template-columns:1fr}
  .hero-panel{grid-template-columns:1fr}
  .hero-figure{order:-1}
}
@media(max-width:900px){
  .shell{grid-template-columns:1fr}
  .sidebar{position:fixed;left:-290px;width:266px;transition:left .28s var(--ease);box-shadow:var(--shadow)}
  .sidebar.open{left:0}
  .only-mobile{display:inline-flex;align-items:center;justify-content:center}
  .split-bottom{grid-template-columns:1fr}
  .row-3{grid-template-columns:1fr 1fr}
  .panel{padding:20px}
}
@media(max-width:560px){
  .row-2,.row-3{grid-template-columns:1fr}
  .content{padding:14px;gap:16px}
  .topbar{padding:10px 14px}
  .accent-picker{display:none}
  .device iframe{height:440px}
  .hero-panel{padding:24px 20px;border-radius:22px}
  .hero-facts{gap:18px}
  .upload-row .btn{flex:1}
  .adder-row .btn{flex:1}
  .dc-topic{display:none}
  .dc-name{max-width:100%}
  .pvp-gate-card{padding:26px 20px}
  .score-list li{grid-template-columns:100px 1fr 32px}
  .toasts{left:14px;right:14px;bottom:14px}
}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}