:root{--bg: #fafaf9;--surface: #ffffff;--surface-2: #f5f5f4;--surface-3: #ececea;--border: #e7e5e3;--text: #0f1115;--muted: #6b7280;--accent: #2563eb;--accent-2: #c41e6a;--accent-3: #16a34a;--danger: #ff2157;--radius: 20px;--radius-sm: 12px;--dark-bg: #0a0a0b;--dark-surface: #17171a;--dark-border: #2a2a2e;--dark-text: #f4f4f5;--dark-muted: #9a9aa2;--shadow-out: 0 1px 2px rgba(15,17,21,.04), 0 10px 30px rgba(15,17,21,.06);--shadow-out-sm: 0 1px 2px rgba(15,17,21,.05), 0 4px 12px rgba(15,17,21,.05);--shadow-in: inset 0 1px 2px rgba(15,17,21,.06);--shadow-accent: 0 8px 24px rgba(37,99,235,.18);--font-mono: "JetBrains Mono", ui-monospace, Menlo, monospace;--font-display: "Inter", var(--font-sans);--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:15px;line-height:1.65;min-height:100vh;overflow-x:hidden;background-image:radial-gradient(circle,#e2e1de 1px,transparent 1px);background-size:22px 22px}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-2)}h1,h2,h3,h4{font-family:var(--font-display);font-weight:700;letter-spacing:-.02em;color:var(--text)}h1{font-size:clamp(2.4rem,6vw,4rem);line-height:1.05}h2{font-size:clamp(1.6rem,3.4vw,2.5rem);line-height:1.15}code,pre{font-family:var(--font-mono)}.container{width:min(1180px,92vw);margin-inline:auto;position:relative;z-index:2}.section{padding:88px 0;position:relative}.kicker{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--font-mono);font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin-bottom:.9rem}.kicker .n{color:var(--accent)}.section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:2rem;margin-bottom:2.6rem;flex-wrap:wrap}.section-head h2{margin:0;max-width:46ch}.neu,.card{background:var(--surface);border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--shadow-out)}.neu-inset{background:var(--surface-2);border-radius:var(--radius);box-shadow:var(--shadow-in);border:1px solid var(--border)}.neu-pressable{transition:box-shadow .15s ease,transform .15s ease}.neu-pressable:active{transform:translateY(1px)}.btn{display:inline-flex;align-items:center;gap:.55rem;padding:.95rem 1.5rem;font-family:var(--font-sans);font-weight:600;font-size:.88rem;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:999px;cursor:pointer;transition:all .2s ease}.btn:hover{color:var(--text);background:var(--surface-2);transform:translateY(-1px)}.btn.primary{color:#fff;background:var(--dark-bg);border-color:var(--dark-bg)}.btn.primary:hover{color:#fff;background:#000}.btn.magenta{color:var(--text);background:var(--surface);border-color:var(--border)}.btn.magenta:hover{color:var(--accent)}.btn.ghost-dark{color:#fff;background:transparent;border-color:#ffffff40}.btn.ghost-dark:hover{background:#ffffff14}.input,.textarea{width:100%;padding:.9rem 1rem;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-family:var(--font-sans);outline:none;transition:box-shadow .2s,border-color .2s}.input:focus,.textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px #2563eb1f}.label{display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin-bottom:.5rem;font-weight:600}.terminal{border-radius:var(--radius-sm);background:var(--dark-bg);color:var(--dark-text);overflow:hidden}.terminal .bar{display:flex;align-items:center;gap:.5rem;padding:.55rem .9rem;background:var(--dark-surface);border-bottom:1px solid var(--dark-border);font-size:.75rem;color:var(--dark-muted)}.terminal .dot{width:9px;height:9px;border-radius:50%}.terminal .body{padding:1rem 1.2rem;font-family:var(--font-mono);font-size:.85rem}.terminal .prompt{color:#7dd3fc;font-weight:700}.terminal .flash{color:var(--accent-3);font-weight:600}.nav{position:sticky;top:0;z-index:50;backdrop-filter:blur(14px);background:#fafaf9d9;border-bottom:1px solid var(--border)}.nav .bar{display:flex;align-items:center;justify-content:space-between;padding:16px 0}.nav .logo{display:flex;align-items:center;gap:.55rem;font-family:var(--font-display);font-weight:800;color:var(--text)}.nav .logo .mark{width:30px;height:30px;border-radius:9px;background:var(--dark-bg);display:grid;place-items:center;color:#fff;font-size:.8rem;font-weight:800;letter-spacing:-.02em}.nav ul{display:flex;gap:1.8rem;list-style:none;margin:0;padding:0}.nav a{color:var(--muted);font-size:.85rem;font-weight:600}.nav a:hover,.nav a.active{color:var(--text)}.nav .lang{display:flex;gap:.3rem}.nav .lang a{padding:.35rem .65rem;border-radius:8px;font-weight:700;font-size:.75rem}.nav .lang a.active{color:var(--accent);background:var(--surface-2)}.nav .burger{display:none;width:40px;height:40px;border-radius:10px;border:1px solid var(--border);background:var(--surface);align-items:center;justify-content:center;cursor:pointer}.nav .burger span,.nav .burger span:before,.nav .burger span:after{content:"";display:block;width:18px;height:2px;background:var(--text);position:relative}.nav .burger span:before{position:absolute;top:-6px}.nav .burger span:after{position:absolute;top:6px}.cta-banner{padding:2.6rem;border-radius:var(--radius);background:var(--surface);text-align:center}.cta-banner h2{color:var(--text);margin:0 0 .5rem}.cta-banner h2 em{color:var(--accent-2);font-style:normal}.tag{font-size:.74rem;padding:.32rem .7rem;border-radius:999px;background:var(--surface-2);border:1px solid var(--border);color:var(--accent);letter-spacing:.01em;font-weight:600}.kbd{font-size:.7rem;padding:.2rem .5rem;border-radius:6px;background:var(--surface-2);border:1px solid var(--border);color:var(--accent);font-weight:600}.muted{color:var(--muted)}.mb-1{margin-bottom:.5rem}.mb-2{margin-bottom:1rem}.mb-3{margin-bottom:1.5rem}.mb-4{margin-bottom:2rem}@media(max-width:820px){.nav ul{display:none}.nav .burger{display:flex}.section{padding:56px 0}}.admin-shell{min-height:100vh;padding:40px 0}.admin-table{width:100%;border-collapse:separate;border-spacing:0 10px}.admin-table th{text-align:left;font-size:.7rem;color:var(--muted);text-transform:uppercase;letter-spacing:.12em;padding:8px 14px;font-weight:700}.admin-table td{padding:14px;background:var(--surface);border:1px solid var(--border)}.admin-table td:first-child{border-top-left-radius:12px;border-bottom-left-radius:12px}.admin-table td:last-child{border-top-right-radius:12px;border-bottom-right-radius:12px}.nav-mobile[data-astro-cid-dmqpwcec]{display:none;flex-direction:column;padding:.5rem 0 1rem;border-top:1px solid var(--border)}.nav-mobile[data-astro-cid-dmqpwcec] a[data-astro-cid-dmqpwcec]{padding:.8rem 5%;color:var(--text);font-weight:600;font-size:.95rem}.nav-mobile[data-astro-cid-dmqpwcec].open{display:flex}@media(min-width:821px){.nav-mobile[data-astro-cid-dmqpwcec]{display:none!important}}.footer-dark[data-astro-cid-sz7xmlte]{background:var(--dark-bg);color:var(--dark-muted);margin-top:40px;padding:44px 0 30px}.footer-top[data-astro-cid-sz7xmlte]{display:flex;align-items:center;justify-content:space-between;padding-bottom:24px;border-bottom:1px solid var(--dark-border)}.footer-top[data-astro-cid-sz7xmlte] .logo[data-astro-cid-sz7xmlte] .mark[data-astro-cid-sz7xmlte]{width:30px;height:30px;border-radius:9px;background:#fff;color:var(--dark-bg);display:grid;place-items:center;font-weight:800;font-size:.8rem;font-family:var(--font-display)}.footer-social[data-astro-cid-sz7xmlte]{display:flex;gap:1rem}.footer-social[data-astro-cid-sz7xmlte] a[data-astro-cid-sz7xmlte]{color:var(--dark-muted)}.footer-social[data-astro-cid-sz7xmlte] a[data-astro-cid-sz7xmlte]:hover{color:#fff}.footer-bottom[data-astro-cid-sz7xmlte]{display:flex;align-items:center;justify-content:space-between;padding-top:20px;font-size:.8rem;flex-wrap:wrap;gap:.5rem}.footer-bottom[data-astro-cid-sz7xmlte] .muted[data-astro-cid-sz7xmlte]{color:var(--dark-muted)}@media(max-width:560px){.footer-bottom[data-astro-cid-sz7xmlte]{flex-direction:column;align-items:flex-start}}
