:root{--app-bg:radial-gradient(1200px 600px at 8% -8%, #fff 0%, transparent 55%), radial-gradient(1000px 520px at 100% 0%, #eef3f6 0%, transparent 50%), linear-gradient(168deg, #f6f8fb 0%, #eef2f5 100%);--surface:#fff;--surface-2:#f7f9fb;--surface-sunken:#eef2f6;--ink:#16191d;--ink-soft:#2b333b;--muted:#5b656e;--faint:#8a949d;--line:#e3e8ee;--line-soft:#eef1f5;--line-strong:#cfd7df;--acc:#0a6f63;--acc-strong:#0a5d53;--acc-fill:#0c7a6e;--acc-fill-hover:#0a6a5f;--acc-soft:#e6f4f1;--acc-soft-line:#bfe3dc;--on-acc:#fff;--ring:#0a7d70;--ok:#047d5c;--ok-bg:#e7f7ef;--ok-line:#b6e6d0;--warn:#9a5b00;--warn-bg:#fdf3e2;--warn-line:#f3dcae;--danger:#b42318;--danger-bg:#fdecec;--danger-line:#f6c9c6;--info:#0a6f63;--info-bg:#e6f4f1;--info-line:#bfe3dc;--r-sm:8px;--r-md:12px;--r-lg:14px;--r-xl:16px;--r-pill:999px;--sh-sm:0 1px 2px #141e280d;--sh-md:0 8px 24px #141e2814;--sh-lg:0 18px 48px #141e281f;--sh-acc:0 8px 20px #0c7a6e38;--glass-bg:#ffffff9e;--glass-bg-2:#ffffffb3;--glass-line:#ffffffbf;--glass-line-b:#141e280f;--glass-blur:saturate(140%) blur(18px);--glass-fallback:#f6f8fb;--fs-h1:1.55rem;--fs-h2:1.06rem;--fs-body:.9rem;--fs-sm:.82rem;--fs-xs:.74rem;--ease:cubic-bezier(.22, .61, .36, 1);--t-fast:.14s;--t:.2s}.ui-glass{background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border:1px solid var(--glass-line);box-shadow:var(--sh-md)}@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.ui-glass{background:var(--glass-fallback)}}.ui-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-md)}.ui-kpi{border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-md);background:linear-gradient(160deg,#fff 0%,#f7fbfa 100%);padding:16px 18px}.ui-kpi-label{font-size:var(--fs-sm);color:var(--muted)}.ui-kpi-value{letter-spacing:-.02em;color:var(--ink);font-variant-numeric:tabular-nums;margin-top:6px;font-size:1.85rem;font-weight:800}.ui-h1{font-size:var(--fs-h1);letter-spacing:-.02em;color:var(--ink);font-weight:800;line-height:1.15}.ui-h2{font-size:var(--fs-h2);color:var(--ink);letter-spacing:-.01em;font-weight:700}.ui-muted{color:var(--muted)}.ui-link{color:var(--acc);font-weight:600;text-decoration:none}.ui-link:hover{color:var(--acc-strong);text-decoration:underline}.ui-btn{border-radius:var(--r-md);font-size:var(--fs-sm);border:1px solid var(--acc-fill);background:var(--acc-fill);color:var(--on-acc);cursor:pointer;transition:background var(--t) var(--ease), box-shadow var(--t) var(--ease), transform var(--t-fast) var(--ease);align-items:center;gap:7px;padding:9px 15px;font-weight:700;line-height:1;text-decoration:none;display:inline-flex}.ui-btn:hover{background:var(--acc-fill-hover);border-color:var(--acc-fill-hover);box-shadow:var(--sh-acc)}.ui-btn:active{transform:translateY(1px)}.ui-btn-secondary{border:1px solid var(--line-strong);background:var(--surface);color:var(--ink-soft);box-shadow:var(--sh-sm)}.ui-btn-secondary:hover{background:var(--surface-2);border-color:var(--line-strong);box-shadow:var(--sh-sm)}.ui-btn-ghost{color:var(--acc);box-shadow:none;background:0 0;border:1px solid #0000}.ui-btn-ghost:hover{background:var(--acc-soft);border-color:var(--acc-soft-line);box-shadow:none}.ui-btn-block{justify-content:center;width:100%;padding-top:11px;padding-bottom:11px}.ui-input,.ui-select,.ui-textarea{border:1px solid var(--line-strong);border-radius:var(--r-md);background:var(--surface);width:100%;font-size:var(--fs-body);color:var(--ink);transition:border-color var(--t) var(--ease), box-shadow var(--t) var(--ease);padding:9px 12px}.ui-input::placeholder,.ui-textarea::placeholder{color:var(--faint)}.ui-input:focus,.ui-select:focus,.ui-textarea:focus{border-color:var(--ring);outline:none;box-shadow:0 0 0 3px #0a7d702e}.ui-label{font-size:var(--fs-sm);color:var(--muted);margin-bottom:5px;font-weight:600;display:block}.ui-table{border-collapse:collapse;width:100%;font-size:var(--fs-sm)}.ui-table th{text-align:left;color:var(--muted);border-bottom:1px solid var(--line);background:var(--surface-2);white-space:nowrap;padding:10px 12px;font-weight:600}.ui-table th:first-child{border-top-left-radius:var(--r-md)}.ui-table th:last-child{border-top-right-radius:var(--r-md)}.ui-table td{border-bottom:1px solid var(--line-soft);color:var(--ink-soft);padding:11px 12px}.ui-table tbody tr:last-child td{border-bottom:none}.ui-table tbody tr{transition:background var(--t-fast) var(--ease)}.ui-table tbody tr:hover td{background:var(--surface-2)}.ui-chip{border-radius:var(--r-pill);font-size:var(--fs-xs);white-space:nowrap;border:1px solid #0000;align-items:center;gap:5px;padding:3px 10px;font-weight:700;display:inline-flex}.ui-chip-ok{background:var(--ok-bg);color:var(--ok);border-color:var(--ok-line)}.ui-chip-warn{background:var(--warn-bg);color:var(--warn);border-color:var(--warn-line)}.ui-chip-danger{background:var(--danger-bg);color:var(--danger);border-color:var(--danger-line)}.ui-chip-muted{background:var(--surface-sunken);color:var(--muted);border-color:var(--line)}.ui-chip-acc{background:var(--acc-soft);color:var(--acc);border-color:var(--acc-soft-line)}.ui-navlink{border-radius:var(--r-md);font-size:var(--fs-sm);color:var(--muted);transition:background var(--t) var(--ease), color var(--t) var(--ease), border-color var(--t) var(--ease);white-space:nowrap;border:1px solid #0000;padding:8px 13px;font-weight:600;text-decoration:none}.ui-navlink:hover{color:var(--ink);border-color:var(--glass-line);background:#ffffffb3}.ui-navlink-active{background:var(--acc-soft);color:var(--acc);border-color:var(--acc-soft-line)}.ui-navlink-active:hover{background:var(--acc-soft);color:var(--acc-strong)}.ui-empty{border:1px dashed var(--line-strong);border-radius:var(--r-md);background:var(--surface-2);color:var(--muted);text-align:center;font-size:var(--fs-body);padding:22px}.ui-skeleton{background:linear-gradient(90deg, var(--surface-sunken) 0%, #f7f9fc 52%, var(--surface-sunken) 100%);border-radius:var(--r-md);background-size:220% 100%;animation:1.4s linear infinite ui-shimmer;position:relative;overflow:hidden}@keyframes ui-shimmer{0%{background-position:220% 0}to{background-position:-220% 0}}.ui-scope :where(a,button,input,select,textarea,[tabindex]):focus-visible{outline:2px solid var(--ring);outline-offset:2px;border-radius:var(--r-sm)}@media (prefers-reduced-motion:reduce){.ui-skeleton{animation:none}.ui-btn:active{transform:none}.ui-table tbody tr,.ui-btn,.ui-navlink,.ui-input,.ui-select,.ui-textarea{transition:none}}
