:root{--bg: #07100f;--surface: #0c1516;--panel: #111a1f;--panel-soft: rgba(17, 26, 31, .88);--card: rgba(19, 29, 34, .92);--card-hover: rgba(24, 37, 42, .98);--accent: #f3bf4f;--accent-strong: #ffd170;--accent-2: #43d9b8;--accent-3: #ef8066;--accent-4: #91b9ff;--text: #edf6f2;--muted: #9fb5ae;--faint: #6f8580;--border: rgba(169, 194, 184, .18);--border-strong: rgba(243, 191, 79, .36);--danger: #ff8a8a;--shadow: 0 22px 55px rgba(0, 0, 0, .34);--shadow-soft: 0 14px 32px rgba(0, 0, 0, .22)}*{box-sizing:border-box}html{background:var(--bg)}body{margin:0;min-height:100vh;color:var(--text);background:linear-gradient(135deg,#112722db,#07100ff5 44%,#1f140deb),linear-gradient(180deg,#08110f,#0b1110);font-family:Space Grotesk,sans-serif;line-height:1.45}body.stale-data{background:linear-gradient(135deg,#361513e6,#120a0af5,#2b1b0ce0),linear-gradient(180deg,#140b0a,#100d0c)}body.drag-scroll-active,body.drag-scroll-active *{cursor:grabbing;-webkit-user-select:none;user-select:none}body:before,body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none}body:before{background-image:linear-gradient(rgba(237,246,242,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(237,246,242,.035) 1px,transparent 1px);background-size:36px 36px;opacity:.45}body:after{background:linear-gradient(180deg,rgba(243,191,79,.06) 0%,transparent 30%),linear-gradient(90deg,transparent 0%,rgba(67,217,184,.04) 52%,transparent 100%)}.app{position:relative;z-index:1;width:min(100%,1360px);margin:0 auto;padding:28px 40px 56px;display:flex;flex-direction:column;gap:22px}.layout-toolbar{display:flex;justify-content:flex-end;margin-top:-6px}.hero{position:relative;overflow:hidden;display:grid;grid-template-columns:minmax(0,1.35fr) minmax(340px,.65fr);gap:20px;align-items:stretch;padding:24px;border:1px solid var(--border);border-radius:8px;background:linear-gradient(135deg,#1a2a2af5,#0d1619f0 52%,#241b12e6),var(--panel);box-shadow:var(--shadow);animation:fadeUp .55s ease}.hero:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,rgba(243,191,79,.18),transparent 42%),linear-gradient(180deg,rgba(255,255,255,.055),transparent 36%);pointer-events:none}.hero>*{position:relative}.eyebrow{margin:0 0 8px;color:var(--accent-2);font-size:12px;font-weight:600;letter-spacing:.18em;text-transform:uppercase}h1,h2,h3{margin:0;letter-spacing:0}h1{font-size:40px;line-height:1.05}h2{font-size:20px;line-height:1.2}h3{font-size:18px;line-height:1.2}.subhead{margin:10px 0 0;max-width:560px;color:var(--muted);font-size:15px}.hero-stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:22px}.hero-stat{--stat-accent: var(--accent);min-width:0;padding:14px;border:1px solid var(--border);border-top-color:var(--stat-accent);border-radius:8px;background:#08101185;box-shadow:inset 0 1px #ffffff0d}.hero-stat:nth-child(2){--stat-accent: var(--accent-4)}.hero-stat:nth-child(3){--stat-accent: var(--accent-2)}.hero-stat:nth-child(4){--stat-accent: var(--accent-3)}.hero-stat .label,.hero-stat .value{overflow-wrap:anywhere}.hero-stat .value{color:var(--stat-accent);font-size:25px}.hero-status-panel{display:flex;flex-direction:column;justify-content:space-between;gap:16px;min-width:0;padding:16px;border:1px solid var(--border);border-radius:8px;background:#060d0e94;box-shadow:inset 0 1px #ffffff0f}.hero-status-row,.hero-button-row{display:flex;align-items:center;gap:10px}.hero-status-row{justify-content:space-between;flex-wrap:wrap}.status-pill{display:inline-flex;align-items:center;gap:8px;min-height:30px;padding:5px 10px;border:1px solid rgba(67,217,184,.36);border-radius:999px;color:#baf7e9;background:#43d9b81a;font-size:13px;font-weight:600}.status-pill.stale{border-color:#ff8a8a6b;color:#ffd0d0;background:#ff8a8a1f}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--accent-2);box-shadow:0 0 12px #43d9b8cc}.status-pill.stale .status-dot{background:var(--danger);box-shadow:0 0 12px #ff8a8acc}.hero-meta{display:grid;gap:8px}.hero-meta .timestamp{display:flex;justify-content:space-between;gap:14px}.hero-meta strong{color:var(--text);font-weight:500;text-align:right;overflow-wrap:anywhere}.hero-button-row{flex-wrap:wrap}.timestamp{margin:0;color:var(--muted);font-family:IBM Plex Mono,monospace;font-size:13px}.panel{position:relative;overflow:hidden;padding:22px;border:1px solid var(--border);border-radius:8px;background:var(--panel-soft);box-shadow:var(--shadow-soft);animation:fadeUp .45s ease}.panel:before{content:"";position:absolute;top:0;right:0;left:0;height:1px;background:linear-gradient(90deg,var(--accent),var(--accent-2),transparent 72%);opacity:.65}.panel-title{position:relative;display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:18px}.panel-title .hero-actions{display:grid;grid-template-columns:repeat(2,minmax(0,auto));justify-content:end;align-items:center;gap:8px 12px;max-width:660px}.panel-title .hero-actions button{justify-self:end}.panel-title .hero-actions .timestamp{text-align:right}.panel-title .hero-actions .error{grid-column:1 / -1;justify-self:end}.headline-controls{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.toggle-group{display:flex;gap:6px;padding:3px;border:1px solid var(--border);border-radius:8px;background:#050b0c73}.headline-controls label{margin:0}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px}.grid-single{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}.card,.headline-card,.forecast-card{position:relative;overflow:hidden;min-width:0;border:1px solid var(--border);border-radius:8px;background:var(--card);box-shadow:inset 0 1px #ffffff0a;transition:transform .18s ease,border-color .18s ease,background .18s ease,box-shadow .18s ease}.card,.headline-card{padding:16px}.card:before,.headline-card:before{content:"";position:absolute;top:0;right:0;left:0;height:3px;background:linear-gradient(90deg,var(--accent),var(--accent-2));opacity:.78}.card:hover,.headline-card:hover,.forecast-card:hover{transform:translateY(-2px);border-color:#f3bf4f57;background:var(--card-hover);box-shadow:0 16px 32px #0003}.card-clickable{cursor:pointer}.label{margin:0 0 10px;color:var(--muted);font-size:12px;font-weight:600;letter-spacing:.09em;text-transform:uppercase}.value{margin:0;color:var(--text);font-size:26px;font-weight:600;line-height:1.1;overflow-wrap:anywhere}.controls{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px 16px;margin-bottom:16px}label{display:flex;flex-direction:column;gap:6px;color:var(--muted);font-size:12px;font-weight:600;letter-spacing:.1em;text-transform:uppercase}input,select{min-height:40px;padding:8px 10px;border:1px solid var(--border);border-radius:8px;color:var(--text);background:#050b0cc7;font-family:IBM Plex Mono,monospace;font-size:13px;outline:none}input:focus,select:focus{border-color:var(--border-strong);box-shadow:0 0 0 3px #f3bf4f1f}button{min-height:40px;padding:9px 15px;border:1px solid transparent;border-radius:8px;color:#1b1508;background:linear-gradient(180deg,var(--accent-strong),var(--accent));box-shadow:0 10px 22px #f3bf4f29;cursor:pointer;font:inherit;font-weight:700;letter-spacing:0;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease,background .16s ease}button.small{min-height:32px;padding:6px 10px;font-size:12px}button:hover{transform:translateY(-1px);box-shadow:0 14px 24px #f3bf4f38}button:focus-visible{outline:3px solid rgba(67,217,184,.3);outline-offset:2px}button:disabled{opacity:.56;cursor:not-allowed;transform:none;box-shadow:none}button.ghost{border-color:#f3bf4f6b;color:var(--accent-strong);background:#f3bf4f14;box-shadow:none}button.ghost:hover{border-color:#f3bf4fad;background:#f3bf4f24}button.ghost.active{color:#1b1508;border-color:#f3bf4fc7;background:linear-gradient(180deg,var(--accent-strong),var(--accent));box-shadow:0 8px 18px #f3bf4f2e}.layout-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;display:flex;align-items:center;justify-content:center;padding:16px;background:#030809c2;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.layout-modal{width:min(560px,92vw);padding:20px;border:1px solid var(--border);border-radius:8px;background:#0f181bfa;box-shadow:var(--shadow)}.layout-modal-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.layout-list{display:flex;flex-direction:column;gap:10px;margin-top:16px}.layout-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border:1px solid var(--border);border-radius:8px;background:#131d22eb}.layout-actions{display:flex;gap:8px}.layout-footer{display:flex;justify-content:flex-end;margin-top:16px}.login-backdrop{z-index:300}.login-modal{width:min(380px,92vw)}.login-field{display:flex;flex-direction:column;gap:6px;margin-top:14px;color:var(--muted);font-size:13px}.login-field input{width:100%;padding:10px 12px;font-size:14px}.login-remember{display:flex;flex-direction:row;align-items:center;gap:8px;margin-top:14px;color:var(--muted);font-size:13px;letter-spacing:0;text-transform:none;cursor:pointer}.login-remember input{width:auto;min-height:auto}.login-error{margin-top:12px;margin-bottom:0}.login-modal .layout-footer{margin-top:18px}.login-modal .layout-footer button{width:100%}.chart-wrap{margin-top:16px;padding:12px;border:1px solid var(--border);border-radius:8px;background:linear-gradient(180deg,#070d0eeb,#070c0dd1),#070c0ddb}.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:8px}.forecast-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px}.forecast-card{padding:14px}.weather-strip{margin-top:10px;padding:8px 10px 6px;border:1px solid var(--border);border-radius:8px;background:#070c0db3}.forecast-strip{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));align-items:end;gap:6px}.forecast-slot{min-width:0;display:grid;grid-template-rows:20px 20px 20px;gap:3px}.radiation-segment,.weather-segment{display:block;width:100%;height:100%;border-radius:4px}.radiation-segment{background:var(--radiation-fill);box-shadow:inset 0 1px #ffffff2e}.weather-segment{background:var(--weather-fill)}.forecast-slot-time{min-width:0;overflow:hidden;color:var(--muted);font-family:IBM Plex Mono,monospace;font-size:12px;line-height:1.2;text-align:center;text-overflow:ellipsis;white-space:nowrap}.forecast-strip-legend{display:flex;justify-content:space-between;gap:12px;margin-top:5px;color:var(--muted);font-family:IBM Plex Mono,monospace;font-size:12px}.solar-score{margin:6px 0 8px;color:var(--accent);font-size:18px;font-weight:700}table{width:100%;border-collapse:collapse;background:#0a101194;font-family:IBM Plex Mono,monospace;font-size:13px}th,td{padding:10px 12px;border-bottom:1px solid rgba(169,194,184,.11);text-align:left;white-space:nowrap}th{position:sticky;top:0;z-index:1;color:var(--muted);background:#0d1517fa;font-weight:600}tbody tr:hover{background:#f3bf4f0e}.error{color:var(--danger);font-size:13px}.headline-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:16px}.grid-detail-inline{position:absolute;top:44px;right:12px;max-width:45%;margin:0;overflow:hidden;color:var(--muted);font-family:IBM Plex Mono,monospace;font-size:11px;opacity:.75;pointer-events:none;text-align:right;text-overflow:ellipsis;white-space:normal}.tooltip{padding:8px 10px;border:1px solid var(--border);border-radius:8px;color:var(--text);background:#0f181bfa;font-size:12px}.tooltip-title{margin:0 0 6px;font-weight:600}.tooltip-line{margin:0;color:var(--muted)}@keyframes fadeUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes rise{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@media (max-width: 1100px){.hero{grid-template-columns:1fr}.hero-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 900px){.app{padding:22px 24px 44px}.panel-title{flex-direction:column;align-items:stretch}.panel-title .hero-actions{display:flex;flex-direction:column;align-items:flex-start;max-width:none}.panel-title .hero-actions .timestamp{text-align:left}.headline-controls,.controls{align-items:stretch}.controls label,.headline-controls label{flex:1 1 180px}input,select{width:100%}}@media (max-width: 640px){.app{padding:16px 14px 36px;gap:16px}.hero,.panel{padding:16px}h1{font-size:32px}h2{font-size:18px}.grid,.headline-cards,.forecast-grid{grid-template-columns:1fr}.value{font-size:22px}.hero-status-row,.hero-button-row{align-items:stretch}.hero-button-row button{flex:1 1 140px}.layout-row{align-items:flex-start;flex-direction:column}}@media (max-width: 340px){.hero-stat-grid{grid-template-columns:1fr}}
