@import url("https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800&family=Anuphan:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap");:root{--brand:#5B5BD6;--brand-600:#4B49C4;--brand-700:#3C3A9E;--brand-soft:#ECECFB;--brand-100:#DBDBF6;--brand-fg:#FFFFFF;--accent:#E85C9A;--accent-600:#D44483;--accent-soft:#FBE7F1;--info:#3B9EE5;--info-soft:#E4F1FB;--success:#3E9E6B;--success-soft:#E3F2E9;--warning:#E0922A;--warning-soft:#FBEFD9;--danger:#E0584E;--danger-soft:#FBEAE8;--ink:#2A2420;--ink-2:#4A4239;--muted:#897E72;--muted-2:#ABA093;--canvas:#FAF6F1;--surface:#FFFFFF;--surface-2:#FBF7F2;--raised:#F4EDE4;--border:#EDE5DA;--border-strong:#DDD2C4;--sh-sm:0 1px 2px rgba(74,52,30,.06);--sh-md:0 6px 20px -8px rgba(74,52,30,.16),0 2px 6px rgba(74,52,30,.05);--sh-lg:0 24px 50px -16px rgba(74,52,30,.22),0 6px 16px rgba(74,52,30,.08);--sh-brand:0 8px 22px -8px rgba(91,91,214,.50);--ring:0 0 0 3px rgba(91,91,214,.30);--r-xs:8px;--r-sm:10px;--r-md:12px;--r-lg:16px;--r-card:20px;--r-panel:24px;--r-chip:999px;--font-display:"Outfit","Anuphan",system-ui,sans-serif;--font-body:"Anuphan","Outfit",system-ui,sans-serif;--font-mono:"JetBrains Mono",ui-monospace,monospace;--fs-xxs:11px;--fs-xs:12px;--fs-sm:13px;--fs-base:14px;--fs-md:15px;--fs-lg:17px;--fs-xl:20px;--fs-2xl:24px;--fs-3xl:30px;--fs-4xl:38px}.dark,[data-theme=dark]{--brand:#8B8BE8;--brand-600:#7676E0;--brand-700:#6262CF;--brand-soft:#25254A;--brand-100:#313163;--brand-fg:#14132A;--accent:#F07AB0;--accent-600:#E85C9A;--accent-soft:#3A1E2C;--info:#5DB4EE;--info-soft:#15273A;--success:#59C089;--success-soft:#16291F;--warning:#E9A53C;--warning-soft:#33260F;--danger:#F0726A;--danger-soft:#341A18;--ink:#F5EFE8;--ink-2:#DAD1C6;--muted:#A89C8E;--muted-2:#7C7264;--canvas:#1A1714;--surface:#221E1A;--surface-2:#1E1B17;--raised:#2C2620;--border:#332D27;--border-strong:#463D33;--sh-sm:0 1px 2px rgba(0,0,0,.40);--sh-md:0 6px 20px -8px rgba(0,0,0,.55),0 2px 6px rgba(0,0,0,.35);--sh-lg:0 24px 50px -16px rgba(0,0,0,.65),0 6px 16px rgba(0,0,0,.40);--sh-brand:0 8px 22px -8px rgba(139,139,232,.55);--ring:0 0 0 3px rgba(139,139,232,.34)}.halo{font-family:var(--font-body);color:var(--ink);background:var(--canvas);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;line-height:1.5}.halo *,.halo :after,.halo :before{box-sizing:border-box}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 18px;border-radius:var(--r-md);border:1px solid transparent;font:600 var(--fs-base)/1 var(--font-display);letter-spacing:.005em;cursor:pointer;white-space:nowrap;text-decoration:none;-webkit-appearance:none;appearance:none;user-select:none;outline:0;transition:transform .12s ease,background .15s ease,box-shadow .15s ease,border-color .15s ease,color .15s ease,opacity .15s ease}.btn:active:not(:disabled){transform:translateY(1px) scale(.99)}.btn:focus-visible{box-shadow:var(--ring)}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none;box-shadow:none}.btn-primary{background:var(--brand);color:var(--brand-fg);box-shadow:var(--sh-brand)}.btn-primary:hover:not(:disabled){background:var(--brand-600)}.btn-soft{background:var(--brand-soft);color:var(--brand-600)}.btn-soft:hover:not(:disabled){background:var(--brand-100)}.btn-outline{background:var(--surface);color:var(--ink-2);border-color:var(--border-strong)}.btn-outline:hover:not(:disabled){background:var(--surface-2);border-color:var(--muted-2);color:var(--ink)}.btn-ghost{background:transparent;color:var(--ink-2)}.btn-ghost:hover:not(:disabled){background:var(--raised);color:var(--ink)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){filter:brightness(.92)}.btn-sm{height:34px;padding:0 14px;font-size:var(--fs-sm);border-radius:var(--r-sm);gap:6px}.btn-lg{height:46px;padding:0 24px;font-size:var(--fs-md)}.btn-icon{width:40px;padding:0}.btn-icon.btn-sm{width:34px}.btn-icon.btn-lg{width:46px}.btn.is-loading{pointer-events:none;opacity:.7}.btn.is-loading:after{content:"";width:14px;height:14px;border-radius:99px;border:2px solid;border-right:2px solid transparent;animation:halo-spin .7s linear infinite}@keyframes halo-spin{to{transform:rotate(1turn)}}.badge{display:inline-flex;align-items:center;gap:5px;height:24px;padding:0 10px;border-radius:var(--r-chip);font:600 var(--fs-xs)/1 var(--font-display);letter-spacing:.01em;white-space:nowrap}.badge-success{background:var(--success-soft);color:var(--success)}.badge-warn{background:var(--warning-soft);color:var(--warning)}.badge-danger{background:var(--danger-soft);color:var(--danger)}.badge-info{background:var(--info-soft);color:var(--info)}.badge-brand{background:var(--brand-soft);color:var(--brand-600)}.badge-muted{background:var(--raised);color:var(--muted)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-card);box-shadow:var(--sh-sm)}.card-pad{padding:18px}.field{display:flex;align-items:center;gap:9px;height:40px;padding:0 14px;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-md);color:var(--ink);transition:border-color .15s ease,box-shadow .15s ease}.field:hover:not(:focus-within){border-color:var(--muted-2)}.field:focus-within{border-color:var(--brand);box-shadow:var(--ring)}.field input,.field select{border:0;outline:0;background:transparent;width:100%;font:500 var(--fs-base) var(--font-body);color:var(--ink);-webkit-appearance:none}.field input::placeholder{color:var(--muted-2)}.field-inset{background:var(--surface-2)}.av{border-radius:99px;display:inline-flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:700;color:#fff;overflow:hidden;flex:0 0 auto}.nav-group{font:700 var(--fs-xxs)/1 var(--font-display);letter-spacing:.1em;text-transform:uppercase;color:var(--muted-2);padding:0 14px;margin:18px 0 8px}.nav{display:flex;align-items:center;gap:12px;height:42px;padding:0 14px;border-radius:var(--r-md);font:600 var(--fs-base)/1 var(--font-display);color:var(--muted);cursor:pointer;transition:background .14s,color .14s;position:relative}.nav:hover{background:var(--raised);color:var(--ink)}.nav.active{background:var(--brand-soft);color:var(--brand-600)}.nav.active:before{content:"";position:absolute;left:-14px;top:9px;bottom:9px;width:3px;border-radius:99px;background:var(--brand)}.sw{width:42px;height:24px;border-radius:99px;background:var(--border-strong);position:relative;cursor:pointer;transition:background .18s ease;flex:0 0 auto;display:inline-block;vertical-align:middle}.sw.on{background:var(--brand)}.sw:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:99px;background:#fff;transition:left .18s ease;box-shadow:0 1px 3px rgba(0,0,0,.25)}.sw.on:after{left:21px}.chip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 13px;border-radius:var(--r-chip);font:600 var(--fs-sm)/1 var(--font-display);background:var(--surface);border:1px solid var(--border);color:var(--ink-2);cursor:pointer;user-select:none;white-space:nowrap;transition:background .15s ease,border-color .15s ease,color .15s ease}.chip:hover{background:var(--surface-2);border-color:var(--border-strong)}.chip:active{transform:translateY(1px)}.chip-soft{background:var(--brand-soft);color:var(--brand-600);border-color:transparent}.chip-soft:hover{background:var(--brand-100);border-color:transparent}.bubble{padding:10px 14px;border-radius:18px;overflow:hidden;font-size:var(--fs-base);line-height:1.45;word-break:break-word}.bubble-in{background:var(--surface);color:var(--ink);border:1px solid var(--border);border-bottom-left-radius:6px}.bubble-out{background:var(--brand);color:var(--brand-fg);border-bottom-right-radius:6px}.dot{width:7px;height:7px;border-radius:99px;flex:0 0 auto;display:inline-block}.divider{height:1px;background:var(--border)}.scroll::-webkit-scrollbar{width:8px;height:8px}.scroll::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:99px;border:2px solid var(--surface)}.scroll::-webkit-scrollbar-track{background:transparent}.fade-in{animation:halo-fade .24s ease both}@keyframes halo-fade{0%{transform:translateY(6px);opacity:0}to{transform:none;opacity:1}}