:root{--bg: oklch(.985 .003 250);--surface: #ffffff;--surface-2: oklch(.972 .005 250);--surface-3: oklch(.955 .006 250);--overlay: oklch(.22 .012 250 / .45);--border: oklch(.918 .006 250);--border-strong: oklch(.86 .008 250);--divider: oklch(.945 .005 250);--ink: oklch(.215 .014 252);--ink-2: oklch(.42 .013 252);--ink-3: oklch(.58 .01 252);--ink-4: oklch(.72 .008 252);--primary: oklch(.435 .135 260);--primary-hover: oklch(.385 .135 260);--primary-press: oklch(.345 .13 260);--primary-fg: #ffffff;--primary-soft: oklch(.955 .025 260);--primary-tint: oklch(.92 .045 260);--success: oklch(.555 .13 155);--success-soft: oklch(.955 .04 155);--success-ink: oklch(.35 .11 155);--warning: oklch(.68 .14 70);--warning-soft: oklch(.965 .05 80);--warning-ink: oklch(.43 .11 60);--danger: oklch(.555 .18 25);--danger-soft: oklch(.96 .035 25);--danger-ink: oklch(.42 .15 25);--info: oklch(.58 .11 230);--info-soft: oklch(.96 .03 230);--info-ink: oklch(.38 .11 230);--font-sans: "Geist", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-mono: "Geist Mono", ui-monospace, "SF Mono", Menlo, monospace;--fs-12: 12px;--lh-12: 16px;--fs-13: 13px;--lh-13: 18px;--fs-14: 14px;--lh-14: 20px;--fs-15: 15px;--lh-15: 22px;--fs-16: 16px;--lh-16: 24px;--fs-18: 18px;--lh-18: 26px;--fs-20: 20px;--lh-20: 28px;--fs-24: 24px;--lh-24: 32px;--fs-28: 28px;--lh-28: 36px;--fs-32: 32px;--lh-32: 40px;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 20px;--s-6: 24px;--s-7: 28px;--s-8: 32px;--s-10: 40px;--s-12: 48px;--s-16: 64px;--r-2: 4px;--r-3: 6px;--r-4: 8px;--r-5: 10px;--r-6: 12px;--r-8: 16px;--r-full: 999px;--sh-1: 0 1px 2px rgba(20, 24, 40, .04), 0 0 0 1px rgba(20, 24, 40, .04);--sh-2: 0 1px 2px rgba(20, 24, 40, .05), 0 2px 8px rgba(20, 24, 40, .05);--sh-3: 0 4px 12px rgba(20, 24, 40, .06), 0 1px 2px rgba(20, 24, 40, .04);--sh-4: 0 12px 32px rgba(20, 24, 40, .1), 0 4px 12px rgba(20, 24, 40, .06);--sh-focus: 0 0 0 3px oklch(.435 .135 260 / .22);--h-control: 40px;--h-control-sm: 32px;--h-control-lg: 48px;--h-row: 56px}*{box-sizing:border-box}html,body{margin:0;font-family:var(--font-sans);font-size:var(--fs-14);line-height:var(--lh-14);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"cv11","ss01","ss03"}button{font-family:inherit}.mono,.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.num{font-feature-settings:"tnum"}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:var(--h-control);padding:0 16px;border-radius:var(--r-4);border:1px solid transparent;font-size:var(--fs-14);font-weight:500;line-height:1;color:var(--ink);background:var(--surface);cursor:pointer;transition:background .12s,border-color .12s,transform .04s,box-shadow .12s;white-space:nowrap;letter-spacing:0}.btn:active{transform:translateY(1px)}.btn:focus-visible{outline:none;box-shadow:var(--sh-focus)}.btn--primary{background:var(--primary);color:var(--primary-fg);border-color:var(--primary)}.btn--primary:hover{background:var(--primary-hover);border-color:var(--primary-hover)}.btn--primary:active{background:var(--primary-press);border-color:var(--primary-press)}.btn--secondary{background:var(--surface);border-color:var(--border-strong);color:var(--ink)}.btn--secondary:hover{background:var(--surface-2)}.btn--ghost{background:transparent;border-color:transparent;color:var(--ink-2)}.btn--ghost:hover{background:var(--surface-2);color:var(--ink)}.btn--danger{background:var(--danger);color:#fff;border-color:var(--danger)}.btn--danger:hover{filter:brightness(.94)}.btn--success{background:var(--success);color:#fff;border-color:var(--success)}.btn--sm{height:var(--h-control-sm);padding:0 12px;font-size:var(--fs-13);border-radius:var(--r-3)}.btn--lg{height:var(--h-control-lg);padding:0 22px;font-size:var(--fs-15);border-radius:var(--r-5)}.btn--block{width:100%}.btn--icon{padding:0;width:var(--h-control)}.btn--icon.btn--sm{width:var(--h-control-sm)}.badge{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 8px;border-radius:var(--r-full);font-size:var(--fs-12);font-weight:500;line-height:1;letter-spacing:.005em}.badge .dot{width:6px;height:6px;border-radius:50%;background:currentColor}.badge--success{background:var(--success-soft);color:var(--success-ink)}.badge--warning{background:var(--warning-soft);color:var(--warning-ink)}.badge--danger{background:var(--danger-soft);color:var(--danger-ink)}.badge--info{background:var(--info-soft);color:var(--info-ink)}.badge--neutral{background:var(--surface-3);color:var(--ink-2)}.badge--primary{background:var(--primary-soft);color:var(--primary)}.badge--solid.badge--success{background:var(--success);color:#fff}.badge--solid.badge--danger{background:var(--danger);color:#fff}.badge--solid.badge--warning{background:var(--warning);color:#fff}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-6);overflow:hidden}.card--flat{border-radius:var(--r-5)}.card--soft{box-shadow:var(--sh-1);border-color:transparent}.card__header{padding:16px 20px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--divider)}.card__title{font-size:var(--fs-15);font-weight:600;color:var(--ink)}.card__body{padding:20px}.field{display:block}.field__label{display:block;font-size:var(--fs-13);font-weight:500;color:var(--ink-2);margin-bottom:6px;letter-spacing:0}.input,.select,.textarea{width:100%;height:var(--h-control);padding:0 12px;border-radius:var(--r-4);border:1px solid var(--border-strong);background:var(--surface);font-family:inherit;font-size:var(--fs-14);color:var(--ink);transition:border-color .12s,box-shadow .12s,background .12s}.textarea{min-height:88px;padding:10px 12px;resize:vertical}.input::placeholder,.textarea::placeholder{color:var(--ink-4)}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--primary);box-shadow:var(--sh-focus)}.input--lg{height:var(--h-control-lg);font-size:var(--fs-15)}.input--sm{height:var(--h-control-sm);font-size:var(--fs-13)}.input--num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;text-align:right}.input-group{position:relative}.input-group .input{padding-left:38px}.input-group__icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--ink-3);pointer-events:none}.input-group--right .input{padding-left:12px;padding-right:38px}.input-group--right .input-group__icon{left:auto;right:12px}.field__hint{font-size:var(--fs-12);color:var(--ink-3);margin-top:6px}.field__error{font-size:var(--fs-12);color:var(--danger-ink);margin-top:6px}.avatar{width:36px;height:36px;border-radius:50%;background:var(--primary-soft);color:var(--primary);display:inline-flex;align-items:center;justify-content:center;font-weight:600;font-size:var(--fs-13);flex:0 0 auto}.avatar--lg{width:56px;height:56px;font-size:var(--fs-18)}.avatar--sm{width:28px;height:28px;font-size:var(--fs-12)}.table{width:100%;border-collapse:separate;border-spacing:0;font-size:var(--fs-14)}.table th{text-align:left;font-weight:500;color:var(--ink-3);padding:12px 16px;font-size:var(--fs-12);letter-spacing:.02em;text-transform:uppercase;background:var(--surface-2);border-bottom:1px solid var(--border);position:sticky;top:0}.table td{padding:14px 16px;border-bottom:1px solid var(--divider);vertical-align:middle;color:var(--ink)}.table tr:hover td{background:var(--surface-2)}.table .num{text-align:right}.table--compact td{padding:10px 16px}.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-6);padding:16px 18px}.kpi__label{font-size:var(--fs-12);font-weight:500;color:var(--ink-3);text-transform:uppercase;letter-spacing:.04em}.kpi__value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--fs-28);font-weight:600;color:var(--ink);margin-top:8px;letter-spacing:0}.kpi__delta{display:inline-flex;gap:4px;align-items:center;font-size:var(--fs-13);margin-top:4px}.kpi__delta--up{color:var(--success-ink)}.kpi__delta--down{color:var(--danger-ink)}.row{display:flex;align-items:center;gap:12px;padding:14px 16px;background:var(--surface);border-bottom:1px solid var(--divider);min-height:var(--h-row)}.row__main{flex:1;min-width:0}.row__title{font-size:var(--fs-15);font-weight:500;color:var(--ink)}.row__meta{font-size:var(--fs-13);color:var(--ink-3);margin-top:2px}.row__right{text-align:right;flex:0 0 auto}.segmented{display:inline-flex;padding:3px;background:var(--surface-3);border-radius:var(--r-4);gap:2px}.segmented button{border:0;background:transparent;color:var(--ink-2);height:30px;padding:0 14px;border-radius:var(--r-3);font-size:var(--fs-13);font-weight:500;cursor:pointer;font-family:inherit}.segmented button.is-active{background:var(--surface);color:var(--ink);box-shadow:var(--sh-1)}.progress{height:8px;border-radius:4px;background:var(--surface-3);overflow:hidden}.progress__fill{height:100%;border-radius:4px;background:var(--primary)}.progress--success .progress__fill{background:var(--success)}.progress--warning .progress__fill{background:var(--warning)}.progress--danger .progress__fill{background:var(--danger)}.debt{display:flex;align-items:center;gap:8px;font-family:var(--font-mono);font-variant-numeric:tabular-nums}.sidebar{width:240px;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column}.sidebar__brand{display:flex;align-items:center;gap:10px;padding:18px 20px;border-bottom:1px solid var(--divider)}.sidebar__logo{width:28px;height:28px;background:var(--primary);border-radius:7px;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:14px}.sidebar__name{font-weight:600;font-size:var(--fs-15);letter-spacing:0}.sidebar__nav{padding:8px;flex:1;display:flex;flex-direction:column;gap:1px}.sidebar__section{padding:12px 12px 6px;font-size:var(--fs-12);color:var(--ink-3);text-transform:uppercase;letter-spacing:.06em;font-weight:500}.nav-item{display:flex;align-items:center;gap:10px;height:36px;padding:0 12px;border-radius:var(--r-3);color:var(--ink-2);font-size:var(--fs-14);font-weight:500;cursor:pointer;text-decoration:none}.nav-item:hover{background:var(--surface-2);color:var(--ink)}.nav-item.is-active{background:var(--primary-soft);color:var(--primary)}.nav-item .icon{width:18px;height:18px;flex:0 0 auto}.nav-item__count{margin-left:auto;font-size:var(--fs-12);background:var(--surface-3);color:var(--ink-2);padding:1px 7px;border-radius:var(--r-full);font-family:var(--font-mono);font-variant-numeric:tabular-nums}.nav-item.is-active .nav-item__count{background:#fff;color:var(--primary)}.topbar{height:56px;padding:0 24px;display:flex;align-items:center;gap:16px;border-bottom:1px solid var(--border);background:var(--surface)}.topbar__title{font-size:var(--fs-18);font-weight:600;letter-spacing:0}.topbar__search{width:320px;height:36px;padding:0 12px 0 36px;border:1px solid var(--border);background:var(--surface-2);border-radius:var(--r-4);font-size:var(--fs-13)}.bottom-nav{height:72px;display:grid;grid-template-columns:repeat(5,1fr);background:var(--surface);border-top:1px solid var(--border);padding-bottom:12px}.bottom-nav__item{display:flex;flex-direction:column;align-items:center;gap:4px;justify-content:center;color:var(--ink-3);font-size:11px;font-weight:500;cursor:pointer;position:relative}.bottom-nav__item.is-active{color:var(--primary)}.bottom-nav__fab{width:48px;height:48px;background:var(--primary);color:#fff;border-radius:var(--r-full);display:flex;align-items:center;justify-content:center;margin-top:-16px;box-shadow:0 6px 14px #1f4d9a59}.app-header{height:56px;background:var(--surface);border-bottom:1px solid var(--divider);display:flex;align-items:center;padding:0 12px;gap:8px}.app-header__title{font-size:var(--fs-17, 17px);font-weight:600;letter-spacing:0;flex:1}.app-header__btn{width:40px;height:40px;border-radius:var(--r-4);display:flex;align-items:center;justify-content:center;color:var(--ink-2);background:transparent;border:0;cursor:pointer}.app-header__btn:hover{background:var(--surface-2)}.statusbar{height:44px;padding:0 22px;display:flex;align-items:center;justify-content:space-between;background:var(--surface);font-size:14px;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}.sheet{background:var(--surface);border-radius:18px 18px 0 0;padding:8px 0 24px}.sheet__handle{width:38px;height:4px;background:var(--border-strong);border-radius:2px;margin:6px auto 12px}.sheet__title{padding:8px 20px 16px;font-size:var(--fs-18);font-weight:600;letter-spacing:0}.chart-bar{background:var(--primary);border-radius:4px 4px 0 0}.chart-bar--alt{background:var(--primary-tint);border-radius:4px 4px 0 0}.empty{padding:40px 24px;text-align:center;color:var(--ink-3)}.empty__title{color:var(--ink);font-weight:600;font-size:var(--fs-15);margin-bottom:4px}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);padding:0 16px;background:var(--surface)}.tab{padding:12px 14px;font-size:var(--fs-14);font-weight:500;color:var(--ink-3);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}.tab.is-active{color:var(--primary);border-color:var(--primary)}.stack{display:flex;flex-direction:column}.cluster{display:flex;align-items:center}.cluster--gap-2{gap:8px}.cluster--gap-3{gap:12px}.cluster--gap-4{gap:16px}.stack--gap-2{gap:8px}.stack--gap-3{gap:12px}.stack--gap-4{gap:16px}.stack--gap-6{gap:24px}.muted{color:var(--ink-3)}.muted-2{color:var(--ink-2)}.strong{font-weight:600}.tight{letter-spacing:0}.divider{height:1px;background:var(--divider)}.screen{width:100%;height:100%;overflow:hidden;background:var(--bg);display:flex;flex-direction:column;font-family:var(--font-sans);color:var(--ink)}.screen__body{flex:1;overflow:hidden}.phone{width:100%;height:100%;display:flex;flex-direction:column;background:var(--bg);font-family:var(--font-sans);color:var(--ink)}.phone__body{flex:1;overflow:hidden;display:flex;flex-direction:column}.login-page{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:var(--s-6);background:var(--bg);font-family:var(--font-sans);color:var(--ink)}.login-card{width:100%;max-width:420px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-8);box-shadow:var(--sh-3);padding:var(--s-10)}.brand{display:flex}.brand--login{justify-content:flex-start}.page-stack{display:flex;flex-direction:column;gap:var(--s-5);width:100%;max-width:1180px;margin-inline:auto;padding:var(--s-6)}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-6);overflow:hidden}.panel__header{display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);padding:var(--s-5) var(--s-6);border-bottom:1px solid var(--border)}.panel__header--wrap{flex-wrap:wrap}.panel__header h2{margin:0;font-size:var(--fs-18);line-height:var(--lh-18);font-weight:600;letter-spacing:-.01em}.panel__header p{margin:4px 0 0;font-size:var(--fs-13);color:var(--ink-3)}.toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:var(--s-3);padding:var(--s-3) var(--s-5)}.table-wrap{width:100%;overflow-x:auto}.detail-layout{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:var(--s-5);align-items:start}.detail-header{display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);flex-wrap:wrap;margin-bottom:var(--s-5)}.state-box{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s-3);padding:var(--s-12) var(--s-6);text-align:center;color:var(--ink-3)}.state-box--danger{color:var(--danger-ink)}.metric__top{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid var(--border);border-radius:var(--r-4);background:var(--surface);color:var(--ink-2);cursor:pointer;transition:background .15s ease,color .15s ease}.icon-btn:hover{background:var(--surface-2);color:var(--ink)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:var(--s-4);background:var(--overlay)}.modal__header{display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);padding:var(--s-5) var(--s-6);border-bottom:1px solid var(--border);font-weight:600}.modal__body{padding:var(--s-6)}.mt-4{margin-top:var(--s-4)}@media (max-width: 900px){.detail-layout{grid-template-columns:1fr}}@media (max-width: 767px){.page-stack{padding:var(--s-4);gap:var(--s-4)}.panel__header{padding:var(--s-4) var(--s-5)}.toolbar{padding:var(--s-3) var(--s-4)}}
