*{box-sizing:border-box} :root{font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","PingFang SC",sans-serif;color:#253537;font-size:14px}body{margin:0}button,input,select{font:inherit}button{cursor:pointer;border:0;background:none;color:inherit}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid #508f91;outline-offset:3px}#app{display:flex;height:100dvh;overflow:hidden}.sidebar{width:252px;flex-shrink:0;background:#f5f6f5;border-right:1px solid #e5e8e6;display:flex;flex-direction:column;padding:34px 16px 18px}.brand{display:flex;align-items:center;gap:11px;padding:0 12px 37px;font-size:21px;font-weight:600;letter-spacing:2px}.brandmark{background:#2e6f70;color:white;width:32px;height:32px;border-radius:10px;display:grid;place-items:center;font-size:20px}.brand small{font-size:11px;color:#9aa5a3;letter-spacing:1px;margin-left:auto}.navscroll{overflow:auto;flex:1}.navrow{display:flex;align-items:center;gap:10px;min-height:42px;border-radius:7px;padding:0 11px;margin:3px 0;position:relative}.navrow.active{background:#e1ece8;color:#276658}.navrow.active:before{content:"";position:absolute;left:0;height:18px;width:3px;background:#3a7f6a;border-radius:4px}.navname{flex:1;min-width:0;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:10px 0}.navicon{font-size:19px;color:#7b9190;width:21px;text-align:center}.count{color:#8b9693;font-size:12px}.more{opacity:0;font-size:18px;padding:2px 5px}.navrow:hover .more,.navrow:focus-within .more{opacity:1}.navrow:hover .count{display:none}.separator{height:1px;background:#e0e4e1;margin:22px 10px}.grouprow{margin-top:15px;color:#6c7977;font-size:13px}.child{margin-left:17px}.sidebarfoot{border-top:1px solid #e0e4e1;padding-top:15px;display:flex;justify-content:space-between}.sidebarfoot button{padding:9px}.main{position:relative;flex:1;min-width:0;background:#eef2f0;display:flex;flex-direction:column;padding:53px 44px 26px}.main.day{background:linear-gradient(160deg,#254c5c,#6f9395 65%,#c5cfc7);color:white}.main.day:before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(12,36,44,.38),rgba(17,37,37,.08) 50%,rgba(12,32,37,.2)),url('background.jpg') center/cover;pointer-events:none}.main>*{position:relative}.eyebrow{font-size:11px;letter-spacing:3px;opacity:.6;margin-bottom:12px}.heading{display:flex;align-items:center;gap:14px}.heading h1{font-size:32px;font-weight:600;margin:0;letter-spacing:1px}.date{margin-top:10px;opacity:.8;font-size:14px}.header{margin-bottom:36px}.tasks{overflow:auto;flex:1;padding-bottom:20px}.task{background:rgba(255,255,255,.95);color:#293936;border:1px solid rgba(255,255,255,.3);display:flex;align-items:center;gap:14px;border-radius:8px;min-height:72px;padding:14px 17px;margin-bottom:9px;cursor:pointer;box-shadow:0 2px 5px #17333505}.task.selected{border-color:#569281;box-shadow:0 0 0 1px #569281}.check{width:21px;height:21px;border:1.5px solid #a5b4af;border-radius:50%;flex-shrink:0;padding:0;display:grid;place-items:center;font-size:12px}.check.checked{color:#fff;background:#41806e;border-color:#41806e}.tasktext{flex:1;min-width:0}.tasktitle{font-size:15px;line-height:1.5}.done .tasktitle,.step.done span{text-decoration:line-through;color:#98a29e}.meta{font-size:12px;color:#84908a;margin-top:4px}.grip{color:#a0aca7;cursor:grab;opacity:0}.task:hover .grip,.step:hover .grip{opacity:1}.sun{color:#91a7a0;font-size:20px;padding:8px}.sun.on{color:#458671}.completed{display:flex;gap:8px;font-size:12px;align-items:center;padding:18px 2px 12px;opacity:.8}.adder{display:flex;align-items:center;gap:14px;background:rgba(255,255,255,.93);padding:0 20px;border-radius:8px;min-height:58px;color:#45625b;box-shadow:0 4px 18px #152d3410}.adder input{border:0;outline:0;background:transparent;flex:1;min-width:0;height:58px;color:#2b3d37;font-size:15px}.adder>span{font-size:25px;font-weight:300}.adder button{font-size:12px;color:#8b9893}.bottomhint{font-size:11px;opacity:.65;text-align:center;margin-top:12px}.detail{width:340px;flex-shrink:0;background:#fcfdfc;display:flex;flex-direction:column;border-left:1px solid #e4e8e5;padding:23px}.detailtop{display:flex;justify-content:space-between;align-items:center;color:#89948f;font-size:12px;margin-bottom:25px}.iconbtn{font-size:21px;padding:4px 8px;color:#86948e}.detailtitle{display:flex;align-items:flex-start;gap:12px;margin-bottom:20px}.detailtitle .check{margin-top:7px}.titleinput{border:0;background:none;font-size:19px;font-weight:550;width:100%;line-height:1.7;color:#2c3c34}.detailbody{flex:1;overflow:auto}.step{display:flex;align-items:center;gap:10px;padding:12px 0;border-bottom:1px solid #edf0ed}.step span{flex:1;font-size:14px}.step .check{width:17px;height:17px}.step .iconbtn{font-size:16px}.stepadd{display:flex;align-items:center;gap:12px;padding:16px 0;color:#43816e}.stepadd input{width:100%;border:0;background:transparent;outline:0;padding:5px 0}.properties{border-top:1px solid #e7ece8;margin-top:17px}.property{display:flex;align-items:center;gap:12px;padding:20px 0;border-bottom:1px solid #e7ece8;min-height:64px}.property label{color:#75867d;white-space:nowrap;font-size:13px}.property input,.property select{min-width:0;max-width:165px;margin-left:auto;border:0;background:none;color:#3c6959;font-size:13px}.daytoggle{width:100%;text-align:left;color:#477d68}.detailfoot{border-top:1px solid #e5e9e6;padding-top:15px;display:flex;align-items:center;justify-content:space-between;color:#94a096;font-size:11px}.empty{text-align:center;padding:55px 0;opacity:.75}.empty p{font-size:13px}.mobilemenu{display:none}dialog{border:1px solid #e3e9e4;border-radius:14px;padding:26px;width:360px;color:#2c4036;box-shadow:0 20px 90px #122e3633}dialog::backdrop{background:#16302b40;backdrop-filter:blur(3px)}dialog h2{font-size:19px;margin-top:0}dialog input,dialog select{padding:11px;width:100%;border:1px solid #d9e1dc;border-radius:6px;margin:8px 0 14px}dialog label{font-size:13px;color:#718178}.actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.actions button{padding:9px 17px;border-radius:6px;background:#eef1ef}.actions .primary{background:#3e7965;color:white}.actions .danger{background:#a74949;color:white}.menulist{display:grid;gap:5px}.menulist button{text-align:left;padding:12px;border-radius:6px;background:#f3f6f3}.dropover{outline:2px solid #8bb3a7;outline-offset:-2px}.rootdrop{font-size:11px;color:#89978f;text-align:center;padding:10px;display:none}body.dragging .rootdrop{display:block} @media(min-width:1500px){.main{padding:65px 58px 30px}.sidebar{width:270px}.task{min-height:76px}}@media(max-width:1050px){.sidebar{width:218px}.main{padding:38px 25px 22px}.detail{width:310px}}@media(max-width:760px){.sidebar{display:none;position:absolute;z-index:5;inset:0 auto 0 0;width:260px;box-shadow:10px 0 40px #233a3433}.sidebar.open{display:flex}.main{padding:30px 20px 18px}.mobilemenu{display:block}.detail{position:absolute;right:0;top:0;bottom:0;z-index:6;width:min(360px,100%);box-shadow:-12px 0 40px #233a3422}.heading h1{font-size:29px}.header{margin-bottom:27px}}
.header,.adder{flex-shrink:0}.tasks,.detailbody,.navscroll{min-height:0}.adder{margin-top:12px}.tasktitle{font-size:16px}.grouprow{font-size:14px}.stepadd input{font-size:14px}
body.dragging{user-select:none;cursor:grabbing} [draggable]{touch-action:pan-y}.grip{touch-action:none}
.grouprow{padding:0;gap:0;cursor:pointer}.group-toggle{display:flex;align-items:center;gap:10px;flex:1;min-width:0;min-height:42px;padding:0 11px;text-align:left;border-radius:7px}.group-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.group-chevron{font-size:21px;width:18px;text-align:center;color:#7b9190}.grouprow .more{position:absolute;right:30px;background:#f5f6f5;padding:0 5px}.grouprow:hover{background:#e9eeeb}.grouprow:hover .more{background:#e9eeeb}
/* Compact typography for the desktop working surface. */
:root{font-size:13px}.brand{font-size:18px}.heading h1{font-size:27px}.date{font-size:13px}.tasktitle{font-size:14px}.grouprow,.step span,.stepadd input{font-size:13px}.adder input{font-size:13px}.titleinput{font-size:16px}.property label,.property input,.property select,dialog label{font-size:12px}dialog h2{font-size:17px}@media(max-width:760px){.heading h1{font-size:25px}}
/* Denser task rows, with room for a title and optional progress line. */
.task{min-height:50px;padding:8px 13px;gap:11px;margin-bottom:6px;border-radius:5px}.task .check{width:18px;height:18px}.task .sun{font-size:18px;padding:5px}.meta{margin-top:2px}.adder{min-height:44px;padding:0 15px;gap:11px;border-radius:5px;margin-top:8px}.adder input{height:44px}.adder>span{font-size:22px}.completed{padding:12px 2px 9px}
.weekly{background:#fafbf9;padding:42px 28px 28px}.review-header{flex-shrink:0;margin-bottom:25px}.review-header h1{font-size:25px;letter-spacing:0}.week-navigation{display:flex;align-items:center;gap:22px;margin-top:22px;color:#708079}.week-navigation button{padding:7px 0;font-size:13px}.week-navigation button:hover{color:#306e59}.week-range{font-size:13px;font-variant-numeric:tabular-nums;color:#43584c}.week-scroll{flex:1;min-height:0;overflow:auto}.week-table{border-collapse:collapse;table-layout:fixed;width:100%;height:100%;min-width:680px}.week-table th{font-weight:500;text-align:center;font-size:13px;color:#617268;height:48px}.week-table small{display:block;font-size:11px;color:#95a198;margin-top:7px;font-weight:400}.week-table .period-heading{width:96px;text-align:left;padding-right:10px}.week-table tbody th{vertical-align:top;padding-top:18px}.week-table td{border:1px solid #e4e9e3;vertical-align:top;padding:0;background:#fff}.week-table thead th{padding-bottom:15px}.week-table .is-today{color:#2e765b}.week-table .is-today small{color:#2e765b}.week-table tbody tr{height:33.333%}.review-cell{height:clamp(142px,calc((100dvh - 235px)/3),245px);padding:10px 5px 7px;display:flex;flex-direction:column;gap:4px}.cell-tasks{overflow:auto;min-height:0;flex:1}.review-task{display:flex;align-items:flex-start;gap:5px;width:100%;padding:7px 4px;text-align:left;font-size:12px;line-height:1.45;border-radius:4px;color:#354b3c}.review-task>span:first-child{color:#8ea697;font-size:11px;flex-shrink:0}.review-task>span:last-child{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}.review-task:hover,.review-task.selected{background:#edf3ee}.cell-expand{align-self:flex-start;color:#658170;font-size:12px;padding:3px 5px}.completion-time{padding:15px 0;font-size:12px;color:#738377;border-bottom:1px solid #e7ece8}.completion-time time{display:block;margin-top:6px;color:#435e4c}.weekly + .detail{width:300px}@media(max-width:1100px){.weekly{padding:30px 18px 20px}.weekly + .detail{position:absolute;right:0;top:0;bottom:0;z-index:6;box-shadow:-10px 0 35px #203a3220}}@media(max-width:760px){.week-navigation{gap:12px}.week-navigation button{font-size:12px}.week-range{font-size:12px}.weekly .review-header h1{font-size:23px}}
.review-cell{height:clamp(180px,calc((100dvh - 235px)/3),245px)}.review-task{padding:5px 4px}.week-table{height:auto}.week-table tbody tr{height:auto}

.snapshot-steps{padding:0;list-style:none}.snapshot-steps li{display:flex;gap:10px;padding:9px 0;color:#536b58}.snapshot-title{font-size:17px;line-height:1.6}.snapshot-origin,.snapshot-caption{font-size:12px;color:#849186}.open-original{font-size:13px;color:#4f7b5f}.snapshot-notes{white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.6;padding:16px 0}
.data-entry{font-size:12px;color:#667b70;text-align:left;padding:14px 10px 6px}#storage-status{font-size:10px;color:#91a094;padding:4px 10px}.save-error{color:#a74e41!important}.startup{margin:auto;padding:36px;max-width:620px;line-height:1.8}.startup h2{font-size:20px}.startup button,.data-action{padding:12px;background:#edf2ee;border-radius:5px}.data-action{display:block;width:100%;text-align:left;margin:12px 0}.data-note{font-size:12px;color:#7d8c81;line-height:1.8}#data-message{font-size:12px;color:#4c7660;line-height:1.6}dialog{max-height:85dvh;overflow:auto}.recovery-list{max-height:260px;overflow:auto}.recovery-list>div{display:flex;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid #e2e8e3}.recovery-list small{display:block;color:#98a599;margin-top:4px}.recovery-list button{color:#3a7860}.notes-label{display:block;padding-top:18px;color:#738577}#task-notes{font:inherit;resize:vertical;min-height:110px;width:100%;margin-top:10px;padding:10px;border:1px solid #e1e7e0;border-radius:5px;background:transparent;color:inherit}.history-button{color:#829286;font-size:11px;margin:12px 0}.week-filters{display:flex;gap:18px;flex-wrap:wrap;margin-top:16px}.week-filters label{display:flex;gap:7px;align-items:center;color:#86958a;font-size:11px}.week-filters select{max-width:190px;background:transparent;border:1px solid #e0e7df;border-radius:4px;padding:5px;color:#506758;font-size:12px}.weekly .review-header{margin-bottom:14px}.review-cell{height:clamp(128px,calc((100dvh - 290px)/3),190px)}.review-task>span:last-child{display:block;-webkit-line-clamp:unset;overflow:visible}.review-task strong{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-weight:400}.review-task small{margin-top:3px;font-size:10px;color:#8b9d8d}.week-empty{font-size:12px;color:#8c9a8e;text-align:center}.week-table .period-heading{width:88px}.week-navigation{margin-top:14px}.week-navigation #current-week{font-size:11px;margin-left:auto}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
.export-fallback{margin-top:12px}.export-fallback textarea{width:100%;height:160px;font:11px monospace;resize:vertical;border:1px solid #dde5df}.export-fallback button{padding:8px 0}
/* Keep the existing Practice page isolated while sharing the Todo sidebar. */
.practice-host{flex:1;min-width:0;display:flex;flex-direction:column;background:#f5f7fc}.practice-frame{border:0;width:100%;flex:1;min-height:0}.practice-mobilebar{display:none;padding:14px 20px;color:#60708a}@media(max-width:760px){.practice-mobilebar{display:block}}
/* Compact sidebar rhythm; retain the existing type size and navigation hierarchy. */
.sidebar .navrow{min-height:34px;margin:1px 0;border-radius:5px}
.sidebar .navname{padding:7px 0}
.sidebar .group-toggle{min-height:34px;border-radius:5px}
.sidebar .grouprow{margin-top:7px}
.sidebar .separator{margin:13px 10px}
.sidebar .brand{padding-bottom:25px}
.sidebar .sidebarfoot{padding-top:8px}
.sidebar .sidebarfoot button{padding:7px 9px}
.sidebar .data-entry{padding:8px 10px 4px}
.sidebar #storage-status{padding:3px 10px}
.project-page{background:#fafbf9;padding:36px 30px}.project-toolbar{display:flex;gap:20px;margin-top:18px;font-size:12px;color:#577463}.project-body{overflow:auto;flex:1;min-height:0;max-width:1000px}.project-directory>button{display:flex;justify-content:space-between;width:100%;padding:18px 0;border-bottom:1px solid #e0e7df;text-align:left}.project-directory small{display:block;color:#8b9b8e;margin-top:6px}.project-directory>button>span:last-child{color:#829486;font-size:12px}.project-state{margin:24px 0}.project-state>div{display:grid;grid-template-columns:95px 1fr;gap:20px;margin:18px 0}.project-state dt{color:#8c998e;font-size:12px}.project-state dd{margin:0;white-space:pre-wrap;line-height:1.6;overflow-wrap:anywhere}.project-body h2,.weekly-projects h3{font-size:14px;font-weight:500;margin-top:26px}.project-activity-row{display:flex;justify-content:space-between;align-items:baseline;gap:20px;width:100%;text-align:left;padding:12px 0;border-bottom:1px solid #e6ebe3;line-height:1.6}.project-activity-row small{display:block;color:#8b9c8d;font-size:11px}.project-activity-row time{font-size:11px;color:#8b9c8d;white-space:nowrap}.project-delete{color:#a36a62;font-size:12px;margin:28px 0}.project-recover{display:flex;justify-content:space-between;padding:12px 0}.project-manual-history,.weekly-projects{margin-top:24px;font-size:12px;color:#617866}.project-manual-history article{padding:12px 0;border-bottom:1px solid #e0e8df}.project-list-options{border:1px solid #dfe5dc;max-height:150px;overflow:auto}.project-list-options label{display:flex;gap:8px;align-items:center;margin:8px 0}.project-list-options input{width:auto;margin:0}.project-form input:disabled{opacity:.45}#project-form-error{color:#a64949;font-size:12px}.weekly-projects{margin-bottom:24px}.project-body>details{margin:20px 0}

/* Sidebar: distinct navigation, group, and nested-list levels. */
.sidebar{background:#f0f1f0;padding-left:10px;padding-right:10px}
.sidebar .navrow{min-height:36px;gap:12px;padding:0 12px;margin:1px 0;border-radius:4px}
.sidebar .navname{padding:8px 0;font-size:14px}
.sidebar .navicon{display:flex;align-items:center;justify-content:center;flex:0 0 20px;width:20px}
.sidebar .icon-day,.sidebar .icon-group{color:#778792}
.sidebar .icon-week{color:#287b79}
.sidebar .icon-practice{color:#b77554}
.sidebar .icon-list{color:#697cc2}
.sidebar .navrow.active{background:#dce2df;color:#243d36}
.sidebar .navrow.active:before{display:none}
.sidebar .grouprow{margin-top:10px;color:#475452;font-size:14px}
.sidebar .group-toggle{gap:12px;min-height:36px}
.sidebar .child{margin-left:26px}
.sidebar .group-chevron{display:flex;align-items:center;color:#84918c}
.sidebar .group-chevron svg{width:16px;height:16px;transition:transform .15s}
.sidebar .group-chevron.expanded svg{transform:rotate(90deg)}
.sidebar .separator{margin:17px 12px;background:#d2d8d4}
.sidebar .count{margin-left:auto;color:#7d8581;font-variant-numeric:tabular-nums}
.sidebar .more{position:absolute;right:5px;background:#f0f1f0}
.sidebar .navrow.active .more{background:#dce2df}
.sidebar .navrow:hover .count{display:block;visibility:hidden}
.sidebar .grouprow .more{right:28px}
.sidebar .brand{padding:0 12px 24px}

.completion-time label{display:block;margin-bottom:8px}.completion-time input{font:inherit;color:#456653;border:1px solid #dce5df;border-radius:4px;padding:7px;background:transparent;width:100%;min-width:0}

.time-section{border-top:1px solid #e7ece8;margin-top:20px;padding:18px 0;color:#738279;font-size:12px}.time-heading{font-size:10px;letter-spacing:1.4px;margin-bottom:10px}.time-totals{display:flex;gap:28px;margin:14px 0}.time-totals b{display:block;font-weight:400;margin-top:5px;color:#425f50}.time-add{padding:4px 0 16px;font-size:11px;color:#84918a}.time-session{display:flex;justify-content:space-between;gap:10px;width:100%;text-align:left;padding:8px 0;font-size:11px}.time-session:hover{background:#eef2ef}.task-time{font-size:11px;color:#8b9890;white-space:nowrap}.time-presets{display:flex;gap:20px;margin-bottom:18px}#time-error{color:#a74e41;font-size:12px}#timer-toggle{font-variant-numeric:tabular-nums;padding:4px 0}

.week-summary{display:flex;gap:20px;align-items:center;font-size:11px;color:#89958c;margin-left:auto}.week-summary b{font-weight:400;color:#607567;margin-left:6px;font-variant-numeric:tabular-nums}.record-duration{font-size:12px;color:#829087;padding:18px 0}.record-duration strong{display:block;font-size:15px;font-weight:400;color:#456653;margin-top:8px}.record-work h3{font-size:12px;font-weight:400;color:#829087;margin:6px 0 12px}.record-work>div{display:flex;justify-content:space-between;gap:12px;padding:8px 0;font-size:11px;color:#6c7e71}.record-work{margin-bottom:20px}

.time-undo{font-size:11px;color:#87948b;margin-bottom:12px}.time-undo button{color:#4d7860;text-decoration:underline;margin-left:6px}
.task-delete{opacity:0;border:0;background:transparent;color:#84938e;font-size:18px;padding:4px;cursor:pointer;order:9}.task:hover .task-delete,.task:focus-within .task-delete,.review-task-wrap:hover .task-delete,.review-task-wrap:focus-within .task-delete{opacity:1}.task-delete:hover{color:#a24c4c}.review-task-wrap{position:relative;padding-right:18px}.review-task-wrap>.task-delete{position:absolute;right:0;top:5px}.task-context{position:fixed;z-index:1000;padding:4px;background:white;box-shadow:0 3px 16px #0002;border:1px solid #dce3df;border-radius:6px}.task-context button{padding:7px 20px;color:#a24c4c}
.weekly-practice{margin-top:26px;padding:18px 0 6px;border-top:1px solid #dfe7df;min-width:680px}.weekly-practice>header{display:flex;align-items:center;gap:14px;margin-bottom:16px}.weekly-practice h2{font-size:14px;font-weight:550;margin:0}.weekly-practice header>span,.weekly-practice>p{font-size:11px;color:#91a093}.weekly-practice header>button{margin-left:auto;font-size:11px;color:#567b65}.weekly-practice-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));margin-left:88px}.weekly-practice-day{padding:0 9px;border-left:1px solid #e5ebe3;min-width:0}.practice-day-label{font-size:10px;color:#91a092}.practice-day-records{max-height:155px;overflow:auto;margin-top:8px}.practice-day-records>button{display:block;width:100%;text-align:left;padding:7px 0;font-size:11px}.practice-day-records strong{display:block;font-weight:500;line-height:1.5}.practice-day-records em{font-style:normal;font-weight:400;color:#73937c}.practice-day-records small{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;color:#8a9b8d;line-height:1.6;margin-top:3px;overflow-wrap:anywhere}.practice-day-records time{font-size:9px;color:#a1ada3}.practice-day-records button:hover{color:#38765b}.practice-day-empty{font-size:11px;color:#c4cdc3}
/* Editable step titles preserve the existing lightweight row. */
.step-title{flex:1;min-width:0;width:100%;border:0;background:transparent;padding:3px 0;color:inherit;font:inherit;font-size:13px;line-height:1.5}
.step.done .step-title{text-decoration:line-through;color:#98a29e}
.step-title:focus{color:#2c3c34;text-decoration:none;background:#f1f5f2;border-radius:3px}
