.badge{align-items:center;gap:var(--space-2);font-size:var(--text-xs);font-weight:var(--weight-medium);padding:var(--space-1) var(--space-2);border-radius:var(--radius-full);line-height:1;display:inline-flex}.badge__dot{border-radius:var(--radius-full);background:currentColor;width:7px;height:7px}.badge--success{color:var(--color-success);background:var(--color-success-bg)}.badge--warning{color:var(--color-warning);background:var(--color-warning-bg)}.badge--danger{color:var(--color-danger);background:var(--color-danger-bg)}.badge--accent{color:var(--color-accent);background:var(--color-accent-bg)}.badge--neutral{color:var(--color-text-muted);background:var(--color-surface-hover)}.button{justify-content:center;align-items:center;gap:var(--space-2);font-weight:var(--weight-medium);border-radius:var(--radius-sm);transition:background var(--duration-fast) var(--ease-out), color var(--duration-fast) var(--ease-out);display:inline-flex}.button:disabled{opacity:.55;cursor:not-allowed}.button--sm{font-size:var(--text-xs);padding:var(--space-1) var(--space-3)}.button--md{font-size:var(--text-sm);padding:var(--space-2) var(--space-4)}.button--primary{background:var(--color-accent);color:var(--color-bg)}.button--primary:hover:not(:disabled){background:var(--color-accent-strong)}.button--ghost{color:var(--color-text-muted);border:1px solid var(--color-border-strong);background:0 0}.button--ghost:hover:not(:disabled){background:var(--color-surface-hover);color:var(--color-text)}.button--danger{background:var(--color-danger-bg);color:var(--color-danger)}.button--danger:hover:not(:disabled){background:var(--color-danger);color:var(--color-bg)}.button__spinner{border-radius:var(--radius-full);border:2px solid;border-top-color:#0000;width:.9em;height:.9em;animation:.7s linear infinite button-spin}@keyframes button-spin{to{transform:rotate(360deg)}}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5)}.card--raised{background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}.empty-state{align-items:center;gap:var(--space-2);padding:var(--space-8) var(--space-5);text-align:center;flex-direction:column;display:flex}.empty-state__title{font-size:var(--text-lg);color:var(--color-text)}.empty-state__description{max-width:32rem;font-size:var(--text-sm);color:var(--color-text-muted)}.empty-state__action{margin-top:var(--space-3)}.modal{width:min(26rem, 100vw - var(--space-6));color:var(--color-text);background:var(--color-surface-raised);border:1px solid var(--color-border-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);margin:auto;padding:0}.modal[open]{animation:modal-in var(--duration-normal) var(--ease-out)}.modal::backdrop{background:var(--color-overlay,#0009)}.modal__content{gap:var(--space-4);padding:var(--space-5);flex-direction:column;display:flex}.modal__header{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.modal__title{font-size:var(--text-lg)}.modal__close{width:2rem;height:2rem;font-size:var(--text-xl);color:var(--color-text-muted);border-radius:var(--radius-sm);transition:background var(--duration-fast) var(--ease-out), color var(--duration-fast) var(--ease-out);justify-content:center;align-items:center;line-height:1;display:flex}.modal__close:hover{color:var(--color-text);background:var(--color-surface-hover)}@keyframes modal-in{0%{opacity:0;transform:translateY(6px)scale(.98)}}.spinner{border:2px solid var(--color-border-strong);border-top-color:var(--color-accent);border-radius:var(--radius-full);animation:.7s linear infinite spinner-spin;display:inline-block}.spinner--sm{width:1rem;height:1rem}.spinner--md{width:1.5rem;height:1.5rem}.spinner--lg{border-width:3px;width:2.5rem;height:2.5rem}@keyframes spinner-spin{to{transform:rotate(360deg)}}.text-field{gap:var(--space-1);flex-direction:column;display:flex}.text-field__label{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-muted)}.text-field__input{padding:var(--space-2) var(--space-3);font-size:var(--text-sm);background:var(--color-bg);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);transition:border-color var(--duration-fast) var(--ease-out)}.text-field__input::placeholder{color:var(--color-text-faint)}.text-field__input:focus{border-color:var(--color-accent);outline:none}.text-field__message{font-size:var(--text-xs);color:var(--color-text-faint)}.text-field--error .text-field__input{border-color:var(--color-danger)}.text-field--error .text-field__message{color:var(--color-danger)}.text-area__input{min-height:calc(var(--space-8) * 2);resize:vertical;font:inherit;line-height:var(--leading-normal);scrollbar-width:thin;scrollbar-color:var(--color-border-strong) transparent}.text-area__input::-webkit-scrollbar{width:8px}.text-area__input::-webkit-scrollbar-thumb{background:var(--color-border-strong);border-radius:var(--radius-sm)}.text-area__input::-webkit-scrollbar-track{background:0 0}.app-shell{min-height:100vh}.app-shell__header{border-bottom:1px solid var(--color-border);background:var(--color-surface)}.app-shell__header-inner{align-items:center;gap:var(--space-5);max-width:var(--container-max);padding:var(--space-4) var(--space-5);margin:0 auto;display:flex}.app-shell__brand{font-size:var(--text-lg);letter-spacing:.02em;color:var(--color-text-muted)}.app-shell__brand strong{color:var(--color-text);font-weight:var(--weight-bold)}.app-shell__nav{align-items:center;gap:var(--space-2);display:flex}.app-shell__nav-link{padding:var(--space-1) var(--space-3);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-muted);border-radius:var(--radius-sm);transition:color var(--duration-fast) var(--ease-out), background var(--duration-fast) var(--ease-out)}.app-shell__nav-link:hover{color:var(--color-text)}.app-shell__nav-link--active{color:var(--color-text);background:var(--color-surface)}.app-shell__actions{align-items:center;gap:var(--space-3);margin-left:auto;display:flex}.app-shell__user{text-overflow:ellipsis;white-space:nowrap;max-width:12rem;font-size:var(--text-sm);color:var(--color-text-muted);overflow:hidden}.app-shell__main{max-width:var(--container-max);padding:var(--space-6) var(--space-5) var(--space-8);margin:0 auto}.add-site-form{gap:var(--space-4);flex-direction:column;display:flex}.add-site-form__actions{justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-1);display:flex}.site-card{gap:var(--space-4);flex-direction:column;display:flex}.site-card__header{justify-content:space-between;align-items:flex-start;gap:var(--space-3);display:flex}.site-card__identity{min-width:0}.site-card__name{font-size:var(--text-lg);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.site-card__host{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-muted)}.site-card__host:hover{color:var(--color-accent)}.site-card__stats{gap:var(--space-4) var(--space-5);flex-wrap:wrap;display:flex}.site-card__stat dt{font-size:var(--text-xs);color:var(--color-text-faint);text-transform:uppercase;letter-spacing:.05em}.site-card__stat dd{font-size:var(--text-sm);margin-top:var(--space-1)}.site-card__error{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-danger);padding:var(--space-2) var(--space-3);background:var(--color-danger-bg);border-radius:var(--radius-sm);word-break:break-word}.site-card__actions{gap:var(--space-2);margin-top:auto;display:flex}.dashboard{gap:var(--space-5);flex-direction:column;display:flex}.dashboard__intro{justify-content:space-between;align-items:flex-start;gap:var(--space-4);display:flex}.dashboard__intro .button{flex-shrink:0}.dashboard__title{font-size:var(--text-2xl)}.dashboard__subtitle{margin-top:var(--space-1);font-size:var(--text-sm);color:var(--color-text-muted)}.dashboard__error{padding:var(--space-3) var(--space-4);font-size:var(--text-sm);color:var(--color-danger);background:var(--color-danger-bg);border-radius:var(--radius-md);justify-content:space-between;align-items:center;display:flex}.dashboard__loading{padding:var(--space-8);justify-content:center;align-items:center;display:flex}.dashboard__grid{gap:var(--space-4);grid-template-columns:1fr;display:grid}@media (width>=768px){.dashboard__grid{grid-template-columns:repeat(2,1fr)}}@media (width>=1280px){.dashboard__grid{grid-template-columns:repeat(3,1fr)}}.content-editor{gap:var(--space-5);flex-direction:column;display:flex}.content-editor__header{justify-content:space-between;align-items:flex-start;gap:var(--space-4);display:flex}.content-editor__title{align-items:center;gap:var(--space-2);font-size:var(--text-xl);display:flex}.content-editor__meta{margin-top:var(--space-1);font-size:var(--text-sm);color:var(--color-text-muted)}.content-editor__actions{align-items:center;gap:var(--space-3);flex-shrink:0;display:flex}.content-editor__saved{font-size:var(--text-sm);color:var(--color-success,var(--color-text-muted))}.content-editor__error{padding:var(--space-3) var(--space-4);font-size:var(--text-sm);color:var(--color-danger);background:var(--color-danger-bg);border-radius:var(--radius-md)}.content-editor__loading{padding:var(--space-8);justify-content:center;align-items:center;display:flex}.content-editor__section{gap:var(--space-4);padding:var(--space-5);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);flex-direction:column;display:flex}.content-editor__section-title{padding:0 var(--space-2);font-size:var(--text-sm);font-weight:var(--weight-bold);letter-spacing:.02em;text-transform:uppercase;color:var(--color-text-muted)}.content-editor__fields{gap:var(--space-4);grid-template-columns:1fr;display:grid}@media (width>=768px){.content-editor__fields{grid-template-columns:repeat(2,1fr)}}.content-editor__field{gap:var(--space-1);flex-direction:column;align-self:start;display:flex}.content-editor__field-meta{align-items:center;gap:var(--space-2);min-height:var(--space-5);font-size:var(--text-xs);color:var(--color-text-faint);display:flex}.content-editor__badge{padding:0 var(--space-1);font-size:var(--text-xs);font-weight:var(--weight-medium);letter-spacing:.03em;color:var(--color-text-muted);border:1px solid var(--color-border);border-radius:var(--radius-sm)}.content-editor__default{color:var(--color-text-faint)}.content-editor__link,.content-editor__reset{font-size:var(--text-xs);color:var(--color-text-muted);cursor:pointer;transition:color var(--duration-fast) var(--ease-out);background:0 0;border:none;padding:0}.content-editor__link:hover,.content-editor__reset:hover{color:var(--color-text)}.content-editor__reset{color:var(--color-accent);margin-left:auto}.content-editor__default-modal{gap:var(--space-4);flex-direction:column;display:flex}.content-editor__default-text{max-height:40vh;padding-right:var(--space-2);font-size:var(--text-sm);line-height:var(--leading-normal);color:var(--color-text-muted);white-space:pre-wrap;scrollbar-width:thin;scrollbar-color:var(--color-border-strong) transparent;overflow-y:auto}.content-editor__default-text::-webkit-scrollbar{width:8px}.content-editor__default-text::-webkit-scrollbar-thumb{background:var(--color-border-strong);border-radius:var(--radius-sm)}.content-editor__default-text::-webkit-scrollbar-track{background:0 0}.content-editor__default-actions{justify-content:flex-end;gap:var(--space-3);display:flex}.content-page{gap:var(--space-5);flex-direction:column;display:flex}.content-page__title{font-size:var(--text-2xl)}.content-page__subtitle{margin-top:var(--space-1);font-size:var(--text-sm);color:var(--color-text-muted)}.content-page__error{padding:var(--space-3) var(--space-4);font-size:var(--text-sm);color:var(--color-danger);background:var(--color-danger-bg);border-radius:var(--radius-md);justify-content:space-between;align-items:center;display:flex}.content-page__loading{padding:var(--space-8);justify-content:center;align-items:center;display:flex}.content-page__layout{gap:var(--space-5);grid-template-columns:1fr;display:grid}@media (width>=768px){.content-page__layout{grid-template-columns:minmax(0,14rem) minmax(0,1fr);align-items:start}}.content-page__sites{gap:var(--space-1);flex-direction:column;display:flex}.content-page__site{gap:var(--space-1);padding:var(--space-3) var(--space-4);text-align:left;border-radius:var(--radius-md);cursor:pointer;transition:background var(--duration-fast) var(--ease-out);background:0 0;border:1px solid #0000;flex-direction:column;display:flex}.content-page__site:hover{background:var(--color-surface)}.content-page__site--active{background:var(--color-surface);border-color:var(--color-border)}.content-page__site-name{align-items:center;gap:var(--space-2);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text);display:flex}.content-page__site-count{font-size:var(--text-xs);color:var(--color-text-faint)}.add-user-form{gap:var(--space-4);flex-direction:column;display:flex}.add-user-form__check{align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--color-text-muted);cursor:pointer;display:flex}.add-user-form__check input{accent-color:var(--color-accent)}.add-user-form__error{font-size:var(--text-sm);color:var(--color-danger)}.add-user-form__actions{justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-1);display:flex}.users-table{gap:var(--space-2);flex-direction:column;display:flex}.users-table__row{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-4);display:flex}@media (width<=767px){.users-table__row{flex-wrap:wrap}}.users-table__identity{gap:var(--space-1);flex-direction:column;flex:1;min-width:0;display:flex}.users-table__name{text-overflow:ellipsis;white-space:nowrap;font-weight:var(--weight-medium);color:var(--color-text);overflow:hidden}.users-table__email{text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-sm);color:var(--color-text-muted);overflow:hidden}.users-table__tags{gap:var(--space-2);flex-shrink:0;display:flex}.users-table__actions{gap:var(--space-2);flex-shrink:0;margin-left:auto;display:flex}.users-page{gap:var(--space-5);flex-direction:column;display:flex}.users-page__intro{justify-content:space-between;align-items:flex-start;gap:var(--space-4);display:flex}.users-page__intro .button{flex-shrink:0}.users-page__title{font-size:var(--text-2xl)}.users-page__subtitle{margin-top:var(--space-1);font-size:var(--text-sm);color:var(--color-text-muted)}.users-page__error{padding:var(--space-3) var(--space-4);font-size:var(--text-sm);color:var(--color-danger);background:var(--color-danger-bg);border-radius:var(--radius-md);justify-content:space-between;align-items:center;display:flex}.users-page__loading{padding:var(--space-8);justify-content:center;align-items:center;display:flex}.login{min-height:100vh;padding:var(--space-5);justify-content:center;align-items:center;display:flex}.login__card{gap:var(--space-4);flex-direction:column;width:100%;max-width:22rem;display:flex}.login__brand{font-size:var(--text-xl);letter-spacing:.02em;color:var(--color-text-muted)}.login__brand strong{color:var(--color-text);font-weight:var(--weight-bold)}.login__subtitle{margin-top:calc(-1 * var(--space-3));font-size:var(--text-sm);color:var(--color-text-faint)}.login__form{gap:var(--space-4);flex-direction:column;display:flex}.login__error{font-size:var(--text-sm);color:var(--color-danger)}.login__submit{margin-top:var(--space-1);justify-content:center}.auth-gate{min-height:100vh;padding:var(--space-5);justify-content:center;align-items:center;display:flex}.auth-gate__notice{text-align:center;max-width:32rem;color:var(--color-text-muted)}.auth-gate__notice h1{font-size:var(--text-xl);color:var(--color-text);margin-bottom:var(--space-3)}.auth-gate__notice code{font-family:var(--font-mono);color:var(--color-text)}:root{--gray-0:#fff;--gray-50:#f7f8fa;--gray-100:#eceef2;--gray-200:#d9dce3;--gray-300:#b3b9c6;--gray-400:#8a92a3;--gray-500:#636b7d;--gray-600:#464d5d;--gray-700:#303645;--gray-800:#20242f;--gray-850:#191c25;--gray-900:#12141b;--gray-950:#0b0d12;--blue-300:#8ab8ff;--blue-400:#5a96f5;--blue-500:#3b7de8;--blue-600:#2c63c4;--green-300:#7de8a8;--green-400:#4ad483;--green-500:#2bb866;--amber-300:#ffd47d;--amber-400:#f5b942;--amber-500:#dd9c1f;--red-300:#ff9c9c;--red-400:#f56a6a;--red-500:#e04848;--color-bg:var(--gray-950);--color-surface:var(--gray-900);--color-surface-raised:var(--gray-850);--color-surface-hover:var(--gray-800);--color-border:var(--gray-800);--color-border-strong:var(--gray-700);--color-text:var(--gray-100);--color-text-muted:var(--gray-400);--color-text-faint:var(--gray-500);--color-accent:var(--blue-400);--color-accent-strong:var(--blue-300);--color-accent-bg:color-mix(in srgb, var(--blue-500) 18%, transparent);--color-success:var(--green-400);--color-success-bg:color-mix(in srgb, var(--green-500) 15%, transparent);--color-warning:var(--amber-400);--color-warning-bg:color-mix(in srgb, var(--amber-500) 15%, transparent);--color-danger:var(--red-400);--color-danger-bg:color-mix(in srgb, var(--red-500) 15%, transparent);--color-focus-ring:color-mix(in srgb, var(--blue-400) 60%, transparent);--color-overlay:#0009;--font-sans:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:ui-monospace, "Cascadia Code", "Segoe UI Mono", Consolas, monospace;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.375rem;--text-2xl:1.75rem;--weight-normal:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--leading-tight:1.25;--leading-normal:1.6;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--space-8:4rem;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-full:999px;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 4px 12px #00000059;--shadow-lg:0 12px 32px #00000073;--ease-out:cubic-bezier(.16, 1, .3, 1);--duration-fast:.12s;--duration-normal:.2s;--container-max:72rem}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased}h1,h2,h3,h4{line-height:var(--leading-tight);font-weight:var(--weight-semibold)}a{color:var(--color-accent);text-decoration:none}a:hover{color:var(--color-accent-strong)}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none}input,select,textarea{font:inherit;color:inherit}code{font-family:var(--font-mono);font-size:.9em}body:has(dialog:modal){overflow:hidden}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}
