:root{--color-primary:#38bdf8;--color-primary-dim:#0ea5e9;--color-primary-muted:#0284c7;--color-bg:#0c1222;--color-surface:#131b2e;--color-surface-raised:#1a2540;--color-surface-overlay:#1e293b;--color-text:#f1f5f9;--color-text-muted:#94a3b8;--color-text-dim:#64748b;--color-border:#1e293b;--color-border-focus:#38bdf8;--color-ai:#818cf8;--color-ai-dim:#6366f1;--color-visitor:#34d399;--color-visitor-dim:#10b981;--color-admin:#fbbf24;--color-admin-dim:#f59e0b;--color-success:#22c55e;--color-warning:#f59e0b;--color-error:#ef4444;--color-info:#38bdf8;--color-focus-ring:rgba(56,189,248,.4);--color-ai-bg:rgba(129,140,248,.15);--color-visitor-bg:rgba(52,211,153,.15);--color-admin-bg:rgba(251,191,36,.15);--color-link:var(--color-primary);--color-link-hover:var(--color-primary-dim);--space-xs:.25rem;--space-s:.5rem;--space-m:1rem;--space-l:2rem;--space-xl:4rem;--font-sans:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;--font-mono:ui-monospace,"Cascadia Code","Fira Code",Consolas,monospace;--font-xs:.75rem;--font-sm:.875rem;--font-base:1rem;--font-lg:1.25rem;--font-xl:1.5rem;--font-2xl:2rem;--weight-normal:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--leading-tight:1.25;--leading-normal:1.5;--leading-relaxed:1.75;--radius-xs:.125rem;--radius-s:.25rem;--radius-m:.5rem;--radius-l:.75rem;--radius-xl:1rem;--radius-button:var(--radius-s);--radius-input:var(--radius-s);--radius-card:var(--radius-m);--radius-chat-bubble:var(--radius-m);--radius-modal:var(--radius-l);--radius-pill:9999px;--radius-circle:50%;--shadow-xs:0 1px 2px rgba(0,0,0,.5);--shadow-s:0 2px 4px rgba(0,0,0,.4),0 1px 2px rgba(0,0,0,.3);--shadow-m:0 4px 12px rgba(0,0,0,.5),0 2px 4px rgba(0,0,0,.3);--shadow-l:0 8px 24px rgba(0,0,0,.6),0 4px 8px rgba(0,0,0,.4);--glow-primary:0 0 12px rgba(56,189,248,.3),0 0 4px rgba(56,189,248,.2);--glow-ai:0 0 8px rgba(129,140,248,.25);--glow-visitor:0 0 8px rgba(52,211,153,.25);--glow-admin:0 0 8px rgba(251,191,36,.25);--shadow-inset:inset 0 1px 3px rgba(0,0,0,.4);--shadow-card:0 0 0 1px rgba(255,255,255,.05),0 4px 16px rgba(0,0,0,.5);--shadow-card-hover:0 0 0 1px rgba(56,189,248,.15),0 8px 24px rgba(0,0,0,.6);--shadow-modal:0 0 0 1px rgba(255,255,255,.08),0 16px 48px rgba(0,0,0,.7);--shadow-focus:0 0 0 3px var(--color-focus-ring);--duration-instant:50ms;--duration-fast:.1s;--duration-normal:.2s;--duration-slow:.3s;--ease-default:cubic-bezier(.4,0,.2,1);--ease-in:cubic-bezier(0,0,.2,1);--ease-out:cubic-bezier(.4,0,1,1);--ease-bounce:cubic-bezier(.34,1.56,.64,1);--transition-fast:var(--duration-fast)var(--ease-default);--transition-normal:var(--duration-normal)var(--ease-default);--transition-colors:color var(--transition-fast),background-color var(--transition-fast),border-color var(--transition-fast);--transition-shadow:box-shadow var(--transition-normal)}@media (prefers-reduced-motion:reduce){:root{--duration-instant:0s;--duration-fast:0s;--duration-normal:0s;--duration-slow:0s}}*,:before,:after{box-sizing:border-box}*{margin:0;padding:0}html{scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}img,picture,video,canvas,svg{max-width:100%;display:block}input,button,textarea,select{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:none}a{color:inherit;text-decoration:none}ul,ol{list-style:none}:focus-visible{outline:2px solid var(--color-border-focus);outline-offset:2px}:focus:not(:focus-visible){outline:none}body{background-color:var(--color-bg);min-height:100dvh;color:var(--color-text);font-family:var(--font-sans);font-size:var(--font-base);line-height:var(--leading-normal);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:var(--color-link);transition:color .15s}a:hover{color:var(--color-link-hover)}::selection{background-color:var(--color-primary);color:var(--color-bg)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-surface)}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-dim)}@supports (scrollbar-color:auto){*{scrollbar-color:var(--color-border)var(--color-surface);scrollbar-width:thin}}.stack{gap:var(--stack-gap,var(--space-m));flex-direction:column;display:flex}.stack[data-gap=xs]{--stack-gap:var(--space-xs)}.stack[data-gap=s]{--stack-gap:var(--space-s)}.stack[data-gap=l]{--stack-gap:var(--space-l)}.stack[data-gap=xl]{--stack-gap:var(--space-xl)}.cluster{gap:var(--cluster-gap,var(--space-s));flex-wrap:wrap;align-items:center;display:flex}.cluster[data-gap=xs]{--cluster-gap:var(--space-xs)}.cluster[data-gap=m]{--cluster-gap:var(--space-m)}.cluster[data-gap=l]{--cluster-gap:var(--space-l)}.sidebar{gap:var(--space-l);flex-wrap:wrap;display:flex}.sidebar>:first-child{flex-grow:1;flex-basis:280px}.sidebar>:last-child{flex-grow:999;flex-basis:0;min-inline-size:50%}.center{box-sizing:content-box;max-inline-size:60rem;padding-inline:var(--space-m);margin-inline:auto}.cover{min-block-size:100vh;padding:var(--space-m);flex-direction:column;display:flex}.cover>:first-child:not(.cover__center){margin-block-start:0}.cover>:last-child:not(.cover__center){margin-block-end:0}.cover>.cover__center{margin-block:auto}.modal{display:var(--modal-display,none);z-index:200;padding:var(--space-l);opacity:var(--modal-opacity,0);pointer-events:var(--modal-pointer-events,none);transition:opacity var(--duration-normal)var(--ease-default);justify-content:flex-end;align-items:flex-end;position:fixed;inset:0}.modal__overlay{backdrop-filter:blur(2px);background-color:rgba(0,0,0,.6);position:fixed;inset:0}.modal__content{width:min(var(--modal-width,24rem),100vw - var(--space-l)*2);max-height:min(var(--modal-height,32rem),100vh - var(--space-l)*2);background-color:var(--color-surface);border-radius:var(--radius-modal);box-shadow:var(--shadow-modal);flex-direction:column;display:flex;position:relative;overflow:hidden}.modal__header{justify-content:space-between;align-items:center;gap:var(--space-m);padding:var(--space-m);background-color:var(--color-surface-raised);border-block-end:1px solid var(--color-border);display:flex}.modal__title{font-size:var(--font-lg);font-weight:var(--weight-semibold);color:var(--color-text);margin:0}.modal__close{flex-shrink:0;margin-inline-start:auto}.modal__body{flex:1;min-height:0;overflow-y:auto}.modal__footer{justify-content:flex-end;align-items:center;gap:var(--space-s);padding:var(--space-m);background-color:var(--color-surface-raised);border-block-start:1px solid var(--color-border);display:flex}.about{max-width:48rem;padding:var(--space-l);--stack-gap:var(--space-xl);margin-inline:auto}.about__header{text-align:center;padding-block:var(--space-l)}.about__header h1{font-size:var(--font-2xl);font-weight:var(--weight-bold);color:var(--color-text);letter-spacing:-.025em;margin:0}.about__tagline{font-size:var(--font-lg);font-weight:var(--weight-medium);color:var(--color-primary);margin-block:var(--space-s)0}.about__location{font-size:var(--font-sm);color:var(--color-text-dim);margin-block:var(--space-xs)0}.about__header-contact{padding:var(--space-s)var(--space-l);margin-block-start:var(--space-m)}.about__intro h2,.about__experience h2,.about__skills h2,.about__contact h2{font-size:var(--font-xl);font-weight:var(--weight-semibold);color:var(--color-text);margin:0 0 var(--space-m);border-block-end:1px solid var(--color-border);padding-block-end:var(--space-s)}.about__intro p,.about__experience p,.about__skills p,.about__contact p{color:var(--color-text-muted);line-height:var(--leading-relaxed);margin:0}.about__experience{gap:var(--space-l);flex-direction:column;display:flex}.about__project{padding:var(--space-m);background-color:var(--color-surface);border-radius:var(--radius-card);box-shadow:var(--shadow-card);transition:var(--transition-shadow)}.about__project:hover{box-shadow:var(--shadow-card-hover)}.about__project h3{font-size:var(--font-lg);font-weight:var(--weight-semibold);color:var(--color-text);margin:0}.about__project>p{margin-block-start:var(--space-s)}.about__project>a{font-size:var(--font-sm);font-weight:var(--weight-medium);color:var(--color-link);transition:var(--transition-colors);margin-block-start:var(--space-m);text-decoration:none;display:inline-block}.about__project>a:hover{color:var(--color-link-hover);text-decoration:underline}.about__project>a:focus-visible{outline:2px solid var(--color-border-focus);outline-offset:2px;border-radius:var(--radius-xs)}.about__project-subtitle{font-size:var(--font-sm);font-weight:var(--weight-medium);color:var(--color-text-dim);margin-block-start:var(--space-xs)}.about__project-stack{font-family:var(--font-mono);font-size:var(--font-xs);color:var(--color-primary-muted);margin-block-start:var(--space-s)}.about__skill-groups{--stack-gap:var(--space-m)}.about__skill-group h3{font-size:var(--font-base);font-weight:var(--weight-semibold);color:var(--color-text);margin:0 0 var(--space-s)}.about__skill-group ul{margin:0;padding:0;list-style:none}.about__skill-group li{font-size:var(--font-sm);color:var(--color-text-muted);padding:var(--space-xs)var(--space-s);background-color:var(--color-surface);border-radius:var(--radius-pill);border:1px solid var(--color-border);transition:var(--transition-colors)}.about__skill-group li:hover{border-color:var(--color-primary-muted);color:var(--color-text)}.about__contact{align-items:center;gap:var(--space-m);text-align:center;padding:var(--space-l);background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-card);box-shadow:var(--shadow-card);transition:var(--transition-shadow);flex-direction:column;display:flex}.about__contact:hover{box-shadow:var(--shadow-card-hover)}.about__contact h2{border:none;margin:0;padding:0}.about__contact p{margin:0}.about__contact a{font-weight:var(--weight-medium);color:var(--color-link);transition:var(--transition-colors);text-decoration:none}.about__contact a:hover{color:var(--color-link-hover);text-decoration:underline}.about__contact a:focus-visible{outline:2px solid var(--color-border-focus);outline-offset:2px;border-radius:var(--radius-xs)}.button{justify-content:center;align-items:center;gap:var(--space-xs);padding:var(--space-s)var(--space-m);font-size:var(--font-base);font-weight:var(--weight-medium);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-button);cursor:var(--button-cursor,pointer);opacity:var(--button-opacity,1);pointer-events:var(--button-pointer-events,auto);transition:var(--transition-fast);background-color:transparent;line-height:1;transition-property:color,background-color,border-color,box-shadow,transform;display:inline-flex}.button:hover{border-color:var(--color-primary-dim);transform:translateY(-1px)}.button:active{transform:translateY(0)}.button:focus-visible{box-shadow:var(--shadow-focus);outline:none}.button--primary{color:var(--color-bg);background-color:var(--color-primary);border-color:var(--color-primary)}.button--primary:hover{background-color:var(--color-primary-dim);border-color:var(--color-primary-dim);box-shadow:var(--glow-primary)}.button--secondary{color:var(--color-text);background-color:var(--color-surface-raised);border-color:var(--color-border)}.button--secondary:hover{background-color:var(--color-surface-overlay);border-color:var(--color-primary-muted)}.button--ghost{padding:var(--space-xs);color:var(--color-text-muted);background-color:transparent;border-color:transparent}.button--ghost:hover{color:var(--color-text);background-color:var(--color-surface-raised)}.button--danger{color:var(--color-bg);background-color:var(--color-error);border-color:var(--color-error)}.button--danger:hover{background-color:color-mix(in srgb,var(--color-error)85%,black);border-color:color-mix(in srgb,var(--color-error)85%,black)}.button.button--icon{padding:var(--space-s);aspect-ratio:1}.button.button--icon svg{width:1.25em;height:1.25em}.button__icon{flex-shrink:0;width:1em;height:1em}.chat{flex-direction:column;height:100%;min-height:20rem;display:flex}.chat__status{align-items:center;gap:var(--space-xs);padding:var(--space-xs)var(--space-m);font-size:var(--font-sm);color:var(--status-color,var(--color-text-muted));background-color:var(--color-surface-raised);border-block-end:1px solid var(--color-border);display:flex}.chat__status:before{content:"";background-color:var(--status-color,var(--color-text-dim));border-radius:50%;width:.5rem;height:.5rem}.chat__status-indicator{align-items:center;gap:var(--space-xs);padding-inline:var(--space-xs);padding-block:var(--space-3xs);font-size:var(--font-xs);color:var(--color-text-muted);background-color:var(--color-surface-alt);transition:background-color var(--transition-fast),color var(--transition-fast);border-radius:999px;display:inline-flex}.chat__status-indicator:before{content:"";background-color:var(--color-text-muted);width:.5em;height:.5em;transition:background-color var(--transition-fast);border-radius:50%;display:block}.chat__status-indicator[data-online=true]{color:var(--color-success)}.chat__status-indicator[data-online=true]:before{background-color:var(--color-success)}.chat__messages{min-height:0;padding:var(--space-m);--stack-gap:var(--space-s);flex:1;overflow-y:auto}.chat__message{gap:var(--space-xs);max-width:85%;padding:var(--space-s)var(--space-m);border-radius:var(--radius-chat-bubble);background-color:var(--color-surface-raised);border:1px solid var(--color-border);flex-direction:column;display:flex}.chat__message[data-sender=visitor]{background-color:var(--color-visitor-bg);border-color:color-mix(in srgb,var(--color-visitor)30%,transparent);align-self:flex-end}.chat__message[data-sender=ai]{background-color:var(--color-ai-bg);border-color:color-mix(in srgb,var(--color-ai)30%,transparent);align-self:flex-start}.chat__message[data-sender=admin]{background-color:var(--color-admin-bg);border-color:color-mix(in srgb,var(--color-admin)30%,transparent);align-self:flex-start}.chat__message-content{font-size:var(--font-base);color:var(--color-text);line-height:var(--leading-normal);word-break:break-word}.chat__message-content .markdown-content>:first-child{margin-block-start:0}.chat__message-content .markdown-content>:last-child{margin-block-end:0}.chat__message-content .markdown-content p{margin-block:var(--space-xs)}.chat__message-content .markdown-content code{font-family:var(--font-mono,monospace);background-color:var(--color-surface);border-radius:var(--radius-xs);padding:.125em .25em;font-size:.875em}.chat__message-content .markdown-content pre{margin-block:var(--space-s);padding:var(--space-s);background-color:var(--color-surface);border-radius:var(--radius-s);overflow-x:auto}.chat__message-content .markdown-content pre code{background-color:transparent;padding:0}.chat__message-content .markdown-content ul,.chat__message-content .markdown-content ol{margin-block:var(--space-xs);padding-inline-start:var(--space-l)}.chat__message-content .markdown-content strong{font-weight:600}.chat__message-content .markdown-content em{font-style:italic}.chat__message-meta{font-size:var(--font-xs);color:var(--color-text-dim)}.chat__input-area{gap:var(--space-s);padding:var(--space-m);background-color:var(--color-surface-raised);border-block-start:1px solid var(--color-border);display:flex}.chat__input{padding:var(--space-s)var(--space-m);font-size:var(--font-base);color:var(--color-text);background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-input);transition:var(--transition-fast);flex:1;font-family:inherit}.chat__input::placeholder{color:var(--color-text-dim)}.chat__input:focus{border-color:var(--color-border-focus);box-shadow:var(--shadow-focus);outline:none}.chat__send{flex-shrink:0}.chat-fab{bottom:var(--space-l);right:var(--space-l);z-index:100;min-width:4rem;min-height:2.5rem;box-shadow:var(--shadow-l);position:fixed}.chat-fab:hover{box-shadow:var(--shadow-l),0 0 16px rgba(56,189,248,.4)}.chat-modal,.contact-modal{--modal-width:40rem;--modal-height:40rem}.contact-modal__links{justify-content:center;gap:var(--space-s);padding:var(--space-m);flex-direction:row;display:flex}.contact-modal__link{align-items:center;gap:var(--space-s);padding:var(--space-m);font-size:var(--font-base);font-weight:var(--weight-medium);color:var(--color-text);background-color:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-card);transition:var(--transition-fast);text-decoration:none;display:flex}.contact-modal__link:hover{border-color:var(--color-primary-dim);box-shadow:var(--shadow-card-hover)}.contact-modal__link:focus-visible{box-shadow:var(--shadow-focus);outline:none}.contact-modal__link-icon{width:1.25rem;height:1.25rem;color:var(--color-primary);flex-shrink:0;display:flex}.contact-modal__link-icon svg{width:100%;height:100%}.contact-modal__divider{align-items:center;gap:var(--space-m);padding:var(--space-s)var(--space-m);color:var(--color-text-muted);font-size:var(--font-sm);display:flex}.contact-modal__divider:before,.contact-modal__divider:after{content:"";background-color:var(--color-border);flex:1;height:1px}.contact-modal__form{padding:0 var(--space-m)var(--space-m)}.form{--stack-gap:var(--space-m)}.form__group{gap:var(--space-xs);flex-direction:column;display:flex}.form__label{font-size:var(--font-sm);font-weight:var(--weight-medium);color:var(--color-text)}.form__input,.form__textarea{padding:var(--space-s)var(--space-m);font-size:var(--font-base);color:var(--color-text);background-color:var(--color-surface);border:1px solid var(--field-border-color,var(--color-border));border-radius:var(--radius-input);transition:var(--transition-fast);font-family:inherit}.form__input::placeholder{color:var(--color-text-dim)}.form__textarea::placeholder{color:var(--color-text-dim)}.form__input:focus,.form__textarea:focus{border-color:var(--color-border-focus);box-shadow:var(--shadow-focus);outline:none}.form__textarea{resize:vertical;min-height:8rem;line-height:var(--leading-normal)}.form__hint{font-size:var(--font-xs);color:var(--color-text-muted)}.form__error{font-size:var(--font-sm);color:var(--color-error)}.form__success{font-size:var(--font-sm);color:var(--color-success)}.form__honeypot{opacity:0;pointer-events:none;position:absolute;left:-9999px}.form__actions{justify-content:flex-end;gap:var(--space-s);padding-block-start:var(--space-s);display:flex}.login{min-block-size:100dvh;padding:var(--space-m);background-color:var(--color-bg);animation:login-enter var(--duration-slow)var(--ease-out);flex-direction:column;justify-content:center;align-items:center;display:flex}.login__card{width:min(24rem,100%);padding:var(--space-l);background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-card);box-shadow:var(--shadow-card);transition:box-shadow var(--transition-normal)}.login__card:focus-within{box-shadow:var(--shadow-card-hover)}.login__card[data-shake=true]{animation:shake var(--duration-slow)var(--ease-default)}.login__header{text-align:center;margin-block-end:var(--space-l)}.login__icon{width:4rem;height:4rem;color:var(--color-primary);background-color:var(--color-surface-raised);border-radius:var(--radius-circle);animation:bounce-in var(--duration-slow)var(--ease-bounce);justify-content:center;align-items:center;margin-block-end:var(--space-m);margin-inline:auto;display:flex}.login__icon svg{width:2rem;height:2rem}.login__title{font-size:var(--font-xl);font-weight:var(--weight-semibold);color:var(--color-text);margin:0}.login__form{--stack-gap:var(--space-m)}.login__field{gap:var(--space-xs);flex-direction:column;display:flex}.login__label{font-size:var(--font-sm);font-weight:var(--weight-medium);color:var(--color-text)}.login__input{padding:var(--space-s)var(--space-m);font-size:var(--font-base);color:var(--color-text);background-color:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-input);transition:border-color var(--duration-fast)var(--ease-default),box-shadow var(--duration-normal)var(--ease-default);font-family:inherit}.login__input::placeholder{color:var(--color-text-dim)}.login__input:focus{border-color:var(--color-border-focus);box-shadow:var(--shadow-focus);outline:none}.login__input[data-error=true]{border-color:var(--color-error)}.login__error{font-size:var(--font-sm);color:var(--color-error);animation:fade-in var(--duration-fast)var(--ease-out)}.login__button{width:100%;padding:var(--space-s)var(--space-m);font-size:var(--font-base);font-weight:var(--weight-medium);color:var(--color-bg);background-color:var(--color-primary);border-radius:var(--radius-button);cursor:pointer;transition:background-color var(--transition-fast),transform var(--transition-fast),box-shadow var(--transition-normal);border:none;justify-content:center;align-items:center;display:flex;position:relative}.login__button:hover:not(:disabled){background-color:var(--color-primary-dim);box-shadow:var(--glow-primary);transform:translateY(-1px)}.login__button:active:not(:disabled){transform:translateY(0)}.login__button:focus-visible{box-shadow:var(--shadow-focus);outline:none}.login__button:disabled{opacity:.6;cursor:not-allowed}.login__button[data-loading=true]{color:transparent;pointer-events:none}.login__button[data-loading=true] .login__button-text{visibility:hidden}.login__button[data-loading=true]:after{content:"";border:2px solid var(--color-bg);border-radius:var(--radius-circle);border-top-color:transparent;width:1.25rem;height:1.25rem;animation:.6s linear infinite spin;position:absolute}.login__button-text{transition:visibility var(--duration-instant)}@keyframes login-enter{0%{opacity:0;transform:translateY(1rem)}to{opacity:1;transform:translateY(0)}}@keyframes bounce-in{0%{transform:scale(0)}60%{transform:scale(1.1)}to{transform:scale(1)}}@keyframes fade-in{0%{opacity:0;transform:translateY(-.25rem)}to{opacity:1;transform:translateY(0)}}@keyframes shake{0%,to{transform:translate(0)}20%,60%{transform:translate(-.5rem)}40%,80%{transform:translate(.5rem)}}@keyframes spin{to{transform:rotate(360deg)}}.admin{background-color:var(--color-bg);height:100vh;display:flex;overflow:hidden}.admin__sidebar{background-color:var(--color-surface);border-inline-end:1px solid var(--color-border);flex-direction:column;width:320px;min-width:280px;display:flex}.admin__sidebar-header{padding:var(--space-m)var(--space-l);border-block-end:1px solid var(--color-border);flex-shrink:0}.admin__title{font-size:var(--font-lg);font-weight:var(--weight-semibold);color:var(--color-text);letter-spacing:-.01em;margin:0}.admin__session-list{min-height:0;padding:var(--space-s);flex:1;overflow-y:auto}.admin__empty-sessions{padding:var(--space-xl)var(--space-m);text-align:center;justify-content:center;align-items:center;display:flex}.session-item{align-items:flex-start;gap:var(--space-s);width:100%;padding:var(--space-s)var(--space-m);background-color:var(--session-bg,transparent);border:1px solid var(--session-border-color,transparent);border-radius:var(--radius-m);text-align:start;cursor:pointer;transition:background-color .15s,border-color .15s,box-shadow .15s;display:flex}.session-item:hover{background-color:var(--color-surface-raised)}.session-item:focus-visible{box-shadow:var(--shadow-focus);outline:none}.session-item[data-active=true]{--session-bg:var(--color-surface-raised);--session-border-color:var(--color-primary-muted);box-shadow:inset 0 0 0 1px var(--color-primary-muted),0 0 12px rgba(56,189,248,.1)}.session-item[data-unread=true] .session-item__name{font-weight:var(--weight-semibold);color:var(--color-text)}.session-item[data-unread=true] .session-item__preview{color:var(--color-text-muted)}.session-item__status{flex-shrink:0;padding-block-start:.25rem}.session-item__online-dot{background-color:var(--color-text-dim);border-radius:var(--radius-circle);width:.5rem;height:.5rem;transition:background-color .15s,box-shadow .15s;display:block}.session-item__online-dot[data-online=true]{background-color:var(--color-success);box-shadow:0 0 6px var(--color-success);animation:2s ease-in-out infinite pulse-online}@keyframes pulse-online{0%,to{opacity:1;box-shadow:0 0 6px var(--color-success)}50%{opacity:.7;box-shadow:0 0 10px var(--color-success)}}.session-item__info{gap:var(--space-xs);flex-direction:column;flex:1;min-width:0;display:flex}.session-item__name{font-size:var(--font-base);font-weight:var(--weight-medium);color:var(--color-text);line-height:var(--leading-tight)}.session-item__preview{font-size:var(--font-sm);color:var(--color-text-dim);line-height:var(--leading-tight)}.session-item__meta{align-items:flex-end;gap:var(--space-xs);flex-direction:column;flex-shrink:0;display:flex}.session-item__time{font-size:var(--font-xs)}.session-item__badge{min-width:1.25rem;height:1.25rem;font-size:var(--font-xs);font-weight:var(--weight-semibold);color:var(--color-bg);background-color:var(--color-primary);border-radius:var(--radius-pill);justify-content:center;align-items:center;padding-inline:.375rem;display:flex}.admin__main{background-color:var(--color-bg);flex-direction:column;flex:1;min-width:0;display:flex}.admin__empty-state{justify-content:center;align-items:center;gap:var(--space-m);height:100%;padding:var(--space-xl);text-align:center;flex-direction:column;display:flex}.admin__empty-icon{color:var(--color-text-dim);opacity:.5;font-size:4rem}.admin__empty-text{font-size:var(--font-lg);font-weight:var(--weight-medium);color:var(--color-text-muted);margin:0}.admin__empty-hint{font-size:var(--font-sm);margin:0}.admin__conversation{flex-direction:column;height:100%;display:flex}.admin__conversation-header{padding:var(--space-m)var(--space-l);background-color:var(--color-surface);border-block-end:1px solid var(--color-border);flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.admin__conversation-info{align-items:center;gap:var(--space-m);display:flex}.admin__conversation-title{font-size:var(--font-lg);font-weight:var(--weight-semibold);color:var(--color-text);margin:0}.admin__status-badge{align-items:center;gap:var(--space-xs);padding:var(--space-xs)var(--space-s);font-size:var(--font-xs);font-weight:var(--weight-medium);color:var(--color-text-muted);background-color:var(--color-surface-raised);border-radius:var(--radius-pill);transition:color .15s,background-color .15s;display:inline-flex}.admin__status-badge:before{content:"";border-radius:var(--radius-circle);background-color:var(--color-text-dim);width:.5em;height:.5em;transition:background-color .15s;display:block}.admin__status-badge[data-status=connected]{color:var(--color-success)}.admin__status-badge[data-status=connected]:before{background-color:var(--color-success)}.admin__status-badge[data-status=connecting]{color:var(--color-warning)}.admin__status-badge[data-status=connecting]:before{background-color:var(--color-warning);animation:1s ease-in-out infinite pulse-connecting}.admin__status-badge[data-status=disconnected]{color:var(--color-error)}.admin__status-badge[data-status=disconnected]:before{background-color:var(--color-error)}@keyframes pulse-connecting{0%,to{opacity:1}50%{opacity:.4}}.admin__messages{min-height:0;padding:var(--space-m)var(--space-l);--stack-gap:var(--space-m);flex:1;overflow-y:auto}.admin__message{gap:var(--space-xs);max-width:75%;padding:var(--space-s)var(--space-m);background-color:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-m);flex-direction:column;transition:box-shadow .15s;display:flex}.admin__message[data-sender=visitor]{background-color:color-mix(in srgb,var(--color-visitor)10%,var(--color-surface));border-color:color-mix(in srgb,var(--color-visitor)30%,transparent);align-self:flex-start}.admin__message[data-sender=ai]{background-color:color-mix(in srgb,var(--color-ai)10%,var(--color-surface));border-color:color-mix(in srgb,var(--color-ai)30%,transparent);align-self:flex-start}.admin__message[data-sender=admin]{background-color:color-mix(in srgb,var(--color-admin)10%,var(--color-surface));border-color:color-mix(in srgb,var(--color-admin)30%,transparent);align-self:flex-end}.admin__message[data-sender=system]{background-color:var(--color-surface);border-color:var(--color-border);text-align:center;align-self:center;max-width:90%;font-style:italic}.admin__message-header{align-items:baseline;gap:var(--space-s);display:flex}.admin__message-sender{font-size:var(--font-sm);font-weight:var(--weight-semibold);color:var(--color-text)}[data-sender=visitor] .admin__message-sender{color:var(--color-visitor)}[data-sender=ai] .admin__message-sender{color:var(--color-ai)}[data-sender=admin] .admin__message-sender{color:var(--color-admin)}.admin__message-time{font-size:var(--font-xs)}.admin__message-content{font-size:var(--font-base);color:var(--color-text);line-height:var(--leading-normal);word-break:break-word}.admin__message-content .markdown-content>:first-child{margin-block-start:0}.admin__message-content .markdown-content>:last-child{margin-block-end:0}.admin__message-content .markdown-content p{margin-block:var(--space-xs)}.admin__message-content .markdown-content code{font-family:var(--font-mono);background-color:var(--color-surface);border-radius:var(--radius-xs);padding:.125em .25em;font-size:.875em}.admin__message-content .markdown-content pre{margin-block:var(--space-s);padding:var(--space-s);background-color:var(--color-surface);border-radius:var(--radius-s);overflow-x:auto}.admin__message-content .markdown-content pre code{background-color:transparent;padding:0}.admin__input-area{gap:var(--space-s);padding:var(--space-m)var(--space-l);background-color:var(--color-surface);border-block-start:1px solid var(--color-border);flex-shrink:0;display:flex}.admin__input{padding:var(--space-s)var(--space-m);font-size:var(--font-base);color:var(--color-text);background-color:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-m);flex:1;font-family:inherit;transition:border-color .15s,box-shadow .15s}.admin__input::placeholder{color:var(--color-text-dim)}.admin__input:focus{border-color:var(--color-border-focus);box-shadow:var(--shadow-focus);outline:none}.admin__send{flex-shrink:0}.admin__footer{padding:var(--space-s)var(--space-m);background-color:var(--color-surface-raised);border-block-start:1px solid var(--color-border);flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.admin__footer-link,.admin__footer-btn{align-items:center;gap:var(--space-xs);padding:var(--space-xs)var(--space-s);font-size:var(--font-sm);color:var(--color-text-muted);border-radius:var(--radius-s);text-decoration:none;transition:color .15s,background-color .15s;display:inline-flex}.admin__footer-link:hover,.admin__footer-btn:hover{color:var(--color-text);background-color:var(--color-surface-overlay)}.admin__footer-link:focus-visible{box-shadow:var(--shadow-focus);outline:none}.admin__footer-btn:focus-visible{box-shadow:var(--shadow-focus);outline:none}.admin__footer-link svg,.admin__footer-btn svg{width:1em;height:1em}@media (width<=768px){.admin{flex-direction:column}.admin__sidebar{border-inline-end:none;border-block-end:1px solid var(--color-border);width:100%;max-height:40vh}.admin__main{flex:1;min-height:0}.admin__message{max-width:90%}}.security{width:min(64rem,100%);padding:var(--space-l)}.security__header{border-block-end:1px solid var(--color-border);justify-content:space-between;align-items:center;margin-block-end:var(--space-m);padding-block-end:var(--space-l)}.security__header h1{font-size:var(--font-xl);font-weight:var(--weight-semibold);letter-spacing:-.02em;margin:0}.security__section{padding:var(--space-l);background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-card);box-shadow:var(--shadow-card)}.security__section h2{margin:0 0 var(--space-m);font-size:var(--font-lg);font-weight:var(--weight-semibold);color:var(--color-text)}.security__table-container{margin-inline:calc(-1*var(--space-s));padding-inline:var(--space-s);overflow-x:auto}.security__table{border-collapse:collapse;width:100%}.security__table thead{background-color:var(--color-surface-raised)}.security__table th,.security__table td{padding:var(--space-s)var(--space-m);text-align:left}.security__table th{font-size:var(--font-sm);font-weight:var(--weight-semibold);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;border-block-end:1px solid var(--color-border)}.security__table td{font-size:var(--font-base);color:var(--color-text);border-block-end:1px solid color-mix(in srgb,var(--color-border)50%,transparent)}.security__table tbody tr{transition:background-color var(--transition-fast)}.security__table tbody tr:last-child td{border-block-end:none}.security__table tbody tr:hover{background-color:var(--color-surface-raised)}.security__table tbody tr[data-current=true]{background-color:color-mix(in srgb,var(--color-primary)8%,transparent)}.security__table tbody tr[data-current=true]:hover{background-color:color-mix(in srgb,var(--color-primary)12%,transparent)}.security__table tbody tr[data-success=false]{background-color:color-mix(in srgb,var(--color-error)5%,transparent)}.security__table tbody tr[data-success=false]:hover{background-color:color-mix(in srgb,var(--color-error)8%,transparent)}.security__device{max-width:20rem;font-size:var(--font-sm);color:var(--color-text-muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.security__status-badge{align-items:center;gap:var(--space-xs);padding:var(--space-xs)var(--space-s);font-size:var(--font-xs);font-weight:var(--weight-medium);border-radius:var(--radius-pill);white-space:nowrap;display:inline-flex}.security__status-badge:before{content:"";border-radius:var(--radius-circle);width:.5em;height:.5em;display:block}.security__status-badge[data-status=success]{color:var(--color-success);background-color:color-mix(in srgb,var(--color-success)15%,transparent)}.security__status-badge[data-status=success]:before{background-color:var(--color-success)}.security__status-badge[data-status=failed]{color:var(--color-error);background-color:color-mix(in srgb,var(--color-error)15%,transparent)}.security__status-badge[data-status=failed]:before{background-color:var(--color-error)}.security__status-badge[data-status=current]{color:var(--color-primary);background-color:color-mix(in srgb,var(--color-primary)15%,transparent)}.security__status-badge[data-status=current]:before{background-color:var(--color-primary)}.button--small{padding:var(--space-xs)var(--space-s);font-size:var(--step--1)}.chat__message[data-sender=ai]{--message-accent:var(--color-ai);--message-accent-dim:var(--color-ai-dim)}.chat__message[data-sender=visitor]{--message-accent:var(--color-visitor);--message-accent-dim:var(--color-visitor-dim)}.chat__message[data-sender=admin]{--message-accent:var(--color-admin);--message-accent-dim:var(--color-admin-dim)}.session-item[data-unread=true]{--session-weight:600;--session-badge-display:flex}.session-item[data-active=true]{--session-bg:var(--color-surface-raised);--session-border-color:var(--color-primary-dim)}.modal[data-open=true]{--modal-display:flex;--modal-opacity:1;--modal-pointer-events:auto}.modal[data-variant=center]{justify-content:center;align-items:center}.button[data-loading=true]{--button-cursor:wait;--button-opacity:.7;--button-pointer-events:none}.button[data-disabled=true],.button:disabled{--button-cursor:not-allowed;--button-opacity:.5;--button-pointer-events:none}.chat__status[data-status=connected]{--status-color:var(--color-success)}.chat__status[data-status=connecting]{--status-color:var(--color-warning)}.chat__status[data-status=disconnected]{--status-color:var(--color-error)}.chat__status[data-status=typing]{--status-color:var(--color-info)}.form__input[data-error=true],.form__textarea[data-error=true]{--field-border-color:var(--color-error)}.form__input[data-valid=true],.form__textarea[data-valid=true]{--field-border-color:var(--color-success)}.visually-hidden{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.flow>*+*{margin-block-start:var(--flow-space,var(--space-m))}.text-center{text-align:center}.text-end{text-align:end}.text-muted{color:var(--color-text-muted)}.text-dim{color:var(--color-text-dim)}.text-primary{color:var(--color-primary)}.weight-medium{font-weight:500}.weight-semibold{font-weight:600}.scrollable{overscroll-behavior-y:contain;scrollbar-width:thin;scrollbar-color:var(--color-surface-overlay)transparent;overflow-y:auto}.flex-shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.gap-xs{gap:var(--space-xs)}.gap-s{gap:var(--space-s)}.gap-m{gap:var(--space-m)}.focus-ring:focus-visible{outline:2px solid var(--color-border-focus);outline-offset:2px}.interactive{cursor:pointer;-webkit-user-select:none;user-select:none}.interactive:focus-visible{outline:2px solid var(--color-border-focus);outline-offset:2px}.transition-colors{transition:color .15s,background-color .15s,border-color .15s}.transition-opacity{transition:opacity .15s}.full-bleed{width:100vw;margin-inline:calc(50% - 50vw)}.aspect-square{aspect-ratio:1}.layer-base{z-index:1}.layer-overlay{z-index:100}.layer-modal{z-index:200}