:root{color-scheme:dark;--bg: #08090a;--bg-2: #0d0e0f;--panel: #111213;--panel-2: #17181a;--hover: rgba(255, 255, 255, .035);--active: rgba(255, 255, 255, .06);--border: rgba(255, 255, 255, .08);--border-2: rgba(255, 255, 255, .14);--text: #f7f8f8;--text-2: #d0d6e0;--text-3: #8a8f98;--text-4: #62666d;--accent: #7170ff;--accent-text: #a8a8ff;--tone-green: #4cb782;--tone-indigo: #7170ff;--tone-orange: #f2994a;--tone-blue: #64b5ed;--tone-teal: #2fa79a;--tone-violet: #a78bfa;--tone-gray: #8a8f98;--header-bg: rgba(8, 9, 10, .72);--btn-primary-bg: #e6e6e6;--btn-primary-hover: #fff;--btn-primary-text: #08090a;--brand-mark-bg: linear-gradient(135deg, #fff, #b8b9ff);--brand-mark-text: #08090a;--on-accent: #fff;--title-gradient: linear-gradient(to right bottom, #fff 30%, rgba(255, 255, 255, .5));--title-gradient-accent: linear-gradient(90deg, #5ea8ff 0%, #a78bfa 50%, #f472b6 100%);--title-gradient-vertical: linear-gradient(to bottom, #fff 40%, rgba(255, 255, 255, .45));--control-hover-border: rgba(255, 255, 255, .24);--kbd-on-primary: rgba(0, 0, 0, .2);--selection: rgba(113, 112, 255, .35);--link-decoration: rgba(168, 168, 255, .35);--mark-bg: rgba(242, 153, 74, .25);--accent-soft: rgba(113, 112, 255, .1);--accent-soft-2: rgba(94, 168, 255, .16);--focus-ring: rgba(113, 112, 255, .18);--focus-border: rgba(113, 112, 255, .6);--search-mark: rgba(113, 112, 255, .28);--copy-done-border: rgba(76, 183, 130, .5);--card-bg: linear-gradient(180deg, rgba(255, 255, 255, .03), rgba(255, 255, 255, .01));--card-shadow: none;--card-shadow-hover: 0 28px 60px -28px rgba(94, 106, 255, .45);--hero-dots: rgba(255, 255, 255, .07);--surface-overlay: rgba(255, 255, 255, .02);--divider-faint: rgba(255, 255, 255, .04);--spotlight: rgba(255, 255, 255, .38);--edge-highlight: linear-gradient(90deg, transparent, rgba(94, 168, 255, .6), rgba(167, 139, 250, .6), transparent);--shadow-float: 0 12px 32px rgba(0, 0, 0, .5);--shadow-panel: 0 24px 64px rgba(0, 0, 0, .6);--ws-shadow: 0 0 0 1px rgba(0, 0, 0, .6), 0 40px 120px -20px rgba(0, 0, 0, .8), 0 0 90px -24px rgba(94, 106, 255, .35);--media-overlay: rgba(8, 9, 10, .8);--media-overlay-text: #d0d6e0;--glow-hero: radial-gradient(ellipse 40% 44% at 20% 6%, rgba(41, 98, 255, .24), transparent 70%), radial-gradient(ellipse 38% 42% at 80% 2%, rgba(139, 92, 246, .24), transparent 70%), radial-gradient(ellipse 46% 34% at 52% 40%, rgba(20, 184, 166, .12), transparent 72%);--glow-ws: radial-gradient(ellipse at 50% 30%, rgba(41, 98, 255, .26), rgba(139, 92, 246, .14) 45%, transparent 70%);--glow-cta: radial-gradient(ellipse 40% 70% at 30% 110%, rgba(41, 98, 255, .32), transparent 70%), radial-gradient(ellipse 40% 70% at 70% 110%, rgba(139, 92, 246, .3), transparent 70%), radial-gradient(ellipse 30% 50% at 50% 120%, rgba(244, 114, 182, .14), transparent 70%);--font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", "Noto Sans SC", sans-serif;--font-reading: var(--font);--mono: "JetBrains Mono", "SF Mono", "Cascadia Code", Consolas, ui-monospace, monospace;--ease: cubic-bezier(.16, 1, .3, 1);--radius: 14px;--page: 1200px;--gutter: 24px;--section-gap: 120px}@media(max-width:640px){:root{--gutter: 16px;--section-gap: 88px}}:root{--reading-page: #121214;--reading-bg: #1a1a1d;--reading-text: #d6d6d6;--reading-strong: #ededed;--reading-muted: #9a9a9f;--reading-border: rgba(255, 255, 255, .08)}:root[data-theme=light]{--reading-page: #f5f5f7;--reading-bg: #ffffff;--reading-text: #2b2b2b;--reading-strong: #1a1a1a;--reading-muted: #66666b;--reading-border: rgba(0, 0, 0, .08)}.reading-page{--text: var(--reading-strong);--text-2: var(--reading-text);--text-3: var(--reading-muted);--border: var(--reading-border)}.reading-surface{background:var(--reading-bg);--bg-2: var(--reading-page);--panel: var(--reading-page);--panel-2: var(--reading-page)}body:has(.reading-page){background:var(--reading-page)}:root[data-theme=light]:has(.reading-page){--header-bg: rgba(245, 245, 247, .82)}:root[data-theme=light]{color-scheme:light;--bg: #f5f5f7;--bg-2: #ececf0;--panel: #fff;--panel-2: #f5f5f7;--hover: rgba(0, 0, 0, .035);--active: rgba(0, 0, 0, .06);--border: rgba(0, 0, 0, .08);--border-2: rgba(0, 0, 0, .14);--text: #1d1d1f;--text-2: #424245;--text-3: #6e6e73;--text-4: #86868b;--accent: #0071e3;--accent-text: #0066cc;--tone-green: #1d7a3e;--tone-indigo: #5146c8;--tone-orange: #b14c00;--tone-blue: #0066cc;--tone-teal: #0f766e;--tone-violet: #6d3aa8;--tone-gray: #6e6e73;--header-bg: rgba(255, 255, 255, .8);--btn-primary-bg: #0071e3;--btn-primary-hover: #0062c4;--btn-primary-text: #fff;--brand-mark-bg: linear-gradient(135deg, #0071e3, #42a1ff);--brand-mark-text: #fff;--title-gradient: linear-gradient(180deg, #1d1d1f 40%, #45455a);--title-gradient-accent: linear-gradient(90deg, #0071e3 0%, #7c5cff 50%, #d9468f 100%);--title-gradient-vertical: var(--title-gradient);--control-hover-border: rgba(0, 0, 0, .24);--kbd-on-primary: rgba(255, 255, 255, .45);--selection: rgba(0, 113, 227, .2);--link-decoration: rgba(0, 102, 204, .35);--mark-bg: rgba(255, 159, 10, .28);--accent-soft: rgba(0, 113, 227, .08);--accent-soft-2: rgba(0, 113, 227, .1);--focus-ring: rgba(0, 113, 227, .18);--focus-border: rgba(0, 113, 227, .6);--search-mark: rgba(0, 113, 227, .16);--copy-done-border: rgba(29, 122, 62, .45);--card-bg: var(--panel);--card-shadow: 0 1px 2px rgba(0, 0, 0, .04), 0 18px 40px -24px rgba(0, 40, 100, .18);--card-shadow-hover: 0 1px 2px rgba(0, 0, 0, .04), 0 28px 56px -24px rgba(0, 50, 140, .26);--surface-overlay: var(--panel);--divider-faint: rgba(0, 0, 0, .06);--spotlight: rgba(0, 113, 227, .25);--edge-highlight: linear-gradient(90deg, transparent, rgba(0, 113, 227, .45), rgba(124, 92, 255, .45), transparent);--shadow-float: 0 8px 24px rgba(0, 40, 100, .12);--shadow-panel: 0 24px 64px -16px rgba(0, 40, 100, .22);--ws-shadow: 0 1px 2px rgba(0, 0, 0, .04), 0 12px 24px -12px rgba(0, 40, 100, .1), 0 48px 96px -32px rgba(0, 50, 140, .22);--media-overlay: rgba(255, 255, 255, .86);--media-overlay-text: #424245;--glow-hero: radial-gradient(ellipse 38% 42% at 22% 8%, rgba(0, 113, 227, .13), transparent 70%), radial-gradient(ellipse 36% 40% at 78% 4%, rgba(139, 92, 246, .14), transparent 70%), radial-gradient(ellipse 44% 34% at 52% 38%, rgba(255, 159, 110, .1), transparent 72%);--glow-ws: radial-gradient(ellipse at 50% 30%, rgba(0, 113, 227, .16), rgba(139, 92, 246, .08) 45%, transparent 70%);--glow-cta: radial-gradient(ellipse 40% 70% at 30% 110%, rgba(0, 113, 227, .35), transparent 70%), radial-gradient(ellipse 40% 70% at 70% 110%, rgba(139, 92, 246, .32), transparent 70%), radial-gradient(ellipse 30% 50% at 50% 120%, rgba(255, 140, 100, .18), transparent 70%);--hero-dots: rgba(0, 0, 0, .07)}:root[data-theme=light] .ink-band{color-scheme:dark;--bg: #1d1d1f;--bg-2: #2c2c2e;--panel: #2c2c2e;--panel-2: #3a3a3c;--hover: rgba(255, 255, 255, .06);--border: rgba(255, 255, 255, .12);--border-2: rgba(255, 255, 255, .2);--text: #f5f5f7;--text-2: #d2d2d7;--text-3: #a1a1a6;--text-4: #6e6e73;--accent-text: #2997ff;--title-gradient: linear-gradient(90deg, #fff 35%, #8fc3ff 75%, #c4b5fd);color:var(--text);background:var(--bg)}.header-actions .theme-toggle{width:32px;padding:0}.header-actions .theme-toggle svg{width:16px;height:16px;stroke-width:1.7}.theme-toggle [data-icon]{display:none}:root[data-theme=light] .theme-toggle [data-icon=light],:root:not([data-theme=light]) .theme-toggle [data-icon=dark]{display:block}::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}::view-transition-new(root){z-index:2}*,*:before,*:after{box-sizing:border-box}html{background:var(--bg);scroll-behavior:smooth;-webkit-text-size-adjust:100%}html,body{overflow-x:clip}body{margin:0;min-width:300px;color:var(--text);background:var(--bg);font-family:var(--font);font-size:15px;line-height:1.6;font-feature-settings:"cv01","ss03";font-synthesis:none;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}[hidden]{display:none!important}button,input,textarea{font:inherit;color:inherit}img,video{display:block;max-width:100%;height:auto}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}::selection{background:var(--selection)}.skip-link{position:fixed;z-index:99;top:8px;left:8px;transform:translateY(-160%);padding:10px 14px;border-radius:8px;color:var(--bg);background:var(--text)}.skip-link:focus{transform:none}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.wrap{width:min(var(--page),100% - 2 * var(--gutter));margin-inline:auto}kbd{display:inline-block;min-width:18px;font-family:var(--mono);font-size:11px;line-height:1;text-align:center;padding:3px 5px;border:1px solid var(--border-2);border-bottom-width:2px;border-radius:4px;color:var(--text-3);background:var(--panel-2)}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--c, var(--tone-gray));flex:none}.tone-green{--c: var(--tone-green)}.tone-indigo{--c: var(--tone-indigo)}.tone-orange{--c: var(--tone-orange)}.tone-blue{--c: var(--tone-blue)}.tone-teal{--c: var(--tone-teal)}.tone-violet{--c: var(--tone-violet)}.tone-gray{--c: var(--tone-gray)}.label{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 8px;border:1px solid var(--border);border-radius:999px;font-size:12px;color:var(--text-3);white-space:nowrap;flex:none}.label .dot{width:7px;height:7px}.avatar{width:20px;height:20px;border-radius:50%;display:inline-grid;place-items:center;font-size:11px;font-weight:600;background:linear-gradient(135deg,var(--tone-green),var(--accent));color:var(--on-accent);flex:none}.btn,.primary-action,.secondary-action{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:32px;padding:0 12px;border:1px solid transparent;border-radius:8px;font-size:13.5px;font-weight:500;white-space:nowrap;cursor:pointer;transition:background .15s,border-color .15s,color .15s,transform .1s}.btn:active,.primary-action:active,.secondary-action:active{transform:scale(.98)}.btn-primary,.primary-action{background:var(--btn-primary-bg);color:var(--btn-primary-text)}.btn-primary:hover,.primary-action:hover{background:var(--btn-primary-hover)}.btn-ghost,.secondary-action{color:var(--text-2);border-color:var(--border);background:transparent}.btn-ghost:hover,.secondary-action:hover{background:var(--hover);border-color:var(--border-2);color:var(--text)}.btn-lg,.primary-action,.secondary-action{height:40px;padding:0 16px;font-size:14.5px}.btn:disabled,.primary-action:disabled,.secondary-action:disabled{opacity:.5;cursor:not-allowed}.site-header{position:sticky;z-index:50;top:0;height:64px;border-bottom:1px solid var(--border);background:var(--header-bg);backdrop-filter:saturate(180%) blur(20px)}.header-inner{height:100%;display:flex;align-items:center;gap:32px}.brand{display:flex;align-items:center;gap:10px;font-weight:600;font-size:15px;letter-spacing:-.01em;white-space:nowrap}.brand-mark{width:22px;height:22px;border-radius:6px;display:grid;place-items:center;font-size:12px;font-weight:700;background:var(--brand-mark-bg);color:var(--brand-mark-text)}.brand-link{display:flex;align-items:center;gap:10px}.brand small{font-size:13px;font-weight:400;color:var(--text-3);padding-left:10px;border-left:1px solid var(--border-2);cursor:default}.main-nav{display:flex;gap:24px}.main-nav a{font-size:13.5px;color:var(--text-3);white-space:nowrap;transition:color .15s}.main-nav a:hover,.main-nav a[aria-current=page]{color:var(--text)}.header-actions{margin-left:auto;display:flex;align-items:center;gap:8px}.header-actions svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}.menu-button,.main-nav .nav-only-mobile{display:none}@media(max-width:1100px){.main-nav{display:none;position:absolute;top:64px;left:0;right:0;flex-direction:column;gap:0;padding:4px var(--gutter) 16px;background:var(--bg);border-bottom:1px solid var(--border)}.main-nav.is-open{display:flex}.main-nav a{display:flex;align-items:center;min-height:48px;font-size:15px;border-bottom:1px solid var(--border)}.main-nav .nav-only-mobile{display:flex}.menu-button{display:inline-flex}.header-actions .search-label,.header-actions .subscribe,.brand small{display:none}}.site-footer{margin-top:var(--section-gap);border-top:1px solid var(--border);padding:56px 0 72px}.footer-inner{display:grid;grid-template-columns:minmax(0,2fr) repeat(2,minmax(0,1fr));gap:32px}.site-footer p{margin:16px 0 0;font-size:13px;color:var(--text-3);line-height:1.7}.site-footer h2{margin:0 0 14px;font-size:13px;font-weight:500;color:var(--text-2)}.site-footer ul{list-style:none;margin:0;padding:0;display:grid;gap:10px}.site-footer li a{font-size:13.5px;color:var(--text-3)}.site-footer li a:hover{color:var(--text)}@media(max-width:640px){.footer-inner{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.footer-inner>:first-child{grid-column:1 / -1}}.page-shell{width:min(var(--page),100% - 2 * var(--gutter));min-height:60vh;margin:auto;padding-top:96px}@media(max-width:640px){.page-shell{padding-top:56px}}.page-header{max-width:760px;margin-bottom:48px}.page-shell.is-narrow{width:min(680px,100% - 2 * var(--gutter))}.eyebrow{display:flex;align-items:center;gap:8px;margin:0 0 16px;font-size:14px;color:var(--text-3)}.eyebrow:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--c, var(--accent))}.page-title,.gradient-title{margin:0;font-size:clamp(36px,5.6vw,60px);line-height:1.1;font-weight:600;letter-spacing:-.02em;text-wrap:balance;background:var(--title-gradient);-webkit-background-clip:text;background-clip:text;color:transparent}.page-lead{margin:20px 0 0;max-width:600px;font-size:17px;line-height:1.65;color:var(--text-3);text-wrap:pretty}.empty-state{padding:48px 24px;border:1px dashed var(--border-2);border-radius:var(--radius);color:var(--text-3);text-align:center;font-size:14px;line-height:1.7}.post-list{border-top:1px solid var(--border)}.post-row{position:relative;display:grid;grid-template-columns:64px minmax(0,1fr) auto;gap:16px;align-items:baseline;padding:20px 12px;border-bottom:1px solid var(--border);transition:background .1s}.post-row:hover{background:var(--hover)}.post-row time,.post-row>span{font-size:12.5px;color:var(--text-3);font-variant-numeric:tabular-nums;white-space:nowrap}.post-row a{font-size:16px;font-weight:500;letter-spacing:-.01em;color:var(--text)}.post-row a:after{content:"";position:absolute;inset:0}.post-row p{margin:6px 0 0;font-size:13.5px;line-height:1.6;color:var(--text-3)}.post-row .post-meta{display:flex;align-items:center;gap:12px}@media(max-width:640px){.post-row{grid-template-columns:minmax(0,1fr);gap:6px;padding:18px 0}.post-row:hover{background:none}.post-row>span,.post-row .post-meta{display:none}.post-row p{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}}.tag-pills{display:flex;flex-wrap:wrap;gap:6px}.tag-pills a{display:inline-flex;align-items:center;height:26px;padding:0 10px;border:1px solid var(--border);border-radius:999px;font-size:12.5px;color:var(--text-3);transition:color .15s,border-color .15s}.tag-pills a:hover{color:var(--text);border-color:var(--border-2)}.prose{font-family:var(--font-reading);font-size:17px;line-height:1.9;color:var(--text-2);overflow-wrap:break-word}.prose>:first-child{margin-top:0}.prose h2,.prose h3,.prose h4{color:var(--text);font-weight:600;letter-spacing:-.015em;line-height:1.35;scroll-margin-top:96px;text-wrap:balance}.prose h1{font-size:26px;margin:80px 0 18px;color:var(--text);font-weight:600;letter-spacing:-.02em;line-height:1.3;scroll-margin-top:96px;text-wrap:balance}.prose h2{font-size:22px;margin:80px 0 18px}.prose h3{font-size:18px;margin:52px 0 14px}.prose h4{font-size:16px;margin:40px 0 12px}.prose:is([data-top="1"]) h1,.prose:is([data-top="2"],:not([data-top])) h2,.prose[data-top="3"] h3,.prose[data-top="4"] h4{margin-top:56px;padding-top:40px;border-top:1px solid var(--border)}.prose>:is(h1,h2,h3,h4):first-child{margin-top:0;padding-top:0;border-top:0}.prose li>:is(ul,ol){margin-top:10px}.prose p,.prose ul,.prose ol{margin:0 0 26px}.prose ul,.prose ol{padding-left:1.3em}.prose li{margin-bottom:10px}.prose li::marker{color:var(--text-3)}.prose strong{color:var(--text);font-weight:600}.prose a{color:var(--accent-text);text-decoration:underline;text-decoration-color:var(--link-decoration);text-underline-offset:3px}.prose a:hover{text-decoration-color:var(--accent-text)}.prose blockquote{margin:32px 0;padding:4px 0 4px 18px;border-left:2px solid var(--border-2);color:var(--text-3)}.prose blockquote p{margin:0}.prose hr{margin:48px 0;border:0;border-top:1px solid var(--border)}.prose img,.prose figure{margin:32px auto;border-radius:10px}.prose figcaption{margin-top:-16px;font-size:13px;color:var(--text-3);text-align:center}.prose video{width:100%;max-height:75vh;margin:32px auto;border-radius:10px;background:#000}.prose :not(pre)>code{font-family:var(--mono);font-size:.84em;padding:2px 6px;border-radius:5px;background:var(--panel-2);border:1px solid var(--border);color:var(--text)}.prose table{display:block;overflow-x:auto;width:100%;margin:32px 0;border-collapse:collapse;font-size:14px;border:1px solid var(--border);border-radius:10px}.prose th,.prose td{padding:10px 14px;text-align:left;border-bottom:1px solid var(--border);vertical-align:top}.prose tr:last-child td{border-bottom:0}.prose th{font-weight:500;color:var(--text-3);background:var(--panel);white-space:nowrap}.prose mark{color:inherit;background:var(--mark-bg);border-radius:3px;padding:0 .15em}.prose .missing-media{margin:24px 0;padding:14px 18px;border:1px dashed var(--border-2);border-radius:10px;color:var(--text-3);font-size:14px}.prose .obsidian-callout{margin:24px 0;padding:14px 18px;border:1px solid var(--border);border-left:2px solid var(--accent);border-radius:0 10px 10px 0;background:var(--panel)}.prose .obsidian-callout-title{display:block;font-weight:600;color:var(--text)}.prose summary.obsidian-callout-title{display:list-item;cursor:pointer}.prose .obsidian-unresolved{text-decoration:underline dotted;text-underline-offset:4px}.prose pre,.code-block pre{margin:0;padding:16px 18px;overflow-x:auto;font-family:var(--mono);font-size:13px;line-height:1.75;background-color:var(--bg-2)!important;scrollbar-width:thin;scrollbar-color:var(--border-2) transparent}.prose>pre,.prose .code-block{margin:32px 0;border:1px solid var(--border);border-radius:10px}.prose .code-block{overflow:hidden;background:var(--bg-2)}.prose .code-block pre{border:0;border-radius:0}.astro-code,.astro-code span{color:var(--shiki-dark)}:root[data-theme=light] :is(.astro-code,.astro-code span){color:var(--shiki-light)}:root[data-theme=light] :is(.prose pre,.code-block pre,.prose .code-block){background-color:var(--panel)!important}.code-head{display:flex;align-items:center;height:36px;padding:0 8px 0 14px;border-bottom:1px solid var(--border);font-family:var(--mono);font-size:12px;color:var(--text-3)}.code-copy{margin-left:auto;height:24px;padding:0 8px;border:1px solid var(--border);border-radius:5px;background:transparent;font-family:var(--mono);font-size:11.5px;color:var(--text-3);cursor:pointer;transition:color .15s,border-color .15s}.code-copy:hover{color:var(--text);border-color:var(--border-2)}.code-copy[data-state=done]{color:var(--tone-green);border-color:var(--copy-done-border)}.motion-ready :is(.hero .pill,.hero-title .line,.hero-lead,.hero>.wrap>.hero-cta,.ws){opacity:0}.has-spotlight{position:relative}.has-spotlight:after{content:"";position:absolute;inset:0;z-index:2;padding:1px;border-radius:inherit;pointer-events:none;background:radial-gradient(320px circle at var(--mx, 50%) var(--my, 50%),var(--spotlight),transparent 65%);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:0;transition:opacity .3s}.has-spotlight:hover:after{opacity:1}.read-progress{display:none;position:fixed;z-index:51;top:63px;left:0;right:0;height:2px;transform:scaleX(0);transform-origin:left center;background:linear-gradient(90deg,var(--accent),var(--accent-text));pointer-events:none}:root[data-motion=on] .read-progress{display:block}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:1ms!important;animation:none!important}}.chat-widget{position:fixed;z-index:40;right:max(20px,env(safe-area-inset-right));bottom:max(20px,env(safe-area-inset-bottom))}.chat-toggle{display:grid;width:44px;height:44px;place-items:center;padding:0;border:1px solid var(--border-2);border-radius:12px;color:var(--text-2);background:var(--panel-2);box-shadow:var(--shadow-float);cursor:pointer;transition:color .15s,border-color .15s,transform .1s}.chat-toggle:hover{color:var(--text);border-color:var(--control-hover-border)}.chat-toggle:active{transform:scale(.96)}.chat-toggle svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7}.chat-widget.is-open .chat-toggle{display:none}.chat-panel{display:flex;flex-direction:column;width:min(380px,calc(100vw - 32px));height:min(540px,calc(100vh - 96px));overflow:hidden;border:1px solid var(--border-2);border-radius:var(--radius);background:var(--panel);box-shadow:var(--shadow-panel)}.chat-widget:not(.is-open) .chat-panel{display:none}.chat-panel header{display:flex;justify-content:space-between;align-items:center;gap:12px;height:48px;padding:0 8px 0 16px;border-bottom:1px solid var(--border)}.chat-panel header strong{font-size:14px;font-weight:500}.chat-panel header button{width:32px;height:32px;border:0;border-radius:8px;color:var(--text-3);background:transparent;font-size:18px;cursor:pointer}.chat-panel header button:hover{color:var(--text);background:var(--hover)}.chat-lead{margin:12px 16px 0;color:var(--text-3);font-size:12.5px;line-height:1.6}.chat-log{flex:1;overflow:auto;display:grid;align-content:start;gap:12px;padding:16px;scrollbar-width:thin;scrollbar-color:var(--border-2) transparent}.chat-message{display:grid;gap:8px;max-width:92%;min-width:0}.chat-message.is-user{justify-self:end}.chat-bubble{padding:10px 12px;border:1px solid var(--border);border-radius:12px;background:var(--panel-2);color:var(--text-2);font-size:13.5px;line-height:1.7;overflow-wrap:anywhere}.chat-message.is-user .chat-bubble{color:var(--btn-primary-text);background:var(--btn-primary-bg);border-color:transparent}.chat-message.is-pending .chat-bubble,.chat-message.is-error .chat-bubble{color:var(--text-3)}.chat-bubble pre{max-width:100%;overflow-x:auto;margin:8px 0;padding:10px;border-radius:8px;background:var(--bg-2);white-space:pre;font-family:var(--mono);font-size:12px}.chat-bubble a{color:var(--accent-text);text-decoration:underline;text-underline-offset:2px}.chat-message.is-user .chat-bubble a{color:var(--btn-primary-text)}.chat-sources{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:0;padding:0}.chat-sources a{display:inline-flex;min-height:28px;align-items:center;padding:0 10px;border:1px solid var(--border);border-radius:999px;color:var(--text-3);font-size:12px}.chat-sources a:hover{color:var(--text);border-color:var(--border-2)}.chat-panel form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:12px;border-top:1px solid var(--border)}.chat-panel textarea{width:100%;min-height:40px;max-height:96px;resize:none;padding:9px 12px;outline:0;border:1px solid var(--border);border-radius:8px;color:var(--text);background:var(--bg-2);font-size:13.5px}.chat-panel textarea:focus{border-color:var(--border-2)}.chat-panel textarea::placeholder{color:var(--text-4)}.chat-panel form button[type=submit]{min-width:60px;border:0;border-radius:8px;color:var(--btn-primary-text);background:var(--btn-primary-bg);font-size:13.5px;font-weight:500;cursor:pointer}.chat-panel form button[type=submit]:hover{background:var(--btn-primary-hover)}.chat-panel form button[type=submit]:disabled{opacity:.5;cursor:wait}@media(max-width:720px){.chat-widget{right:12px;bottom:max(12px,env(safe-area-inset-bottom))}.chat-panel{width:min(100vw - 24px,380px);height:min(70vh,520px)}}
