wa-gordons-desk 1.2.0 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/desk.js CHANGED
@@ -1,12 +1,12 @@
1
- /* Gordon's Desk v1.2.0 — Wheel & Anchor. Built 2026-10-28.
1
+ /* Gordon's Desk v1.2.2 — Wheel & Anchor. Built 2026-10-28.
2
2
  Loaded by each person's own artifact shell. Holds no data: reads Monday, Gmail and Calendar live through the viewer's connectors. */
3
3
  (function(){
4
- var VER = "1.2.0", CDN = "https://cdn.jsdelivr.net/npm/wa-gordons-desk";
4
+ var VER = "1.2.2", CDN = "https://cdn.jsdelivr.net/npm/wa-gordons-desk";
5
5
  if(window.__GD_DESK_LOADED) return;
6
6
 
7
7
  function boot(){
8
8
  if(window.__GD_DESK_LOADED) return; window.__GD_DESK_LOADED = VER;
9
- var st = document.createElement("style"); st.textContent = "\n/* Layout: one column — masthead, signal strip, filter rail, tabbed lists.\n Reads Monday live on every open. Lists mirror Monday: area > group > project > subitem. Rows, never cards. */\n:root{\n --bg:#F2F5F7; --surface:#FFFFFF; --sunk:#E7EDF1; --sunk2:#EFF3F6;\n --ink:#14222B; --ink2:#4D6170; --ink3:#8396A3; --line:#DBE4EA;\n --accent:#0F5C6B; --accent-soft:#D6EBEF;\n --ready-bg:#DCE6FB; --ready-fg:#2B3F8C;\n --working-bg:#FBE6CB; --working-fg:#8A4C10;\n --info-bg:#FBDDD3; --info-fg:#93361B;\n --done-bg:#D8EEDE; --done-fg:#1E6039;\n --closed-bg:#CDE5D6; --closed-fg:#0C4A2C;\n --none-bg:#E7EDF1; --none-fg:#5E7280;\n --req-bg:#EADCF5; --req-fg:#5C2E7A;\n --late-bg:#F8D8D8; --late-fg:#97262A;\n --today-fg:#0B5160; --ok-fg:#1E6039;\n --k1:#C9DCF7; --k1f:#1F4480; --k2:#D6EBDC; --k2f:#1F6038;\n --k3:#FBE0E8; --k3f:#8C2B4C; --k4:#FAE3CF; --k4f:#8A4A14;\n --k5:#CFE9E4; --k5f:#145C50; --k6:#E3DDF9; --k6f:#453394;\n --k7:#DCE3E9; --k7f:#3C5160; --k8:#EBDFF2; --k8f:#5F2F77;\n --k9:#F5E2BE; --k9f:#75530C; --k10:#D9E7F2; --k10f:#2A5272;\n --shadow:0 1px 2px rgba(20,34,43,.05),0 4px 16px rgba(20,34,43,.045);\n --f-display:\"Young Serif\",Georgia,\"Times New Roman\",serif;\n --f-body:\"Figtree\",ui-sans-serif,system-ui,-apple-system,\"Segoe UI\",sans-serif;\n --f-mono:\"IBM Plex Mono\",ui-monospace,SFMono-Regular,Menlo,monospace;\n --r:12px;\n}\n@media (prefers-color-scheme:dark){:root:not([data-theme=\"light\"]){\n --bg:#101820; --surface:#18222B; --sunk:#141D25; --sunk2:#1C2730;\n --ink:#E7EFF4; --ink2:#AFC0CC; --ink3:#788C99; --line:#263340;\n --accent:#6FC6D6; --accent-soft:#17323B;\n --ready-bg:#232E55; --ready-fg:#B9C8F6;\n --working-bg:#3B2A14; --working-fg:#F2C68A;\n --info-bg:#3E2219; --info-fg:#F3B49B;\n --done-bg:#19331F; --done-fg:#9FD9B2;\n --closed-bg:#12301E; --closed-fg:#8CCBA4;\n --none-bg:#1E2832; --none-fg:#9BAEBB;\n --req-bg:#2C1B3A; --req-fg:#CFA9E6;\n --late-bg:#3D2023; --late-fg:#F0AAAC;\n --today-fg:#93D6E2; --ok-fg:#9FD9B2;\n --k1:#1C2D4A; --k1f:#AFC8EE; --k2:#1A3324; --k2f:#A3D5B3;\n --k3:#3A2029; --k3f:#F0B2C4; --k4:#3A2616; --k4f:#EDBB8C;\n --k5:#123330; --k5f:#95D3C8; --k6:#272052; --k6f:#C3B8F3;\n --k7:#222E38; --k7f:#AFC2CF; --k8:#2D1E38; --k8f:#D5B3E6;\n --k9:#352A12; --k9f:#E3C684; --k10:#1B2B38; --k10f:#A9C6DD;\n --shadow:0 1px 2px rgba(0,0,0,.35),0 6px 18px rgba(0,0,0,.28);\n color-scheme:dark;\n}}\n:root[data-theme=\"dark\"]{\n --bg:#101820; --surface:#18222B; --sunk:#141D25; --sunk2:#1C2730;\n --ink:#E7EFF4; --ink2:#AFC0CC; --ink3:#788C99; --line:#263340;\n --accent:#6FC6D6; --accent-soft:#17323B;\n --ready-bg:#232E55; --ready-fg:#B9C8F6;\n --working-bg:#3B2A14; --working-fg:#F2C68A;\n --info-bg:#3E2219; --info-fg:#F3B49B;\n --done-bg:#19331F; --done-fg:#9FD9B2;\n --closed-bg:#12301E; --closed-fg:#8CCBA4;\n --none-bg:#1E2832; --none-fg:#9BAEBB;\n --req-bg:#2C1B3A; --req-fg:#CFA9E6;\n --late-bg:#3D2023; --late-fg:#F0AAAC;\n --today-fg:#93D6E2; --ok-fg:#9FD9B2;\n --k1:#1C2D4A; --k1f:#AFC8EE; --k2:#1A3324; --k2f:#A3D5B3;\n --k3:#3A2029; --k3f:#F0B2C4; --k4:#3A2616; --k4f:#EDBB8C;\n --k5:#123330; --k5f:#95D3C8; --k6:#272052; --k6f:#C3B8F3;\n --k7:#222E38; --k7f:#AFC2CF; --k8:#2D1E38; --k8f:#D5B3E6;\n --k9:#352A12; --k9f:#E3C684; --k10:#1B2B38; --k10f:#A9C6DD;\n --shadow:0 1px 2px rgba(0,0,0,.35),0 6px 18px rgba(0,0,0,.28);\n color-scheme:dark;\n}\n*{box-sizing:border-box}\nbody{background:var(--bg);color:var(--ink);font-family:var(--f-body);font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased}\n.wrap{max-width:1220px;margin:0 auto;\n padding-left:max(16px,env(safe-area-inset-left,0px));\n padding-right:max(16px,env(safe-area-inset-right,0px));\n padding-block:26px 90px;display:flex;flex-direction:column;gap:18px}\na{color:inherit}\nbutton,select,input{font:inherit;color:inherit}\nbutton{cursor:pointer}\n:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}\n\n.mast{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:10px 24px}\n.mast h1{font-family:var(--f-display);font-weight:400;font-size:clamp(27px,4.2vw,38px);line-height:1.1;margin:0;text-wrap:balance;letter-spacing:-.01em}\n.eyebrow{font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink3);margin-bottom:6px;font-weight:600}\n.mast-right{display:flex;align-items:center;gap:10px}\n.sync{display:flex;flex-direction:column;align-items:flex-end;gap:1px;font-size:12px;color:var(--ink3);text-align:right}\n.sync b{font-family:var(--f-mono);font-weight:500;color:var(--ink2);font-size:12px}\n.refresh{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:8px 14px;font-size:13px;font-weight:600;display:inline-flex;align-items:center;gap:7px;color:var(--ink2);box-shadow:var(--shadow)}\n.refresh:hover{border-color:var(--accent);color:var(--accent)}\n.refresh[disabled]{opacity:.55;cursor:default}\n.refresh svg{width:14px;height:14px}\n.spin{animation:sp 1s linear infinite}\n@keyframes sp{to{transform:rotate(360deg)}}\n\n.strip{display:flex;flex-wrap:wrap;gap:8px}\n.stat{display:flex;align-items:baseline;gap:8px;padding:7px 13px;border-radius:999px;background:var(--surface);border:1px solid var(--line);font-size:13px;color:var(--ink2)}\n.stat b{font-family:var(--f-mono);font-weight:500;font-size:15px;color:var(--ink)}\n.stat.go{background:var(--ready-bg);border-color:transparent;color:var(--ready-fg)}\n.stat.go b{color:var(--ready-fg)}\n.stat.warn{background:var(--working-bg);border-color:transparent;color:var(--working-fg)}\n.stat.warn b{color:var(--working-fg)}\n.stat.hot{background:var(--late-bg);border-color:transparent;color:var(--late-fg)}\n.stat.hot b{color:var(--late-fg)}\n\n.note{display:flex;align-items:flex-start;gap:11px;padding:13px 15px;border-radius:12px;background:var(--surface);border:1px solid var(--line);font-size:13.5px;color:var(--ink2);box-shadow:var(--shadow)}\n.note.bad{background:var(--late-bg);border-color:transparent;color:var(--late-fg)}\n.note b{color:inherit;display:block;font-size:14px;margin-bottom:2px}\n.note .ni{flex:none;width:20px;height:20px;margin-top:1px}\n.note .ni svg{width:20px;height:20px}\n\n.tabs{display:flex;gap:4px;overflow-x:auto;border-bottom:1px solid var(--line);scrollbar-width:none}\n.tabs::-webkit-scrollbar{display:none}\n.tab{border:0;background:none;padding:10px 13px;font-weight:600;font-size:14px;color:var(--ink3);border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;display:flex;gap:6px;align-items:center}\n.tab[aria-selected=\"true\"]{color:var(--ink);border-bottom-color:var(--accent)}\n.tab .n{font-family:var(--f-mono);font-weight:500;font-size:11.5px;background:var(--sunk);color:var(--ink2);border-radius:999px;padding:1px 6px}\n.view[hidden]{display:none!important}\n\n.rail{background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);\n padding:10px 12px;display:flex;flex-wrap:wrap;gap:8px 10px;align-items:center}\n.search{flex:1 1 200px;min-width:0;display:flex;align-items:center;gap:8px;background:var(--sunk);border:1px solid transparent;border-radius:9px;padding:0 10px}\n.search:focus-within{border-color:var(--accent)}\n.search input{flex:1;min-width:0;border:0;background:transparent;font-size:14px;padding:8px 0;outline:none}\n.search svg{width:15px;height:15px;color:var(--ink3);flex:none}\n.fld{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--ink3);font-weight:600;letter-spacing:.04em;text-transform:uppercase}\n.fld select{font-size:13px;font-weight:500;letter-spacing:0;text-transform:none;background:var(--sunk);border:1px solid transparent;border-radius:9px;padding:7px 8px;max-width:200px;cursor:pointer}\n.fld.on select{border-color:var(--accent);background:var(--accent-soft);color:var(--ink)}\n.toggle{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--ink2);font-weight:500;cursor:pointer;white-space:nowrap}\n.toggle input{accent-color:var(--accent);width:15px;height:15px}\n.clear{border:1px solid var(--line);background:none;border-radius:999px;padding:6px 12px;font-size:12.5px;font-weight:600;color:var(--ink2)}\n.clear:hover{border-color:var(--ink3);color:var(--ink)}\n\n.viewdesc{margin:0 2px 16px;font-size:13.5px;line-height:1.5;color:var(--ink2);max-width:72ch;\n border-left:3px solid var(--accent-soft);padding-left:12px}\n.sec{display:flex;flex-direction:column;gap:7px}\n.sec+.sec{margin-top:16px}\n.sec-h{display:flex;align-items:baseline;gap:10px;padding:2px;flex-wrap:wrap}\n.sec-h h2{font-family:var(--f-display);font-weight:400;font-size:19px;margin:0}\n.sec-h .count{font-family:var(--f-mono);font-size:12.5px;color:var(--ink3)}\n.sec-h .hint{font-size:12.5px;color:var(--ink3);margin-left:auto;text-align:right}\n.list{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;box-shadow:var(--shadow)}\n\n.cols{display:grid;grid-template-columns:minmax(0,1fr) 82px 178px 150px 70px 32px;gap:10px;align-items:center}\n.lhead{padding:0 14px;background:var(--sunk);border-bottom:1px solid var(--line)}\n.lhead button,.lhead span{font-size:10.5px;letter-spacing:.07em;text-transform:uppercase;font-weight:600;color:var(--ink3);\n background:none;border:0;padding:9px 0;text-align:left;display:flex;align-items:center;gap:4px}\n.lhead button:hover{color:var(--ink)}\n.lhead button.on{color:var(--accent)}\n.lhead .arrow{font-size:9px}\n\n.row{padding:9px 14px;border-top:1px solid var(--line)}\n.list .row:first-child{border-top:0}\n.row:hover{background:color-mix(in srgb,var(--sunk) 45%,transparent)}\n.row.ctx{background:var(--sunk2)}\n.row.ctx .r-title{color:var(--ink2)}\n.row.dim .r-title{color:var(--ink3);text-decoration:line-through}\n.row{--ind:0px}\n.row.nested.lv0{--ind:58px}\n.row.nested.lv1{--ind:82px}\n.row.nested.lv2{--ind:106px}\n.r-main{min-width:0;display:flex;flex-direction:column;gap:2px;padding-left:var(--ind);position:relative}\n.row.nested .r-main::before{content:\"\";position:absolute;left:calc(var(--ind) - 16px);top:1px;bottom:1px;width:2px;background:var(--line);border-radius:2px}\n.row.nested.lv1 .r-main::before,.row.nested.lv2 .r-main::before{background:var(--ink3);opacity:.35}\n.r-top{display:flex;align-items:center;gap:7px;min-width:0}\n.r-title{font-weight:600;font-size:14.5px;overflow-wrap:anywhere;min-width:0}\n.row.proj .r-title{font-size:15px}\n.caret{border:0;background:none;color:var(--ink3);font-size:11px;width:16px;height:16px;padding:0;flex:none;display:grid;place-items:center;transition:transform .15s}\n.caret.open{transform:rotate(90deg)}\n.r-sub{font-size:12.5px;color:var(--ink3);display:flex;flex-wrap:wrap;gap:3px 8px;align-items:center}\n.sep{opacity:.5}\n.chip{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;border-radius:999px;padding:2px 8px;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}\n.tag{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;border-radius:6px;padding:2px 7px;background:var(--sunk);color:var(--ink2);text-decoration:none}\n.tag:hover{color:var(--ink)}\n.tag.warnflag{background:var(--late-bg);color:var(--late-fg)}\n.tag.trip{background:var(--accent-soft);color:var(--accent);font-variant-numeric:tabular-nums}\n.type{font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--ink3)}\n.type.t-Action{color:var(--accent)}\n.type.t-Project{color:var(--k1f)}\n.type.t-OpenFile{color:var(--ink2)}\n.type.t-Idea{color:var(--k8f)}\n\n.stcell{display:flex;flex-direction:column;gap:2px;min-width:0}\nselect.stsel{font-size:11.5px;font-weight:600;border:1px solid transparent;border-radius:999px;padding:4px 8px;width:100%;max-width:178px;cursor:pointer;appearance:none;-webkit-appearance:none;background-image:none}\nselect.stsel:hover{border-color:var(--ink3)}\n.v-ready{background:var(--ready-bg);color:var(--ready-fg)}\n.v-working{background:var(--working-bg);color:var(--working-fg)}\n.v-info{background:var(--info-bg);color:var(--info-fg)}\n.v-done{background:var(--done-bg);color:var(--done-fg)}\n.v-closed{background:var(--closed-bg);color:var(--closed-fg)}\n.v-none{background:var(--none-bg);color:var(--none-fg)}\n.v-req{background:var(--req-bg);color:var(--req-fg)}\nselect.stsel option{background:var(--surface);color:var(--ink)}\n.stmsg{font-size:10.5px;color:var(--ink3);font-family:var(--f-mono)}\n.stmsg.err{color:var(--late-fg);font-family:var(--f-body);font-weight:500;letter-spacing:0}\n.stmsg.ok{color:var(--ok-fg)}\n.stpill{display:inline-flex;align-items:center;font-size:11.5px;font-weight:600;border-radius:999px;padding:4px 9px;white-space:nowrap}\n\n.due{font-family:var(--f-mono);font-size:12.5px;font-variant-numeric:tabular-nums;color:var(--ink2);white-space:normal;line-height:1.3;display:inline-block}\n.due.late{color:var(--late-fg);font-weight:500}\n.due.now{color:var(--today-fg);font-weight:500}\n.due.never{color:var(--ink3)}\n.donebtn{border:1px solid var(--line);background:none;border-radius:999px;padding:4px 9px;font-size:11.5px;font-weight:600;color:var(--ink2);white-space:nowrap}\n.donebtn:hover{border-color:var(--ok-fg);color:var(--ok-fg);background:var(--done-bg)}\n.donebtn[disabled]{opacity:.5;cursor:default}\n.open{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;color:var(--ink3);text-decoration:none;border:1px solid transparent;justify-self:end}\n.open:hover{background:var(--sunk);color:var(--accent);border-color:var(--line)}\n.open svg{width:15px;height:15px}\n.empty{padding:16px 14px;font-size:13.5px;color:var(--ink3)}\n\n.band{display:flex;align-items:center;gap:10px;width:100%;padding:9px 14px;background:var(--sunk);border:0;border-top:1px solid var(--line);text-align:left}\n.list>.band:first-child{border-top:0}\n.band.area .bname{font-family:var(--f-display);font-size:16px;font-weight:400}\n.band.grp{background:var(--sunk2);padding-left:36px}\n.band.grp .bname{font-size:12.5px;font-weight:600;color:var(--ink2);letter-spacing:.02em}\n.band .count{font-family:var(--f-mono);font-size:12px;color:var(--ink3)}\n.band .bbar{margin-left:auto;display:flex;gap:5px;align-items:center}\n\n.day{display:flex;align-items:baseline;gap:10px;padding:9px 14px;background:var(--sunk);border-top:1px solid var(--line)}\n.list>.day:first-child{border-top:0}\n.day .dname{font-weight:600;font-size:13.5px}\n.day .ddate{font-family:var(--f-mono);font-size:12px;color:var(--ink3)}\n.day .dcount{font-family:var(--f-mono);font-size:12px;color:var(--ink3);margin-left:auto}\n\n.mrow{display:grid;grid-template-columns:minmax(0,1fr) 32px;gap:10px;align-items:center;padding:9px 14px;border-top:1px solid var(--line)}\n.list .mrow:first-child{border-top:0}\n.mrow:hover{background:color-mix(in srgb,var(--sunk) 45%,transparent)}\n.m-main{min-width:0;display:flex;flex-direction:column;gap:2px}\n.m-subj{font-weight:600;font-size:14.5px;text-decoration:none;overflow-wrap:anywhere}\n.m-subj:hover{text-decoration:underline;text-decoration-color:var(--ink3)}\n.m-sub{font-size:12.5px;color:var(--ink3);display:flex;flex-wrap:wrap;gap:3px 8px;align-items:baseline}\n.m-sub .from{color:var(--ink2);font-weight:500}\n.m-sub .when{font-family:var(--f-mono);font-size:12px}\n.m-snip{font-size:13px;color:var(--ink2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.crow{display:grid;grid-template-columns:108px minmax(0,1fr) auto 32px;gap:10px;align-items:center;padding:9px 14px;border-top:1px solid var(--line)}\n.list .crow:first-child{border-top:0}\n.crow:hover{background:color-mix(in srgb,var(--sunk) 45%,transparent)}\n.c-time{font-family:var(--f-mono);font-size:12.5px;color:var(--ink2);white-space:nowrap;font-variant-numeric:tabular-nums}\n.c-time.now{color:var(--today-fg);font-weight:500}\n.c-time.past{color:var(--ink3)}\n.c-main{min-width:0;display:flex;flex-direction:column;gap:2px}\n.c-title{font-weight:600;font-size:14.5px;overflow-wrap:anywhere}\n.c-sub{font-size:12.5px;color:var(--ink3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.mrow{grid-template-columns:minmax(0,1fr) auto 32px}\n.tag.ask{background:var(--accent-soft);color:var(--accent);cursor:pointer;border:0;font:inherit;font-size:11px;font-weight:600;white-space:nowrap}\n.tag.ask:hover{color:var(--accent)}\n.tag.ask[disabled]{opacity:.6;cursor:default}\n.m-ask{padding:4px 14px 14px 14px;font-size:13.5px;line-height:1.5;color:var(--ink)}\n.r-main .m-ask{padding:8px 0 2px 0}\n.tag.ask.sm{padding:1px 7px;font-size:11px}\n.m-ask .box{background:var(--accent-soft);border-radius:10px;padding:12px 14px;white-space:pre-wrap;overflow-wrap:anywhere}\n.m-ask .box b{display:block;margin-top:8px}\n.m-ask .box b:first-child{margin-top:0}\n.m-ask .box.think{color:var(--ink3);font-style:italic}\n.m-ask .box.bad{background:var(--late-bg);color:var(--late-fg)}\n@media (max-width:640px){ .mrow{grid-template-columns:minmax(0,1fr) 32px} .mrow .tag.ask{grid-column:1;justify-self:start} .mrow .open{grid-column:2;grid-row:1} }\n.tag.plus{background:var(--sunk);color:var(--ink2);cursor:pointer;border:0;font:inherit;font-size:11px;font-weight:600;white-space:nowrap}\n.tag.plus:hover{color:var(--accent);background:var(--accent-soft)}\n.mrow.owner{grid-template-columns:minmax(0,1fr) auto auto 32px}\n@media (max-width:640px){ .mrow.owner{grid-template-columns:minmax(0,1fr) 32px} .mrow.owner .tag.plus{grid-column:1;justify-self:start} }\n.modal-bg{position:fixed;inset:0;background:rgba(10,20,28,.45);display:flex;align-items:flex-start;justify-content:center;padding:4vh 16px;z-index:50;overflow:auto}\n.modal{background:var(--surface);border-radius:16px;box-shadow:0 20px 60px rgba(0,0,0,.25);width:min(560px,100%);padding:20px 22px 18px;display:flex;flex-direction:column;gap:12px}\n.modal h3{font-family:var(--f-display);font-weight:400;font-size:21px;margin:0}\n.modal .sub{font-size:13px;color:var(--ink3);margin-top:-8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.fld{display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:var(--ink2);font-weight:500}\n.fld input,.fld select,.fld textarea{font-size:14px;font-weight:400;color:var(--ink);background:var(--sunk2);border:1px solid var(--line);border-radius:9px;padding:8px 10px;width:100%}\n.fld textarea{min-height:88px;resize:vertical;line-height:1.4}\n.fld input:focus,.fld select:focus,.fld textarea:focus{outline:2px solid var(--accent);outline-offset:0;border-color:transparent}\n.frow{display:grid;grid-template-columns:1fr 1fr;gap:10px}\n@media (max-width:520px){.frow{grid-template-columns:1fr}}\n.fchk{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--ink)}\n.fchk input{width:16px;height:16px;accent-color:var(--accent)}\n.flink{font-size:12.5px;color:var(--accent);background:none;border:0;padding:0;cursor:pointer;align-self:flex-start;font-weight:600}\n.flink[disabled]{opacity:.5;cursor:default}\n.mact{display:flex;gap:10px;justify-content:flex-end;align-items:center;margin-top:4px;flex-wrap:wrap}\n.mact .note{margin-right:auto;font-size:13px;color:var(--ink2)}\n.mact .note.err{color:var(--late-fg)}\n.mact .note a{color:var(--accent);font-weight:600}\n.btn{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:8px 16px;font-size:13.5px;font-weight:600;color:var(--ink2)}\n.btn:hover{border-color:var(--accent);color:var(--accent)}\n.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}\n.btn.primary:hover{filter:brightness(1.08);color:#fff}\n.btn[disabled]{opacity:.55;cursor:default;filter:none}\n.tag.join{background:var(--done-bg);color:var(--done-fg)}\n.tag.join:hover{color:var(--ok-fg)}\n.srcnote{padding:12px 14px;font-size:13px;color:var(--ink2);display:flex;gap:10px;align-items:flex-start}\n.srcnote.bad{color:var(--late-fg)}\n.srcnote b{display:block;font-size:13.5px;margin-bottom:1px;color:inherit}\n@media (max-width:980px){\n .crow{grid-template-columns:minmax(0,1fr) 32px}\n .crow .c-time{grid-column:1;grid-row:1}\n .crow .c-main{grid-column:1;grid-row:2}\n .crow .tag.join{grid-column:1;grid-row:3;justify-self:start}\n .crow .open{grid-column:2;grid-row:1}\n}\n\n.skel{display:flex;flex-direction:column;gap:7px}\n.skel .sk{height:46px;border-radius:10px;background:linear-gradient(90deg,var(--sunk) 25%,var(--sunk2) 50%,var(--sunk) 75%);background-size:400% 100%;animation:sh 1.4s ease-in-out infinite}\n@keyframes sh{0%{background-position:100% 0}100%{background-position:0 0}}\n.loading-line{font-size:13px;color:var(--ink3);display:flex;align-items:center;gap:8px}\n\n.foot{border-top:1px solid var(--line);padding-top:14px;font-size:12.5px;color:var(--ink3);display:flex;flex-direction:column;gap:5px}\n.foot-ver{font-family:var(--f-mono);font-size:11px;opacity:.75}\n.sec-h[data-node]{cursor:pointer;user-select:none;border-radius:8px}\n.sec-h[data-node]:hover h2{color:var(--accent)}\n.sec-h .caret,.day .caret{align-self:center}\n.day[data-node]{cursor:pointer;user-select:none}\n.day[data-node]:hover .dname{color:var(--accent)}\n.tag.who{background:var(--k6);color:var(--k6f)}\n.tag.st{background:var(--working-bg);color:var(--working-fg)}\n.tag.st.stuck{background:var(--late-bg);color:var(--late-fg)}\n.tag.st.idle{background:var(--sunk);color:var(--ink2)}\n.aswitch{display:inline-flex;align-items:center;gap:8px;margin-top:6px;font-size:12.5px;color:var(--ink2);cursor:pointer;user-select:none}\n.aswitch input{width:15px;height:15px;accent-color:var(--accent);margin:0}\n.aswitch .on{color:var(--accent);font-weight:600}\n\n@media (max-width:980px){\n .cols{grid-template-columns:minmax(0,1fr) 150px 32px;gap:6px 10px;align-items:start}\n .lhead .h-type,.lhead .h-due,.lhead .h-act{display:none}\n .row .r-type{grid-column:1;grid-row:2}\n .row .r-due{grid-column:1;grid-row:3}\n .row .r-act{grid-column:1;grid-row:4}\n .row .stcell{grid-row:1;grid-column:2}\n .row .open{grid-row:1;grid-column:3}\n .row.nested.lv0{--ind:22px}\n .row.nested.lv1{--ind:40px}\n .row.nested.lv2{--ind:58px}\n .band.grp{padding-left:24px}\n}\n@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}\n"; document.head.appendChild(st);
9
+ var st = document.createElement("style"); st.textContent = "\n/* Layout: one column — masthead, signal strip, filter rail, tabbed lists.\n Reads Monday live on every open. Lists mirror Monday: area > group > project > subitem. Rows, never cards. */\n:root{\n --bg:#F2F5F7; --surface:#FFFFFF; --sunk:#E7EDF1; --sunk2:#EFF3F6;\n --ink:#14222B; --ink2:#4D6170; --ink3:#8396A3; --line:#DBE4EA;\n --accent:#0F5C6B; --accent-soft:#D6EBEF;\n --ready-bg:#DCE6FB; --ready-fg:#2B3F8C;\n --working-bg:#FBE6CB; --working-fg:#8A4C10;\n --info-bg:#FBDDD3; --info-fg:#93361B;\n --done-bg:#D8EEDE; --done-fg:#1E6039;\n --closed-bg:#CDE5D6; --closed-fg:#0C4A2C;\n --none-bg:#E7EDF1; --none-fg:#5E7280;\n --req-bg:#EADCF5; --req-fg:#5C2E7A;\n --late-bg:#F8D8D8; --late-fg:#97262A;\n --today-fg:#0B5160; --ok-fg:#1E6039;\n --k1:#C9DCF7; --k1f:#1F4480; --k2:#D6EBDC; --k2f:#1F6038;\n --k3:#FBE0E8; --k3f:#8C2B4C; --k4:#FAE3CF; --k4f:#8A4A14;\n --k5:#CFE9E4; --k5f:#145C50; --k6:#E3DDF9; --k6f:#453394;\n --k7:#DCE3E9; --k7f:#3C5160; --k8:#EBDFF2; --k8f:#5F2F77;\n --k9:#F5E2BE; --k9f:#75530C; --k10:#D9E7F2; --k10f:#2A5272;\n --shadow:0 1px 2px rgba(20,34,43,.05),0 4px 16px rgba(20,34,43,.045);\n --f-display:\"Young Serif\",Georgia,\"Times New Roman\",serif;\n --f-body:\"Figtree\",ui-sans-serif,system-ui,-apple-system,\"Segoe UI\",sans-serif;\n --f-mono:\"IBM Plex Mono\",ui-monospace,SFMono-Regular,Menlo,monospace;\n --r:12px;\n}\n@media (prefers-color-scheme:dark){:root:not([data-theme=\"light\"]){\n --bg:#101820; --surface:#18222B; --sunk:#141D25; --sunk2:#1C2730;\n --ink:#E7EFF4; --ink2:#AFC0CC; --ink3:#788C99; --line:#263340;\n --accent:#6FC6D6; --accent-soft:#17323B;\n --ready-bg:#232E55; --ready-fg:#B9C8F6;\n --working-bg:#3B2A14; --working-fg:#F2C68A;\n --info-bg:#3E2219; --info-fg:#F3B49B;\n --done-bg:#19331F; --done-fg:#9FD9B2;\n --closed-bg:#12301E; --closed-fg:#8CCBA4;\n --none-bg:#1E2832; --none-fg:#9BAEBB;\n --req-bg:#2C1B3A; --req-fg:#CFA9E6;\n --late-bg:#3D2023; --late-fg:#F0AAAC;\n --today-fg:#93D6E2; --ok-fg:#9FD9B2;\n --k1:#1C2D4A; --k1f:#AFC8EE; --k2:#1A3324; --k2f:#A3D5B3;\n --k3:#3A2029; --k3f:#F0B2C4; --k4:#3A2616; --k4f:#EDBB8C;\n --k5:#123330; --k5f:#95D3C8; --k6:#272052; --k6f:#C3B8F3;\n --k7:#222E38; --k7f:#AFC2CF; --k8:#2D1E38; --k8f:#D5B3E6;\n --k9:#352A12; --k9f:#E3C684; --k10:#1B2B38; --k10f:#A9C6DD;\n --shadow:0 1px 2px rgba(0,0,0,.35),0 6px 18px rgba(0,0,0,.28);\n color-scheme:dark;\n}}\n:root[data-theme=\"dark\"]{\n --bg:#101820; --surface:#18222B; --sunk:#141D25; --sunk2:#1C2730;\n --ink:#E7EFF4; --ink2:#AFC0CC; --ink3:#788C99; --line:#263340;\n --accent:#6FC6D6; --accent-soft:#17323B;\n --ready-bg:#232E55; --ready-fg:#B9C8F6;\n --working-bg:#3B2A14; --working-fg:#F2C68A;\n --info-bg:#3E2219; --info-fg:#F3B49B;\n --done-bg:#19331F; --done-fg:#9FD9B2;\n --closed-bg:#12301E; --closed-fg:#8CCBA4;\n --none-bg:#1E2832; --none-fg:#9BAEBB;\n --req-bg:#2C1B3A; --req-fg:#CFA9E6;\n --late-bg:#3D2023; --late-fg:#F0AAAC;\n --today-fg:#93D6E2; --ok-fg:#9FD9B2;\n --k1:#1C2D4A; --k1f:#AFC8EE; --k2:#1A3324; --k2f:#A3D5B3;\n --k3:#3A2029; --k3f:#F0B2C4; --k4:#3A2616; --k4f:#EDBB8C;\n --k5:#123330; --k5f:#95D3C8; --k6:#272052; --k6f:#C3B8F3;\n --k7:#222E38; --k7f:#AFC2CF; --k8:#2D1E38; --k8f:#D5B3E6;\n --k9:#352A12; --k9f:#E3C684; --k10:#1B2B38; --k10f:#A9C6DD;\n --shadow:0 1px 2px rgba(0,0,0,.35),0 6px 18px rgba(0,0,0,.28);\n color-scheme:dark;\n}\n*{box-sizing:border-box}\nbody{background:var(--bg);color:var(--ink);font-family:var(--f-body);font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased}\n.wrap{max-width:1220px;margin:0 auto;\n padding-left:max(16px,env(safe-area-inset-left,0px));\n padding-right:max(16px,env(safe-area-inset-right,0px));\n padding-block:26px 90px;display:flex;flex-direction:column;gap:18px}\na{color:inherit}\nbutton,select,input{font:inherit;color:inherit}\nbutton{cursor:pointer}\n:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}\n\n.mast{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:10px 24px}\n.mast h1{font-family:var(--f-display);font-weight:400;font-size:clamp(27px,4.2vw,38px);line-height:1.1;margin:0;text-wrap:balance;letter-spacing:-.01em}\n.eyebrow{font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink3);margin-bottom:6px;font-weight:600}\n.mast-right{display:flex;align-items:center;gap:10px}\n.sync{display:flex;flex-direction:column;align-items:flex-end;gap:1px;font-size:12px;color:var(--ink3);text-align:right}\n.sync b{font-family:var(--f-mono);font-weight:500;color:var(--ink2);font-size:12px}\n.refresh{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:8px 14px;font-size:13px;font-weight:600;display:inline-flex;align-items:center;gap:7px;color:var(--ink2);box-shadow:var(--shadow)}\n.refresh:hover{border-color:var(--accent);color:var(--accent)}\n.refresh[disabled]{opacity:.55;cursor:default}\n.refresh svg{width:14px;height:14px}\n.spin{animation:sp 1s linear infinite}\n@keyframes sp{to{transform:rotate(360deg)}}\n\n.strip{display:flex;flex-wrap:wrap;gap:8px}\n.stat{display:flex;align-items:baseline;gap:8px;padding:7px 13px;border-radius:999px;background:var(--surface);border:1px solid var(--line);font-size:13px;color:var(--ink2)}\n.stat b{font-family:var(--f-mono);font-weight:500;font-size:15px;color:var(--ink)}\n.stat.go{background:var(--ready-bg);border-color:transparent;color:var(--ready-fg)}\n.stat.go b{color:var(--ready-fg)}\n.stat.warn{background:var(--working-bg);border-color:transparent;color:var(--working-fg)}\n.stat.warn b{color:var(--working-fg)}\n.stat.hot{background:var(--late-bg);border-color:transparent;color:var(--late-fg)}\n.stat.hot b{color:var(--late-fg)}\n\n.note{display:flex;align-items:flex-start;gap:11px;padding:13px 15px;border-radius:12px;background:var(--surface);border:1px solid var(--line);font-size:13.5px;color:var(--ink2);box-shadow:var(--shadow)}\n.note.bad{background:var(--late-bg);border-color:transparent;color:var(--late-fg)}\n.note b{color:inherit;display:block;font-size:14px;margin-bottom:2px}\n.note .ni{flex:none;width:20px;height:20px;margin-top:1px}\n.note .ni svg{width:20px;height:20px}\n\n.tabs{display:flex;gap:4px;overflow-x:auto;border-bottom:1px solid var(--line);scrollbar-width:none}\n.tabs::-webkit-scrollbar{display:none}\n.tab{border:0;background:none;padding:10px 13px;font-weight:600;font-size:14px;color:var(--ink3);border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;display:flex;gap:6px;align-items:center}\n.tab[aria-selected=\"true\"]{color:var(--ink);border-bottom-color:var(--accent)}\n.tab .n{font-family:var(--f-mono);font-weight:500;font-size:11.5px;background:var(--sunk);color:var(--ink2);border-radius:999px;padding:1px 6px}\n.view[hidden]{display:none!important}\n\n.rail{background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);\n padding:10px 12px;display:flex;flex-wrap:wrap;gap:8px 10px;align-items:center}\n.search{flex:1 1 200px;min-width:0;display:flex;align-items:center;gap:8px;background:var(--sunk);border:1px solid transparent;border-radius:9px;padding:0 10px}\n.search:focus-within{border-color:var(--accent)}\n.search input{flex:1;min-width:0;border:0;background:transparent;font-size:14px;padding:8px 0;outline:none}\n.search svg{width:15px;height:15px;color:var(--ink3);flex:none}\n.fld{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--ink3);font-weight:600;letter-spacing:.04em;text-transform:uppercase}\n.fld select{font-size:13px;font-weight:500;letter-spacing:0;text-transform:none;background:var(--sunk);border:1px solid transparent;border-radius:9px;padding:7px 8px;max-width:200px;cursor:pointer}\n.fld.on select{border-color:var(--accent);background:var(--accent-soft);color:var(--ink)}\n.toggle{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--ink2);font-weight:500;cursor:pointer;white-space:nowrap}\n.toggle input{accent-color:var(--accent);width:15px;height:15px}\n.clear{border:1px solid var(--line);background:none;border-radius:999px;padding:6px 12px;font-size:12.5px;font-weight:600;color:var(--ink2)}\n.clear:hover{border-color:var(--ink3);color:var(--ink)}\n\n.viewdesc{margin:0 2px 16px;font-size:13.5px;line-height:1.5;color:var(--ink2);max-width:72ch;\n border-left:3px solid var(--accent-soft);padding-left:12px}\n.sec{display:flex;flex-direction:column;gap:7px}\n.sec+.sec{margin-top:16px}\n.sec-h{display:flex;align-items:baseline;gap:10px;padding:2px;flex-wrap:wrap}\n.sec-h h2{font-family:var(--f-display);font-weight:400;font-size:19px;margin:0}\n.sec-h .count{font-family:var(--f-mono);font-size:12.5px;color:var(--ink3)}\n.sec-h .hint{font-size:12.5px;color:var(--ink3);margin-left:auto;text-align:right}\n.list{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;box-shadow:var(--shadow)}\n\n.cols{display:grid;grid-template-columns:minmax(0,1fr) 82px 178px 150px 32px;gap:10px;align-items:center}\n.lhead{padding:0 14px;background:var(--sunk);border-bottom:1px solid var(--line)}\n.lhead button,.lhead span{font-size:10.5px;letter-spacing:.07em;text-transform:uppercase;font-weight:600;color:var(--ink3);\n background:none;border:0;padding:9px 0;text-align:left;display:flex;align-items:center;gap:4px}\n.lhead button:hover{color:var(--ink)}\n.lhead button.on{color:var(--accent)}\n.lhead .arrow{font-size:9px}\n\n.row{padding:9px 14px;border-top:1px solid var(--line)}\n.list .row:first-child{border-top:0}\n.row:hover{background:color-mix(in srgb,var(--sunk) 45%,transparent)}\n.row.ctx{background:var(--sunk2)}\n.row.ctx .r-title{color:var(--ink2)}\n.row.dim .r-title{color:var(--ink3);text-decoration:line-through}\n.row{--ind:0px}\n.row.nested.lv0{--ind:58px}\n.row.nested.lv1{--ind:82px}\n.row.nested.lv2{--ind:106px}\n.r-main{min-width:0;display:flex;flex-direction:column;gap:2px;padding-left:var(--ind);position:relative}\n.row.nested .r-main::before{content:\"\";position:absolute;left:calc(var(--ind) - 16px);top:1px;bottom:1px;width:2px;background:var(--line);border-radius:2px}\n.row.nested.lv1 .r-main::before,.row.nested.lv2 .r-main::before{background:var(--ink3);opacity:.35}\n.r-top{display:flex;align-items:center;gap:7px;min-width:0}\n.r-title{font-weight:600;font-size:14.5px;overflow-wrap:anywhere;min-width:0}\n.row.proj .r-title{font-size:15px}\n.caret{border:0;background:none;color:var(--ink3);font-size:11px;width:16px;height:16px;padding:0;flex:none;display:grid;place-items:center;transition:transform .15s}\n.caret.open{transform:rotate(90deg)}\n.r-sub{font-size:12.5px;color:var(--ink3);display:flex;flex-wrap:wrap;gap:3px 8px;align-items:center}\n.sep{opacity:.5}\n.chip{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;border-radius:999px;padding:2px 8px;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}\n.tag{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;border-radius:6px;padding:2px 7px;background:var(--sunk);color:var(--ink2);text-decoration:none}\n.tag:hover{color:var(--ink)}\n.tag.warnflag{background:var(--late-bg);color:var(--late-fg)}\n.tag.trip{background:var(--accent-soft);color:var(--accent);font-variant-numeric:tabular-nums}\n.type{font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--ink3)}\n.type.t-Action{color:var(--accent)}\n.type.t-Project{color:var(--k1f)}\n.type.t-OpenFile{color:var(--ink2)}\n.type.t-Idea{color:var(--k8f)}\n\n.stcell{display:flex;flex-direction:column;gap:2px;min-width:0}\nselect.stsel{font-size:11.5px;font-weight:600;border:1px solid transparent;border-radius:999px;padding:4px 8px;width:100%;max-width:178px;cursor:pointer;appearance:none;-webkit-appearance:none;background-image:none}\nselect.stsel:hover{border-color:var(--ink3)}\n.v-ready{background:var(--ready-bg);color:var(--ready-fg)}\n.v-working{background:var(--working-bg);color:var(--working-fg)}\n.v-info{background:var(--info-bg);color:var(--info-fg)}\n.v-done{background:var(--done-bg);color:var(--done-fg)}\n.v-closed{background:var(--closed-bg);color:var(--closed-fg)}\n.v-none{background:var(--none-bg);color:var(--none-fg)}\n.v-req{background:var(--req-bg);color:var(--req-fg)}\nselect.stsel option{background:var(--surface);color:var(--ink)}\n.stmsg{font-size:10.5px;color:var(--ink3);font-family:var(--f-mono)}\n.stmsg.err{color:var(--late-fg);font-family:var(--f-body);font-weight:500;letter-spacing:0}\n.stmsg.ok{color:var(--ok-fg)}\n.stpill{display:inline-flex;align-items:center;font-size:11.5px;font-weight:600;border-radius:999px;padding:4px 9px;white-space:nowrap}\n\n.due{font-family:var(--f-mono);font-size:12.5px;font-variant-numeric:tabular-nums;color:var(--ink2);white-space:normal;line-height:1.3;display:inline-block}\n.due.late{color:var(--late-fg);font-weight:500}\n.due.now{color:var(--today-fg);font-weight:500}\n.due.never{color:var(--ink3)}\n.open{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;color:var(--ink3);text-decoration:none;border:1px solid transparent;justify-self:end}\n.open:hover{background:var(--sunk);color:var(--accent);border-color:var(--line)}\n.open svg{width:15px;height:15px}\n.empty{padding:16px 14px;font-size:13.5px;color:var(--ink3)}\n\n.band{display:flex;align-items:center;gap:10px;width:100%;padding:9px 14px;background:var(--sunk);border:0;border-top:1px solid var(--line);text-align:left}\n.list>.band:first-child{border-top:0}\n.band.area .bname{font-family:var(--f-display);font-size:16px;font-weight:400}\n.band.grp{background:var(--sunk2);padding-left:36px}\n.band.grp .bname{font-size:12.5px;font-weight:600;color:var(--ink2);letter-spacing:.02em}\n.band .count{font-family:var(--f-mono);font-size:12px;color:var(--ink3)}\n.band .bbar{margin-left:auto;display:flex;gap:5px;align-items:center}\n\n.day{display:flex;align-items:baseline;gap:10px;padding:9px 14px;background:var(--sunk);border-top:1px solid var(--line)}\n.list>.day:first-child{border-top:0}\n.day .dname{font-weight:600;font-size:13.5px}\n.day .ddate{font-family:var(--f-mono);font-size:12px;color:var(--ink3)}\n.day .dcount{font-family:var(--f-mono);font-size:12px;color:var(--ink3);margin-left:auto}\n\n.mrow{display:grid;grid-template-columns:minmax(0,1fr) 32px;gap:10px;align-items:center;padding:9px 14px;border-top:1px solid var(--line)}\n.list .mrow:first-child{border-top:0}\n.mrow:hover{background:color-mix(in srgb,var(--sunk) 45%,transparent)}\n.m-main{min-width:0;display:flex;flex-direction:column;gap:2px}\n.m-subj{font-weight:600;font-size:14.5px;text-decoration:none;overflow-wrap:anywhere}\n.m-subj:hover{text-decoration:underline;text-decoration-color:var(--ink3)}\n.m-sub{font-size:12.5px;color:var(--ink3);display:flex;flex-wrap:wrap;gap:3px 8px;align-items:baseline}\n.m-sub .from{color:var(--ink2);font-weight:500}\n.m-sub .when{font-family:var(--f-mono);font-size:12px}\n.m-snip{font-size:13px;color:var(--ink2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.crow{display:grid;grid-template-columns:108px minmax(0,1fr) auto 32px;gap:10px;align-items:center;padding:9px 14px;border-top:1px solid var(--line)}\n.list .crow:first-child{border-top:0}\n.crow:hover{background:color-mix(in srgb,var(--sunk) 45%,transparent)}\n.c-time{font-family:var(--f-mono);font-size:12.5px;color:var(--ink2);white-space:nowrap;font-variant-numeric:tabular-nums}\n.c-time.now{color:var(--today-fg);font-weight:500}\n.c-time.past{color:var(--ink3)}\n.c-main{min-width:0;display:flex;flex-direction:column;gap:2px}\n.c-title{font-weight:600;font-size:14.5px;overflow-wrap:anywhere}\n.c-sub{font-size:12.5px;color:var(--ink3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.mrow{grid-template-columns:minmax(0,1fr) auto 32px}\n.tag.ask{background:var(--accent-soft);color:var(--accent);cursor:pointer;border:0;font:inherit;font-size:11px;font-weight:600;white-space:nowrap}\n.tag.ask:hover{color:var(--accent)}\n.tag.ask[disabled]{opacity:.6;cursor:default}\n.m-ask{padding:4px 14px 14px 14px;font-size:13.5px;line-height:1.5;color:var(--ink)}\n.r-main .m-ask{padding:8px 0 2px 0}\n.tag.ask.sm{padding:1px 7px;font-size:11px}\n.m-ask .box{background:var(--accent-soft);border-radius:10px;padding:12px 14px;white-space:pre-wrap;overflow-wrap:anywhere}\n.m-ask .box b{display:block;margin-top:8px}\n.m-ask .box b:first-child{margin-top:0}\n.m-ask .box.think{color:var(--ink3);font-style:italic}\n.m-ask .box.bad{background:var(--late-bg);color:var(--late-fg)}\n@media (max-width:640px){ .mrow{grid-template-columns:minmax(0,1fr) 32px} .mrow .tag.ask{grid-column:1;justify-self:start} .mrow .open{grid-column:2;grid-row:1} }\n.tag.plus{background:var(--sunk);color:var(--ink2);cursor:pointer;border:0;font:inherit;font-size:11px;font-weight:600;white-space:nowrap}\n.tag.plus:hover{color:var(--accent);background:var(--accent-soft)}\n.mrow.owner{grid-template-columns:minmax(0,1fr) auto auto 32px}\n@media (max-width:640px){ .mrow.owner{grid-template-columns:minmax(0,1fr) 32px} .mrow.owner .tag.plus{grid-column:1;justify-self:start} }\n.modal-bg{position:fixed;inset:0;background:rgba(10,20,28,.45);display:flex;align-items:flex-start;justify-content:center;padding:4vh 16px;z-index:50;overflow:auto}\n.modal{background:var(--surface);border-radius:16px;box-shadow:0 20px 60px rgba(0,0,0,.25);width:min(560px,100%);padding:20px 22px 18px;display:flex;flex-direction:column;gap:12px}\n.modal h3{font-family:var(--f-display);font-weight:400;font-size:21px;margin:0}\n.modal .sub{font-size:13px;color:var(--ink3);margin-top:-8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.fld{display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:var(--ink2);font-weight:500}\n.fld input,.fld select,.fld textarea{font-size:14px;font-weight:400;color:var(--ink);background:var(--sunk2);border:1px solid var(--line);border-radius:9px;padding:8px 10px;width:100%}\n.fld textarea{min-height:88px;resize:vertical;line-height:1.4}\n.fld input:focus,.fld select:focus,.fld textarea:focus{outline:2px solid var(--accent);outline-offset:0;border-color:transparent}\n.frow{display:grid;grid-template-columns:1fr 1fr;gap:10px}\n@media (max-width:520px){.frow{grid-template-columns:1fr}}\n.fchk{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--ink)}\n.fchk input{width:16px;height:16px;accent-color:var(--accent)}\n.flink{font-size:12.5px;color:var(--accent);background:none;border:0;padding:0;cursor:pointer;align-self:flex-start;font-weight:600}\n.flink[disabled]{opacity:.5;cursor:default}\n.mact{display:flex;gap:10px;justify-content:flex-end;align-items:center;margin-top:4px;flex-wrap:wrap}\n.mact .note{margin-right:auto;font-size:13px;color:var(--ink2)}\n.mact .note.err{color:var(--late-fg)}\n.mact .note a{color:var(--accent);font-weight:600}\n.btn{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:8px 16px;font-size:13.5px;font-weight:600;color:var(--ink2)}\n.btn:hover{border-color:var(--accent);color:var(--accent)}\n.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}\n.btn.primary:hover{filter:brightness(1.08);color:#fff}\n.btn[disabled]{opacity:.55;cursor:default;filter:none}\n.tag.join{background:var(--done-bg);color:var(--done-fg)}\n.tag.join:hover{color:var(--ok-fg)}\n.srcnote{padding:12px 14px;font-size:13px;color:var(--ink2);display:flex;gap:10px;align-items:flex-start}\n.srcnote.bad{color:var(--late-fg)}\n.srcnote b{display:block;font-size:13.5px;margin-bottom:1px;color:inherit}\n@media (max-width:980px){\n .crow{grid-template-columns:minmax(0,1fr) 32px}\n .crow .c-time{grid-column:1;grid-row:1}\n .crow .c-main{grid-column:1;grid-row:2}\n .crow .tag.join{grid-column:1;grid-row:3;justify-self:start}\n .crow .open{grid-column:2;grid-row:1}\n}\n\n.skel{display:flex;flex-direction:column;gap:7px}\n.skel .sk{height:46px;border-radius:10px;background:linear-gradient(90deg,var(--sunk) 25%,var(--sunk2) 50%,var(--sunk) 75%);background-size:400% 100%;animation:sh 1.4s ease-in-out infinite}\n@keyframes sh{0%{background-position:100% 0}100%{background-position:0 0}}\n.loading-line{font-size:13px;color:var(--ink3);display:flex;align-items:center;gap:8px}\n\n.foot{border-top:1px solid var(--line);padding-top:14px;font-size:12.5px;color:var(--ink3);display:flex;flex-direction:column;gap:5px}\n.foot-ver{font-family:var(--f-mono);font-size:11px;opacity:.75}\n.sec-h[data-node]{cursor:pointer;user-select:none;border-radius:8px}\n.sec-h[data-node]:hover h2{color:var(--accent)}\n.sec-h .caret,.day .caret{align-self:center}\n.day[data-node]{cursor:pointer;user-select:none}\n.day[data-node]:hover .dname{color:var(--accent)}\n.tag.who{background:var(--k6);color:var(--k6f)}\n.tag.st{background:var(--working-bg);color:var(--working-fg)}\n.tag.st.stuck{background:var(--late-bg);color:var(--late-fg)}\n.tag.st.idle{background:var(--sunk);color:var(--ink2)}\n.aswitch{display:inline-flex;align-items:center;gap:8px;margin-top:6px;font-size:12.5px;color:var(--ink2);cursor:pointer;user-select:none}\n.aswitch input{width:15px;height:15px;accent-color:var(--accent);margin:0}\n.aswitch .on{color:var(--accent);font-weight:600}\n\n@media (max-width:980px){\n .cols{grid-template-columns:minmax(0,1fr) 150px 32px;gap:6px 10px;align-items:start}\n .lhead .h-type,.lhead .h-due{display:none}\n .row .r-type{grid-column:1;grid-row:2}\n .row .r-due{grid-column:1;grid-row:3}\n .row .stcell{grid-row:1;grid-column:2}\n .row .open{grid-row:1;grid-column:3}\n .row.nested.lv0{--ind:22px}\n .row.nested.lv1{--ind:40px}\n .row.nested.lv2{--ind:58px}\n .band.grp{padding-left:24px}\n}\n@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}\n"; document.head.appendChild(st);
10
10
  var root = document.getElementById("desk-root") || document.body;
11
11
  root.innerHTML = "<div class=\"wrap\">\n <header class=\"mast\">\n <div>\n <div class=\"eyebrow\">Wheel &amp; Anchor &middot; Office of the CEO</div>\n <h1 id=\"today-title\">Gordon's Desk</h1>\n </div>\n <div class=\"mast-right\">\n <div class=\"sync\"><div id=\"sync-line\">reading Monday…</div><div id=\"sync-sub\">Monday &middot; Gmail &middot; Calendar</div></div>\n <button class=\"refresh\" id=\"refresh\" type=\"button\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\"><path d=\"M21 12a9 9 0 1 1-2.6-6.4\"/><path d=\"M21 3v6h-6\"/></svg>\n Refresh</button>\n </div>\n </header>\n\n <div class=\"strip\" id=\"strip\"></div>\n <div id=\"notice\"></div>\n\n <nav class=\"tabs\" role=\"tablist\" aria-label=\"Views\" id=\"tabs\"></nav>\n\n <div class=\"rail\" id=\"rail\" hidden>\n <label class=\"search\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\"><circle cx=\"11\" cy=\"11\" r=\"7\"/><path d=\"m20 20-3.5-3.5\"/></svg>\n <input id=\"f-search\" type=\"search\" placeholder=\"Search tasks, projects, trips…\" autocomplete=\"off\">\n </label>\n <span class=\"fld\" id=\"w-area\">Area <select id=\"f-area\"></select></span>\n <span class=\"fld\" id=\"w-proj\">Project <select id=\"f-proj\"></select></span>\n <span class=\"fld\" id=\"w-ceo\">CEO status <select id=\"f-ceo\"></select></span>\n <span class=\"fld\" id=\"w-due\">Due <select id=\"f-due\">\n <option value=\"\">Any</option>\n <option value=\"overdue\">Overdue</option>\n <option value=\"today\">Today</option>\n <option value=\"week\">Next 7 days</option>\n <option value=\"dated\">Has a date</option>\n <option value=\"none\">No date</option>\n </select></span>\n <label class=\"toggle\"><input type=\"checkbox\" id=\"f-nest\" checked> Nest by project</label>\n <button class=\"clear\" id=\"f-clear\" type=\"button\">Reset</button>\n </div>\n\n <main id=\"views\"></main>\n\n <footer class=\"foot\">\n <span id=\"foot-1\">Read live each time this page opens: every Monday board with a CEO Status column (plus anything Gordon logged for someone else), the Gmail threads under GD To Check, and the calendar for the fortnight ahead. Click any heading to fold it away.</span>\n <span>Shows anything assigned to Gordon, or carrying a CEO Status. Finished work moves to Completed. Items at Request for CEO wait for the assistant's triage and are not shown here.</span>\n <label class=\"aswitch\" title=\"For the assistant: adds a + Task button on each email that creates the item on Monday\"><input type=\"checkbox\" id=\"assist-toggle\"> <span id=\"assist-label\">Assistant tools</span></label>\n <span id=\"foot-ver\" class=\"foot-ver\" title=\"Version of the dashboard script this page is running\"></span>\n </footer>\n</div>";
12
12
 
@@ -503,7 +503,6 @@ function row(n, depth, opts){
503
503
  if(d && SAMPLE) bits.push('<button class="tag ask sm" type="button" data-task-ask="' + d.id + '"' + (opts.assigned ? ' data-mode="assigned"' : "") + (ta && ta.state === "loading" ? " disabled" : "") + ">" +
504
504
  (ta && ta.state === "ok" ? (ta.open ? "Hide" : "Show brief") : "Ask Claude") + "</button>");
505
505
 
506
- var canDone = d && d.ceo !== "CEO Done" && d.ceo !== "Closed" && d.ceo !== "Not for CEO";
507
506
  return '<div class="' + cls.join(" ") + '">' +
508
507
  '<div class="r-main"><div class="r-top">' +
509
508
  (hasKids ? '<button class="caret' + (open ? " open" : "") + '" type="button" data-node="' + n.id + '" aria-expanded="' + open + '" aria-label="Toggle subitems">&#9656;</button>' : "") +
@@ -514,7 +513,6 @@ function row(n, depth, opts){
514
513
  '<div class="r-type"><span class="type t-' + String(o.work || "").replace(/\s/g,"") + '">' + esc(WORK_LABEL[o.work] || (d ? "—" : "parent")) + "</span></div>" +
515
514
  (d ? statusSelect(d) : '<div class="stcell"><span class="stpill v-none">not his item</span></div>') +
516
515
  '<div class="r-due">' + (d ? dueCell(d) : "") + "</div>" +
517
- '<div class="r-act">' + (canDone ? '<button class="donebtn" type="button" data-done="' + d.id + '">Done</button>' : "") + "</div>" +
518
516
  '<a class="open" href="' + esc(o.url || "#") + '" target="_blank" rel="noopener" title="Open in Monday" aria-label="Open in Monday">' +
519
517
  '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14 4h6v6"/><path d="M20 4 10 14"/><path d="M19 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1h5"/></svg></a>' +
520
518
  "</div>";
@@ -526,7 +524,7 @@ function head(){
526
524
  var cls = (sortBy === s[0] ? "on" : "") + (i === 1 ? " h-type" : "") + (i === 3 ? " h-due" : "");
527
525
  return '<button type="button" class="' + cls + '" data-sort="' + s[0] + '">' + s[1] +
528
526
  (sortBy === s[0] ? '<span class="arrow">' + (sortDir === 1 ? "▲" : "▼") + "</span>" : "") + "</button>";
529
- }).join("") + '<span class="h-act"></span><span></span></div>';
527
+ }).join("") + '<span></span></div>';
530
528
  }
531
529
  function flatList(items, emptyMsg, opts){
532
530
  if(!items.length) return '<div class="list"><div class="empty">' + emptyMsg + "</div></div>";
@@ -549,7 +547,6 @@ function dayHead(k, name, dlabel, count){
549
547
  '<span class="caret' + (open ? " open" : "") + '" aria-hidden="true">&#9656;</span><span class="dname">' + name +
550
548
  '</span><span class="ddate">' + dlabel + '</span><span class="dcount">' + count + "</span></div>";
551
549
  }
552
- function lst(items, msg, scope){ return F.nest ? nestedByArea(items, msg, scope) : flatList(items, msg); }
553
550
 
554
551
  /* tree for nested views */
555
552
  function buildTree(items){
@@ -960,7 +957,7 @@ var VIEWS = [
960
957
  {k:"all", label:"All tasks not done",
961
958
  desc:"Everything still open, nested the way Monday holds it: area, then group, then project, then the items beneath it. Anything you have finished has moved to Completed."},
962
959
  {k:"assigned", label:"Assigned by Gordon",
963
- desc:"Tasks you logged on Monday and gave to someone else, which they have not marked Done yet. Their own Status shows where they are; Ask Claude reads their updates on Monday. When you are satisfied, mark it CEO Done and it leaves this list."},
960
+ desc:"Tasks you logged on Monday and gave to someone else, which they have not marked Done yet. Their own Status shows where they are; Ask Claude reads their updates on Monday. When you are satisfied, set its CEO Status to CEO Done and it leaves this list."},
964
961
  {k:"done", label:"Completed",
965
962
  desc:"What you have marked CEO Done and handed back to the assistant, and what she has since Closed."}
966
963
  ];
@@ -985,9 +982,9 @@ function viewBody(k){
985
982
  var soon = a.filter(function(d){ var n = days(d.due); return n !== null && n > 0 && n <= 3; });
986
983
  return mailSection() +
987
984
  calSection("today") +
988
- sec("Due today &amp; overdue", dueNow.length, "tasks only", lst(dueNow, "Nothing is due today.", "t-due")) +
989
- sec("You're already working on these", working.length, "CEO Working On It", lst(working, "Nothing marked as in progress.", "t-work")) +
990
- sec("Upcoming tasks in the next 3 days", soon.length, "", lst(soon, "Clear for the next three days.", "t-soon"));
985
+ sec("Due today &amp; overdue", dueNow.length, "tasks only", flatList(dueNow, "Nothing is due today.")) +
986
+ sec("You're already working on these", working.length, "CEO Working On It", flatList(working, "Nothing marked as in progress.")) +
987
+ sec("Upcoming tasks in the next 3 days", soon.length, "", flatList(soon, "Clear for the next three days."));
991
988
  }
992
989
  if(k === "week"){
993
990
  var a2 = actions();
@@ -1184,14 +1181,6 @@ document.addEventListener("click", function(e){
1184
1181
  if(tk){ askTask(tk.dataset.taskAsk, tk.dataset.mode); return; }
1185
1182
  var ak = e.target.closest("[data-ask]");
1186
1183
  if(ak){ askMail(ak.dataset.ask); return; }
1187
- var db = e.target.closest("[data-done]");
1188
- if(db){
1189
- var id = db.dataset.done, d = BY_ID[id];
1190
- if(!d) return;
1191
- db.disabled = true; db.textContent = "saving…";
1192
- setCeo(id, d.boardId, d.ceoCol, "CEO Done", null).then(function(){ render(); });
1193
- return;
1194
- }
1195
1184
  });
1196
1185
  document.addEventListener("change", function(e){
1197
1186
  if(e.target.classList && e.target.classList.contains("stsel")){
package/dist/version.js CHANGED
@@ -1 +1 @@
1
- window.__GD_DESK_LATEST="1.2.0";
1
+ window.__GD_DESK_LATEST="1.2.2";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wa-gordons-desk",
3
- "version": "1.2.0",
3
+ "version": "1.2.2",
4
4
  "description": "Gordon's Desk — Wheel & Anchor CEO dashboard shell script. Holds no data; reads Monday, Gmail and Google Calendar live through the viewer's own Claude connectors.",
5
5
  "main": "dist/desk.js",
6
6
  "files": ["dist/desk.js", "dist/version.js"],