.toast-host{position:fixed;top:20px;left:50%;transform:translate(-50%);z-index:1300;display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none}.toast{display:flex;align-items:center;gap:10px;min-height:42px;padding:9px 16px 9px 12px;background:var(--surface);color:var(--ink);border:1px solid var(--divider);border-radius:10px;box-shadow:var(--shadow-lg);font-size:var(--fz);line-height:var(--lh-base);max-width:min(480px,calc(100vw - 32px));pointer-events:auto}.toast-ic{flex:none;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;color:#fff;background:var(--info)}.toast-success .toast-ic{background:var(--success)}.toast-error .toast-ic{background:var(--danger)}.toast-t{min-width:0;word-break:break-all}.toast-enter-active{transition:opacity .22s var(--ease),transform .22s var(--ease)}.toast-leave-active{transition:opacity .18s var(--ease),transform .18s var(--ease)}.toast-enter-from{opacity:0;transform:translateY(-14px)}.toast-leave-to{opacity:0;transform:translateY(-8px)}.toast-move{transition:transform .22s var(--ease)}.confirm-text{margin:0;color:var(--text-2);line-height:var(--lh-relaxed);white-space:pre-line}:root{--font: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "HarmonyOS Sans SC", "MiSans", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Noto Sans SC", Roboto, "Helvetica Neue", Arial, sans-serif;--bg: #eaeef4;--surface: #ffffff;--surface-2: #f6f8fb;--surface-3: #eef2f7;--hover: #f3f7fe;--th-bg: #f4f6fa;--border: #d7dee8;--border-strong: #c3ccd9;--divider: #e7ebf1;--ink: #0f172a;--text: #1e293b;--text-2: #475569;--text-3: #64748b;--text-4: #94a3b8;--primary: #2563eb;--primary-hover: #1d4ed8;--primary-active: #1e40af;--primary-soft: #eaf1ff;--primary-soft-2: #bcd0fd;--primary-ring: rgba(37, 99, 235, .18);--success: #15803d;--success-soft: #eafaf0;--success-border: #b6e5c8;--warning: #b45309;--warning-soft: #fff6e6;--warning-border: #f7d9a0;--danger: #dc2626;--danger-soft: #fef1f1;--danger-border: #f8caca;--accent: #b45309;--accent-soft: #fff6e6;--info: #2563eb;--info-soft: #eaf1ff;--violet: #2563eb;--violet-soft: #eaf1ff;--cyan: #2563eb;--cyan-soft: #eaf1ff;--red: #ef4444;--side-bg: linear-gradient(180deg, #0c2a52 0%, #0a2246 55%, #091d3d 100%);--side-solid: #091d3d;--side-fg: rgba(226, 234, 246, .72);--side-fg-strong: #ffffff;--side-muted: rgba(203, 216, 235, .5);--side-hover: rgba(255, 255, 255, .08);--side-active: linear-gradient(90deg, rgba(59, 130, 246, .42), rgba(59, 130, 246, .14));--side-active-fg: #ffffff;--side-active-ic: #93c5fd;--side-line: rgba(255, 255, 255, .1);--radius-sm: 6px;--radius: 8px;--radius-md: 10px;--radius-lg: 12px;--radius-xl: 16px;--shadow-xs: 0 1px 2px rgba(15, 23, 42, .06), 0 1px 3px rgba(15, 23, 42, .05);--shadow-sm: 0 1px 3px rgba(15, 23, 42, .08), 0 1px 2px rgba(15, 23, 42, .05);--shadow-md: 0 10px 24px -6px rgba(15, 23, 42, .14), 0 4px 8px -4px rgba(15, 23, 42, .06);--shadow-lg: 0 16px 40px -10px rgba(15, 23, 42, .2), 0 6px 12px -6px rgba(15, 23, 42, .07);--shadow-xl: 0 28px 64px -16px rgba(15, 23, 42, .3), 0 8px 16px -8px rgba(15, 23, 42, .09);--ease: cubic-bezier(.22, 1, .36, 1);--spring: cubic-bezier(.34, 1.4, .64, 1);--dur: .16s;--dur-slow: .26s;--sidebar-w: 248px;--header-h: 72px;--gutter: 28px;--fz-xs: 12px;--fz-sm: 13px;--fz: 14px;--fz-lg: 15px;--fz-card: 16px;--fz-sec: 18px;--fz-xl: 20px;--fz-num: 24px;--fz-big: 28px;--fz-title: var(--fz-xl);--lh-tight: 1.25;--lh-snug: 1.4;--lh-base: 1.5;--lh-relaxed: 1.6;--ls-num: -.01em;--ls-brand: .04em}:root[data-theme=contrast]{--bg: #d6dde8;--surface-2: #eef1f5;--surface-3: #e3e8ef;--hover: #e6eefc;--th-bg: #e6eaf0;--ink: #020617;--text: #0f172a;--text-2: #334155;--text-3: #475569;--text-4: #64748b;--border: #aab5c5;--border-strong: #8d9aae;--divider: #cfd6e0;--shadow-xs: 0 1px 2px rgba(15, 23, 42, .12), 0 1px 3px rgba(15, 23, 42, .1)}:root[data-theme=warm]{--bg: #efe9de;--surface: #fffdf8;--surface-2: #f8f4ec;--surface-3: #f2ecdf;--hover: #faf4e8;--th-bg: #f6f1e7;--ink: #1f1a16;--text: #2b2622;--text-2: #5b5146;--text-3: #7d7162;--text-4: #a89c8a;--border: #dfd5c3;--border-strong: #cdbfa8;--divider: #ebe3d5}:root[data-theme=dark]{--primary: #3b82f6;--primary-hover: #60a5fa;--primary-active: #93c5fd;--primary-soft: rgba(59, 130, 246, .16);--primary-soft-2: rgba(96, 165, 250, .38);--primary-ring: rgba(59, 130, 246, .3);--bg: #0d1422;--surface: #151d2c;--surface-2: #1a2334;--surface-3: #1f2939;--hover: #1b2638;--th-bg: #1a2334;--ink: #f1f5f9;--text: #dbe3ee;--text-2: #aab6c7;--text-3: #8494a9;--text-4: #5f6e84;--border: #2c384c;--border-strong: #3a4760;--divider: #222c3d;--success: #4ade80;--success-soft: rgba(34, 197, 94, .14);--success-border: rgba(74, 222, 128, .3);--warning: #fbbf24;--warning-soft: rgba(245, 158, 11, .14);--warning-border: rgba(251, 191, 36, .3);--danger: #f87171;--danger-soft: rgba(239, 68, 68, .14);--danger-border: rgba(248, 113, 113, .32);--accent: #fbbf24;--accent-soft: rgba(245, 158, 11, .14);--info: #60a5fa;--info-soft: rgba(59, 130, 246, .16);--violet: #60a5fa;--violet-soft: rgba(59, 130, 246, .16);--cyan: #60a5fa;--cyan-soft: rgba(59, 130, 246, .16);--shadow-xs: 0 1px 2px rgba(0, 0, 0, .35);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .4);--shadow-md: 0 10px 24px -6px rgba(0, 0, 0, .5);--shadow-lg: 0 16px 40px -10px rgba(0, 0, 0, .6);--shadow-xl: 0 28px 64px -16px rgba(0, 0, 0, .7);--side-bg: linear-gradient(180deg, #0b1220 0%, #0a101c 100%);--side-solid: #0a101c}:root[data-side=light]{--side-bg: var(--surface);--side-solid: var(--surface);--side-fg: var(--text-2);--side-fg-strong: var(--ink);--side-muted: var(--text-4);--side-hover: var(--surface-3);--side-active: var(--primary-soft);--side-active-fg: var(--primary-hover);--side-active-ic: var(--primary);--side-line: var(--divider)}:root[data-side=light] .sidebar{border-right:1px solid var(--border)}:root[data-side=light] .brand-mark{background:var(--primary);color:#fff;box-shadow:0 2px 6px -1px #2563eb59}:root[data-side=light] .nav-badge.quiet{background:var(--surface-3);color:var(--text-2)}:root[data-density=compact] .table td{padding-top:7px;padding-bottom:7px}:root[data-density=compact] .table th{padding-top:8px;padding-bottom:8px}.main{zoom:var(--ui-scale, 1);height:calc(100vh / var(--ui-scale, 1))}html.theme-fade,html.theme-fade *{transition:background-color .35s ease,border-color .35s ease,color .35s ease,fill .35s ease!important}@media (prefers-reduced-motion: reduce){:root{--dur: 0ms;--dur-slow: 0ms}*,*:before,*:after{animation-duration:0ms!important;transition-duration:0ms!important}}*,*:before,*:after{box-sizing:border-box}html,body,#app{height:100%}body{margin:0;font-family:var(--font);font-size:var(--fz);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;line-height:var(--lh-base)}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit;color:inherit}h1,h2,h3,h4,p{margin:0}h1,h2,h3,h4{font-weight:600}svg{display:block}::selection{background:#2563eb33}:focus-visible{outline:2px solid var(--primary-soft-2);outline-offset:1px}.mono,.num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}.money{font-variant-numeric:tabular-nums}.muted{color:var(--text-3)}.sub{color:var(--text-2)}.small{font-size:var(--fz-xs)}.sm{font-size:var(--fz-sm)}.strong{font-weight:600}.ink{color:var(--ink)}.ell{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.pre{white-space:pre-wrap;word-break:break-word}.nowrap{white-space:nowrap}.row{display:flex;align-items:center;gap:8px}.row.between{justify-content:space-between}.row.wrap{flex-wrap:wrap}.row.top{align-items:flex-start}.grow{flex:1;min-width:0}.gap4{gap:4px}.gap12{gap:12px}.gap16{gap:16px}.mt4{margin-top:4px}.mt8{margin-top:8px}.mt12{margin-top:12px}.mt16{margin-top:16px}.mt24{margin-top:24px}.mb8{margin-bottom:8px}.mb12{margin-bottom:12px}.mb16{margin-bottom:16px}.ml-auto{margin-left:auto}.right{text-align:right}.c-primary{color:var(--primary)}.c-danger{color:var(--danger)}.c-success{color:var(--success)}.c-accent{color:var(--accent)}.c-warning{color:var(--warning)}.shell{display:flex;height:100vh;overflow:hidden}.sidebar{width:var(--sidebar-w);flex:none;background:var(--side-bg);color:var(--side-fg);display:flex;flex-direction:column;position:relative;height:100vh;z-index:3;box-shadow:1px 0 #0f172a0a}.brand{display:flex;align-items:center;gap:12px;padding:20px 20px 18px}.brand-mark{width:36px;height:36px;border-radius:10px;background:#fff;display:grid;place-items:center;color:var(--primary);flex:none;font-size:17px;font-weight:800;box-shadow:0 2px 8px #0000002e}.brand-name{font-weight:600;font-size:var(--fz-card);letter-spacing:var(--ls-brand);line-height:var(--lh-tight);color:var(--side-fg-strong)}.brand-sub{font-size:var(--fz-xs);color:var(--side-muted);margin-top:3px;letter-spacing:var(--ls-brand)}.nav{padding:2px 0 12px;flex:1;overflow:auto;scrollbar-width:thin}.nav-group{font-size:var(--fz-xs);color:var(--side-muted);padding:16px 24px 6px}.nav-item{position:relative;display:flex;align-items:center;gap:12px;height:43px;margin:2px 10px;padding:0 14px;border-radius:10px;color:var(--side-fg);font-size:var(--fz);transition:background var(--dur) var(--ease),color var(--dur) var(--ease);cursor:pointer}.nav-item:hover{background:var(--side-hover);color:var(--side-fg-strong);text-decoration:none}.nav-item.active{background:var(--side-active);color:var(--side-active-fg);font-weight:600}.nav-item svg{width:17px;height:17px;flex:none;color:var(--side-muted);transition:color var(--dur) var(--ease),transform var(--dur-slow) var(--spring)}.nav-item:hover svg{color:var(--side-fg-strong);transform:scale(1.08)}.nav-item.active svg{color:var(--side-active-ic)}.nav-badge{margin-left:auto;min-width:20px;height:19px;padding:0 6px;border-radius:10px;background:var(--red);color:#fff;font-size:var(--fz-xs);font-weight:600;display:grid;place-items:center;font-variant-numeric:tabular-nums}.nav-badge.quiet{background:#ffffff24;color:var(--side-fg-strong)}.sidebar-foot{border-top:1px solid var(--side-line);padding:10px;position:relative}.account{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;cursor:pointer;transition:background var(--dur) var(--ease);color:var(--side-fg)}.account:hover{background:var(--side-hover)}.account .strong{color:var(--side-fg-strong)}.account .muted{color:var(--side-muted)}.sidebar .account .avatar{background:var(--primary);color:#fff}.avatar{width:32px;height:32px;border-radius:50%;background:var(--primary-soft);color:var(--primary-hover);display:grid;place-items:center;font-size:var(--fz-sm);font-weight:600;flex:none}.avatar.sm{width:24px;height:24px;font-size:var(--fz-xs)}.menu{position:absolute;left:10px;right:10px;bottom:calc(100% - 4px);color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);padding:6px;z-index:30;animation:modal-in var(--dur) var(--ease)}.menu-item{padding:8px 10px;border-radius:var(--radius);font-size:var(--fz-sm);cursor:pointer;color:var(--text-2)}.menu-item:hover{background:var(--hover);color:var(--ink)}.menu-item.danger{color:var(--danger)}.main{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden}.page-header{background:var(--surface);border-bottom:1px solid var(--border);padding:18px var(--gutter) 16px;min-height:var(--header-h);display:flex;align-items:center;column-gap:14px;row-gap:10px;flex-wrap:wrap;position:relative;flex:none;z-index:20;box-shadow:0 1px #0f172a05}.page-title{font-size:var(--fz-title);font-weight:600;color:var(--ink);white-space:nowrap;line-height:var(--lh-snug)}.page-title .ph-sub{margin-left:10px;font-size:var(--fz-sm);font-weight:400;color:var(--text-3);letter-spacing:0}.page-sub{font-size:var(--fz-sm);color:var(--text-3);margin-top:4px;white-space:nowrap}.page-header>.tabs{order:99;flex:1 0 100%;margin:4px 0 0;height:44px;gap:28px;align-self:auto}.page-header:has(>.tabs){padding-bottom:0}.page-header .tab{height:100%;padding:0 1px;border-radius:0;background:none;position:relative;font-size:var(--fz)}.page-header .tab:hover{background:none;color:var(--ink)}.page-header .tab.active{background:none;color:var(--primary);font-weight:600}.page-header .tab.active:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;border-radius:2px;background:var(--primary)}.page-header.stack{flex-direction:column;flex-wrap:nowrap;align-items:stretch;gap:0}.page-header.stack>.tabs{flex:none}.page-header.stack .ph-row{display:flex;align-items:center;gap:14px;min-height:38px}.header-actions{margin-left:auto;display:flex;gap:8px;align-items:center;flex:none}.page-body{padding:20px var(--gutter) 40px;width:100%;flex:1;min-height:0;overflow-y:auto;overflow-x:hidden}.page-body.fill{display:flex;flex-direction:column;overflow:hidden;padding-bottom:20px}.page-body.fill>.list-card{flex:1;min-height:0;display:flex;flex-direction:column}.list-card>.table-wrap{flex:1;min-height:0;overflow:auto}.list-card .table thead th{position:sticky;top:0;z-index:2}.list-card>.pager,.list-card>.fbar,.list-card>.fchips,.list-card>.toolbar{flex:none}.list-card>.table-wrap>.empty{padding-top:64px}.page-body>*,.rise>*{animation:page-in .5s var(--ease) backwards}.page-body>:nth-child(2),.rise>:nth-child(2){animation-delay:50ms}.page-body>:nth-child(3),.rise>:nth-child(3){animation-delay:.1s}.page-body>:nth-child(n+4),.rise>:nth-child(n+4){animation-delay:.15s}@keyframes page-in{0%{opacity:0;transform:translateY(10px)}}.loading-bar{position:fixed;top:0;left:0;height:2px;background:var(--primary);z-index:300;transition:width .2s var(--ease),opacity var(--dur) var(--ease);pointer-events:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:34px;padding:0 15px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:var(--fz);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;box-shadow:var(--shadow-xs);transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease),color var(--dur) var(--ease),box-shadow var(--dur) var(--ease),transform .12s var(--ease)}.btn:hover{border-color:var(--border-strong);background:var(--surface-2);color:var(--ink);text-decoration:none}.btn:active{transform:scale(.97)}.btn:disabled,.btn.disabled{opacity:.5;cursor:not-allowed;transform:none}.btn:disabled:hover{border-color:var(--border);background:var(--surface);color:var(--text)}.btn svg{width:15px;height:15px}.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:500;box-shadow:0 1px 2px #1d4ed83d,inset 0 1px #ffffff24}.btn-primary:hover{background:var(--primary-hover);border-color:var(--primary-hover);color:#fff;box-shadow:0 6px 14px -4px #2563eb73,inset 0 1px #ffffff24}.btn-primary:disabled:hover{background:var(--primary);border-color:var(--primary);color:#fff;box-shadow:none}.btn-soft{background:var(--primary-soft);border-color:transparent;color:var(--primary-hover);box-shadow:none}.btn-soft:hover{background:var(--primary-soft-2);border-color:transparent;color:var(--primary-active)}.btn-danger{background:var(--surface);border-color:var(--danger-border);color:var(--danger)}.btn-danger:hover{background:var(--danger-soft);border-color:var(--danger);color:var(--danger)}.btn-danger.solid{background:var(--danger);border-color:var(--danger);color:#fff;box-shadow:0 1px 2px #b91c1c3d}.btn-secondary{background:var(--surface-2);border-color:var(--border);color:var(--text-2)}.btn-secondary:hover{background:var(--surface-3);color:var(--ink);border-color:var(--border-strong)}.btn-ghost{border-color:transparent;background:transparent;color:var(--text-2);box-shadow:none}.btn-ghost:hover{background:var(--surface-3);color:var(--ink);border-color:transparent}.btn-link{border:0;background:none;color:var(--primary);padding:0 4px;height:auto;box-shadow:none}.btn-link:hover{background:none}.btn-link:hover{text-decoration:underline;background:none;color:var(--primary-hover)}.btn-link.danger{color:var(--danger)}.btn-link.muted{color:var(--text-3)}.btn-sm{height:30px;padding:0 11px;font-size:var(--fz-sm)}.btn-lg{height:42px;padding:0 22px;font-size:var(--fz-lg);border-radius:var(--radius-md)}.btn-block{width:100%}.btn-icon{width:34px;padding:0}.btn-icon.btn-sm{width:30px}.input,.select,.textarea{width:100%;height:34px;padding:0 11px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);outline:none;transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}.input:hover,.select:hover,.textarea:hover{border-color:var(--border-strong)}.input:focus,.select:focus,.textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-ring)}.input::placeholder,.textarea::placeholder{color:var(--text-4)}.input:disabled,.select:disabled,.textarea:disabled{background:var(--surface-3);color:var(--text-3)}.textarea{height:auto;min-height:84px;padding:8px 11px;resize:vertical;line-height:var(--lh-base)}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:28px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%237a8699' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;cursor:pointer}.select.inline{border-color:transparent;background-color:transparent;height:28px;padding-left:6px;font-size:var(--fz)}.select.inline:hover{border-color:var(--border-strong);background-color:var(--surface)}.input.sm,.select.sm{height:30px;font-size:var(--fz-sm)}input[type=date].input,input[type=datetime-local].input{color:var(--text-2)}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field>label{font-size:var(--fz-sm);color:var(--text-2)}.field.req>label:after{content:" *";color:var(--danger)}.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px 16px}.form-grid .span2{grid-column:span 2}.form-grid .span3{grid-column:1 / -1;max-width:600px}.field>.seg,.field>.pills{align-self:flex-start;max-width:100%}.card-b>.field>.input,.card-b>.field>.textarea,.task .field>.input:only-of-type{max-width:600px}.help{font-size:var(--fz-xs);color:var(--text-3);line-height:var(--lh-base)}.field.err .input,.field.err .select,.field.err .textarea,.field.err .ui-sel{border-color:var(--danger)}.field.err .input:focus,.field.err .select:focus,.field.err .textarea:focus{box-shadow:0 0 0 3px var(--danger-soft)}.err-msg{font-size:var(--fz-xs);color:var(--danger);line-height:var(--lh-snug)}.btn.reset-on{color:var(--danger);border-color:var(--danger-border);background:var(--danger-soft)}.btn.reset-on:hover{color:var(--danger);border-color:var(--danger);background:var(--danger-soft)}.ui-sel.filter:not(.filled){min-width:0}.check{display:inline-flex;align-items:center;gap:6px;cursor:pointer;font-size:var(--fz);white-space:nowrap}.check input{accent-color:var(--primary);width:15px;height:15px;margin:0}.pills{display:flex;gap:6px;flex-wrap:wrap}.pill{padding:5px 13px;border:1px solid var(--border-strong);border-radius:999px;cursor:pointer;font-size:var(--fz-sm);color:var(--text-2);background:var(--surface);transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease),color var(--dur) var(--ease),transform .1s ease;-webkit-user-select:none;user-select:none}.pill:hover{border-color:var(--primary);color:var(--primary)}.pill:active{transform:scale(.97)}.pill.on{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:600}.pill.danger.on{background:var(--danger);border-color:var(--danger);color:#fff}.seg{display:inline-flex;background:var(--surface-3);border-radius:var(--radius);padding:3px;gap:2px}.seg .it{padding:4px 10px;border-radius:6px;font-size:var(--fz-sm);color:var(--text-2);cursor:pointer;transition:background var(--dur) var(--ease),color var(--dur) var(--ease),box-shadow var(--dur) var(--ease);white-space:nowrap;-webkit-user-select:none;user-select:none}.seg .it:hover{color:var(--ink)}.seg .it.on{background:var(--surface);color:var(--primary-hover);box-shadow:0 1px 2px #0f172a1a;font-weight:600}.seg.sm .it{padding:3px 10px;font-size:var(--fz-xs)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs)}.card+.card{margin-top:16px}:is(.kcards,.acards,.two)>.card+.card{margin-top:0}.card-h{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 20px;border-bottom:1px solid var(--divider);min-height:54px}.card-t{font-size:var(--fz-card);font-weight:600;color:var(--ink);display:flex;align-items:center;gap:8px;flex:none;white-space:nowrap}.card-h>.small,.card-h>.sm{text-align:right;line-height:var(--lh-base)}.card-t .cnt{font-size:var(--fz-xs);color:var(--text-3);font-weight:600;background:var(--surface-3);border-radius:9px;padding:0 7px;line-height:18px}.card-b{padding:18px 20px}.card-b.flush{padding:0}.card-b+.card-b{border-top:1px solid var(--divider)}.card.plain{box-shadow:none}.lift{transition:transform var(--dur-slow) var(--ease),box-shadow var(--dur-slow) var(--ease),border-color var(--dur) var(--ease);cursor:pointer}.lift:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--border-strong)}.lift:active{transform:translateY(0) scale(.99)}.table-wrap{overflow:auto}.table{width:100%;border-collapse:collapse;font-size:var(--fz)}.table th{text-align:left;font-weight:600;font-size:var(--fz-sm);color:var(--text-2);background:var(--th-bg);padding:10px 14px;border-bottom:1px solid var(--border);white-space:nowrap;position:sticky;top:0;z-index:1}.table td{padding:12px 14px;line-height:var(--lh-base);border-bottom:1px solid var(--divider);vertical-align:middle;transition:background var(--dur) var(--ease)}.table tbody tr:last-child td{border-bottom:0}.table td>div+div,.table td>.sm,.table td>.small{font-size:var(--fz-xs);line-height:18px}.table td>div+div{margin-top:1px}.table tbody tr:has(td>div+div) td{padding-top:8px;padding-bottom:8px}:root[data-density=compact] .table tbody tr:has(td>div+div) td{padding-top:5px;padding-bottom:5px}.table tbody tr:hover td{background:var(--hover)}.table tr.clickable{cursor:pointer}.table tr.clickable:hover td:first-child{box-shadow:inset 2px 0 0 var(--primary)}.table th.num,.table td.num{text-align:right}.table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.table th.sortable:hover{color:var(--ink)}.table th .sico{display:inline-flex;vertical-align:-1px;margin-left:5px;opacity:0;transition:opacity var(--dur) var(--ease)}.table th.sortable:hover .sico,.table th.sorted .sico{opacity:1}.table th .sico path{fill:var(--text-4)}.table th .sico.asc .u,.table th .sico.desc .d{fill:var(--primary)}.table .thumb{width:52px;height:40px;border-radius:6px;object-fit:cover;background:var(--surface-3);display:block}.table .thumb.none{display:grid;place-items:center;color:var(--text-4);font-size:var(--fz-xs)}.table.compact td{padding:8px 14px}.table.fit th:not(.fill),.table.fit td:not(.fill){white-space:nowrap}.table.fit th.fill{width:100%}.table.fit td,.table.fit th{padding-left:14px;padding-right:14px}.table td.actions{white-space:nowrap;text-align:right}.table .nowrap{white-space:nowrap}.table tfoot td{background:var(--surface-2);font-weight:600;border-top:1px solid var(--border)}.table.rz{table-layout:fixed}.table.rz td{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.table.rz td>div{overflow:hidden;text-overflow:ellipsis}.table.rz th{position:sticky}.table.rz .rzh{position:absolute;top:0;right:0;bottom:0;width:9px;cursor:col-resize;z-index:3}.table.rz .rzh:after{content:"";position:absolute;right:0;top:30%;bottom:30%;width:2px;border-radius:1px;background:transparent;transition:background var(--dur) var(--ease)}.table.rz thead:hover .rzh:after{background:var(--border-strong)}.table.rz .rzh:hover:after{background:var(--primary);top:15%;bottom:15%}.table.rz th{padding-right:18px}body.col-resizing,body.col-resizing *{cursor:col-resize!important;-webkit-user-select:none!important;user-select:none!important}.fbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:12px 16px;border-bottom:1px solid var(--divider)}.fbar .search{position:relative}.fbar .search .input{width:220px;padding-right:28px}.fbar .sx{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:18px;height:18px;border-radius:50%;display:grid;place-items:center;background:var(--surface-3);color:var(--text-3);cursor:pointer;font-size:var(--fz-sm);line-height:1}.fbar .sx:hover{background:var(--border);color:var(--ink)}.ops{display:flex;gap:14px;justify-content:flex-end}.ops a,.ops .op{color:var(--primary);cursor:pointer;background:none;border:0;padding:0;font-size:var(--fz-sm)}.ops .op.danger{color:var(--danger)}.ops .op:hover{text-decoration:underline}.dl>div{display:flex;gap:16px;padding:9px 0;border-bottom:1px solid var(--divider);font-size:var(--fz-sm)}.dl .k{width:72px;flex:none;color:var(--text-3)}.dl .v{flex:1;min-width:0;color:var(--text);word-break:break-all}.fbtn{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text-2);font-size:var(--fz-sm);cursor:pointer;-webkit-user-select:none;user-select:none;transition:all var(--dur) var(--ease)}.fbtn:hover{border-color:var(--border-strong);color:var(--ink)}.fbtn.on{border-color:var(--primary-soft-2);background:var(--primary-soft);color:var(--primary-hover);font-weight:500}.fchips{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:10px 16px;border-bottom:1px solid var(--divider);background:var(--surface-2);font-size:var(--fz-sm)}.fchips .lbl{color:var(--text-3);margin-right:2px}.fchip{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 6px 0 10px;border-radius:13px;background:var(--surface);border:1px solid var(--border);color:var(--text)}.fchip b{font-weight:400;color:var(--text-3)}.fchip .x{width:18px;height:18px;border:0;border-radius:50%;display:grid;place-items:center;background:transparent;color:var(--text-4);cursor:pointer}.fchip .x:hover{background:var(--danger-soft);color:var(--danger)}.fchips .clear{border:0;background:none;color:var(--primary);cursor:pointer;font-size:var(--fz-sm);margin-left:4px}.tabs{display:flex;gap:2px;align-items:center;overflow:auto;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tab{padding:6px 12px;border-radius:var(--radius);color:var(--text-2);cursor:pointer;font-size:var(--fz);display:inline-flex;align-items:center;gap:6px;white-space:nowrap;transition:background var(--dur) var(--ease),color var(--dur) var(--ease);-webkit-user-select:none;user-select:none}.tab:hover{background:var(--surface-3);color:var(--ink)}.tab.active{background:var(--primary-soft);color:var(--primary-hover);font-weight:600}.tab .cnt{font-size:var(--fz-xs);color:var(--text-3);background:var(--surface-3);padding:0 6px;border-radius:9px;min-width:20px;height:18px;display:grid;place-items:center;font-weight:600;font-variant-numeric:tabular-nums}.tab.active .cnt{background:var(--primary-soft);color:var(--primary-hover)}.tab .cnt.warn{background:var(--red);color:#fff}.tag{display:inline-flex;align-items:center;height:22px;padding:0 7px;border-radius:var(--radius-sm);border:1px solid var(--border);font-size:var(--fz-xs);font-weight:500;white-space:nowrap;background:var(--surface-3);color:var(--text-2);line-height:1;transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}.tag.t-info,.tag.t-blue,.tag.t-primary,.tag.t-violet,.tag.t-cyan{background:var(--primary-soft);color:var(--primary-hover);border-color:var(--primary-soft-2)}.tag.t-accent,.tag.t-orange,.tag.t-warning{background:var(--warning-soft);color:var(--warning);border-color:var(--warning-border)}.tag.t-success,.tag.t-green{background:var(--success-soft);color:var(--success);border-color:var(--success-border)}.tag.t-danger{background:var(--danger-soft);color:var(--danger);border-color:var(--danger-border)}.tag.t-dark{background:var(--text-2);color:#fff;border-color:var(--text-2)}.tag.t-danger-muted{background:var(--surface-3);color:var(--danger)}.tag.t-neutral,.tag.t-grey{background:var(--surface-3);color:var(--text-2);border-color:var(--border)}.tag.outline{background:transparent;border:1px solid currentColor;opacity:.9}.tag.dot{padding-left:7px}.tag.dot:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;margin-right:5px;flex:none}.tag.lg{height:26px;padding:0 10px;font-size:var(--fz-sm)}.chk{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 9px;border-radius:999px;font-size:var(--fz-xs);border:1px solid var(--border);color:var(--text-3);background:var(--surface);transition:all var(--dur) var(--ease)}.chk.done{border-color:transparent;background:var(--success-soft);color:var(--success);font-weight:500}.chk.done:before{content:"";width:5px;height:9px;border:solid currentColor;border-width:0 1.5px 1.5px 0;transform:rotate(45deg) translate(-1px,-1px);margin-right:3px}.ic{display:grid;place-items:center;flex:none;width:32px;height:32px;border-radius:9px;background:var(--surface-3);color:var(--text-3);transition:transform var(--dur-slow) var(--spring)}.ic svg{width:16px;height:16px}.ic.lg{width:40px;height:40px;border-radius:11px}.ic.lg svg{width:20px;height:20px}.ic.sm{width:26px;height:26px;border-radius:7px}.ic.sm svg{width:14px;height:14px}.ic.t-primary,.ic.t-blue,.ic.t-orange,.ic.t-violet,.ic.t-cyan,.ic.t-green,.ic.t-warn,.ic.t-red{background:var(--primary-soft);color:var(--primary)}.lift:hover .ic{transform:scale(1.06) rotate(-4deg)}.s5{display:inline-grid;grid-template-columns:repeat(5,14px);gap:3px}.s5 i{height:4px;border-radius:2px;background:var(--divider)}.s5 i.d{background:var(--primary)}.s5 i.c{background:var(--primary);opacity:.4}.s5.lost i.c{background:var(--danger);opacity:.6}.cu{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:6px;font-size:var(--fz-xs);font-weight:600;flex:none;background:var(--surface-3);color:var(--text-2)}.stuck{display:inline-flex;align-items:center;gap:5px;font-size:var(--fz-sm);color:var(--text-3)}.stuck svg{width:14px;height:14px;flex:none}.stuck.w{color:var(--warning);font-weight:500}.mbar{height:4px;border-radius:2px;background:var(--surface-3);overflow:hidden}.mbar>i{display:block;height:100%;background:var(--success);border-radius:2px;transition:width .8s var(--ease)}.kv{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px 24px}.kv.cols3{grid-template-columns:repeat(3,minmax(0,1fr))}.kv.cols2{grid-template-columns:repeat(2,minmax(0,1fr))}.kv>div{min-width:0}.kv .k{font-size:var(--fz-xs);color:var(--text-3);margin-bottom:2px}.kv .v{color:var(--text);word-break:break-all;min-height:21px}.kv .v.blank{color:var(--text-4)}.summary{display:flex;flex-wrap:wrap;gap:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs);margin-bottom:16px}.summary>div{padding:12px 18px;min-width:120px;border-right:1px solid var(--divider);flex:1}.summary>div:last-child{border-right:0}.summary .k{font-size:var(--fz-xs);color:var(--text-3)}.summary .v{font-size:var(--fz-card);font-weight:600;margin-top:2px;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.summary .v.plain{font-weight:400;font-size:var(--fz)}.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:16px}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px 18px;box-shadow:var(--shadow-xs);min-width:0;position:relative}.stat.kpi{display:flex;gap:12px;align-items:flex-start;padding:16px 18px}.stat.kpi .ic{width:36px;height:36px;border-radius:10px}.stat.kpi .ic svg{width:17px;height:17px}.stat>.grow{min-width:0}.stat .label{font-size:var(--fz-sm);color:var(--text-3);font-weight:400;display:flex;align-items:center;justify-content:space-between;gap:6px}.stat .value{font-size:var(--fz-num);font-weight:600;letter-spacing:var(--ls-num);color:var(--ink);margin-top:4px;font-variant-numeric:tabular-nums;line-height:var(--lh-tight);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stat .value small{font-size:var(--fz-sm);font-weight:400;color:var(--text-3);margin-left:4px;letter-spacing:0}.stat .sub{font-size:var(--fz-xs);color:var(--text-3);margin-top:4px}.stat .go{position:absolute;right:14px;top:16px;color:var(--text-4);opacity:0;transform:translate(-4px);transition:opacity var(--dur) var(--ease),transform var(--dur-slow) var(--ease)}.stat.clickable{cursor:pointer;transition:border-color var(--dur) var(--ease),box-shadow var(--dur-slow) var(--ease),transform var(--dur-slow) var(--ease)}.stat.clickable:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md);transform:translateY(-2px)}.stat.clickable:hover .go{opacity:1;transform:none;color:var(--primary)}.stat.clickable:hover .ic{transform:scale(1.06) rotate(-4deg)}.stat.tone-accent .value{color:var(--accent)}.stat.tone-danger .value{color:var(--danger)}.stat.tone-success .value{color:var(--success)}.stat.tone-primary .value{color:var(--primary)}.stat.tone-warning .value{color:var(--warning)}.spark{display:flex;align-items:flex-end;gap:3px;height:24px;margin-top:8px}.spark i{flex:1;display:block;background:var(--primary-soft-2);border-radius:2px;min-height:2px}.spark i.today{background:var(--primary)}.timeline{position:relative;padding-left:18px}.timeline:before{content:"";position:absolute;left:5px;top:8px;bottom:8px;width:1px;background:var(--border)}.tl-item{position:relative;padding:0 0 14px}.tl-item:last-child{padding-bottom:0}.tl-item:before{content:"";position:absolute;left:-16px;top:7px;width:7px;height:7px;border-radius:50%;background:var(--surface);border:2px solid var(--border-strong)}.tl-item.on:before{border-color:var(--primary);background:var(--primary)}.tl-item.warn:before{border-color:var(--accent);background:var(--accent)}.tl-item.bad:before{border-color:var(--danger);background:var(--danger)}.tl-t{font-size:var(--fz-sm);color:var(--text);line-height:var(--lh-base)}.tl-m{font-size:var(--fz-xs);color:var(--text-3);margin-top:2px}.empty{padding:44px 16px;text-align:center;color:var(--text-3);font-size:var(--fz-sm)}.empty .btn{margin-top:12px}.empty-ic{width:96px;height:64px;margin:0 auto 8px;color:var(--border-strong)}.empty-ic svg{width:96px;height:64px}.empty.sm .empty-ic{display:none}.empty.sm{padding:20px 12px}.toolbar{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid var(--divider);flex-wrap:wrap}.toolbar .select,.toolbar .input{width:auto}.toolbar .sep{width:1px;height:20px;background:var(--border)}.search{position:relative}.search .input{padding-left:32px;width:280px}.search svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);width:15px;height:15px;color:var(--text-4);pointer-events:none}.pager{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;border-top:1px solid var(--divider);font-size:var(--fz-sm);color:var(--text-3);flex-wrap:wrap}.pager .pages{display:flex;gap:4px;align-items:center}.pager .pg{min-width:30px;height:30px;padding:0 6px;border-radius:8px;border:1px solid transparent;color:var(--text-2);display:grid;place-items:center;cursor:pointer;-webkit-user-select:none;user-select:none;font-variant-numeric:tabular-nums;transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}.pager .pg:hover{background:var(--surface-3);color:var(--ink)}.pager .pg.on{background:var(--primary-soft);color:var(--primary);font-weight:600}.pager .pg.dis{opacity:.4;cursor:default}.pager .pg.dis:hover{background:none;color:var(--text-2)}.pager .pg.dots{cursor:default}.pager .select{width:auto}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a66;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);z-index:250;display:flex;align-items:flex-start;justify-content:center;padding:8vh 16px 24px;overflow:auto;animation:fade-in var(--dur) var(--ease)}.modal{background:var(--surface);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);width:100%;max-width:560px;animation:modal-in var(--dur-slow) var(--ease);display:flex;flex-direction:column;max-height:84vh}@keyframes modal-in{0%{opacity:0;transform:translateY(10px) scale(.98)}}.modal-h{padding:22px 24px 0;display:flex;align-items:center;justify-content:space-between;flex:none}.modal-t{font-size:var(--fz-card);font-weight:600;color:var(--ink)}.modal-b{padding:18px 24px;overflow:auto}.modal-f{padding:14px 24px 18px;display:flex;justify-content:flex-end;gap:8px;flex:none;border-top:1px solid var(--divider)}.modal-x{width:30px;height:30px;border-radius:var(--radius);display:grid;place-items:center;color:var(--text-3);cursor:pointer;transition:background var(--dur) var(--ease),color var(--dur) var(--ease),transform var(--dur-slow) var(--ease)}.modal-x:hover{background:var(--surface-3);color:var(--ink);transform:rotate(90deg)}.modal-x svg{width:16px;height:16px}.fade-enter-active,.fade-leave-active{transition:opacity var(--dur) var(--ease)}.fade-enter-from,.fade-leave-to{opacity:0}.drawer-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a59;z-index:100;animation:fade-in var(--dur) var(--ease)}.drawer{position:fixed;top:0;right:0;bottom:0;width:560px;max-width:100%;background:var(--surface);box-shadow:var(--shadow-xl);border-radius:14px 0 0 14px;overflow:hidden;z-index:101;display:flex;flex-direction:column;animation:drawer-in var(--dur-slow) var(--ease)}@keyframes drawer-in{0%{transform:translate(32px);opacity:0}}.drawer-h{padding:12px 20px 12px 16px;border-bottom:1px solid var(--divider);min-height:60px;display:flex;align-items:center;gap:8px;flex:none}.drawer-h .modal-t{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.drawer-acts{flex:none;display:flex;align-items:center;gap:8px}.drawer-acts .btn{height:32px;padding:0 14px;font-size:var(--fz-sm)}.drawer-acts .grow{display:none}.drawer-b{padding:20px 24px;overflow:auto;flex:1}.drawer-f{padding:14px 24px;border-top:1px solid var(--divider);background:var(--surface);display:flex;justify-content:flex-end;gap:8px;flex:none}@media (max-width: 600px){.drawer{border-radius:0}.drawer-h,.drawer-b,.drawer-f{padding-left:16px;padding-right:16px}.drawer-h{flex-wrap:wrap}}.skel{background:linear-gradient(90deg,var(--surface-3) 25%,var(--surface-2) 37%,var(--surface-3) 63%);background-size:400% 100%;animation:skel 1.4s ease infinite;border-radius:var(--radius-sm);height:14px}@keyframes skel{0%{background-position:100% 50%}to{background-position:0 50%}}.spin{width:14px;height:14px;border:2px solid var(--border-strong);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(116px,1fr));gap:8px}.media-item{position:relative;aspect-ratio:4 / 3;border-radius:var(--radius);overflow:hidden;background:var(--surface-3);cursor:zoom-in}.media-item img,.media-item video{width:100%;height:100%;object-fit:cover;display:block;transition:transform var(--dur-slow) var(--ease)}.media-item:hover img{transform:scale(1.05)}.media-item .angle{position:absolute;left:6px;bottom:6px;font-size:var(--fz-xs);background:#0f1b2d9e;color:#fff;padding:1px 6px;border-radius:4px;line-height:var(--lh-base)}.media-item .vid{position:absolute;right:6px;bottom:6px;font-size:var(--fz-xs);background:#0f1b2d9e;color:#fff;padding:1px 6px;border-radius:4px}.media-item .del{position:absolute;top:5px;right:5px;width:22px;height:22px;border-radius:50%;background:#0f1b2d9e;color:#fff;display:grid;place-items:center;opacity:0;transition:opacity var(--dur) var(--ease);cursor:pointer}.media-item .del svg{width:12px;height:12px}.media-item:hover .del{opacity:1}.media-item.sel{outline:2px solid var(--primary);outline-offset:1px}.media-item .pdf{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:0 8px;cursor:pointer;color:var(--danger)}.media-item .pdf b{font-size:var(--fz-lg);letter-spacing:.5px}.media-item .pdf span{max-width:100%;font-size:var(--fz-xs);color:var(--text-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.media-item .pick{position:absolute;top:6px;left:6px;width:18px;height:18px;border-radius:4px;border:1.5px solid #fff;background:#0f1b2d73;display:grid;place-items:center;color:#fff}.media-item.sel .pick{background:var(--primary);border-color:var(--primary)}.media-item .pick svg{width:11px;height:11px}.media-add{aspect-ratio:4 / 3;border:1.5px dashed var(--primary-soft-2);border-radius:var(--radius);background:var(--primary-soft);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:var(--primary-hover);font-size:var(--fz-xs);font-weight:500;cursor:pointer;transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease),transform .1s ease;-webkit-user-select:none;user-select:none}.media-add:hover{border-color:var(--primary);background:#dfe9ff}.media-add:active{transform:scale(.97)}.media-add svg{width:18px;height:18px}.media-add.busy{pointer-events:none;opacity:.7}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0e16eb;z-index:200;display:flex;align-items:center;justify-content:center;animation:fade-in var(--dur) var(--ease)}@keyframes fade-in{0%{opacity:0}}.lightbox img,.lightbox video{max-width:92vw;max-height:86vh;border-radius:6px;box-shadow:var(--shadow-lg);animation:modal-in var(--dur-slow) var(--ease)}.lightbox .lb-btn{position:absolute;width:40px;height:40px;border-radius:50%;background:#ffffff1f;color:#fff;display:grid;place-items:center;cursor:pointer;transition:background var(--dur) var(--ease);border:0}.lightbox .lb-btn:hover{background:#ffffff3d}.lightbox .lb-btn svg{width:18px;height:18px}.lightbox .lb-x{top:16px;right:16px}.lightbox .lb-prev{left:16px;top:50%;transform:translateY(-50%)}.lightbox .lb-next{right:16px;top:50%;transform:translateY(-50%)}.lightbox .lb-cap{position:absolute;bottom:16px;left:0;right:0;text-align:center;color:#fffc;font-size:var(--fz-sm)}.compare{display:grid;grid-template-columns:90px 1fr 1fr;gap:8px 12px;align-items:center}.compare .hd{font-size:var(--fz-xs);color:var(--text-3);text-align:center;padding-bottom:2px}.compare .lbl{font-size:var(--fz-sm);color:var(--text-2)}.compare .cell{display:flex;gap:6px;flex-wrap:wrap}.compare .cell .media-item{width:112px;aspect-ratio:4 / 3}.compare .cell.none{color:var(--text-4);font-size:var(--fz-xs)}.flow{display:flex;align-items:center}.flow .step{display:flex;align-items:center;gap:6px;font-size:var(--fz-xs);color:var(--text-3);white-space:nowrap}.flow .step .d{width:8px;height:8px;border-radius:50%;background:var(--border-strong);transition:background var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}.flow .step.done .d{background:var(--primary)}.flow .step.done{color:var(--text-2)}.flow .step.cur .d{background:var(--primary);box-shadow:0 0 0 3px var(--primary-ring)}.flow .step.cur{color:var(--primary);font-weight:600}.flow .line{flex:1;height:1px;background:var(--border);min-width:10px;margin:0 6px}.flow .line.done{background:var(--primary)}.flow.vertical{flex-direction:column;align-items:stretch}.flow.vertical .line{width:1px;height:14px;min-width:0;margin:2px 0 2px 3.5px;flex:none}.list-item{display:flex;align-items:flex-start;gap:12px;padding:12px 16px;border-bottom:1px solid var(--divider);transition:background var(--dur) var(--ease)}.list-item:last-child{border-bottom:0}.list-item.clickable{cursor:pointer}.list-item.clickable:hover{background:var(--hover)}.list-item .dot{width:8px;height:8px;border-radius:50%;background:var(--red);margin-top:7px;flex:none}.list-item .dot.read{background:transparent;border:1px solid var(--border-strong)}.msg{display:flex;gap:10px;padding:8px 0}.msg .who{width:96px;flex:none;font-size:var(--fz-xs);color:var(--text-3);text-align:right;padding-top:4px}.msg .bubble{background:var(--surface-2);border-radius:2px 10px 10px;padding:8px 12px;font-size:var(--fz-sm);white-space:pre-wrap;word-break:break-word;max-width:640px}.msg .bubble.img{padding:4px;background:transparent}.msg .bubble.img img{width:120px;height:90px;object-fit:cover;border-radius:var(--radius);cursor:zoom-in;display:block}.msg .t{font-size:var(--fz-xs);color:var(--text-3);margin-top:2px}.chart-wrap{position:relative}.chart-wrap svg{width:100%;height:auto;display:block;font-family:var(--font)}.chart-wrap .grid line{stroke:var(--divider)}.chart-wrap .axis text{fill:var(--text-3);font-size:var(--fz-xs)}.chart-wrap .tip{position:absolute;pointer-events:none;background:var(--ink);color:#fff;font-size:var(--fz-xs);padding:6px 10px;border-radius:var(--radius);box-shadow:var(--shadow-md);white-space:nowrap;transform:translate(-50%,calc(-100% - 10px));z-index:5;line-height:var(--lh-relaxed)}.legend{display:flex;gap:14px;font-size:var(--fz-sm);color:var(--text-2);align-items:center}.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}.divider{height:1px;background:var(--divider);margin:12px 0}.note{background:var(--surface-2);border-radius:var(--radius);padding:10px 12px;font-size:var(--fz-sm);color:var(--text-2);line-height:var(--lh-relaxed)}.note.warn{background:var(--warning-soft);color:var(--warning)}.note.danger{background:var(--danger-soft);color:var(--danger)}.note.info{background:var(--info-soft);color:var(--info)}.note.success{background:var(--success-soft);color:var(--success)}.two-col{display:grid;grid-template-columns:minmax(0,1fr) 348px;gap:16px;align-items:start}.two-col>.side{position:sticky;top:0}@media (max-width: 1100px){.two-col{grid-template-columns:1fr}.two-col>.side{position:static}}.chip-list{display:flex;flex-wrap:wrap;gap:6px}.kbd{font-family:inherit;font-size:var(--fz-xs);border:1px solid var(--border-strong);border-bottom-width:2px;border-radius:4px;padding:0 5px;color:var(--text-3)}.bar{height:6px;background:var(--surface-3);border-radius:3px;overflow:hidden}.bar>i{display:block;height:100%;background:var(--primary);border-radius:3px;transition:width .8s var(--ease)}.bar.success>i{background:var(--success)}.bar.accent>i{background:var(--accent)}.bar.danger>i{background:var(--danger)}.link-no{color:var(--primary);font-weight:400}
