:root{ color-scheme:dark; --bg:#08090a; --bg-accent:#121826; --panel:#11151d; --panel-soft:#171d27; --panel-raise:#1d2430; --text:#f3f6fb; --muted:#94a3b8; --line:rgba(255,255,255,.08); --line-soft:rgba(255,255,255,.05); --accent:#7c8cff; --accent-soft:rgba(124,140,255,.16); --space:#9f8cff; --home:#4fd1a5; --local:#ffd166; --warn:#ff7b72; --ok:#5ee787; --attention:#ffd166; --shadow:0 14px 34px rgba(0,0,0,.26); } *{box-sizing:border-box} html{scroll-behavior:smooth} body{ margin:0; font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; background: radial-gradient(circle at top left,rgba(124,140,255,.16),transparent 28rem), radial-gradient(circle at top right,rgba(79,209,165,.08),transparent 22rem), var(--bg); color:var(--text); } a{color:inherit} main{max-width:1380px;margin:0 auto;padding:18px} .hero, .status div, .metric, .panel, .card, .compact-card, .focus-card, .summary-card, .paperless-card, .forecast-card, .panel-item, .task-card, .collapsible{ background:rgba(17,21,29,.92); border:1px solid var(--line); box-shadow:var(--shadow); } .hero{ display:grid; grid-template-columns:minmax(0,1.4fr) minmax(320px,.85fr); gap:14px; align-items:stretch; border-radius:24px; padding:16px 18px; margin-bottom:14px; } .hero-main, .hero-rail{min-width:0} .hero-main{ display:flex; flex-direction:column; justify-content:space-between; gap:10px; } .hero-title-row{ display:flex; align-items:flex-start; justify-content:space-between; gap:14px; flex-wrap:wrap; } .hero-chips{ display:flex; flex-wrap:wrap; gap:8px; justify-content:flex-end; } .hero-chip{ border:1px solid rgba(124,140,255,.28); background:rgba(124,140,255,.10); color:#d9deff; border-radius:999px; padding:7px 10px; font-size:.8rem; white-space:nowrap; } .eyebrow{ margin:0 0 6px; color:#b7c0ff; text-transform:uppercase; letter-spacing:.18em; font-size:.72rem; } h1{ margin:0; font-size:clamp(2rem,4.6vw,3.5rem); line-height:.94; letter-spacing:-.04em; } .sub{ margin:10px 0 0; color:var(--muted); font-size:.97rem; line-height:1.45; max-width:70ch; } .hero-actions{ display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin-top:12px; } .reset-btn, .feedback-btn, .paperless-btn{ appearance:none; background:rgba(255,255,255,.03); border:1px solid var(--line); border-radius:999px; color:var(--text); cursor:pointer; font:inherit; } .reset-btn{padding:7px 11px} .reset-btn:hover, .feedback-btn:hover, .paperless-btn:hover{border-color:rgba(124,140,255,.55)} .status, .metrics{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; } .snapshot-block{ margin:0 0 16px; } .section-heading-inline{ display:flex; justify-content:space-between; align-items:flex-end; gap:12px; margin:0 0 10px; flex-wrap:wrap; } .section-heading-inline h2{ margin:2px 0 0; font-size:1.08rem; } .snapshot-strip{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; } .metrics.metrics-compact{grid-template-columns:repeat(2,minmax(0,1fr))} .status div, .metric{ border-radius:18px; padding:11px 12px; min-width:0; } .status strong, .metric strong{display:block} .status strong{font-size:1rem} .metric{ min-height:78px; border-top:3px solid var(--accent); } .metric strong{ margin:6px 0 4px; font-size:1.12rem; line-height:1.08; } .metric span, .metric em, .status span, .meta, .empty, footer, .muted{ color:var(--muted); } .metric em{font-style:normal;font-size:.78rem} .metric.weather{border-top-color:var(--local)} .metric.space{border-top-color:var(--space)} .metric.ok{border-top-color:var(--ok)} .metric.attention{border-top-color:var(--attention)} .metric.warn{border-top-color:var(--warn)} .dashboard-shell{ display:grid; grid-template-columns:minmax(0,1.5fr) minmax(320px,.9fr); gap:14px; align-items:start; } .primary-column, .secondary-column{ display:flex; flex-direction:column; gap:12px; min-width:0; } .collapsible{ border-radius:20px; overflow:hidden; } .collapsible.state-ok{ border-color:rgba(94,231,135,.5); box-shadow:0 0 0 1px rgba(94,231,135,.16),var(--shadow); } .collapsible.state-attention{ border-color:rgba(255,209,102,.55); box-shadow:0 0 0 1px rgba(255,209,102,.18),var(--shadow); } .collapsible.state-warn{ border-color:rgba(255,123,114,.6); box-shadow:0 0 0 1px rgba(255,123,114,.2),var(--shadow); } .collapsible > summary{ list-style:none; cursor:pointer; display:flex; align-items:flex-start; justify-content:space-between; gap:12px; padding:12px 14px; } .collapsible > summary::-webkit-details-marker{display:none} .collapsible-heading{min-width:0} .collapsible-heading h2, .panel h2, section h2{ margin:0; font-size:1.02rem; line-height:1.15; letter-spacing:-.02em; } .collapsible-heading p, section header p{ margin:4px 0 0; color:var(--muted); font-size:.83rem; line-height:1.32; } .collapse-indicator{ color:var(--muted); transition:transform .16s ease; transform-origin:center; } .details[open] .collapse-indicator, .collapsible[open] .collapse-indicator{transform:rotate(180deg)} .collapsible-body{padding:0 14px 14px} .focus-grid, .summary-grid, .today, .news-list, .grid, .task-grid, .forecast-grid{ display:grid; gap:10px; } .focus-grid, .summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))} .forecast-grid{grid-template-columns:repeat(3,minmax(0,1fr))} .today{grid-template-columns:1fr} .news-list{grid-template-columns:repeat(2,minmax(0,1fr))} .grid{grid-template-columns:repeat(2,minmax(0,1fr))} .task-grid{grid-template-columns:1fr} .focus-card, .summary-card, .panel, .compact-card, .paperless-card, .forecast-card, .panel-item, .task-card, .card{ border-radius:16px; } .focus-card, .summary-card{padding:12px} .focus-card{border-top:3px solid var(--accent)} .focus-card.local{border-top-color:var(--local)} .focus-card.ok{border-top-color:var(--ok)} .focus-card.attention{border-top-color:var(--attention)} .focus-card.warn{border-top-color:var(--warn)} .focus-kicker{ display:inline-block; margin-bottom:8px; font-size:.72rem; letter-spacing:.12em; text-transform:uppercase; color:#b7c0ff; } .focus-card h3, .summary-card h3{margin:0 0 5px;font-size:.93rem} .focus-card strong{display:block;font-size:1rem;line-height:1.2;margin-bottom:5px} .focus-card p, .summary-card p, .summary-card li{margin:0;color:#d5deeb;font-size:.88rem;line-height:1.34} .summary-card ul{margin:0;padding-left:18px} .summary-card li+li{margin-top:6px} .hermes-metrics{margin-bottom:10px} .panel{padding:12px} .panel ul{list-style:none;padding-left:0;margin:0;display:grid;gap:8px} .panel-item{ padding:9px 10px; background:rgba(255,255,255,.03); border-color:var(--line-soft); } .panel-item-top{display:flex;justify-content:space-between;gap:8px;align-items:baseline} .panel-item-top strong{font-size:.82rem} .panel-item-title{margin-top:3px;font-weight:600;color:#dce5f6;font-size:.93rem;line-height:1.2} .panel-item-body{ margin-top:4px; color:#c7d1e2; font-size:.84rem; line-height:1.28; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; } .panel .empty{padding:6px 2px} .donetick-panel{padding:12px} .task-card{ padding:9px 10px; background:rgba(255,255,255,.035); border-color:var(--line-soft); min-width:0; } .task-top{display:flex;justify-content:space-between;gap:6px;align-items:center;margin-bottom:3px} .task-state-dot{width:8px;height:8px;border-radius:999px;background:var(--muted);flex:0 0 auto;box-shadow:0 0 0 2px rgba(255,255,255,.03)} .task-card.overdue .task-state-dot{background:var(--warn)} .task-card.today .task-state-dot{background:var(--local)} .task-card.tomorrow .task-state-dot, .task-card.upcoming .task-state-dot{background:#8ecae6} .task-card.nodue .task-state-dot{background:#6c7a90} .task-due{font-size:.74rem;font-weight:700;line-height:1.1;color:#dde6f6} .task-assignee{font-size:.68rem;padding:2px 7px;border-radius:999px;background:var(--panel-raise);color:var(--muted)} .task-name{ font-size:.93rem; font-weight:700; line-height:1.14; color:var(--text); margin-bottom:4px; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; } .task-subtitle{ font-size:.73rem; line-height:1.14; color:var(--muted); display:-webkit-box; -webkit-line-clamp:1; -webkit-box-orient:vertical; overflow:hidden; } .task-chips{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:4px} .task-chip{display:inline-block;padding:2px 7px;border-radius:999px;color:#fff;font-size:.67rem;font-weight:700;line-height:1.05} .task-card.overdue{border-color:rgba(255,123,114,.45)} .task-card.today{border-color:rgba(255,209,102,.42)} .task-card.tomorrow{border-color:rgba(142,202,230,.35)} .task-done-btn{ margin-top:8px; width:100%; appearance:none; background:rgba(94,231,135,.08); border:1px solid rgba(94,231,135,.3); border-radius:10px; color:#d8ffe5; cursor:pointer; font:inherit; font-size:.82rem; font-weight:700; padding:7px 10px; } .task-done-btn:hover{border-color:rgba(94,231,135,.55);background:rgba(94,231,135,.14)} .task-done-btn:disabled{cursor:progress;opacity:.72} .compact-card, .card{ padding:10px 11px; border-left:3px solid var(--accent); } .compact-card.astronomy,.card.astronomy{border-left-color:var(--space)} .compact-card.homelab,.compact-card.smart_home,.compact-card.radio, .card.homelab,.card.smart_home,.card.radio{border-left-color:var(--home)} .compact-card.local,.card.local{border-left-color:var(--local)} .compact-card.security,.card.security{border-left-color:var(--warn)} .compact-card .meta, .card .meta{ margin-bottom:5px; display:flex; flex-wrap:wrap; gap:6px; font-size:.72rem; } .compact-card .meta span, .card .meta span{ display:inline-flex; align-items:center; padding:2px 7px; border-radius:999px; background:rgba(255,255,255,.035); border:1px solid var(--line-soft); } .compact-card h3, .card h3{ margin:0 0 4px; font-size:.94rem; line-height:1.2; } .compact-card p, .card p{ margin:0; color:#c7d1e2; font-size:.83rem; line-height:1.28; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; } .compact-card:nth-child(n+7){display:none} .feedback{display:flex;gap:6px;justify-content:flex-end;margin-top:7px} .feedback-btn{padding:2px 8px;background:transparent} .feedback-btn[aria-pressed='true']{font-weight:700} .feedback-btn.active-up{border-color:rgba(94,231,135,.65);background:rgba(94,231,135,.12);color:#c8ffd9} .feedback-btn.active-down{border-color:rgba(255,107,107,.6);background:rgba(255,107,107,.12);color:#ffd9d9} .topic-liked{box-shadow:0 0 0 1px rgba(94,231,135,.45),var(--shadow)} .forecast-panel{padding:0} .weather-panel{padding:0} .weather-overview{display:grid;gap:10px} .weather-now-card{ padding:14px; background:linear-gradient(135deg,rgba(124,140,255,.12),rgba(79,209,165,.08)); border-radius:16px; border:1px solid rgba(124,140,255,.18); } .weather-now-top, .weather-now-main, .weather-detail-row{display:flex;gap:10px} .weather-now-top{justify-content:space-between;align-items:center;margin-bottom:10px} .weather-kicker{color:#b7c0ff;font-size:.74rem;text-transform:uppercase;letter-spacing:.1em} .weather-source{color:var(--muted);font-size:.76rem} .weather-now-main{align-items:flex-end;justify-content:space-between} .weather-now-main strong{font-size:2rem;line-height:.95;letter-spacing:-.04em} .weather-condition{font-size:1rem;font-weight:700;line-height:1.15} .weather-range{margin-top:4px;color:#d9e4f7;font-size:.88rem} .weather-detail-row{flex-wrap:wrap;margin-top:12px;color:var(--muted);font-size:.8rem} .weather-detail-row span{padding:4px 8px;border-radius:999px;background:rgba(8,9,10,.24)} .weather-alert-card{ padding:11px 12px; border-radius:14px; background:rgba(255,255,255,.035); border:1px solid var(--line-soft); } .weather-alert-card.attention{border-color:rgba(255,209,102,.45);background:rgba(255,209,102,.07)} .weather-alert-card.warn{border-color:rgba(255,123,114,.48);background:rgba(255,123,114,.08)} .weather-alert-top{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:6px} .weather-alert-kicker{font-size:.75rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#dfe8fa} .weather-alert-state{font-size:.72rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)} .weather-alert-card strong{display:block;font-size:.95rem;line-height:1.2} .weather-alert-card p{margin:6px 0 0;color:#d7e3f5;font-size:.82rem;line-height:1.3} .weather-alert-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px;color:var(--muted);font-size:.77rem} .weather-alert-meta span{padding:3px 8px;border-radius:999px;background:rgba(8,9,10,.22)} .forecast-card{padding:11px 12px;background:rgba(255,255,255,.035)} .forecast-day{color:#b7c0ff;font-size:.75rem;text-transform:uppercase;letter-spacing:.08em} .forecast-card strong{display:block;margin-top:4px;font-size:.95rem} .forecast-temps{margin-top:6px;font-size:1rem;font-weight:700;color:#f6fbff} .forecast-temps span{color:var(--muted);font-weight:600} .forecast-card em{display:block;margin-top:4px;font-style:normal;color:var(--muted);font-size:.82rem} .forecast-meta{margin-top:8px;color:#d7e3f5;font-size:.8rem} .badge{ display:inline-block; margin-left:.35rem; padding:2px 7px; border-radius:999px; background:var(--panel-raise); color:#b7c0ff; font-size:.78rem; } .paperless-grid{display:grid;grid-template-columns:1fr;gap:8px} .paperless-card{padding:10px 11px;border-left:3px solid var(--accent)} .paperless-card.warn{border-left-color:var(--warn)} .paperless-card.info{border-left-color:var(--local)} .paperless-card.ok{border-left-color:var(--ok)} .paperless-card.needs-attention{box-shadow:0 0 0 1px rgba(255,209,102,.25),var(--shadow)} .paperless-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start} .paperless-card h4{margin:.3rem 0;font-size:.92rem;line-height:1.18} .paperless-card .summary{ margin:.2rem 0; color:#d7e3f5; font-size:.84rem; line-height:1.26; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; } .paperless-meta, .paperless-reason{margin:.2rem 0;color:var(--muted);font-size:.76rem;line-height:1.18} .paperless-card .link{display:inline-block;color:#b7c0ff;text-decoration:none} .paperless-card .link:hover{text-decoration:underline} .paperless-actions{display:flex;gap:6px;flex-wrap:wrap;align-items:center;justify-content:flex-end} .paperless-btn{padding:5px 8px} .paperless-btn.good{border-color:rgba(94,231,135,.45);color:#c8ffd9} .paperless-acked, .paperless-more{margin-top:10px;border-top:1px solid var(--line-soft);padding-top:10px} .paperless-acked summary, .paperless-more summary{cursor:pointer;color:var(--muted);font-size:.84rem} .urgency{font-weight:700} .urgency.warn{color:var(--warn)} .urgency.info{color:var(--local)} .urgency.ok{color:var(--ok)} section header{display:flex;justify-content:space-between;gap:12px;align-items:end} section header p{margin:0} ul{margin:0} footer{ margin:14px 0 6px; padding:0 2px; font-size:.8rem; line-height:1.4; } footer p{margin:.25rem 0} .dashboard-toast{ position:fixed; right:16px; bottom:16px; z-index:1000; max-width:min(420px,calc(100vw - 24px)); background:rgba(8,9,10,.97); border:1px solid var(--line); border-left:3px solid var(--accent); border-radius:14px; padding:12px 14px; color:var(--text); box-shadow:0 16px 40px rgba(0,0,0,.36); } .dashboard-toast[hidden]{display:none} .toast-action{margin-left:10px;background:transparent;border:0;color:#b7c0ff;font:inherit;font-weight:700;cursor:pointer;padding:0} @media (max-width:980px){ .dashboard-shell{grid-template-columns:1fr} .secondary-column{order:-1} .focus-grid,.summary-grid,.forecast-grid,.metrics.metrics-compact{grid-template-columns:repeat(2,minmax(0,1fr))} } @media (max-width:920px){ .hero{grid-template-columns:1fr} .status,.metrics,.metrics.metrics-compact,.focus-grid,.summary-grid,.news-list,.grid,.forecast-grid{grid-template-columns:1fr} } @media (max-width:720px){ main{padding:12px} .hero{padding:14px} .collapsible > summary{padding:11px 12px} .collapsible-body{padding:0 12px 12px} .paperless-head{display:block} .paperless-actions{justify-content:flex-start;margin-top:8px} section header{display:block} } .top-nav{ display:flex; justify-content:space-between; align-items:center; gap:14px; margin-bottom:14px; padding:12px 14px; border-radius:18px; background:rgba(17,21,29,.88); border:1px solid var(--line); box-shadow:var(--shadow); } .nav-brand{display:flex;flex-direction:column;gap:2px} .nav-kicker{font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;color:#b7c0ff} .nav-links{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end} .nav-link{ text-decoration:none; padding:7px 11px; border-radius:999px; border:1px solid var(--line); background:rgba(255,255,255,.03); color:var(--muted); font-size:.88rem; } .nav-link:hover{border-color:rgba(124,140,255,.55);color:var(--text)} .nav-link.active{color:var(--text);border-color:rgba(124,140,255,.6);background:rgba(124,140,255,.14)} .services-shell{align-items:start} .services-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px} .service-card{ border-radius:16px; padding:12px; background:rgba(255,255,255,.03); border:1px solid var(--line-soft); } .service-card.ok{border-top:3px solid var(--ok)} .service-card.attention{border-top:3px solid var(--attention)} .service-card.warn{border-top:3px solid var(--warn)} .service-top{display:flex;justify-content:space-between;gap:10px;align-items:flex-start} .service-badge-stack{display:flex;flex-direction:column;gap:6px;align-items:flex-end} .service-health{ display:inline-flex; align-items:center; border-radius:999px; padding:3px 8px; font-size:.68rem; letter-spacing:.08em; text-transform:uppercase; border:1px solid var(--line); } .service-health.ok{color:var(--ok);border-color:rgba(94,231,135,.38);background:rgba(94,231,135,.1)} .service-health.attention{color:var(--attention);border-color:rgba(255,209,102,.38);background:rgba(255,209,102,.1)} .service-health.warn{color:var(--warn);border-color:rgba(255,123,114,.38);background:rgba(255,123,114,.1)} .service-meta{margin-top:8px;color:var(--muted);font-size:.76rem;line-height:1.25} .service-group-badge,.service-badge{ display:inline-flex; align-items:center; border-radius:999px; padding:3px 8px; font-size:.68rem; letter-spacing:.08em; text-transform:uppercase; background:var(--panel-raise); color:var(--muted); } .service-card h3{margin:.35rem 0 .25rem;font-size:.98rem;line-height:1.2} .service-card p{margin:0;color:#d5deeb;font-size:.86rem;line-height:1.34} .service-actions{margin-top:10px} .service-open{ display:inline-flex; align-items:center; text-decoration:none; color:#b7c0ff; font-weight:600; } .service-open:hover{text-decoration:underline} .service-open.disabled{color:var(--muted);cursor:default;text-decoration:none} .service-facts{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px} .service-fact{display:inline-flex;gap:6px;align-items:center;border-radius:999px;padding:4px 8px;background:rgba(255,255,255,.04);border:1px solid var(--line-soft);font-size:.72rem;color:var(--muted)} .service-fact strong{font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;color:#b7c0ff} .summary-card ul{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:8px} .summary-card li{display:flex;justify-content:space-between;gap:10px;align-items:flex-start} .summary-card li strong{font-size:.92rem} .summary-card li span{color:var(--muted);font-size:.8rem;text-align:right} @media (max-width:980px){ .top-nav{align-items:flex-start;flex-direction:column} .nav-links{justify-content:flex-start} .services-grid{grid-template-columns:1fr} } .feature-story{margin:0 0 2px} .feature-card{ padding:16px; border-radius:20px; position:relative; overflow:hidden; background:linear-gradient(135deg,rgba(124,140,255,.18),rgba(79,209,165,.08)),rgba(17,21,29,.96); } .feature-card::after{ content:''; position:absolute; inset:auto -30px -30px auto; width:180px; height:180px; background:radial-gradient(circle,rgba(124,140,255,.16),transparent 68%); pointer-events:none; } .feature-meta{ display:flex; gap:10px; flex-wrap:wrap; color:var(--muted); font-size:.82rem; margin-bottom:10px; } .feature-kicker{ display:inline-flex; margin-bottom:8px; color:#c7d0ff; text-transform:uppercase; letter-spacing:.14em; font-size:.73rem; } .feature-body{ display:grid; grid-template-columns:minmax(0,1.35fr) 230px; gap:16px; align-items:end; } .feature-copy h2{ margin:0 0 8px; font-size:1.45rem; line-height:1.08; } .feature-copy p{ margin:0; color:#d7deea; line-height:1.5; } .feature-why{ margin-top:12px; color:var(--muted); font-size:.86rem; } .feature-actions{ display:flex; flex-direction:column; gap:10px; align-items:flex-start; } .feature-open{ display:inline-flex; align-items:center; justify-content:center; text-decoration:none; border-radius:999px; padding:10px 14px; background:#eef2ff; color:#0f172a; font-weight:700; } .feature-note{ color:var(--muted); font-size:.83rem; line-height:1.4; } .trend-chart{ display:flex; align-items:flex-end; gap:8px; min-height:120px; margin:8px 0 10px; } .trend-bar-wrap{ flex:1; min-width:0; display:flex; flex-direction:column; align-items:center; justify-content:flex-end; gap:6px; } .trend-value, .trend-label{ font-size:.73rem; color:var(--muted); } .trend-bar{ width:100%; max-width:28px; border-radius:999px 999px 10px 10px; background:linear-gradient(180deg,#8ea0ff 0%,#4fd1a5 100%); box-shadow:0 8px 20px rgba(79,209,165,.18); } @media (max-width:980px){ .focus-grid,.summary-grid,.forecast-grid,.metrics.metrics-compact,.snapshot-strip{grid-template-columns:repeat(2,minmax(0,1fr))} .feature-body{grid-template-columns:1fr} } @media (max-width:920px){ .hero-title-row,.section-heading-inline{align-items:flex-start} .hero-chips{justify-content:flex-start} .snapshot-strip{grid-template-columns:1fr} }