@import "https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap";:root{--color-primary:#1e40af;--color-primary-hover:#2547c4;--color-on-primary:#fff;--color-secondary:#3b82f6;--color-accent:#059669;--color-accent-hover:#06a978;--color-background:#0f172a;--color-surface:#16213e;--color-surface-hover:#1c2a4a;--color-foreground:#fff;--color-muted:#94a3b8;--color-subtle:#64748b;--color-border:#ffffff14;--color-border-strong:#ffffff29;--color-destructive:#dc2626;--color-destructive-bg:#dc26261f;--color-ring:#3b82f6;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--font-sans:"Plus Jakarta Sans", system-ui, "Segoe UI", Roboto, sans-serif;--shadow-card:0 4px 6px -2px #0000004d, 0 10px 15px -3px #00000059;font:16px/1.5 var(--font-sans);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:var(--color-foreground);background:var(--color-background);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{background:var(--color-background);min-height:100svh;margin:0}#root{min-height:100svh}h1,h2,h3{font-family:var(--font-sans);color:var(--color-foreground);margin:0;font-weight:700}p{color:var(--color-muted);margin:0}button,input,select{font-family:var(--font-sans)}a{color:var(--color-secondary)}:focus-visible{outline:2px solid var(--color-ring);outline-offset:2px;border-radius:var(--radius-sm)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}#app-shell{flex-direction:column;min-height:100svh;display:flex}.topbar{padding:var(--space-3) var(--space-5);background:var(--color-surface);border-bottom:1px solid var(--color-border);z-index:10;flex-shrink:0;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.brand{align-items:center;gap:var(--space-3);display:flex}.brand-mark{border-radius:var(--radius-md);background:linear-gradient(135deg, var(--color-primary), var(--color-secondary));width:32px;height:32px;color:var(--color-on-primary);justify-content:center;align-items:center;font-size:13px;font-weight:800;display:flex}.brand-name{font-size:16px;font-weight:700}.backend-status{align-items:center;gap:var(--space-2);color:var(--color-subtle);font-size:12px;display:flex}.status-dot{color:var(--color-subtle)}.status-dot.status-up{color:var(--color-accent)}.status-dot.status-down{color:var(--color-destructive)}.app-body{flex:1;min-height:0;display:flex}.app-nav{gap:var(--space-1);width:220px;padding:var(--space-5) var(--space-4);background:var(--color-surface);border-right:1px solid var(--color-border);flex-direction:column;flex-shrink:0;display:flex}.nav-item{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);color:var(--color-muted);cursor:pointer;text-align:left;background:0 0;border:none;min-height:44px;font-size:14px;font-weight:500;transition:background-color .18s,color .18s;display:flex}.nav-item:hover{background:var(--color-surface-hover);color:var(--color-foreground)}.nav-item.active{background:var(--color-primary);color:var(--color-on-primary)}.content{min-width:0;padding:var(--space-6) var(--space-7);flex:1;max-width:1100px}.content h2{margin-bottom:var(--space-5);font-size:22px}.content h3{margin-bottom:var(--space-3);font-size:15px;font-weight:600}.error{color:var(--color-destructive);background:var(--color-destructive-bg);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);margin-bottom:var(--space-4);font-size:14px}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5)}.form-row{gap:var(--space-3);margin-bottom:var(--space-5);flex-wrap:wrap;align-items:flex-end;display:flex}.field{gap:var(--space-1);flex-direction:column;display:flex}.field label{color:var(--color-muted);font-size:12px}input,select{background:var(--color-background);border:1px solid var(--color-border-strong);color:var(--color-foreground);border-radius:var(--radius-sm);min-height:44px;padding:10px 12px;font-size:14px;transition:border-color .15s}input:hover,select:hover{border-color:var(--color-subtle)}input:focus,select:focus{border-color:var(--color-ring)}input::placeholder{color:var(--color-subtle)}.btn{justify-content:center;align-items:center;gap:var(--space-2);background:var(--color-primary);color:var(--color-on-primary);border-radius:var(--radius-sm);cursor:pointer;border:none;min-height:44px;padding:10px 18px;font-size:14px;font-weight:600;transition:background-color .15s,transform .1s;display:inline-flex}.btn:hover{background:var(--color-primary-hover)}.btn:active{transform:scale(.98)}.btn-ghost{border:1px solid var(--color-border-strong);color:var(--color-muted);background:0 0;min-height:36px;padding:6px 14px;font-size:13px}.btn-ghost:hover{background:var(--color-surface-hover);color:var(--color-foreground)}.pill-group{gap:var(--space-1);background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-1);margin-bottom:var(--space-5);display:inline-flex}.pill-group button{color:var(--color-muted);border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:none;min-height:36px;padding:8px 16px;font-size:13px;font-weight:500;transition:background-color .15s,color .15s}.pill-group button:hover{color:var(--color-foreground)}.pill-group button.active{background:var(--color-primary);color:var(--color-on-primary)}.period-nav{justify-content:space-between;align-items:center;gap:var(--space-3);margin-bottom:var(--space-5);flex-wrap:wrap;display:flex}.period-nav .pill-group{margin-bottom:0}.date-nav{align-items:center;gap:var(--space-2);display:flex}.date-nav-arrow{background:var(--color-surface);border:1px solid var(--color-border-strong);color:var(--color-muted);border-radius:var(--radius-sm);cursor:pointer;justify-content:center;align-items:center;width:36px;height:36px;transition:background-color .15s,color .15s;display:flex}.date-nav-arrow:hover{background:var(--color-surface-hover);color:var(--color-foreground)}.date-nav-label{text-align:center;min-width:140px;font-size:14px;font-weight:600}@media (width<=900px){.period-nav{justify-content:center}.date-nav{justify-content:center;width:100%}.date-nav-label{min-width:120px;font-size:13px}}.progress-list{gap:var(--space-4);flex-direction:column;display:flex}.progress-row{gap:var(--space-1);flex-direction:column;display:flex}.progress-label{justify-content:space-between;font-size:13px;display:flex}.progress-name{color:var(--color-foreground);font-weight:500}.progress-value{color:var(--color-muted);font-variant-numeric:tabular-nums}.progress-track{background:var(--color-background);border-radius:999px;height:10px;overflow:hidden}.progress-fill{border-radius:999px;height:100%;transition:width .3s}.fab{display:none}@media (width<=900px){.fab{right:var(--space-4);bottom:calc(80px + env(safe-area-inset-bottom,0px));background:var(--color-primary);width:56px;height:56px;color:var(--color-on-primary);cursor:pointer;z-index:30;border:none;border-radius:50%;justify-content:center;align-items:center;transition:background-color .15s,transform .1s;display:flex;position:fixed;box-shadow:0 8px 20px #0006}.fab:hover{background:var(--color-primary-hover)}.fab:active{transform:scale(.95)}}.form-card-header,.modal-close-mobile,.modal-backdrop-mobile{display:none}@media (width<=900px){.modal-backdrop-mobile{z-index:40;background:#00000080;display:block;position:fixed;inset:0}.form-card{display:none}.form-card.form-open{z-index:50;border-radius:var(--radius-lg) var(--radius-lg) 0 0;max-height:80vh;padding-bottom:calc(var(--space-5) + env(safe-area-inset-bottom,0px));animation:.22s slide-up;display:block;position:fixed;bottom:0;left:0;right:0;overflow-y:auto}.form-card.form-open .form-card-header{margin-bottom:var(--space-4);justify-content:space-between;align-items:center;display:flex}.form-card.form-open .form-card-header h3{margin:0}.form-card.form-open .modal-close-mobile{color:var(--color-muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.form-card.form-open .form-row{flex-direction:column;align-items:stretch}.form-card.form-open .field{width:100%}}@media (prefers-reduced-motion:no-preference){@keyframes slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}}.stat-row{gap:var(--space-4);margin-bottom:var(--space-5);grid-template-columns:repeat(auto-fit,minmax(180px,1fr));display:grid}.stat-tile{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-5)}.stat-tile .label{color:var(--color-muted);margin-bottom:var(--space-1);font-size:12px}.stat-tile .value{font-variant-numeric:tabular-nums;font-size:26px;font-weight:700}.stat-tile .sub{color:var(--color-subtle);margin-top:var(--space-1);font-size:12px}.item-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.item-list li{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1px solid var(--color-border);font-size:14px;display:flex}.item-list li:last-child{border-bottom:none}.item-list .item-main{flex-direction:column;gap:2px;display:flex}.item-list .item-title{color:var(--color-foreground);font-weight:500}.item-list .item-meta{color:var(--color-subtle);font-size:12px}.item-list .item-value{font-variant-numeric:tabular-nums;font-weight:600}.item-list li.inactive{opacity:.5}.dashboard-charts{gap:var(--space-4);margin-bottom:var(--space-5);grid-template-columns:1fr 1fr;display:grid}@media (width<=900px){.dashboard-charts{grid-template-columns:1fr}.content{padding:var(--space-4);padding-bottom:calc(72px + env(safe-area-inset-bottom,0px));max-width:100%}.topbar{padding:var(--space-3) var(--space-4)}.backend-status .status-label{display:none}.app-body{flex-direction:column}.app-nav{width:100%;padding:var(--space-1) var(--space-1);padding-bottom:calc(var(--space-1) + env(safe-area-inset-bottom,0px));border-right:none;border-top:1px solid var(--color-border);z-index:20;flex-direction:row;justify-content:space-around;align-items:stretch;gap:0;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -4px 12px #00000040}.nav-item{padding:var(--space-2) var(--space-1);border-radius:var(--radius-sm);text-align:center;flex-direction:column;flex:1;justify-content:center;gap:2px;min-height:52px;font-size:11px}}.empty-state{color:var(--color-subtle);padding:var(--space-4) 0;font-size:13px}.section{margin-bottom:var(--space-6)}.module-toggle-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.module-toggle-row{align-items:center;gap:var(--space-3);font-size:14px;display:flex}.switch{flex-shrink:0;width:40px;height:22px;position:relative}.switch input{opacity:0;width:0;height:0}.switch .track{background:var(--color-border-strong);cursor:pointer;border-radius:999px;transition:background-color .15s;position:absolute;inset:0}.switch .track:before{content:"";background:var(--color-foreground);border-radius:50%;width:16px;height:16px;transition:transform .15s;position:absolute;top:3px;left:3px}.switch input:checked+.track{background:var(--color-accent)}.switch input:checked+.track:before{transform:translate(18px)}
