:root{--ffd-color-brand:#c8e4ff;--ffd-color-brand-deep:#9bbde5;--ffd-color-brand-press:#5f74a5;--ffd-color-brand-soft:#e8f1fb;--ffd-color-on-brand:#fff;--ffd-color-on-brand-tint:#1c1c1e;--ffd-color-bg:#f2f2f7;--ffd-color-surface:#fff;--ffd-color-surface-2:#f9f9fb;--ffd-color-surface-3:#efeff4;--ffd-color-fill:#ededf0;--ffd-color-ink:#1c1c1e;--ffd-color-ink-2:#3c3c43;--ffd-color-ink-3:#6c6c70;--ffd-color-ink-4:#8e8e93;--ffd-color-placeholder:#c7c7cc;--ffd-color-line:#e5e5ea;--ffd-color-line-strong:#d1d1d6;--ffd-color-success:#1f7a36;--ffd-color-success-soft:#e9f9ee;--ffd-color-warning:#b25000;--ffd-color-warning-soft:#fff4e5;--ffd-color-danger:#d70015;--ffd-color-danger-soft:#ffebea;--ffd-color-danger-line:#ffc7c2;--ffd-color-danger-soft-strong:#ffd7d3;--ffd-color-sandbox:#fd9697;--ffd-color-brand-line:#9bbde5;--ffd-color-overlay:#0006;--ffd-color-surface-glass:#fffffff0;--ffd-color-surface-vibrant:#ffffffbf;--ffd-color-toast:#1c1c1e;--ffd-color-toast-error:#b3261e;--ffd-space-1:4px;--ffd-space-2:8px;--ffd-space-3:12px;--ffd-space-4:16px;--ffd-space-5:20px;--ffd-space-6:24px;--ffd-space-8:32px;--ffd-space-10:40px;--ffd-space-14:56px;--ffd-space-16:64px;--ffd-radius-xs:4px;--ffd-radius-sm:6px;--ffd-radius-md:8px;--ffd-radius-lg:12px;--ffd-radius-pill:9999px;--ffd-shadow-1:0 1px 2px #0f1b330a;--ffd-shadow-2:0 4px 12px #0f1b3314;--ffd-shadow-3:0 8px 24px #0f1b331f;--ffd-shadow-4:0 24px 64px #0f1b3342;--ffd-shadow-sticky:-8px 0 10px -8px #0f1b332e;--ffd-font-sans:-apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro Display", "Helvetica Neue", "PingFang SC", "Microsoft YaHei", sans-serif;--ffd-font-mono:"SF Mono", "JetBrains Mono", Menlo, Consolas, "Courier New", monospace;--ffd-font-size-11:11px;--ffd-font-size-12:12px;--ffd-font-size-13:13px;--ffd-font-size-14:14px;--ffd-font-size-20:20px;--ffd-line-height-tight:1.35;--ffd-line-height-base:1.6;--ffd-badge-height:18px;--ffd-badge-font-size:var(--ffd-font-size-12);--ffd-stat-value-font-size:22px;--ffd-switch-width:32px;--ffd-switch-height:18px;--ffd-switch-knob:14px;--ffd-switch-inset:2px;--ffd-choice-padding-y:var(--ffd-space-2);--ffd-choice-padding-x:var(--ffd-space-3);--ffd-textarea-doc-height:180px;--ffd-modal-narrow-width:420px;--ffd-modal-channel-width:720px;--ffd-cascader-col:128px;--ffd-cascader-card-col:168px;--ffd-hit-min:44px;--ffd-cta-mobile:48px;--ffd-duration-fast:.12s;--ffd-duration-base:.16s;--ffd-duration-slow:.24s;--ffd-duration-spring:.28s;--ffd-duration-skeleton:1.2s;--ffd-ease:cubic-bezier(.4, 0, .2, 1);--ffd-ease-spring:cubic-bezier(.34, 1.56, .64, 1);--ffd-z-sticky:20;--ffd-z-actions:3;--ffd-z-modal:50;--ffd-z-toast:80;--ffd-layout-sidebar:232px;--ffd-layout-sidebar-collapsed:64px;--ffd-layout-topbar:56px;--ffd-layout-gutter:clamp(16px, 2vw, 32px);--ffd-layout-content-max:none;--ffd-layout-flow-gap:12px;--bg:var(--ffd-color-bg);--canvas:var(--ffd-color-surface);--surface:var(--ffd-color-surface);--ink:var(--ffd-color-ink);--ink-2:var(--ffd-color-ink-2);--ink-3:var(--ffd-color-ink-3);--ink-mute:var(--ffd-color-ink-3);--line:var(--ffd-color-line);--line-input:var(--ffd-color-line-strong);--brand:var(--ffd-color-brand);--brand-deep:var(--ffd-color-brand-deep);--brand-press:var(--ffd-color-brand-press);--brand-ink:var(--ffd-color-on-brand);--brand-soft:var(--ffd-color-brand-soft);--ok:var(--ffd-color-success);--ok-soft:var(--ffd-color-success-soft);--warn:var(--ffd-color-warning);--warn-soft:var(--ffd-color-warning-soft);--danger:var(--ffd-color-danger);--danger-soft:var(--ffd-color-danger-soft);--radius:var(--ffd-radius-md);--radius-sm:var(--ffd-radius-xs);--radius-md:var(--ffd-radius-sm);--radius-pill:var(--ffd-radius-pill);--shadow:var(--ffd-shadow-1);--shadow-2:var(--ffd-shadow-2);--shadow-3:var(--ffd-shadow-3)}*,:before,:after{box-sizing:border-box}html,body,#app{height:100%;margin:0}body{background:var(--ffd-color-bg);color:var(--ffd-color-ink);font-family:var(--ffd-font-sans);font-size:var(--ffd-font-size-14);line-height:var(--ffd-line-height-base);-webkit-font-smoothing:antialiased}h1,h2,h3,h4,p{margin:0}button{font:inherit;cursor:pointer}input,select,textarea{font:inherit}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--ffd-color-brand-press);outline-offset:2px}::selection{background:var(--ffd-color-brand-soft);color:var(--ffd-color-ink)}*{scrollbar-width:thin;scrollbar-color:var(--ffd-color-line-strong) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{border-radius:var(--ffd-radius-pill);background:var(--ffd-color-line-strong)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.card-head{justify-content:space-between;align-items:flex-start;gap:var(--ffd-space-4);padding:var(--ffd-space-4) var(--ffd-space-5);border-bottom:1px solid var(--ffd-color-line);display:flex}.card-title{font-size:var(--ffd-font-size-14);font-weight:600}.card-desc{margin-top:var(--ffd-space-1);color:var(--ffd-color-ink-3);font-size:var(--ffd-font-size-12)}.card-body{padding:var(--ffd-space-5)}.page-head{justify-content:space-between;align-items:flex-end;gap:var(--ffd-space-4);margin-bottom:var(--ffd-space-4);display:flex}.page-head h1{font-size:var(--ffd-font-size-20);letter-spacing:-.01em;font-weight:600}.page-head .sub{margin-top:var(--ffd-space-1);color:var(--ink-3);font-size:var(--ffd-font-size-12)}.stat{padding:var(--ffd-space-5);gap:var(--ffd-space-2);flex-direction:column;display:flex}.stat-label{font-size:var(--ffd-font-size-12);color:var(--ffd-color-ink-3)}.stat-value{font-family:var(--ffd-font-sans);font-size:var(--ffd-stat-value-font-size);font-weight:600;line-height:var(--ffd-line-height-tight);font-variant-numeric:tabular-nums;color:var(--ffd-color-ink)}.stat-unit{font-size:var(--ffd-font-size-14);color:var(--ffd-color-ink-3);font-weight:500}.sk{vertical-align:middle;background:var(--ffd-color-surface-3);border-radius:var(--ffd-radius-sm);animation:sk-pulse var(--ffd-duration-skeleton) ease-in-out infinite;display:inline-block}.sk-value{width:58%;height:1em}.sk-text{width:46%;height:12px}.sk-count{width:44px;height:18px}@keyframes sk-pulse{0%,to{opacity:1}50%{opacity:.5}}@media (prefers-reduced-motion:reduce){.sk{animation:none}}.btn{justify-content:center;align-items:center;gap:var(--ffd-space-2);height:34px;padding:0 var(--ffd-space-4);border:1px solid var(--brand);border-radius:var(--radius-md);background:var(--brand);color:var(--ffd-color-on-brand-tint);font-size:var(--ffd-font-size-13);white-space:nowrap;transition:background var(--ffd-duration-base) var(--ffd-ease), border-color var(--ffd-duration-base) var(--ffd-ease), color var(--ffd-duration-base) var(--ffd-ease), transform var(--ffd-duration-fast) var(--ffd-ease);font-weight:500;text-decoration:none;display:inline-flex}.btn:hover{background:var(--brand-deep);border-color:var(--brand-deep)}.btn:active{background:var(--brand-press);border-color:var(--brand-press);color:var(--ffd-color-on-brand);transform:translateY(1px)}.btn.primary{background:var(--brand);border-color:var(--brand);color:var(--ffd-color-on-brand-tint)}.btn.secondary{background:var(--canvas);border-color:var(--brand-deep);color:var(--brand-press)}.btn.secondary:hover{background:var(--brand-soft);color:var(--ffd-color-ink)}.btn.ghost{color:var(--ink-2);background:0 0;border-color:#0000}.btn.ghost:hover{background:var(--ffd-color-surface-3);color:var(--ink);border-color:#0000}.btn.danger{background:var(--danger-soft);border-color:var(--ffd-color-danger-line);color:var(--danger)}.btn.danger:hover{background:var(--ffd-color-danger-soft-strong);border-color:var(--ffd-color-danger-line);color:var(--danger)}.btn.text{height:auto;padding:var(--ffd-space-1) var(--ffd-space-2);color:var(--brand-press);background:0 0;border-color:#0000}.btn.text:hover{background:var(--brand-soft);color:var(--ffd-color-ink);border-color:#0000}.btn.sm{height:28px;padding:0 var(--ffd-space-3);font-size:var(--ffd-font-size-12)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:disabled:hover{background:var(--brand);border-color:var(--brand)}.field{gap:var(--ffd-space-2);flex-direction:column;display:flex}.field label{font-size:var(--ffd-font-size-12);color:var(--ink-2)}.input{height:34px;padding:0 var(--ffd-space-3);border:1px solid var(--line-input);border-radius:var(--radius-md);background:var(--canvas);color:var(--ink);font-size:var(--ffd-font-size-13);transition:border-color var(--ffd-duration-base) var(--ffd-ease), box-shadow var(--ffd-duration-base) var(--ffd-ease);outline:none;width:100%}.input::placeholder{color:var(--ffd-color-placeholder)}.input:focus{border-color:var(--brand-press);box-shadow:0 0 0 3px var(--brand-soft)}select.input{cursor:pointer}textarea.input{height:auto;min-height:72px;padding:var(--ffd-space-2) var(--ffd-space-3);resize:vertical;line-height:1.6}.hint{font-size:var(--ffd-font-size-12);color:var(--ink-3)}.input:disabled{background:var(--ffd-color-surface-3);color:var(--ffd-color-ink-4);cursor:not-allowed}.input.invalid{border-color:var(--ffd-color-danger)}.input.invalid:focus{border-color:var(--ffd-color-danger);box-shadow:0 0 0 3px var(--ffd-color-danger-soft)}.field-error{font-size:var(--ffd-font-size-12);color:var(--ffd-color-danger)}.field.wide{grid-column:1/-1}.choice-group{gap:var(--ffd-space-2);display:flex}.choice{align-items:flex-start;gap:var(--ffd-space-1);min-width:0;padding:var(--ffd-choice-padding-y) var(--ffd-choice-padding-x);border:1px solid var(--ffd-color-line-strong);border-radius:var(--ffd-radius-sm);background:var(--ffd-color-surface);text-align:left;cursor:pointer;transition:border-color var(--ffd-duration-fast) var(--ffd-ease), background var(--ffd-duration-fast) var(--ffd-ease);flex-direction:column;flex:1;font-family:inherit;display:flex}.choice:hover{border-color:var(--brand-deep)}.choice:focus-visible{outline:2px solid var(--brand-press);outline-offset:2px}.choice-title{font-size:var(--ffd-font-size-13);line-height:var(--ffd-line-height-tight);color:var(--ffd-color-ink)}.choice-desc{font-size:var(--ffd-font-size-12);line-height:var(--ffd-line-height-tight);color:var(--ffd-color-ink-3)}.choice.active{border-color:var(--brand-press);background:var(--ffd-color-brand-soft)}.choice.active .choice-title{color:var(--ffd-color-ink);font-weight:500}.choice.danger.active{border-color:var(--ffd-color-danger);background:var(--ffd-color-danger-soft)}.choice.danger.active .choice-title{color:var(--ffd-color-danger)}.switch{align-items:center;gap:var(--ffd-space-2);color:var(--ffd-color-ink-3);font-size:var(--ffd-font-size-12);cursor:pointer;background:0 0;border:0;padding:0;display:inline-flex}.switch-track{flex:0 0 var(--ffd-switch-width);width:var(--ffd-switch-width);height:var(--ffd-switch-height);border-radius:var(--ffd-radius-pill);background:var(--ffd-color-line-strong);transition:background var(--ffd-duration-fast) var(--ffd-ease);position:relative}.switch-track:after{content:"";top:var(--ffd-switch-inset);left:var(--ffd-switch-inset);width:var(--ffd-switch-knob);height:var(--ffd-switch-knob);background:var(--ffd-color-surface);box-shadow:var(--ffd-shadow-1);transition:transform var(--ffd-duration-fast) var(--ffd-ease);border-radius:50%;position:absolute}.switch[aria-checked=true] .switch-track{background:var(--brand-press)}.switch[aria-checked=true] .switch-track:after{transform:translateX(calc(var(--ffd-switch-width) - var(--ffd-switch-knob) - var(--ffd-switch-inset) * 2))}.switch[aria-checked=true] .switch-label{color:var(--ffd-color-ink)}.switch:hover:not(:disabled) .switch-track{box-shadow:0 0 0 3px var(--ffd-color-brand-soft)}.switch:disabled{opacity:.5;cursor:not-allowed}.switch:focus-visible{outline:2px solid var(--brand-press);outline-offset:2px;border-radius:var(--ffd-radius-xs)}.table-wrap{overflow-x:auto}table{border-collapse:separate;border-spacing:0;width:100%;font-size:var(--ffd-font-size-12);font-variant-numeric:tabular-nums}thead th{padding:var(--ffd-space-3);text-align:left;color:var(--ink-2);background:var(--ffd-color-bg);border-bottom:1px solid var(--line);white-space:nowrap;font-weight:500}tbody td{padding:var(--ffd-space-3);border-bottom:1px solid var(--line);vertical-align:middle;line-height:1.5}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:var(--ffd-color-surface-2)}tbody tr.clickable{cursor:pointer}tbody tr.expand-row,tbody tr.expand-row:hover{background:var(--ffd-color-bg)}tbody tr.expand-row>td.expand-cell{padding:var(--ffd-space-4);background:var(--ffd-color-bg);border-bottom:1px solid var(--line);vertical-align:top}.expand-head{align-items:center;gap:var(--ffd-space-2);margin-bottom:var(--ffd-space-3);display:flex}.expand-title{font-size:var(--ffd-font-size-12);color:var(--ink);font-weight:600}.expand-state{padding:var(--ffd-space-3) 0;font-size:var(--ffd-font-size-12);color:var(--ink-3)}.expand-table{border:1px solid var(--line);border-radius:var(--ffd-radius-sm);border-collapse:separate;border-spacing:0;overflow:hidden}.expand-table thead th{padding:var(--ffd-space-2) var(--ffd-space-3);background:var(--ffd-color-surface-2);border-bottom:1px solid var(--line);font-size:var(--ffd-font-size-11);color:var(--ink-2);font-weight:500}.expand-table tbody td{padding:var(--ffd-space-2) var(--ffd-space-3);border-bottom:1px solid var(--line);font-size:var(--ffd-font-size-12);color:var(--ink)}.expand-table tbody tr:last-child td{border-bottom:0}.expand-table tbody tr:hover{background:var(--ffd-color-surface-2)}tbody td .btn.text{color:var(--ink-2)}tbody td .btn.text:hover{background:var(--ffd-color-surface-3);color:var(--ink)}tbody td .btn.text.danger-text{color:var(--danger)}tbody td .btn.text.danger-text:hover{background:var(--danger-soft);color:var(--danger)}tbody td .badge.brand,tbody td .badge.info{background:var(--ffd-color-fill);color:var(--ink-2)}th.right,td.right{text-align:right}th.col-actions,td.col-actions{background:var(--canvas);width:1%;box-shadow:var(--ffd-shadow-sticky);white-space:nowrap;position:sticky;right:0}thead th.col-actions{background:var(--ffd-color-bg);z-index:3}tbody td.col-actions{z-index:1}tbody tr:hover td.col-actions{background:var(--ffd-color-surface-2)}.pager{align-items:center;gap:var(--ffd-space-2);padding:var(--ffd-space-3) var(--ffd-space-4);border-top:1px solid var(--ffd-color-line);background:var(--ffd-color-surface);flex-wrap:wrap;justify-content:flex-end;display:flex}.pager-info{color:var(--ffd-color-ink-3);font-size:var(--ffd-font-size-12);margin-right:auto}.pager-info b{color:var(--ffd-color-ink);font-weight:600}.pager-pages{gap:var(--ffd-space-1);flex-wrap:wrap;display:flex}.pager-btn{min-width:28px;height:28px;padding:0 var(--ffd-space-2);border:1px solid var(--ffd-color-line);border-radius:var(--ffd-radius-sm);background:var(--ffd-color-surface);color:var(--ffd-color-ink-2);font-size:var(--ffd-font-size-12);transition:border-color var(--ffd-duration-fast) var(--ffd-ease), background var(--ffd-duration-fast) var(--ffd-ease);line-height:1}.pager-btn:hover:not(:disabled):not(.active){border-color:var(--brand-press);color:var(--brand-press)}.pager-btn.active{border-color:var(--brand);background:var(--brand);color:var(--ffd-color-on-brand-tint)}.pager-btn:disabled{cursor:not-allowed;color:var(--ffd-color-placeholder);background:var(--ffd-color-surface-2)}.pager-size .input{width:auto;height:28px;padding:0 var(--ffd-space-2);font-size:var(--ffd-font-size-12)}@media (width<=640px){.pager{justify-content:center}.pager-info{text-align:center;width:100%;margin-right:0}}.badge{justify-content:center;align-items:center;gap:var(--ffd-space-1);height:var(--ffd-badge-height);padding:0 var(--ffd-space-2);border-radius:var(--radius-pill);font-size:var(--ffd-badge-font-size);vertical-align:middle;white-space:nowrap;background:var(--ffd-color-fill);color:var(--ink-2);font-weight:400;line-height:1;display:inline-flex}.badge.ok{background:var(--ok-soft);color:var(--ok)}.badge.off{background:var(--ffd-color-fill);color:var(--ink-3)}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.danger{background:var(--danger-soft);color:var(--danger)}.badge.brand,.badge.info{background:var(--brand-soft);color:var(--ffd-color-ink)}.badge.sandbox{background:var(--ffd-color-sandbox);color:var(--ffd-color-ink)}.badge.deep{background:var(--ffd-color-brand-press);color:var(--ffd-color-on-brand)}.dot{background:currentColor;border-radius:50%;width:5px;height:5px}.mono{font-family:var(--ffd-font-mono);font-size:var(--ffd-font-size-12);font-variant-numeric:tabular-nums}.num{font-family:var(--ffd-font-sans);font-variant-numeric:tabular-nums}.num.neg{color:var(--ffd-color-danger)}.muted{color:var(--ink-3)}.empty{padding:var(--ffd-space-10) var(--ffd-space-4);text-align:center;color:var(--ink-3);font-size:var(--ffd-font-size-13)}.empty strong{margin-bottom:var(--ffd-space-1);font-size:var(--ffd-font-size-13);color:var(--ink-2);font-weight:600;display:block}.link{color:var(--brand-press);border-bottom:1px solid var(--ffd-color-brand-line);transition:color var(--ffd-duration-fast) var(--ffd-ease), border-color var(--ffd-duration-fast) var(--ffd-ease)}.link:hover{color:var(--ffd-color-ink);border-bottom-color:var(--brand-press)}.avatar{background:var(--ffd-color-fill);width:32px;height:32px;color:var(--ffd-color-ink-2);font-size:var(--ffd-font-size-12);border-radius:50%;flex:0 0 32px;place-items:center;font-weight:600;display:grid}.avatar.brand{background:var(--ffd-color-brand-soft);color:var(--ffd-color-ink)}.check{align-items:center;gap:var(--ffd-space-2);min-height:var(--ffd-space-8);color:var(--ffd-color-ink-2);font-size:var(--ffd-font-size-13);cursor:pointer;display:inline-flex}.check input[type=checkbox],.check input[type=radio]{width:16px;height:16px;accent-color:var(--brand-press);cursor:inherit;margin:0}.check:has(input:disabled){color:var(--ffd-color-ink-4);cursor:not-allowed}.chips{gap:var(--ffd-space-2);flex-wrap:wrap;display:flex}.chip{align-items:center;gap:var(--ffd-space-1);height:var(--ffd-badge-height);padding:0 var(--ffd-space-2);border:1px solid var(--ffd-color-line);border-radius:var(--ffd-radius-pill);background:var(--ffd-color-surface-2);color:var(--ffd-color-ink-2);font-size:var(--ffd-font-size-12);white-space:nowrap;line-height:1;display:inline-flex}.chip.brand{background:var(--ffd-color-brand-soft);border-color:var(--ffd-color-brand-line);color:var(--ffd-color-ink)}.chip-remove{width:14px;height:14px;color:var(--ffd-color-ink-4);font-size:var(--ffd-font-size-12);background:0 0;border:0;border-radius:50%;place-items:center;padding:0;line-height:1;display:grid}.chip-remove:hover{background:var(--ffd-color-fill);color:var(--ffd-color-danger)}.alert{align-items:flex-start;gap:var(--ffd-space-2);padding:var(--ffd-space-3) var(--ffd-space-4);border-radius:var(--ffd-radius-sm);background:var(--ffd-color-surface-2);color:var(--ffd-color-ink-2);font-size:var(--ffd-font-size-12);border:1px solid #0000;line-height:1.6;display:flex}.alert strong{color:var(--ffd-color-ink);font-weight:600}.alert.info{border-color:var(--ffd-color-brand-line);background:var(--ffd-color-brand-soft);color:var(--ffd-color-ink-2)}.alert.ok{background:var(--ffd-color-success-soft);color:var(--ffd-color-success)}.alert.warn{background:var(--ffd-color-warning-soft);color:var(--ffd-color-warning)}.alert.danger{border-color:var(--ffd-color-danger-line);background:var(--ffd-color-danger-soft);color:var(--ffd-color-danger)}.block{background:var(--ffd-color-surface);border:1px solid var(--ffd-color-line);border-radius:var(--ffd-radius-md);box-shadow:var(--ffd-shadow-1)}.block-head{justify-content:space-between;align-items:flex-start;gap:var(--ffd-space-3);padding:var(--ffd-space-4) var(--ffd-space-5);border-bottom:1px solid var(--ffd-color-line);display:flex}.block-head h3{font-size:var(--ffd-font-size-14);font-weight:600}.block-head p{margin-top:var(--ffd-space-1);color:var(--ffd-color-ink-3);font-size:var(--ffd-font-size-12)}.block-body{gap:var(--ffd-space-4);padding:var(--ffd-space-5);flex-direction:column;display:flex}.block-foot{justify-content:space-between;align-items:center;gap:var(--ffd-space-4);padding:var(--ffd-space-3) var(--ffd-space-5);border-top:1px solid var(--ffd-color-line);display:flex}.meta-grid{gap:var(--ffd-space-3);grid-template-columns:repeat(2,minmax(0,1fr));margin:0;display:grid}.meta{gap:var(--ffd-space-1);min-width:0;padding:var(--ffd-space-3);border:1px solid var(--ffd-color-line);border-radius:var(--ffd-radius-md);background:var(--ffd-color-surface-2);flex-direction:column;display:flex}.meta.wide{grid-column:1/-1}.meta dt{font-size:var(--ffd-font-size-12);color:var(--ffd-color-ink-3)}.meta dd{color:var(--ffd-color-ink);word-break:break-all;margin:0}.notice-list{border:1px solid var(--ffd-color-line);border-radius:var(--ffd-radius-md);background:var(--ffd-color-surface);flex-direction:column;display:flex;overflow:hidden}.notice-item{align-items:flex-start;gap:var(--ffd-space-3);padding:var(--ffd-space-3) var(--ffd-space-4);display:flex}.notice-item+.notice-item{border-top:1px solid var(--ffd-color-line)}.notice-item.is-read .notice-icon{background:var(--ffd-color-surface-3);color:var(--ffd-color-ink-4)}.notice-icon{border-radius:var(--ffd-radius-sm);background:var(--ffd-color-brand-soft);width:28px;height:28px;color:var(--brand-press);flex:0 0 28px;place-items:center;display:grid}.notice-icon.warn{background:var(--ffd-color-warning-soft);color:var(--ffd-color-warning)}.notice-icon.danger{background:var(--ffd-color-danger-soft);color:var(--ffd-color-danger)}.notice-icon.ok{background:var(--ffd-color-success-soft);color:var(--ffd-color-success)}.notice-main{gap:var(--ffd-space-1);flex-direction:column;flex:1;min-width:0;display:flex}.notice-title{align-items:center;gap:var(--ffd-space-2);font-size:var(--ffd-font-size-13);color:var(--ffd-color-ink);font-weight:500;display:flex}.notice-dot{background:var(--brand-press);border-radius:50%;flex:0 0 6px;width:6px;height:6px}.notice-desc{font-size:var(--ffd-font-size-12);color:var(--ffd-color-ink-3)}.notice-meta{font-size:var(--ffd-font-size-11);color:var(--ffd-color-ink-4)}.notice-actions{align-items:center;gap:var(--ffd-space-1);flex:none;display:flex}.grid-2,.grid-3,.grid-4{gap:var(--ffd-space-4);display:grid}.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))}@media (width<=1100px){.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=900px){.grid-2,.grid-3,.grid-4,.meta-grid{grid-template-columns:1fr}}.date-range{align-items:center;gap:var(--ffd-space-2);display:flex}.date-range .input{flex:1;min-width:0}.date-range .sep{color:var(--ffd-color-ink-3);font-size:var(--ffd-font-size-12);flex:none}@media (width<=720px){.date-range{flex-direction:column;align-items:stretch}.date-range .sep{text-align:center}}.calendar{width:280px;max-width:100%;padding:var(--ffd-space-3);border:1px solid var(--ffd-color-line);border-radius:var(--ffd-radius-md);background:var(--ffd-color-surface)}.calendar-head{justify-content:space-between;align-items:center;gap:var(--ffd-space-2);margin-bottom:var(--ffd-space-2);display:flex}.calendar-title{font-size:var(--ffd-font-size-13);font-weight:600}.calendar-week,.calendar-grid{gap:var(--ffd-space-1);grid-template-columns:repeat(7,minmax(0,1fr));display:grid}.calendar-week{margin-bottom:var(--ffd-space-1)}.calendar-week span{padding:var(--ffd-space-1) 0;text-align:center;font-size:var(--ffd-font-size-11);color:var(--ffd-color-ink-4)}.calendar-day{border-radius:var(--ffd-radius-sm);height:32px;color:var(--ffd-color-ink);font-size:var(--ffd-font-size-12);font-variant-numeric:tabular-nums;cursor:pointer;background:0 0;border:0;place-items:center;display:grid}.calendar-day:hover{background:var(--ffd-color-surface-3)}.calendar-day.is-outside{color:var(--ffd-color-ink-4)}.calendar-day.is-today{color:var(--brand-press);box-shadow:inset 0 0 0 1px var(--ffd-color-brand-line);font-weight:600}.calendar-day.is-selected{background:var(--brand);color:var(--ffd-color-on-brand-tint);font-weight:600}.calendar-day.is-selected:hover{background:var(--ffd-color-brand-deep)}.calendar-foot{justify-content:space-between;align-items:center;gap:var(--ffd-space-2);margin-top:var(--ffd-space-2);padding-top:var(--ffd-space-2);border-top:1px solid var(--ffd-color-line);display:flex}.qr{align-items:center;gap:var(--ffd-space-2);padding:var(--ffd-space-3);border:1px solid var(--ffd-color-line);border-radius:var(--ffd-radius-md);background:var(--ffd-color-surface);flex-direction:column;display:flex}.qr-code{width:160px;height:160px;padding:var(--ffd-space-2);border:1px solid var(--ffd-color-line);border-radius:var(--ffd-radius-sm);background:var(--ffd-color-surface)}.qr-code svg{width:100%;height:100%;display:block}.qr-code.qr-sm{width:96px;height:96px}.qr-meta{align-items:center;gap:var(--ffd-space-1);text-align:center;font-size:var(--ffd-font-size-12);color:var(--ffd-color-ink-3);flex-direction:column;display:flex}.qr-meta strong{font-size:var(--ffd-font-size-13);color:var(--ffd-color-ink);font-weight:600}.qr-actions{gap:var(--ffd-space-2);display:flex}.modal-mask{background:var(--ffd-color-overlay);padding:var(--ffd-space-6);z-index:50;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border-radius:var(--ffd-radius-lg);width:100%;max-width:560px;max-height:86vh;box-shadow:var(--ffd-shadow-4);overflow:auto}.modal header{padding:var(--ffd-space-4) var(--ffd-space-5);border-bottom:1px solid var(--line);font-size:var(--ffd-font-size-14);justify-content:space-between;align-items:center;font-weight:600;display:flex}.modal .body{padding:var(--ffd-space-5);gap:var(--ffd-space-4);flex-direction:column;display:flex}.modal footer{justify-content:flex-end;gap:var(--ffd-space-3);padding:var(--ffd-space-4) var(--ffd-space-5);border-top:1px solid var(--line);display:flex}.toast{right:var(--ffd-space-6);bottom:var(--ffd-space-6);max-width:380px;padding:var(--ffd-space-3) var(--ffd-space-4);border-radius:var(--radius);background:var(--ffd-color-toast);color:var(--ffd-color-on-brand);box-shadow:var(--shadow-3);z-index:80;font-size:var(--ffd-font-size-13);position:fixed}.toast.error{background:var(--ffd-color-toast-error)}.token-box{padding:var(--ffd-space-3) var(--ffd-space-4);border:1px dashed var(--ffd-color-brand-line);border-radius:var(--radius);background:var(--brand-soft);word-break:break-all;color:var(--ffd-color-ink-2)}.flow-guide{margin-bottom:var(--ffd-space-4);padding:var(--ffd-space-4);background:var(--ffd-color-surface);border:1px solid var(--ffd-color-line);border-radius:var(--ffd-radius-md);box-shadow:var(--ffd-shadow-1);grid-template-columns:repeat(5,minmax(0,1fr));display:grid}.flow-step{align-items:center;gap:var(--ffd-space-2);min-width:0;padding:0 var(--ffd-space-3);border-left:1px solid var(--ffd-color-line);display:flex}.flow-step:first-child{border-left:0;padding-left:0}.flow-index{background:var(--ffd-color-surface-3);width:24px;height:24px;color:var(--ffd-color-ink-3);font-size:var(--ffd-font-size-12);border-radius:50%;flex:0 0 24px;place-items:center;font-weight:600;display:grid}.flow-step.done .flow-index{background:var(--brand);color:var(--ffd-color-on-brand-tint)}.flow-body{flex-direction:column;min-width:0;display:flex}.flow-body strong{font-size:var(--ffd-font-size-12);color:var(--ffd-color-ink);font-weight:600}.flow-body span{font-size:var(--ffd-font-size-11);color:var(--ffd-color-ink-4);line-height:1.4}.flow-count{font-size:var(--ffd-font-size-14);color:var(--ffd-color-ink);margin-left:auto;font-weight:600}@media (width<=900px){.flow-guide{gap:var(--ffd-layout-flow-gap);grid-template-columns:repeat(2,minmax(0,1fr))}.flow-step{border-left:0;padding:0}}.toolbar{align-items:center;gap:var(--ffd-space-3);padding:var(--ffd-space-4);border-bottom:1px solid var(--line);flex-wrap:wrap;display:flex}.spacer{flex:1}.tabs{gap:var(--ffd-space-1);padding:var(--ffd-space-1);border-radius:var(--radius-md);background:var(--ffd-color-fill);display:inline-flex}.tabs button{height:30px;padding:0 var(--ffd-space-4);border-radius:var(--radius-sm);color:var(--ink-2);font-size:var(--ffd-font-size-12);background:0 0;border:0}.tabs button:hover{color:var(--ink)}.tabs button.active{background:var(--canvas);color:var(--brand-press);box-shadow:var(--shadow)}.accordion{border:1px solid var(--ffd-color-line);border-radius:var(--ffd-radius-md);background:var(--ffd-color-surface);overflow:hidden}.accordion-item+.accordion-item{border-top:1px solid var(--ffd-color-line)}.accordion-head{justify-content:space-between;align-items:center;gap:var(--ffd-space-2);width:100%;min-height:var(--ffd-hit-min);padding:var(--ffd-space-3) var(--ffd-space-4);color:var(--ffd-color-ink);font-size:var(--ffd-font-size-13);text-align:left;cursor:pointer;background:0 0;border:0;display:flex}.accordion-head:hover{background:var(--ffd-color-surface-2)}.accordion-chevron{color:var(--ffd-color-ink-4);transition:transform var(--ffd-duration-base) var(--ffd-ease);flex:none}.accordion-item.open .accordion-chevron{transform:rotate(180deg)}.accordion-item:not(.open) .accordion-body{display:none}.accordion-body{padding:0 var(--ffd-space-4) var(--ffd-space-3);font-size:var(--ffd-font-size-12);line-height:var(--ffd-line-height-base);color:var(--ffd-color-ink-3)}.slider{align-items:center;gap:var(--ffd-space-3);display:flex}.slider-track{border-radius:var(--ffd-radius-pill);background:var(--ffd-color-fill);flex:1;height:4px;position:relative}.slider-fill{border-radius:var(--ffd-radius-pill);background:var(--brand-press);height:100%;position:absolute;inset:0 auto auto 0}.slider-thumb{border:1px solid var(--ffd-color-brand-line);background:var(--ffd-color-surface);width:16px;height:16px;box-shadow:var(--ffd-shadow-1);border-radius:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.slider-value{min-width:44px;font-size:var(--ffd-font-size-13);font-variant-numeric:tabular-nums;text-align:right;color:var(--ffd-color-ink)}.carousel{border:1px solid var(--ffd-color-line);border-radius:var(--ffd-radius-md);background:var(--ffd-color-surface);position:relative;overflow:hidden}.carousel-track{height:180px;display:flex}.carousel-slide{justify-content:center;align-items:center;gap:var(--ffd-space-1);font-size:var(--ffd-font-size-13);color:var(--ffd-color-ink-3);background:var(--ffd-color-surface-2);flex-direction:column;flex:0 0 100%;display:flex}.carousel-nav{border:1px solid var(--ffd-color-line);background:var(--ffd-color-surface-glass);width:32px;height:32px;color:var(--ffd-color-ink-2);box-shadow:var(--ffd-shadow-1);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.carousel-nav.prev{left:var(--ffd-space-3)}.carousel-nav.next{right:var(--ffd-space-3)}.carousel-dots{right:0;bottom:var(--ffd-space-3);justify-content:center;gap:var(--ffd-space-2);display:flex;position:absolute;left:0}.carousel-dot{border-radius:var(--ffd-radius-pill);background:var(--ffd-color-line-strong);cursor:pointer;border:0;width:6px;height:6px}.carousel-dot.active{background:var(--brand-press);width:18px}.cascader{gap:var(--ffd-space-1);flex-direction:column;max-width:100%;display:inline-flex}.cascader-panel{border:1px solid var(--ffd-color-line);border-radius:var(--ffd-radius-md);background:var(--ffd-color-surface);width:max-content;max-width:100%;box-shadow:var(--ffd-shadow-3);display:flex;overflow:auto hidden}.cascader-cols-2 .cascader-panel{width:calc(var(--ffd-cascader-col) * 2)}.cascader-cols-3 .cascader-panel{width:calc(var(--ffd-cascader-col) * 3)}.cascader-cols-4 .cascader-panel{width:calc(var(--ffd-cascader-col) * 4)}.cascader-col{flex:0 0 var(--ffd-cascader-col);min-width:var(--ffd-cascader-col);padding:var(--ffd-space-1) 0;border-right:1px solid var(--ffd-color-line)}.cascader-col:last-child{border-right:0}.cascader-opt{justify-content:space-between;align-items:center;gap:var(--ffd-space-2);padding:var(--ffd-space-2) var(--ffd-space-3);font-size:var(--ffd-font-size-13);color:var(--ffd-color-ink-2);cursor:pointer;display:flex}.cascader-opt:hover{background:var(--ffd-color-surface-2)}.cascader-opt.active{background:var(--ffd-color-brand-soft);color:var(--ffd-color-ink)}.cascader-opt .chev{color:var(--ffd-color-ink-4);flex:none}.cascader-cards .cascader-panel{background:var(--ffd-color-surface-2)}.cascader-cards .cascader-col{flex-basis:var(--ffd-cascader-card-col);min-width:var(--ffd-cascader-card-col);padding:var(--ffd-space-2)}.cascader-cards.cascader-cols-2 .cascader-panel{width:calc(var(--ffd-cascader-card-col) * 2)}.cascader-cards.cascader-cols-3 .cascader-panel{width:calc(var(--ffd-cascader-card-col) * 3)}.cascader-cards.cascader-cols-4 .cascader-panel{width:calc(var(--ffd-cascader-card-col) * 4)}.cascader-card{align-items:stretch;gap:var(--ffd-space-1);margin-bottom:var(--ffd-space-2);border:1px solid var(--ffd-color-line);border-radius:var(--ffd-radius-sm);background:var(--ffd-color-surface);transition:border-color var(--ffd-duration-fast) var(--ffd-ease), box-shadow var(--ffd-duration-fast) var(--ffd-ease);display:flex;overflow:hidden}.cascader-card:last-child{margin-bottom:0}.cascader-card:hover{border-color:var(--ffd-color-brand-line);box-shadow:var(--ffd-shadow-1)}.cascader-card.active{border-color:var(--brand-press);background:var(--ffd-color-brand-soft)}.cascader-card-select{gap:var(--ffd-space-1);min-width:0;padding:var(--ffd-space-2) var(--ffd-space-3);text-align:left;cursor:pointer;background:0 0;border:0;flex-direction:column;flex:1;font-family:inherit;display:flex}.cascader-card-title{font-size:var(--ffd-font-size-13);color:var(--ffd-color-ink);white-space:nowrap;text-overflow:ellipsis;font-weight:500;overflow:hidden}.cascader-card-desc{font-size:var(--ffd-font-size-11);color:var(--ffd-color-ink-3);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.cascader-card-action{margin-right:var(--ffd-space-1);flex:none;align-self:center}.count-badge{min-width:18px;height:18px;padding:0 var(--ffd-space-1);border-radius:var(--ffd-radius-pill);background:var(--ffd-color-danger);color:var(--ffd-color-on-brand);font-size:var(--ffd-font-size-11);font-variant-numeric:tabular-nums;justify-content:center;align-items:center;font-weight:600;line-height:1;display:inline-flex}.count-badge.dot{width:8px;min-width:8px;height:8px;padding:0}.count-badge.muted{background:var(--ffd-color-surface-3);color:var(--ffd-color-ink-3)}.icon-badge{display:inline-flex;position:relative}.icon-badge .count-badge{top:calc(-1 * var(--ffd-space-1));right:calc(-1 * var(--ffd-space-1));border:2px solid var(--ffd-color-surface);position:absolute}.ring{justify-content:center;align-items:center;width:64px;height:64px;display:inline-flex;position:relative}.ring svg{transform:rotate(-90deg)}.ring-track{stroke:var(--ffd-color-fill)}.ring-bar{stroke:var(--brand-press);stroke-linecap:round;transition:stroke-dashoffset var(--ffd-duration-slow) var(--ffd-ease)}.ring-text{font-size:var(--ffd-font-size-13);font-variant-numeric:tabular-nums;color:var(--ffd-color-ink);font-weight:600;position:absolute}.input.valid{border-color:var(--ffd-color-success)}.input.valid:focus{border-color:var(--ffd-color-success);box-shadow:0 0 0 3px var(--ffd-color-success-soft)}.field-hint{font-size:var(--ffd-font-size-11);color:var(--ffd-color-ink-4)}.field-hint.ok{color:var(--ffd-color-success)}.field-hint.bad{color:var(--ffd-color-danger)}.input-group{align-items:center;gap:var(--ffd-space-2);height:34px;padding:0 var(--ffd-space-3);border:1px solid var(--ffd-color-line-strong);border-radius:var(--ffd-radius-sm);background:var(--ffd-color-surface);display:flex}.input-group:focus-within{border-color:var(--brand-press);box-shadow:0 0 0 3px var(--ffd-color-brand-soft)}.input-group .input{height:32px;box-shadow:none;background:0 0;border:0;flex:1;padding:0}.input-affix{font-size:var(--ffd-font-size-12);color:var(--ffd-color-ink-4);flex:none}.strength{gap:var(--ffd-space-1);margin-top:var(--ffd-space-2);display:flex}.strength i{border-radius:var(--ffd-radius-pill);background:var(--ffd-color-fill);flex:1;height:3px}.strength i.on.warn{background:var(--ffd-color-warning)}.strength i.on.ok{background:var(--ffd-color-success)}.modal.emphased header{background:var(--ffd-color-brand-soft)}.modal .choice-list{border:1px solid var(--ffd-color-line);border-radius:var(--ffd-radius-sm);overflow:hidden}.modal .choice-item{justify-content:space-between;align-items:center;gap:var(--ffd-space-2);min-height:var(--ffd-hit-min);padding:var(--ffd-space-2) var(--ffd-space-3);font-size:var(--ffd-font-size-13);color:var(--ffd-color-ink-2);cursor:pointer;display:flex}.modal .choice-item+.choice-item{border-top:1px solid var(--ffd-color-line)}.modal .choice-item.active{background:var(--ffd-color-brand-soft);color:var(--ffd-color-ink)}.modal .modal-icon{background:var(--ffd-color-danger-soft);width:40px;height:40px;color:var(--ffd-color-danger);border-radius:50%;justify-content:center;align-items:center;display:flex}.modal .modal-hero{border-radius:var(--ffd-radius-sm);background:var(--ffd-color-surface-3);height:140px;color:var(--ffd-color-ink-4);font-size:var(--ffd-font-size-12);justify-content:center;align-items:center;display:flex}.crumbs{align-items:center;gap:var(--ffd-space-2);font-size:var(--ffd-font-size-12);color:var(--ffd-color-ink-4);flex-wrap:wrap;display:flex}.crumbs a{color:var(--ffd-color-ink-3)}.crumbs a:hover{color:var(--brand-press)}.crumbs .sep{color:var(--ffd-color-line-strong)}.crumbs .cur{color:var(--ffd-color-ink)}.bottom-bar{border-top:1px solid var(--ffd-color-line);background:var(--ffd-color-surface);justify-content:space-around;align-items:center;height:56px;display:flex}.bottom-bar .bb-item{justify-content:center;align-items:center;gap:var(--ffd-space-1);min-width:var(--ffd-hit-min);min-height:var(--ffd-hit-min);font-size:var(--ffd-font-size-11);color:var(--ffd-color-ink-3);flex-direction:column;text-decoration:none;display:flex}.bottom-bar .bb-item.active{color:var(--brand-press)}.bottom-bar .bb-fab{width:var(--ffd-hit-min);height:var(--ffd-hit-min);background:var(--brand);color:var(--ffd-color-on-brand-tint);box-shadow:var(--ffd-shadow-2);border-radius:50%;justify-content:center;align-items:center;display:flex}.site-footer{gap:var(--ffd-space-6);padding:var(--ffd-space-6) 0;border-top:1px solid var(--ffd-color-line);font-size:var(--ffd-font-size-12);color:var(--ffd-color-ink-3);grid-template-columns:1.4fr repeat(3,1fr);display:grid}.site-footer h4{margin:0 0 var(--ffd-space-2);font-size:var(--ffd-font-size-12);color:var(--ffd-color-ink)}.site-footer ul{gap:var(--ffd-space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.site-footer .foot-note{margin-top:var(--ffd-space-4);padding-top:var(--ffd-space-3);border-top:1px solid var(--ffd-color-line);font-size:var(--ffd-font-size-11);color:var(--ffd-color-ink-4);grid-column:1/-1}.table-tools{align-items:center;gap:var(--ffd-space-2);margin-bottom:var(--ffd-space-3);flex-wrap:wrap;display:flex}.table-tools .search{width:220px}.th-sort{align-items:center;gap:var(--ffd-space-1);color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;display:inline-flex}.row-menu{display:inline-flex;position:relative}.row-menu-panel{z-index:var(--ffd-z-actions);min-width:132px;padding:var(--ffd-space-1);border:1px solid var(--ffd-color-line);border-radius:var(--ffd-radius-sm);background:var(--ffd-color-surface);box-shadow:var(--ffd-shadow-3);position:absolute;top:calc(100% + 4px);right:0}.row-menu-panel button{align-items:center;gap:var(--ffd-space-2);width:100%;min-height:32px;padding:var(--ffd-space-2) var(--ffd-space-3);border-radius:var(--ffd-radius-xs);color:var(--ffd-color-ink-2);font-size:var(--ffd-font-size-12);text-align:left;cursor:pointer;background:0 0;border:0;display:flex}.row-menu-panel button:hover{background:var(--ffd-color-surface-2)}.row-menu-panel button.danger{color:var(--ffd-color-danger)}.row-menu-panel .divider{height:1px;margin:var(--ffd-space-1) 0;background:var(--ffd-color-line)}
