:root{--fg:#1d1d1f;--muted:#6e6e73;--bg:#fff;--alt:#f5f5f7;--blue:#0071e3;--green:#1a7f37;--red:#c9302c;--line:#d2d2d7;--r:18px}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","SF Pro Display","Helvetica Neue",Helvetica,Arial,sans-serif;color:var(--fg);background:var(--bg);-webkit-font-smoothing:antialiased;line-height:1.47}
a{color:var(--blue);text-decoration:none} a:hover{text-decoration:underline}
.banner{background:#1d1d1f;color:#f5f5f7;text-align:center;font-size:12px;padding:8px 12px;letter-spacing:.01em;position:sticky;top:0;z-index:20}
.banner b{color:#30d158}
nav{position:sticky;top:33px;z-index:10;background:rgba(255,255,255,.8);backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid rgba(0,0,0,.08)}
nav .in{max-width:1000px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;height:48px;padding:0 22px;font-size:13px}
nav .brand{font-weight:600;color:var(--fg);font-size:15px}
nav .links a{color:var(--fg);opacity:.8;margin-left:22px} nav .links a.on{opacity:1;font-weight:600}
.hero{text-align:center;padding:96px 22px 64px}
.eyebrow{color:var(--muted);font-size:17px;font-weight:600;margin-bottom:10px}
h1{font-size:clamp(40px,7vw,72px);line-height:1.05;letter-spacing:-.015em;font-weight:700}
.sub{font-size:clamp(19px,2.4vw,24px);color:var(--muted);max-width:720px;margin:18px auto 30px;line-height:1.35}
.btn{display:inline-block;background:var(--blue);color:#fff;border:0;border-radius:980px;padding:11px 22px;font-size:17px;cursor:pointer;font-family:inherit;transition:transform .2s,background .2s}
.btn:hover{background:#0077ed;text-decoration:none;transform:scale(1.02)}
.btn.ghost{background:transparent;color:var(--blue);border:1px solid var(--blue)}
.btn.ok{background:var(--green)} .btn.no{background:#fff;color:var(--red);border:1px solid var(--red)}
.btn.sm{font-size:14px;padding:7px 16px}
section{padding:72px 22px} section.alt{background:var(--alt)}
.wrap{max-width:1000px;margin:0 auto}
h2{font-size:clamp(30px,4.5vw,48px);letter-spacing:-.01em;line-height:1.1;text-align:center;margin-bottom:14px}
.lead{text-align:center;color:var(--muted);font-size:19px;max-width:640px;margin:0 auto 44px}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px}
.card{background:#fff;border-radius:var(--r);padding:30px;box-shadow:0 2px 12px rgba(0,0,0,.05);transition:transform .35s cubic-bezier(.2,.8,.2,1),box-shadow .35s}
.card:hover{transform:translateY(-4px);box-shadow:0 10px 30px rgba(0,0,0,.08)}
.card .ic{font-size:30px;margin-bottom:14px}
.card h3{font-size:21px;margin-bottom:8px} .card p{color:var(--muted);font-size:15px}
.tag{display:inline-block;font-size:11px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:var(--muted);background:var(--alt);border-radius:6px;padding:3px 8px;margin-top:14px}
pre{background:#1d1d1f;color:#e8e8ed;border-radius:var(--r);padding:26px;overflow:auto;font:13px/1.55 ui-monospace,"SF Mono",Menlo,monospace}
.steps{counter-reset:s;display:grid;gap:14px;max-width:720px;margin:0 auto}
.steps li{list-style:none;background:#fff;border-radius:14px;padding:18px 22px 18px 64px;position:relative;font-size:17px}
.steps li::before{counter-increment:s;content:counter(s);position:absolute;left:20px;top:16px;width:30px;height:30px;border-radius:50%;background:var(--blue);color:#fff;display:grid;place-items:center;font-weight:600;font-size:14px}
footer{color:var(--muted);font-size:12px;text-align:center;padding:40px 22px;border-top:1px solid var(--line)}
.reveal{opacity:0;transform:translateY(24px);transition:opacity .9s ease,transform .9s cubic-bezier(.2,.8,.2,1)} .reveal.in{opacity:1;transform:none}
/* portal */
.app{max-width:1200px;margin:0 auto;display:grid;grid-template-columns:220px 1fr;gap:28px;padding:32px 22px 60px}
.side a{display:flex;justify-content:space-between;padding:9px 14px;border-radius:10px;color:var(--fg);font-size:15px;margin-bottom:2px}
.side a:hover{background:var(--alt);text-decoration:none} .side a.on{background:var(--alt);font-weight:600}
.pill{background:var(--blue);color:#fff;border-radius:980px;font-size:11px;padding:1px 8px;font-weight:600;align-self:center}
.pill.z{background:var(--line);color:var(--muted)}
.view{display:none;animation:fade .45s ease} .view.on{display:block}
@keyframes fade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.view h2{text-align:left;font-size:32px;margin-bottom:6px} .view .lead{text-align:left;margin:0 0 24px;font-size:16px}
.row{display:flex;gap:16px;align-items:center;padding:16px 18px;border:1px solid var(--line);border-radius:14px;margin-bottom:10px;cursor:pointer;transition:background .2s,border-color .2s}
.row:hover{background:var(--alt);border-color:#c7c7cc}
.av{width:40px;height:40px;border-radius:12px;background:linear-gradient(135deg,#5e5ce6,#0071e3);color:#fff;display:grid;place-items:center;font-weight:700;flex:none}
.av.g{background:linear-gradient(135deg,#8e8e93,#636366)}
.row .t{flex:1;min-width:0} .row .t b{display:block;font-size:15px} .row .t span{color:var(--muted);font-size:13px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.st{font-size:11px;font-weight:600;border-radius:6px;padding:3px 8px;white-space:nowrap;text-transform:uppercase;letter-spacing:.03em}
.st.input{background:#fff4d6;color:#8a6100} .st.done{background:#e3f6e8;color:var(--green)} .st.sub{background:#e8f0fe;color:var(--blue)} .st.rej{background:#fde8e8;color:var(--red)} .st.cxl{background:var(--alt);color:var(--muted)}
.panel{border:1px solid var(--line);border-radius:var(--r);padding:26px;margin-bottom:18px}
.panel h3{font-size:19px;margin-bottom:12px}
.kv{display:grid;grid-template-columns:150px 1fr;gap:8px 16px;font-size:14px} .kv dt{color:var(--muted)}
table{width:100%;border-collapse:collapse;font-size:14px} td,th{text-align:left;padding:10px 6px;border-bottom:1px solid var(--line)} th{color:var(--muted);font-weight:500;font-size:12px;text-transform:uppercase;letter-spacing:.04em}
td.n{text-align:right;font-variant-numeric:tabular-nums}
.empty{text-align:center;padding:64px 22px;border:1px dashed var(--line);border-radius:var(--r);color:var(--muted)}
.empty .ic{font-size:40px;margin-bottom:12px} .empty b{display:block;color:var(--fg);font-size:19px;margin-bottom:6px}
.log{font:13px/1.6 ui-monospace,"SF Mono",Menlo,monospace} .log div{padding:8px 0;border-bottom:1px solid var(--alt);display:grid;grid-template-columns:150px 120px 1fr;gap:10px} .log .tm{color:var(--muted)} .log .who{font-weight:600}
.actions{display:flex;gap:10px;margin-top:18px;flex-wrap:wrap}
.toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%) translateY(120px);background:#1d1d1f;color:#fff;padding:12px 22px;border-radius:980px;font-size:14px;transition:transform .4s cubic-bezier(.2,.8,.2,1);z-index:50}
.toast.on{transform:translateX(-50%) translateY(0)}
.note{font-size:13px;color:var(--muted);margin-top:10px}
.bubble{background:var(--alt);border-radius:14px;padding:14px 16px;font-size:14px;margin-bottom:10px}
@media(max-width:820px){.app{grid-template-columns:1fr}.side{display:flex;overflow:auto;gap:4px}.side a{white-space:nowrap}.log div{grid-template-columns:1fr}.kv{grid-template-columns:1fr}}
.login{max-width:420px;margin:90px auto;padding:0 22px;text-align:center}
.login input{width:100%;font:inherit;font-size:16px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;margin:18px 0 12px}
.err{color:var(--red);font-size:14px;min-height:20px}
textarea.note-in{width:100%;font:inherit;font-size:14px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;margin-top:12px;min-height:64px}
.brief{white-space:pre-wrap;word-break:break-word}
.pre{white-space:pre-wrap;font:12.5px/1.5 ui-monospace,"SF Mono",Menlo,monospace;background:var(--alt);border-radius:12px;padding:12px 14px;word-break:break-word}
.ref{font-size:13px;color:var(--muted);background:#fffbea;border-radius:10px;padding:10px 12px;margin-top:12px}
.st.cxl{background:var(--alt);color:var(--muted)}
.test{background:#ede7ff;color:#5e3bd8}
