:root{--bg:#f7f7f5;--surface:#fff;--line:#e4e4e0;--row-line:#eeeeeb;--muted:#777772;--text:#262624;--accent:#276749;--actual:#1673c9;--danger:#c33b32;--working-bg:#fff4cf;--task-grid:minmax(198px,2.5fr) minmax(52px,.5fr) minmax(58px,.58fr) minmax(58px,.58fr) minmax(54px,.52fr)}

*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);font:14px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
button,.button,input,textarea{font:inherit}
button,.button{border:1px solid var(--line);background:#fff;color:inherit;border-radius:5px;padding:6px 9px;cursor:pointer;text-decoration:none}
button:hover,.button:hover{background:#f2f2ef}

.app-header{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:18px;min-height:54px;padding:8px 16px;background:rgba(255,255,255,.96);border-bottom:1px solid var(--line)}
.app-header nav,.actions{display:flex;align-items:center;gap:7px}
.app-header nav strong{min-width:116px;text-align:center}
.actions{margin-left:auto}
.actions form{margin:0}
.views{display:flex}
.views button{border-radius:0}
.views .active{background:#deded9}

.board-scroll{overflow-x:auto;padding:12px 12px 0}
.week-board{display:grid;grid-template-columns:repeat(var(--visible-days,5),minmax(430px,1fr));min-width:calc(var(--visible-days,5)*430px);border:1px solid var(--line);background:#fff}
.day-column{min-width:0;border-right:1px solid var(--line);display:flex;flex-direction:column}
.day-column:last-child{border-right:0}
.column-header,.task-row,.input-slot{display:grid;grid-template-columns:var(--task-grid)}
.column-header{position:static;min-height:31px;background:#f2f2ef;border-bottom:1px solid var(--line);color:var(--muted);font-size:10px;font-weight:650;align-items:center}
.column-header span{padding:6px 4px;border-left:1px solid var(--line);white-space:nowrap;text-align:center}
.column-header span:first-child{border-left:0;text-align:left;padding-left:10px}
.day-header{position:static;padding:9px 10px;background:#fafaf8;border-bottom:1px solid var(--line);font-weight:650}
.day-header.today{box-shadow:inset 0 3px var(--accent)}

.section{border-bottom:1px solid var(--line)}
.section-title{padding:6px 9px;color:var(--muted);font-size:12px;font-weight:650;background:#fbfbfa}
.task-list{min-height:38px;position:relative}
.task-row{position:relative;min-height:42px;border-top:1px solid var(--row-line);background:#fff;align-items:stretch}
.task-row:first-child{border-top:0}
.task-row.working{background:var(--working-bg)}
.task-row.dragging{opacity:.3}
.task-row.drop-before:before,.task-row.drop-after:after,.task-list.drop-at-end:after{content:'';position:absolute;z-index:10;left:0;right:0;height:3px;background:var(--accent);pointer-events:none}
.task-row.drop-before:before{top:-2px}
.task-row.drop-after:after{bottom:-2px}
.task-list.drop-at-end:after{bottom:0}
.task-main{display:grid;grid-template-columns:49px minmax(0,1fr) 25px;min-width:0;align-items:stretch}
.state{display:flex;align-items:center;padding:4px 0 4px 4px}
.state button{border:0;background:transparent;padding:1px 3px}
.complete:before{content:'□';font-size:18px}
.completed .complete:before{content:'☑'}
.working-button:before{content:'▷';font-size:15px}
.working .working-button:before{content:'▶';color:var(--accent)}
.paused .working-button:before{content:'⏸';color:var(--muted)}
.completed .working-button{display:none}
.task-title{display:flex;align-items:center;padding:5px 2px;min-width:0;text-align:left}
.task-name{display:-webkit-box;width:100%;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow-wrap:break-word;word-break:normal;margin-left:min(calc(var(--indent,0)*14px),28px);text-align:left}
.red .task-name{color:var(--danger)}
.separator .task-name{font-size:0}
.separator .task-name:after{content:'';display:block;border-top:1px solid #aaa;margin:9px 0}
.blank{min-height:28px}
.task-menu{position:relative;display:flex;align-items:center;padding:0}
.menu-button{border:0;background:transparent;padding:2px 5px}
.menu-popover{display:none;position:absolute;z-index:30;right:3px;top:28px;width:112px;padding:4px;background:#fff;border:1px solid var(--line);box-shadow:0 5px 18px rgba(0,0,0,.14);border-radius:6px}
.menu-popover.open{display:block}
.menu-popover button{display:block;width:100%;border:0;text-align:left;padding:6px}
.menu-popover .delete-task{color:var(--danger)}

.task-row>.estimate,.task-row>.elapsed,.time-cell{display:flex;align-items:center;justify-content:center;padding:5px 3px;border-left:1px solid var(--line);overflow:hidden;white-space:nowrap;color:var(--muted);font-size:11px}
.task-row>.estimate,.task-row>.elapsed{flex-direction:column;line-height:1.15}
.minute-value{font-size:14px;color:var(--text)}
.minute-unit{font-size:9px;color:var(--muted)}
.minute-empty{color:var(--muted)}
.time-cell{flex-direction:column;line-height:1.55}
.start-cell{align-items:flex-end;padding-right:10px;overflow:visible}
.end-cell{align-items:flex-start;padding-left:10px}
.end-cell{border-left:0}
.planned-time{color:var(--text);font-size:13px}
.actual-time{color:var(--actual);font-size:13px;font-weight:600}
.start-cell span{position:relative}
.start-cell span:after{content:'→';position:absolute;left:calc(100% + 5px);width:10px;text-align:center;pointer-events:none}
.inline-cell{min-width:40px;border:0;background:transparent;border-radius:0;padding:2px 6px;text-align:center;cursor:text}
.start-cell .inline-cell{padding-right:2px}
.end-cell .inline-cell{padding-left:2px}
.inline-cell:hover{background:rgba(39,103,73,.06)}
.inline-value-editor,.task-name-editor{width:100%;min-width:0;border:1px solid var(--accent);border-radius:3px;padding:4px;background:#fff;color:var(--text);font:inherit}
.estimate .inline-value-editor{text-align:center;font-size:14px}
.input-slot{min-height:34px;border-top:1px solid var(--row-line)}
.input-slot input{min-width:0;width:100%;border:0;border-left:1px solid var(--line);border-radius:0;padding:7px 8px;background:#fff}
.input-slot input:first-child{grid-column:1;border-left:0}
.estimate-input-wrap{grid-column:2;display:flex;flex-direction:column;align-items:center;justify-content:center;border-left:1px solid var(--line);min-width:0}
.estimate-input-wrap input{border:0;text-align:center;padding:3px 4px;font-size:12px}
.input-minute-unit{font-size:9px;color:var(--muted);line-height:1}
.estimate-input-wrap input:placeholder-shown + .input-minute-unit{display:none}
.input-slot:focus-within{outline:2px solid var(--accent);outline-offset:-2px}
.add-task{width:100%;border:0;border-top:1px solid var(--row-line);border-radius:0;text-align:left;color:var(--muted);padding:6px 10px}
.task-title textarea{width:100%;padding:7px;border:1px solid var(--accent)}
.progress{margin-top:auto;padding:8px 10px;background:#fafaf8;color:var(--muted);font-size:12px}

.unscheduled{margin:12px;border:1px solid var(--line);background:#fff;min-width:430px}
.unscheduled>button{width:100%;border:0;border-radius:0;text-align:left;font-weight:650;padding:9px 12px}
.unscheduled-body{max-height:360px;overflow:auto}
.unscheduled-header{position:static}
.collapsed{display:none}
.auth{display:grid;min-height:100vh;place-items:center}
.login{width:min(380px,calc(100% - 32px));background:#fff;border:1px solid var(--line);padding:28px;border-radius:10px}
.login label{display:block;width:100%;margin:15px 0}
.login input{display:block;width:100%;margin-top:5px;padding:9px}
.primary{width:100%;background:var(--text);color:#fff}
.error,#notice:not(:empty){padding:8px;background:#fff0ee;color:#9c2920}
.placeholder{max-width:700px;margin:60px auto;padding:24px}

.task-row.completed{background:#fff}

@media(max-width:760px){.app-header{flex-wrap:wrap;gap:7px}
.app-header nav{order:3;width:100%;justify-content:center}
.actions form{display:none}
.board-scroll{padding:8px}
.unscheduled{margin:8px}
.time-editor{grid-template-columns:1fr 1fr}
}
