:root{--bg:#fff;--warm:#faf8f4;--line:#f4f3f0;--line2:#e9e6df;--text:#1a1a1a;--muted:#434444;--hint:#9b9a93;--gold:#f8b315;--gold-f:#fcefd4;--late:#b4462f;--ok:#5e7a55;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;margin:0;font-family:Roboto,Helvetica Neue,Arial,sans-serif;font-size:14px;font-weight:300}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--gold);outline-offset:2px}a{color:inherit}.app{grid-template-columns:248px 1fr;height:100%;display:grid}.side{background:var(--warm);border-right:1px solid var(--line2);flex-direction:column;min-height:0;display:flex}.brand{align-items:center;gap:10px;padding:22px 22px 18px;text-decoration:none;display:flex}.brand img{width:auto;height:20px}.brand span{letter-spacing:.14em;text-transform:uppercase;color:var(--hint);padding-top:3px;font-size:10px}.side nav{flex:1;padding:4px 10px 16px;overflow:auto}.nav-i{text-align:left;background:0 0;border:0;border-left:2px solid #0000;border-radius:3px;align-items:center;gap:10px;width:100%;padding:8px 12px;font-weight:300;text-decoration:none;display:flex}.nav-i:hover{background:var(--gold-f)}.nav-i.active{background:var(--bg);border-left-color:var(--gold);font-weight:400}.nav-i .lbl{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.nav-i .cnt{color:var(--hint);font-variant-numeric:tabular-nums;margin-left:auto;font-size:11px}.nav-i .cnt.late{color:var(--late)}.nav-lbl{letter-spacing:.12em;text-transform:uppercase;color:var(--hint);justify-content:space-between;align-items:center;padding:18px 12px 6px;font-size:10px;display:flex}.nav-lbl button{color:var(--muted);background:0 0;border:0;padding:0 2px;font-size:18px;line-height:1}.dot{border-radius:50%;flex:none;width:10px;height:10px;display:inline-block}.me-box{border-top:1px solid var(--line2);align-items:center;gap:10px;padding:14px 18px;display:flex}.me-box .who{flex:1;min-width:0}.me-box .who div{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.me-box .role{letter-spacing:.12em;text-transform:uppercase;color:var(--hint);font-size:10px}.link-btn{color:var(--muted);text-underline-offset:3px;background:0 0;border:0;padding:0;font-size:12px;text-decoration:underline}.main{flex-direction:column;min-width:0;min-height:0;display:flex}.top{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:12px 16px;padding:18px 32px;display:flex}.top h1{letter-spacing:.03em;align-items:center;gap:12px;min-width:0;margin:0;font-size:26px;font-weight:300;display:flex}.top .sub{color:var(--hint);font-size:12px}.top .grow{flex:1}.menu-btn{border:1px solid var(--line2);background:var(--bg);border-radius:2px;padding:6px 10px;display:none}.tabs{border-bottom:1px solid var(--line);gap:4px;padding:0 32px;display:flex}.tab{color:var(--muted);background:0 0;border:0;border-bottom:2px solid #0000;margin-right:18px;padding:12px 4px;font-weight:300}.tab.on{border-bottom-color:var(--text);color:var(--text);font-weight:400}.scroll{flex:1;padding:8px 32px 80px;overflow:auto}.loading{height:100%;color:var(--hint);place-items:center;display:grid}.btn{background:var(--text);color:#fff;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;border:0;border-radius:2px;align-items:center;gap:6px;padding:9px 18px;font-size:11px;font-weight:400;transition:background .15s,color .15s;display:inline-flex}.btn:hover{background:var(--gold);color:var(--text)}.btn.ghost{color:var(--text);border:1px solid var(--line2);background:0 0}.btn.ghost:hover{background:var(--gold-f)}.btn.gold{background:var(--gold);color:var(--text)}.btn.gold:hover{color:var(--text);background:#ffc94a}.btn:disabled{opacity:.35;cursor:not-allowed}.btn:disabled:hover{background:var(--text);color:#fff}.btn.ghost:disabled:hover{color:var(--text);background:0 0}.grp{margin-top:22px}.grp-head{border-bottom:1px solid var(--line2);align-items:center;gap:12px;display:flex}.grp-h{text-align:left;background:0 0;border:0;flex:1;align-items:baseline;gap:10px;min-width:0;padding:6px 0 8px;display:flex}.grp-h h2{letter-spacing:.02em;margin:0;font-size:18px;font-weight:300}.grp-h .n{color:var(--hint);font-variant-numeric:tabular-nums;font-size:12px}.grp-h .car{color:var(--hint);width:12px;font-size:11px;transition:transform .15s}.grp.closed .car{transform:rotate(-90deg)}.grp.late h2{color:var(--late)}.sec-tools{flex:none;gap:12px;display:flex}.colh,.row{grid-template-columns:28px minmax(0,1fr) 160px 92px 110px;gap:12px;display:grid}.colh{letter-spacing:.12em;text-transform:uppercase;color:var(--hint);padding:10px 10px 6px;font-size:10px}.row{border-bottom:1px solid var(--line);cursor:pointer;border-left:2px solid #0000;align-items:center;padding:9px 10px;transition:background .12s,border-color .12s}.row:hover,.row.selected{background:var(--gold-f);border-left-color:var(--gold)}.row.done .ttl .t{color:var(--hint);text-decoration:line-through}.chk{border:1px solid var(--hint);background:var(--bg);width:18px;height:18px;color:var(--ok);border-radius:50%;flex:none;place-items:center;padding:0;transition:all .15s;display:grid}.chk svg{opacity:0;width:10px;height:10px}.chk:hover{border-color:var(--ok)}.chk:hover svg{opacity:1}.chk.on{background:var(--ok);border-color:var(--ok);color:#fff}.chk.on svg{opacity:1}.ttl{white-space:nowrap;align-items:center;gap:8px;min-width:0;display:flex;overflow:hidden}.ttl .t{text-overflow:ellipsis;overflow:hidden}.meta{color:var(--hint);font-variant-numeric:tabular-nums;flex:none;align-items:center;gap:3px;font-size:11px;display:inline-flex}.prio{letter-spacing:.08em;text-transform:uppercase;color:var(--late);border:1px solid;border-radius:2px;flex:none;padding:0 4px;font-size:10px}.chip{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:6px;min-width:0;max-width:100%;font-size:12px;display:inline-flex;overflow:hidden}.chip span:last-child{text-overflow:ellipsis;overflow:hidden}.pcol{min-width:0;display:flex}.pill{white-space:nowrap;min-width:0;max-width:100%;color:var(--text);background:color-mix(in srgb, var(--c) 16%, var(--bg));border-radius:12px;align-items:center;gap:6px;padding:3px 9px 3px 7px;font-size:12px;display:inline-flex}.pill .dot{background:var(--c);border-radius:50%;width:8px;height:8px}.pill span:last-child{text-overflow:ellipsis;overflow:hidden}.avs{display:flex}.av{letter-spacing:.04em;border:2px solid var(--bg);width:24px;height:24px;color:var(--text);background:#d9cfbf;border-radius:50%;flex:none;place-items:center;margin-left:-6px;font-size:10px;font-weight:400;display:grid;overflow:hidden}.av img{object-fit:cover;width:100%;height:100%}.avs .av:first-child{margin-left:0}.av.lg{border:0;width:32px;height:32px;margin:0;font-size:12px}.due{text-align:left;font-variant-numeric:tabular-nums;white-space:nowrap;background:0 0;border:1px solid #0000;border-radius:2px;padding:4px 8px;font-size:12px}.due:hover{border-color:var(--line2);background:var(--bg)}.due.late{color:var(--late)}.due.today{color:var(--ok);font-weight:400}.due.none{color:var(--hint)}.add-row{gap:8px;padding:8px 10px 8px 50px;display:flex}.add-row input{background:0 0;border:0;border-bottom:1px solid #0000;outline:none;flex:1;padding:4px 0}.add-row input:focus{border-bottom-color:var(--line2)}.add-row input::placeholder{color:var(--hint)}.empty{color:var(--hint);text-align:center;padding:48px 0;line-height:1.7}.tbl-wrap{overflow-x:auto}.ptable{border-collapse:collapse;width:100%;margin-top:18px}.ptable th{letter-spacing:.12em;text-transform:uppercase;color:var(--hint);text-align:left;border-bottom:1px solid var(--line2);white-space:nowrap;padding:8px 10px;font-size:10px;font-weight:400}.ptable td{border-bottom:1px solid var(--line);vertical-align:middle;padding:13px 10px}.ptable tr.click{cursor:pointer;transition:background .12s}.ptable tr.click:hover{background:var(--gold-f)}.pn{align-items:center;gap:10px;font-size:15px;display:flex}.tag{letter-spacing:.1em;text-transform:uppercase;color:var(--hint);border:1px solid var(--line2);white-space:nowrap;border-radius:2px;padding:2px 6px;font-size:10px}.num{font-variant-numeric:tabular-nums}.late-txt{color:var(--late)}.h-sec{letter-spacing:.12em;text-transform:uppercase;color:var(--hint);margin:34px 0 0;font-size:10px;font-weight:400}.ptable select{border:1px solid var(--line2);background:var(--bg);border-radius:2px;padding:5px 8px}.scrim{z-index:25;background:#1a1a1a2e;position:fixed;inset:0}.drawer{background:var(--bg);border-left:1px solid var(--line2);z-index:26;width:min(540px,100%);padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);flex-direction:column;animation:.2s slide;display:flex;position:fixed;top:0;bottom:0;right:0;box-shadow:-8px 0 30px #0000000f}@keyframes slide{0%{opacity:.5;transform:translate(40px)}}.d-top{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:14px 24px;display:flex}.d-top .grow{flex:1}.d-top .x{color:var(--muted);background:0 0;border:0;padding:2px 6px;font-size:24px;line-height:1}.d-body{flex-direction:column;gap:24px;padding:20px 24px 48px;display:flex;overflow:auto}.d-title{resize:none;field-sizing:content;border:1px solid #0000;border-radius:2px;outline:none;width:calc(100% + 12px);min-height:1.5em;margin:-4px -6px;padding:4px 6px;font-size:22px;font-weight:300;line-height:1.35}.d-title:hover,.d-title:focus{border-color:var(--line2)}.done-banner{background:var(--warm);color:var(--ok);border-radius:2px;padding:10px 12px;font-size:12px}.fields{grid-template-columns:120px minmax(0,1fr);align-items:center;gap:12px 14px;display:grid}.fields>label{letter-spacing:.12em;text-transform:uppercase;color:var(--hint);font-size:10px}.fields input,.fields select,.field{border:1px solid var(--line2);background:var(--bg);border-radius:2px;max-width:100%;padding:6px 8px}.people{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.pchip{border:1px solid var(--line2);border-radius:14px;align-items:center;gap:6px;padding:2px 8px 2px 2px;font-size:12px;display:inline-flex}.pchip .av{border:0;width:20px;height:20px;margin:0;font-size:9px}.pchip button{color:var(--hint);background:0 0;border:0;padding:0 0 0 2px;font-size:14px;line-height:1}.sec-lbl{letter-spacing:.12em;text-transform:uppercase;color:var(--hint);justify-content:space-between;margin-bottom:8px;font-size:10px;display:flex}textarea.desc{border:1px solid var(--line2);resize:vertical;background:var(--bg);field-sizing:content;border-radius:2px;width:100%;min-height:90px;padding:10px;line-height:1.6}.sub-i{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:6px 0;display:flex}.sub-i span{flex:1}.sub-i.done span{color:var(--hint);text-decoration:line-through}.sub-i .rm{color:var(--hint);opacity:0;background:0 0;border:0;font-size:16px}.sub-i:hover .rm,.file:hover .rm{opacity:1}.cmt{border-bottom:1px solid var(--line);gap:10px;padding:10px 0;display:flex}.cmt .who{font-size:12px;font-weight:400}.cmt .when{color:var(--hint);margin-left:6px;font-size:11px;font-weight:300}.cmt p{white-space:pre-wrap;overflow-wrap:anywhere;margin:3px 0 0;line-height:1.6}.inline-add{gap:8px;margin-top:8px;display:flex}.inline-add input{border:1px solid var(--line2);background:var(--bg);border-radius:2px;flex:1;min-width:0;padding:7px 9px}.file{border:1px solid var(--line);border-radius:2px;align-items:center;gap:10px;margin-bottom:6px;padding:8px 10px;font-size:12px;display:flex}.file button.name{text-align:left;text-overflow:ellipsis;white-space:nowrap;text-underline-offset:3px;text-decoration:underline;-webkit-text-decoration-color:var(--line2);text-decoration-color:var(--line2);background:0 0;border:0;flex:1;padding:0;overflow:hidden}.file .ext{background:var(--warm);color:var(--muted);text-transform:uppercase;border-radius:2px;padding:3px 5px;font-family:Roboto Mono,monospace;font-size:10px}.file .size{color:var(--hint)}.file .rm{color:var(--hint);opacity:0;background:0 0;border:0;font-size:16px}.recur-note{color:var(--muted);background:var(--warm);border-radius:2px;grid-column:1/-1;padding:8px 10px;font-size:12px;line-height:1.5}.foot-note{color:var(--hint);margin:0;font-size:12px}.d-archive{border-top:1px solid var(--line);flex-direction:column;align-items:flex-start;gap:10px;padding-top:20px;display:flex}.pop{z-index:60;background:var(--bg);border:1px solid var(--line2);border-radius:3px;flex-direction:column;min-width:200px;padding:6px;display:flex;position:fixed;box-shadow:0 8px 24px #00000014}.pop button{text-align:left;background:0 0;border:0;border-radius:2px;justify-content:space-between;gap:16px;padding:8px 10px;display:flex}.pop button:hover{background:var(--gold-f)}.pop button small{color:var(--hint);font-size:11px}.pop .pd{border-top:1px solid var(--line);letter-spacing:.12em;text-transform:uppercase;color:var(--hint);flex-direction:column;gap:6px;margin-top:4px;padding:8px 10px 4px;font-size:10px;display:flex}.pop input{border:1px solid var(--line2);letter-spacing:0;text-transform:none;color:var(--text);border-radius:2px;padding:5px 7px;font-size:13px}.modal{z-index:50;background:#1a1a1a40;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.mbox{background:var(--bg);border-radius:3px;flex-direction:column;gap:16px;width:min(480px,100%);max-height:calc(100% - 32px);padding:28px;display:flex;overflow:auto}.mbox h3{letter-spacing:.02em;margin:0;font-size:22px;font-weight:300}.mbox .lbl{letter-spacing:.12em;text-transform:uppercase;color:var(--hint);flex-direction:column;gap:6px;font-size:10px;display:flex}.mbox .in{border:1px solid var(--line2);letter-spacing:0;text-transform:none;color:var(--text);background:var(--bg);border-radius:2px;width:100%;padding:9px 10px;font-size:14px}.opts{flex-wrap:wrap;gap:8px;display:flex}.opt{border:1px solid var(--line2);letter-spacing:0;text-transform:none;color:var(--text);cursor:pointer;border-radius:2px;align-items:center;gap:6px;padding:6px 10px;font-size:13px;display:inline-flex}.opt input{margin:0}.opt.disabled{color:var(--hint);cursor:default}.acts{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.swatch{outline-offset:1px;border:2px solid #0000;border-radius:50%;width:26px;height:26px;padding:0}.swatch.on{border-color:var(--text)}.err{color:var(--late);margin:0;font-size:12px}.toast{left:50%;bottom:calc(24px + env(safe-area-inset-bottom,0px));background:var(--text);color:#fff;z-index:70;border-radius:2px;max-width:calc(100% - 32px);padding:11px 18px;font-size:13px;animation:.2s rise;position:fixed;transform:translate(-50%)}.toast b{color:var(--gold);font-weight:400}.toast.error{background:var(--late)}@keyframes rise{0%{opacity:0;transform:translate(-50%,12px)}}.login{background:var(--warm);place-items:center;min-height:100%;padding:24px 16px;display:grid}.login-card{background:var(--bg);border:1px solid var(--line);flex-direction:column;gap:22px;width:min(420px,100%);padding:44px 40px;display:flex}.login-card img{align-self:flex-start;width:auto;height:22px}.login-card h1{letter-spacing:.02em;margin:0;font-size:26px;font-weight:300}.login-card p{color:var(--muted);margin:0;line-height:1.6}.gbtn{border:1px solid var(--line2);background:var(--bg);border-radius:2px;justify-content:center;align-items:center;gap:10px;padding:11px 16px;font-weight:400;transition:background .15s;display:flex}.gbtn:hover{background:var(--gold-f)}.dev-box{border-top:1px dashed var(--line2);flex-direction:column;gap:8px;padding-top:16px;display:flex}.dev-box .lbl{letter-spacing:.12em;text-transform:uppercase;color:var(--hint);font-size:10px}.dev-box .opts button{border:1px solid var(--line2);background:var(--bg);border-radius:2px;padding:6px 10px;font-size:12px}@media (width<=860px){.app{grid-template-columns:1fr}.side{z-index:30;width:272px;padding-top:env(safe-area-inset-top,0px);transition:transform .2s;position:fixed;inset:0 auto 0 0;transform:translate(-100%)}.side.open{transform:none;box-shadow:8px 0 30px #0000001f}.side-scrim{z-index:29;background:#1a1a1a2e;position:fixed;inset:0}.menu-btn{display:inline-block}.top{padding:14px 16px;padding-top:calc(14px + env(safe-area-inset-top,0px))}.tabs,.scroll{padding-left:16px;padding-right:16px}.top h1{flex:1;font-size:21px}.top h1 .av,.top .grow,.top .avs{display:none}.top .btn{padding:8px 12px}.top .sub,.colh{display:none}.row{grid-template-columns:24px minmax(0,1fr) auto;grid-template-areas:"c t d"".p a";row-gap:4px;padding-left:6px;padding-right:4px}.row>.chk{grid-area:c}.row>.ttl{grid-area:t}.row>.pcol{grid-area:p}.row>.avs{grid-area:a;justify-self:end}.row>.due{grid-area:d}.add-row{padding-left:36px}.fields{grid-template-columns:1fr;gap:6px}.fields>label{margin-top:8px}.d-top,.d-body{padding-left:16px;padding-right:16px}.mbox{padding:22px 18px}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
