:root{--bg:#191B1A;--surface:#212423;--surface-sunk:#151716;--ink:#E4E7E4;--ink-soft:#96A098;--ink-faint:#646E66;--amber:#00FF00;--amber-ink:#8CFF9B;--on-amber:#03170A;--amber-tint:#0B2410;--teal:#4A9791;--teal-ink:#B7E4DD;--teal-tint:#123330;--clay:#D06B50;--clay-ink:#F3C4B5;--clay-tint:#3A1D14;--line:#2A302D;--line-strong:#3C4340;--radius:10px;--font-display:"Space Grotesk",sans-serif;--font-body:"Inter",sans-serif;--font-mono:"IBM Plex Mono",monospace}*{box-sizing:border-box}body{margin:0;color-scheme:dark;background:var(--bg);color:var(--ink);font-family:var(--font-body);background-image:linear-gradient(rgba(255,255,255,.028) 1px,transparent 0),linear-gradient(90deg,rgba(255,255,255,.028) 1px,transparent 0);background-size:28px 28px;background-attachment:local}.wrap{max-width:1680px;margin:0 auto;padding:28px 24px 80px}.shell-nav{display:flex;align-items:center;gap:18px;padding:14px 24px;border-bottom:1px solid var(--line-strong);background:var(--surface)}.shell-nav .shell-brand{font-family:var(--font-display);font-weight:700;font-size:16px;margin-right:8px}.shell-nav a{font-family:var(--font-display);font-weight:600;font-size:14px;color:var(--ink-soft);text-decoration:none;padding:6px 2px;border-bottom:3px solid transparent}.shell-nav a:hover{color:var(--ink)}.shell-nav a.active{color:var(--ink);border-bottom-color:var(--amber)}.digest-header{display:flex;align-items:baseline;gap:12px;margin-bottom:22px}.digest-header h1{font-family:var(--font-display);font-weight:700;font-size:28px;margin:0;letter-spacing:-.02em}.digest-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:16px;gap:16px;margin-top:16px;align-items:start}@media(max-width:860px){.digest-grid{grid-template-columns:1fr}}.digest-placeholder .empty{padding:24px 0}.digest-section{margin-top:28px}.digest-section:first-of-type{margin-top:0}.digest-section-title{font-family:var(--font-mono);font-size:12px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.08em;margin-bottom:10px}header.top{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:16px;margin-bottom:22px}.brand{display:flex;align-items:baseline;gap:12px}.brand h1{font-family:var(--font-display);font-weight:700;font-size:28px;margin:0;letter-spacing:-.02em}.brand span.tag{font-family:var(--font-mono);font-size:12px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.08em}.weeknav{display:flex;align-items:center;gap:10px;background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius);padding:8px 12px}.weeknav button{background:none;border:none;cursor:pointer;font-family:var(--font-mono);font-size:16px;color:var(--ink);padding:2px 6px}.weeknav button:hover{color:var(--amber-ink)}.weeknav .range{font-family:var(--font-mono);font-size:13px;color:var(--ink-soft);min-width:210px;text-align:center}nav.tabs{display:flex;gap:6px;margin-bottom:22px;border-bottom:1px solid var(--line-strong)}nav.tabs button{font-family:var(--font-display);font-weight:600;font-size:14px;background:none;cursor:pointer;color:var(--ink-soft);padding:10px 16px;border:none;border-bottom:3px solid transparent;margin-bottom:-1px}nav.tabs button.active{color:var(--ink);border-bottom-color:var(--amber)}nav.tabs button:hover{color:var(--ink)}.view{display:none}.view.active{display:block}.card{background:var(--surface);border:1px solid var(--line-strong);border-radius:12px;padding:18px 20px}.card+.card{margin-top:16px}.digest-grid>.card{margin-top:0}.card h2{font-family:var(--font-display);font-size:15px;margin:0 0 12px;letter-spacing:.01em}.card h2 .count{font-family:var(--font-mono);font-weight:400;color:var(--ink-faint);font-size:12px;margin-left:6px}.widget-cal.amber{border-color:#164023}.widget-cal.amber h2{color:var(--amber-ink)}.widget-cal.clay{border-color:#5A2E22}.widget-cal.clay h2{color:var(--clay-ink)}.widget-cal.teal{border-color:#1F4A45}.widget-cal.teal h2{color:var(--teal-ink)}.mini-cal+.mini-cal{margin-top:14px}.mini-cal-title{font-family:var(--font-mono);font-size:10px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.05em;margin-bottom:6px}.mini-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:3px;gap:3px}.mini-cal-daylabel{font-family:var(--font-mono);font-size:11px;color:var(--ink-faint);text-align:center;padding-bottom:4px}.mini-cal-cell{display:flex;flex-direction:column;align-items:center;gap:4px;min-height:38px;padding:5px 2px;font-family:var(--font-mono);font-size:13px;color:var(--ink-soft);border-radius:6px}.mini-cal-cell.outside{visibility:hidden}.mini-cal-cell.today .mini-cal-daynum{color:var(--amber-ink);font-weight:600;box-shadow:inset 0 0 0 1px var(--amber);border-radius:50%;width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center}.mini-cal-pills{display:flex;flex-direction:column;align-items:center;gap:2px}.ticker-pill{background:var(--amber-tint);color:var(--amber-ink);font-family:var(--font-mono);font-size:9px;font-weight:700;letter-spacing:.02em;padding:1px 6px;border-radius:8px;line-height:1.5;white-space:nowrap;border:1px solid #164023}.digest-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;max-height:340px;overflow-y:auto}.digest-list li{font-size:13px;display:flex;align-items:baseline;gap:8px}.digest-list .date{font-family:var(--font-mono);font-size:11px;color:var(--ink-faint);flex:0 0 44px}.digest-list .ev-title{flex:1 1;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.digest-list .time{font-family:var(--font-mono);font-size:11px;color:var(--ink-faint);flex:0 0 auto}.grid-2{display:grid;grid-template-columns:1.15fr .85fr;grid-gap:16px;gap:16px;align-items:start}@media(max-width:860px){.grid-2{grid-template-columns:1fr}}.stat-row{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:12px;gap:12px;margin-bottom:16px}.stat{background:var(--surface);border:1px solid var(--line-strong);border-radius:12px;padding:14px 16px}.stat .num{font-family:var(--font-mono);font-size:26px;font-weight:500}.stat .lbl{font-size:12px;color:var(--ink-soft);margin-top:2px}.stat.amber{background:var(--amber-tint);border-color:#164023}.stat.amber .num{color:var(--amber-ink)}.stat.teal{background:var(--teal-tint);border-color:#1F4A45}.stat.teal .num{color:var(--teal-ink)}.stat.clay{background:var(--clay-tint);border-color:#5A2E22}.stat.clay .num{color:var(--clay-ink)}.today-strip{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:14px}.today-date{font-family:var(--font-mono)}.today-date .dow{font-size:12px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.1em}.today-date .dnum{font-family:var(--font-display);font-size:34px;font-weight:700;line-height:1}.today-date .mon{font-size:13px;color:var(--ink-soft)}.punch{position:relative;height:34px;background:var(--surface-sunk);border-radius:6px;overflow:hidden;flex:1 1;min-width:220px}.punch .tick{position:absolute;top:0;bottom:0;width:1px;background:var(--line-strong)}.punch .block{position:absolute;top:3px;bottom:3px;background:var(--amber);border-radius:4px}.punch .block span{position:absolute;inset:0;flex-direction:column;align-items:center;justify-content:center;line-height:1.3;color:var(--on-amber);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 8px;pointer-events:none}.punch .block span,.punch-labels{display:flex;font-family:var(--font-mono);font-size:9px}.punch-labels{justify-content:space-between;color:var(--ink-faint);margin-top:3px}.holiday-banner{background:var(--teal-tint);color:var(--teal-ink);border:1px solid #1f4a45;border-radius:6px;padding:6px 10px;font-size:12px;margin-bottom:8px}.punch .chore-marker{position:absolute;top:50%;width:9px;height:9px;border-radius:50%;background:var(--clay);border:2px solid var(--surface-sunk);transform:translate(-50%,-50%);z-index:50}.punch .chore-marker.shifted{border-color:var(--teal)}.punch .chore-marker.unattended{border-style:dashed;border-color:var(--ink-faint);z-index:40}.punch .chore-marker.unattended.shifted{border-color:var(--teal)}.punch .chore-block{position:absolute;top:3px;bottom:3px;border-radius:4px;background:var(--clay);z-index:30}.punch .chore-block.shifted{box-shadow:inset 0 0 0 2px var(--teal)}.punch .chore-block.auto-part{top:0;bottom:0}.punch .chore-block.unattended{background-image:repeating-linear-gradient(45deg,rgba(255,255,255,.22) 0 4px,transparent 4px 9px);z-index:20}.punch .chore-block span{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:9px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 6px;pointer-events:none}.punch .travel{position:absolute;top:3px;bottom:3px;border-radius:4px;background:repeating-linear-gradient(45deg,var(--line-strong),var(--line-strong) 4px,transparent 4px,transparent 8px);z-index:1}.day-diagram{position:relative;margin-top:6px}.day-diagram .leader{position:absolute;top:0;width:1px;background:var(--line-strong)}.day-diagram-row{position:absolute;left:0;right:0}.day-diagram-row .stem-dot{position:absolute;top:50%;width:8px;height:8px;border-radius:50%;background:var(--clay);border:2px solid var(--bg);transform:translate(-50%,-50%);z-index:2}.day-diagram-row .stem-dot.shifted{box-shadow:0 0 0 2px var(--teal)}.day-diagram-row .stem-dot.unattended{border-style:dashed;border-color:var(--ink-faint)}.day-diagram-row .stem-label{position:absolute;top:50%;transform:translateY(-50%);font-family:var(--font-mono);font-size:11px;color:var(--ink-soft);white-space:nowrap;background:var(--surface);padding:2px 7px;border-radius:5px;z-index:2}.day-diagram-row .stem-label .t{color:var(--ink);font-family:var(--font-body);font-weight:500}.clash-warn{color:var(--clay-ink);font-weight:500}.month-grid{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:6px;gap:6px}.month-daylabel{font-family:var(--font-mono);font-size:10px;color:var(--ink-faint);text-align:center;padding-bottom:4px;text-transform:uppercase;letter-spacing:.05em}.month-cell{background:var(--surface-sunk);border:1px solid var(--line);border-radius:8px;padding:6px;min-height:92px;cursor:pointer;display:flex;flex-direction:column;gap:4px}.month-cell:hover{border-color:var(--line-strong)}.month-cell.outside{opacity:.35}.month-cell.today{border-color:var(--amber)}.month-cell.holiday{background:var(--teal-tint)}.month-cell .daynum{font-family:var(--font-mono);font-size:13px;color:var(--ink-soft)}.month-cell.today .daynum{color:var(--amber-ink);font-weight:600}.month-cell .mchips{flex-direction:column;gap:2px}.mchip,.month-cell .mchips{display:flex;overflow:hidden}.mchip{font-size:10px;line-height:1.35;white-space:nowrap;text-overflow:ellipsis;padding:1px 4px;border-radius:4px;align-items:center;gap:3px}.mchip-hours{background:var(--surface);color:var(--ink-soft);font-family:var(--font-mono)}.mchip-event{background:var(--teal-tint);color:var(--teal-ink)}.mchip-chore{background:var(--clay-tint);color:var(--clay-ink)}.mchip-task{background:var(--amber-tint);color:var(--amber-ink)}.mchip-more,.mchip-roadmap{background:transparent;padding:1px 0}.mchip-more{color:var(--ink-faint)}@media(max-width:700px){.month-cell{min-height:60px;padding:4px}.month-cell .daynum{font-size:11px}.mchip{font-size:9px}.mchip span:not(:first-child){display:none}}.month-stats{margin-top:20px}.month-stats-heading{font-family:var(--font-mono);font-size:11px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.05em;margin:0 0 8px}.month-stats-heading:not(:first-child){margin-top:18px}.month-stats-row{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));margin-bottom:0}@media(max-width:700px){.month-stats-row{grid-template-columns:repeat(2,1fr)}}#hoursEditor .punch .block{cursor:-webkit-grab;cursor:grab;touch-action:none}#hoursEditor .punch .block.dragging{cursor:-webkit-grabbing;cursor:grabbing;opacity:.85;z-index:5;box-shadow:0 0 0 2px var(--amber-ink)}#hoursEditor .punch .block .handle{position:absolute;top:0;bottom:0;width:8px;cursor:ew-resize;touch-action:none}#hoursEditor .punch .block .handle-l{left:0}#hoursEditor .punch .block .handle-r{right:0}.row{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}.row:last-child{border-bottom:none}.row .dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.dot.amber{background:var(--amber)}.dot.teal{background:var(--teal)}.dot.clay{background:var(--clay)}.dot.gray{background:var(--ink-faint)}.row .chore-color-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;border:1px solid rgba(255,255,255,.2)}.row .title{flex:1 1;font-size:14px}.row .meta{font-size:11px;color:var(--ink-faint)}.badge,.row .meta{font-family:var(--font-mono)}.badge{font-size:10px;padding:2px 7px;border-radius:20px;text-transform:uppercase;letter-spacing:.04em}.badge.amber{background:var(--amber-tint);color:var(--amber-ink)}.badge.teal{background:var(--teal-tint);color:var(--teal-ink)}.badge.clay{background:var(--clay-tint);color:var(--clay-ink)}.badge.gray{background:var(--surface-sunk)}.badge.gray,.iconbtn{color:var(--ink-soft)}.iconbtn{background:var(--surface);border:1px solid var(--line-strong);border-radius:6px;width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;font-family:var(--font-mono);font-size:13px}.iconbtn:hover{border-color:var(--ink-soft);color:var(--ink)}.iconbtn.active{border-color:var(--amber);color:var(--amber-ink)}.btnrow{display:flex;gap:6px}button.pill{font-family:var(--font-body);font-size:13px;font-weight:500;background:var(--surface);border:1px solid var(--line-strong);border-radius:20px;padding:7px 14px;cursor:pointer;color:var(--ink)}button.pill:hover{border-color:var(--ink-soft)}button.pill.primary{background:var(--ink);color:var(--bg);border-color:var(--ink)}button.pill.primary:hover{filter:brightness(.85)}.empty{padding:18px 0;text-align:center;color:var(--ink-faint);font-size:13px}.hour-day{display:grid;grid-template-columns:90px 1fr 150px;align-items:center;grid-gap:14px;gap:14px;padding:12px 0;border-bottom:1px solid var(--line)}.hour-day:last-child{border-bottom:none}.hour-day .dname{font-family:var(--font-display);font-weight:600;font-size:14px}.hour-day .dname .sub{display:block;font-family:var(--font-mono);font-weight:400;font-size:10px;color:var(--ink-faint);margin-top:2px}.hour-day .blocklist{font-family:var(--font-mono);font-size:11px;color:var(--ink-soft);margin-top:4px;display:flex;flex-wrap:wrap;gap:6px}.hour-day select[data-act=addpreset]{font-family:var(--font-body);font-size:12px;border:1px solid var(--line-strong);border-radius:20px;padding:6px 10px;background:var(--surface);color:var(--ink);cursor:pointer;max-width:150px}.chip{background:var(--surface-sunk);border-radius:5px;padding:2px 7px;display:inline-flex;align-items:center;gap:6px}.chip button{background:none;border:none;color:var(--clay-ink);cursor:pointer;font-family:var(--font-mono);font-size:11px;padding:0}.addform{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap;margin-top:14px;padding-top:14px;border-top:1px dashed var(--line-strong)}.addform input,.addform select{font-family:var(--font-body);font-size:13px;border:1px solid var(--line-strong);border-radius:6px;padding:7px 9px;background:var(--surface);color:var(--ink)}.fin-table{width:100%;border-collapse:collapse;font-family:var(--font-mono);font-size:13px}.fin-table th{text-align:left;color:var(--ink-faint);font-weight:400;font-size:11px;padding:4px 8px;border-bottom:1px solid var(--line-strong)}.fin-table td{padding:8px;border-bottom:1px solid var(--line)}.fin-symbol{font-family:var(--font-display);font-weight:600}.fin-up{color:var(--amber-ink)}.fin-down{color:var(--clay-ink)}.fin-error{color:var(--ink-faint);font-style:italic}.fin-remove{background:none;border:none;color:var(--ink-faint);cursor:pointer;font-family:var(--font-mono);font-size:12px}.fin-remove:hover{color:var(--clay-ink)}.fin-add{border-top:none;padding-top:0}.fin-name{font-family:var(--font-body)}.fin-mono,.fin-name{color:var(--ink-soft)}.fin-mono{font-size:12px}.fin-row{cursor:pointer}.fin-news-row td,.fin-row:hover td{background:var(--surface-sunk)}.fin-news-row td{padding:10px 8px}.fin-news-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.fin-news-list li{display:flex;justify-content:space-between;gap:12px;font-size:12px}.fin-news-list a{color:var(--teal-ink);text-decoration:none}.fin-news-list a:hover{text-decoration:underline}.fin-news-source{color:var(--ink-faint);font-family:var(--font-mono);font-size:11px;flex:0 0 auto}.fin-actions{display:flex;gap:6px}.fin-avgbuy-input{width:70px;font-family:var(--font-mono);font-size:12px;border:1px solid var(--line-strong);border-radius:6px;padding:4px 6px;background:var(--surface);color:var(--ink)}.fin-cat-edit{display:flex;gap:8px;align-items:center}.fin-cat-edit input{font-family:var(--font-body);font-size:13px;border:1px solid var(--line-strong);border-radius:6px;padding:6px 9px;background:var(--surface);color:var(--ink);flex:1 1;max-width:240px}.addform input[type=time]{font-family:var(--font-mono)}.addform label{font-size:12px;color:var(--ink-soft)}.field{display:flex;flex-direction:column;gap:3px}.toggle-add{font-family:var(--font-mono);font-size:12px;background:none;border:1px dashed var(--line-strong);border-radius:6px;padding:5px 10px;cursor:pointer;color:var(--ink-soft)}.toggle-add:hover{border-color:var(--ink-soft);color:var(--ink)}.phase{display:flex;gap:14px;padding:16px 0;border-bottom:1px solid var(--line);position:relative}.phase:last-child{border-bottom:none}.phase .rail{width:14px;display:flex;flex-direction:column;align-items:center;flex-shrink:0}.phase .node{width:14px;height:14px;border-radius:50%;border:3px solid var(--ink-faint);background:var(--surface)}.phase .node.active{border-color:var(--amber);background:var(--amber)}.phase .node.done{border-color:var(--teal);background:var(--teal)}.phase .node.blocked{border-color:var(--clay);background:var(--surface)}.phase .line{flex:1 1;width:2px;background:var(--line-strong);margin-top:4px}.phase .body{flex:1 1}.phase .phead{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.phase h3{font-family:var(--font-display);font-size:15px;margin:0}.phase .deps{font-family:var(--font-mono);font-size:11px;color:var(--ink-faint);margin-top:4px}.progressbar{height:6px;background:var(--surface-sunk);border-radius:4px;margin-top:10px;overflow:hidden}.progressbar .fill{height:100%;background:var(--teal)}.ptask-list{margin-top:10px;display:flex;flex-direction:column;gap:2px}.ptask{display:flex;align-items:center;gap:8px;padding:3px 0}.ptask-check{cursor:pointer;accent-color:var(--teal)}.ptask-title{flex:1 1;font-size:13px;color:var(--ink);cursor:text}.ptask-title:hover{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;text-underline-offset:3px}.ptask-title.done{color:var(--ink-faint);text-decoration:line-through}.ptask .iconbtn{width:20px;height:20px;font-size:11px}.ptask-sync{font-size:12px;color:var(--ink-faint);cursor:default}.ptask-add{display:flex;align-items:center;gap:6px;margin-top:8px}.ptask-add input{flex:1 1;font-family:var(--font-body);font-size:12px;border:1px solid var(--line-strong);border-radius:6px;padding:5px 8px;background:var(--surface);color:var(--ink)}.phase .foot{display:flex;justify-content:space-between;align-items:center;margin-top:8px}.phase .target{font-family:var(--font-mono);font-size:11px;color:var(--ink-soft)}.project-block{background:var(--surface);border:1px solid var(--line-strong);border-radius:12px;padding:18px 20px}.project-block+.project-block{margin-top:16px}.project-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.project-head h3{font-family:var(--font-display);font-size:16px;margin:0}.phase .addform{width:100%}.tasklist-filters{display:flex;gap:6px;margin-bottom:14px;flex-wrap:wrap}.tasklist-filters button{font-family:var(--font-mono);font-size:11px;background:var(--surface-sunk);border:1px solid transparent;border-radius:16px;padding:5px 12px;cursor:pointer;color:var(--ink-soft)}.daypick button.pill.active,.tasklist-filters button.active{background:var(--ink);color:var(--bg)}.footer-note{margin-top:30px;color:var(--ink-faint);text-align:center}.footer-note,.footer-note button{font-size:12px;font-family:var(--font-mono)}.footer-note button{background:none;border:none;color:var(--clay-ink);text-decoration:underline;cursor:pointer}