:root{--bg: #0d0f14;--bg-grid: #11141b;--surface: #161a22;--surface-2: #1d222c;--border: rgba(255, 255, 255, .08);--border-strong: rgba(255, 255, 255, .16);--text: #e6e9ef;--text-dim: #98a0ad;--text-faint: #6b7280;--accent: #5b9dff;--accent-soft: rgba(91, 157, 255, .16);--good: #4ec77f;--bad: #f6685e;--warn: #f0b34e;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 1px 8px rgba(0, 0, 0, .18);--glass-bg: rgba(22, 26, 34, .55);--glass-border: rgba(255, 255, 255, .06);--glass-blur: 16px;--glass-highlight: rgba(255, 255, 255, .05);--wash-cool: rgba(91, 157, 255, .1);--wash-warm: rgba(244, 130, 110, .07);--pillar-weather: #5bb8ff;--pillar-summary: #8b9bff;--pillar-perf: #4ec77f;--pillar-calendar: #c98aff;--pillar-tasks: #f0b34e;--pillar-health: #ff7fa3;--pillar-gaming: #5be0c8;--pillar-insights: #ffa94e;--pillar-news: #7f9bd0;--radius: 14px;--radius-sm: 8px;--gap: 1.15rem;--card-h: 440px;color-scheme:dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:17.5px}[data-theme=light]{--bg: #eef1f6;--bg-grid: #e7ebf2;--surface: #ffffff;--surface-2: #f3f5f9;--border: rgba(20, 24, 33, .1);--border-strong: rgba(20, 24, 33, .18);--text: #161a22;--text-dim: #5b6472;--text-faint: #95a0b0;--accent: #2f6fed;--accent-soft: rgba(47, 111, 237, .1);--good: #2e9e5b;--bad: #d64545;--warn: #c98a1f;--shadow: 0 1px 2px rgba(20, 24, 33, .06), 0 1px 8px rgba(20, 24, 33, .06);--glass-bg: rgba(255, 255, 255, .6);--glass-border: rgba(255, 255, 255, .45);--glass-blur: 16px;--glass-highlight: rgba(255, 255, 255, .5);--wash-cool: rgba(47, 111, 237, .08);--wash-warm: rgba(214, 69, 69, .05);--pillar-weather: #2f8fed;--pillar-summary: #5b66e0;--pillar-perf: #2e9e5b;--pillar-calendar: #9b4ed6;--pillar-tasks: #c98a1f;--pillar-health: #db4c75;--pillar-gaming: #1aa893;--pillar-insights: #d98220;--pillar-news: #5b72a8;color-scheme:light}*{box-sizing:border-box}html,body{margin:0;height:100%}body{background:radial-gradient(1200px 800px at 12% -8%,var(--wash-cool),transparent 60%),radial-gradient(1000px 700px at 100% 0%,var(--wash-warm),transparent 55%),var(--bg);background-attachment:fixed;color:var(--text);-webkit-font-smoothing:antialiased}button{font-family:inherit}.app-shell{min-height:100vh;display:flex;flex-direction:column}.app-header{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:0 1.25rem;height:56px;background:color-mix(in srgb,var(--surface) 88%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}.header-left{display:flex;align-items:center;gap:1rem;min-width:0}.brand{display:flex;align-items:center;gap:.6rem}.header-greeting{font-size:.95rem;font-weight:550;color:var(--text-dim);white-space:nowrap;padding-left:1rem;border-left:1px solid var(--border)}@media(max-width:560px){.header-greeting{display:none}}.brand-mark{width:22px;height:22px;fill:none;stroke:var(--accent);stroke-width:1.6;stroke-linecap:round}.brand-name{font-size:.95rem;font-weight:650;letter-spacing:.02em}.header-tools{display:flex;align-items:center;gap:.7rem}.header-clock{font-size:.95rem;font-weight:550;color:var(--text-dim);font-variant-numeric:tabular-nums;white-space:nowrap}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);color:var(--text-dim);cursor:pointer;transition:color .15s,border-color .15s,background .15s}.icon-button:hover{color:var(--text);border-color:var(--border-strong)}.icon-button svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.icon-button svg path{fill:currentColor;stroke:none}.app-main{flex:1;padding:1.25rem}.dashboard{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:var(--card-h);gap:var(--gap);align-items:stretch;max-width:1600px;margin:0 auto}.span-2{grid-column:span 2}@media(max-width:1100px){.dashboard{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:720px){.dashboard{grid-template-columns:minmax(0,1fr)}.span-2{grid-column:span 1}}.card{--card-accent: var(--accent);position:relative;background:radial-gradient(150% 130% at 100% 0%,color-mix(in srgb,var(--card-accent) 9%,transparent),transparent 60%),var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius);padding:1.35rem 1.5rem;box-shadow:var(--shadow),inset 0 1px 0 var(--glass-highlight);-webkit-backdrop-filter:blur(var(--glass-blur));backdrop-filter:blur(var(--glass-blur));display:flex;flex-direction:column;min-width:0;overflow:hidden}.card-body{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-gutter:stable}.card-title{margin:0 0 .85rem;font-size:.72rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:color-mix(in srgb,var(--card-accent) 35%,var(--text-faint))}.pillar-weather{--card-accent: var(--pillar-weather)}.pillar-summary{--card-accent: var(--pillar-summary)}.pillar-perf{--card-accent: var(--pillar-perf)}.pillar-calendar{--card-accent: var(--pillar-calendar)}.pillar-tasks{--card-accent: var(--pillar-tasks)}.pillar-health{--card-accent: var(--pillar-health)}.pillar-gaming{--card-accent: var(--pillar-gaming)}.pillar-insights{--card-accent: var(--pillar-insights)}.pillar-news{--card-accent: var(--pillar-news)}.connect-link{display:inline-block;align-self:flex-start;padding:.5rem .95rem;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface-2);color:var(--text);text-decoration:none;font-size:.9rem;cursor:pointer}.connect-link:hover{border-color:var(--accent);color:var(--accent)}.link-button{padding:0;border:none;background:none;color:var(--accent);font:inherit;font-size:.82rem;cursor:pointer}.link-button:hover{text-decoration:underline}.weather-hero{display:flex;align-items:center;gap:.9rem;padding:.6rem .75rem;margin:0 -.25rem .2rem;border-radius:var(--radius-sm);background:linear-gradient(120deg,color-mix(in srgb,currentColor 20%,transparent),transparent 70%)}.weather-glyph{flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 1px 4px color-mix(in srgb,currentColor 40%,transparent))}.weather-glyph .wx-bolt{fill:currentColor;stroke:none}.weather-glyph .wx-drop{stroke-width:2}.wx-clear-day{color:#f5b54e}.wx-clear-night{color:#aab4ff}.wx-clouds-day{color:#8fb8e6}.wx-clouds-night{color:#9aa6c4}.wx-clouds{color:#9aa6b8}.wx-rain{color:#5bb8ff}.wx-thunder{color:#b48cff}.wx-snow{color:#9fe0ff}.wx-mist{color:#aeb6c2}[data-theme=light] .wx-clear-day{color:#e0962a}[data-theme=light] .wx-clear-night{color:#6b76d6}[data-theme=light] .wx-clouds-day{color:#5a86b8}[data-theme=light] .wx-clouds-night{color:#6b7794}[data-theme=light] .wx-clouds{color:#6b7888}[data-theme=light] .wx-rain{color:#2f8fed}[data-theme=light] .wx-thunder{color:#8a5bd6}[data-theme=light] .wx-snow{color:#4aa8d6}[data-theme=light] .wx-mist{color:#788290}.weather-head{display:flex;align-items:baseline;gap:.75rem}.weather-temp{font-size:2.4rem;font-weight:650;line-height:1}.weather-desc{text-transform:capitalize;color:var(--text-dim)}.weather-meta{margin-top:.4rem;font-size:.85rem;color:var(--text-dim)}.weather-forecast{list-style:none;margin:.9rem 0 0;padding:0;display:flex;gap:.5rem;overflow-x:auto}.weather-forecast li{flex:1 0 auto;display:flex;flex-direction:column;align-items:center;gap:.25rem;padding:.5rem .6rem;border-radius:var(--radius-sm);background:var(--surface-2);font-size:.8rem}.weather-pop{font-size:.7rem;color:var(--accent)}.location-setter{margin-top:.75rem;display:flex;flex-direction:column;gap:.5rem}.city-search{position:relative}.city-search input{width:100%;padding:.45rem .6rem;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface-2);color:inherit;font:inherit}.city-search input:focus{outline:none;border-color:var(--accent)}.city-results{list-style:none;margin:.3rem 0 0;padding:.25rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);display:flex;flex-direction:column;gap:1px}.city-results button{width:100%;text-align:left;padding:.4rem .55rem;border:none;border-radius:6px;background:transparent;color:inherit;font:inherit;cursor:pointer}.city-results button:hover{background:var(--accent-soft)}.city-empty{margin:.3rem 0 0;font-size:.8rem;color:var(--text-dim)}.log-form{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.7rem}.log-form input,.log-form select{flex:1 1 5rem;min-width:0;padding:.4rem .55rem;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface-2);color:inherit;font:inherit}.log-form input:focus,.log-form select:focus{outline:none;border-color:var(--accent)}.log-form button{padding:.4rem 1rem;border:1px solid transparent;border-radius:var(--radius-sm);background:var(--accent);color:#fff;font-weight:550;cursor:pointer}.log-form button:hover:not(:disabled){filter:brightness(1.08)}.log-form button:disabled{opacity:.5;cursor:default}.log-error{margin:0 0 .5rem;font-size:.8rem;color:var(--bad)}.log-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.15rem;font-size:.85rem;color:var(--text-dim)}.log-item{display:flex;align-items:center;gap:.5rem;padding:.25rem .3rem;border-radius:var(--radius-sm)}.log-item:hover{background:var(--surface-2)}.log-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.log-edit,.log-del{flex:0 0 auto;border:none;background:none;color:var(--text-faint);font-size:1.05rem;line-height:1;cursor:pointer;opacity:0;transition:opacity .15s,color .15s}.log-item:hover .log-edit,.log-item:hover .log-del{opacity:1}.log-edit:hover{color:var(--accent)}.log-del:hover{color:var(--bad)}.log-item-editing{display:block;background:var(--surface-2)}.log-edit-form{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center;padding:.35rem .3rem}.log-edit-form input{flex:1 1 4rem;min-width:0;padding:.35rem .5rem;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:inherit;font:inherit}.log-edit-form input:focus{outline:none;border-color:var(--accent)}.log-edit-form button[type=submit]{padding:.35rem .8rem;border:1px solid transparent;border-radius:var(--radius-sm);background:var(--accent);color:#fff;font-weight:550;cursor:pointer}.cal-allday{display:flex;flex-wrap:wrap;gap:.3rem;margin-bottom:.85rem}.cal-allday span{font-size:.74rem;padding:.2rem .55rem;border-radius:999px;background:var(--surface-2);color:var(--text-dim)}.timeline{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.timeline-item{display:grid;grid-template-columns:4.5rem 14px 1fr;gap:.6rem;padding-bottom:.9rem}.timeline-time{display:flex;flex-direction:column;text-align:right;font-size:.78rem;color:var(--text-dim);line-height:1.3}.timeline-dash{font-size:.72rem;color:var(--text-faint)}.timeline-marker{position:relative}.timeline-marker:before{content:"";position:absolute;left:50%;top:5px;transform:translate(-50%);width:9px;height:9px;border-radius:50%;background:var(--border-strong)}.timeline-marker:after{content:"";position:absolute;left:50%;top:16px;bottom:-6px;width:2px;transform:translate(-50%);background:var(--border)}.timeline-item:last-child .timeline-marker:after{display:none}.timeline-item.live .timeline-marker:before{background:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}.timeline-body{display:flex;flex-direction:column;gap:.1rem;min-width:0}.timeline-title{font-weight:500;font-size:.9rem;display:flex;align-items:center;gap:.5rem}.timeline-item.live .timeline-title{color:var(--accent)}.timeline-live-tag{font-size:.62rem;text-transform:uppercase;letter-spacing:.05em;font-weight:700;padding:.1rem .4rem;border-radius:999px;background:var(--accent-soft);color:var(--accent)}.timeline-loc{font-size:.75rem;color:var(--text-faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.news-tabs{display:flex;gap:.3rem;margin-bottom:.85rem;flex-wrap:wrap}.news-tab{padding:.28rem .75rem;border:1px solid var(--border);border-radius:999px;background:transparent;color:var(--text-dim);font-size:.78rem;cursor:pointer;transition:color .15s,background .15s,border-color .15s}.news-tab:hover{color:var(--text)}.news-tab.active{border-color:transparent;background:var(--accent-soft);color:var(--accent);font-weight:600}.news-empty{margin:0;font-size:.85rem;color:var(--text-dim)}.news-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.7rem}.news-item{display:flex;gap:.7rem;align-items:flex-start}.news-thumb{flex:0 0 64px;width:64px;height:48px;border-radius:var(--radius-sm);object-fit:cover;background:var(--surface-2)}.news-thumb-empty{display:flex;align-items:center;justify-content:center;font-weight:700;font-size:1.1rem;color:var(--text-faint);border:1px solid var(--border)}.news-item-body{display:flex;flex-direction:column;gap:.15rem;min-width:0}.news-title{text-decoration:none;font-weight:500;color:var(--text);line-height:1.3}.news-title:hover{color:var(--accent)}.news-meta{font-size:.76rem;color:var(--text-faint)}.news-pager{display:flex;align-items:center;justify-content:flex-end;gap:.6rem;margin-top:.85rem}.news-pager-info{font-size:.78rem;color:var(--text-dim)}.news-pager-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);color:var(--text);font-size:1.1rem;line-height:1;cursor:pointer}.news-pager-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.news-pager-btn:disabled{opacity:.4;cursor:default}.perf-head{display:flex;align-items:baseline;gap:.4rem}.perf-score{font-size:2.6rem;font-weight:700;line-height:1}.perf-out{color:var(--text-faint)}.perf-note{margin-left:.5rem;font-size:.78rem;color:var(--text-dim)}.perf-bars{margin-top:.85rem;display:flex;flex-direction:column;gap:.45rem}.perf-bar{display:flex;align-items:center;gap:.5rem;font-size:.8rem}.perf-bar-label{flex:0 0 4.5rem;color:var(--text-dim)}.perf-bar-track{flex:1;height:.5rem;border-radius:999px;background:var(--surface-2);overflow:hidden}.perf-bar-fill{display:block;height:100%;background:var(--accent);border-radius:999px}.perf-bar-val{flex:0 0 1.75rem;text-align:right;color:var(--text-dim)}.perf-history{margin-top:.85rem;display:flex;align-items:flex-end;gap:3px;height:44px}.perf-spark{flex:1;background:var(--accent);opacity:.5;border-radius:2px 2px 0 0}.gaming-head{display:flex;justify-content:space-between;align-items:center;gap:.5rem}.gaming-id{font-weight:600}.gaming-head button{padding:.3rem .75rem;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface-2);color:inherit;cursor:pointer;font-size:.8rem}.gaming-head button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.gaming-ranks{margin-top:.5rem;font-size:.85rem}.gaming-winrate{margin:.4rem 0;font-size:.8rem;color:var(--text-dim)}.gaming-matches{list-style:none;margin:.3rem 0 0;padding:0;display:flex;flex-direction:column;gap:.3rem}.gaming-matches li{display:flex;align-items:center;gap:.6rem;font-size:.85rem;padding:.25rem .5rem;border-radius:6px;border-left:3px solid transparent;background:var(--surface-2)}.gaming-matches li.win{border-left-color:var(--good)}.gaming-matches li.loss{border-left-color:var(--bad)}.gaming-kda{margin-left:auto;color:var(--text-dim)}.gaming-score{flex:0 0 2rem;text-align:right;font-weight:600}.today-next{display:flex;flex-direction:column;gap:.15rem;padding-bottom:.9rem;margin-bottom:.9rem;border-bottom:1px solid var(--border)}.today-next-label{font-size:.66rem;text-transform:uppercase;letter-spacing:.08em;color:var(--accent);font-weight:600}.today-next-title{font-size:1.35rem;font-weight:650;line-height:1.2}.today-next-when{font-size:.85rem;color:var(--text-dim)}.today-empty{margin:0 0 .9rem;color:var(--text-dim);font-size:.9rem}.today-shape{display:flex;flex-direction:column;gap:.4rem}.today-gauge-row{display:flex;justify-content:space-between;align-items:baseline;font-size:.82rem}.today-gauge-label{font-weight:600}.today-gauge-count{color:var(--text-dim)}.today-gauge-track{height:.5rem;border-radius:999px;background:var(--surface-2);overflow:hidden}.today-gauge-fill{display:block;height:100%;border-radius:999px;transition:width .4s ease}.health-tabs{display:flex;gap:2px;margin-bottom:.9rem;padding:3px;border-radius:999px;background:var(--surface-2)}.health-tab{flex:1;text-align:center;padding:.4rem .8rem;border:none;border-radius:999px;background:transparent;color:var(--text-dim);font-size:.82rem;cursor:pointer;transition:color .15s,background .15s}.health-tab:hover{color:var(--text)}.health-tab.active{background:var(--surface);color:var(--text);font-weight:600;box-shadow:var(--shadow)}.health-section{display:flex;flex-direction:column}.health-stat{display:flex;align-items:baseline;gap:.45rem;margin-bottom:.8rem}.health-stat-value{font-size:1.5rem;font-weight:650;line-height:1}.health-stat-label{font-size:.8rem;color:var(--text-dim)}.insight-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.6rem}.insight{display:flex;flex-direction:column;gap:.1rem;padding:.55rem .75rem;border-radius:var(--radius-sm);background:var(--surface-2);border-left:3px solid var(--text-faint)}.insight.tone-good{border-left-color:var(--good)}.insight.tone-bad{border-left-color:var(--bad)}.insight.tone-neutral{border-left-color:var(--accent)}.insight-title{font-weight:600;font-size:.9rem}.insight-detail{font-size:.8rem;color:var(--text-dim)}.task-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.15rem}.task-item{display:flex;align-items:center;gap:.6rem;padding:.4rem .3rem;border-radius:var(--radius-sm)}.task-item:hover{background:var(--surface-2)}.task-check{flex:0 0 auto;width:18px;height:18px;padding:0;border:2px solid var(--border-strong);border-radius:50%;background:transparent;cursor:pointer;transition:border-color .15s,background .15s}.task-check:hover{border-color:var(--good);background:color-mix(in srgb,var(--good) 25%,transparent)}.task-check.done{display:inline-flex;align-items:center;justify-content:center;border-color:var(--good);background:var(--good);color:#fff;font-size:12px;line-height:1}.task-item-done .task-title{color:var(--text-faint);text-decoration:line-through}.task-item-done .task-dot{opacity:.4}.task-dot{flex:0 0 auto;width:8px;height:8px;border-radius:50%}.task-dot.prio-high{background:var(--bad)}.task-dot.prio-med{background:var(--warn)}.task-dot.prio-low{background:var(--text-faint)}.task-title{flex:1;min-width:0;font-size:.92rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-deadline{flex:0 0 auto;font-size:.72rem;color:var(--text-faint);font-variant-numeric:tabular-nums}.task-badge{flex:0 0 auto;padding:.1rem .45rem;border-radius:999px;font-size:.68rem;font-weight:600;white-space:nowrap}.task-badge.overdue{color:var(--bad);background:color-mix(in srgb,var(--bad) 16%,transparent)}.task-badge.soon{color:var(--warn);background:color-mix(in srgb,var(--warn) 16%,transparent)}.task-edit,.task-del{flex:0 0 auto;border:none;background:none;color:var(--text-faint);font-size:1.05rem;line-height:1;cursor:pointer;opacity:0;transition:opacity .15s,color .15s}.task-item:hover .task-edit,.task-item:hover .task-del{opacity:1}.task-edit:hover{color:var(--accent)}.task-del:hover{color:var(--bad)}.task-item-editing{display:block}.task-edit-form{display:flex;flex-direction:column;gap:.4rem;padding:.3rem 0}.task-edit-title{width:100%;padding:.4rem .55rem;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface-2);color:inherit;font:inherit}.task-edit-row{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center}.task-edit-row select,.task-edit-row input[type=date]{flex:1 1 6rem;min-width:0;padding:.35rem .5rem;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface-2);color:inherit;font:inherit}.task-edit-row button[type=submit]{padding:.35rem .8rem;border:1px solid transparent;border-radius:var(--radius-sm);background:var(--accent);color:#fff;font-weight:550;cursor:pointer}.task-edit-title:focus,.task-edit-row select:focus,.task-edit-row input:focus{outline:none;border-color:var(--accent)}.task-done-count{margin:.7rem 0 0;font-size:.78rem;color:var(--text-faint)}.summary-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:.7rem 1rem}.summary-stat{display:flex;flex-direction:column}.summary-stat-label{font-size:.68rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-faint)}.summary-stat-value{font-size:.95rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
