@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Fraunces:opsz,wght@9..144,600;9..144,700&display=swap');
:root{--ink:#17241f;--muted:#73817b;--line:#e8ece5;--paper:#fffdf9;--cream:#f6f5ef;--violet:#8270d8;--blue:#63a6d9;--coral:#e58a72;--green:#6eae7e;--yellow:#e6be62}*{box-sizing:border-box}body{margin:0;background:var(--cream);color:var(--ink);font-family:'DM Sans',sans-serif}button,input,textarea,select{font:inherit}button{cursor:pointer}main{max-width:1440px;margin:auto;background:var(--paper);min-height:100vh}header{height:84px;padding:0 5.5%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:11px}.house{font-size:36px;color:var(--violet);line-height:.6}.brand strong{display:block;font-size:21px;letter-spacing:-1px}.brand strong span{color:var(--violet)}.brand small{font-size:11px;color:var(--muted)}.primary{border:0;background:var(--ink);color:white;padding:11px 17px;border-radius:8px;font-weight:600;box-shadow:0 2px 3px #0002}.primary:hover{background:#2b3d35}nav{padding:0 5.5%;height:57px;display:flex;gap:30px;border-bottom:1px solid var(--line)}nav button{border:0;background:transparent;color:var(--muted);font-weight:600;padding:0 3px;border-bottom:2px solid transparent}nav button.active{color:var(--ink);border-bottom-color:var(--violet)}nav i{font-size:16px;font-style:normal;margin-right:8px}.page{padding:38px 5.5% 65px}.intro{display:flex;align-items:center;justify-content:space-between;margin-bottom:28px}.intro h1{font:700 34px/1.15 Fraunces,serif;margin:4px 0 8px;letter-spacing:-1px}.intro p:not(.eyebrow){margin:0;color:var(--muted);font-size:14px}.eyebrow{margin:0;color:#938bc6;font-size:10px;font-weight:700;letter-spacing:1.3px}.stats{display:flex;gap:0;border:1px solid var(--line);border-radius:10px;overflow:hidden}.stats div{padding:8px 17px;text-align:center;border-right:1px solid var(--line)}.stats div:last-child{border:0}.stats b,.stats span{display:block}.stats b{font:700 19px Fraunces,serif}.stats span{font-size:10px;color:var(--muted)}.week-note{background:#fff7df;border:1px solid #f2e5ba;border-radius:8px;color:#816a28;padding:10px 14px;font-size:12px;margin-bottom:22px}.timeline{border:1px solid var(--line);border-radius:11px;overflow:auto;background:white}.timeline-head,.task-row{display:grid;grid-template-columns:220px minmax(660px,1fr) 70px}.timeline-head{min-width:950px;background:#fbfcfa;border-bottom:1px solid var(--line)}.timeline-head>div:first-child{padding:15px;font-size:10px;font-weight:700;color:var(--muted);letter-spacing:1px}.timeline-head>div:not(:first-child){text-align:center;display:grid;grid-template-rows:14px 20px 12px;padding:6px 0;border-left:1px solid #f1f2ee;font-size:10px;color:var(--muted)}.timeline-head b{font-size:13px;color:var(--ink)}.timeline-head span{text-transform:capitalize}.timeline-head .weekend,.weekend-bg{background:#faf6eb}.timeline-body{min-width:950px}.task-row{height:69px;border-bottom:1px solid var(--line)}.task-row:last-child{border:0}.task-name{display:flex;align-items:center;gap:9px;padding:0 14px;position:relative}.task-name button{background:none;border:0;font-weight:600;text-align:left;padding:0;font-size:13px}.task-name small{position:absolute;left:30px;top:43px;font-size:10px;color:var(--muted)}.dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none}.violet{background:var(--violet)}.blue{background:var(--blue)}.coral{background:var(--coral)}.green{background:var(--green)}.yellow{background:var(--yellow)}.task-track{height:100%;position:relative;display:grid;grid-template-columns:repeat(22,1fr)}.task-track i{border-left:1px solid #f1f2ee}.bar{position:absolute;top:19px;height:31px;border-radius:6px;color:white;padding:7px 9px;min-width:35px;overflow:hidden;box-shadow:0 2px 3px #0002}.bar span{font-size:11px;white-space:nowrap;font-weight:600}.shift{display:flex;align-items:center;justify-content:center;gap:4px}.shift button{background:#f1f2ed;border:0;width:23px;height:23px;border-radius:5px;font-size:18px;line-height:14px;color:var(--muted)}.legend{display:flex;gap:20px;margin-top:13px;color:var(--muted);font-size:11px}.legend .dot{margin-right:5px}.notice{margin:18px 5.5% -10px;border-radius:8px;background:#e8f3eb;color:#356743;padding:10px 13px;font-size:13px;display:flex;justify-content:space-between}.notice button,.close{background:none;border:0;font-size:20px;color:inherit}.simple{margin-bottom:32px}.people-layout{display:grid;grid-template-columns:250px 1fr;gap:27px;align-items:start}.people-layout aside{display:grid;gap:8px}.person-card{display:flex;border:1px solid var(--line);padding:13px;border-radius:9px;background:white;text-align:left;gap:10px;align-items:center}.person-card.selected{border-color:#b5a9e9;background:#fbfaff}.person-card b,.person-card small{display:block}.person-card small{font-size:11px;color:var(--muted);margin-top:3px}.avatar{width:29px;height:29px;border-radius:50%;color:#fff;display:grid;place-items:center;font-size:12px;font-weight:700}.availability{border:1px solid var(--line);border-radius:11px;padding:24px;background:white}.card-title{display:flex;justify-content:space-between;align-items:start}.card-title h2,.add-order h2{font:700 24px Fraunces,serif;margin:3px 0}.availability>p{color:var(--muted);font-size:13px}.outline{border:1px solid var(--line);background:white;padding:8px 12px;border-radius:6px;font-size:12px}.availability-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:7px;margin:22px 0}.availability-grid>div{border:1px solid var(--line);border-radius:7px;padding:9px;text-align:center;color:#a5aaa5}.availability-grid small,.availability-grid b,.availability-grid span{display:block}.availability-grid small{font-size:10px}.availability-grid b{font-size:16px}.availability-grid span{font-size:11px;margin-top:2px}.availability-grid .available{background:#eff8ed;border-color:#b9d8b9;color:#4f945e}.availability-tip{font-size:12px;background:#f4f3fc;padding:10px;border-radius:7px;color:#5d5790}.orders-layout{display:grid;grid-template-columns:1fr 310px;gap:28px}.order-list{border:1px solid var(--line);border-radius:11px;overflow:hidden;background:#fff}.order{display:flex;align-items:center;gap:13px;padding:15px 17px;border-bottom:1px solid var(--line)}.order:last-child{border:0}.order input{accent-color:var(--green);width:17px;height:17px}.order span{flex:1}.order b,.order small{display:block}.order small{font-size:11px;color:var(--muted);margin-top:4px}.order em{font-style:normal;font-size:11px;color:#bc7b28;background:#fff4da;border-radius:20px;padding:4px 8px}.order.ordered b{text-decoration:line-through;color:var(--muted)}.order.ordered em{color:#4a9362;background:#e9f7ec}.add-order{background:#f7f6f1;border-radius:10px;padding:20px;align-self:start}.add-order label,.modal>label{display:block;font-size:12px;font-weight:600;margin-top:13px}.add-order input,.add-order select,.modal input:not([type=checkbox]),.modal textarea,.modal select{margin-top:5px;width:100%;border:1px solid #dce1db;background:white;border-radius:6px;padding:9px;font-size:13px;color:var(--ink)}.add-order .primary{width:100%;margin-top:18px}.modal-backdrop{position:fixed;inset:0;background:#16251e88;display:grid;place-items:center;padding:18px;z-index:5}.modal{width:min(540px,100%);max-height:94vh;overflow:auto;background:#fffdf9;border-radius:12px;padding:23px;box-shadow:0 10px 35px #0004}.modal-head{display:flex;justify-content:space-between;align-items:start}.modal h2{font:700 25px Fraunces,serif;margin:4px 0}.modal textarea{height:63px;resize:vertical}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.help{display:block;color:var(--muted);font-weight:400;margin-top:5px;font-size:10px}fieldset{border:0;margin:17px 0 0;padding:0}fieldset legend,.label{font-size:12px;font-weight:600;margin-bottom:8px}.check{display:inline-flex;align-items:center;margin-right:13px;gap:5px;font-size:12px}.check input,.childcare input{accent-color:var(--violet)}.check .avatar{width:22px;height:22px;font-size:10px}.childcare{display:flex!important;gap:10px;align-items:center;background:#fff5e5;padding:11px;border-radius:7px}.childcare b,.childcare small{display:block;font-size:12px}.childcare small{font-size:10px;font-weight:400;color:#8d795d;margin-top:2px}.color-pick{margin:16px 0;display:flex;gap:8px}.color-pick button{border:3px solid transparent;width:22px;height:22px;border-radius:50%}.color-pick button.picked{outline:2px solid var(--ink);outline-offset:2px}.save{width:100%;margin-top:3px}.date-picker{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.date-picker button{padding:5px 2px;background:white;border:1px solid var(--line);border-radius:5px;color:#9aa29d}.date-picker button.chosen{background:#eff8ed;border-color:#a4cfa7;color:#4e8b58}.date-picker small,.date-picker b{display:block;font-size:9px}.date-picker b{font-size:13px}@media(max-width:720px){header{height:72px;padding:0 18px}.brand small{display:none}.primary{padding:10px 12px;font-size:12px}nav{padding:0 18px;gap:19px}.page{padding:28px 18px 50px}.intro{align-items:start;gap:15px}.intro h1{font-size:28px}.stats{display:none}.week-note{line-height:1.4}.timeline{margin:0 -4px}.legend{flex-wrap:wrap;gap:10px}.people-layout,.orders-layout{grid-template-columns:1fr}.people-layout aside{grid-template-columns:repeat(2,1fr)}.availability{padding:16px}.availability-grid{grid-template-columns:repeat(4,1fr)}.availability-grid>div{padding:7px}.simple .primary{white-space:nowrap}.order{padding:13px}.order em{display:none}.modal{padding:18px}.date-picker{grid-template-columns:repeat(6,1fr)}}
.date-head{display:grid;grid-template-columns:repeat(22,minmax(30px,1fr))}
.date-head>div{text-align:center;display:grid;grid-template-rows:14px 20px 12px;padding:6px 0;border-left:1px solid #f1f2ee;font-size:10px;color:var(--muted)}
body.dark-mode{--ink:#eff5ed;--muted:#a9b6af;--line:#314039;--paper:#17211d;--cream:#101713;background:#101713}
body.dark-mode header,body.dark-mode nav{background:#17211d}
body.dark-mode .timeline,body.dark-mode .availability,body.dark-mode .order-list,body.dark-mode .person-card,body.dark-mode .outline,body.dark-mode .modal,body.dark-mode .add-order input,body.dark-mode .add-order select,body.dark-mode .modal input:not([type=checkbox]),body.dark-mode .modal textarea,body.dark-mode .modal select{background:#1d2924}
body.dark-mode .timeline-head{background:#1a2520}
body.dark-mode .task-track i,body.dark-mode .date-head>div{border-color:#2a3831}
body.dark-mode .weekend-bg,body.dark-mode .timeline-head .weekend{background:#28291f}
body.dark-mode .add-order{background:#202c26}
body.dark-mode .week-note{background:#3a3420;border-color:#65572d;color:#f0daa0}
body.dark-mode .availability-tip{background:#292640;color:#d0c9ff}
body.dark-mode .childcare{background:#3a2f1e}
body.dark-mode .childcare small{color:#e1c79a}
body.dark-mode .outline{color:var(--ink)}
body.dark-mode .person-card.selected{background:#292640;border-color:#7468b4}
body.dark-mode .availability-grid>div{border-color:#3b4b43}
body.dark-mode .availability-grid .available{background:#213c28;border-color:#477f50;color:#a9dfad}
body.dark-mode .order.ordered em{background:#213c28}
.header-actions{display:flex;gap:10px;align-items:center}.theme-toggle{width:38px;height:38px;border:1px solid var(--line);border-radius:8px;background:transparent;color:var(--ink);font-size:20px;line-height:1}.theme-toggle:hover{background:#f0f1eb}body.dark-mode .theme-toggle:hover{background:#2a3931}@media(max-width:720px){.header-actions{gap:7px}.theme-toggle{width:35px;height:35px}}
.timeline-head,.timeline-body{min-width:1500px}.timeline-actions{display:flex;align-items:center;gap:12px;margin-bottom:22px}.timeline-actions .week-note{flex:1;margin:0}.scroll-controls{display:flex;align-items:center;gap:5px;white-space:nowrap;color:var(--muted);font-size:11px}.scroll-controls button{width:30px;height:30px;border:1px solid var(--line);border-radius:6px;background:white;color:var(--ink);font-size:17px}.scroll-controls button:hover{background:#f1f2ed}.timeline-body{position:relative}.dependency-arrows{position:absolute;left:220px;top:0;width:calc(100% - 290px);height:100%;pointer-events:none;z-index:2;overflow:visible}.dependency-arrows path{fill:none;stroke:#9a8bec;stroke-width:1.5;stroke-dasharray:5 5;opacity:.95}.dependency-arrows marker path{fill:#9a8bec;stroke:none}.bar{z-index:3}.dependency-legend{color:#6758bc;font-weight:600}@media(max-width:720px){.timeline-actions{align-items:stretch;flex-direction:column}.scroll-controls{justify-content:flex-end}.scroll-controls span{margin-right:auto}body.dark-mode .scroll-controls button{background:#1d2924}.dependency-arrows{left:220px;width:calc(100% - 290px)}}
.bar{cursor:grab;touch-action:none;user-select:none}.bar.dragging{cursor:grabbing;opacity:.78}.resize-handle{position:absolute;right:0;top:0;width:18px;height:100%;border:0;border-left:1px solid #ffffff77;background:#00000012;color:white;cursor:ew-resize;font-size:15px;line-height:1;padding:0;touch-action:none}.resize-handle:hover{background:#0000002c}.modal-actions{display:flex;align-items:center;gap:12px;margin-top:16px}.modal-actions .save{margin:0;flex:1}.danger{border:1px solid #df8779;background:transparent;color:#bd5345;border-radius:8px;padding:10px 12px;font-size:12px;font-weight:600;white-space:nowrap}body.dark-mode .danger{border-color:#b96358;color:#f09b90}
.timeline-body::after{content:'';display:none;position:absolute;z-index:4;top:0;bottom:0;left:var(--today-left);border-left:2px solid #e77a57;pointer-events:none}.timeline.today-visible .timeline-body::after{display:block}.timeline-body::before{content:'VANDAAG';display:none;position:absolute;z-index:5;top:3px;left:calc(var(--today-left) - 23px);padding:3px 5px;border-radius:3px;background:#e77a57;color:white;font-size:8px;font-weight:700;letter-spacing:.5px;pointer-events:none}.timeline.today-visible .timeline-body::before{display:block}
.task-list-filters{display:grid;grid-template-columns:minmax(190px,1fr) repeat(3,minmax(130px,auto));gap:10px;margin-bottom:19px}.task-list-filters input,.task-list-filters select{border:1px solid var(--line);border-radius:7px;background:white;color:var(--ink);padding:10px 11px;font-size:13px}body.dark-mode .task-list-filters input,body.dark-mode .task-list-filters select,body.dark-mode .task-list,body.dark-mode .task-list-row{background:#1d2924}body.dark-mode .task-list-head{background:#1a2520}body.dark-mode .task-list-row:hover{background:#26342d}.task-list{border:1px solid var(--line);border-radius:11px;overflow:hidden;background:white}.task-list-head,.task-list-row{display:grid;grid-template-columns:minmax(210px,1.8fr) 120px 100px 145px 100px;gap:14px;align-items:center;padding:0 18px}.task-list-head{height:38px;background:#f8f9f6;color:var(--muted);font-size:10px;letter-spacing:.8px;font-weight:700}.task-list-row{min-height:65px;border-top:1px solid var(--line);text-align:left;width:100%;border-left:0;border-right:0;border-bottom:0;background:white;color:var(--ink);cursor:pointer}.task-list-row:hover{background:#fafaf7}.task-list-title{display:flex;align-items:center;gap:9px;font-weight:600}.task-list-title small{display:block;color:var(--muted);font-size:10px;font-weight:400;margin-top:3px}.task-list-row span:not(.dot){font-size:12px}.list-status{display:inline-block;padding:4px 7px;border-radius:20px;background:#eef0ec;color:#68736c;font-size:10px!important;font-weight:600}.list-status.progress{background:#e8f3fa;color:#4280aa}.list-status.done{background:#e9f5eb;color:#4d8a5b}.drying-tag{color:#a66d3d;font-size:11px!important}.empty-list{padding:28px;text-align:center;color:var(--muted);font-size:13px}@media(max-width:720px){.task-list-filters{grid-template-columns:1fr 1fr}.task-list-filters input{grid-column:1/-1}.task-list-head{display:none}.task-list-row{grid-template-columns:1fr auto;gap:7px;padding:13px}.task-list-row span:nth-child(3),.task-list-row span:nth-child(4){display:none}.task-list-title{align-items:flex-start}.task-list-row .list-status{justify-self:end}}
.bar{overflow:visible}.bar>span{position:relative;z-index:2}.bar.has-drying::after{content:'droogt';position:absolute;z-index:1;left:100%;top:0;width:var(--drying-width);height:100%;min-width:22px;border-radius:0 5px 5px 0;background:repeating-linear-gradient(135deg,#ffffff9c 0 4px,#ffffff42 4px 8px);border-left:1px solid #ffffffa6;color:#314139;font-size:8px;font-weight:700;line-height:31px;text-align:center;text-shadow:0 1px #fff8;overflow:hidden}.bar.has-drying .resize-handle{z-index:3}.bar.has-drying{border-radius:6px 0 0 6px}.task-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px}.task-tag{display:inline-block;padding:3px 6px;border-radius:10px;background:#efebfc;color:#6657a8;font-size:10px!important;font-weight:600}.task-list-title .task-tags{margin-top:4px}body.dark-mode .task-tag{background:#312c50;color:#d8d0ff}body.dark-mode .bar.has-drying::after{background:repeating-linear-gradient(135deg,#d8d0ffb0 0 4px,#6d5fc382 4px 8px);border-left-color:#d8d0ff;color:#201b39;text-shadow:none}
body.dark-mode .timeline,body.dark-mode .timeline-head,body.dark-mode .timeline-body,body.dark-mode .task-row,body.dark-mode .task-track,body.dark-mode .task-name button,body.dark-mode .timeline-head b{color:var(--ink)}body.dark-mode .task-name small,body.dark-mode .legend,body.dark-mode .timeline-head>div,body.dark-mode .date-head>div{color:#b7c2bb}body.dark-mode .shift button{background:#2b3932;color:#e4ebe5}body.dark-mode .stats{border-color:#3c4a42}body.dark-mode .stats div{border-color:#3c4a42}body.dark-mode .notice{background:#244430;color:#c2ebc9}body.dark-mode .list-status{background:#2b3932;color:#d3ddd6}body.dark-mode .list-status.progress{background:#203b4f;color:#a9d8fa}body.dark-mode .list-status.done{background:#213d2a;color:#b7e7bf}body.dark-mode .empty-list{background:#1d2924}body.dark-mode .modal .help,body.dark-mode .modal label,body.dark-mode fieldset legend,body.dark-mode .label{color:#dce6df}body.dark-mode .date-picker button{background:#1d2924;border-color:#3b4b43;color:#c5d0c9}body.dark-mode .date-picker button.chosen{background:#213c28;color:#b9edbe}body.dark-mode .order em{background:#443b22;color:#f4d997}
.task-list-filters{grid-template-columns:minmax(190px,1fr) repeat(4,minmax(125px,auto))}@media(max-width:900px){.task-list-filters{grid-template-columns:repeat(2,1fr)}.task-list-filters input{grid-column:1/-1}}
body.dark-mode .primary{background:#7564c9;color:#fff;box-shadow:0 2px 6px #0006}body.dark-mode .primary:hover{background:#8a79de}body.dark-mode .outline,body.dark-mode .theme-toggle,body.dark-mode .scroll-controls button{background:#26342d;color:#f0f5f1;border-color:#48584f}body.dark-mode .outline:hover,body.dark-mode .theme-toggle:hover,body.dark-mode .scroll-controls button:hover{background:#33453b}body.dark-mode .person-card,body.dark-mode .availability,body.dark-mode .order-list,body.dark-mode .order,body.dark-mode .modal,body.dark-mode .add-order{color:#edf4ef}body.dark-mode .person-card b,body.dark-mode .availability h2,body.dark-mode .add-order h2,body.dark-mode .modal h2,body.dark-mode .modal-head{color:#f4f8f5}body.dark-mode .availability-grid>div{background:#202c26;color:#c8d3cc}body.dark-mode .availability-grid small{color:#b9c4bd}body.dark-mode .order small,body.dark-mode .person-card small,body.dark-mode .task-list-title small{color:#b7c4bc}body.dark-mode .childcare b{color:#fff1d4}body.dark-mode .add-order label,body.dark-mode .order b{color:#edf4ef}body.dark-mode .modal .close{color:#edf4ef}body.dark-mode .color-pick button.picked{outline-color:#fff}body.dark-mode .task-list-row{color:#edf4ef}body.dark-mode .task-list-head{color:#bdc9c1}body.dark-mode .timeline-head>div:first-child{color:#bdc9c1}
.timeline-head,.timeline-body{min-width:calc(290px + var(--timeline-days, 70) * 55px)}.date-head,.task-track{grid-template-columns:repeat(var(--timeline-days, 70),55px)}
.timeline-head>div:first-child,.task-name{position:sticky;left:0;z-index:6;background:var(--paper)}.timeline-head>div:first-child{z-index:7}.task-name{box-shadow:8px 0 10px -12px #17241f88}.task-row .task-name{border-right:1px solid var(--line)}body.dark-mode .timeline-head>div:first-child,body.dark-mode .task-name{background:#1d2924}body.dark-mode .timeline-head>div:first-child{background:#1a2520}
