:root{--color-bg:#fff;--color-bg-soft:#f5f7fb;--color-surface:#fff;--color-card:#fff;--color-fg:#000;--color-muted:#4b5563;--color-subtle:#6b7280;--color-accent:#0ff;--space-1:12px;--space-2:20px;--space-3:28px;--space-4:40px;--space-5:64px;--radius:14px;--glow:0 0 10px rgba(0,255,255,.2),0 0 22px rgba(0,255,255,.14);--glow-strong:0 0 14px rgba(0,255,255,.32),0 0 32px rgba(0,255,255,.22);--ease:ease-in-out;--t-fast:160ms;--t-med:320ms}body,html{height:100%}body{background:var(--color-bg);color:var(--color-fg);line-height:1.55}.container{max-width:1240px;margin:0 auto;padding:var(--space-4)}.glow-hover{transition:box-shadow var(--t-fast) var(--ease),transform var(--t-fast) var(--ease)}.glow-hover:focus,.glow-hover:hover{box-shadow:var(--glow);transform:translateY(-1px)}:where(a,button,input,select,textarea).focus-visible,:where(a,button,input,select,textarea):focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;box-shadow:var(--glow-strong)}.card{border:1px solid rgba(0,0,0,.08);border-radius:var(--radius);padding:var(--space-4);background:var(--color-card);box-shadow:0 2px 10px rgba(0,0,0,.06)}.card>*+*{margin-top:var(--space-2)}.btn{display:inline-flex;align-items:center;gap:10px;border-radius:var(--radius);padding:12px 20px;border:1px solid rgba(0,0,0,.18);background:var(--color-surface);cursor:pointer;text-decoration:none;font-weight:700;letter-spacing:.2px}.btn,.btn.outline{color:var(--color-fg)}.btn.outline{background:transparent;border:1px solid rgba(0,0,0,.7)}.btn.cyan{background:#fff;color:#000;border:1px solid rgba(0,255,255,.7);box-shadow:var(--glow)}.btn:disabled{opacity:.6;cursor:not-allowed}.btn.glow-hover:hover{box-shadow:var(--glow-strong)}.input{border:1px solid rgba(0,0,0,.18);border-radius:var(--radius);padding:12px 16px;outline:none;background:#fff;color:#000;min-width:220px}.input:focus{box-shadow:var(--glow);border-color:var(--color-accent)}.row{display:flex;align-items:center;flex-wrap:wrap}.col,.row{gap:var(--space-3)}.col{display:grid;grid-gap:var(--space-3)}.topnav{position:-webkit-sticky;position:sticky;top:0;z-index:20;background:#fff;border-bottom:1px solid rgba(0,0,0,.08);-webkit-backdrop-filter:saturate(120%);backdrop-filter:saturate(120%)}.topnav,.topnav a{color:var(--color-fg)}.topnav a.active{border-bottom:2px solid var(--color-accent);box-shadow:inset 0 -2px 0 var(--color-accent)}.app-shell{display:grid;grid-template-columns:280px 1fr;min-height:100vh}.sidebar{background:var(--color-bg-soft);padding:var(--space-4);position:-webkit-sticky;position:sticky;top:0;height:100vh;border-right:1px solid rgba(0,0,0,.08)}.sidebar,.sidebar a{color:var(--color-fg)}.sidebar a{display:block;padding:10px 12px;text-decoration:none;border-radius:8px}.sidebar a:hover{box-shadow:var(--glow)}.sidebar a.active{outline:2px solid var(--color-accent);background:rgba(0,255,255,.06)}.main{padding:var(--space-5);display:grid;grid-gap:var(--space-4);gap:var(--space-4);width:100%;max-width:1200px;margin:0 auto}.card ul{list-style:none;padding-left:0;display:grid;grid-gap:var(--space-2);gap:var(--space-2);margin:0}.stack{display:grid;grid-gap:var(--space-3);gap:var(--space-3)}.section{margin-top:var(--space-5)}@keyframes pulse-soft{0%{box-shadow:var(--glow)}50%{box-shadow:var(--glow-strong)}to{box-shadow:var(--glow)}}@keyframes fade-in{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:none}}.pulse{animation:pulse-soft 2.4s var(--ease) infinite}.fade-in{animation:fade-in .6s var(--ease) both}.skip-link{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden}.skip-link:focus{position:static;width:auto;height:auto;padding:8px 12px;background:var(--color-accent);color:#000;border-radius:8px}.hide-on-mobile{display:initial}.show-on-mobile{display:none}@media (max-width:960px){.app-shell{grid-template-columns:1fr}.hide-on-mobile{display:none!important}.show-on-mobile{display:initial!important}.main{padding:24px}.sidebar{position:fixed;left:0;top:0;transform:translateX(-100%);transition:transform var(--t-med) var(--ease);width:84%;max-width:320px;height:100vh;box-shadow:0 10px 40px rgba(0,0,0,.12);z-index:1001;background:#fff}.sidebar.open{transform:translateX(0)}.sidebar-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:1000}.topnav{position:-webkit-sticky;position:sticky;top:0}}