:root{--bg:#0f1720;--surface:#17212b;--surface-2:#1e2b38;--border:#2a3a4a;--text:#e8eef4;--text-muted:#9fb0c0;--primary:#2fbf71;--primary-600:#24a35f;--accent:#f0a202;--danger:#f4676d;--danger-600:#cf3d43;--radius:12px;--font-sans:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--surface-3:#26374a;--surface-hover:#223140;--border-strong:#3a4d61;--primary-soft:rgba(47,191,113,0.14);--accent-soft:rgba(240,162,2,0.16);--danger-soft:rgba(229,72,77,0.16);--info:#64b1f2;--info-soft:rgba(74,163,240,0.16);--success:#2fbf71;--success-soft:rgba(47,191,113,0.14);--warning:#f0a202;--on-primary:#06210f;--on-accent:#2a1e00;--radius-sm:8px;--radius-lg:18px;--radius-pill:999px;--space-1:0.25rem;--space-2:0.5rem;--space-3:0.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-8:3rem;--shadow-sm:0 1px 2px rgba(0,0,0,0.3);--shadow-md:0 4px 16px rgba(0,0,0,0.28);--shadow-lg:0 12px 32px rgba(0,0,0,0.38);--ring:0 0 0 2px var(--bg),0 0 0 4px var(--primary);--sidebar-w:260px;--topbar-h:60px;--font-mono:ui-monospace,"SF Mono","Cascadia Code","Roboto Mono",monospace}*{box-sizing:border-box}body,html{margin:0;padding:0}body{font-family:var(--font-sans);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;min-height:100dvh;-webkit-tap-highlight-color:transparent;text-size-adjust:100%;overscroll-behavior-y:none;overflow-x:hidden}a{color:var(--primary);text-decoration:none}.ui-card__desc a,a:hover,p a{text-decoration:underline}:focus{outline:none}:where(a,button,input,select,textarea,[tabindex]):focus-visible{outline:none;box-shadow:var(--ring);border-radius:var(--radius-sm)}::selection{background:var(--primary-soft)}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.container{width:100%;max-width:1200px;margin-inline:auto;padding-inline:var(--space-4)}@media (min-width:768px){.container{padding-inline:var(--space-6)}}.stack{display:flex;flex-direction:column}.cluster{display:flex;flex-wrap:wrap;align-items:center}.text-muted{color:var(--text-muted)}.text-mono{font-family:var(--font-mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.ui-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);display:flex;flex-direction:column;overflow:hidden}.ui-card--interactive{transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}.ui-card--interactive:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md);transform:translateY(-2px)}.ui-card__header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3);padding:var(--space-5) var(--space-5) 0}.ui-card__title{margin:0;font-size:1rem;font-weight:600;line-height:1.3}.ui-card__desc{margin:var(--space-1) 0 0;font-size:.85rem;color:var(--text-muted)}.ui-card__body{padding:var(--space-4) var(--space-5) var(--space-5);flex:1 1}.ui-card__footer{padding:var(--space-3) var(--space-5);border-top:1px solid var(--border);background:color-mix(in srgb,var(--surface-2) 45%,transparent)}.ui-card__icon{width:38px;height:38px;flex-shrink:0}.ui-btn,.ui-card__icon{display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-sm)}.ui-btn{--btn-bg:var(--surface-2);--btn-fg:var(--text);--btn-border:var(--border);gap:var(--space-2);font-family:inherit;font-size:.9rem;font-weight:600;line-height:1;padding:0 var(--space-4);height:40px;border:1px solid var(--btn-border);background:var(--btn-bg);color:var(--btn-fg);cursor:pointer;text-decoration:none;white-space:nowrap;transition:background .15s ease,border-color .15s ease,opacity .15s ease,transform .05s ease}.ui-btn:hover{text-decoration:none;filter:brightness(1.06)}.ui-btn:active{transform:translateY(1px)}.ui-btn:disabled,.ui-btn[aria-disabled=true]{opacity:.55;cursor:not-allowed;pointer-events:none}.ui-btn--primary{--btn-bg:var(--primary);--btn-fg:var(--on-primary);--btn-border:transparent}.ui-btn--accent{--btn-bg:var(--accent);--btn-fg:var(--on-accent);--btn-border:transparent}.ui-btn--danger{--btn-bg:var(--danger-600);--btn-fg:#fff;--btn-border:transparent}.ui-btn--outline{--btn-bg:transparent;--btn-fg:var(--text);--btn-border:var(--border-strong)}.ui-btn--ghost{--btn-bg:transparent;--btn-fg:var(--text);--btn-border:transparent}.ui-btn--ghost:hover{background:var(--surface-hover);filter:none}.ui-btn--sm{height:32px;font-size:.82rem;padding:0 var(--space-3)}.ui-btn--lg{height:48px;font-size:1rem;padding:0 var(--space-5)}.ui-btn--icon{padding:0;width:40px}.ui-btn--block{width:100%}.ui-badge{--badge-bg:var(--surface-2);--badge-fg:var(--text-muted);display:inline-flex;align-items:center;gap:var(--space-1);padding:.2rem .6rem;font-size:.72rem;font-weight:600;letter-spacing:.02em;border-radius:var(--radius-pill);background:var(--badge-bg);color:var(--badge-fg);line-height:1.4;white-space:nowrap}.ui-badge--primary{--badge-bg:var(--primary-soft);--badge-fg:var(--primary)}.ui-badge--accent{--badge-bg:var(--accent-soft);--badge-fg:var(--accent)}.ui-badge--danger{--badge-bg:var(--danger-soft);--badge-fg:var(--danger)}.ui-badge--info{--badge-bg:var(--info-soft);--badge-fg:var(--info)}.ui-badge--dot:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.ui-avatar{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:var(--surface-3);color:var(--text);font-weight:600;overflow:hidden;flex-shrink:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:1px solid var(--border)}.ui-avatar img{width:100%;height:100%;object-fit:cover}.ui-avatar-group{display:inline-flex;align-items:center}.ui-avatar-group>*+*{margin-left:-10px}.ui-avatar-group .ui-avatar{box-shadow:0 0 0 2px var(--surface)}.dash-grid{display:grid;grid-template-columns:1fr;grid-gap:var(--space-4);gap:var(--space-4)}@media (min-width:640px){.dash-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width:1024px){.dash-grid{grid-template-columns:repeat(6,1fr);gap:var(--space-5)}.col-2{grid-column:span 2}.col-3{grid-column:span 3}.col-4{grid-column:span 4}.col-6{grid-column:span 6}}.count-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:var(--space-2);gap:var(--space-2)}.count-unit{text-align:center;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--space-3) var(--space-1)}.count-unit__num{font-size:clamp(1.5rem,5vw,2rem);font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;line-height:1;color:var(--text)}.count-unit__label{display:block;margin-top:var(--space-1);font-size:.65rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}.meter{height:8px;border-radius:var(--radius-pill);background:var(--surface-2);overflow:hidden}.meter__fill{height:100%;border-radius:inherit;background:var(--primary)}.timeline{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-4)}.timeline__item{display:flex;gap:var(--space-3)}.timeline__item p{margin:0}.stat-row{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);padding:var(--space-2) 0}.stat-row+.stat-row{border-top:1px solid var(--border)}.app-shell{min-height:100dvh}.app-sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar-w);background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;z-index:50;transform:translateX(-100%);transition:transform .22s ease}.app-sidebar[data-open=true]{transform:translateX(0);box-shadow:var(--shadow-lg)}.app-sidebar__brand{display:flex;align-items:center;gap:var(--space-2);height:var(--topbar-h);padding-inline:var(--space-5);font-weight:700;font-size:1.05rem;border-bottom:1px solid var(--border);color:var(--text)}.app-nav{display:flex;flex-direction:column;gap:2px;padding:var(--space-3);overflow-y:auto;flex:1 1}.app-nav__link{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-3);border-radius:var(--radius-sm);color:var(--text-muted);font-weight:500;font-size:.92rem}.app-nav__link:hover{background:var(--surface-hover);color:var(--text);text-decoration:none}.app-nav__link[aria-current=page]{background:var(--primary-soft);color:var(--primary)}.app-nav__link svg{flex-shrink:0}.app-nav__badge{margin-left:auto;min-width:20px;height:20px;padding:0 6px;border-radius:var(--radius-pill);background:var(--danger-600);color:#fff;font-size:.72rem;font-weight:700;display:inline-flex;align-items:center;justify-content:center}.app-sidebar__footer{padding:var(--space-3);border-top:1px solid var(--border)}.app-user{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2);border-radius:var(--radius-sm);width:100%}.app-user__meta{min-width:0;line-height:1.2}.app-user__name{font-size:.9rem;font-weight:600}.app-user__mail,.app-user__name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.app-user__mail{font-size:.75rem;color:var(--text-muted)}.app-topbar{position:-webkit-sticky;position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:var(--space-3);height:calc(var(--topbar-h) + env(safe-area-inset-top));padding-top:env(safe-area-inset-top);padding-inline:max(var(--space-4),env(safe-area-inset-left)) max(var(--space-4),env(safe-area-inset-right));background:color-mix(in srgb,var(--bg) 82%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border)}.app-topbar__title{font-size:1rem;font-weight:600;margin:0}.app-main{padding-block:var(--space-5) var(--space-8);padding-inline:max(0px,env(safe-area-inset-left)) max(0px,env(safe-area-inset-right))}.app-bottomnav{position:fixed;left:0;right:0;bottom:0;z-index:45;display:flex;height:calc(58px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:color-mix(in srgb,var(--surface) 92%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--border)}.app-bottomnav__item{flex:1 1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:44px;padding:6px 2px;border:0;background:none;color:var(--text-muted);font-family:inherit;font-size:.66rem;font-weight:600;cursor:pointer;text-decoration:none}.app-bottomnav__item:hover{text-decoration:none}.app-bottomnav__item[aria-current=page]{color:var(--primary)}.app-bottomnav__item svg{width:22px;height:22px}.app-bottomnav__iconwrap{position:relative;display:inline-flex}.app-bottomnav__dot{position:absolute;top:-2px;right:-4px;width:9px;height:9px;border-radius:50%;background:var(--danger-600);border:2px solid var(--surface)}@media (max-width:1023px){.app-main{padding-bottom:calc(66px + env(safe-area-inset-bottom))}.app-nav__link{min-height:46px;font-size:.98rem}}.app-mapfull{position:relative;width:100%;height:calc(100dvh - var(--topbar-h) - env(safe-area-inset-top) - 58px - env(safe-area-inset-bottom))}@media (min-width:1024px){.app-mapfull{height:calc(100dvh - var(--topbar-h))}}.app-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:40;border:0;padding:0;cursor:pointer}@media (min-width:1024px){.app-sidebar{transform:none;box-shadow:none}.app-content{margin-left:var(--sidebar-w)}.app-backdrop,.app-bottomnav,.app-topbar__menu-btn{display:none}}.page-header{margin-bottom:var(--space-5)}.page-header h1{font-size:clamp(1.4rem,3vw,1.9rem);margin:0 0 var(--space-1)}.page-header p{margin:0;color:var(--text-muted)}