@import url("https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;700&family=Plus+Jakarta+Sans:wght@400;600;700&display=swap");:root{--bg:#061a2f;--bg-secondary:#0e2e4d;--panel:rgba(9,33,56,.78);--panel-border:rgba(124,195,255,.24);--text:#e6f3ff;--muted:#a8c4dd;--accent:#2dd4bf;--accent-soft:#7dd3fc;--shadow:0 18px 40px rgba(2,6,23,.5)}*{box-sizing:border-box}body,html{margin:0;min-height:100%}body{font-family:Plus Jakarta Sans,sans-serif;color:var(--text);background:radial-gradient(circle at 15% 20%,#13406a 0,var(--bg) 40%,#030a14 100%);overflow-x:hidden}.app-frame,body{min-height:100vh}.menu-toggle{position:fixed;left:1rem;top:1rem;z-index:40;width:44px;height:44px;border-radius:12px;border:1px solid rgba(124,195,255,.35);background:rgba(9,33,56,.9);display:inline-flex;flex-direction:column;justify-content:center;align-items:center;gap:4px;cursor:pointer}.menu-toggle span{width:18px;height:2px;border-radius:2px;background:#d7ebff;transition:transform .22s ease,opacity .22s ease}.menu-toggle.open span:first-child{transform:translateY(6px) rotate(45deg)}.menu-toggle.open span:nth-child(2){opacity:0}.menu-toggle.open span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}.side-menu{position:fixed;left:.75rem;top:4.2rem;z-index:35;width:min(250px,calc(100vw - 1.5rem));padding:.8rem;background:var(--panel);border:1px solid var(--panel-border);border-radius:18px;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px);will-change:transform,opacity;transition:transform .16s cubic-bezier(.22,.61,.36,1),opacity .12s linear}.side-menu,.side-menu.open{opacity:1;pointer-events:auto;transform:translateZ(0)}.side-menu.closed{opacity:0;pointer-events:none;transform:translate3d(calc(-100% - 1rem),0,0)}.side-menu-title{margin:0 0 .55rem;font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;color:#9ec7ea}.side-menu-head{display:flex;align-items:center;justify-content:space-between;gap:.4rem;margin-bottom:.35rem}.side-menu-head .side-menu-title{margin:0}.side-menu-links{display:grid;grid-gap:.45rem;gap:.45rem}.side-menu-links a{display:block;text-decoration:none;color:#e8f4ff;border:1px solid rgba(124,195,255,.2);border-radius:10px;padding:.55rem .65rem;background:rgba(10,38,63,.75)}.side-menu-links a.active{border-color:rgba(45,212,191,.8);background:rgba(18,74,82,.45)}.background-glow,.background-grid{position:fixed;inset:0;pointer-events:none}.background-glow{background:radial-gradient(circle at 82% 8%,rgba(45,212,191,.2),transparent 28%),radial-gradient(circle at 8% 75%,rgba(59,130,246,.25),transparent 38%)}.background-grid{background-image:linear-gradient(rgba(135,206,250,.08) 1px,transparent 0),linear-gradient(90deg,rgba(135,206,250,.08) 1px,transparent 0);background-size:28px 28px;-webkit-mask-image:radial-gradient(circle at 50% 20%,#000 20%,transparent 90%);mask-image:radial-gradient(circle at 50% 20%,#000 20%,transparent 90%)}.dashboard-shell{width:min(1320px,94vw);margin:2.2rem auto 3rem;position:relative;z-index:1}.panel{background:var(--panel);border:1px solid var(--panel-border);border-radius:18px;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px);animation:rise-in .7s cubic-bezier(.16,1,.3,1) both}.loading{padding:1.2rem}.import-header{padding:1.35rem}.import-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:.65rem;margin-top:1rem}.import-toolbar .upload-button{min-width:260px}.import-error{margin:.55rem 0 0;color:#fca5a5;font-size:.86rem}.import-meta{margin:.55rem 0 0;color:#c5def5;font-size:.85rem}.import-link-row{margin:.65rem 0 0}.import-link-row a{color:#93c5fd}.dashboard-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1.2rem;padding:1.5rem 1.6rem}.eyebrow{margin:0 0 .45rem;text-transform:uppercase;font-size:.75rem;letter-spacing:.18em;color:var(--accent-soft)}h1{margin:0;font-family:Space Grotesk,sans-serif;font-size:clamp(1.5rem,3vw,2.4rem)}.subtitle{margin:.55rem 0 0;color:var(--muted);max-width:65ch}.filter-group{display:grid;grid-gap:.4rem;gap:.4rem;grid-template-rows:auto 44px;min-width:190px}.header-controls{display:flex;flex-direction:column;align-items:flex-end;gap:.7rem;align-self:stretch}.header-secondary-controls{display:flex;align-items:flex-end;gap:.8rem;justify-content:flex-end}.filter-group label{color:#eaf5ff;font-size:.82rem}.select-shell{position:relative;display:flex;align-items:center;height:44px;background:linear-gradient(145deg,rgba(13,53,86,.9),rgba(8,33,57,.95));border:1px solid rgba(125,211,252,.45);border-radius:12px;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.08),0 8px 18px rgba(3,11,24,.35);transition:border-color .2s ease,box-shadow .2s ease}.select-shell:focus-within{border-color:rgba(45,212,191,.8);box-shadow:inset 0 1px 0 hsla(0,0%,100%,.1),0 0 0 3px rgba(45,212,191,.18)}select{width:100%;height:100%;padding:0 2rem 0 .72rem;border:0;outline:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;color:var(--text);font:inherit}.date-filter-group select,.date-filter-group select option{font-size:1rem}.select-caret{position:absolute;right:.68rem;top:50%;transform:translateY(-52%);color:var(--accent-soft);pointer-events:none}.upload-button{min-width:170px;height:46px;display:inline-flex;justify-content:center;align-items:center;gap:.45rem;color:#fff;background:linear-gradient(135deg,#f59e0b,#f97316 58%,#ea580c);border:1px solid hsla(32,98%,83%,.95);border-radius:12px;padding:0 .7rem;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.34),0 12px 26px rgba(249,115,22,.5),0 0 0 1px rgba(245,158,11,.28);cursor:pointer;transition:border-color .2s ease,transform .2s ease,box-shadow .2s ease,filter .2s ease}.upload-button:hover{border-color:#ffedd5;transform:translateY(-1px) scale(1.01);box-shadow:inset 0 1px 0 hsla(0,0%,100%,.36),0 15px 30px rgba(249,115,22,.58),0 0 0 4px rgba(251,146,60,.24);filter:saturate(1.15) brightness(1.05)}.upload-button:focus-visible{outline:0;border-color:#fff7ed;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.36),0 0 0 4px hsla(31,97%,72%,.34),0 14px 28px rgba(249,115,22,.52)}.upload-button-icon{display:inline-flex;align-items:center;justify-content:center;width:1.2rem;height:1.2rem;border-radius:999px;background:hsla(0,0%,100%,.35);color:#9a3412;font-size:1.05rem;font-weight:700;line-height:1;padding-bottom:1px}.upload-button-text{font-size:.79rem;letter-spacing:.08em;text-transform:uppercase;font-weight:800;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.32)}.upload-label{color:#fff;font-weight:700}.upload-group{width:min(340px,100%)}.upload-group .upload-button{width:100%}.upload-label-row{display:flex;align-items:center;justify-content:space-between;gap:.6rem}.csv-help-button{width:1.6rem;height:1.6rem;border-radius:999px;border:1px solid rgba(125,211,252,.65);background:rgba(12,47,77,.9);color:#eaf5ff;font:inherit;font-weight:700;line-height:1;cursor:pointer;transition:border-color .2s ease,background .2s ease,transform .2s ease}.csv-help-button:hover{border-color:#7dd3fc;background:rgba(22,64,103,.95);transform:translateY(-1px)}.csv-help-button:focus-visible{outline:0;box-shadow:0 0 0 3px rgba(125,211,252,.28)}.file-input{display:none}.upload-status{margin:.65rem 0 0;color:var(--accent);font-size:.85rem}.zoom-reset-button{min-width:170px;height:42px;display:inline-flex;align-items:center;justify-content:center;grid-row:3;border-radius:12px;border:1px solid rgba(147,197,253,.45);background:rgba(12,47,77,.86);color:#eaf5ff;font:inherit;font-size:.82rem;letter-spacing:.06em;text-transform:uppercase;font-weight:700;cursor:pointer;transition:border-color .2s ease,transform .2s ease,background .2s ease}.zoom-reset-button:hover:not(:disabled){border-color:rgba(125,211,252,.9);background:rgba(22,64,103,.95);transform:translateY(-1px)}.zoom-reset-button:disabled{opacity:.45;cursor:not-allowed}.clear-import-button{padding-inline:1rem;min-width:220px;white-space:nowrap}.zoom-reset-group{display:flex;align-items:flex-end;min-width:170px}.date-filter-group{grid-template-rows:auto auto auto;width:min(520px,100%);min-width:0;max-width:100%}.date-filter-detail{min-height:42px;display:flex;align-items:center}.date-input-row{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;grid-gap:.45rem;gap:.45rem;width:100%}.date-input-row span{color:#9fc3e2;font-size:.78rem;text-transform:uppercase;letter-spacing:.08em}.date-input-row input[type=date]{height:42px;border-radius:10px;border:1px solid rgba(125,211,252,.35);background:rgba(10,38,63,.86);color:#f0f8ff;font:inherit;padding:0 .55rem}.date-range-preview{margin:0;height:42px;display:flex;align-items:center;width:100%;color:#b8d9f4;font-size:.82rem}@media (min-width:1001px){.header-controls{width:min(100%,760px);min-width:0;flex:1 1 560px}.header-secondary-controls{display:grid;grid-template-columns:minmax(0,1fr) auto;width:100%;align-items:end}.date-filter-group{width:100%;min-width:0;max-width:520px}.zoom-reset-group{justify-content:flex-end}.date-input-row{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)}.zoom-reset-button{width:170px}}.csv-modal-backdrop{position:fixed;inset:0;z-index:20;background:rgba(2,8,18,.72);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:grid;place-items:center;padding:1rem}.csv-modal{width:min(700px,95vw);padding:1.15rem;border-radius:16px}.csv-modal-header{display:flex;align-items:center;justify-content:space-between;gap:.8rem;margin-bottom:.6rem}.csv-modal-header h2{margin:0;font-family:Space Grotesk,sans-serif;font-size:1.2rem}.csv-modal-actions{display:flex;align-items:center;gap:.55rem}.csv-copy-button{border:1px solid hsla(32,91%,75%,.8);background:rgba(249,115,22,.2);color:#ffedd5;font:inherit;border-radius:10px;height:36px;padding:0 .75rem;cursor:pointer}.csv-copy-button:hover{border-color:#fed7aa;background:rgba(249,115,22,.3)}.csv-modal-close{border:1px solid rgba(125,211,252,.55);background:rgba(12,47,77,.86);color:#eaf5ff;font:inherit;border-radius:10px;height:36px;padding:0 .75rem;cursor:pointer}.csv-modal-close:hover{border-color:rgba(125,211,252,.95)}.csv-guide-figure{margin:.7rem 0;display:flex;justify-content:center}.csv-guide-figure img{width:min(100%,640px);display:block;border-radius:12px;border:1px solid rgba(125,211,252,.3)}.csv-modal h3{margin:.8rem 0 .35rem;font-size:.95rem}.csv-columns{margin:0;padding:.72rem .78rem;background:rgba(9,33,56,.78);border-radius:10px;border:1px solid rgba(125,211,252,.25);color:#dbeafe;font-size:.82rem;line-height:1.45}.copy-status{margin:.2rem 0 .4rem;color:#fcd34d;font-size:.82rem;font-weight:700}.csv-example-preview{margin:.35rem 0 0;padding:.7rem;border-radius:10px;border:1px solid rgba(125,211,252,.25);background:rgba(9,33,56,.82);color:#e6f3ff;font-size:.76rem;line-height:1.4;overflow-x:auto}.kpi-grid{margin-top:1rem;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));grid-gap:.9rem;gap:.9rem}.kpi-card{padding:1rem;transition:transform .22s ease,border-color .22s ease}.kpi-card:hover{transform:translateY(-4px);border-color:rgba(45,212,191,.6)}.kpi-card h2{margin:0;color:var(--muted);font-size:.85rem;font-weight:600}.kpi-value{margin:.45rem 0 0;font-family:Space Grotesk,sans-serif;font-size:clamp(1.2rem,2vw,1.7rem);font-weight:700}.chart-grid{margin-top:1rem;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:.95rem;gap:.95rem}.chart-card{padding:1rem 1rem .8rem;min-height:330px}.chart-header h3{margin:0;font-size:1rem}.chart-header p{margin:.25rem 0 .8rem;color:var(--muted);font-size:.84rem}.chart-wrap{height:255px}.table-card{margin-top:.95rem;padding:1rem}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}td,th{text-align:left;padding:.55rem .5rem;border-bottom:1px solid rgba(147,197,253,.15);white-space:nowrap}th{color:var(--muted);font-size:.8rem;font-weight:600}tbody tr{transition:background .18s ease}tbody tr:hover{background:rgba(45,212,191,.12)}@keyframes rise-in{0%{opacity:0;transform:translateY(10px) scale(.994)}to{opacity:1;transform:translateY(0) scale(1)}}@media (max-width:1150px){.kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.chart-grid{grid-template-columns:1fr}}@media (max-width:1000px){.dashboard-shell{width:calc(100vw - 1rem);margin:1rem auto 2rem}.panel{border-radius:14px}.dashboard-header,.import-header{padding:1rem}.dashboard-header>div{min-width:0}.dashboard-header{flex-direction:column;align-items:flex-start}.header-controls{align-self:auto}.header-controls,.header-secondary-controls{width:100%;flex-direction:column;align-items:stretch}.header-secondary-controls{gap:.7rem}.date-filter-group,.header-controls .filter-group,.header-secondary-controls .filter-group{width:100%;min-width:0;max-width:none}.header-controls .upload-button,.header-controls .upload-group,.header-secondary-controls .select-shell,.header-secondary-controls .zoom-reset-button,.header-secondary-controls .zoom-reset-group{width:100%}.import-toolbar .upload-button,.upload-button,.zoom-reset-button{min-width:0}.date-range-preview{overflow-wrap:anywhere}.date-input-row input[type=date]{min-width:0;width:100%}.date-input-row{grid-template-columns:1fr;gap:.35rem}.date-input-row span{text-align:center;font-size:.78rem}.zoom-reset-group{justify-content:stretch;min-width:0}.zoom-reset-button{width:100%;min-width:0}.dashboard-shell .kpi-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:.7rem;gap:.7rem}.dashboard-shell .kpi-grid>.kpi-card{min-width:0}.date-filter-group .date-filter-detail,.date-filter-group .date-input-row,.date-filter-group .select-shell{width:100%;min-width:0}}@media (max-width:520px){.date-filter-detail{min-height:auto}.csv-modal{width:calc(100vw - .9rem);padding:.9rem}.csv-modal-header{flex-direction:column;align-items:flex-start}.csv-modal-actions{width:100%;justify-content:flex-start;flex-wrap:wrap}.csv-copy-button,.csv-modal-close{width:100%}.dashboard-shell .kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem}.kpi-card{padding:.82rem}.kpi-card h2{font-size:.78rem}.kpi-value{font-size:clamp(1.02rem,4.6vw,1.28rem)}}