:root{--color-purple-50:#f2e7f1;--color-purple-100:#e4cfe4;--color-purple-200:#d1add0;--color-purple-300:#c08fbe;--color-purple-400:#af70ad;--color-purple-500:#a0559d;--color-purple-600:#8d4b8a;--color-purple-700:#763f74;--color-purple-800:#60335e;--color-purple-900:#4a2748;--color-indigo-50:#e4e3ed;--color-indigo-300:#807ca9;--color-indigo-500:#3e387c;--color-indigo-700:#2e295c;--color-indigo-900:#1d1a39;--color-indigo-deep:#3c2578;--color-azure-300:#5799bd;--color-azure-500:#00659b;--color-azure-600:#005988;--color-neutral-50:#ebebeb;--color-neutral-200:#bbb;--color-neutral-300:#a2a1a1;--color-neutral-600:#646363;--color-neutral-700:#545454;--color-success-300:#75a993;--color-success-600:#286e50;--color-warning-300:#daa557;--color-warning-500:#c77700;--color-warning-700:#935800;--color-error-300:#d97c88;--color-error-500:#c5384b;--color-gold-400:#ffdd29;--color-gold-fortuna:#d4af37;--color-action-primary:var(--color-purple-500);--color-action-primary-hover:var(--color-purple-600);--color-action-primary-text:#fff;--color-text-strong:#1a1a1a;--color-text-brand:var(--color-indigo-deep);--color-text-muted:var(--color-neutral-600);--color-accent:var(--color-azure-500);--color-surface:#fff;--color-surface-raised:var(--color-neutral-50);--color-on-surface:#1a1a1a;--color-border:var(--color-neutral-300);--color-success:var(--color-success-600);--color-on-success:#fff;--color-warning:var(--color-warning-500);--color-on-warning:#1a1a1a;--color-error:var(--color-error-500);--color-on-error:#fff;--color-info:var(--color-azure-600);--color-on-info:#fff;--color-focus-ring:var(--color-indigo-500);--font-family-base:"Noto Sans TC","Microsoft JhengHei","PingFang TC",system-ui,-apple-system,"Segoe UI",sans-serif;--font-family-latin:Inter,system-ui,sans-serif;--font-family-mono:ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;--font-size-display:2.25rem;--line-height-display:2.75rem;--font-size-headline:1.75rem;--line-height-headline:2.25rem;--font-size-title:1.375rem;--line-height-title:1.75rem;--font-size-body-lg:1.125rem;--line-height-body-lg:1.75rem;--font-size-body:1rem;--line-height-body:1.5rem;--font-size-label:0.875rem;--line-height-label:1.25rem;--font-size-caption:0.75rem;--line-height-caption:1rem;--font-weight-regular:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:40px;--space-8:48px;--space-9:64px;--space-10:80px;--space-11:96px;--space-12:128px;--radius-sm:4px;--radius-md:8px;--radius-lg:16px;--radius-full:9999px;--shadow-1:0 1px 2px rgb(26 26 26/8%);--shadow-2:0 2px 6px rgba(26,26,26,.1);--shadow-3:0 6px 16px rgba(26,26,26,.12);--shadow-4:0 12px 32px rgba(26,26,26,.16);--duration-fast:120ms;--duration-base:200ms;--duration-slow:320ms;--easing-standard:cubic-bezier(0.2,0,0,1);--icon-font-family:"Material Symbols Outlined";--icon-sm:16px;--icon-md:20px;--icon-lg:24px;--icon-xl:32px}[data-theme=dark]{--color-surface:var(--color-indigo-900);--color-surface-raised:var(--color-indigo-700);--color-on-surface:var(--color-purple-50);--color-text-strong:var(--color-purple-50);--color-text-brand:var(--color-purple-200);--color-text-muted:var(--color-neutral-200);--color-action-primary:var(--color-purple-400);--color-action-primary-hover:var(--color-purple-300);--color-action-primary-text:var(--color-indigo-900);--color-accent:var(--color-azure-300);--color-border:var(--color-neutral-700);--color-success:var(--color-success-300);--color-on-success:var(--color-indigo-900);--color-warning:var(--color-warning-300);--color-on-warning:var(--color-indigo-900);--color-error:var(--color-error-300);--color-on-error:var(--color-indigo-900);--color-info:var(--color-azure-300);--color-on-info:var(--color-indigo-900);--color-focus-ring:var(--color-purple-200);--shadow-1:0 1px 2px rgba(0,0,0,.4);--shadow-2:0 2px 6px rgba(0,0,0,.45);--shadow-3:0 6px 16px rgba(0,0,0,.5);--shadow-4:0 12px 32px rgba(0,0,0,.55)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--color-surface:var(--color-indigo-900);--color-surface-raised:var(--color-indigo-700);--color-on-surface:var(--color-purple-50);--color-text-strong:var(--color-purple-50);--color-text-brand:var(--color-purple-200);--color-text-muted:var(--color-neutral-200);--color-action-primary:var(--color-purple-400);--color-action-primary-hover:var(--color-purple-300);--color-action-primary-text:var(--color-indigo-900);--color-accent:var(--color-azure-300);--color-border:var(--color-neutral-700);--color-success:var(--color-success-300);--color-on-success:var(--color-indigo-900);--color-warning:var(--color-warning-300);--color-on-warning:var(--color-indigo-900);--color-error:var(--color-error-300);--color-on-error:var(--color-indigo-900);--color-info:var(--color-azure-300);--color-on-info:var(--color-indigo-900);--color-focus-ring:var(--color-purple-200)}}@media (prefers-reduced-motion:reduce){:root{--duration-fast:0ms;--duration-base:0ms;--duration-slow:0ms}}*,:after,:before{box-sizing:border-box}body,html{margin:0;padding:0;font-family:var(--font-family-base);font-size:var(--font-size-body);line-height:var(--line-height-body);color:var(--color-on-surface);background:var(--color-surface)}a{color:var(--color-accent);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}.material-symbols-outlined{font-family:var(--icon-font-family);font-size:var(--icon-lg);font-weight:400;font-style:normal;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;font-variation-settings:"FILL" 0,"wght" 400,"GRAD" 0,"opsz" 24}.app-shell{display:grid;grid-template-columns:240px 1fr;grid-template-rows:auto 1fr;min-height:100vh}.app-shell__topbar{grid-column:1/-1;display:flex;align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-5);border-bottom:1px solid var(--color-border);background:var(--color-surface-raised)}.app-shell__brand{font-size:var(--font-size-title);font-weight:var(--font-weight-bold);color:var(--color-text-brand)}.app-shell__sidenav{padding:var(--space-5) var(--space-3);border-right:1px solid var(--color-border)}.app-shell__sidenav ul{list-style:none;margin:0;padding:0;display:grid;grid-gap:var(--space-2);gap:var(--space-2)}.app-shell__main{padding:var(--space-6)}.app-shell__main-title{font-size:var(--font-size-headline);line-height:var(--line-height-headline);font-weight:var(--font-weight-bold);color:var(--color-text-brand);margin:0 0 var(--space-5)}.nav-link{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);color:var(--color-on-surface)}.nav-link[aria-current=page]{background:var(--color-surface-raised);font-weight:var(--font-weight-semibold);color:var(--color-text-brand)}.btn{display:inline-flex;align-items:center;gap:var(--space-2);font:inherit;font-size:var(--font-size-label);font-weight:var(--font-weight-medium);padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);border:1px solid transparent;background:var(--color-action-primary);color:var(--color-action-primary-text);cursor:pointer;transition:background var(--duration-fast) var(--easing-standard)}.btn:hover:not(:disabled){background:var(--color-action-primary-hover)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn--secondary{background:transparent;border-color:var(--color-border);color:var(--color-text-strong)}.btn--destructive{background:var(--color-error);color:var(--color-on-error)}.field{display:grid;grid-gap:var(--space-1);gap:var(--space-1);margin-bottom:var(--space-4)}.field__label{font-size:var(--font-size-label);font-weight:var(--font-weight-medium);color:var(--color-text-strong)}.field__input{font:inherit;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-on-surface)}.field__error{display:flex;align-items:center;gap:var(--space-1);font-size:var(--font-size-caption);color:var(--color-error)}.form-summary{border:1px solid var(--color-error);color:var(--color-error)}.banner,.form-summary{border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4);background:var(--color-surface-raised)}.banner{border:1px solid var(--color-border)}.banner--success{border-color:var(--color-success);color:var(--color-success)}.banner--error{border-color:var(--color-error);color:var(--color-error)}.banner--info{border-color:var(--color-info);color:var(--color-info)}.data-table{width:100%;border-collapse:collapse;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md)}.data-table td,.data-table th{text-align:start;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);font-size:var(--font-size-label)}.data-table th{font-weight:var(--font-weight-semibold);color:var(--color-text-strong);background:var(--color-surface-raised)}.state-panel{display:grid;grid-gap:var(--space-3);gap:var(--space-3);justify-items:center;padding:var(--space-8) var(--space-4);border:1px dashed var(--color-border);border-radius:var(--radius-md);color:var(--color-text-muted);text-align:center}.skeleton{display:grid;grid-gap:var(--space-2);gap:var(--space-2);padding:var(--space-4)}.skeleton__bar{height:var(--space-4);border-radius:var(--radius-sm);background:var(--color-surface-raised);animation:skeleton-pulse var(--duration-slow) var(--easing-standard) infinite alternate}@keyframes skeleton-pulse{0%{opacity:.5}to{opacity:1}}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));grid-gap:var(--space-4);gap:var(--space-4)}.card{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4);background:var(--color-surface)}.dialog-backdrop{position:fixed;inset:0;display:grid;place-items:center;background:rgba(26,26,26,.5);padding:var(--space-4)}.dialog{max-width:480px;width:100%;background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-4);padding:var(--space-5)}.dialog__actions{display:flex;justify-content:flex-end;gap:var(--space-3);margin-top:var(--space-5)}.toast{position:fixed;inset-inline-end:var(--space-5);inset-block-end:var(--space-5);max-width:360px}.chat-stream{display:grid;grid-gap:var(--space-3);gap:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4);min-height:240px}.chat-stream__message{margin:0;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);background:var(--color-surface-raised)}.chat-stream__typing{font-size:var(--font-size-caption);color:var(--color-text-muted)}.chat-stream__incomplete{font-size:var(--font-size-caption);color:var(--color-warning)}.view-toggle{display:inline-flex;gap:var(--space-2);align-items:center;margin-bottom:var(--space-4)}.progress{height:var(--space-2);border-radius:var(--radius-full);background:var(--color-surface-raised);overflow:hidden;margin-top:var(--space-2)}.progress__bar{height:100%;background:var(--color-action-primary);transition:width var(--duration-fast) var(--easing-standard)}.sr-only,.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.sr-only{left:0;top:0}body{background:var(--color-neutral-50);color:var(--color-on-surface)}[data-theme=dark] body{background:var(--color-surface)}.shell{display:grid;grid-template-columns:248px minmax(0,1fr);grid-template-rows:56px minmax(0,1fr);min-height:100vh}.shell__top{grid-column:1/-1;gap:var(--space-4);padding:0 var(--space-5);background:var(--color-surface);border-bottom:1px solid var(--color-border);position:-webkit-sticky;position:sticky;top:0;z-index:20}.shell__product,.shell__top{display:flex;align-items:center}.shell__product{gap:var(--space-2);color:var(--color-text-strong);min-width:200px}.shell__product,.shell__product:hover{text-decoration:none}.shell__product small,.shell__user small,.sidenav__module-head small{display:block;color:var(--color-text-muted);font-size:var(--text-caption-size);font-weight:400}.shell__logo{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:var(--radius-md);background:var(--color-action-primary);color:var(--color-action-primary-text);font-weight:700;font-size:var(--text-label-size)}.shell__tenant{display:inline-flex;align-items:center;gap:var(--space-1);color:var(--color-text-strong);font-weight:600}.shell__spacer{flex:1 1}.shell__user{display:inline-flex;align-items:center;gap:var(--space-2);line-height:1.2}.shell__logout{border:0;background:transparent;color:var(--color-text-muted);cursor:pointer;padding:var(--space-2);border-radius:var(--radius-md)}.shell__logout:hover{background:var(--color-neutral-100);color:var(--color-text-strong)}.shell__side{background:var(--color-surface);border-right:1px solid var(--color-border);padding:var(--space-4) var(--space-3);overflow-y:auto;position:-webkit-sticky;position:sticky;top:56px;height:calc(100vh - 56px)}.shell__main{padding:var(--space-6);min-width:0}.sidenav__module+.sidenav__module{margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--color-border)}.sidenav__module-head{display:flex;align-items:center;gap:var(--space-2);padding:0 var(--space-2) var(--space-2);color:var(--color-text-brand);line-height:1.25}.sidenav__group-label{font-size:var(--text-caption-size);color:var(--color-text-muted);padding:var(--space-3) var(--space-2) var(--space-1);letter-spacing:.04em}.sidenav__group ul{list-style:none;margin:0;padding:0}.sidenav__link{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2);border-radius:var(--radius-md);color:var(--color-on-surface);font-size:var(--text-body-size);text-decoration:none}.sidenav__link .material-symbols-outlined{font-size:20px;color:var(--color-text-muted)}.sidenav__link:hover{background:var(--color-neutral-100);text-decoration:none}.sidenav__link--active{background:var(--color-purple-50);font-weight:600}.sidenav__link--active,.sidenav__link--active .material-symbols-outlined{color:var(--color-text-brand)}[data-theme=dark] .sidenav__link--active{background:var(--color-purple-900)}[data-theme=dark] .shell__logout:hover,[data-theme=dark] .sidenav__link:hover{background:var(--color-neutral-800)}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-5)}.page-header__title{margin:0;font-size:var(--text-headline-size);line-height:var(--text-headline-line);color:var(--color-text-strong)}.page-header__path,.page-header__subtitle{margin:var(--space-1) 0 0;color:var(--color-text-muted)}.page-header__path{font-family:var(--font-family-mono);font-size:var(--text-caption-size)}.page-header__actions{display:flex;gap:var(--space-2);flex-wrap:wrap}.section{min-width:0}.section__head{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-3);margin-bottom:var(--space-4)}.section__title{margin:0;font-size:var(--text-title-size);color:var(--color-text-strong)}.section__hint{margin:var(--space-1) 0 0;font-size:var(--text-caption-size);color:var(--color-text-muted)}.grid{display:grid;grid-gap:var(--space-4);gap:var(--space-4)}.grid+.grid,.grid+.section,.section+.grid,.section+.section{margin-top:var(--space-4)}.grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid--4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid--5{grid-template-columns:repeat(5,minmax(0,1fr))}@media (max-width:1100px){.grid--3,.grid--4,.grid--5{grid-template-columns:repeat(2,minmax(0,1fr))}}.stat__label{color:var(--color-text-muted);font-size:var(--text-label-size)}.stat__value{font-size:var(--text-display-size);line-height:1.15;font-weight:700;color:var(--color-text-strong);margin-top:var(--space-1);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.stat__unit{font-size:var(--text-title-size);margin-left:var(--space-1);font-weight:600}.stat__delta{margin-top:var(--space-1);font-size:var(--text-caption-size)}.stat__delta--up{color:var(--color-success-600)}.stat__delta--down{color:var(--color-azure-600)}.stat__delta--warn{color:var(--color-warning-700)}.stat__delta--neutral{color:var(--color-text-muted)}.brand-tag{display:inline-flex;align-items:center;gap:6px;padding:2px var(--space-2);border-radius:var(--radius-full);background:color-mix(in srgb,var(--brand-color) 14%,transparent);color:var(--color-text-strong);font-size:var(--text-caption-size);white-space:nowrap}.brand-tag--md{font-size:var(--text-label-size)}.brand-tag__dot{width:8px;height:8px;border-radius:50%;background:var(--brand-color)}.kv{margin:0;grid-gap:var(--space-2)}.kv,.kv__row{display:grid;gap:var(--space-2)}.kv__row{grid-template-columns:96px 1fr;grid-gap:var(--space-2)}.kv dt{color:var(--color-text-muted)}.kv dd{margin:0;color:var(--color-text-strong)}.callouts{list-style:none;counter-reset:callout;margin:var(--space-5) 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:var(--space-3);gap:var(--space-3)}.callouts li{counter-increment:callout;display:grid;grid-gap:var(--space-1);gap:var(--space-1);padding:var(--space-3) var(--space-4);border-left:3px solid var(--color-action-primary);background:var(--color-surface);border-radius:var(--radius-sm);font-size:var(--text-caption-size);color:var(--color-text-muted)}.callouts li strong{color:var(--color-text-strong);font-size:var(--text-label-size)}.callouts li strong:before{content:counter(callout) " ";color:var(--color-text-brand)}.module-card-link,.module-card-link:hover{text-decoration:none;color:inherit}.module-card{display:flex;gap:var(--space-4);align-items:flex-start}.module-card .icon{font-size:40px;color:var(--color-text-brand)}.module-card h2{margin:0;font-size:var(--text-title-size);color:var(--color-text-strong)}.module-card p{margin:var(--space-1) 0 var(--space-3);color:var(--color-text-muted)}.login{min-height:100vh;display:grid;place-items:center;padding:var(--space-6);background:linear-gradient(135deg,var(--color-purple-50),var(--color-neutral-50))}.login__panel,[data-theme=dark] .login{background:var(--color-surface)}.login__panel{width:min(420px,100%);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-2);padding:var(--space-8) var(--space-7)}.login__brand{display:flex;align-items:center;gap:var(--space-3);line-height:1.25}.login__brand small{display:block;color:var(--color-text-muted)}.login__title{font-size:var(--text-headline-size);margin:var(--space-6) 0 var(--space-4);color:var(--color-text-strong)}.login__note{margin:var(--space-5) 0 0;font-size:var(--text-caption-size);color:var(--color-text-muted)}.form-stack{display:grid;grid-gap:var(--space-4);gap:var(--space-4)}.icon{vertical-align:middle}.muted{color:var(--color-text-muted)}.mono{font-family:var(--font-family-mono)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) body{background:var(--color-surface)}:root:not([data-theme=light]) .sidenav__link--active{background:var(--color-purple-900)}:root:not([data-theme=light]) .shell__logout:hover,:root:not([data-theme=light]) .sidenav__link:hover{background:var(--color-neutral-800)}:root:not([data-theme=light]) .login{background:var(--color-surface)}}.shell__menu,.shell__scrim{display:none}@media (max-width:900px){.shell{grid-template-columns:minmax(0,1fr)}.shell__top{gap:var(--space-2);padding:0 var(--space-3)}.shell__menu{display:inline-grid;place-items:center;border:0;background:transparent;color:var(--color-text-strong);padding:var(--space-1);border-radius:var(--radius-md);cursor:pointer}.shell__product{min-width:0}.shell__product small,.shell__product strong,.shell__tenant,.shell__theme,.shell__user>span:last-child{display:none}.shell__side{position:fixed;top:56px;left:0;bottom:0;width:min(300px,86vw);height:auto;z-index:40;transform:translateX(-100%);transition:transform var(--duration-base) var(--easing-standard);box-shadow:var(--shadow-3)}:root[data-nav=open] .shell__side{transform:translateX(0)}:root[data-nav=open] .shell__scrim{display:block;position:fixed;inset:56px 0 0 0;z-index:30;background:color-mix(in srgb,var(--color-ink) 40%,transparent)}.shell__main{padding:var(--space-4) var(--space-3)}.page-header{flex-direction:column;align-items:stretch}.page-header__title{font-size:var(--text-title-size);line-height:var(--text-title-line)}}@media (max-width:640px){.grid--2,.grid--3,.grid--4,.grid--5{grid-template-columns:minmax(0,1fr)}.stat__value{font-size:var(--text-headline-size)}.kv__row{grid-template-columns:84px 1fr}.login__panel{padding:var(--space-6) var(--space-5)}}@media (max-width:900px){.shell__main :is(div,section,article,form,aside){min-width:0}.shell__main .dm-table-wrap{max-width:100%;position:relative}.shell__main .dm-table td,.shell__main .dm-table th{white-space:nowrap}}