@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:block))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--font-weight-semibold:600;--leading-tight:1.25;--leading-normal:1.5;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.fixed{position:fixed}.static{position:static}.block{display:block}.grid{display:grid}.hidden{display:none}.inline{display:inline}.table{display:table}.grow{flex-grow:1}.p-4{padding:calc(var(--spacing) * 4)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-1{padding-block:var(--spacing)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.break-all{word-break:break-all}.ring{--tw-ring-shadow:var(--tw-ring-inset, ) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, )}}:root{--color-primary-50:#f3f0fd;--color-primary-100:#e6dffb;--color-primary-200:#cdbff6;--color-primary-300:#ac95ee;--color-primary-400:#8768e2;--color-primary-500:#6544d2;--color-primary-600:#4a27ba;--color-primary-700:#3e1da2;--color-primary-800:#2f1580;--color-primary-900:#1f0e54;--color-stat-violet:#4a34d4;--color-stat-blue:#1a6bbf;--color-stat-green:#0f7a4b;--color-stat-lime:#9ccf3a;--color-stat-lime-ink:#1e2b06;--color-chart-green:#1fb874;--color-chart-orange:#f59a1b;--color-chart-red:#e5484d;--color-success-fg:#0b6b40;--color-success-bg:#ddf5e8;--color-warning-fg:#8a4b00;--color-warning-bg:#ffefd3;--color-danger-fg:#b3261e;--color-danger-bg:#fde6e4;--color-info-fg:#1a5fa8;--color-info-bg:#e0edfb;--color-neutral-fg:#4d4964;--color-neutral-bg:#eceaf3;--color-bg:#f5f4fa;--color-surface:#fff;--color-surface-2:#f8f7fc;--color-tab:var(--color-bg);--color-ink:#1c1830;--color-ink-muted:#5c5873;--color-border:#e4e1ee;--color-border-strong:#7a7690;--color-primary:var(--color-primary-600);--color-primary-hover:var(--color-primary-700);--color-on-primary:#fff;--color-link:var(--color-primary-600);--color-chip-bg:var(--color-primary-100);--color-chip-fg:var(--color-primary-800);--color-sidebar:var(--color-primary-700);--color-sidebar-ink:#e9e4ff;--color-focus:#4a27ba;--color-overlay:#140c328c;--font-sans:"Poppins", "Segoe UI", Roboto, "Helvetica Neue", Arial, system-ui, sans-serif;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:1.875rem;--weight-regular:400;--weight-medium:500;--weight-semibold:600;--leading-tight:1.25;--leading-normal:1.5;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--radius-sm:8px;--radius-md:12px;--radius-lg:20px;--radius-pill:999px;--shadow-card:0 6px 24px #3e1da212;--shadow-pop:0 12px 36px #1f0e5438;--touch-min:44px;--sidebar-w:256px;--topbar-h:72px}[data-theme=dark]{--color-bg:#13102a;--color-surface:#1d1a3b;--color-surface-2:#252148;--color-ink:#f1effb;--color-ink-muted:#b9b4d4;--color-border:#38335f;--color-border-strong:#9791bc;--color-primary:#6c4ad8;--color-primary-hover:#7c5ce6;--color-link:#bba8f7;--color-chip-bg:#34296a;--color-chip-fg:#e2d9ff;--color-sidebar:#1a0f47;--color-success-bg:#123a29;--color-success-fg:#7fe0ae;--color-warning-bg:#45300f;--color-warning-fg:#ffc878;--color-danger-bg:#4a1b1a;--color-danger-fg:#ffada8;--color-info-bg:#14304f;--color-info-fg:#9ccbf7;--color-neutral-bg:#2e2a52;--color-neutral-fg:#d1cde8;--shadow-card:none}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{font-family:var(--font-sans);font-size:var(--text-sm);line-height:var(--leading-normal);color:var(--color-ink);background:var(--color-bg);margin:0}body.portal-lite,body.page-public{font-size:var(--text-base)}h1,h2,h3,h4{line-height:var(--leading-tight);font-weight:var(--weight-semibold);margin:0}h1{font-size:var(--text-2xl)}h2{font-size:var(--text-xl)}h3{font-size:var(--text-lg)}h4{font-size:var(--text-base)}p{margin:0 0 var(--space-3)}a{color:var(--color-link);text-underline-offset:3px}img,svg{max-width:100%}.icon{stroke:currentColor;fill:none;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:20px;height:20px}.icon--sm{width:16px;height:16px}.icon--lg{width:28px;height:28px}:focus-visible{outline:3px solid var(--color-focus);outline-offset:2px;border-radius:6px}.sidebar :focus-visible,.lite-header :focus-visible,.install-card :focus-visible,.conn-banner :focus-visible,.skip-link:focus-visible{outline-color:#fff}[data-theme=dark]{--color-focus:#cdbff6}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{left:var(--space-4);z-index:200;background:var(--color-ink);color:#fff;padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);position:absolute;top:-60px}.skip-link:focus{top:var(--space-3)}.muted{color:var(--color-ink-muted)}.small{font-size:var(--text-xs)}.strong{font-weight:var(--weight-semibold)}.mono{font-variant-numeric:tabular-nums}.stack>*+*{margin-top:var(--space-4)}.stack-lg>*+*{margin-top:var(--space-6)}.row{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.row--between{justify-content:space-between}.row--end{justify-content:flex-end}.grow{flex:auto;min-width:0}.grid{gap:var(--space-4);display:grid}.grid--2,.grid--3{grid-template-columns:1fr}.grid--4{grid-template-columns:1fr 1fr}@media (min-width:768px){.grid--2{grid-template-columns:repeat(2,1fr)}.grid--3{grid-template-columns:repeat(3,1fr)}.grid--4{grid-template-columns:repeat(4,1fr)}.grid--main-side{grid-template-columns:2fr 1fr}}@media (min-width:1024px){.grid--main-side{grid-template-columns:2.2fr 1fr}}[hidden]{display:none!important}.app-shell{min-height:100vh}.sidebar{width:var(--sidebar-w);z-index:60;background:var(--color-sidebar);color:var(--color-sidebar-ink);flex-direction:column;transition:transform .2s;display:flex;position:fixed;inset:0 auto 0 0;transform:translate(-100%)}.sidebar.is-open{box-shadow:var(--shadow-pop);transform:none}.sidebar__brand{align-items:center;gap:var(--space-3);padding:var(--space-6) var(--space-6) var(--space-4);color:#fff;font-weight:var(--weight-semibold);font-size:var(--text-xl);text-decoration:none;display:flex}.brand-mark{width:40px;height:40px;color:var(--color-primary-700);background:#fff;border-radius:14px;flex:none;place-items:center;font-size:20px;font-weight:700;display:grid}.nav{padding:var(--space-6) 0;flex:1;margin:0;list-style:none;overflow-y:auto}.nav__group{margin:var(--space-4) var(--space-6) var(--space-1);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.08em;color:#c9bff2}.nav__item{align-items:center;gap:var(--space-3);min-height:44px;padding:10px var(--space-4) 10px var(--space-5);margin:4px 0 4px var(--space-4);border-radius:var(--radius-pill) 0 0 var(--radius-pill);color:var(--color-sidebar-ink);font-weight:var(--weight-medium);text-decoration:none;display:flex;position:relative}.nav__item:hover{background:#ffffff1a}.nav__item.is-active{background:var(--color-tab);color:var(--color-primary-700);font-weight:var(--weight-semibold)}[data-theme=dark] .nav__item.is-active{color:#fff}.nav__item.is-active:before,.nav__item.is-active:after{content:"";pointer-events:none;width:24px;height:24px;position:absolute;right:0}.nav__item.is-active:before{box-shadow:0 12px 0 0 var(--color-tab);border-bottom-right-radius:24px;top:-24px}.nav__item.is-active:after{box-shadow:0 -12px 0 0 var(--color-tab);border-top-right-radius:24px;bottom:-24px}.sidebar__foot{padding:var(--space-4) var(--space-6);font-size:var(--text-xs);color:#c9bff2}.scrim{background:var(--color-overlay);z-index:55;position:fixed;inset:0}.main{min-width:0}.topbar{z-index:40;align-items:center;gap:var(--space-3);min-height:var(--topbar-h);padding:var(--space-3) var(--space-4);background:var(--color-bg);display:flex;position:sticky;top:0}.topbar__title{font-size:var(--text-lg);font-weight:var(--weight-semibold);white-space:nowrap;text-overflow:ellipsis;margin-right:auto;overflow:hidden}.topbar .search-pill{display:none}.icon-btn{width:var(--touch-min);height:var(--touch-min);background:var(--color-surface);color:var(--color-primary);cursor:pointer;border:0;border-radius:50%;place-items:center;display:inline-grid;position:relative}.icon-btn:hover{background:var(--color-primary-100)}.icon-btn .count{background:var(--color-primary-600);color:#fff;border:2px solid var(--color-bg);border-radius:10px;place-items:center;min-width:20px;height:20px;padding:0 5px;font-size:11px;font-weight:600;display:grid;position:absolute;top:2px;right:0}.user-chip{align-items:center;gap:var(--space-2);display:flex}.user-chip__meta{line-height:1.2;display:none}.user-chip__meta span{font-size:var(--text-xs);color:var(--color-ink-muted);display:block}.avatar{background:var(--color-primary-200);width:40px;height:40px;color:var(--color-primary-800);font-weight:var(--weight-semibold);font-size:var(--text-sm);border-radius:50%;flex:none;place-items:center;display:grid}.avatar--lg{width:88px;height:88px;font-size:var(--text-2xl);box-shadow:0 0 0 4px var(--color-surface), 0 0 0 8px var(--color-primary-300)}.content{padding:var(--space-2) var(--space-4) var(--space-12);max-width:1440px}.page-head{justify-content:space-between;align-items:flex-end;gap:var(--space-3);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.page-head p{color:var(--color-ink-muted);margin:0}.breadcrumb{gap:var(--space-2);font-size:var(--text-xs);color:var(--color-ink-muted);margin-bottom:var(--space-2);flex-wrap:wrap;display:flex}.breadcrumb a{color:var(--color-primary-600)}[data-theme=dark] .breadcrumb a{color:var(--color-link)}.breadcrumb li{list-style:none}.breadcrumb ol{gap:var(--space-2);flex-wrap:wrap;margin:0;padding:0;display:flex}.breadcrumb li+li:before{content:"/";margin-right:var(--space-2)}@media (min-width:768px){.sidebar{width:84px;transform:none}.sidebar .nav__item span,.sidebar .nav__group,.sidebar__brand span:last-child,.sidebar__foot{display:none}.sidebar .nav__item{justify-content:center;padding-left:12px;padding-right:12px}.main{margin-left:84px}.topbar{padding:var(--space-4) var(--space-6)}.content{padding:var(--space-2) var(--space-6) var(--space-12)}.topbar .search-pill{width:min(340px,30vw);display:flex}.menu-btn{display:none}.user-chip__meta{display:block}}@media (min-width:1024px){.sidebar{width:var(--sidebar-w)}.sidebar .nav__item span,.sidebar__brand span:last-child,.sidebar__foot{display:initial}.sidebar .nav__group{display:block}.sidebar .nav__item{padding-left:var(--space-5);justify-content:flex-start}.sidebar .nav__item span{display:inline}.main{margin-left:var(--sidebar-w)}}@media (max-width:767px){.sidebar{width:min(300px,86vw)}}.lite-header{z-index:40;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--color-primary-700);color:#fff;min-height:60px;display:flex;position:sticky;top:0}.lite-header .brand-mark{width:36px;height:36px;font-size:18px}.lite-header__title{font-weight:var(--weight-semibold);font-size:var(--text-lg);margin-right:auto}.lite-header .avatar{color:var(--color-primary-800);background:#fff}.lite-header a,.lite-header button{color:#fff}.lite-header .icon-btn{color:#fff;background:#ffffff24}.lite-header .icon-btn:hover{background:#ffffff42}.lite-main{max-width:720px;padding:var(--space-4) var(--space-4) calc(88px + var(--space-4));margin:0 auto}.bottom-nav{z-index:50;background:var(--color-surface);border-top:1px solid var(--color-border);padding-bottom:env(safe-area-inset-bottom);display:flex;position:fixed;inset:auto 0 0;box-shadow:0 -6px 20px #3e1da214}.bottom-nav a{min-height:64px;font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--color-ink-muted);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;text-decoration:none;display:flex}.bottom-nav a.is-active{color:var(--color-primary-600);font-weight:var(--weight-semibold)}[data-theme=dark] .bottom-nav a.is-active{color:var(--color-link)}.bottom-nav a.is-active .icon-wrap{background:var(--color-primary-100);color:var(--color-primary-700)}.bottom-nav .icon-wrap{border-radius:var(--radius-pill);place-items:center;width:56px;height:30px;display:grid}@media (min-width:768px){.lite-main{padding-bottom:var(--space-12);padding-top:var(--space-6)}.bottom-nav{display:none}.lite-header{padding-inline:max(var(--space-6), calc((100vw - 720px) / 2))}}.auth-wrap{min-height:100vh;padding:var(--space-4);background:linear-gradient(160deg, var(--color-primary-700) 0 38%, var(--color-bg) 38% 100%);place-items:center;display:grid}.auth-card{background:var(--color-surface);border-radius:var(--radius-lg);width:100%;max-width:440px;box-shadow:var(--shadow-pop);padding:var(--space-6) var(--space-5)}.auth-card .brand{align-items:center;gap:var(--space-3);margin-bottom:var(--space-6);font-size:var(--text-xl);font-weight:var(--weight-semibold);color:var(--color-primary-700);display:flex}[data-theme=dark] .auth-card .brand{color:#fff}.auth-card .brand .brand-mark{background:var(--color-primary-700);color:#fff}.auth-foot{margin-top:var(--space-6);justify-content:space-between;align-items:center;gap:var(--space-3);font-size:var(--text-sm);flex-wrap:wrap;display:flex}@media (min-width:600px){.auth-card{padding:var(--space-8)}}.card{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:var(--space-5)}[data-theme=dark] .card{border:1px solid var(--color-border)}.card--flush{padding:0;overflow:hidden}.card__head{justify-content:space-between;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.card__title{font-size:var(--text-base);font-weight:var(--weight-semibold)}.card--link{color:inherit;text-decoration:none;display:block}.card--link:hover{box-shadow:0 10px 30px #3e1da229}.stat{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-5);border-radius:var(--radius-lg);color:#fff;min-height:96px;display:flex;position:relative;overflow:hidden}.stat__label{font-size:var(--text-sm);opacity:.95}.stat__value{font-size:var(--text-3xl);font-weight:var(--weight-semibold);line-height:1.1}.stat__icon{background:#fff3;border-radius:16px;flex:none;place-items:center;width:52px;height:52px;display:grid}.stat--violet{background:var(--color-stat-violet)}.stat--blue{background:var(--color-stat-blue)}.stat--green{background:var(--color-stat-green)}.stat--lime{background:var(--color-stat-lime);color:var(--color-stat-lime-ink)}.stat--lime .stat__icon{background:#1e2b061f}.stat--lime .stat__label{opacity:1}.btn{justify-content:center;align-items:center;gap:var(--space-2);min-height:40px;padding:8px var(--space-6);border-radius:var(--radius-pill);font:inherit;font-weight:var(--weight-semibold);cursor:pointer;color:var(--color-ink);white-space:nowrap;background:0 0;border:2px solid #0000;text-decoration:none;display:inline-flex}.btn--primary{background:var(--color-primary);color:var(--color-on-primary)}.btn--primary:hover{background:var(--color-primary-hover)}.btn--secondary{border-color:var(--color-primary);color:var(--color-primary);background:0 0}[data-theme=dark] .btn--secondary{color:var(--color-link);border-color:var(--color-link)}.btn--secondary:hover{background:var(--color-primary-100)}[data-theme=dark] .btn--secondary:hover{background:var(--color-chip-bg)}.btn--ghost{background:var(--color-neutral-bg);color:var(--color-neutral-fg)}.btn--danger{background:var(--color-danger-fg);color:#fff}.btn--danger-outline{border-color:var(--color-danger-fg);color:var(--color-danger-fg)}.btn--sm{min-height:32px;padding:4px var(--space-4);font-size:var(--text-xs)}.btn--lg,.portal-lite .btn,.page-public .btn{min-height:48px}.btn--block{width:100%;display:flex}.btn[disabled],.btn[aria-disabled=true]{opacity:.55;cursor:not-allowed}.btn .spinner{border:2px solid;border-right-color:#0000;border-radius:50%;width:16px;height:16px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.field{gap:var(--space-1);margin-bottom:var(--space-5);flex-direction:column;min-width:0;display:flex}.field__label{font-size:var(--text-sm);color:var(--color-ink-muted);font-weight:var(--weight-medium)}.field__label .req{color:var(--color-danger-fg)}.field__control{width:100%;min-height:44px;padding:var(--space-2) 0;border:0;border-bottom:2px solid var(--color-border-strong);color:var(--color-ink);font:inherit;font-size:var(--text-base);background:0 0;border-radius:0}.field__control::placeholder{color:var(--color-ink-muted);opacity:.8}.field__control:focus{border-bottom-color:var(--color-primary);box-shadow:0 3px 0 0 var(--color-primary);outline:none}.field__control:focus-visible{outline:none}textarea.field__control{border:2px solid var(--color-border-strong);border-radius:var(--radius-sm);min-height:96px;padding:var(--space-3)}select.field__control{padding-right:var(--space-6)}.field--boxed .field__control{border:2px solid var(--color-border-strong);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);background:var(--color-surface)}.field__hint{font-size:var(--text-xs);color:var(--color-ink-muted)}.field__error{gap:var(--space-1);font-size:var(--text-sm);color:var(--color-danger-fg);font-weight:var(--weight-medium);align-items:flex-start;display:flex}.field--error .field__control{border-bottom-color:var(--color-danger-fg)}.field--error textarea.field__control,.field--error.field--boxed .field__control{border-color:var(--color-danger-fg)}.field--valid .field__control{border-bottom-color:var(--color-success-fg)}.field__ok{color:var(--color-success-fg);font-size:var(--text-sm)}.field__wrap{position:relative}.field__wrap .icon-btn{background:0 0;width:44px;height:44px;position:absolute;top:0;right:0}.form-grid{gap:0 var(--space-6);grid-template-columns:1fr;display:grid}@media (min-width:768px){.form-grid{grid-template-columns:repeat(2,1fr)}.form-grid--3{grid-template-columns:repeat(3,1fr)}.span-2{grid-column:span 2}}.form-actions{gap:var(--space-3);margin-top:var(--space-4);flex-wrap:wrap;display:flex}fieldset{margin:0 0 var(--space-5);border:0;min-width:0;padding:0}legend{font-weight:var(--weight-semibold);margin-bottom:var(--space-2);padding:0}.check{align-items:flex-start;gap:var(--space-3);min-height:var(--touch-min);padding:var(--space-2) 0;cursor:pointer;display:flex}.check input{width:24px;height:24px;accent-color:var(--color-primary-600);flex:none;margin:0}.switch{align-items:center;gap:var(--space-3);cursor:pointer;min-height:44px;display:inline-flex}.switch input{appearance:none;background:var(--color-border-strong);cursor:pointer;border-radius:14px;width:48px;height:28px;margin:0;transition:background .15s;position:relative}.switch input:after{content:"";background:#fff;border-radius:50%;width:22px;height:22px;transition:transform .15s;position:absolute;top:3px;left:3px}.switch input:checked{background:var(--color-primary-600)}.switch input:checked:after{transform:translate(20px)}.switch input:focus-visible{outline:3px solid var(--color-focus);outline-offset:2px}.dropzone{align-items:center;gap:var(--space-3);padding:var(--space-4);border:2px dashed var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface-2);min-height:72px;display:flex}.dropzone__icon{background:var(--color-primary-600);color:#fff;border-radius:12px;flex:none;place-items:center;width:44px;height:44px;display:grid}.file-item{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);display:flex}.file-item .grow strong{font-size:var(--text-sm);display:block}.chips{gap:var(--space-2);flex-wrap:wrap;display:flex}.chip{align-items:center;gap:var(--space-2);min-height:36px;padding:4px var(--space-4);border-radius:var(--radius-pill);background:var(--color-chip-bg);color:var(--color-chip-fg);font:inherit;font-size:var(--text-sm);font-weight:var(--weight-medium);cursor:pointer;border:0;text-decoration:none;display:inline-flex}.chip.is-active,.chip[aria-pressed=true]{background:var(--color-primary-600);color:#fff}.badge{border-radius:var(--radius-pill);min-height:24px;font-size:var(--text-xs);font-weight:var(--weight-semibold);background:var(--color-neutral-bg);color:var(--color-neutral-fg);white-space:nowrap;align-items:center;gap:6px;padding:2px 12px;display:inline-flex}.badge:before{content:"";background:currentColor;border-radius:50%;width:8px;height:8px}.badge--success{background:var(--color-success-bg);color:var(--color-success-fg)}.badge--warning{background:var(--color-warning-bg);color:var(--color-warning-fg)}.badge--danger{background:var(--color-danger-bg);color:var(--color-danger-fg)}.badge--info{background:var(--color-info-bg);color:var(--color-info-fg)}.badge--primary{background:var(--color-primary-100);color:var(--color-primary-800)}[data-theme=dark] .badge--primary{background:var(--color-chip-bg);color:var(--color-chip-fg)}.search-pill{align-items:center;gap:var(--space-2);min-height:44px;padding:0 var(--space-4);border-radius:var(--radius-pill);background:var(--color-neutral-bg);color:var(--color-ink-muted);display:flex}.search-pill input{min-width:0;font:inherit;color:var(--color-ink);background:0 0;border:0;flex:1;min-height:40px}.search-pill input:focus{outline:none}.search-pill:focus-within{outline:3px solid var(--color-focus);outline-offset:2px}.search-pill--surface{background:var(--color-surface);box-shadow:var(--shadow-card)}.toolbar{gap:var(--space-3);margin-bottom:var(--space-4);flex-wrap:wrap;align-items:center;display:flex}.toolbar .search-pill{flex:240px}select.select-pill{min-height:44px;padding:0 var(--space-6) 0 var(--space-4);border-radius:var(--radius-pill);border:2px solid var(--color-border);background:var(--color-surface);font:inherit;color:var(--color-ink)}.table-wrap{overflow-x:auto}.table{border-collapse:separate;border-spacing:0 8px;width:100%;font-size:var(--text-sm)}.table th{text-align:left;padding:var(--space-2) var(--space-4);font-weight:var(--weight-semibold);color:var(--color-ink-muted);white-space:nowrap}.table th button{all:unset;cursor:pointer;align-items:center;gap:4px;display:inline-flex}.table th button:focus-visible{outline:3px solid var(--color-focus)}.table td{padding:var(--space-3) var(--space-4);background:var(--color-surface);border-block:1px solid var(--color-border);vertical-align:middle}.table td:first-child{border-left:1px solid var(--color-border);border-radius:var(--radius-md) 0 0 var(--radius-md)}.table td:last-child{border-right:1px solid var(--color-border);border-radius:0 var(--radius-md) var(--radius-md) 0}.table tbody tr:hover td{background:var(--color-primary-50)}[data-theme=dark] .table tbody tr:hover td{background:var(--color-surface-2)}.table .cell-id{font-variant-numeric:tabular-nums;font-weight:var(--weight-medium)}.table .cell-actions{text-align:right;white-space:nowrap}.person{align-items:center;gap:var(--space-3);display:flex}.person small{color:var(--color-ink-muted);font-size:var(--text-xs);display:block}@media (max-width:767px){.table--cards thead{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.table--cards thead tr,.table--cards thead th{width:1px;padding:0;display:block;overflow:hidden}.table--cards thead:focus-within{clip:auto;width:auto;height:auto;position:static;overflow:visible}.table--cards thead:focus-within tr,.table--cards thead:focus-within th{width:auto;padding:var(--space-2);overflow:visible}.table--cards td select,.table--cards td input{max-width:100%}.table--cards,.table--cards tbody,.table--cards tr,.table--cards td{width:100%;display:block}.table--cards tr{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);margin-bottom:var(--space-3);padding:var(--space-2) 0}.table--cards td{justify-content:space-between;gap:var(--space-4);padding:var(--space-2) var(--space-4);text-align:right;display:flex;background:0 0!important;border:0!important;border-radius:0!important}.table--cards td:before{content:attr(data-label);font-weight:var(--weight-semibold);color:var(--color-ink-muted);text-align:left;flex:none}.table--cards td.cell-actions{justify-content:flex-end}.table--cards td[data-label=""]:before{content:none}}.pager{justify-content:space-between;align-items:center;gap:var(--space-3);margin-top:var(--space-4);flex-wrap:wrap;display:flex}.pager__pages{gap:var(--space-1);display:flex}.pager__pages a,.pager__pages span{border-radius:var(--radius-pill);min-width:40px;height:40px;color:var(--color-ink-muted);background:var(--color-chip-bg);place-items:center;text-decoration:none;display:grid}.pager__pages [aria-current=page]{background:var(--color-primary-600);color:#fff;font-weight:var(--weight-semibold)}.checkbox-cell input{width:20px;height:20px;accent-color:var(--color-primary-600)}.tabs{gap:var(--space-1);border-bottom:2px solid var(--color-border);margin-bottom:var(--space-5);display:flex;overflow-x:auto}.tab{min-height:44px;padding:var(--space-2) var(--space-4);font:inherit;font-weight:var(--weight-medium);color:var(--color-ink-muted);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-bottom:3px solid #0000;margin-bottom:-2px}.tab[aria-selected=true]{color:var(--color-primary-600);border-bottom-color:var(--color-primary-600);font-weight:var(--weight-semibold)}[data-theme=dark] .tab[aria-selected=true]{color:var(--color-link);border-bottom-color:var(--color-link)}.stepper{gap:var(--space-2);margin:0 0 var(--space-5);counter-reset:step;padding:0;list-style:none;display:flex}.stepper li{text-align:center;font-size:var(--text-xs);color:var(--color-ink-muted);counter-increment:step;flex:1}.stepper li:before{content:counter(step);width:32px;height:32px;margin:0 auto var(--space-1);background:var(--color-neutral-bg);color:var(--color-neutral-fg);font-weight:var(--weight-semibold);font-size:var(--text-sm);border-radius:50%;place-items:center;display:grid}.stepper li.is-done:before{content:"✓";background:var(--color-success-fg);color:#fff}.stepper li.is-current{color:var(--color-primary-600);font-weight:var(--weight-semibold)}[data-theme=dark] .stepper li.is-current{color:var(--color-link)}.stepper li.is-current:before{background:var(--color-primary-600);color:#fff}.progress{border-radius:var(--radius-pill);background:var(--color-neutral-bg);height:10px;overflow:hidden}.progress>span{border-radius:inherit;background:var(--color-primary-600);height:100%;display:block}.progress--ok>span{background:var(--color-success-fg)}.progress--warn>span{background:#c26a00}.progress--danger>span{background:var(--color-danger-fg)}.donut{--v:66;--c:var(--color-chart-orange);background:conic-gradient(var(--c) calc(var(--v) * 1%), var(--color-neutral-bg) 0);border-radius:50%;flex:none;place-items:center;width:72px;height:72px;display:grid;position:relative}.donut:before{content:"";background:var(--color-surface);border-radius:50%;position:absolute;inset:9px}.donut span{font-weight:var(--weight-semibold);font-size:var(--text-sm);position:relative}.donut--lg{width:148px;height:148px}.donut--lg:before{inset:14px}.chart{width:100%;height:auto}.legend{gap:var(--space-4);font-size:var(--text-xs);color:var(--color-ink-muted);flex-wrap:wrap;display:flex}.legend i{border-radius:50%;width:10px;height:10px;margin-right:6px;display:inline-block}.alert{gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--text-sm);border:1px solid #0000;align-items:flex-start;display:flex}.alert strong{display:block}.alert--info{background:var(--color-info-bg);color:var(--color-info-fg);border-color:var(--color-info-fg)}.alert--success{background:var(--color-success-bg);color:var(--color-success-fg);border-color:var(--color-success-fg)}.alert--warning{background:var(--color-warning-bg);color:var(--color-warning-fg);border-color:var(--color-warning-fg)}.alert--danger{background:var(--color-danger-bg);color:var(--color-danger-fg);border-color:var(--color-danger-fg)}.alert .btn{margin-left:auto}.conn-banner{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);color:#fff;font-size:var(--text-sm);background:#3a3550;display:flex}.conn-banner--update{background:var(--color-primary-700)}.conn-banner .btn{min-height:36px;padding:4px var(--space-4);color:var(--color-primary-800);background:#fff;margin-left:auto}.save-state{align-items:center;gap:var(--space-2);font-size:var(--text-xs);font-weight:var(--weight-medium);border-radius:var(--radius-pill);background:var(--color-neutral-bg);color:var(--color-neutral-fg);padding:4px 12px;display:inline-flex}.save-state--saved{background:var(--color-success-bg);color:var(--color-success-fg)}.save-state--offline{background:var(--color-warning-bg);color:var(--color-warning-fg)}.toast-region{z-index:300;right:var(--space-4);left:var(--space-4);gap:var(--space-2);pointer-events:none;flex-direction:column;display:flex;position:fixed;bottom:88px}.toast{pointer-events:auto;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background:var(--color-ink);color:var(--color-bg);box-shadow:var(--shadow-pop);align-items:center;display:flex}@media (min-width:768px){.toast-region{left:auto;bottom:var(--space-6);width:360px}}dialog{border-radius:var(--radius-lg);background:var(--color-surface);width:min(520px,100vw - 32px);max-height:calc(100vh - 32px);color:var(--color-ink);box-shadow:var(--shadow-pop);border:0;padding:0}dialog::backdrop{background:var(--color-overlay)}.dialog__head{padding:var(--space-5) var(--space-5) var(--space-2);justify-content:space-between;align-items:center;display:flex}.dialog__body{padding:var(--space-2) var(--space-5) var(--space-4)}.dialog__foot{gap:var(--space-3);padding:var(--space-3) var(--space-5) var(--space-5);flex-wrap:wrap;justify-content:flex-end;display:flex}.sheet{z-index:250;background:var(--color-surface);border-radius:var(--radius-lg) var(--radius-lg) 0 0;box-shadow:var(--shadow-pop);padding:var(--space-5) var(--space-4) calc(var(--space-5) + env(safe-area-inset-bottom));position:fixed;inset:auto 0 0}.empty{text-align:center;padding:var(--space-10) var(--space-4)}.empty__art{width:88px;height:88px;margin:0 auto var(--space-4);background:var(--color-primary-100);color:var(--color-primary-600);border-radius:50%;place-items:center;display:grid}.empty h3{margin-bottom:var(--space-2)}.empty p{color:var(--color-ink-muted);max-width:42ch;margin-inline:auto}.skeleton{background:linear-gradient(90deg, var(--color-neutral-bg) 25%, var(--color-surface-2) 50%, var(--color-neutral-bg) 75%);border-radius:var(--radius-sm);background-size:200% 100%;height:16px;animation:1.4s infinite shimmer}.skeleton+.skeleton{margin-top:var(--space-3)}.skeleton--row{border-radius:var(--radius-md);height:56px}@keyframes shimmer{to{background-position:-200% 0}}.kv{grid-template-columns:1fr;gap:0;margin:0;display:grid}.kv>div{justify-content:space-between;gap:var(--space-4);padding:var(--space-3) 0;border-bottom:1px solid var(--color-border);display:flex}.kv dt{color:var(--color-ink-muted)}.kv dd{font-weight:var(--weight-medium);text-align:right;margin:0}.timeline{padding:0 0 0 var(--space-5);border-left:2px solid var(--color-primary-200);margin:0;list-style:none}.timeline li{padding:0 0 var(--space-5) var(--space-4);position:relative}.timeline li:before{content:"";background:var(--color-primary-600);border:3px solid var(--color-surface);border-radius:50%;width:16px;height:16px;position:absolute;top:4px;left:-29px}.timeline li.is-muted:before{background:var(--color-border-strong)}.list-plain{margin:0;padding:0;list-style:none}.list-plain>li{padding:var(--space-3) 0;border-bottom:1px solid var(--color-border)}.child-card{gap:var(--space-4);align-items:center;display:flex}.diff{font-family:ui-monospace,Consolas,monospace;font-size:var(--text-xs);border-radius:var(--radius-sm);overflow:auto}.diff div{padding:2px var(--space-3);white-space:pre}.diff .del{background:var(--color-danger-bg);color:var(--color-danger-fg)}.diff .add{background:var(--color-success-bg);color:var(--color-success-fg)}.matrix{border-collapse:collapse;width:100%;font-size:var(--text-sm)}.matrix th,.matrix td{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border);text-align:center}.matrix th:first-child,.matrix td:first-child{text-align:left}.matrix input{width:22px;height:22px;accent-color:var(--color-primary-600)}.grid-tt{border-collapse:separate;border-spacing:4px;width:100%;font-size:var(--text-xs)}.grid-tt th{color:var(--color-ink-muted);font-weight:var(--weight-semibold);padding:4px}.grid-tt td{background:var(--color-surface-2);border-radius:var(--radius-sm);vertical-align:top;min-width:90px;height:56px;padding:8px}.grid-tt td.is-conflict{background:var(--color-danger-bg);color:var(--color-danger-fg);outline:2px solid var(--color-danger-fg)}.grid-tt td.is-filled{background:var(--color-primary-100);color:var(--color-primary-800)}.install-card{gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius-lg);background:var(--color-primary-700);color:#fff;align-items:center;display:flex}.install-card .btn--primary{color:var(--color-primary-800);background:#fff}.install-card .btn--ghost{color:#fff;background:0 0}.table th .th-sort{color:inherit;align-items:center;gap:4px;min-height:24px;text-decoration:none;display:inline-flex}.table th .th-sort:hover{text-decoration:underline}.table th .th-sort:focus-visible{outline:3px solid var(--color-focus)}.install-card .btn--secondary{color:var(--color-primary-800);background:#fff;border-color:#fff}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
