:root{--green:#176b4d;--green2:#656565;--bg:#f9f9f9;--ink:#2c2c2c;--muted:#838383;--border:#e6e6e6;--white:#fff;--surface:#f2f2f2;--shadow:0 11px 30px #00000010;--radius:19px;--slot:42px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Arial,sans-serif;font-size:14px}button,input,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.4;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid color-mix(in srgb,var(--green) 60%,#fff);outline-offset:2px}input,select{border:1px solid color-mix(in srgb,var(--green) 15%,#fff);background:#fff;border-radius:11px;padding:10px 12px;color:var(--ink);max-width:100%}input[type=number]{width:100%}input[type=checkbox]{accent-color:var(--green)}.auth{min-height:100vh;display:grid;place-items:center;padding:22px;background:radial-gradient(circle at 80% 15%,color-mix(in srgb,var(--green) 21%,#fff),transparent 40%),var(--bg)}.authbox{background:white;border:1px solid var(--border);padding:38px;width:min(435px,100%);border-radius:26px;box-shadow:var(--shadow)}.authbox h1{font-size:40px;margin:6px 0}.authbox form{display:grid;gap:10px}.authbox p{color:var(--muted);line-height:1.55}.eyebrow{font-size:11px;letter-spacing:.15em;text-transform:uppercase;color:var(--green);font-weight:800}.shell{display:grid;grid-template-columns:228px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--side);color:#f3f3f3;padding:27px 15px;display:flex;flex-direction:column;gap:23px;position:sticky;top:0;height:100vh}.logo{padding:0 13px}.logo h1{font-size:27px;letter-spacing:-.06em;margin:2px 0}.logo small{color:rgba(255,255,255,.65)}.navigation{display:grid;gap:5px}.navbtn{border:0;background:transparent;color:color-mix(in srgb,var(--green) 33%,#fff);border-radius:12px;padding:12px;text-align:left;display:flex;align-items:center;gap:10px;font-weight:650}.navbtn.active,.navbtn:hover{background:var(--side2);color:white}.navbtn .ico{font-size:17px;width:22px;text-align:center}.sidebarbottom{margin-top:auto;border-top:1px solid rgba(255,255,255,.18);padding:15px 12px;color:color-mix(in srgb,var(--green) 32%,#fff);word-break:break-all;font-size:12px}.content{padding:28px clamp(16px,3vw,42px) 50px;min-width:0;max-width:1700px;width:100%;margin:auto}.topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;margin-bottom:22px}.topbar h2{font-size:clamp(25px,3vw,37px);letter-spacing:-.055em;margin:4px 0}.topbar p{color:var(--muted);margin:3px 0;font-size:13px}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.btn{border:1px solid var(--border);background:#fff;padding:10px 14px;border-radius:11px;color:var(--ink);font-weight:700;white-space:nowrap}.btn:hover{border-color:color-mix(in srgb,var(--green) 51%,#fff)}.btn.primary{background:var(--green);color:white;border-color:var(--green)}.btn.tiny{font-size:12px;padding:7px 10px}.btn.danger{color:#9c3b38}.btn.active{background:color-mix(in srgb,var(--green) 21%,#fff);color:var(--green);border-color:color-mix(in srgb,var(--green) 60%,#fff)}.panel{background:var(--white);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);min-width:0}.panel.pad{padding:19px}.panel h3{font-size:17px;letter-spacing:-.03em;margin:0 0 12px}.muted{color:var(--muted)}.small{font-size:12px}.tinytext{font-size:11px}.strong{font-weight:750}.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:17px}.stat{background:#fff;border:1px solid var(--border);padding:18px;border-radius:17px}.stat b{display:block;font-size:27px;letter-spacing:-.045em}.stat span{display:block;color:var(--muted);font-size:12px;margin-top:4px}.chip{display:inline-flex;align-items:center;border-radius:100px;background:var(--surface);color:var(--green);padding:5px 10px;font-size:11px;font-weight:750}.bar{background:#e8e8e8;border-radius:30px;height:11px;overflow:hidden}.bar>i{display:block;height:100%;background:var(--green);border-radius:30px}.cards{display:grid;gap:8px}.cardunit{border:1px solid #e1e1e1;background:#fff;border-radius:13px;padding:11px 13px;display:flex;gap:11px;align-items:center;text-align:left;min-width:0;user-select:none}.cardunit[draggable=true]{cursor:grab}.cardunit:hover{border-color:color-mix(in srgb,var(--green) 60%,#fff)}.colorpill{width:7px;height:42px;border-radius:8px;flex:none}.cardunit .info{flex:1;min-width:0}.cardunit b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cardunit small{display:block;margin-top:4px;color:var(--muted)}.cardunit .qty{font-weight:750;color:var(--green)}.cardunit.selected{outline:2px solid var(--green)}.planner{display:grid;grid-template-columns:320px minmax(0,1fr);gap:16px;align-items:start}.innerhead{padding:16px 17px;border-bottom:1px solid var(--border)}.innerhead h3{margin:0 0 3px}.innerhead p{margin:0;color:var(--muted);font-size:12px}.section-pad{padding:15px}.list-scroll{max-height:510px;overflow:auto}.datebar{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;flex-wrap:wrap}.daytabs{display:flex;gap:5px;overflow:auto}.daytab{border:1px solid var(--border);background:white;border-radius:10px;padding:8px 10px;min-width:61px}.daytab b{display:block;font-size:13px}.daytab small{font-size:11px;color:var(--muted)}.daytab.active{background:var(--green);color:#fff}.daytab.active small{color:color-mix(in srgb,var(--green) 25%,#fff)}.scrollcal{overflow:auto;max-height:650px;border-top:1px solid var(--border);position:relative}.timegrid{display:grid;grid-template-columns:62px repeat(var(--colcount),minmax(var(--colmin),1fr));position:relative;min-width:max-content}.timeaxis{width:62px;position:relative;height:1008px;background:white;border-right:1px solid var(--border)}.timeaxis label{position:absolute;right:9px;transform:translateY(-50%);font-size:10px;color:color-mix(in srgb,var(--green) 24%,#fff);font-variant-numeric:tabular-nums}.daycol{position:relative;height:1008px;border-right:1px solid var(--border);background:repeating-linear-gradient(to bottom,#fff 0,#fff 20px,#f0f0f0 20px,#f0f0f0 21px,#fff 21px,#fff 41px,color-mix(in srgb,var(--green) 14%,#fff) 41px,color-mix(in srgb,var(--green) 14%,#fff) 42px);cursor:crosshair}.daycol:hover{background-color:#f9f9f9}.colhead{display:grid;grid-template-columns:62px repeat(var(--colcount),minmax(var(--colmin),1fr));min-width:max-content;position:sticky;top:0;z-index:5;background:#f0f0f0}.colhead div{border-right:1px solid var(--border);padding:9px;text-align:center;font-size:11px;font-weight:750}.event{position:absolute;left:4px;right:4px;border-left:4px solid var(--event-accent);background:var(--event-bg);padding:4px 6px;border-radius:7px;z-index:2;overflow:hidden;text-align:left;font-size:11px;box-shadow:0 2px 4px #0000000d;cursor:grab}.event b{font-size:11px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.event small{font-size:10px;color:#636363}.event.done{outline:1px solid var(--green)}.event.critical{border-style:dashed}.anchor{position:absolute;left:2px;right:2px;background:rgba(128,128,128,.18);border-left:3px solid color-mix(in srgb,var(--green) 23%,#fff);z-index:1;font-size:10px;padding:5px;color:#5f5f5f;overflow:hidden;pointer-events:none}.selectedEvent{outline:2px solid var(--green);outline-offset:1px}.mess{padding:10px 15px;color:var(--muted);font-size:12px;min-height:36px}.mess.err{color:#af423e}.formgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.field{display:grid;gap:5px;min-width:0}.field label{font-size:11px;letter-spacing:.02em;font-weight:800;color:#6f6f6f}.field input,.field select{width:100%}.field.span{grid-column:1/-1}.template{border:1px solid var(--border);border-radius:12px;padding:12px;display:grid;gap:7px}.template strong{font-size:13px}.template small{color:var(--muted)}.table{width:100%;border-collapse:collapse}.table th,.table td{text-align:left;border-bottom:1px solid var(--border);padding:10px 8px;font-size:12px;vertical-align:middle}.table th{color:var(--muted)}.footerhelp{margin-top:18px;font-size:12px;color:var(--muted);line-height:1.6}.monthgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.monthday{border:1px solid var(--border);border-radius:9px;min-height:95px;padding:8px;background:white;text-align:left}.monthday.dim{opacity:.35}.monthday b{display:block;font-size:12px}.monthday span{display:block;color:var(--muted);font-size:10px;margin-top:5px}.focusrow{display:flex;align-items:center;gap:10px;background:#f9f9f9;border:1px solid var(--border);border-radius:12px;padding:13px;margin-bottom:8px}.focusrow .taskinfo{flex:1}.focusrow b{display:block}.focusrow small{display:block;color:var(--muted);margin-top:4px}.tag{font-size:10px;color:var(--green);background:color-mix(in srgb,var(--green) 20%,#fff);padding:4px 7px;border-radius:6px;font-weight:800}.kpi{background:#f6f6f6;border-radius:13px;padding:15px}.kpi strong{font-size:28px;display:block}.kpi small{color:var(--muted)}#toast{position:fixed;bottom:19px;left:50%;transform:translateX(-50%);background:#1f1f1f;color:#fff;padding:11px 17px;border-radius:12px;box-shadow:0 8px 30px #00000050;z-index:99;max-width:90vw;display:none;font-size:13px}.wide{width:100%}.empty{padding:22px;border:1px dashed color-mix(in srgb,var(--green) 19%,#fff);border-radius:13px;color:var(--muted);text-align:center}.sep{border:0;border-top:1px solid var(--border);margin:18px 0}.check{width:22px;height:22px}.actionbox{background:#f0f0f0;border:1px solid color-mix(in srgb,var(--green) 49%,#fff);border-radius:12px;padding:12px;margin:10px 0}.selected-tag{color:var(--green);font-weight:750}.pillrow{display:flex;gap:6px;flex-wrap:wrap}.pillrow .chip{background:#efefef}.mobiletop{display:none}
@media(max-width:1120px){.planner{grid-template-columns:260px minmax(0,1fr)}.stats{grid-template-columns:repeat(2,1fr)}}@media(max-width:760px){.shell{display:block;padding-bottom:65px}.sidebar{position:fixed;top:auto;bottom:0;left:0;right:0;height:64px;display:block;padding:4px 5px;z-index:20}.sidebar .logo,.sidebarbottom{display:none}.navigation{display:flex;justify-content:space-around}.navbtn{font-size:10px;gap:3px;flex-direction:column;padding:6px 7px;text-align:center;flex:1}.navbtn .ico{font-size:18px}.content{padding:18px 11px 25px}.topbar{flex-direction:column}.planner,.grid2,.grid3{grid-template-columns:1fr}.stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.stat{padding:12px}.stat b{font-size:22px}.scrollcal{max-height:580px}.panel.pad{padding:14px}.formgrid{grid-template-columns:1fr 1fr}.monthday{min-height:66px;padding:4px}.monthday span{display:none}.monthday b{font-size:10px}.cardunit{padding:9px}.btn{padding:9px 10px}.topbar h2{font-size:26px}}@media(max-width:400px){.formgrid{grid-template-columns:1fr}.monthgrid{gap:2px}.monthday{min-height:50px}.stats{gap:5px}.stat{padding:10px}}
/* Calendar blocks: tinted fill, solid accent edge, readable two-line label. */
.event{border:0;border-left:4px solid var(--event-accent);background:var(--event-bg);border-radius:8px;padding:4px 7px;line-height:1.25;color:#262626;box-shadow:0 1px 2px #00000014;transition:box-shadow .12s}
.event:hover{box-shadow:0 4px 14px #0000002e;z-index:4}
.event b{font-size:11.5px;font-weight:700}
.event small{display:block;font-size:10px;color:#585858;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.event.short{padding:1px 6px;display:flex;align-items:center}.event.short b{font-size:10.5px}
.event.card{background:var(--event-bg);box-shadow:0 0 0 1px #ffffff,0 2px 6px #0000001f}
.gevent{cursor:grab}.gevent[draggable=false]{cursor:pointer}.gevent.gfree{opacity:.6;border-left-style:dotted}
.event.selectedEvent{outline:2px solid var(--green);outline-offset:1px;z-index:5}
.anchor{background:repeating-linear-gradient(135deg,#88888812 0 6px,#88888808 6px 12px);border-left:3px solid color-mix(in srgb,var(--green) 15%,#fff);color:#949494;border-radius:0 6px 6px 0}
.colhead div.today{color:var(--green);background:color-mix(in srgb,var(--green) 24%,#fff)}
.nowline{position:absolute;left:0;right:0;height:2px;background:#d93a32;z-index:6;pointer-events:none}.nowline:before{content:'';position:absolute;left:-5px;top:-4px;width:10px;height:10px;border-radius:50%;background:#d93a32}
/* Workspace filters, picked cards, Undo in toast. */
.filters{display:grid;gap:10px;margin-bottom:16px}.filterrow{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.filterrow>span{width:64px}
.pill{border:1px solid var(--border);background:#fff;border-radius:100px;padding:6px 12px;font-weight:700;font-size:12px;color:var(--ink);display:inline-flex;gap:6px;align-items:center}
.pill[style]:before{content:'';width:8px;height:8px;border-radius:50%;background:var(--pill)}
.pill i{font-style:normal;color:var(--muted);font-weight:600}.pill.on{background:var(--green);border-color:var(--green);color:#fff}.pill.on i{color:color-mix(in srgb,var(--green) 27%,#fff)}
.event.picked{outline:3px solid #f4b400;outline-offset:1px;z-index:5}
#toast .toastbtn{margin-left:12px;background:#fff;color:#1f1f1f;border:0;border-radius:8px;padding:4px 10px;font-weight:800}
/* Login, Lock In focus cards, Workspace domain board, editor modal, deck groups. */
.gbtn{display:flex;align-items:center;justify-content:center;gap:10px;padding:13px;font-size:15px}.gbtn .g{background:#fff;color:var(--green);border-radius:50%;width:22px;height:22px;display:grid;place-items:center;font-weight:900}
.focusgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px}
.focuscard{background:#fff;border:1px solid var(--border);border-top:4px solid var(--acc);border-radius:16px;padding:16px;display:grid;gap:10px;box-shadow:var(--shadow)}
.fchead{display:flex;align-items:center;gap:8px}.fchead b{flex:1;font-size:15px}.dot{width:10px;height:10px;border-radius:50%;background:var(--acc,var(--dom));flex:none}
.status{font-size:11px;font-weight:800;padding:4px 8px;border-radius:100px;white-space:nowrap}.status.ok{background:color-mix(in srgb,var(--green) 24%,#fff);color:var(--green)}.status.warn{background:#fff1cc;color:#8a6100}.status.bad{background:#fde2df;color:#b3261e}
.fcnum strong{font-size:34px;letter-spacing:-.04em}.fcnum span{color:var(--muted);margin-left:6px}.fcmeta{font-size:12px;color:var(--muted)}
.wsfilter{margin-bottom:14px}.wsfilter>span{width:auto;margin-right:4px}
.kanban{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px;align-items:start}
.domcol{background:#f4f4f4;border:1px solid var(--border);border-top:4px solid var(--dom);border-radius:16px;padding:10px;min-height:120px}
.domcol header{display:flex;align-items:center;gap:8px;padding:4px 4px 10px}.domcol header b{flex:1;font-size:15px}.domcol .dot{background:var(--dom)}
.domcards{display:grid;gap:8px}.dropempty{border:1px dashed color-mix(in srgb,var(--green) 19%,#fff);border-radius:12px;padding:18px;text-align:center;color:var(--muted);font-size:12px}
.actcard{background:#fff;border:1px solid var(--border);border-left:4px solid var(--acc);border-radius:12px;padding:10px 11px;cursor:grab;display:grid;gap:6px}.actcard:hover{box-shadow:0 4px 14px #0000001f}.actcard.paused{opacity:.5}
.actrow{display:flex;gap:8px;align-items:flex-start}.actrow b{flex:1;font-size:13px}.star{border:0;background:none;font-size:16px;color:#d4d4d4;padding:0}.star.on{color:#f4b400}
.actmeta{font-size:11px;color:var(--muted);display:flex;gap:6px;align-items:center;flex-wrap:wrap}.typechip{background:var(--surface);color:var(--green);border-radius:6px;padding:2px 6px;font-weight:800}
.actbtns{display:flex;gap:6px}
.modalback{position:fixed;inset:0;background:#00000066;display:grid;place-items:center;z-index:50;padding:16px}.modal{width:min(640px,100%);max-height:90vh;overflow:auto}
.deckhead{font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--dom);margin:10px 2px 2px;display:flex;align-items:center;gap:6px}.deckhead:before{content:'';width:8px;height:8px;border-radius:50%;background:var(--dom)}
/* Workspace bar, weekly load, sub-tasks, Today check-ins, analytics tables. */
.wsbar{display:flex;gap:18px;flex-wrap:wrap;align-items:center;margin-bottom:14px}.seg{display:flex;gap:6px;align-items:center}
.weekload{display:flex;gap:18px;align-items:center;flex-wrap:wrap;background:#fff;border:1px solid var(--border);border-radius:16px;padding:14px 18px;margin-bottom:14px}.weekload strong{font-size:30px;letter-spacing:-.04em;margin-right:8px}.weekload span{color:var(--muted)}.weekload.over{border-color:#e9a29b;background:#fff6f5}
.subs{list-style:none;margin:2px 0 0;padding:0;display:grid;gap:4px}.subs li{display:flex;align-items:center;gap:7px;font-size:12px}.subs li span{flex:1}.struck{text-decoration:line-through;color:var(--muted)}
.subchk{width:18px;height:18px;border-radius:5px;border:1.5px solid var(--acc);background:#fff;color:#fff;font-size:11px;line-height:1;padding:0;display:grid;place-items:center}.subchk.on{background:var(--acc)}
.linkbtn{border:0;background:none;color:var(--muted);font-size:11px;text-decoration:underline;padding:0}
.cirow{display:flex;align-items:center;gap:10px;background:#f9f9f9;border:1px solid var(--border);border-radius:12px;padding:10px 12px}.cirow .taskinfo{flex:1;min-width:0}.cictl{display:flex;gap:6px;align-items:center}.cictl input{width:110px;padding:7px 9px}
.cibtn{border:1px solid var(--border);background:#fff;border-radius:9px;padding:7px 12px;font-weight:800;font-size:12px;color:var(--ink)}.cibtn.yes{background:var(--green);border-color:var(--green);color:#fff}.cibtn.no{background:#b3261e;border-color:#b3261e;color:#fff}
.cidots{display:flex!important;gap:4px;margin-top:5px}.cidot{width:9px;height:9px;border-radius:50%;background:#e4e4e4;display:inline-block}.cidot.yes{background:var(--green)}.cidot.no{background:#d9534f}.cidot.today{outline:2px solid color-mix(in srgb,var(--green) 49%,#fff);outline-offset:1px}
.bar.mini{height:7px;width:70px;display:inline-block;vertical-align:middle;margin-right:8px}
.table .dot{width:9px;height:9px;border-radius:50%;background:var(--acc)}
/* Brand mark, profile link, eras, today-first focus cards, deck counts, resize handle. */
.brand{display:flex;align-items:center;gap:0;letter-spacing:-.06em}.logo-o{width:.78em;height:.78em;margin:0 .02em;transform:translateY(.04em)}
.sidebarbottom{padding:12px 8px}.profilelink{display:flex;gap:10px;align-items:center;width:100%;border:0;background:transparent;color:#f3f3f3;border-radius:12px;padding:8px;text-align:left}.profilelink:hover,.profilelink.active{background:var(--side2)}
.avatar{width:34px;height:34px;border-radius:50%;background:#f4511e;color:#fff;display:grid;place-items:center;font-weight:800;font-size:13px;flex:none}.pl{display:grid;min-width:0}.pl b{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pl small{color:rgba(255,255,255,.65);font-size:11px}
.erabar{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:6px}
.fctoday{font-size:20px;font-weight:800;letter-spacing:-.02em}.fcweek{display:flex;justify-content:space-between;font-size:12px;color:var(--muted)}.fcweek b{color:var(--ink)}
.cardunit .qty{display:grid;text-align:right;line-height:1.05}.cardunit .qty small{font-size:10px;color:var(--muted);font-weight:600;margin:0}
.event{overflow:hidden}.ev-resize{position:absolute;left:0;right:0;bottom:0;height:7px;cursor:ns-resize}
/* Bigger, Google-like calendar: 64px hours, solid colour blocks, roomier labels. */
.timeaxis,.daycol{height:1536px}.timeaxis{width:62px}
.daycol{background:repeating-linear-gradient(to bottom,#fff 0,#fff 31px,#f3f3f3 31px,#f3f3f3 32px,#fff 32px,#fff 63px,#e2e2e2 63px,#e2e2e2 64px)}
.timeaxis label{font-size:11px;color:#70757a;right:8px}
.colhead div{padding:12px 6px;font-size:12px}
.event{border:0;border-left:0;background:var(--event-bg);color:var(--event-fg,#202124);border-radius:7px;padding:5px 8px;box-shadow:0 1px 2px #0002;font-size:12px}
.event b{font-size:13px;font-weight:700;color:inherit}.event small{color:inherit;opacity:.85;font-size:11.5px}
.event:hover{box-shadow:0 6px 16px #0003}.event.card{box-shadow:0 0 0 1px #fff,0 1px 3px #0003}
.event.short{padding:2px 8px}.event.short b{font-size:12px}
.event.selectedEvent{outline:3px solid #202124;outline-offset:1px}
.anchor{border-left:3px solid color-mix(in srgb,var(--green) 15%,#fff);background:repeating-linear-gradient(135deg,#8888880f 0 8px,#88888805 8px 16px)}
/* Theme vars, collapsible sidebar, full-height planner, zoomable hours. */
:root{--side:#123d2d;--side2:#2b654d}
.sidebar{background:var(--side);position:sticky}.navbtn.active,.navbtn:hover,.profilelink:hover,.profilelink.active{background:var(--side2)}
.navtoggle{position:absolute;top:14px;right:10px;border:0;background:transparent;color:color-mix(in srgb,var(--green) 24%,#fff);font-size:18px;border-radius:8px;width:28px;height:28px;line-height:1}.navtoggle:hover{background:var(--side2)}
.shell{transition:grid-template-columns .15s}.shell.mini{grid-template-columns:72px minmax(0,1fr)}
.shell.mini .sidebar{padding:56px 10px 16px}.shell.mini .logo,.shell.mini .navlabel,.shell.mini .pl{display:none}.shell.mini .navtoggle{right:22px}
.shell.mini .navbtn{justify-content:center;padding:12px 0}.shell.mini .profilelink{justify-content:center;padding:6px 0}
.timeaxis,.daycol{height:calc(var(--hour,56px)*24)}
.daycol{background:linear-gradient(to bottom,transparent calc(50% - 1px),#f3f3f3 calc(50% - 1px),#f3f3f3 50%,transparent 50%,transparent calc(100% - 1px),#e2e2e2 calc(100% - 1px)) 0 0/100% var(--hour,56px),#fff}
.planner{grid-template-columns:270px minmax(0,1fr)}
.planner .scrollcal,.content>.panel .scrollcal{max-height:calc(100vh - 250px)}
.zoom{display:inline-flex;gap:2px;margin-right:6px}.zoom .btn{min-width:30px}
.swatches{display:flex;gap:10px;flex-wrap:wrap}.swatch{width:34px;height:34px;border-radius:50%;border:0;background:radial-gradient(circle at 50% 50%,var(--sw) 0 58%,var(--sw2) 60%);box-shadow:0 0 0 2px #fff,0 0 0 3px #dcdcdc;cursor:pointer}.swatch.on{box-shadow:0 0 0 2px #fff,0 0 0 4px var(--sw)}
.btn.active{color:var(--green)}.status.ok{color:var(--green)}
/* Task pins (like Google Calendar tasks), deck drag chip and landing preview. */
.event.taskmark{display:flex;align-items:center;gap:6px;padding:2px 8px;border:1.5px solid var(--event-accent);background:#fff;color:#202124;border-radius:12px;transform:translateY(-50%);box-shadow:0 1px 3px #0002;z-index:3}
.taskmark .tm-dot{width:13px;height:13px;border-radius:50%;border:2px solid var(--event-accent);display:grid;place-items:center;font-size:9px;flex:none;color:#fff}.taskmark.done .tm-dot{background:var(--event-accent)}
.taskmark b{font-size:11.5px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.taskmark small{font-size:10.5px;opacity:.75}.taskmark.done b{text-decoration:line-through;opacity:.6}
.dragchip{position:fixed;top:-100px;left:-100px;padding:6px 12px;border-radius:8px;background:var(--acc);color:#fff;font:700 12px Inter,system-ui,sans-serif;white-space:nowrap;box-shadow:0 4px 12px #0003}
.dropghost{position:absolute;left:2px;right:2px;border-radius:7px;background:var(--acc);opacity:.75;color:#fff;padding:4px 8px;pointer-events:none;z-index:20;box-shadow:0 6px 16px #0003;font-size:12px;display:grid;align-content:start}.dropghost small{opacity:.9}
/* Report button and tickets. */
.sidebarbottom{display:flex;align-items:center;gap:6px}.sidebarbottom .profilelink{flex:1;min-width:0}
.bugbtn{border:0;background:transparent;color:color-mix(in srgb,var(--green) 24%,#fff);border-radius:10px;width:36px;height:36px;display:grid;place-items:center;flex:none;order:2}.bugbtn:hover{background:var(--side2);color:#fff}
.shell.mini .sidebarbottom{flex-direction:column}
.modal textarea{width:100%;border:1px solid color-mix(in srgb,var(--green) 15%,#fff);border-radius:11px;padding:10px 12px;font:inherit;resize:vertical}
.ticket{display:flex;gap:10px;align-items:center;border:1px solid var(--border);border-radius:12px;padding:10px 12px;margin-bottom:8px}.ticket.done{opacity:.55}.ticket .taskinfo{flex:1;min-width:0}.ticket small{display:block;color:var(--muted);margin-top:3px}
.tkind{font-size:10px;font-weight:800;padding:3px 7px;border-radius:6px}.tkind.bug{background:#fde2df;color:#b3261e}.tkind.feature{background:#e3ecfd;color:#2a56c6}
/* Bases drawer. */
.drawerback{position:fixed;inset:0;background:#00000040;z-index:50;display:flex;justify-content:flex-end}
.drawer{width:min(440px,100%);height:100%;border-radius:0;overflow:auto;padding:20px;box-shadow:-12px 0 30px #0003}
.drawerhead{display:flex;justify-content:space-between;align-items:center}.drawerhead h3{margin:0}
.drawersub{font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:16px 0 8px}
.baserow{border:1px solid var(--border);border-radius:12px;padding:12px;margin-bottom:8px;display:grid;gap:8px}.baserow.on{border-color:var(--green);box-shadow:0 0 0 1px var(--green)}.baserow small{display:block;color:var(--muted);margin-top:3px}

/* Dark mode. */
html[data-mode=dark]{--bg:#111111;--ink:#eaeaea;--muted:#9a9a9a;--border:#2c2c2c;--white:#1a1a1a;--surface:#212121;color-scheme:dark}
html[data-mode=dark] body{background:var(--bg);color:var(--ink)}
html[data-mode=dark] .auth{background:var(--bg)}
html[data-mode=dark] :is(.panel,.stat,.authbox,.weekload,.focuscard,.actcard,.cardunit,.modal,.drawer,.baserow){background:#1a1a1a;border-color:#2c2c2c;color:var(--ink)}
html[data-mode=dark] :is(.btn,.pill,.cibtn,.daytab,.monthday){background:#212121;border-color:#363636;color:var(--ink)}
html[data-mode=dark] :is(.btn.primary,.pill.on,.cibtn.yes){background:var(--green);border-color:var(--green);color:#fff}
html[data-mode=dark] .cibtn.no{background:#b3261e;border-color:#b3261e;color:#fff}
html[data-mode=dark] .btn.danger{color:#ff8a80}html[data-mode=dark] .btn.active{background:#292929;color:var(--accent-ink)}
html[data-mode=dark] :is(input,select,textarea){background:#151515;border-color:#363636;color:var(--ink)}
html[data-mode=dark] .domcol{background:#161616;border-color:#2c2c2c}
html[data-mode=dark] :is(.focusrow,.cirow,.ticket,.template,.kpi,.actionbox){background:#1e1e1e;border-color:#2c2c2c}
html[data-mode=dark] .colhead{background:#1d1d1d}html[data-mode=dark] .colhead div{border-color:#2c2c2c}html[data-mode=dark] .colhead div.today{background:#292929;color:var(--accent-ink)}
html[data-mode=dark] .timeaxis{background:#151515;border-color:#2c2c2c}html[data-mode=dark] .timeaxis label{color:#888888}
html[data-mode=dark] .daycol{border-color:#2c2c2c;background:linear-gradient(to bottom,transparent calc(50% - 1px),#1f1f1f calc(50% - 1px),#1f1f1f 50%,transparent 50%,transparent calc(100% - 1px),#2c2c2c calc(100% - 1px)) 0 0/100% var(--hour,56px),#151515}
html[data-mode=dark] .scrollcal{border-color:#2c2c2c}
html[data-mode=dark] .anchor{background:repeating-linear-gradient(135deg,#ffffff0a 0 8px,#ffffff03 8px 16px);border-left-color:#424242;color:#888888}
html[data-mode=dark] .event{box-shadow:0 1px 3px #0008}html[data-mode=dark] .event.card{box-shadow:0 0 0 1px #151515,0 1px 3px #0008}html[data-mode=dark] .event.selectedEvent{outline-color:#eaeaea}
html[data-mode=dark] .event.taskmark{background:#1a1a1a!important;color:var(--ink)}
html[data-mode=dark] :is(.table th,.table td){border-color:#2c2c2c}
html[data-mode=dark] .bar{background:#2c2c2c}
html[data-mode=dark] :is(.empty,.dropempty){border-color:#3b3b3b;color:var(--muted)}
html[data-mode=dark] :is(.eyebrow,.chip,.tag,.typechip,.cardunit .qty,.selected-tag,.drawersub){color:var(--accent-ink)}
html[data-mode=dark] :is(.chip,.tag,.typechip){background:#292929}
html[data-mode=dark] .status.ok{background:#16352a;color:#7fd3a8}html[data-mode=dark] .status.warn{background:#3a2e10;color:#f2c76b}html[data-mode=dark] .status.bad{background:#3b1714;color:#ff8a80}
html[data-mode=dark] .weekload.over{background:#2a1716;border-color:#6b2f2a}
html[data-mode=dark] .swatch{box-shadow:0 0 0 2px #1a1a1a,0 0 0 3px #3b3b3b}html[data-mode=dark] .swatch.on{box-shadow:0 0 0 2px #1a1a1a,0 0 0 4px var(--sw)}
html[data-mode=dark] .tkind.bug{background:#3b1714;color:#ff8a80}html[data-mode=dark] .tkind.feature{background:#18264a;color:#9db8ff}
html[data-mode=dark] .drawerback,html[data-mode=dark] .modalback{background:#0008}
html[data-mode=dark] .subchk{background:#1a1a1a}html[data-mode=dark] .linkbtn{color:var(--muted)}
/* Workspace: every column on one row, compact cards, icon actions. */
.kanban{grid-template-columns:repeat(var(--cols,6),minmax(165px,1fr));gap:10px;overflow-x:auto;padding-bottom:8px}
.domcol{padding:8px;min-width:0}.domcol header{padding:2px 2px 8px;gap:6px}.domcol header b{font-size:14px}.domcol header .small{white-space:nowrap}
.actcard{min-width:0;padding:9px 10px;gap:5px;position:relative}.actrow b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.actmeta{font-size:11px;gap:4px}
.actbtns{gap:2px;opacity:.45;transition:opacity .12s}.actcard:hover .actbtns,.actcard:focus-within .actbtns{opacity:1}
.ib{border:0;background:transparent;color:var(--muted);width:28px;height:26px;border-radius:7px;font-size:13px;line-height:1;display:grid;place-items:center}.ib:hover{background:var(--surface);color:var(--ink)}.ib.danger:hover{color:#b3261e;background:#fde2df}
.weekload{padding:10px 16px;gap:14px;margin-bottom:12px}.weekload strong{font-size:24px}
html[data-mode=dark] .ib:hover{background:#2c2c2c}html[data-mode=dark] .ib.danger:hover{background:#3b1714;color:#ff8a80}
.domcol header b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.domcol header .small{min-width:0;overflow:hidden;text-overflow:ellipsis}
/* Log page day strip and numbered check-in days; instant tooltip; save warning. */
.daystrip{display:flex;gap:6px;align-items:center;margin-bottom:16px;flex-wrap:wrap}
.dnum{border:1px solid var(--border);background:#fff;border-radius:14px;width:60px;padding:7px 0;display:grid;justify-items:center;gap:2px;color:var(--ink)}.dnum small{font-size:11px;color:var(--muted)}.dnum b{font-size:18px}
.dnum.today{border-color:var(--green)}.dnum.on{background:var(--green);border-color:var(--green);color:#fff}.dnum.on small{color:#ffffffcc}
.sectionh{margin:22px 0 10px;font-size:17px}
.cdays{display:flex;gap:5px;margin-top:7px}.cday{width:30px;height:34px;border-radius:9px;border:1.5px solid var(--border);background:#fff;display:grid;justify-items:center;align-content:center;padding:0;color:var(--ink);line-height:1}.cday small{font-size:8.5px;color:var(--muted)}.cday b{font-size:12px}
.cday.yes{background:var(--acc);border-color:var(--acc);color:#fff}.cday.yes small{color:#ffffffcc}.cday.no{border-color:#d9534f;color:#d9534f}.cday.sel{box-shadow:0 0 0 2px var(--ink)}.cday.today:not(.sel){border-style:dashed}
#tip{position:fixed;z-index:1000;left:0;top:0;max-width:280px;padding:6px 10px;border-radius:7px;background:#202124;color:#fff;font:600 12px Inter,system-ui,sans-serif;box-shadow:0 4px 14px #0003;pointer-events:none;opacity:0;transform:scale(.96);transition:opacity .08s,transform .08s}#tip.on{opacity:1;transform:none}
.savewarn{margin:0 8px 8px;padding:7px 10px;border-radius:9px;background:#b3261e;color:#fff;font-size:12px;font-weight:800;text-align:center}
html[data-mode=dark] :is(.dnum,.cday){background:#212121;border-color:#363636;color:var(--ink)}html[data-mode=dark] .dnum.on{background:var(--green);color:#fff}html[data-mode=dark] .cday.yes{background:var(--acc);color:#fff}html[data-mode=dark] .cday.sel{box-shadow:0 0 0 2px var(--ink)}
html[data-mode=dark] #tip{background:#eaeaea;color:#111}
/* Today: schedule left, log right. */
.todaygrid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:16px;align-items:start}
.schedlist{display:grid;gap:6px}
.schedrow{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:12px;border:1px solid var(--border);background:#fff}
.schedrow .stime{width:62px;flex:none;font-size:12px;font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums}.schedrow .sbar{width:4px;align-self:stretch;border-radius:3px;background:var(--acc);flex:none}.schedrow .taskinfo{flex:1;min-width:0}.schedrow b{display:block;font-size:13.5px}.schedrow small{display:block;color:var(--muted);margin-top:2px}
.schedrow.past{opacity:.5}.schedrow.now{border-color:var(--acc);box-shadow:0 0 0 1px var(--acc)}
.nowtag{font-size:11px;font-weight:800;color:#fff;background:#d93a32;border-radius:100px;padding:3px 8px}
.nowrow{display:flex;align-items:center;gap:8px;color:#d93a32;font-size:12px;font-weight:800;margin:2px 0}.nowrow:before{content:'';width:9px;height:9px;border-radius:50%;background:#d93a32}.nowrow:after{content:'';flex:1;height:2px;background:#d93a32}
.lognote{display:flex;gap:10px;align-items:flex-start;background:#fff6e0;border:1px solid #f2d48a;border-radius:12px;padding:10px 12px;margin-bottom:12px}.lognote b{display:block;font-size:13px}.lognote small{display:block;color:#7a5c12;margin-top:2px}
.lognote .bell{width:10px;height:10px;border-radius:50%;background:#e8a000;margin-top:4px;flex:none;box-shadow:0 0 0 4px #e8a00033}.lognote.ok{background:#e8f6ee;border-color:#a9d6bb}.lognote.ok .bell{background:#1e8e53;box-shadow:0 0 0 4px #1e8e5333}
.daystrip{display:flex;gap:4px;align-items:center;margin-bottom:12px}.daystrip .dnum{flex:1;width:auto;min-width:0;padding:6px 0;border-radius:12px}.daystrip .dnum b{font-size:16px}
.loglist{display:grid;gap:4px}
.logrow{display:flex;align-items:center;gap:12px;padding:9px 6px;border-bottom:1px solid var(--border)}.logrow:last-child{border-bottom:0}.logrow .taskinfo{flex:1;min-width:0}.logrow b{display:block;font-size:14px}
.licon{width:36px;height:36px;border-radius:10px;background:var(--acc);color:#fff;display:grid;place-items:center;font-weight:800;flex:none}
.ltag{font-size:10.5px;font-weight:800;color:var(--acc);background:color-mix(in srgb,var(--acc) 14%,transparent);border-radius:5px;padding:1px 6px;margin-right:6px}.lalarm{font-size:11px;color:var(--muted)}.lalarm:before{content:'⏰ '}
.tick{width:32px;height:32px;border-radius:50%;border:2px solid var(--border);background:transparent;color:#fff;font-weight:900;font-size:14px;display:grid;place-items:center;flex:none;padding:0}.tick.yes{background:var(--acc);border-color:var(--acc)}.tick.no{background:#d9534f;border-color:#d9534f}
.logrow.done b{opacity:.75}.logrow input{width:110px;padding:6px 8px}
/* Workspace goals. */
.goalsec{border-radius:12px;padding:6px;margin-bottom:8px;background:color-mix(in srgb,var(--dom) 6%,transparent)}.goalsec.nogoal{background:transparent;border:1px dashed var(--border)}
.goalhead{display:flex;align-items:center;gap:4px;padding:2px 2px 6px}.goalhead b{flex:1;min-width:0;font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.goalhead .small{white-space:nowrap}
.gicon{width:12px;height:12px;border-radius:50%;border:2px solid var(--dom);box-shadow:inset 0 0 0 2px #fff,inset 0 0 0 5px var(--dom);flex:none}
.goalgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}
.goalcard{background:#fff;border:1px solid var(--border);border-top:4px solid var(--dom);border-radius:16px;padding:14px;display:grid;gap:9px}.goalcard h4{margin:0;font-size:16px}.gchead{display:flex;align-items:center;gap:6px}.gchead .dot{background:var(--dom)}
.gclist{list-style:none;margin:0;padding:0;display:grid;gap:6px}.gclist li{display:flex;align-items:center;gap:6px;font-size:12.5px}.gclist .gcname{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gclist small{color:var(--muted);white-space:nowrap}
html[data-mode=dark] :is(.schedrow,.goalcard){background:#1a1a1a;border-color:#2c2c2c}html[data-mode=dark] .lognote{background:#2e2611;border-color:#5b4a1c}html[data-mode=dark] .lognote small{color:#e6cf8f}html[data-mode=dark] .lognote.ok{background:#14291e;border-color:#28503a}html[data-mode=dark] .logrow{border-color:#2c2c2c}html[data-mode=dark] .gicon{box-shadow:inset 0 0 0 2px #161616,inset 0 0 0 5px var(--dom)}
/* Workspace headers: names get their own line; counts and actions sit below, actions on hover. */
.kanban{grid-template-columns:repeat(var(--cols,6),minmax(185px,1fr))}
.domcol header{flex-wrap:wrap;row-gap:2px}.domcol header b{flex:1 1 auto;white-space:normal;overflow:visible}.domcol header .small{order:3;flex-basis:100%;padding-left:16px}
.goalhead{flex-wrap:wrap;row-gap:2px}.goalhead .gicon{display:none}.goalhead b{flex:1 1 100%;white-space:normal;overflow:visible;line-height:1.25}
.goalhead .small{flex:1}.goalhead .ib{width:24px;height:22px;font-size:12px;opacity:0;transition:opacity .12s}.goalsec:hover .goalhead .ib,.goalhead .ib:focus{opacity:1}
/* Today: starred tiles fitted to their count; log badge. */
.focusstrip{display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));gap:10px;margin-bottom:16px}
.ftile{background:#fff;border:1px solid var(--border);border-top:3px solid var(--acc);border-radius:14px;padding:12px;display:grid;gap:8px;min-width:0}
.ft-top{display:flex;align-items:center;gap:7px;min-width:0}.ft-top .dot{background:var(--acc)}.ft-top b{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ft-day{font-size:16px;font-weight:800;letter-spacing:-.01em}.ftile.done .ft-day{color:var(--acc)}
.ft-foot{display:flex;align-items:center;justify-content:space-between;gap:6px;font-size:11.5px;color:var(--muted)}
.focusstrip.dense .ftile{padding:9px;gap:6px}.focusstrip.dense .ft-day{font-size:13px}.focusstrip.dense .ft-top b{font-size:12.5px}
.starhint{border:1px dashed var(--border);border-radius:12px;padding:10px 14px;color:var(--muted);font-size:13px;margin-bottom:16px}
.loghead{display:flex;align-items:center;gap:8px;margin-bottom:10px}.loghead h3{margin:0}
.logbadge{min-width:22px;height:22px;padding:0 7px;border-radius:100px;display:inline-grid;place-items:center;font-size:12px;font-weight:800;color:#fff;cursor:default}
.logbadge.amber{background:#e8a000}.logbadge.red{background:#d93a32}.logbadge.ok{background:#1e8e53}
html[data-mode=dark] .ftile{background:#1a1a1a;border-color:#2c2c2c}html[data-mode=dark] .starhint{border-color:#3b3b3b}
.star{color:color-mix(in srgb,var(--green) 18%,#fff);font-size:17px;line-height:1}.star:hover{color:#f4b400}.star.on{color:#f4b400}html[data-mode=dark] .star{color:#666666}html[data-mode=dark] .star:hover,html[data-mode=dark] .star.on{color:#f4b400}
/* Log header, date badge, sync chip, Today tabs (phone only). */
.grow{flex:1}
.dnum{position:relative}.dbadge{position:absolute;top:-7px;right:-6px;min-width:19px;height:19px;padding:0 5px;border-radius:100px;font-size:11px;font-weight:800;color:#fff;display:grid;place-items:center;box-shadow:0 0 0 2px var(--white)}
.dbadge.amber{background:#e8a000}.dbadge.red{background:#d93a32}
.syncchip{font-size:12px;color:var(--muted);border:1px solid var(--border);border-radius:100px;padding:6px 10px;white-space:nowrap;align-self:center}.syncchip:before{content:'';display:inline-block;width:7px;height:7px;border-radius:50%;background:#1e8e53;margin-right:6px;vertical-align:1px}.syncchip.busy:before{background:#e8a000;animation:pulse 1s infinite}
@keyframes pulse{50%{opacity:.3}}
.mtabs,.mobilebar,.navback{display:none}.mcount{font-style:normal;background:#d93a32;color:#fff;border-radius:100px;padding:0 6px;font-size:11px;margin-left:4px}

/* Phone layout: menu drawer instead of a sidebar, stacked panels. */
@media(max-width:760px){
 .shell,.shell.mini{display:block;padding-bottom:0}
 .mobilebar{display:flex;align-items:center;gap:10px;position:sticky;top:0;z-index:40;background:var(--side);color:#fff;padding:10px 14px}
 .mobilebar .burger{color:#fff;font-size:20px;width:36px;height:36px}.mbrand{font-size:17px;letter-spacing:-.03em}.mview{margin-left:auto;font-size:13px;color:color-mix(in srgb,var(--green) 24%,#fff)}
 .sidebar,.shell.mini .sidebar{position:fixed;top:0;bottom:0;left:0;right:auto;width:270px;height:100vh;display:flex;flex-direction:column;padding:24px 14px;transform:translateX(-105%);transition:transform .18s;z-index:60}
 .shell.navopen .sidebar{transform:none}.shell.navopen .navback{display:block;position:fixed;inset:0;background:#0007;z-index:55}
 .sidebar .logo,.sidebarbottom,.shell.mini .logo,.shell.mini .pl,.shell.mini .navlabel{display:revert}.sidebar .navtoggle{display:none}
 .navigation{display:grid}.navbtn,.shell.mini .navbtn{flex-direction:row;font-size:15px;justify-content:flex-start;padding:12px;gap:10px}.navbtn .ico{font-size:17px}
 .content{padding:16px 12px 40px}.topbar{flex-direction:column;gap:10px}.topbar .row{flex-wrap:wrap}
 .focusstrip{grid-template-columns:repeat(2,minmax(0,1fr))!important}
 .mtabs{display:flex;gap:6px;margin-bottom:10px}.mtabs .pill{flex:1;justify-content:center;padding:9px}
 .todaygrid{grid-template-columns:1fr}.todaygrid.tab-day>section:last-child,.todaygrid.tab-log>section:first-child{display:none}
 .schedrow .stime{width:54px}
 .planner{display:flex;flex-direction:column}.planner>section:first-child{order:2}.planner .list-scroll{max-height:300px}
 .kanban{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:82vw;overflow-x:auto;scroll-snap-type:x mandatory}.domcol{scroll-snap-align:start}
 .weekload{flex-direction:column;align-items:flex-start}.grid2,.grid3{grid-template-columns:1fr}
 .planner>section,.panel{min-width:0;max-width:100%}.datebar,.datebar .row{flex-wrap:wrap;min-width:0}
 .daytabs{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;min-width:0}.daytab{min-width:0;padding:6px 2px}.daytab small{display:none}
 .sidebar .navigation{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start}.sidebar .navbtn{width:100%;margin:0;flex:none;text-align:left}
}
.mtabs .pill .mcount{color:#fff;background:#d93a32;font-weight:800}

/* Pages start at the top; they never float to the middle on short days. */
.content{margin:0 auto;align-self:start}
/* Workspace cards: name wraps, star always stays inside the card. */
.goalsec,.goalsec>*,.domcol>*{min-width:0}
.actcard{min-width:0;max-width:100%;overflow:hidden;box-sizing:border-box}
.actrow{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:8px}
.actrow b{white-space:normal;overflow-wrap:anywhere;line-height:1.25}
.actrow .star{flex:none;justify-self:end}
.actmeta{min-width:0}.actmeta>*{min-width:0}
.kanban.aslist{display:grid;grid-template-columns:1fr;overflow:visible}
.kanban.aslist .domcol{width:auto}
.tabbar,.mavatar{display:none}
@media(max-width:760px){
 .mobilebar{gap:10px}.mobilebar .savewarn{margin:0}
 .mview{margin-left:auto}
 .mavatar{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#f4511e;color:#fff;font-weight:800;font-size:13px;border:2px solid transparent}.mavatar.active{border-color:#fff}
 .sidebar,.shell.mini .sidebar,.navback{display:none!important}
 .shell,.shell.mini{padding-bottom:calc(68px + env(safe-area-inset-bottom))}
 .tabbar{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;z-index:50;background:var(--white);border-top:1px solid var(--border);padding:6px 4px calc(6px + env(safe-area-inset-bottom))}
 .tabbar button{display:grid;justify-items:center;gap:2px;background:none;border:0;color:var(--muted);font:inherit;font-size:10.5px;font-weight:700;padding:4px 0;cursor:pointer}
 .tabbar .ico{font-size:19px;line-height:1}
 .tabbar button.active{color:var(--green)}
 .tabbar button.mid .ico{width:44px;height:44px;margin-top:-20px;border-radius:50%;background:var(--green);color:#fff;display:grid;place-items:center;box-shadow:0 4px 12px #0003}
 .daytab{font-size:12px}
}
html[data-mode=dark] .tabbar{background:#161616;border-color:#2c2c2c}
@media(max-width:760px){.stats{display:none}}
/* Today: Your day and Log are one height (the Log sets it), both fit the screen and scroll inside. */
@media(min-width:761px){
 .todaygrid{align-items:stretch}
 .todaygrid>section{display:flex;flex-direction:column;min-height:0;max-height:calc(100vh - 120px)}
 .todaygrid .schedlist{flex:1 1 0;height:0;min-height:360px;overflow-y:auto;align-content:start;padding-right:4px}
 .todaygrid .loglist{flex:1 1 auto;min-height:0;overflow-y:auto;padding-right:4px}
}
/* Line icons in the nav and tab bar. */
.ico svg{width:20px;height:20px;display:block}
.tabbar .ico svg{width:22px;height:22px}.tabbar button.mid .ico svg{width:22px;height:22px}
/* Planning deck type chips. */
.deckchips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}.deckchips .pill{padding:6px 10px;font-size:12px}
/* Clear this week dialog. */
.clrrow{display:flex;align-items:center;gap:12px;padding:10px 2px;border-bottom:1px solid var(--border);cursor:pointer}
.clrrow input{width:18px;height:18px;accent-color:var(--green);flex:none}
.clrrow span{flex:1;min-width:0}.clrrow b{display:block;font-size:14px}.clrrow small{display:block;color:var(--muted);font-size:12px;margin-top:2px}
.clrrow i{font-style:normal;font-weight:800;font-variant-numeric:tabular-nums;min-width:24px;text-align:right}
.clrrow.routine{border-bottom:0;margin-top:6px;background:color-mix(in srgb,var(--green) 8%,transparent);border-radius:10px;padding:10px}
/* Goal cards: everything stays inside the card. */
.goalcard,.goalcard>*{min-width:0}.goalcard{overflow:hidden;align-content:start}
.goalcard h4{overflow-wrap:anywhere}
.gclist li{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px}
.gclist .typechip{white-space:nowrap}
.gclist .gcname{white-space:normal;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.3}
.gclist{gap:8px}.gclist li{grid-template-columns:auto minmax(0,1fr);row-gap:3px;padding:7px 9px;border:1px solid var(--border);border-radius:10px}
.gclist .gcname{grid-column:1/-1;grid-row:1;font-weight:600;font-size:13px}
.gclist .typechip{grid-row:2;grid-column:1;font-size:11px}.gclist li>small{grid-row:2;grid-column:2;justify-self:end}
html[data-mode=dark] .gclist li{border-color:#2c2c2c}
/* Sidebar toggle like ChatGPT: panel icon when open; brand mark when closed that turns into the panel icon on hover. */
.navtoggle{display:grid;place-items:center;width:34px;height:34px;padding:0;font-size:0}
.navtoggle svg{width:20px;height:20px;display:block}
.navtoggle .tg-mark{display:none}
.shell.mini .navtoggle{right:auto;left:50%;transform:translateX(-50%);top:14px;width:40px;height:40px}
.shell.mini .navtoggle .tg-mark{display:block}.shell.mini .navtoggle .tg-mark svg{width:24px;height:24px}
.shell.mini .navtoggle .tg-panel{display:none}
.shell.mini .navtoggle:hover .tg-mark,.shell.mini .navtoggle:focus-visible .tg-mark{display:none}
.shell.mini .navtoggle:hover .tg-panel,.shell.mini .navtoggle:focus-visible .tg-panel{display:block}
/* Calendar slots use the hand pointer, like Google Calendar. */
.daycol{cursor:pointer}
/* Planning and Calendar fit the window; the deck and the calendar scroll inside. */
.fitbox{overflow:hidden}
.planner.fitbox{align-items:stretch}
.planner.fitbox>section,.panel.fitbox{display:flex;flex-direction:column;min-height:0;overflow:hidden}
.fitbox #gridmount{flex:1 1 0;min-height:0;display:flex;flex-direction:column}
.fitbox .scrollcal{max-height:none!important;flex:1 1 0;min-height:0;height:auto}
.planner.fitbox>section:first-child>.section-pad{flex:1 1 0;min-height:0;display:flex;flex-direction:column}
.planner.fitbox .list-scroll{flex:1 1 0;min-height:0;max-height:none;overflow-y:auto}
@media(max-width:760px){.fitbox,.planner.fitbox>section,.panel.fitbox{height:auto!important;overflow:visible}}
/* Workspace: Show sits on the same line as Cards, View and Group by when it fits. */
.wsbar{gap:10px 16px}.wsbar .filterrow{flex-wrap:wrap}.wsbar .filterrow>span{width:auto;margin-right:2px}
/* The sidebar stays put; only the page content scrolls. */
@media(min-width:761px){.sidebar{align-self:start;position:sticky;top:0;height:100vh;overflow-y:auto}}
/* Column header: name and + Goal stay on one line; long names shrink with an ellipsis. */
.domcol header>b{flex:1 1 0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.domcol header .btn,.domcol header button{flex:none;white-space:nowrap}
/* Card deck: source pills and one Filter on a single line. */
.deckbar{display:flex;flex-wrap:nowrap;gap:6px;margin-bottom:12px;align-items:center}.deckbar .pill{padding:6px 10px;font-size:12px;white-space:nowrap}
.selectpill{appearance:none;-webkit-appearance:none;font:inherit;font-weight:700;color:inherit;cursor:pointer;padding-right:24px!important;background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:calc(100% - 12px) 52%,calc(100% - 8px) 52%;background-size:4px 4px;background-repeat:no-repeat;min-width:0}
/* Edit time popup. */
.timepair{display:grid;grid-template-columns:1fr 1fr;gap:10px}
/* The card panel above the calendar keeps one height, so selecting a card never shifts the grid. */
.evbar{height:104px;flex:none;overflow:hidden;display:flex;flex-direction:column;justify-content:center}
.evbar>.section-pad{padding-top:0;padding-bottom:0}.evbar .actionbox{margin:0;padding:10px 12px}.evbar .actionbox .row{margin-top:6px!important}
.deckbar .selectpill{flex:0 1 auto;min-width:96px;max-width:140px;height:auto;line-height:1.3;text-overflow:ellipsis}.deckbar .pill.on.selectpill option{color:#202124;background:#fff}
.deckhead2{display:flex;align-items:center;justify-content:space-between;gap:8px}.deckhead2 .pill{font-size:12px;padding:5px 10px}
/* Card deck filter: an icon that opens a small menu. */
.filterwrap{position:relative;display:inline-flex}
.filterbtn{display:inline-flex;align-items:center;gap:5px}.filterbtn svg{width:15px;height:15px;display:block}
.filtermenu{position:absolute;top:calc(100% + 6px);left:0;z-index:30;min-width:170px;background:var(--white);border:1px solid var(--border);border-radius:12px;box-shadow:0 10px 28px #0003;padding:5px;display:grid}
.filtermenu button{display:flex;justify-content:space-between;gap:12px;background:none;border:0;border-radius:8px;padding:8px 10px;font:inherit;font-size:13px;font-weight:600;color:inherit;cursor:pointer;text-align:left}
.filtermenu button:hover{background:var(--surface)}.filtermenu button.on{color:var(--green)}.filtermenu i{font-style:normal;color:var(--muted)}
html[data-mode=dark] .filtermenu{background:#1e1e1e;border-color:#333333}html[data-mode=dark] .filtermenu button:hover{background:#292929}
/* Workspace list view: one compact row per card. */
.kanban.aslist{gap:12px}.kanban.aslist .domcol{padding:10px 12px}
.kanban.aslist .goalsec{padding:6px 8px;margin-bottom:6px}
.kanban.aslist .domcards,.kanban.aslist .goalsec{display:grid;gap:4px}
.kanban.aslist .actcard{display:grid;grid-template-columns:minmax(180px,2fr) minmax(0,3fr) auto auto;align-items:center;gap:12px;padding:6px 10px;border-radius:10px;min-height:0}
.kanban.aslist .actcard .actrow{display:contents}
.kanban.aslist .actcard .actrow b{grid-column:1;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kanban.aslist .actcard .actmeta{grid-column:2;margin:0;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kanban.aslist .actcard .taskslink{grid-column:2;grid-row:2;justify-self:start;margin:0}
.kanban.aslist .actcard .star{grid-column:3;grid-row:1}
.kanban.aslist .actcard .actbtns{grid-column:4;grid-row:1;margin:0;opacity:.35;transition:opacity .1s}.kanban.aslist .actcard:hover .actbtns{opacity:1}
/* Task count on a Workspace card. */
.taskslink{display:inline-flex;align-items:center;gap:4px;margin:6px 0 2px;padding:3px 8px;border-radius:999px;border:1px solid var(--border);background:transparent;color:var(--muted);font:inherit;font-size:12px;font-weight:600;cursor:pointer}.taskslink:hover{color:var(--green);border-color:var(--green)}
/* Card editor: More options. */
.moreopts{margin-top:10px;border-top:1px solid var(--border);padding-top:8px}.moreopts summary{cursor:pointer;font-weight:700;font-size:13px;color:var(--muted);padding:4px 0}.moreopts[open] summary{margin-bottom:8px}
/* Tasks view. */
.tasksgrid{display:grid;grid-template-columns:230px minmax(0,1fr) minmax(280px,360px);gap:14px;align-items:start}
.tnavs{padding:10px;display:grid;gap:2px;position:sticky;top:14px;max-height:calc(100vh - 40px);overflow-y:auto}
.tnav{display:flex;align-items:center;gap:8px;width:100%;background:none;border:0;border-radius:9px;padding:7px 9px;font:inherit;font-size:13px;color:inherit;cursor:pointer;text-align:left}
.tnav span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tnav b{font-size:11.5px;color:var(--muted);font-weight:700}
.tnav i{width:8px;height:8px;border-radius:50%;flex:none}.tnav:hover{background:var(--surface)}.tnav.on{background:var(--surface);color:var(--green);font-weight:700}
.tnavh{font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:12px 9px 4px}
.tlist{padding:14px 16px;min-height:300px}.tlisthead{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.tlisthead h3{margin:0}
.taddrow{display:flex;gap:8px;align-items:center}.taddrow input{flex:1;min-width:0;border:1px solid var(--border);border-radius:10px;padding:9px 12px;font:inherit;font-size:14px;background:transparent;color:inherit}
.taddrow.main{margin-bottom:10px}
.ttree{display:grid}
.trow{display:flex;align-items:center;gap:6px;padding:5px 6px 5px calc(6px + var(--d)*22px);border-radius:8px;min-height:34px;border-bottom:1px solid color-mix(in srgb,var(--border) 60%,transparent)}
.trow:hover{background:var(--surface)}.trow.sel{background:color-mix(in srgb,var(--green) 12%,transparent)}
.tcaret{width:18px;height:18px;flex:none;border:0;background:none;color:var(--muted);cursor:pointer;font-size:12px;padding:0}.tcaret.none{cursor:default}
.tcheck{width:17px;height:17px;flex:none;border:1.6px solid var(--muted);border-radius:4px;background:transparent;color:#fff;font-size:11px;line-height:1;cursor:pointer;display:grid;place-items:center;padding:0}
.tcheck.on{background:var(--green);border-color:var(--green)}
.ttitle{flex:1;min-width:0;text-align:left;border:0;background:none;color:inherit;font:inherit;font-size:14px;cursor:pointer;padding:2px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.trow.done .ttitle,.tsub.done .ttitle{color:var(--muted);text-decoration:line-through}
.tprog{font-size:11.5px;color:var(--muted);flex:none}
.tchip{flex:none;max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:700;padding:2px 7px;border-radius:999px;color:var(--acc,var(--green));background:color-mix(in srgb,var(--acc,var(--green)) 14%,transparent)}
.tdue{flex:none;font-size:11.5px;color:var(--muted)}.tdue.today{color:var(--green);font-weight:700}.tdue.late{color:#d93a32;font-weight:700}
.tadd{flex:none;border:0;background:none;color:var(--muted);cursor:pointer;opacity:0;font-size:15px;padding:0 4px}.trow:hover .tadd{opacity:1}
.tside{padding:16px;position:sticky;top:14px}
.tempty{color:var(--muted);font-size:13px;padding:18px 6px}
.ttitlein{width:100%;border:0;border-bottom:1px solid var(--border);background:transparent;color:inherit;font:inherit;font-size:18px;font-weight:800;padding:4px 0 8px;margin-bottom:12px}
.ttitlein:focus{outline:none;border-color:var(--green)}
.tdetail textarea{width:100%;resize:vertical;font:inherit}
.tsubs{margin-top:12px;display:grid;gap:4px}.tsub{display:flex;align-items:center;gap:8px;padding:3px 0}.tsubs .taddrow{margin-top:4px}
html[data-mode=dark] .trow:hover,html[data-mode=dark] .tnav:hover,html[data-mode=dark] .tnav.on{background:#222222}
@media(max-width:1100px){.tasksgrid{grid-template-columns:200px minmax(0,1fr)}.tside{grid-column:1/-1;position:static}}
@media(max-width:760px){.tasksgrid{grid-template-columns:1fr}.tnavs{position:static;max-height:none;display:flex;overflow-x:auto;gap:4px}.tnavh{display:none}.tnav{width:auto;flex:none}.tnav span{white-space:nowrap}.tabbar{grid-template-columns:repeat(6,1fr)}}
.filtermenu{left:auto;right:0}
/* Calendar and Planning: the card panel is one slim line; stat tiles are compact. */
.evbar{height:46px}
.evbar>.section-pad{padding:0 14px}
.evbar .actionbox{display:flex;align-items:center;gap:10px;flex-wrap:nowrap;padding:6px 10px;min-width:0}
.evbar .actionbox>.strong{flex:none;max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.evbar .actionbox>.small{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.evbar .actionbox>.small[style]{display:none}
.evbar .actionbox .row{margin:0!important;flex:none;flex-wrap:nowrap;gap:6px}
.evbar .mess{min-height:0;padding:0 16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stats{gap:10px;margin-bottom:12px}.stat{padding:10px 14px;border-radius:13px;display:flex;align-items:baseline;gap:10px}.stat b{font-size:20px;display:inline}.stat span{font-size:12.5px}
/* Analytics pivot. */
.pvbar-top{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:10px}.pvbar-top h3{margin:0}
.pvdims{display:flex;align-items:center;gap:6px;flex-wrap:wrap;flex:1}
.pvdim{display:inline-flex;align-items:center;gap:6px;padding:5px 8px 5px 10px;border-radius:999px;border:1px solid var(--border);background:var(--surface);font-size:12.5px;font-weight:700;cursor:grab;user-select:none}
.pvdim i{font-style:normal;color:var(--muted);margin-right:2px}
.pvx{border:0;background:none;color:var(--muted);cursor:pointer;font-size:14px;line-height:1;padding:0 2px}.pvx:hover{color:#d93a32}
.pvadd{font-size:12px;padding:5px 10px;opacity:.75}
.pvacts{display:flex;gap:12px}
.pvwrap{overflow-x:auto}
.pvtable td,.pvtable th{white-space:nowrap}.pvtable td:first-child{white-space:normal;min-width:240px}
.pvtog{width:18px;border:0;background:none;color:var(--muted);cursor:pointer;padding:0;margin-right:4px;font-size:12px}.pvsp{display:inline-block;width:22px}
.pvrow.d0 td{font-weight:800}.pvrow.d1 td:first-child{font-weight:700}.pvrow.d0{background:color-mix(in srgb,var(--surface) 70%,transparent)}
.pvtable tfoot td{font-weight:800;border-top:2px solid var(--border)}
.pvbar{display:inline-block;width:70px;height:6px;border-radius:9px;background:var(--border);overflow:hidden;vertical-align:middle;margin-right:8px}.pvbar i{display:block;height:100%;background:var(--green)}
html[data-mode=dark] .pvdim{background:#222222;border-color:#333333}html[data-mode=dark] .pvrow.d0{background:#1d1d1d}
/* Tasks: tag bar and simple detail. */
.tasksgrid{grid-template-columns:190px minmax(0,1fr) minmax(280px,340px)}
.tagbar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:10px;color:var(--muted)}.tagbar svg{width:16px;height:16px;flex:none}
.tagbar select,.ttags select{font:inherit;font-size:12.5px;font-weight:600;padding:5px 26px 5px 10px;border-radius:999px;border:1px solid var(--border);background:transparent;color:var(--ink);max-width:190px;min-width:0}
html[data-mode=dark] .tagbar select,html[data-mode=dark] .ttags select{color:#eaeaea;background:#1a1a1a}
.taddrow span{color:var(--green);font-weight:800;font-size:16px;padding-left:4px}
.taddrow.main{border:1px solid var(--border);border-radius:10px;padding:0 6px}.taddrow.main input,.taddrow.sub input{border:0;padding:9px 6px}
.taddrow.main input:focus,.taddrow.sub input:focus{outline:none}
.tcrumb{border:0;background:none;color:var(--muted);font:inherit;font-size:12.5px;cursor:pointer;padding:0 0 6px}
.ttags{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.ttags.readonly span{font-size:12px;font-weight:700;padding:4px 9px;border-radius:999px;background:var(--surface)}.ttags.readonly small{align-self:center;color:var(--muted);font-size:11.5px}
.tline{display:flex;align-items:center;gap:10px;margin-bottom:10px}.tline label{font-size:12px;font-weight:700;color:var(--muted);width:34px}.tline input{font:inherit;font-size:13px;padding:5px 8px;border-radius:8px;border:1px solid var(--border);background:transparent;color:inherit}
.tdetail textarea{border:1px solid var(--border);border-radius:10px;padding:8px 10px;background:transparent;color:inherit;font-size:13px}
.tsubs{margin-top:8px}.taddrow.sub{border-top:1px solid var(--border);margin-top:4px}
.tfoot{margin-top:12px;display:flex;justify-content:flex-end}.linkbtn.danger{color:#d93a32}
/* The card panel lives in the toolbar row, between the week arrows and the view buttons. */
.datebar .evbar{flex:1 1 0;min-width:0;height:38px;display:flex;align-items:center}
.datebar .evbar>*{width:100%;min-width:0}
.datebar .evbar>.section-pad{padding:0}
.datebar .evbar .mess{padding:0 6px;text-align:center}
@media(max-width:760px){.datebar .evbar{flex-basis:100%;order:3;height:auto;min-height:38px}}
.datebar .evbar{min-width:min(380px,100%)}
/* Pages that fit the window: only the inner panels scroll. */
@media(min-width:761px){
 .todaygrid.fitpage{align-items:stretch;overflow:hidden}
 .todaygrid.fitpage>section{max-height:none;height:100%;min-height:0;overflow:hidden}
 .todaygrid.fitpage .schedlist{min-height:0}
 .pivot.fitpage{display:flex;flex-direction:column;min-height:0;overflow:hidden;margin-top:0}
 .pivot.fitpage .pvwrap{flex:1 1 0;min-height:0;overflow:auto}
 .pivot.fitpage .pvtable thead th{position:sticky;top:0;z-index:2;background:var(--white)}
 .pivot.fitpage .pvtable tfoot td{position:sticky;bottom:0;z-index:2;background:var(--white)}
 .kanban.fitpage{overflow:auto;align-content:start;padding-right:4px}
 .kanban.fitpage .domcol>header{position:sticky;top:0;z-index:3;background:inherit;margin:-8px -8px 6px;padding:8px 8px 6px;border-radius:14px 14px 0 0}
 html[data-mode=dark] .pivot.fitpage .pvtable thead th,html[data-mode=dark] .pivot.fitpage .pvtable tfoot td{background:#191919}
}
/* Workspace board cards: name, then one line of type and time; actions appear on hover. */
.kanban:not(.aslist) .actcard{gap:4px;padding:8px 10px}
.kanban:not(.aslist) .actmeta{flex-wrap:nowrap;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
.kanban:not(.aslist) .actmeta .typechip{margin-right:4px}
.kanban:not(.aslist) .actcard .actbtns{position:absolute;right:6px;bottom:6px;opacity:0;background:var(--white);border-radius:8px;padding:1px 2px;box-shadow:0 2px 8px #0002}
.kanban:not(.aslist) .actcard:hover .actbtns,.kanban:not(.aslist) .actcard:focus-within .actbtns{opacity:1}
.kanban:not(.aslist) .taskslink{margin:2px 0 0}
html[data-mode=dark] .kanban:not(.aslist) .actcard .actbtns{background:#222222}
.todaygrid .loglist{align-content:start}
.weekpie{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin:6px 0 10px}
.weekpie circle{transition:stroke-dasharray .2s}.wp-big{font-size:22px;font-weight:800;fill:var(--ink)}.wp-small{font-size:9.5px;fill:var(--muted)}
html[data-mode=dark] .wp-big{fill:#eaeaea}
.wplegend{list-style:none;margin:0;padding:0;display:grid;gap:6px;flex:1;min-width:180px}.wplegend li{display:flex;align-items:center;gap:8px;font-size:13px}.wplegend i{width:10px;height:10px;border-radius:3px;flex:none}.wplegend span{flex:1}
.field small.muted{font-size:11.5px;margin-top:3px;display:block}
/* Tasks: lists and drag to reorder or nest. */
.tnavh{display:flex;align-items:center;justify-content:space-between}.tnavh .ib{width:22px;height:22px;font-size:14px}
.tlicon{color:var(--acc);font-weight:800;width:14px;text-align:center;flex:none}
.tnavtip{padding:4px 9px}.taddrow.listadd input{font-size:13px;padding:7px 9px}
.tnav.tdrop-list{outline:2px dashed var(--green);outline-offset:-2px}
.listhead{display:grid;gap:6px;flex:1}.listname{border:0;background:transparent;color:inherit;font:inherit;font-size:20px;font-weight:800;padding:2px 0}.listname:focus{outline:none;border-bottom:1px solid var(--green)}
.tlisthead{align-items:flex-start}
.tlistname{flex:none;font-size:11px;color:var(--muted)}
.trow{position:relative;cursor:default}.tgrip{width:10px;flex:none;color:var(--muted);opacity:0;cursor:grab;font-size:11px;letter-spacing:-2px;user-select:none}.trow:hover .tgrip{opacity:.7}
.trow.tdragging{opacity:.4}
.trow.tdrop-before{box-shadow:inset 0 2px 0 var(--green)}
.trow.tdrop-after{box-shadow:inset 0 -2px 0 var(--green)}
.trow.tdrop-inside{box-shadow:inset 0 -2px 0 var(--green);background:linear-gradient(90deg,transparent calc(52px + var(--d)*22px),color-mix(in srgb,var(--green) 10%,transparent) 0)}
.trow.tdrop-out{box-shadow:inset 0 -2px 0 #e8a000}
.tnav .tlicon{flex:none}
.ttree{position:relative}
.tdropline{position:absolute;right:6px;height:2px;background:var(--green);border-radius:2px;pointer-events:none;z-index:5}
.tdropline::before{content:'';position:absolute;left:-5px;top:-3px;width:8px;height:8px;border-radius:50%;border:2px solid var(--green);background:var(--white);box-sizing:border-box}
html[data-mode=dark] .tdropline::before{background:#1a1a1a}
.stat b small{font-size:13px;font-weight:600;color:var(--muted);margin-left:3px}.stat.over b{color:#d93a32}
.driveline{font-size:13px;padding:9px 12px;border-radius:10px;margin:8px 0 10px;display:flex;flex-wrap:wrap;gap:6px;align-items:center}.driveline.ok{background:color-mix(in srgb,var(--green) 12%,transparent)}.driveline.warn{background:#fff4d6;color:#5b4a1c}html[data-mode=dark] .driveline.warn{background:#2e2611;color:#e6cf8f}
/* Landing page (signed out). */
.landing{min-height:100vh;max-width:1080px;margin:0 auto;padding:22px 24px 40px;display:flex;flex-direction:column;gap:56px}
.lp-top{display:flex;align-items:center;justify-content:space-between}.lp-brand{font-size:26px;margin:0}
.lp-hero{text-align:center;max-width:760px;margin:40px auto 0;display:grid;justify-items:center;gap:16px}
.lp-eyebrow{margin:0;font-size:12px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--green)}
.lp-hero h1{margin:0;font-size:clamp(44px,8vw,84px);letter-spacing:-.045em;line-height:.98}
.lp-sub{margin:0;font-size:18px;line-height:1.5;color:var(--muted);max-width:600px}
.lp-cta{font-size:17px;padding:14px 26px;border-radius:999px;margin-top:8px;display:inline-flex;align-items:center;gap:10px}
.lp-cta .g{background:#fff;color:#4285f4;border-radius:50%;width:24px;height:24px;display:grid;place-items:center;font-weight:900}
.lp-note{margin:0}.lp-setup{width:min(420px,100%);display:grid;gap:8px;text-align:left}
.lp-loop{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.lp-loop article{border:1px solid var(--border);border-radius:16px;padding:18px;background:var(--white)}
.lp-loop h3{margin:8px 0 6px;font-size:16px}.lp-loop p{margin:0;font-size:13.5px;line-height:1.5;color:var(--muted)}
.lp-n{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--green);color:#fff;font-weight:800;font-size:13px}
.lp-line p{text-align:center;font-size:clamp(20px,3vw,28px);font-weight:800;letter-spacing:-.02em;max-width:760px;margin:0 auto;line-height:1.3}
.lp-foot{margin-top:auto;display:flex;flex-wrap:wrap;gap:18px;justify-content:center;font-size:13px;color:var(--muted);border-top:1px solid var(--border);padding-top:18px}.lp-foot a{color:inherit}
html[data-mode=dark] .lp-loop article{background:#1a1a1a;border-color:#2c2c2c}
@media(max-width:760px){.lp-loop{grid-template-columns:1fr 1fr}.landing{gap:36px}.lp-hero{margin-top:16px}}
@media(max-width:460px){.lp-loop{grid-template-columns:1fr}}
.consent{min-height:100vh;display:grid;place-items:center;padding:24px}
.cs-box{width:min(560px,100%);background:var(--white);border:1px solid var(--border);border-radius:20px;padding:28px;display:grid;gap:12px}
.cs-box h2{margin:6px 0 0;font-size:26px;letter-spacing:-.02em}.cs-box .muted{margin:0}
.cs-sum{margin:4px 0;padding-left:18px;display:grid;gap:6px;font-size:14px;line-height:1.5}
.cs-form{display:grid;gap:10px;margin-top:6px}.cs-row{display:flex;gap:10px;align-items:flex-start;font-size:14px;line-height:1.45;cursor:pointer}.cs-row input{margin-top:3px;width:17px;height:17px;accent-color:var(--green);flex:none}
.cs-form button[disabled]{opacity:.45;cursor:not-allowed}.cs-out{justify-self:center;font-size:12.5px}
html[data-mode=dark] .cs-box{background:#1a1a1a;border-color:#2c2c2c}
.claudekey{display:grid;gap:6px;margin:8px 0}.keybox{display:block;font:12px/1.45 ui-monospace,Menlo,monospace;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:8px 10px;white-space:pre-wrap;word-break:break-all;user-select:all}html[data-mode=dark] .keybox{background:#121212;border-color:#2c2c2c}.claudekey p{margin:4px 0 0}
.keyline{display:flex;gap:8px;align-items:flex-start}.keyline .keybox{flex:1;min-width:0}.keyline .btn{flex:none}
/* Workspace card: star and one More button; everything else lives in a sheet. */
.actrow{grid-template-columns:minmax(0,1fr) auto auto!important}
.actcard .star{width:36px;height:36px;margin:-8px -6px -8px 0;font-size:18px;display:grid;place-items:center}
.actmore{width:36px;height:36px;margin:-8px -8px -8px 0;border:0;background:none;color:var(--muted);font-size:20px;line-height:1;cursor:pointer;border-radius:10px}
.actmore:hover{background:var(--surface);color:var(--ink)}
.actcard .actbtns{display:none!important}
.kanban.aslist .actcard .actmore{grid-column:4;grid-row:1}
.sheetback{position:fixed;inset:0;background:#0008;z-index:90;display:flex;align-items:flex-end;justify-content:center}
.sheet{width:min(440px,100%);background:var(--white);border-radius:20px 20px 0 0;padding:8px 12px calc(12px + env(safe-area-inset-bottom));display:grid;gap:2px;animation:sheetup .16s ease-out}
@media(min-width:761px){.sheetback{align-items:center}.sheet{border-radius:18px;padding-bottom:12px}}
@keyframes sheetup{from{transform:translateY(30px);opacity:.6}}
.sheet-grab{width:40px;height:4px;border-radius:4px;background:var(--border);margin:4px auto 8px}
.sheet-title{font-weight:800;font-size:16px;padding:4px 8px 10px}
.sheet-row{display:flex;align-items:center;gap:14px;width:100%;min-height:52px;border:0;background:none;color:inherit;font:inherit;font-size:15px;text-align:left;padding:0 8px;border-radius:12px;cursor:pointer}
.sheet-row:hover{background:var(--surface)}.sheet-row.danger{color:#d93a32;margin-top:6px;border-top:1px solid var(--border);border-radius:0 0 12px 12px}
.sheet-row.cancel{justify-content:center;font-weight:700;background:var(--surface);margin-top:8px}
.sr-ico{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;background:var(--surface);font-size:14px}
html[data-mode=dark] .sheet{background:#1a1a1a}html[data-mode=dark] .sr-ico,html[data-mode=dark] .sheet-row.cancel{background:#282828}
/* Profile: account card, then rows that open their own page (like Emote's You). */
.phead h2,.psub-head h2{margin:0;font-weight:800;letter-spacing:-.02em;font-size:34px}
.phead{margin:6px 0 18px}.pwrap,.psub{max-width:640px;display:grid;gap:14px}
.pcard{display:flex;gap:16px;align-items:center;padding:4px 0 8px}
.pavatar{width:64px;height:64px;border-radius:50%;background:#f4511e;color:#fff;display:grid;place-items:center;font-weight:800;font-size:22px;flex:none}
.pc-txt{display:grid;gap:3px;min-width:0}.pc-txt b{font-size:19px}.pc-txt small{color:var(--muted);overflow:hidden;text-overflow:ellipsis}
.pbadge{justify-self:start;border:1px solid var(--border);border-radius:999px;padding:2px 10px;font-size:12px;font-weight:700;margin-top:4px}
.pstats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.pstats div{border:1px solid var(--border);border-radius:14px;padding:10px 12px;display:grid}.pstats b{font-size:20px}.pstats small{color:var(--muted);font-size:12px}
.plist{display:grid;border-top:1px solid var(--border)}
.prow{display:flex;align-items:center;gap:14px;min-height:62px;border:0;border-bottom:1px solid var(--border);background:none;color:inherit;font:inherit;text-align:left;padding:6px 2px;cursor:pointer;text-decoration:none;width:100%}
.prow:hover{background:color-mix(in srgb,var(--surface) 60%,transparent)}
.pr-ico{width:40px;height:40px;border-radius:11px;background:var(--c);color:#fff;display:grid;place-items:center;font-size:18px;flex:none}
.pr-txt{flex:1;display:grid;gap:2px;min-width:0}.pr-txt b{font-size:15.5px}.pr-txt small{color:var(--muted);font-size:12.5px}
.pr-chev{color:var(--muted);font-size:22px;padding-right:4px}
.plogout{margin-top:4px}
.psub-head{display:flex;align-items:center;gap:10px;margin:6px 0 16px}.psub-head .ib{font-size:26px;width:38px;height:38px}.psub-head h2{font-size:28px}
.psub .panel h3{margin-top:0}
/* Floating + for week actions (phone). */
.fab{display:none}
@media(max-width:760px){
 .fab{display:grid;place-items:center;position:fixed;right:18px;bottom:calc(86px + env(safe-area-inset-bottom));width:56px;height:56px;border-radius:18px;border:0;background:var(--green);color:#fff;font-size:28px;box-shadow:0 8px 22px #0005;z-index:55;cursor:pointer}
 /* Calendar and Planning: just the calendar. */
 .v-calendar .topbar,.v-planning .topbar{display:none}
 .v-calendar .stats,.v-planning .stats,.v-calendar .footerhelp,.v-planning .footerhelp{display:none}
 .datebar .evbar{display:none}
 .datebar .zoom,.datebar #toggleanchors,.datebar [data-calview="month"]{display:none}
 .datebar{gap:6px;margin-bottom:8px}.datebar .row{gap:6px;flex-wrap:nowrap}
 .datebar b{font-size:14px;white-space:nowrap}
 .fitbox,.panel.fitbox{height:auto!important}
 .fitbox #gridmount{display:block;flex:none}
 .fitbox .scrollcal,.content .scrollcal{height:calc(100vh - 290px);height:calc(100dvh - 290px);max-height:none!important;min-height:360px}
 .v-calendar .panel,.v-planning .planner>section:last-child{padding:0;border:0;background:none}
 .v-calendar .section-pad,.v-planning .section-pad{padding:8px 0}
}
.todayseg{display:inline-flex;gap:4px;padding:4px;border:1px solid var(--border);border-radius:999px;margin:0 0 14px}.todayseg .pill{border:0;padding:7px 14px}
.anweek{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}.anweek b{font-size:16px}
.tabbar{grid-template-columns:repeat(5,1fr)!important}
@media(max-width:760px){
 .v-lock .topbar,.v-analytics .topbar{display:none}
 .todayseg{display:flex;width:100%}.todayseg .pill{flex:1}
 .v-analytics .stats{display:grid;grid-template-columns:1fr 1fr;gap:8px}.v-analytics .stat{padding:10px;flex-direction:column;gap:2px;align-items:flex-start}
 .pivot{padding:12px!important}.pivot .pvbar-top{gap:8px}.pivot .pvdims>span{display:none}
 .pvtable th:nth-child(2),.pvtable td:nth-child(2),.pvtable th:nth-child(4),.pvtable td:nth-child(4){display:none}
 .pvtable td:first-child{min-width:0;white-space:normal}.pvtable td,.pvtable th{padding:9px 6px;font-size:13px}.pvbar{width:34px}
 .pivot.fitpage{height:auto!important}.pivot.fitpage .pvwrap{overflow:visible}
}
.tback{display:none}
@media(max-width:760px){
 .v-tasks .topbar{display:none}
 .tasksgrid{display:block}
 .tnavs{display:flex!important;flex-wrap:nowrap;overflow-x:auto;gap:6px;padding:0 0 10px!important;border:0!important;background:none!important;position:static!important;max-height:none!important;scrollbar-width:none}
 .tnavs::-webkit-scrollbar{display:none}
 .tnavs .tnav{flex:none;width:auto;border:1px solid var(--border);border-radius:999px;padding:7px 12px;white-space:nowrap}
 .tnavs .tnav span{overflow:visible}.tnavs .tnavh{display:flex;flex:none;margin:0;padding:0 2px}.tnavs .tnavh span{display:none}.tnavs .tnavtip,.tnavs .listadd{display:none}
 .tlist{border:0!important;background:none!important;padding:0!important;min-height:0}
 .tagbar{flex-wrap:nowrap;overflow-x:auto}.tagbar select{flex:none;max-width:none;min-width:120px}
 .trow{min-height:46px;padding-left:calc(2px + var(--d)*20px)}.ttitle{font-size:15.5px}.tadd{opacity:.6}.tgrip{display:none}
 .tside{display:none}
 .tside.open{display:block;position:fixed;inset:0;z-index:70;border-radius:0;overflow-y:auto;padding:16px 16px calc(90px + env(safe-area-inset-bottom))}
 .tside.open .tback{display:block;border:0;background:none;color:var(--green);font:inherit;font-size:16px;font-weight:700;padding:6px 0 12px;cursor:pointer}
 .ttags{flex-direction:column}.ttags select{max-width:none;width:100%}
}
/* Workspace on the phone: compact top, chips scroll sideways, New card floats. */
@media(max-width:760px){
 .v-workspace .topbar p,.v-workspace .topbar .eyebrow{display:none}
 .v-workspace .topbar{flex-direction:row;align-items:center;justify-content:space-between;margin-bottom:10px}
 .v-workspace .topbar h2{font-size:30px}
 .weekload{padding:10px 12px!important;margin-bottom:10px}.weekload .small{display:none}.weekload strong{font-size:20px}
 .wsbar{flex-wrap:nowrap;overflow-x:auto;gap:8px;scrollbar-width:none;padding-bottom:4px}.wsbar::-webkit-scrollbar{display:none}
 .wsbar .seg,.wsbar .filterrow{flex:none;flex-wrap:nowrap}.wsbar .pill{white-space:nowrap}
 .kanban{grid-auto-columns:86vw!important}
 .actcard .star,.actmore{width:44px;height:44px}
}
/* Phone top bar like Emote: logo left, profile right. */
@media(max-width:760px){
 .mobilebar{position:sticky;top:0;z-index:40;padding:10px 16px;background:var(--bg);border-bottom:1px solid var(--border)}
 .mobilebar .mview{display:none}
 .mobilebar .mavatar{margin-left:auto}
 .content{padding-top:12px}
}
.actcard{position:relative}.kanban:not(.aslist) .actcard .actmore{position:absolute;right:4px;bottom:2px;margin:0}
.kanban:not(.aslist) .actcard .actmeta{padding-right:34px}
/* Phone top bar and side menu. */
.drback,.mb-ico,.mb-title{display:none}
@media(max-width:760px){
 .mobilebar{display:flex!important;align-items:center;gap:4px;padding:8px 10px!important}
 .mobilebar .mbrand,.mobilebar .mavatar,.mobilebar .mview{display:none!important}
 .mb-ico{display:grid;place-items:center;width:42px;height:42px;border:0;background:none;color:var(--ink);border-radius:12px;cursor:pointer;position:relative}
 .mb-ico svg{width:24px;height:24px}.mb-ico:active{background:var(--surface)}
 .mb-title{display:block;flex:1;font-size:22px;font-weight:800;letter-spacing:-.01em;padding-left:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 .mb-caret{font-size:13px;color:var(--muted)}
 .mb-date b{position:absolute;top:15px;left:0;right:0;font-size:10.5px;font-weight:800;text-align:center}
 .mb-me.active{color:var(--green)}
 html[data-mode=dark] .mb-ico{color:#eaeaea}
 .drback{display:block;position:fixed;inset:0;background:#000a;z-index:95}
 .drawer{position:absolute;top:0;bottom:0;left:0;width:min(300px,82vw);background:var(--bg);padding:22px 12px calc(16px + env(safe-area-inset-bottom));overflow-y:auto;animation:drin .16s ease-out;border-right:1px solid var(--border)}
 @keyframes drin{from{transform:translateX(-24px);opacity:.6}}
 .dr-head{display:grid;gap:4px;padding:0 10px 16px}.dr-brand{font-size:24px;margin:0}.dr-head small{color:var(--muted);font-size:13px}
 .dr-sec{display:grid;padding:8px 0;border-top:1px solid var(--border)}
 .dr-row{display:flex;align-items:center;gap:14px;min-height:48px;border:0;background:none;color:inherit;font:inherit;font-size:15px;text-align:left;padding:0 10px;border-radius:12px;cursor:pointer}
 .dr-row.on{background:var(--surface);color:var(--green);font-weight:700}.dr-ico{width:24px;text-align:center;color:var(--muted);font-size:16px}
 html[data-mode=dark] .drawer{background:#121212}
}
/* Profile extras. */
.pcard{border:0;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer;width:100%}.pcard .pr-chev{margin-left:auto}
.psec{margin:10px 0 0;font-size:18px}
.pr-plain{width:40px;display:grid;place-items:center;font-size:18px;color:var(--muted);flex:none}
.pdanger .prow{color:#d93a32}.pdanger .pr-plain,.pdanger .pr-chev{color:#d93a32}
.btn.solid.danger{background:#d93a32;color:#fff;border-color:#d93a32}
.pimpact{display:flex;gap:14px;align-items:center;border:1px solid var(--border);border-radius:16px;padding:14px}
.pi-badge{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;font-size:22px;color:#fff;background:linear-gradient(135deg,#f4a020,#e05a1c);flex:none}.pi-badge.none{background:var(--surface);color:var(--muted)}
.pi-txt{flex:1;display:grid;gap:4px;min-width:0}.pi-txt b{font-size:16px}.pi-txt small{color:var(--muted);font-size:12.5px}
.ins-bar{height:6px;border-radius:6px;background:var(--border);overflow:hidden}.ins-bar i{display:block;height:100%;background:var(--green);border-radius:6px}
.pboard{border:1px solid var(--border);border-radius:16px;padding:14px;display:grid;gap:8px}.pb-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.pb-head h3{margin:0}
.pb-row{display:flex;align-items:center;gap:12px;padding:8px;border-radius:12px}.pb-row.me{background:color-mix(in srgb,var(--green) 12%,transparent)}
.pb-rank{width:20px;font-weight:800;color:var(--muted)}.pb-name{flex:1;display:grid}.pb-name small{color:var(--muted);font-size:12px}.pavatar.sm{width:34px;height:34px;font-size:13px}
.psub.wide{max-width:none}
.filtbtn{width:38px;height:38px;display:grid;place-items:center;border-radius:12px}.filtbtn svg{width:20px;height:20px}.filtbtn.on{color:var(--green);background:color-mix(in srgb,var(--green) 14%,transparent)}
.pvbar-top{justify-content:space-between}
.sheet-row.on{color:var(--green);font-weight:700}
.inslist,.mobonly{display:none}
.sheetfilters .wsbar{display:grid;gap:12px;margin:0}.sheetfilters .seg,.sheetfilters .filterrow{flex-wrap:wrap}
.tagsheet{display:grid;gap:8px;padding:0 8px 8px}.tagsheet select{width:100%;max-width:none;font-size:15px;padding:12px}
@media(max-width:760px){
 .mobonly{display:grid}
 .pvtable{display:none}.inslist{display:grid;gap:2px}
 .ins-total{display:grid;gap:2px;padding:4px 0 12px}.ins-total b{font-size:28px}.ins-total span{color:var(--muted);font-size:13px}
 .insrow{display:flex;gap:6px;padding:10px 0 10px calc(var(--d)*16px);border-top:1px solid var(--border)}
 .insrow .pvtog,.insrow .pvsp{width:20px;flex:none;margin-top:1px}
 .ins-main{flex:1;display:grid;gap:5px;min-width:0}.ins-name{display:flex;align-items:center;gap:8px}.ins-name b{flex:1;font-size:15px;min-width:0}.insrow.d2 .ins-name b,.insrow.d3 .ins-name b{font-weight:600;font-size:14px}
 .ins-rate{font-weight:800;font-size:14px}.ins-meta{color:var(--muted);font-size:12px}
 .pivot{border:0!important;background:none!important;padding:0!important}
 .v-profile .anweek{margin-top:4px}
 /* Calendar like Google: the grid takes the whole screen; views live in the menu, swipe to move. */
 .v-calendar .datebar,.v-planning .datebar,.v-calendar .daytabs,.v-planning .daytabs{display:none}
 .v-calendar .section-pad,.v-planning .section-pad{padding:0}
 .content.v-calendar{padding:0 0 0 0}
 .v-calendar .scrollcal,.v-planning .scrollcal{height:calc(100dvh - 58px - 74px);min-height:0;border:0;border-radius:0}
 .v-calendar .panel{margin:0}
 /* Workspace: title row with filter, no filter rows, roomier cards. */
 .v-workspace .wsbar,.v-workspace .weekload{display:none}
 .v-workspace .topbar .row{gap:8px}
 .taskslink{display:none!important}
 .kanban:not(.aslist) .actcard{padding:14px 14px 12px;gap:8px;border-radius:14px}
 .kanban:not(.aslist) .domcards,.goalsec{gap:10px!important}
 .actrow b{font-size:16px}
 /* Tasks: one title line with the filter icon. */
 .v-tasks .tagbar{display:none}
 .tlisthead{align-items:center}
}
@media(max-width:760px){
 .v-workspace .sheetfilters .wsbar{display:grid!important;overflow:visible;flex-wrap:wrap}
 .sheetfilters .seg,.sheetfilters .filterrow{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
 .sheetfilters .seg>span,.sheetfilters .filterrow>span{width:100%;font-size:12px;margin-top:4px}
 .sheetfilters{padding:0 8px 6px;max-height:60vh;overflow-y:auto}
 /* The top bar already names the page. */
 .v-workspace .topbar h2,.v-profile .phead{display:none}
 .v-workspace .topbar{justify-content:flex-end}
}
/* Insights and Leaderboard pages, Emote History style. */
.instop{display:grid;gap:10px;margin:4px 0 14px;max-width:720px}.instop h2{margin:0}
.instabs{display:flex;border-bottom:1px solid var(--border)}.instabs button{flex:1;border:0;background:none;color:var(--muted);font:inherit;font-size:15px;font-weight:700;padding:12px 0;border-bottom:3px solid transparent;cursor:pointer}.instabs button.on{color:var(--ink);border-bottom-color:var(--green)}
html[data-mode=dark] .instabs button.on{color:#eaeaea}
.insnav{display:flex;align-items:center;justify-content:space-between}.insnav b{font-size:16px}.insnav .ib{font-size:24px;width:40px;height:40px}.insnav .ib[disabled]{opacity:.3}
.insnow{justify-self:center;font-size:13px}
.v-insights .pivot,.v-leaderboard .pboard,.v-leaderboard .pimpact{max-width:720px}.v-leaderboard .pimpact{margin-bottom:12px}
.sheet-sub{font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;padding:10px 8px 2px}
.sheet{max-height:86vh;overflow-y:auto}
@media(max-width:760px){.desk-only{display:none}.v-insights .stats{display:grid;grid-template-columns:1fr 1fr;gap:8px}.v-insights .stat{padding:10px;flex-direction:column;gap:2px;align-items:flex-start}}
/* Google Calendar style today button and month picker. */
.gday{display:grid;place-items:center;width:24px;height:24px;border:2px solid currentColor;border-radius:6px;font-size:12px;font-weight:800;line-height:1}
.mb-titlebtn{border:0;background:none;color:inherit;text-align:left;cursor:pointer}
.monthpick{position:sticky;top:58px;z-index:39;background:var(--bg);border-bottom:1px solid var(--border);padding:6px 14px 12px}
.mp-head{display:flex;align-items:center;justify-content:space-between;padding:2px 0 6px}.mp-head .ib{font-size:22px}
.mp-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;text-align:center}.mp-grid>span{font-size:12px;color:var(--muted);padding:4px 0}
.mp-day{position:relative;border:0;background:none;color:inherit;font:inherit;font-size:14px;height:40px;border-radius:50%;cursor:pointer}
.mp-day.dim{color:var(--muted);opacity:.5}.mp-day.today{color:var(--green);font-weight:800}.mp-day.sel{background:var(--green);color:#fff}
.mp-day i{position:absolute;left:50%;bottom:5px;width:4px;height:4px;margin-left:-2px;border-radius:50%;background:currentColor;opacity:.7}
@media(min-width:761px){.monthpick{display:none}}
/* Workspace: bottom + and filter. */
@media(max-width:760px){
 .v-workspace .topbar{display:none!important}
 .fab2{bottom:calc(152px + env(safe-area-inset-bottom));width:48px;height:48px;right:22px;border-radius:15px;background:var(--surface);color:var(--ink);box-shadow:0 6px 16px #0004}.fab2 svg{width:22px;height:22px}
 html[data-mode=dark] .fab2{background:#282828;color:#eaeaea}
}
.lbhead{display:flex;align-items:center;justify-content:space-between}.lbadd{font-size:22px;width:40px;height:40px;margin-left:auto}
.watermark{text-align:center;font-weight:800;letter-spacing:.04em;color:var(--muted);opacity:.45;padding:10px 0 2px;font-size:13px}
@media(max-width:760px){.lbhead{position:fixed;top:8px;right:96px;z-index:41}.lbadd{background:none}}
/* Tasks as goal lists. */
.tn-ico{width:22px;display:grid;place-items:center;color:var(--muted);flex:none}.tn-dot{width:9px;height:9px;border-radius:50%;display:block}
.gday.sm{width:18px;height:18px;font-size:9.5px;border-width:1.6px;border-radius:5px}
.tnew{color:var(--green)}.tnew .tn-ico{color:var(--green)}
.tsec{margin:4px 0 18px}.tsec-head{display:flex;align-items:center;gap:8px;padding:6px 2px 8px;border-bottom:1px solid var(--border)}.tsec-head b{font-size:15px;flex:1}.tsec-head small{color:var(--muted)}
.tsecadd{border:0;opacity:.8}.tsecadd input{font-size:14px}
.tlisthead h3{display:flex;align-items:center;gap:8px}
.td-top{display:flex;align-items:center;gap:12px;padding-bottom:12px;border-bottom:1px solid var(--border);margin-bottom:12px}
.tcheck.big{width:22px;height:22px;font-size:13px}
.td-due{position:relative;display:inline-flex;align-items:center;font-weight:700;font-size:14px;color:var(--muted);cursor:pointer}.td-due.today{color:var(--green)}.td-due.late{color:#d93a32}
.td-due input{position:absolute;inset:0;opacity:0;cursor:pointer}
.td-card{margin-left:auto;font-size:12px;font-weight:700;padding:3px 9px;border-radius:999px;color:var(--acc);background:color-mix(in srgb,var(--acc) 14%,transparent)}
.drtasks .tnav{min-height:46px}.drtasks .tnavh{margin:10px 10px 2px}
@media(max-width:760px){.v-tasks .tnavs{display:none!important}.tsec-head b{font-size:16px}}
.drtasks .tnav{display:flex!important;width:100%!important;justify-content:flex-start;text-align:left;gap:12px;border:0!important;border-radius:12px!important;padding:0 10px!important;background:none}
.drtasks .tnav span:not(.tn-ico):not(.gday){flex:1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.drtasks .tnav.on{background:var(--surface)}.drtasks .tnavh{display:block!important;font-size:11px}
.tnav .tn-ico{flex:0 0 22px!important}
/* Menu: profile pinned at the bottom. */
@media(max-width:760px){.drawer{display:flex;flex-direction:column}.dr-me{margin-top:auto;display:flex;align-items:center;gap:12px;border:0;border-top:1px solid var(--border);background:none;color:inherit;font:inherit;text-align:left;padding:14px 10px 4px;cursor:pointer}.dr-me .pb-name{flex:1}.dr-me.on .pb-name{color:var(--green)}
 .lbhead{right:58px}}
/* Workspace card: star and ⋯ side by side in the top-right corner, never overlapping. */
.kanban:not(.aslist) .actcard{position:relative;padding-right:92px!important}
.kanban:not(.aslist) .actcard .star{position:absolute;top:8px;right:52px;margin:0}
.kanban:not(.aslist) .actcard .actmore{position:absolute;top:8px;right:6px;bottom:auto;margin:0}
.kanban:not(.aslist) .actcard .actmeta{padding-right:0}
.kanban:not(.aslist) .actcard .actmeta{margin-right:-80px}
.planner.nodeck{grid-template-columns:minmax(0,1fr)!important}.planner.nodeck>section:first-child{display:none}
.planbtn.active{background:var(--green);color:#fff;border-color:var(--green)}
.lp-tag{margin:0;font-size:17px;font-weight:700}

/* ===== Desktop restore: undo phone-only rules that leaked onto big screens. ===== */
.kanban:not(.aslist) .actcard{padding-right:12px!important}
.kanban:not(.aslist) .actcard .actrow b{padding-right:74px}
.kanban:not(.aslist) .actcard .actmeta{margin-right:0}
.pr-ico svg{width:22px;height:22px}
@media(min-width:761px){
 .kanban:not(.aslist){grid-template-columns:repeat(var(--cols,6),minmax(270px,1fr))}
 .kanban:not(.aslist) .actcard .actrow b{padding-right:70px}
 .kanban:not(.aslist) .actcard{padding:12px 12px 10px!important}
 .instop,.v-insights .pivot{max-width:none}.instop{grid-template-columns:auto 1fr auto;align-items:center;gap:20px}.instop h2{font-size:30px}.instabs{min-width:240px}.insnav{gap:16px;justify-content:flex-start}
 .v-leaderboard .content-inner,.v-leaderboard{}
 .v-leaderboard .pimpact,.v-leaderboard .pboard{max-width:900px}
 .lbhead{gap:14px}.lbhead .lbadd{border:1px solid var(--border);border-radius:12px}
 .tasksgrid{grid-template-columns:260px minmax(0,1fr) minmax(320px,380px)!important}
 .tnavs .tnav span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 .tlist{min-height:calc(100vh - 220px)}
 .tsec{background:color-mix(in srgb,var(--surface) 35%,transparent);border-radius:14px;padding:8px 12px 4px}
 .psub,.pwrap{max-width:760px}
 .mstab,.mtabs{display:none}
}
/* ===== Phone. ===== */
@media(max-width:760px){
 /* Footer: four equal tabs, same icon size, no raised button. */
 .tabbar{grid-template-columns:repeat(4,1fr)!important}
 .tabbar .ico,.tabbar button.mid .ico{width:auto!important;height:auto!important;margin:0!important;background:none!important;box-shadow:none!important;color:inherit!important;border-radius:0!important}
 .tabbar .ico svg,.tabbar button.mid .ico svg{width:24px!important;height:24px!important}
 /* Today: Day | Log | Focus, one at a time. */
 .mtabs{display:flex;gap:6px;margin-bottom:12px}.mtabs .pill{flex:1}
 .v-lock .focusstrip,.v-lock .starhint{display:none}
 .v-lock .focusstrip.mshow{display:grid;grid-template-columns:1fr 1fr}.v-lock .starhint.mshow{display:block}
 .todaygrid.tab-focus{display:none}
 /* Goals list view on the phone. */
 .kanban.aslist{display:grid!important;grid-auto-flow:row!important;grid-auto-columns:auto!important;grid-template-columns:1fr!important;overflow:visible!important}
 .kanban.aslist .domcol{width:auto}
 .kanban.aslist .actcard{grid-template-columns:minmax(0,1fr) auto auto!important;padding:10px 12px!important}
 .kanban.aslist .actcard .actmeta{grid-column:1/-1;grid-row:2;white-space:normal}
 .kanban.aslist .actcard .actrow b{white-space:normal;padding-right:0}
 .kanban.aslist .actcard .star,.kanban.aslist .actcard .actmore{position:static}
 .kanban:not(.aslist) .actcard .actrow b{padding-right:84px}
}
@media(max-width:760px){.mobilebar .mb-title{color:var(--ink)}html[data-mode=dark] .mobilebar .mb-title{color:#eaeaea}}
/* Goals page. */
.gpage{display:grid;gap:14px;max-width:900px}
.gdom{border:1px solid var(--border);border-top:3px solid var(--dom);border-radius:16px;padding:6px 8px 8px;background:var(--white)}
.gdom-head{display:flex;align-items:center;gap:10px;width:100%;border:0;background:none;color:inherit;font:inherit;text-align:left;padding:10px 8px;cursor:pointer}.gdom-head b{font-size:17px;flex:1}.gdom-head small{color:var(--muted)}.gdom-head .dot{background:var(--dom)}.gcar{color:var(--muted);width:14px}
.grow{display:flex;align-items:center;gap:6px;padding:10px 10px;border-top:1px solid var(--border)}.grow-main{flex:1;display:grid;gap:3px;min-width:0}.grow-main b{font-size:15px}.grow-main small{color:var(--muted);font-size:12.5px}
.grow .ib{width:36px;height:36px;display:grid;place-items:center;color:var(--muted)}.grow .ib svg{width:18px;height:18px}.grow .ib.danger:hover{color:#d93a32}
html[data-mode=dark] .gdom{background:#191919;border-color:#2c2c2c}
.gfab{display:grid!important;place-items:center;position:fixed;right:28px;bottom:28px;width:56px;height:56px;border-radius:18px;border:0;background:var(--green);color:#fff;font-size:28px;box-shadow:0 8px 22px #0005;z-index:55;cursor:pointer}
.gform{display:grid;gap:12px;padding:0 8px 10px}.gform label{display:grid;gap:6px;font-size:13px;font-weight:700;color:var(--muted)}.gform input,.gform select{font:inherit;font-size:15px;padding:12px;border-radius:12px;border:1px solid var(--border);background:transparent;color:var(--ink)}
html[data-mode=dark] .gform input,html[data-mode=dark] .gform select{color:#eaeaea;background:#121212}
/* Habits: ring to tick today. */
.hring{width:22px;height:22px;flex:none;border-radius:50%;border:2px solid var(--muted);background:none;color:#fff;font-size:12px;font-weight:800;display:grid;place-items:center;cursor:pointer;padding:0;margin-right:8px}.hring.on{background:var(--green);border-color:var(--green)}
.kanban:not(.aslist) .actcard .actrow{display:flex;align-items:flex-start}
/* Desktop leaderboard: add friend floats bottom right. */
@media(min-width:761px){.lbhead .lbadd{position:fixed;right:28px;bottom:28px;width:56px;height:56px;border-radius:18px;border:0!important;background:var(--green);color:#fff;font-size:28px;box-shadow:0 8px 22px #0005;z-index:55}}
@media(max-width:760px){
 .tabbar{grid-template-columns:repeat(5,1fr)!important}
 .gfab{right:18px;bottom:calc(86px + env(safe-area-inset-bottom))}
 .v-goals .topbar{display:none}
 .gdom{padding:2px 4px 4px}
}
.kanban.aslist{grid-template-rows:none!important;grid-auto-rows:max-content!important;align-content:start!important;overflow-y:auto!important}.kanban.aslist .domcol{height:auto!important;min-height:0}
/* Habits list view: one clean line per card on every screen. */
.kanban.aslist .actcard{display:flex!important;align-items:center;gap:12px;padding:10px 14px!important;position:relative}
.kanban.aslist .actcard .actrow{display:flex!important;align-items:center;flex:0 1 40%;min-width:0;gap:0}
.kanban.aslist .actcard .actrow b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:0!important}
.kanban.aslist .actcard .actmeta{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;grid-column:auto;grid-row:auto}
.kanban.aslist .actcard .star,.kanban.aslist .actcard .actmore{position:static!important;flex:none;margin:0}
.kanban.aslist .goalsec,.kanban.aslist .domcards{height:auto!important;max-height:none!important;overflow:visible!important}
@media(max-width:760px){.kanban.aslist .actcard{flex-wrap:wrap}.kanban.aslist .actcard .actrow{flex:1 1 auto}.kanban.aslist .actcard .actmeta{flex:1 0 100%;order:5;white-space:normal}}
.kanban.aslist.fitpage{height:auto!important;overflow:visible!important}.kanban.aslist .domcol>header{position:static!important;margin:0 0 6px!important;padding:4px 2px!important}
/* Routines (HabitNow style). */
.rtabs{max-width:720px;margin-bottom:12px}.rlist{display:grid;gap:12px;max-width:720px}
.rcard{background:var(--white);border:1px solid var(--border);border-radius:18px;padding:14px 14px 10px;display:grid;gap:12px}
html[data-mode=dark] .rcard{background:#191919;border-color:#2c2c2c}
.rc-top{display:flex;align-items:flex-start;gap:4px}.rc-name{flex:1;display:grid;gap:3px;min-width:0}.rc-name b{font-size:16px}.rc-name small{color:var(--acc);font-weight:700;font-size:12px}
.rcard .star{width:38px;height:38px;font-size:18px}.rcard .actmore{position:static!important}
.rweek{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.rday{display:grid;justify-items:center;gap:4px;border:0;background:none;color:inherit;font:inherit;cursor:pointer;padding:0}.rday small{font-size:11px;color:var(--muted)}
.rday b{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;border:2px solid color-mix(in srgb,var(--acc) 55%,transparent);font-size:14px}
.rday.on b{background:color-mix(in srgb,var(--acc) 85%,transparent);border-color:var(--acc);color:#fff}.rday.today b{border-color:var(--ink)}html[data-mode=dark] .rday.today b{border-color:#eaeaea}
.rday.future{opacity:.4;cursor:default}
.rc-foot{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--muted);border-top:1px solid var(--border);padding-top:8px}.rbar{flex:1;height:5px;border-radius:5px;background:var(--border);overflow:hidden}.rbar i{display:block;height:100%}
.rfab{display:grid!important;place-items:center;position:fixed;right:28px;bottom:28px;width:56px;height:56px;border-radius:18px;border:0;background:var(--green);color:#fff;font-size:28px;box-shadow:0 8px 22px #0005;z-index:55}
/* Goals: linked routines under each goal. */
.gbtn{border:0;background:none;color:var(--muted);cursor:pointer;font-size:12px;width:20px;padding:0}.grow-main{cursor:pointer}
.glinked{display:grid;gap:2px;padding:0 10px 10px 40px}.gl-row{display:flex;align-items:center;gap:8px;padding:6px 0;border-top:1px dashed var(--border)}.gl-ico{width:18px;color:var(--green);font-weight:800;text-align:center}.gl-name{flex:1;font-size:14px;font-weight:600}.gl-row small{color:var(--muted);font-size:12px}
.mstrip{display:none}
@media(max-width:760px){
 .rfab{right:18px;bottom:calc(86px + env(safe-area-inset-bottom))}
 .v-routines .topbar{display:none}.rday b{width:36px;height:36px}
 /* Today: date strip, then Focus (what to log) | Your day. Starred cards live in Routines. */
 .v-lock .focusstrip,.v-lock .starhint{display:none!important}
 .v-lock .mtabs{display:flex!important}
 .mstrip{display:block;margin-bottom:10px}
 .todaygrid>section{display:flex!important}.todaygrid .daystrip{display:none}
 .todaygrid.tab-day>section:last-child,.todaygrid.tab-log>section:first-child{display:none!important}
 .todaygrid{display:grid!important;gap:12px}
 .todaygrid .schedlist,.todaygrid .loglist{max-height:none!important;height:auto!important;flex:none!important;min-height:0!important}
 .todaygrid.fitpage{height:auto!important;overflow:visible!important}.todaygrid.fitpage>section{height:auto!important}
 /* Calendar: 7 days that fit, like Google. */
 .colhead>div{display:grid;justify-items:center;line-height:1.1;padding:4px 0!important}.colhead .ch-sep{display:none}.colhead .ch-wd{font-size:11px;color:var(--muted)}.colhead .ch-d{font-size:17px;font-weight:700}
 .colhead .today .ch-d{background:var(--green);color:#fff;border-radius:50%;width:30px;height:30px;display:grid;place-items:center}
 .colhead,.timegrid{grid-template-columns:34px repeat(var(--colcount),minmax(0,1fr))!important}
 .timeaxis label{font-size:9.5px}
 .event b{font-size:10.5px}.event small{display:none}
}
@media(max-width:760px){.v-lock .todaygrid>section{flex-direction:column!important;align-items:stretch}.v-lock .todaygrid>section>h3,.v-lock .loghead{width:auto}}

/* Phone calendar: one 8-hour block per screen, snapping between blocks. */
.snapmark{display:none}
@media(max-width:760px){.v-planning .scrollcal{scroll-snap-type:y mandatory}.snapmark{display:block;position:absolute;left:0;width:1px;height:1px;scroll-snap-align:start;pointer-events:none}}
@media(max-width:760px){.v-lock .loghead,.v-lock .todaygrid>section>h3{display:none!important}}
/* Phone: plan mode puts your cards in a strip above the calendar (tap a card, then tap a time). Nothing below the fold. */
@media(max-width:760px){
 .v-planning .planner.fitbox{display:flex!important;flex-direction:column;height:calc(100dvh - 58px - 74px)!important;overflow:hidden!important;gap:6px;margin:0}
 .v-planning .planner>section{margin:0;min-height:0}
 .v-planning .planner:not(.nodeck)>section:first-child{order:-1;flex:none;height:auto!important;padding:6px 0 4px!important;border:0;background:none;box-shadow:none}
 .v-planning .planner>section:first-child .innerhead{display:none}
 .v-planning .planner>section:first-child .section-pad,.v-planning .planner>section:first-child .cards{padding:0!important;flex:none!important;height:auto!important}
 .v-planning .planner>section:first-child .deckbar{display:none}
 .v-planning .planner>section:first-child .cards{display:flex!important;flex-direction:row;gap:8px;overflow-x:auto;overflow-y:hidden;max-height:none!important;padding:2px 2px 4px;scroll-snap-type:x proximity}
 .v-planning .planner>section:first-child .cards .deckhead,.v-planning .planner>section:first-child>.section-pad>p{display:none}
 .v-planning .planner>section:first-child .cardunit{flex:0 0 auto;width:150px;min-height:0;padding:7px 9px;scroll-snap-align:start}
 .v-planning .planner>section:first-child .cardunit small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 .v-planning .planner>section:last-child{flex:1 1 0;height:auto!important;display:flex;flex-direction:column}
 .v-planning .planner>section:last-child>.section-pad{flex:none!important;padding:0!important}
 .v-planning .planner #gridmount{flex:1 1 0!important;min-height:0;display:flex;flex-direction:column}
 .v-planning .planner .scrollcal{flex:1 1 0;height:auto!important;min-height:0!important}
 /* Event titles wrap instead of "Com…". */
 .event b{white-space:normal!important;text-overflow:clip!important;overflow-wrap:anywhere;line-height:1.15;font-size:10px!important}
 .event{padding:3px 4px!important;display:block!important;text-align:left}
 .event small{display:none!important}
}
@media(max-width:760px){html:has(.v-planning),body:has(.v-planning){overflow:hidden;height:100%;overscroll-behavior:none}.v-planning.content{padding-bottom:0!important}}
/* Goal dates: countdown chip and time-gone bar. */
.gdates{display:grid;grid-template-columns:1fr 1fr;gap:10px}.gdates input{width:100%}
.gclock{display:inline-block;font-size:11px;font-weight:700;color:var(--muted);background:var(--surface);border-radius:100px;padding:1px 8px;margin:2px 0;white-space:nowrap}
.gclock.soon{color:#b26a00;background:#f6bf2626}.gclock.over{color:#d93a32;background:#d93a321f}
.gtime{display:block;height:3px;border-radius:3px;background:var(--border);margin:2px 0 3px;max-width:180px;overflow:hidden}.gtime i{display:block;height:100%;background:var(--green)}
.goalhead .gclock{margin-left:6px}.goalhead .gtime{display:none}
.gclock{width:fit-content;justify-self:start;align-self:flex-start}
