/* PyNest UI — ink navy + electric indigo, lime signal. System fonts, zero external requests. */
:root{
  --bg:#f5f6fb;--card:#fff;--tx:#0e1330;--mu:#626a89;--bd:#e3e6f2;--soft:#eef0fa;
  --ink:#0b1020;--ink2:#121935;--inktx:#c9d0ee;
  --pr:#4f5bff;--pr2:#3a44d6;--prs:#e8eaff;
  --lime:#b8f23d;--limetx:#27400a;
  --ok:#12804a;--oks:#dcf5e6;--er:#c2362b;--ers:#fde6e3;--wa:#a8650a;--was:#fff1d6;
  --r:14px;--sh:0 1px 2px rgba(11,16,32,.05),0 8px 24px rgba(11,16,32,.06);
}
@media(prefers-color-scheme:dark){:root{--bg:#0a0e1e;--card:#111733;--tx:#e8ebfb;--mu:#98a1c6;--bd:#222a50;--soft:#171e3f;--prs:#1d2352;--oks:#10392a;--ers:#401c19;--was:#3a2a0c;--sh:none;--pr:#7a85ff;--pr2:#939cff}}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--tx);font:15px/1.6 ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;-webkit-font-smoothing:antialiased}
a{color:var(--pr);text-decoration:none}a:hover{text-decoration:underline}
h1,h2,h3{line-height:1.15;margin:0 0 .5em;letter-spacing:-.02em}
h1{font-size:clamp(26px,4vw,32px);font-weight:760}h2{font-size:19px;font-weight:700}h3{font-size:16px;font-weight:700}
p{margin:.4em 0 .9em}
code,.mono{font:600 13px ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
code{background:var(--soft);border:1px solid var(--bd);padding:2px 7px;border-radius:7px}
.muted{color:var(--mu)}.small{font-size:13px}.right{text-align:right}.nowrap{white-space:nowrap}
:focus-visible{outline:3px solid var(--lime);outline-offset:2px;border-radius:6px}
.ic{width:18px;height:18px;flex:none;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;vertical-align:-3px}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 16px;border-radius:11px;border:1px solid var(--bd);background:var(--card);color:var(--tx);font:600 14px/1.2 inherit;cursor:pointer;text-decoration:none!important;min-height:42px;transition:transform .08s,background .15s}
.btn:hover{background:var(--soft)}.btn:active{transform:translateY(1px)}
.btn.pr{background:var(--pr);border-color:var(--pr);color:#fff}.btn.pr:hover{background:var(--pr2)}
.btn.lime{background:var(--lime);border-color:var(--lime);color:var(--ink)}.btn.lime:hover{filter:brightness(.95)}
.btn.ghost-d{background:transparent;border-color:rgba(255,255,255,.22);color:#fff}.btn.ghost-d:hover{background:rgba(255,255,255,.1)}
.btn.danger{color:var(--er);border-color:var(--er)}.btn.danger:hover{background:var(--ers)}
.btn.sm{padding:7px 12px;min-height:36px;font-size:13px}.btn.lg{padding:14px 24px;font-size:16px;min-height:50px}.btn.block{width:100%}
.btn[disabled]{opacity:.45;pointer-events:none}

/* forms */
label{display:block;font-weight:600;font-size:13.5px;margin:0 0 6px}
input,select,textarea{width:100%;padding:11px 13px;border:1px solid var(--bd);border-radius:11px;background:var(--card);color:var(--tx);font:inherit;min-height:44px}
input:focus,select:focus,textarea:focus{outline:3px solid var(--prs);border-color:var(--pr)}
textarea{min-height:120px;resize:vertical}
.field{margin-bottom:16px}.hint{font-size:12.5px;color:var(--mu);margin-top:5px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.err{background:var(--ers);color:var(--er);padding:10px 14px;border-radius:11px;margin-bottom:16px;font-weight:550;font-size:14px}

/* cards / badges / tables */
.card{background:var(--card);border:1px solid var(--bd);border-radius:var(--r);box-shadow:var(--sh);padding:22px}
.card h2{margin-top:0}
.badge{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;font-weight:650;padding:3px 10px;border-radius:99px;background:var(--soft);color:var(--mu)}
.badge i{width:7px;height:7px;border-radius:50%;background:currentColor}
.badge.ok{background:var(--oks);color:var(--ok)}.badge.er{background:var(--ers);color:var(--er)}.badge.wa{background:var(--was);color:var(--wa)}
.badge.wa i{animation:pulse 1.2s infinite}
@keyframes pulse{50%{opacity:.3}}
.tbl{width:100%;border-collapse:collapse;font-size:14px}
.tbl th{text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--mu);padding:10px 12px;border-bottom:1px solid var(--bd)}
.tbl td{padding:13px 12px;border-bottom:1px solid var(--bd);vertical-align:middle}
.tbl tr:last-child td{border-bottom:0}
.scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.toast{position:fixed;top:16px;left:50%;transform:translateX(-50%);z-index:100;padding:12px 18px;border-radius:12px;font-weight:600;box-shadow:0 10px 30px rgba(0,0,0,.25);background:var(--ink);color:#fff;max-width:92vw;animation:tin .3s,tout .4s 4.2s forwards}
.toast.ok{background:var(--ok)}.toast.er{background:var(--er)}
@keyframes tin{from{opacity:0;transform:translate(-50%,-12px)}}@keyframes tout{to{opacity:0;visibility:hidden}}

/* stats */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:22px}
.stat{background:var(--card);border:1px solid var(--bd);border-radius:var(--r);padding:18px;box-shadow:var(--sh)}
.stat span{font-size:13px;color:var(--mu);font-weight:600;display:flex;align-items:center;gap:8px}
.stat b{display:block;font-size:30px;letter-spacing:-.03em;margin-top:6px;font-weight:760}
.bar{height:8px;border-radius:9px;background:var(--soft);overflow:hidden;margin-top:10px}.bar i{display:block;height:100%;background:var(--pr);border-radius:9px}
.bar.hot i{background:var(--er)}

/* app shell */
.shell{display:grid;grid-template-columns:260px minmax(0,1fr);min-height:100vh}
.side{background:linear-gradient(180deg,var(--ink),var(--ink2));color:var(--inktx);padding:18px 14px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;height:100dvh;overflow:hidden}
.logo{display:flex;align-items:center;gap:10px;font-weight:800;font-size:19px;color:#fff!important;letter-spacing:-.02em;text-decoration:none!important}
.mark{width:30px;height:30px;border-radius:9px;background:var(--lime);display:grid;place-items:center;color:var(--ink)}.mark .ic{width:17px;height:17px;stroke-width:2.4}
.side-head{display:flex;align-items:center;justify-content:space-between;padding:4px 8px 16px}.side-x{display:none}
.tag-admin{margin:0 8px 10px;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--lime)}
.side nav{display:flex;flex-direction:column;gap:2px;flex:1;min-height:0;overflow-y:auto}
.side nav a{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:11px;color:var(--inktx);font-weight:560;font-size:14.5px;text-decoration:none}
.side nav a:hover{background:rgba(255,255,255,.07)}.side nav a.on{background:var(--lime);color:var(--ink)}
.sep{font-size:12px;font-weight:650;color:#7f8cc0;margin:18px 12px 6px}
.who{border-top:1px solid rgba(255,255,255,.12);padding:12px 6px 2px;font-size:13px;color:#a7b0dc;display:grid;gap:10px}
.who-id{display:grid;padding:0 6px;min-width:0}.who-id b{color:#fff}.who-id span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.who .btn{color:#fff;background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.2)}
.main{min-width:0}.top,.scrim{display:none}
.wrap{max-width:1100px;margin:0 auto;padding:28px 22px 70px}
.pagehead{display:flex;justify-content:space-between;align-items:flex-end;gap:14px;flex-wrap:wrap;margin-bottom:20px}.pagehead p{margin:0;color:var(--mu)}
.section-t{display:flex;justify-content:space-between;align-items:center;margin:28px 0 12px}.section-t h2{margin:0}

/* bot cards + console */
.botgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:14px}
.botc{display:block;background:var(--card);border:1px solid var(--bd);border-radius:var(--r);padding:18px;color:inherit;box-shadow:var(--sh);text-decoration:none!important;transition:border-color .15s,transform .15s}
.botc:hover{border-color:var(--pr);transform:translateY(-2px)}
.botc .row{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.botc h3{margin:0 0 3px}.botc .meta{font-size:13px;color:var(--mu)}
.mini{display:flex;gap:18px;margin-top:14px;font-size:13px;color:var(--mu)}.mini b{color:var(--tx)}
.controls{display:flex;gap:10px;flex-wrap:wrap}.controls form{margin:0}
.console{background:#070a16;color:#c8d1f5;border-radius:12px;padding:16px;font:12.5px/1.7 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;max-height:340px;overflow:auto;white-space:pre-wrap;word-break:break-word}
.console .t{color:#5b6592}.console .WARN{color:#f3c35e}.console .ERROR{color:#ff7b72}.console .INFO b{color:var(--lime);font-weight:600}
.steps{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0 0}.steps span{font-size:12px;padding:3px 10px;border-radius:99px;background:var(--soft);color:var(--mu);font-weight:600}.steps span.on{background:var(--prs);color:var(--pr)}.steps span.done{background:var(--oks);color:var(--ok)}
.cols{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:18px}
.kv{display:grid;grid-template-columns:auto 1fr;gap:9px 16px;font-size:14px}.kv dt{color:var(--mu)}.kv dd{margin:0;font-weight:600;text-align:right}
.empty{text-align:center;padding:44px 20px;border:2px dashed var(--bd);border-radius:var(--r);color:var(--mu)}
.empty .btn{margin-top:10px}

/* public */
.shell-public{background:var(--ink);color:#e8ebfb}
.pw{max-width:1140px;margin:0 auto;padding:0 22px}
.pnav{position:sticky;top:0;z-index:40;background:rgba(11,16,32,.85);backdrop-filter:blur(12px);border-bottom:1px solid rgba(255,255,255,.08)}
.pnav .pw{display:flex;align-items:center;justify-content:space-between;gap:16px;height:66px}
.pnav nav{display:flex;gap:26px}.pnav nav a{color:#c4cbe9;font-weight:560;font-size:14.5px}.pnav nav a:hover{color:#fff;text-decoration:none}
.pn-r{display:flex;gap:10px;align-items:center}.pn-t{display:none;background:rgba(255,255,255,.1);border:0;color:#fff;width:42px;height:42px;border-radius:11px;cursor:pointer}
.hero{position:relative;overflow:hidden;padding:84px 0 70px}
.hero:before{content:"";position:absolute;inset:-20% -10% auto auto;width:700px;height:700px;background:radial-gradient(circle,rgba(79,91,255,.35),transparent 65%);pointer-events:none}
.hero .pw{display:grid;grid-template-columns:1.05fr .95fr;gap:48px;align-items:center;position:relative}
.eyebrow{display:inline-flex;gap:8px;align-items:center;background:rgba(184,242,61,.12);color:var(--lime);border:1px solid rgba(184,242,61,.3);padding:5px 13px;border-radius:99px;font-size:13px;font-weight:650;margin-bottom:20px}
.hero h1{font-size:clamp(36px,5.6vw,60px);color:#fff;line-height:1.04;letter-spacing:-.035em;font-weight:800}
.hero h1 em{font-style:normal;color:var(--lime)}
.hero p.lead{font-size:18px;color:#aab3d9;max-width:520px;margin:18px 0 28px}
.cta{display:flex;gap:12px;flex-wrap:wrap}
.trust{display:flex;gap:22px;flex-wrap:wrap;margin-top:28px;color:#8e98c5;font-size:13.5px}.trust span{display:flex;gap:7px;align-items:center}.trust .ic{color:var(--lime);width:16px;height:16px}
.term{background:#070a16;border:1px solid rgba(255,255,255,.1);border-radius:16px;box-shadow:0 30px 80px rgba(0,0,0,.5);overflow:hidden}
.term-h{display:flex;gap:7px;padding:12px 16px;background:#0d1226;align-items:center}.term-h i{width:11px;height:11px;border-radius:50%;background:#2a3263}.term-h span{margin-left:10px;font-size:12px;color:#7983b4}
.term pre{margin:0;padding:18px;font:13px/1.8 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:#c8d1f5;overflow:auto}
.term .g{color:var(--lime)}.term .d{color:#5b6592}.term .y{color:#f3c35e}
.sec{padding:84px 0}.sec.alt{background:var(--ink2)}.sec.light{background:var(--bg);color:var(--tx)}
.sec h2.big{font-size:clamp(28px,4vw,40px);color:#fff;letter-spacing:-.03em;font-weight:780;margin-bottom:12px}
.sec.light h2.big{color:var(--tx)}
.sec .sub{color:#9aa4cf;font-size:17px;max-width:600px;margin-bottom:40px}.sec.light .sub{color:var(--mu)}
.feat{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.fc{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.09);border-radius:16px;padding:26px;transition:border-color .2s}
.fc:hover{border-color:rgba(184,242,61,.45)}
.fc .ib{width:44px;height:44px;border-radius:12px;background:rgba(79,91,255,.2);color:#a6adff;display:grid;place-items:center;margin-bottom:16px}.fc .ib .ic{width:22px;height:22px}
.fc h3{color:#fff}.fc p{color:#9aa4cf;margin:0}
.how{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;counter-reset:s}
.hs{background:var(--card);color:var(--tx);border-radius:16px;padding:24px;position:relative;border:1px solid var(--bd)}
.hs:before{counter-increment:s;content:counter(s);display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:var(--ink);color:var(--lime);font-weight:800;margin-bottom:14px}
.hs h3{margin-bottom:6px}.hs p{margin:0;color:var(--mu);font-size:14px}
.faq{max-width:780px}.faq details{border-bottom:1px solid rgba(255,255,255,.12);padding:18px 0}
.faq summary{cursor:pointer;font-weight:650;font-size:17px;color:#fff;list-style:none;display:flex;justify-content:space-between;gap:12px}
.faq summary::after{content:"+";color:var(--lime);font-size:22px;line-height:1}.faq details[open] summary::after{content:"–"}
.faq p{color:#9aa4cf;margin:12px 0 0}
.bigcta{text-align:center;padding:84px 22px;background:linear-gradient(135deg,var(--pr2),var(--pr));color:#fff}
.bigcta h2{font-size:clamp(28px,4vw,40px);color:#fff;letter-spacing:-.03em;margin-bottom:10px}.bigcta p{color:#dfe2ff;margin-bottom:24px}
.pfoot{background:#070a16;padding:50px 0 24px;color:#8e98c5}
.pfoot .pw:first-child{display:grid;grid-template-columns:2fr 1fr 1fr;gap:30px}.pfoot b{display:block;color:#fff;margin-bottom:10px}.pfoot a{display:block;color:#8e98c5;margin-bottom:7px;font-size:14px}.pfoot .logo{margin-bottom:10px}
.pfoot .copy{margin-top:30px;padding-top:18px;border-top:1px solid rgba(255,255,255,.08);font-size:13px}

/* auth */
.shell-auth{min-height:100vh;display:grid;grid-template-columns:1fr 1fr;background:var(--bg)}
.auth-art{background:linear-gradient(160deg,var(--ink),#1a2255);color:#fff;padding:48px;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}
.auth-art:after{content:"";position:absolute;width:520px;height:520px;right:-160px;bottom:-160px;background:radial-gradient(circle,rgba(79,91,255,.5),transparent 65%)}
.auth-art h2{font-size:34px;letter-spacing:-.03em;color:#fff;max-width:380px;line-height:1.12}.auth-art h2 em{font-style:normal;color:var(--lime)}
.auth-art ul{list-style:none;padding:0;margin:20px 0 0;color:#b6bfe6;display:grid;gap:10px;position:relative;z-index:1}.auth-art li{display:flex;gap:10px;align-items:center}.auth-art li .ic{color:var(--lime)}
.auth-form{display:grid;place-items:center;padding:32px 22px}.auth-box{width:100%;max-width:410px}
.auth-box h1{margin-bottom:6px}.auth-box .alt{margin-top:18px;text-align:center;color:var(--mu);font-size:14px}

/* responsive */
@media(max-width:980px){.hero .pw{grid-template-columns:1fr}.feat{grid-template-columns:1fr 1fr}.how{grid-template-columns:1fr 1fr}.stats{grid-template-columns:1fr 1fr}.cols{grid-template-columns:1fr}}
@media(max-width:860px){
  .shell{display:block}
  .top{display:flex;align-items:center;justify-content:space-between;background:var(--ink);padding:10px 14px;position:sticky;top:0;z-index:30}
  .top button{background:rgba(255,255,255,.12);border:0;color:#fff;border-radius:12px;width:44px;height:44px;cursor:pointer;display:grid;place-items:center}
  .side{position:fixed;top:0;bottom:0;left:0;height:auto;width:300px;max-width:88vw;z-index:50;transform:translateX(-104%);transition:transform .25s}
  .side.open{transform:none}.side-x{display:grid;place-items:center;background:rgba(255,255,255,.1);border:0;color:#fff;width:38px;height:38px;border-radius:10px;cursor:pointer}
  .scrim.open{display:block;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:45}
  .wrap{padding:20px 16px 60px}
  .pnav nav{display:none;position:absolute;top:66px;left:0;right:0;background:var(--ink);flex-direction:column;padding:12px 22px 20px;gap:14px;border-bottom:1px solid rgba(255,255,255,.1)}.pnav nav.open{display:flex}
  .pn-t{display:grid;place-items:center}.pn-r .btn.ghost-d{display:none}
  .shell-auth{grid-template-columns:1fr}.auth-art{display:none}
}
@media(max-width:620px){.feat,.how{grid-template-columns:1fr}.grid2{grid-template-columns:1fr}.stats{grid-template-columns:1fr 1fr;gap:10px}.stat b{font-size:25px}.hero{padding:56px 0 48px}.sec{padding:56px 0}.pfoot .pw:first-child{grid-template-columns:1fr}.tbl.stack thead{display:none}.tbl.stack tr{display:block;padding:10px 0;border-bottom:1px solid var(--bd)}.tbl.stack td{display:flex;justify-content:space-between;border:0;padding:5px 12px;gap:12px}.tbl.stack td:before{content:attr(data-l);color:var(--mu);font-weight:600}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* additions (stage 1) */
.side nav .soon{display:flex;align-items:center;gap:11px;padding:9px 12px;color:#6f7bb0;font-size:14px;cursor:default}
.side nav .soon:after{content:"soon";margin-left:auto;font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;background:rgba(255,255,255,.08);padding:2px 7px;border-radius:99px}
.btn.pr,.btn.pr:hover{color:#fff}.btn.lime,.btn.lime:hover{color:var(--ink)}
.center{text-align:center}.mt{margin-top:18px}.pw.copy{margin-top:30px;padding-top:18px;border-top:1px solid rgba(255,255,255,.08);font-size:13px}
.auth-form .logo{color:var(--tx)!important}
.pwrap{position:relative}.pwrap button{position:absolute;right:6px;top:4px;background:none;border:0;color:var(--mu);cursor:pointer;width:38px;height:38px;display:grid;place-items:center}
.pwrap input{padding-right:46px}
.hl{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.metric-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.act{list-style:none;margin:0;padding:0}.act li{padding:10px 0;border-bottom:1px solid var(--bd);display:flex;justify-content:space-between;gap:12px;font-size:14px}.act li:last-child{border:0}
.tag{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;background:var(--prs);color:var(--pr);padding:2px 8px;border-radius:99px}
.dis{opacity:.55;pointer-events:none}
.feature-soon{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.feature-soon span{display:flex;gap:8px;align-items:center;padding:10px 12px;border:1px dashed var(--bd);border-radius:11px;color:var(--mu);font-size:13.5px}
.badge.pr{background:var(--prs);color:var(--pr)}
@media(max-width:620px){.tbl.stack td{display:flex;justify-content:space-between;gap:12px;border:0;padding:5px 0}.tbl.stack td:before{content:attr(data-l);color:var(--mu);font-size:12px;font-weight:600}.metric-row{grid-template-columns:1fr}}
[hidden]{display:none!important}
.stat b .badge{width:max-content}
