.page-state{--state-brand:var(--color-brand,#cf723d);--state-text:var(--color-ink,#111827);--state-muted:var(--color-text-muted,#6b7280);--state-border:#0f172a14;--state-surface:var(--color-surface,#fff);--state-bg-soft:#f6f7f9}.page-state--panel{border:1px solid var(--state-border);background:var(--state-surface);text-align:center;border-radius:16px;flex-direction:column;justify-content:center;align-items:center;gap:12px;min-height:220px;padding:32px 24px;animation:.2s page-state-fade-in;display:flex}.page-state--inline{border:1px solid var(--state-border);background:var(--state-surface);color:var(--state-muted);border-radius:12px;align-items:center;gap:10px;padding:16px 18px;font-size:14px;display:flex}.page-state--table-cell{background:0 0!important;border:none!important;padding:0!important}.page-state__icon{border:1px solid color-mix(in srgb, var(--state-brand) 16%, transparent);background:color-mix(in srgb, var(--state-brand) 8%, #fff);width:48px;height:48px;color:var(--state-brand);border-radius:999px;place-items:center;font-size:20px;line-height:1;display:grid}.page-state__icon--muted{background:var(--state-bg-soft);color:var(--state-muted)}.page-state__icon--danger{color:#b91c1c;background:#dc262614}.page-state__title{color:var(--state-text);margin:0;font-size:16px;font-weight:600;line-height:1.4}.page-state__description{max-width:420px;color:var(--state-muted);margin:0;font-size:14px;line-height:1.6}.page-state__hint{max-width:420px;color:var(--state-muted);margin:0;font-size:13px;line-height:1.55}.page-state__actions{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:4px;display:flex}.page-state__spinner{border:2px solid #cf723d2e;border-top-color:var(--state-brand);border-radius:999px;width:22px;height:22px;animation:.9s linear infinite page-state-spin}.page-state__spinner--sm{width:16px;height:16px}.skeleton-block,.skeleton-line{background:#eef1f5;border-radius:8px;position:relative;overflow:hidden}.skeleton-block:after,.skeleton-line:after{content:"";background:linear-gradient(90deg,#0000 0%,#ffffffa6 50%,#0000 100%);animation:1.4s ease-in-out infinite page-state-shimmer;position:absolute;inset:0;transform:translate(-100%)}.skeleton-line{height:12px}.skeleton-line--title{width:42%;height:18px}.skeleton-line--value{width:56%;height:28px}.skeleton-line--hint{width:72%;height:10px}.card-skeleton-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;margin-bottom:18px;display:grid}.card-skeleton{border:1px solid var(--state-border);border-radius:var(--radius-md,12px);background:var(--state-surface);flex-direction:column;gap:10px;padding:16px 18px;display:flex}.table-skeleton{border:1px solid var(--state-border);border-radius:var(--radius-md,12px);background:var(--state-surface);overflow:hidden}.table-skeleton__head,.table-skeleton__row{grid-template-columns:repeat(var(--cols,5), minmax(0, 1fr));gap:12px;padding:14px 18px;display:grid}.table-skeleton__head{border-bottom:1px solid var(--state-border);background:#f8fafc}.table-skeleton__row+.table-skeleton__row{border-top:1px solid var(--state-border)}.page-skeleton{gap:16px;display:grid}.page-skeleton__toolbar{gap:8px;padding:4px 0 8px;display:grid}@keyframes page-state-spin{to{transform:rotate(360deg)}}@keyframes page-state-shimmer{to{transform:translate(100%)}}@keyframes page-state-fade-in{0%{opacity:0}to{opacity:1}}.penalty-alert-modal-root{z-index:1100}.penalty-alert-modal{width:100%;max-width:520px}.penalty-alert-modal__body{gap:var(--space-4);max-height:52vh;padding:var(--space-2) 0;flex-direction:column;display:flex;overflow-y:auto}.penalty-alert-group{flex-direction:column;gap:8px;display:flex}.penalty-alert-group__title{margin:0;font-size:13px;font-weight:600}.penalty-alert-group__title.is-danger{color:var(--color-danger,#c0392b)}.penalty-alert-group__title.is-warning{color:var(--badge-warning-text,#a06a1b)}.penalty-alert-group__subtitle{margin:4px 0 0;font-size:12px;font-weight:600}.penalty-alert-group__subtitle.is-danger{color:var(--color-danger,#c0392b)}.penalty-alert-group__subtitle.is-warning{color:var(--badge-warning-text,#a06a1b)}.penalty-alert-row{border-radius:var(--radius-input,8px);border:1px solid var(--color-border,#eee);background:var(--color-surface-muted,#fafafa);flex-direction:column;gap:4px;padding:10px 12px;display:flex}.penalty-alert-row__main{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.penalty-alert-row__node{font-size:14px;font-weight:600}.penalty-alert-row__target{color:var(--color-text-secondary,#666);font-size:13px}.penalty-alert-row__meta{color:var(--color-text-secondary,#888);gap:12px;font-size:12px;display:flex}.penalty-alert-row__meta .is-danger{color:var(--color-danger,#c0392b);font-weight:600}.penalty-alert-modal__footer{justify-content:space-between;align-items:center;gap:var(--space-3);margin-top:var(--space-3);padding-bottom:env(safe-area-inset-bottom,0);flex-wrap:wrap;display:flex}.penalty-alert-modal__dontshow{color:var(--color-text-secondary,#666);cursor:pointer;align-items:center;gap:8px;font-size:13px;display:inline-flex}.penalty-alert-modal__actions{flex-wrap:wrap;gap:8px;display:flex}.page-toolbar{justify-content:space-between;align-items:flex-start;gap:var(--space-4);margin-bottom:var(--space-5);display:flex}.page-toolbar__intro{gap:var(--space-3);flex-direction:column;min-width:0;display:flex}.page-toolbar__back{border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);min-height:36px;color:var(--color-text);font-size:var(--font-body);box-shadow:var(--shadow-sm);align-self:flex-start;align-items:center;gap:8px;padding:0 14px;font-weight:600;line-height:1;text-decoration:none;transition:border-color .15s,color .15s,background .15s,box-shadow .15s;display:inline-flex}.page-toolbar__back:hover{border-color:color-mix(in srgb, var(--color-brand) 28%, var(--color-border));color:var(--color-brand);background:color-mix(in srgb, var(--color-brand) 4%, var(--color-surface));box-shadow:var(--shadow-card)}.page-toolbar__back:focus-visible{box-shadow:var(--shadow-sm), 0 0 0 3px var(--color-brand-ring);outline:none}.page-toolbar__back-icon{font-size:16px;line-height:1}.page-toolbar h1{margin:0 0 var(--space-2);font-size:var(--font-page-title);font-weight:600;line-height:var(--line-page-title);color:var(--color-ink);letter-spacing:.01em}.page-toolbar p{color:var(--color-text-muted);font-size:var(--font-body);line-height:var(--line-body);margin:0}.page-toolbar__action .btn-primary,.btn-primary{border:1px solid var(--color-brand);border-radius:var(--radius-md);background:var(--color-brand);color:#fff;cursor:pointer;min-height:36px;font-size:var(--font-body);box-shadow:var(--shadow-brand);justify-content:center;align-items:center;padding:0 16px;font-weight:600;transition:background .15s,border-color .15s,box-shadow .15s,transform .1s;display:inline-flex}.page-toolbar__action .btn-primary:hover:not(:disabled),.btn-primary:hover:not(:disabled){background:var(--color-brand-hover);border-color:var(--color-brand-hover);box-shadow:0 2px 8px color-mix(in srgb, var(--color-brand) 24%, transparent)}.page-toolbar__action .btn-primary:focus-visible,.btn-primary:focus-visible{box-shadow:var(--shadow-brand), 0 0 0 3px var(--color-brand-ring);outline:none}.page-toolbar__action .btn-primary:active:not(:disabled),.btn-primary:active:not(:disabled){transform:translateY(1px)}.page-toolbar__action .btn-primary:disabled,.btn-primary:disabled{border-color:var(--color-disabled-border);background:color-mix(in srgb, var(--color-brand) 35%, var(--color-disabled-bg));color:#ffffffe0;opacity:1;cursor:not-allowed;box-shadow:none}.btn-secondary{border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);min-height:36px;color:var(--color-text);cursor:pointer;font-size:var(--font-body);justify-content:center;align-items:center;padding:0 14px;transition:border-color .15s,color .15s,background .15s;display:inline-flex}.btn-secondary:hover:not(:disabled){border-color:color-mix(in srgb, var(--color-brand) 28%, var(--color-border));color:var(--color-brand);background:color-mix(in srgb, var(--color-brand) 4%, var(--color-surface))}.btn-secondary:focus-visible{box-shadow:0 0 0 3px var(--color-brand-ring);outline:none}.btn-secondary:disabled{border-color:var(--color-disabled-border);background:var(--color-disabled-bg);color:var(--color-disabled-text);opacity:1;cursor:not-allowed}.btn-ghost{border-radius:var(--radius-md);min-height:36px;color:var(--color-text-secondary);cursor:pointer;font-size:var(--font-body);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;padding:0 12px;transition:color .15s,background .15s;display:inline-flex}.btn-ghost:hover:not(:disabled){color:var(--color-brand);background:color-mix(in srgb, var(--color-brand) 6%, transparent)}.btn-ghost:disabled{opacity:.55;cursor:not-allowed}.btn-danger{border:1px solid var(--color-danger-text);border-radius:var(--radius-md);background:var(--color-danger-text);color:#fff;cursor:pointer;min-height:36px;font-size:var(--font-body);justify-content:center;align-items:center;padding:0 16px;font-weight:600;transition:filter .15s,transform .1s;display:inline-flex;box-shadow:0 1px 2px #1018280f}.btn-danger:hover:not(:disabled){filter:brightness(1.04)}.btn-danger:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--color-danger-text) 18%, transparent);outline:none}.btn-danger:disabled{opacity:.55;cursor:not-allowed}.panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-card);padding:var(--space-5);box-shadow:var(--shadow-card)}.panel--compact{padding:16px 18px}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.form-grid label{color:var(--color-text-muted);flex-direction:column;gap:8px;font-size:14px;display:flex}.form-grid label>span,.form-grid>label{color:var(--color-text);font-size:13px;font-weight:500}.form-actions{gap:12px;margin-top:20px;display:flex}.form-error{border-radius:var(--radius-sm);color:var(--color-danger);background:#dc262614;margin-bottom:12px;padding:10px 12px;font-size:14px;line-height:1.5}.form-success{border-radius:var(--radius-sm);color:var(--color-success);background:#16a34a14;margin-bottom:12px;padding:10px 12px;font-size:14px;line-height:1.5}.pagination-bar{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text-muted);box-shadow:var(--shadow-sm);justify-content:space-between;align-items:center;gap:12px;margin-top:12px;padding:12px 14px;font-size:13px;display:flex}.pagination-bar__actions{align-items:center;gap:10px;display:flex}.modal-root{z-index:1000;padding:max(16px, env(safe-area-inset-top,0px)) max(16px, env(safe-area-inset-right,0px)) max(16px, env(safe-area-inset-bottom,0px)) max(16px, env(safe-area-inset-left,0px));place-items:center;display:grid;position:fixed;inset:0}.modal-mask{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);cursor:pointer;background:#0f172a5c;border:0;position:absolute;inset:0}.modal-card{z-index:1;width:min(760px,100%);max-height:min(86dvh,720px);padding:var(--space-6);border:1px solid var(--color-border);border-radius:var(--radius-modal);background:var(--color-surface);box-shadow:var(--shadow-popover);position:relative;overflow:auto}.modal-header{justify-content:space-between;align-items:flex-start;gap:var(--space-4);margin-bottom:var(--space-5);display:flex}.modal-header h3{margin:0 0 var(--space-2);color:var(--color-ink);font-size:var(--font-section-title);font-weight:600;line-height:var(--line-section-title)}.modal-header p{color:var(--color-text-muted);font-size:var(--font-helper);line-height:var(--line-helper);margin:0}.modal-close{border:1px solid var(--color-border);width:30px;height:30px;color:var(--color-text-muted);cursor:pointer;background:#fff;border-radius:999px;font-size:20px;line-height:1}.modal-close:hover{border-color:color-mix(in srgb, var(--color-brand) 28%, var(--color-border));color:var(--color-brand);background:color-mix(in srgb, var(--color-brand) 4%, var(--color-surface))}.modal-actions{justify-content:flex-end}.confirm-dialog{width:min(420px,100%)}.confirm-dialog .modal-header p{white-space:pre-line}.confirm-dialog__input{resize:vertical;width:100%;min-height:96px;font-size:16px}.app-shell{height:100dvh;min-height:100dvh;max-height:100dvh;display:flex;overflow:hidden}@supports (-webkit-touch-callout:none){.app-shell{height:-webkit-fill-available;min-height:-webkit-fill-available;max-height:-webkit-fill-available}}.app-shell__sidebar{width:var(--sider-width);background:var(--color-sidebar);color:var(--color-sider-text);flex-direction:column;flex-shrink:0;transition:width .18s,opacity .18s;display:flex;overflow:hidden}.app-shell.is-sidebar-collapsed .app-shell__sidebar{opacity:0;width:0}.app-shell__brand{align-items:center;gap:var(--space-2);height:56px;min-height:56px;padding:0 var(--space-4);border-bottom:1px solid var(--color-sider-divider);display:flex}.app-shell__brand-text{flex-direction:column;gap:2px;min-width:0;display:flex}.app-shell__brand-title{font-size:var(--font-body);color:#f8fafcf5;letter-spacing:.01em;white-space:nowrap;text-overflow:ellipsis;font-weight:600;line-height:1.35;overflow:hidden}.app-shell__brand-sub{display:none}.app-shell__nav{padding:var(--space-3) var(--space-2);flex-direction:column;flex:1;gap:2px;display:flex;overflow-y:auto}.app-shell__nav-item{width:calc(100% - var(--space-1));border:none;border-radius:var(--radius-md);min-height:40px;color:var(--color-sider-text-dim);font-size:var(--font-body);letter-spacing:.01em;cursor:pointer;border-inline-start:3px solid #0000;align-items:center;margin:0 auto;padding:10px 14px 10px 12px;font-weight:500;line-height:19px;text-decoration:none;transition:background .15s,color .15s,border-color .15s;display:flex;position:relative}.app-shell__nav-item:before{content:"";border-radius:var(--radius-pill);opacity:.35;background:currentColor;flex-shrink:0;width:6px;height:6px;margin-right:10px}.app-shell__nav-item:hover{background:var(--color-sider-hover);color:#f8fafcf2}.app-shell__nav-item.is-active{background:var(--color-sidebar-active);color:#f8fafc;border-inline-start-color:var(--color-brand);padding-inline-start:9px;font-weight:600}.app-shell__nav-item:focus-visible{box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--color-brand) 45%, transparent);outline:none}.app-shell__nav-item.is-active:before{background:var(--color-brand);opacity:1}.app-shell__nav-item.is-pending{color:#f8fafceb;background:color-mix(in srgb, var(--color-brand) 16%, transparent)}.app-shell__nav-item.is-pending:before{background:var(--color-brand);opacity:.85;animation:.9s ease-in-out infinite app-shell-nav-pulse}@keyframes app-shell-nav-pulse{0%,to{opacity:.55;transform:scale(1)}50%{opacity:1;transform:scale(1.25)}}.app-shell__content{background:var(--color-page);flex-direction:column;flex:1;min-width:0;display:flex}.app-shell__topbar{justify-content:space-between;align-items:center;gap:var(--space-4);min-height:var(--topbar-height);padding:0 var(--space-5);border-bottom:1px solid var(--color-border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffe0;display:flex}.app-shell__topbar-left,.app-shell__topbar-actions{align-items:center;gap:var(--space-3);display:flex}.app-shell__menu-toggle{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);cursor:pointer;flex-direction:column;justify-content:center;gap:4px;width:36px;height:36px;transition:border-color .15s,background .15s;display:inline-flex}.app-shell__menu-toggle span{background:var(--color-text-secondary);border-radius:2px;width:16px;height:2px;margin:0 auto;display:block}.app-shell__menu-toggle:hover,.app-shell__topbar-button:hover{border-color:color-mix(in srgb, var(--color-brand) 28%, var(--color-border));color:var(--color-brand);background:color-mix(in srgb, var(--color-brand) 4%, var(--color-surface))}.app-shell__menu-toggle:hover span{background:var(--color-brand)}.app-shell__account{align-items:center;gap:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-surface-soft);min-height:36px;color:var(--color-text-secondary);font-size:var(--font-helper);padding:0 14px;display:inline-flex}.app-shell__account strong{color:var(--color-text);font-weight:600}.app-shell__topbar-button,.app-shell__logout{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);min-height:36px;color:var(--color-text-secondary);cursor:pointer;font-size:var(--font-helper);padding:0 14px;transition:border-color .15s,color .15s,background .15s}.app-shell__logout:hover{border-color:color-mix(in srgb, var(--color-brand) 28%, var(--color-border));color:var(--color-brand);background:color-mix(in srgb, var(--color-brand) 4%, var(--color-surface))}.app-shell__main{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.app-shell__page-scroll{min-height:0;padding:var(--space-6) var(--space-8) var(--space-8);flex:1;overflow:auto}.app-shell__password-modal{width:min(520px,100%)}.app-shell__password-grid{grid-template-columns:1fr}@media (width<=768px){.app-shell__topbar{padding-top:env(safe-area-inset-top,0px);min-height:calc(var(--topbar-height) + env(safe-area-inset-top,0px))}.app-shell__page-scroll{padding:var(--space-4) var(--space-3) calc(var(--space-6) + env(safe-area-inset-bottom,0px))}}:root{--color-page:#f5f6f8;--color-surface:#fff;--color-surface-soft:#fafafa;--color-border:#0f172a14;--color-border-strong:#0f172a1f;--color-text:#111827;--color-text-secondary:#475467;--color-text-muted:#667085;--color-text-placeholder:#98a2b3;--color-ink:#111827;--color-brand:#cf723d;--color-brand-hover:#b85f2f;--color-brand-soft:#fff4e8;--color-brand-border:#ffd6a8;--color-brand-ring:color-mix(in srgb, var(--color-brand) 14%, transparent);--color-sidebar:#0f1720;--color-sidebar-soft:#151f2c;--color-sidebar-active:#202b3a;--color-sider-bg:var(--color-sidebar);--color-sider-elevated:var(--color-sidebar-soft);--color-sider-text:#f8fafce0;--color-sider-text-dim:#f8fafc85;--color-sider-hover:#ffffff0d;--color-sider-active:var(--color-sidebar-active);--color-sider-divider:#ffffff0f;--color-sider-accent:var(--color-brand);--color-bg:var(--color-page);--color-primary:#1e3a5f;--color-primary-hover:#16304f;--color-accent:#2563eb;--color-link-edit:#2563eb;--color-success:#027a48;--color-warning:#b75e1c;--color-danger:#b42318;--color-partial:#fff4e8;--color-paid:#ecfdf3;--chart-series-up:#16a34a;--chart-series-down:#dc2626;--badge-success-bg:#ecfdf3;--badge-success-text:#027a48;--badge-success-border:#abefc6;--badge-warning-bg:#fff4e8;--badge-warning-text:#b75e1c;--badge-warning-border:#ffd6a8;--badge-danger-bg:#fef3f2;--badge-danger-text:#b42318;--badge-danger-border:#fecdca;--badge-info-bg:#eff8ff;--badge-info-text:#175cd3;--badge-info-border:#b2ddff;--badge-muted-bg:#f2f4f7;--badge-muted-text:#667085;--badge-muted-border:#d0d5dd;--color-success-bg:var(--badge-success-bg);--color-success-text:var(--badge-success-text);--color-success-border:var(--badge-success-border);--color-warning-bg:var(--badge-warning-bg);--color-warning-text:var(--badge-warning-text);--color-warning-border:var(--badge-warning-border);--color-danger-bg:var(--badge-danger-bg);--color-danger-text:var(--badge-danger-text);--color-danger-border:var(--badge-danger-border);--color-info-bg:var(--badge-info-bg);--color-info-text:var(--badge-info-text);--color-info-border:var(--badge-info-border);--color-disabled-bg:var(--badge-muted-bg);--color-disabled-text:var(--badge-muted-text);--color-disabled-border:var(--badge-muted-border);--sider-width:220px;--topbar-height:52px;--input-height:40px;--radius-sm:8px;--radius-md:10px;--radius-lg:12px;--radius-card:16px;--radius-modal:20px;--radius-pill:999px;--shadow-sm:0 1px 2px #1018280a;--shadow-md:0 4px 16px #1018280f;--shadow-card:0 1px 2px #1018280a, 0 8px 24px #1018280a;--shadow-popover:0 12px 32px #1018281f;--shadow-brand:0 1px 2px #1018280f;--font-sans:-apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", Roboto, "Helvetica Neue", Arial, "PingFang SC", "Microsoft YaHei", sans-serif;--font-brand-values:"LiSu", "隶书", "STLiti", "华文隶书", serif;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--font-page-title:24px;--font-section-title:18px;--font-body:14px;--font-helper:13px;--line-page-title:32px;--line-section-title:26px;--line-body:22px;--line-helper:20px}.ui-page{flex-direction:column;gap:0;display:flex}.ui-stat-grid{gap:var(--space-3);margin-bottom:var(--space-5);grid-template-columns:repeat(auto-fit,minmax(150px,1fr));display:grid}.ui-stat-card{gap:var(--space-1);padding:var(--space-4) var(--space-5) var(--space-4) calc(var(--space-5) + 4px);border:1px solid var(--color-border);border-radius:var(--radius-card);background:var(--color-surface);box-shadow:var(--shadow-card);flex-direction:column;display:flex;position:relative}.ui-stat-card:before{content:"";background:var(--color-brand);border-radius:0 4px 4px 0;width:4px;position:absolute;inset:12px auto 12px 0}.ui-stat-card--success:before{background:var(--color-success-text)}.ui-stat-card--muted:before{background:var(--color-text-muted)}.ui-stat-card--warning:before{background:var(--color-warning-text)}.ui-stat-card__label{color:var(--color-text-muted);font-size:var(--font-helper);font-weight:500;line-height:var(--line-helper)}.ui-stat-card__value{color:var(--color-ink);font-variant-numeric:tabular-nums;font-size:22px;font-weight:700;line-height:1.25}.ui-stat-card__hint{color:var(--color-text-muted);font-size:12px;line-height:1.45}.ui-section{margin-bottom:var(--space-5)}.ui-section__header{justify-content:space-between;align-items:flex-end;gap:var(--space-3);margin-bottom:var(--space-3);display:flex}.ui-section__header h2{margin:0 0 var(--space-1);color:var(--color-ink);font-size:var(--font-section-title);font-weight:600;line-height:var(--line-section-title)}.ui-section__header p{color:var(--color-text-muted);font-size:var(--font-helper);line-height:var(--line-helper);margin:0}.ui-filter-bar{align-items:flex-end;gap:var(--space-4);margin-bottom:var(--space-4);padding:var(--space-4) var(--space-5);border:1px solid var(--color-border);border-radius:var(--radius-card);background:var(--color-surface);box-shadow:var(--shadow-card);flex-wrap:wrap;display:flex}.ui-filter-bar label{gap:var(--space-2);min-width:160px;color:var(--color-text-muted);font-size:var(--font-helper);line-height:var(--line-helper);flex-direction:column;display:flex}.ui-filter-bar__actions{flex-wrap:wrap;align-items:flex-end;gap:10px;margin-left:auto;display:flex}.ui-tabs{border-bottom:2px solid var(--color-border);gap:4px;margin-bottom:18px;display:inline-flex}.ui-tabs button{min-height:40px;color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;border-radius:0;padding:0 18px;font-size:14px;font-weight:500;transition:color .15s;position:relative}.ui-tabs button:hover{color:var(--color-text)}.ui-tabs button.is-active{color:var(--color-brand);font-weight:600}.ui-tabs button.is-active:after{content:"";background:var(--color-brand);border-radius:2px 2px 0 0;height:2px;position:absolute;bottom:-2px;left:12px;right:12px}.ui-tabs--pill{border:1px solid var(--color-border);border-bottom:1px solid var(--color-border);background:var(--color-surface);box-shadow:var(--shadow-sm);border-radius:999px;gap:6px;padding:5px}.ui-tabs--pill button{border-radius:999px;min-height:34px;padding:0 16px}.ui-tabs--pill button.is-active{background:var(--color-brand-soft);color:var(--color-brand)}.ui-tabs--pill button.is-active:after{display:none}.ui-link-action{color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;align-items:center;padding:0;font-size:13px;text-decoration:none;transition:color .15s;display:inline-flex}.ui-link-action:hover{color:var(--color-brand)}.ui-link-action--danger{color:#b91c1c}.ui-link-action--danger:hover{color:#991b1b}.ui-link-action:disabled{opacity:.55;cursor:not-allowed}.ui-level-tag{border-radius:999px;align-items:center;padding:2px 10px;font-size:12px;font-weight:600;display:inline-flex}.ui-level-tag--A{color:#c2410c;background:#ffedd5}.ui-level-tag--B{color:#1d4ed8;background:#dbeafe}.ui-level-tag--C{color:#4b5563;background:#f3f4f6}.ui-level-tag--diamond{color:#4338ca;background:#e0e7ff}.ui-level-tag--gold{color:#b45309;background:#fef3c7}.ui-level-tag--silver{color:#1e40af;background:#dbeafe}.ui-level-tag--plain{color:#6b7280;background:#f3f4f6}.ui-level-tag--intern{color:#0f766e;background:#ccfbf1}.ui-role-tag{white-space:nowrap;border-radius:999px;align-items:center;padding:2px 10px;font-size:12px;font-weight:600;display:inline-flex}.ui-role-tag--super_admin{background:var(--color-brand-soft);color:var(--color-brand);border:1px solid var(--color-brand-border)}.ui-role-tag--hr{color:#1d4ed8;background:#dbeafe}.ui-role-tag--manager{color:#be123c;background:#ffe4e6}.ui-role-tag--finance{color:#047857;background:#d1fae5}.ui-role-tag--cashier{color:#0f766e;background:#ccfbf1}.ui-role-tag--project_director{color:#6d28d9;background:#ede9fe}.ui-direction-tag--add{color:#166534;background:#dcfce7}.ui-direction-tag--deduct{color:#b91c1c;background:#fee2e2}.ui-direction-tag--both{color:#6d28d9;background:#ede9fe}.ui-export-status--ready{color:#16a34a;background:#dcfce7}.ui-export-status--expired{color:#6b7280;background:#f3f4f6}.status-badge{white-space:nowrap;border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;min-height:22px;padding:0 10px;font-size:12px;font-weight:500;line-height:1.35;display:inline-flex}.status-badge--success{background:var(--badge-success-bg);color:var(--badge-success-text);border-color:var(--badge-success-border)}.status-badge--warning{background:var(--badge-warning-bg);color:var(--badge-warning-text);border-color:var(--badge-warning-border)}.status-badge--danger{background:var(--badge-danger-bg);color:var(--badge-danger-text);border-color:var(--badge-danger-border)}.status-badge--info{background:var(--badge-info-bg);color:var(--badge-info-text);border-color:var(--badge-info-border)}.status-badge--muted{background:var(--badge-muted-bg);color:var(--badge-muted-text);border-color:var(--badge-muted-border)}.status-tag{white-space:nowrap;border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;min-height:22px;padding:0 10px;font-size:12px;font-weight:500;line-height:1.35;display:inline-flex}.status-tag.is-active,.status-tag.is-paid{background:var(--badge-success-bg);color:var(--badge-success-text);border-color:var(--badge-success-border)}.status-tag.is-inactive{background:var(--badge-muted-bg);color:var(--badge-muted-text);border-color:var(--badge-muted-border)}.status-tag.is-pending{background:var(--badge-warning-bg);color:var(--badge-warning-text);border-color:var(--badge-warning-border)}.status-tag.is-partial_paid{background:var(--badge-info-bg);color:var(--badge-info-text);border-color:var(--badge-info-border)}.status-tag.is-danger,.status-tag.is-failed{background:var(--badge-danger-bg);color:var(--badge-danger-text);border-color:var(--badge-danger-border)}.status-tag.is-muted{background:var(--badge-muted-bg);color:var(--badge-muted-text);border-color:var(--badge-muted-border)}*{box-sizing:border-box}html,body,#root{min-height:100%}body{font-family:var(--font-sans);color:var(--color-text);background:var(--color-page);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0}body:has(.app-shell){height:100%;overflow:hidden}html.sign-route,html.sign-route body{touch-action:manipulation;-webkit-text-size-adjust:100%;min-height:100%;min-height:-webkit-fill-available}html.login-route,html.login-route body,html.login-route #root{touch-action:manipulation;-webkit-text-size-adjust:100%;height:100dvh;min-height:100dvh;margin:0}html.seq-sign-open,html.seq-sign-open body{height:100%;overflow:hidden}#root:has(.app-shell){height:100%}body:has(.sign-page){overflow-x:hidden}#root:has(.sign-page){width:100%;max-width:100%}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}input:not([type=checkbox]):not([type=radio]),select,textarea{min-height:var(--input-height);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);font-size:var(--font-body);line-height:var(--line-body);padding:8px 12px;transition:border-color .15s,box-shadow .15s,background .15s}input:not([type=checkbox]):not([type=radio])::placeholder,textarea::placeholder{color:var(--color-text-placeholder)}input:not([type=checkbox]):not([type=radio]):hover,select:hover,textarea:hover{border-color:color-mix(in srgb, var(--color-text) 18%, var(--color-border));background:var(--color-surface)}input:not([type=checkbox]):not([type=radio]):focus,select:focus,textarea:focus{border-color:color-mix(in srgb, var(--color-brand) 55%, var(--color-border));background:var(--color-surface);box-shadow:0 0 0 3px var(--color-brand-ring);outline:none}input:not([type=checkbox]):not([type=radio]):disabled,select:disabled,textarea:disabled{background:var(--color-surface-soft);color:var(--color-text-muted);cursor:not-allowed;opacity:.85}input[type=number]{appearance:textfield}input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.page-loading{place-items:center;gap:var(--space-2);min-height:40vh;color:var(--color-text-muted);font-size:var(--font-body);text-align:center;padding:var(--space-6);display:grid}.page-loading__hint{color:var(--color-text-muted);margin:0;font-size:12px}.brand-logo{flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.brand-logo img,.brand-logo svg{object-fit:contain;width:auto;display:block}@media (width<=768px){html:not(.sign-route) input:not([type=checkbox]):not([type=radio]):not([type=hidden]),html:not(.sign-route) select,html:not(.sign-route) textarea{font-size:max(16px,1em)}}
