*{box-sizing:border-box}:root{--page-bg:#edf4f6;--text-main:#0f172a;--text-muted:#64748b;--text-soft:#8aa0b5;--glass-surface:hsla(0,0%,100%,.68);--glass-surface-strong:hsla(0,0%,100%,.82);--glass-dark:rgba(15,23,42,.76);--glass-border:hsla(0,0%,100%,.78);--line-soft:rgba(148,163,184,.3);--shadow-soft:0 18px 48px rgba(15,23,42,.09);--shadow-lift:0 26px 70px rgba(15,23,42,.14);--teal:#0f766e;--blue:#2563eb;--amber:#d97706;--rose:#be123c}body,html{padding:0;margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:linear-gradient(135deg,rgba(37,99,235,.12) 0,transparent 32%),linear-gradient(225deg,rgba(15,118,110,.14) 0,transparent 34%),linear-gradient(180deg,#f8fbfb 0,var(--page-bg) 52%,#f7f3ec 100%);color:var(--text-main)}a{color:inherit;text-decoration:none}button,input,select{font:inherit}.page-shell{min-height:100vh}.chart-card,.dashboard-empty-state,.dashboard-filter-item input,.dashboard-filter-item select,.dashboard-filterbar,.dashboard-selector-input,.form-input,.kpi-card,.login-card,.map-canvas,.map-point-row{backdrop-filter:blur(22px) saturate(1.45);-webkit-backdrop-filter:blur(22px) saturate(1.45)}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:linear-gradient(135deg,rgba(37,99,235,.18),transparent 36%),linear-gradient(225deg,rgba(15,118,110,.18),transparent 40%),linear-gradient(180deg,#f9fbff,#edf4f6)}.login-card{width:100%;max-width:430px;background:var(--glass-surface-strong);border-radius:22px;padding:32px;box-shadow:var(--shadow-soft),inset 0 1px 0 hsla(0,0%,100%,.8);border:1px solid var(--glass-border)}.login-title{margin:0 0 10px;font-size:30px}.login-subtitle{margin:0 0 24px;color:var(--text-muted)}.form-group{margin-bottom:16px}.form-label{display:block;margin-bottom:8px;font-weight:600}.form-input{width:100%;padding:13px 14px;border-radius:14px;border:1px solid rgba(148,163,184,.36);background:hsla(0,0%,100%,.72)}.form-input:focus{outline:none;border-color:rgba(15,118,110,.55);box-shadow:0 0 0 4px rgba(15,118,110,.12),inset 0 1px 0 hsla(0,0%,100%,.7)}.error-text{color:#dc2626;margin-bottom:16px}.primary-btn{width:100%;padding:13px 16px;border-radius:14px;border:none;background:linear-gradient(135deg,#0f766e,#2563eb);color:#fff;font-weight:700;cursor:pointer;box-shadow:0 14px 30px rgba(15,118,110,.22)}.primary-btn:disabled{opacity:.7;cursor:not-allowed}.dashboard-layout{min-height:100vh;display:flex;background:linear-gradient(115deg,rgba(37,99,235,.12),transparent 35%),linear-gradient(245deg,rgba(217,119,6,.12),transparent 34%),linear-gradient(180deg,rgba(248,251,252,.95),rgba(237,244,246,.95))}.sidebar{width:270px;background:linear-gradient(180deg,rgba(15,23,42,.9),rgba(15,23,42,.7));color:#fff;padding:28px 20px;display:flex;flex-direction:column;gap:24px;box-shadow:14px 0 42px rgba(15,23,42,.12);border-right:1px solid hsla(0,0%,100%,.14);backdrop-filter:blur(28px) saturate(1.35);-webkit-backdrop-filter:blur(28px) saturate(1.35)}.sidebar-brand{font-size:28px;font-weight:800;letter-spacing:.04em;text-shadow:0 1px 18px hsla(0,0%,100%,.2)}.sidebar-nav{display:flex;flex-direction:column;gap:10px}.sidebar-link{padding:12px 14px;border-radius:14px;color:#cbd5e1;border:1px solid transparent;transition:background .16s ease,color .16s ease,transform .16s ease,border-color .16s ease}.sidebar-link:hover{background:hsla(0,0%,100%,.12);border-color:hsla(0,0%,100%,.18);color:#fff;transform:translateX(2px)}.dashboard-main{flex:1;width:100%;max-width:1540px;margin:0 auto;padding:32px}.dashboard-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:28px;padding:20px;border:1px solid hsla(0,0%,100%,.68);border-radius:22px;background:hsla(0,0%,100%,.46);box-shadow:0 16px 44px rgba(15,23,42,.06),inset 0 1px 0 hsla(0,0%,100%,.82);backdrop-filter:blur(24px) saturate(1.35);-webkit-backdrop-filter:blur(24px) saturate(1.35)}.dashboard-title{margin:0;font-size:34px;letter-spacing:0}.dashboard-subtitle{margin:8px 0 0;color:var(--text-muted)}.dashboard-actions{display:flex;gap:12px;flex-wrap:wrap}.logout-btn{border:none;border-radius:14px;background:rgba(15,23,42,.78);color:#fff;padding:12px 16px;cursor:pointer;font-weight:700;transition:transform .16s ease,box-shadow .16s ease;box-shadow:0 12px 28px rgba(15,23,42,.16)}.logout-btn:hover{box-shadow:0 10px 22px rgba(17,24,39,.16);transform:translateY(-1px)}.dashboard-selector{display:flex;flex-direction:column;gap:6px;min-width:220px}.dashboard-selector-label{font-size:12px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.dashboard-selector-input{padding:12px 14px;border:1px solid rgba(148,163,184,.34);border-radius:14px;background:hsla(0,0%,100%,.66);color:var(--text-main);min-width:220px;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.78)}.dashboard-filterbar{margin-bottom:24px;padding:20px;background:var(--glass-surface);border:1px solid var(--glass-border);border-radius:22px;box-shadow:var(--shadow-soft),inset 0 1px 0 hsla(0,0%,100%,.78);position:relative;overflow:hidden}.dashboard-filterbar-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px}.dashboard-filterbar-title{margin:0;font-size:18px;font-weight:800}.dashboard-filterbar-subtitle{margin:6px 0 0;color:var(--text-muted);font-size:14px}.dashboard-filter-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px}.dashboard-filter-item{display:flex;flex-direction:column;gap:6px;min-width:0}.dashboard-filter-item-wide{grid-column:span 2}.dashboard-filter-item label{font-size:12px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em}.dashboard-filter-item input,.dashboard-filter-item select{padding:12px 14px;border:1px solid rgba(148,163,184,.34);border-radius:14px;background:hsla(0,0%,100%,.62);color:var(--text-main);min-height:44px;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.72)}.dashboard-filter-item input:focus,.dashboard-filter-item select:focus{outline:none;border-color:rgba(15,118,110,.56);box-shadow:0 0 0 4px rgba(15,118,110,.13),inset 0 1px 0 hsla(0,0%,100%,.78)}.dashboard-date-range-controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.dashboard-date-range-controls input,.dashboard-date-range-controls select{min-width:0;width:100%}.dashboard-filter-reset{border:none;border-radius:14px;background:linear-gradient(135deg,rgba(15,23,42,.88),rgba(37,99,235,.82));color:#fff;padding:12px 16px;cursor:pointer;font-weight:700;white-space:nowrap;box-shadow:0 14px 28px rgba(15,23,42,.18)}.dashboard-filter-reset:disabled{opacity:.5;cursor:not-allowed}.dashboard-filterbar-active{margin-top:14px;padding:10px 12px;border-radius:14px;background:rgba(236,254,255,.62);color:var(--teal);font-size:13px;font-weight:600;border:1px solid rgba(15,118,110,.16)}.dashboard-editable{display:block}.dashboard-editbar{display:flex;justify-content:center;align-items:center;position:fixed;right:18px;top:50%;z-index:20;gap:8px;width:auto;margin:0;padding:8px;border:1px solid var(--glass-border);border-radius:999px;background:hsla(0,0%,100%,.66);box-shadow:var(--shadow-soft),inset 0 1px 0 hsla(0,0%,100%,.82);transform:translateY(-50%);backdrop-filter:blur(22px) saturate(1.35);-webkit-backdrop-filter:blur(22px) saturate(1.35)}.dashboard-editbar-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:center}.dashboard-edit-btn{border:none;border-radius:999px;padding:9px 12px;background:linear-gradient(135deg,rgba(15,118,110,.95),rgba(37,99,235,.9));color:#fff;cursor:pointer;font-weight:800;font-size:12px;box-shadow:0 14px 28px rgba(15,118,110,.18);transition:transform .16s ease,box-shadow .16s ease,filter .16s ease;white-space:nowrap;writing-mode:vertical-rl;text-orientation:mixed}.dashboard-edit-btn:hover{filter:saturate(1.08);box-shadow:0 18px 36px rgba(15,118,110,.22);transform:translateY(-1px)}.dashboard-edit-btn.is-muted{background:rgba(15,23,42,.68);box-shadow:0 14px 28px rgba(15,23,42,.14)}.dashboard-editable.is-editing .dashboard-editbar{border-radius:18px}.dashboard-editable.is-editing .dashboard-editbar-actions{flex-direction:column}.dashboard-editable.is-editing .dashboard-edit-btn{writing-mode:horizontal-tb}.dashboard-widget-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;align-items:stretch}.dashboard-widget{min-width:0;position:relative}.dashboard-widget,.dashboard-widget-compact{grid-column:span 1}.dashboard-widget-standard{grid-column:span 2}.dashboard-widget-large{grid-column:span 3}.dashboard-widget-full{grid-column:1/-1}.dashboard-widget>.chart-card,.dashboard-widget>.kpi-card{height:100%}.dashboard-widget.is-editable{padding-top:48px;cursor:grab}.dashboard-widget.is-editable:active{cursor:grabbing}.dashboard-widget.is-editable>.chart-card,.dashboard-widget.is-editable>.kpi-card{outline:1px dashed rgba(15,118,110,.38);outline-offset:4px}.dashboard-widget-controls{position:absolute;top:0;left:0;right:0;z-index:2;display:flex;justify-content:space-between;align-items:center;gap:10px;min-height:36px;padding:6px 8px;border:1px solid hsla(0,0%,100%,.76);border-radius:16px;background:hsla(0,0%,100%,.64);box-shadow:0 10px 24px rgba(15,23,42,.08),inset 0 1px 0 hsla(0,0%,100%,.82);backdrop-filter:blur(18px) saturate(1.35);-webkit-backdrop-filter:blur(18px) saturate(1.35)}.dashboard-widget-drag{color:var(--text-muted);font-size:12px;font-weight:800;white-space:nowrap}.dashboard-widget-sizes{display:inline-flex;gap:4px;padding:3px;border-radius:12px;background:rgba(15,23,42,.06)}.dashboard-widget-sizes button{width:28px;height:26px;border:none;border-radius:9px;background:transparent;color:var(--text-muted);cursor:pointer;font-size:11px;font-weight:900}.dashboard-widget-sizes button.is-active{background:hsla(0,0%,100%,.88);color:var(--teal);box-shadow:0 6px 14px rgba(15,23,42,.1)}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px;margin-bottom:36px}.section-block{margin-bottom:36px;scroll-margin-top:24px}.section-head{display:flex;justify-content:space-between;align-items:end;gap:16px;margin-bottom:16px}.section-title{margin:0;font-size:24px}.section-text{margin:6px 0 0;color:var(--text-muted)}.section-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px}.kpi-card{background:linear-gradient(180deg,hsla(0,0%,100%,.82),hsla(0,0%,100%,.56));border-radius:20px;padding:22px;box-shadow:var(--shadow-soft),inset 0 1px 0 hsla(0,0%,100%,.86);border:1px solid var(--glass-border);min-height:132px;display:flex;flex-direction:column;justify-content:center;position:relative;overflow:hidden;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease,background .16s ease}.chart-card:before,.dashboard-empty-state:before,.dashboard-filterbar:before,.kpi-card:before{content:"";position:absolute;inset:0;pointer-events:none;border-radius:inherit;background:linear-gradient(135deg,hsla(0,0%,100%,.74),transparent 38%);opacity:.58}.kpi-card:hover{border-color:hsla(0,0%,100%,.92);box-shadow:var(--shadow-lift);transform:translateY(-2px);background:linear-gradient(180deg,hsla(0,0%,100%,.9),hsla(0,0%,100%,.64))}.kpi-title{font-size:14px;color:var(--text-muted);margin-bottom:6px}.kpi-description{color:var(--text-soft);font-size:12px;line-height:1.35;margin-bottom:10px}.kpi-value{font-size:32px;font-weight:800;margin-bottom:8px;line-height:1.1}.kpi-subtitle,.kpi-value.is-empty{color:var(--text-soft)}.kpi-subtitle{font-size:13px}.chart-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(420px,1fr));gap:16px;margin-top:16px}.chart-grid-top{margin-bottom:36px}.chart-card{background:linear-gradient(180deg,hsla(0,0%,100%,.82),hsla(0,0%,100%,.58));border-radius:20px;padding:22px;box-shadow:var(--shadow-soft),inset 0 1px 0 hsla(0,0%,100%,.86);border:1px solid var(--glass-border);min-height:380px;position:relative;overflow:hidden;transition:box-shadow .16s ease,border-color .16s ease,transform .16s ease}.chart-card:hover{border-color:hsla(0,0%,100%,.92);box-shadow:var(--shadow-lift);transform:translateY(-1px)}.chart-title{font-size:16px;font-weight:700;margin-bottom:6px}.chart-description{color:var(--text-muted);font-size:13px;line-height:1.4;margin-bottom:16px}.chart-empty{min-height:240px;display:flex;flex-direction:column;justify-content:center;color:var(--text-soft)}.chart-empty-title{font-size:16px;font-weight:700;color:var(--text-muted);margin-bottom:6px}.chart-empty-text{font-size:14px;line-height:1.5}.chart-recharts-wrapper{width:100%;height:320px}.map-view{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(260px,.8fr);gap:16px;align-items:stretch}.map-canvas{position:relative;min-height:330px;overflow:hidden;border:1px solid hsla(0,0%,100%,.78);border-radius:18px;background:linear-gradient(90deg,rgba(15,118,110,.08) 1px,transparent 0),linear-gradient(0deg,rgba(37,99,235,.07) 1px,transparent 0),linear-gradient(135deg,rgba(37,99,235,.12),rgba(15,118,110,.1),rgba(217,119,6,.08)),hsla(0,0%,100%,.42);background-size:42px 42px,42px 42px,auto,auto;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.82),0 16px 36px rgba(15,23,42,.08)}.map-pin{position:absolute;width:34px;height:34px;display:grid;place-items:center;border:3px solid #fff;border-radius:999px;background:#0f766e;color:#fff;font-size:12px;font-weight:800;box-shadow:0 12px 24px rgba(15,23,42,.24),inset 0 1px 0 hsla(0,0%,100%,.34);transform:translate(-50%,-50%)}.map-pin:hover{filter:saturate(1.25) brightness(.96)}.map-canvas-empty{height:100%;min-height:330px;display:grid;place-items:center;padding:24px;color:#64748b;text-align:center;line-height:1.5}.map-point-list{max-height:330px;overflow:auto;display:flex;flex-direction:column;gap:10px;padding-right:4px}.map-point-row{display:flex;justify-content:space-between;gap:12px;padding:12px;border:1px solid hsla(0,0%,100%,.78);border-left:5px solid #0f766e;border-radius:16px;background:hsla(0,0%,100%,.62);box-shadow:0 10px 24px rgba(15,23,42,.045)}.map-point-row:hover{border-color:hsla(0,0%,100%,.95);background:hsla(0,0%,100%,.84)}.map-point-row span{min-width:0}.map-point-row small,.map-point-row strong{display:block}.map-point-row strong{margin-bottom:4px;font-size:13px}.map-point-type{display:inline-flex;max-width:100%;margin:0 0 6px;padding:4px 7px;border-radius:999px;color:#fff;font-size:11px;font-weight:800;line-height:1}.map-point-row small{color:var(--text-muted);font-size:12px;line-height:1.35}.map-point-row em{flex:0 0 auto;color:var(--teal);font-size:12px;font-style:normal;font-weight:800;white-space:nowrap}.dashboard-table-wrap{width:100%;max-height:360px;overflow:auto;padding-bottom:2px}.dashboard-table{width:100%;min-width:620px;border-collapse:separate;border-spacing:0 8px}.dashboard-table th{padding:0 12px 6px;color:var(--text-soft);font-size:11px;font-weight:800;letter-spacing:0;text-align:left;text-transform:uppercase;white-space:nowrap}.dashboard-table td{padding:13px 12px;background:hsla(0,0%,100%,.58);border-top:1px solid hsla(0,0%,100%,.76);border-bottom:1px solid hsla(0,0%,100%,.76);color:var(--text-main);font-size:13px;font-weight:650;vertical-align:middle}.dashboard-table td:first-child{border-left:1px solid hsla(0,0%,100%,.76);border-radius:14px 0 0 14px}.dashboard-table td:last-child{border-right:1px solid hsla(0,0%,100%,.76);border-radius:0 14px 14px 0}.dashboard-table tbody tr:hover td{background:hsla(0,0%,100%,.82);box-shadow:0 10px 22px rgba(15,23,42,.045)}.dashboard-table-cell{display:inline-flex;max-width:100%;align-items:center;gap:8px;overflow-wrap:anywhere}.dashboard-table-color{width:9px;height:22px;flex:0 0 auto;border-radius:999px;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.34)}.dashboard-empty-state{position:relative;overflow:hidden;background:var(--glass-surface);border:1px solid var(--glass-border);border-radius:20px;padding:32px;box-shadow:var(--shadow-soft),inset 0 1px 0 hsla(0,0%,100%,.82)}.dashboard-empty-state h2{margin:0 0 10px;font-size:24px}.dashboard-empty-state p{margin:0;color:var(--text-muted);line-height:1.6}.loading-block,.loading-card,.loading-chart{position:relative;overflow:hidden;background:hsla(0,0%,100%,.58);border:1px solid hsla(0,0%,100%,.72);box-shadow:var(--shadow-soft);backdrop-filter:blur(20px) saturate(1.35);-webkit-backdrop-filter:blur(20px) saturate(1.35)}.loading-block:after,.loading-card:after,.loading-chart:after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,hsla(0,0%,100%,0),hsla(0,0%,100%,.55) 50%,hsla(0,0%,100%,0));animation:dashboard-loading 1.4s infinite}.loading-title{width:220px;height:34px;border-radius:12px;margin-bottom:10px}.loading-subtitle{width:160px;height:18px;border-radius:10px}.loading-filterbar{width:100%;height:92px;border-radius:18px}.loading-card{height:132px;border-radius:20px}.loading-chart{height:320px;border-radius:20px}@keyframes dashboard-loading{to{transform:translateX(100%)}}.chart-inner{width:100%;height:250px}.bar-chart{align-items:end;gap:12px;overflow-x:auto;padding-top:8px}.bar-chart,.bar-item{height:100%;display:flex}.bar-item{min-width:56px;flex-direction:column;justify-content:end;align-items:center;gap:8px}.bar-value{font-size:12px;color:#475569}.bar-wrapper{width:100%;height:180px;display:flex;align-items:end;justify-content:center;background:rgba(248,250,252,.68);border-radius:12px;padding:6px}.bar-fill{width:100%;background:linear-gradient(180deg,#14b8a6,#0f766e);border-radius:10px;min-height:6px}.bar-label{font-size:11px;color:var(--text-muted);text-align:center;word-break:break-word}.line-chart-svg{width:100%;height:180px;color:#0f766e;display:block}.line-labels{display:grid;grid-template-columns:repeat(auto-fit,minmax(60px,1fr));gap:8px;margin-top:12px}.line-label{font-size:11px;color:var(--text-muted);text-align:center}.pie-layout{display:flex;gap:20px;align-items:center}.pie-chart-svg{width:180px;height:180px;flex-shrink:0}.pie-legend{display:flex;flex-direction:column;gap:10px;min-width:0}.pie-legend-item{display:flex;align-items:center;gap:8px;font-size:13px}.pie-legend-dot{width:12px;height:12px;border-radius:999px;flex-shrink:0}.pie-legend-label{color:#334155;flex:1}.pie-legend-value{color:var(--text-main);font-weight:700}@media (max-width:1200px){.dashboard-widget-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-widget-full,.dashboard-widget-large{grid-column:1/-1}.kpi-grid,.section-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.chart-grid,.map-view{grid-template-columns:1fr}.dashboard-filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-filter-item-wide{grid-column:span 2}}@media (max-width:900px){.dashboard-layout{flex-direction:column}.sidebar{width:100%}.dashboard-header{flex-direction:column}.dashboard-filterbar-head{flex-direction:column;align-items:stretch}.dashboard-editbar{right:12px}.dashboard-editbar-actions{justify-content:center}}@media (max-width:640px){.dashboard-widget-grid{grid-template-columns:1fr}.dashboard-widget,.dashboard-widget-compact,.dashboard-widget-full,.dashboard-widget-large,.dashboard-widget-standard{grid-column:1/-1}.dashboard-widget-controls{align-items:stretch;flex-direction:column}.dashboard-widget.is-editable{padding-top:88px}.dashboard-widget-sizes{width:100%}.dashboard-widget-sizes button{flex:1}.dashboard-filter-grid,.kpi-grid,.section-grid{grid-template-columns:1fr}.dashboard-filter-item-wide{grid-column:span 1}.dashboard-date-range-controls{grid-template-columns:1fr}.dashboard-main{padding:20px}.pie-layout{flex-direction:column;align-items:flex-start}.pie-chart-svg{width:150px;height:150px}.dashboard-title{font-size:28px}}