:root{--bg:#f6f3ee;--surface:#fff;--line:#e4ddd3;--text:#2b2723;--muted:#8a8178;--accent:#2b2723;--accent-text:#fff;--danger:#a8402f;--radius:10px;color:var(--text);font-family:Segoe UI,system-ui,-apple-system,sans-serif;font-size:15px}*{box-sizing:border-box}body{background:var(--bg);margin:0}h2{margin:0 0 12px;font-size:18px;font-weight:600}p{margin:0}.muted{color:var(--muted)}.empty{text-align:center;color:var(--muted);padding:28px 0}input,select,button{font:inherit;color:inherit}input,select{border:1px solid var(--line);background:var(--surface);border-radius:8px;min-width:0;height:36px;padding:0 10px}input:focus-visible,select:focus-visible,button:focus-visible,a:focus-visible{outline-offset:1px;outline:2px solid #b08968}button{cursor:pointer;white-space:nowrap;border:1px solid #0000;border-radius:8px;height:36px;padding:0 16px}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--accent);color:var(--accent-text)}button.danger{background:var(--danger);color:#fff}button.ghost{background:var(--surface);border-color:var(--line)}button.link{height:auto;color:var(--muted);text-underline-offset:3px;background:0 0;padding:0;text-decoration:underline}button.link:hover{color:var(--text)}button.icon{width:32px;height:32px;color:var(--muted);background:0 0;padding:0;font-size:12px}button.icon:hover{background:var(--bg);color:var(--text)}label{color:var(--muted);flex-direction:column;gap:5px;font-size:13px;display:flex}label>input,label>select{color:var(--text);font-size:15px}label.check{flex-direction:row;align-items:center;gap:8px}label.check input{width:16px;height:16px}.topbar{background:var(--surface);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:8px 28px;padding:12px 24px;display:flex}.brand{letter-spacing:.04em;text-transform:uppercase;font-size:17px;font-weight:600}.topbar nav{flex:1;gap:4px;display:flex}.topbar nav a{color:var(--muted);border-radius:8px;padding:7px 14px;text-decoration:none}.topbar nav a:hover{color:var(--text)}.topbar nav a.active{background:var(--bg);color:var(--text);font-weight:600}.account{align-items:center;gap:16px;font-size:14px;display:flex}.account-name{font-weight:600}main{flex-direction:column;gap:16px;max-width:1180px;margin:0 auto;padding:24px 16px 64px;display:flex}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px}.card-actions{flex-wrap:wrap;align-items:center;gap:12px 16px;margin-bottom:12px;display:flex}.timer,.entry{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.timer-description,.entry-description{flex:220px}.timer select,.entry select{max-width:190px}.clock{text-align:right;font-variant-numeric:tabular-nums;min-width:92px;font-size:20px;font-weight:600}.week-nav{flex-wrap:wrap;align-items:center;gap:10px;margin-top:8px;display:flex}.week-nav .ghost{width:36px;padding:0}.week-total{margin-left:auto}.day{padding:0}.day>header{border-bottom:1px solid var(--line);border-radius:var(--radius) var(--radius) 0 0;color:var(--muted);background:#faf8f4;justify-content:space-between;padding:10px 16px;display:flex}.day>header strong{color:var(--text)}.entry{padding:8px 16px}.entry+.entry{border-top:1px solid var(--line)}.entry input,.entry select{border-color:#0000}.entry input:hover,.entry select:hover,.entry input:focus,.entry select:focus{border-color:var(--line)}.entry-duration{text-align:right;font-variant-numeric:tabular-nums;min-width:48px}.filters{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.filters label{flex:130px}.filter-actions{gap:8px;display:flex}.report-head{justify-content:space-between;align-items:flex-start;margin-bottom:12px;display:flex}.report-head h2{margin-bottom:2px}.report-total{text-align:right}.report-total strong{font-variant-numeric:tabular-nums;font-size:26px;display:block}table{border-collapse:collapse;width:100%}.table-scroll{overflow-x:auto}th,td{text-align:left;vertical-align:middle;padding:9px 10px}table.data thead th{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border-bottom:1px solid var(--line);white-space:nowrap;font-size:12px;font-weight:600}table.data tbody tr+tr td{border-top:1px solid var(--line)}.num{font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right!important}table.bars th{width:26%;font-weight:400}.bar-cell{width:55%}.bar{border-radius:4px;min-width:2px;height:14px}.dot{border-radius:50%;width:10px;height:10px;margin-right:8px;display:inline-block}.tag{background:var(--bg);color:var(--muted);border-radius:6px;margin-left:8px;padding:2px 7px;font-size:12px}tr.archived td{color:var(--muted)}.row-actions{text-align:right;white-space:nowrap}.row-actions .link+.link{margin-left:14px}.budget{font-variant-numeric:tabular-nums;align-items:center;gap:10px;min-width:160px;display:flex}.budget-track{background:var(--bg);border-radius:4px;flex:1;height:8px;overflow:hidden}.budget-fill{background:#5a9e4b;height:100%}.budget-fill.over{background:var(--danger)}.over-text{color:var(--danger);font-weight:600}.tabs{gap:4px;display:flex}.tabs button{color:var(--muted);background:0 0}.tabs button.active{background:var(--surface);border-color:var(--line);color:var(--text);font-weight:600}.auth{place-items:center;min-height:100vh;padding:16px;display:grid}.overlay{background:#2b272359;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.dialog{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;gap:14px;width:min(400px,100%);padding:24px;display:flex}.dialog h2{margin:0}.dialog-actions{justify-content:flex-end;gap:8px;display:flex}.form-error{color:var(--danger);font-size:14px}.swatches{flex-wrap:wrap;gap:8px;display:flex}.swatch{border-radius:50%;width:26px;height:26px;padding:0}.swatch.selected{box-shadow:0 0 0 2px var(--surface), 0 0 0 4px var(--text)}.toast{background:var(--danger);color:#fff;cursor:pointer;z-index:10;border-radius:8px;max-width:calc(100% - 32px);padding:12px 18px;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}@media (max-width:640px){.topbar{padding:10px 16px}.topbar nav{flex-basis:100%;order:3}.account{margin-left:auto}.timer select,.entry select{flex:140px;max-width:none}}@media print{body{background:#fff}.topbar,.no-print,.toast{display:none!important}main{max-width:none;padding:0}.card{border:none;padding:0 0 16px}.bar{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.report-scope{margin-top:4px;font-weight:600}.chart{margin:8px 0 0}.chart-readout{text-align:right;min-height:20px;color:var(--muted);font-size:13px}.chart-plot{height:220px;margin:18px 0 0 48px;position:relative}.grid-line{border-top:1px solid var(--line);position:absolute;left:0;right:0}.grid-line span{color:var(--muted);white-space:nowrap;padding-right:8px;font-size:12px;position:absolute;top:-8px;right:100%}.chart-bars,.chart-x{gap:2px;display:flex}.chart-bars{position:absolute;inset:0}.bar-slot{outline-offset:-2px;flex-direction:column;flex:1 1 0;justify-content:flex-end;align-items:center;min-width:0;display:flex}.bar-value{font-variant-numeric:tabular-nums;white-space:nowrap;margin-bottom:4px;font-size:12px}.vbar{background:#8a6f5a;border-radius:4px 4px 0 0;width:100%;max-width:56px}.chart-x{margin:6px 0 0 48px}.chart-x span{text-align:center;min-width:0;color:var(--muted);white-space:nowrap;flex:1 1 0;font-size:12px;overflow:hidden}.summary{flex-wrap:wrap;align-items:flex-start;gap:24px;display:flex}.summary table{flex:420px;width:auto}.donut{flex:0 0 240px;width:240px;margin:0 auto}.donut circle{-webkit-print-color-adjust:exact;print-color-adjust:exact}.donut-total{fill:var(--text);font-size:4.4px;font-weight:600}.donut-caption{fill:var(--muted);font-size:2.4px}tr.expandable{cursor:pointer}tr.expandable:hover td{background:#faf8f4}button.count{background:var(--bg);min-width:26px;height:22px;color:var(--muted);border-radius:6px;margin-right:10px;padding:0 6px;font-size:12px}button.count[aria-expanded=true]{background:var(--text);color:#fff}tr.child-row td{background:#faf8f4;font-size:14px}tr.child-row td:first-child{padding-left:62px}button.sort{height:auto;font:inherit;letter-spacing:inherit;text-transform:inherit;color:inherit;background:0 0;padding:0}.detail-project{margin-top:2px;font-size:13px}.detail-time{white-space:nowrap;font-variant-numeric:tabular-nums}.detail-time .muted{font-size:13px}.detail-duration{font-size:17px;font-weight:600}.page-title{margin:8px 0 0;font-size:22px;font-weight:600}.page-title .dot{width:12px;height:12px}button.project-link{color:var(--text);-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line)}.legend{color:var(--muted);flex-wrap:wrap;gap:6px 18px;margin-bottom:8px;font-size:13px;display:flex}.legend-item{align-items:center;gap:6px;display:inline-flex}.legend-swatch{-webkit-print-color-adjust:exact;print-color-adjust:exact;border-radius:3px;width:12px;height:12px}.legend-tick{background:var(--text);width:2px;height:14px}.budget-input{text-align:right;width:84px;height:32px}.stage-bar{background:var(--bg);border-radius:4px;min-width:120px;height:22px;position:relative;overflow:hidden}.stage-percent{font-variant-numeric:tabular-nums;place-items:center;font-size:12px;font-weight:600;display:grid;position:absolute;inset:0}.stage-fill{height:100%}.stage-fill.over{background:var(--danger)}.stage-tick{background:var(--text);width:2px;margin-left:-1px;position:absolute;top:-4px;bottom:-4px}.stage-state{white-space:nowrap}.status{flex-wrap:wrap;gap:24px;display:flex}.status-figures{flex:260px;margin:0}.status-figures div{justify-content:space-between;align-items:baseline;gap:16px;padding:14px 0;display:flex}.status-figures div+div{border-top:1px solid var(--line)}.status-figures dt{color:var(--muted)}.status-figures dd{font-variant-numeric:tabular-nums;margin:0;font-size:22px;font-weight:600}.status-chart{flex-direction:column;flex:2 320px;align-items:center;gap:16px;display:flex}.status-progress{text-align:center;width:100%}.status-progress .budget-track{margin-top:6px}.status-chart .legend{justify-content:center}@media print{.vbar,.stage-fill,.budget-fill,.dot{-webkit-print-color-adjust:exact;print-color-adjust:exact}.table-scroll{overflow:visible}button.count{display:none}}.dialog-link{align-self:flex-start;margin-top:-8px;font-size:13px}textarea{border:1px solid var(--line);background:var(--surface);font:inherit;color:var(--text);resize:vertical;border-radius:8px;padding:8px 10px;font-size:15px}.dialog.wide{width:min(560px,100%)}.inline-form{gap:8px;display:flex}.templates{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;display:grid}.template{border:1px solid var(--line);border-radius:8px;padding:14px 16px}.template header{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.template h2{margin:0}.template ol{margin:10px 0 0;padding:0;font-size:14px;list-style:none}.template li{padding:4px 0}.template li+li{border-top:1px solid var(--line)}.report-amount{font-variant-numeric:tabular-nums;font-size:17px;font-weight:600;display:block}table.weekly thead th{text-transform:none;letter-spacing:0;line-height:1.3}table.weekly td:first-child{min-width:200px}table.weekly tfoot th{border-top:1px solid var(--line)}.stage-title{text-transform:uppercase}.stage-sub{color:var(--muted);margin-top:1px;font-size:13px;display:block}.stage-done{text-align:center}.stage-done input{vertical-align:middle;width:18px;height:18px}.done-text{color:#3d7a31;font-weight:600}tr.stage-completed td{color:var(--muted);background:#f1efec}tr.stage-completed .budget-input{color:var(--muted);background:0 0}tr.stage-completed .stage-bar{opacity:.55}.period-nav{gap:4px;display:flex}.period-nav .ghost{width:36px;padding:0}.filter-actions{align-items:center}.topbar{z-index:5;position:sticky;top:0}.card{box-shadow:0 1px 2px #2b27230a}.page-head h1{letter-spacing:-.01em;margin:0;font-size:26px;font-weight:600}.page-head p{color:var(--muted);margin-top:4px}.tabs,.segmented{background:#ebe6de;border-radius:10px;align-self:flex-start;gap:2px;padding:3px;display:inline-flex}.tabs button,.segmented button{height:32px;color:var(--muted);background:0 0;border:none;border-radius:8px;padding:0 16px}.tabs button:hover,.segmented button:hover{color:var(--text)}.tabs button.active,.segmented button.active{background:var(--surface);color:var(--text);font-weight:600;box-shadow:0 1px 2px #2b27231f}.timer{border-left:4px solid var(--line);padding:14px 16px 16px;display:block}.timer-top{align-items:center;min-height:38px;margin-bottom:10px;display:flex}.live{color:#3d7a31;align-items:center;gap:8px;font-weight:600;display:inline-flex}.live-dot{background:#5a9e4b;border-radius:50%;width:10px;height:10px;animation:1.6s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.35}}@media (prefers-reduced-motion:reduce){.live-dot{animation:none}}.timer-fields{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.field{flex:0 210px}.field.grow{flex:260px}.field.narrow{flex:none}.field>input,.field>select{width:100%;max-width:none;height:40px}.timer .clock{min-width:108px;font-size:26px;line-height:40px}button.big{min-width:104px;height:40px;font-weight:600}.day>header{color:var(--text);align-items:baseline;font-weight:600}.day>header span:first-letter{text-transform:uppercase}.entry{grid-template-columns:10px minmax(140px,1fr) 190px 210px 134px 76px 8px 76px 56px 32px 32px;align-items:center;gap:6px;padding:6px 12px 6px 16px;display:grid}.entry:hover{background:#fbfaf7}.entry-color{border-radius:50%;width:10px;height:10px}.entry input,.entry select{background:0 0;width:100%;max-width:none;padding:0 8px}.entry input[type=time]{text-align:center;font-variant-numeric:tabular-nums;padding:0 6px}.entry input[type=time]::-webkit-calendar-picker-indicator{display:none}.entry-dash{text-align:center}.entry .icon{opacity:.55}.entry:hover .icon,.entry .icon:focus-visible{opacity:1}@media (max-width:1120px){.entry{flex-wrap:wrap;display:flex}.entry input,.entry select{width:auto}.entry-description{flex:220px}}.filters{grid-template-columns:repeat(auto-fill,minmax(168px,1fr));align-items:end;gap:12px;display:grid}.filters label>input,.filters label>select{width:100%}.filter-actions{border-top:1px solid var(--line);flex-wrap:wrap;grid-column:1/-1;align-items:center;gap:8px 14px;padding-top:12px;display:flex}.filter-actions .check{color:var(--text);margin-right:auto;font-size:14px}table.data tbody tr:not(.stage-completed):not(.child-row):hover td{background:#fbfaf7}.row-actions .link{font-size:14px}button.project-link{font-weight:600;text-decoration:none}button.project-link:hover{text-decoration:underline}.filters .check{flex-direction:row;flex:none}.filters .check input{width:16px}table.stages th,table.stages td{padding:8px}table.stages thead th{white-space:normal;vertical-align:bottom;line-height:1.25}table.stages td:first-child{min-width:210px}table.stages .budget-input{width:72px}table.stages .stage-state{white-space:normal;min-width:130px;font-size:14px}.stage-bar-head{width:16%}.legend{line-height:1.5}.brand{align-items:center;display:flex}.brand img{width:auto;height:44px;display:block}.topbar{padding-top:8px;padding-bottom:8px}.auth .brand img{height:64px}.tabs,.segmented{border:1px solid var(--line);background:#efebe5}.tabs button,.segmented button{color:#5a534c}@media (min-width:1460px){.topbar{grid-template-columns:1fr minmax(0,574px) minmax(0,574px) 1fr;gap:0;display:grid}.topbar nav{margin-left:-14px}.topbar .account{justify-self:end}}.topbar{min-height:60px}.topbar .brand img{height:34px}.account{gap:22px}.account-name{border-right:1px solid var(--line);padding-right:22px;line-height:24px}.account .link{color:#5a534c;text-decoration:none}.account .link:hover{color:var(--text);text-decoration:underline}.report-bar{flex-direction:column;gap:14px;display:flex}.report-row{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.report-row+.report-row{border-top:1px solid var(--line);padding-top:14px}.period{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.period select{min-width:190px;font-weight:600}button.square{width:36px;padding:0}button.period-range{color:var(--muted);font-variant-numeric:tabular-nums;background:0 0;margin-left:8px;padding:0}button.period-range:hover{color:var(--text);text-decoration:underline}.report-actions{gap:8px;margin-left:auto;display:flex}.report-row.filters{grid-template-columns:none;display:flex}.report-row.filters label:not(.check){flex:0 220px}.report-row.filters .check{height:36px;color:var(--text);font-size:14px}.filter-links{align-items:center;gap:18px;height:36px;margin-left:auto;display:flex}.tabs,.segmented{max-width:100%;overflow-x:auto}.tabs button,.segmented button{flex:none}.report-row.filters label:not(.check){flex-basis:200px}.vbar{background:#a9c49a}.vbar.active{background:#8fb07f}.budget-fill{background:#a9c49a}.budget-fill.over,.stage-fill.over{background:#d99a8c}.stage-percent.on-fill{color:var(--text)}.timer.running{border-left-color:#a9c49a}.live-dot{background:#8fb07f}.stage-info{background:var(--bg);border-radius:8px;margin:0 0 14px;padding:10px 14px}.stage-tools{margin-bottom:0;padding-bottom:16px}table.stages thead th{border-top:1px solid var(--line);color:#5a534c;background:#faf8f4;padding-top:10px;padding-bottom:10px}table.stages thead th:first-child{border-left:1px solid var(--line);border-top-left-radius:8px}table.stages thead th:last-child{border-right:1px solid var(--line);border-top-right-radius:8px}table.stages{border-collapse:separate;border-spacing:0}table.stages tbody tr+tr td{border-top:none}table.stages tbody td{border-bottom:1px solid var(--line)}table.stages tfoot th{border-top:none}.stage-info{color:var(--muted);border:1px solid var(--line);background:#fff}.tabs,.segmented{background:#f1ede7;border:none}.tabs button.active,.segmented button.active{font-weight:500;box-shadow:0 1px 2px #2b272312}.tabs button:focus-visible,.segmented button:focus-visible{outline-offset:0;outline:1px solid #cdc4b8}table.stages thead th{vertical-align:middle;background:#f6f3ee;padding-top:13px;padding-bottom:13px;font-size:12.5px}table.stages thead th:first-child{letter-spacing:.08em;color:var(--text);font-size:15px}table.stages thead th{white-space:nowrap;letter-spacing:.02em;font-size:12px}table.stages thead th:first-child{letter-spacing:.08em}table.stages tfoot th{padding-top:14px;padding-bottom:14px;font-weight:600}table.stages tfoot .stage-bar{height:26px}table.stages tfoot .stage-state{text-align:left;font-weight:400}.rule>header{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.rule h2{margin-bottom:4px}.rule>header .check{color:var(--text);flex:none;font-size:14px}.rule.off>header h2{color:var(--muted)}.rule-body{border-top:1px solid var(--line);flex-direction:column;gap:12px;margin-top:14px;padding-top:14px;display:flex}.rule-line,.rule-body .check{color:var(--text);flex-wrap:wrap;align-items:center;gap:8px;font-size:15px;display:flex}.rule-line.muted{color:var(--muted)}.rule-body input[type=number]{text-align:right;width:76px}.rule-save{align-items:center;gap:14px;display:flex}.stage-info a{color:inherit}
