/* Lenny / Work — a Kanban command board. Useful first. Status by column + glyph + label, never hue alone. */
:root{
  --bg:oklch(0.17 0.012 250);
  --bg-2:oklch(0.20 0.014 250);
  --panel:oklch(0.225 0.016 252);
  --panel-2:oklch(0.255 0.018 252);
  --raised:oklch(0.275 0.02 252);
  --ink:oklch(0.96 0.008 250);
  --ink-dim:oklch(0.74 0.015 252);
  --ink-faint:oklch(0.56 0.015 255);
  --line:oklch(1 0 0 / 0.08);
  --line-2:oklch(1 0 0 / 0.14);
  --accent:oklch(0.80 0.13 195);
  --accent-dim:oklch(0.62 0.09 195);
  --urgent:oklch(0.82 0.16 55);
  --ui:'Space Grotesk',system-ui,sans-serif; --mono:'JetBrains Mono',monospace;
  --ease:cubic-bezier(0.16,1,0.3,1);
  /* project hues (identity only, never the sole signal) */
  --p0:#56B4E9; --p1:#009E73; --p2:#E69F00; --p3:#CC79A7; --p4:#0072B2; --p5:#D55E00; --p6:#9b8cff;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{background:
  radial-gradient(140% 100% at 0% 0%, oklch(0.22 0.03 250) 0%, transparent 55%),
  radial-gradient(120% 90% at 100% 0%, oklch(0.2 0.02 280) 0%, transparent 50%),
  var(--bg);
  color:var(--ink);font-family:var(--ui);line-height:1.45;-webkit-font-smoothing:antialiased;
  overflow:hidden}
button{font-family:inherit;cursor:pointer;color:inherit;background:none;border:none}
#app{display:flex;flex-direction:column;height:100vh}

/* ---- top bar ---- */
.topbar{display:flex;align-items:center;justify-content:space-between;padding:16px clamp(16px,3vw,30px) 12px}
.brand{font-size:1.3rem;font-weight:600;letter-spacing:-.01em;display:flex;align-items:center;gap:10px}
.brand i{font-style:normal;color:var(--ink-faint);font-weight:400}
.brand .mark{width:11px;height:11px;border-radius:3px;background:var(--accent);box-shadow:0 0 14px var(--accent)}
.clockwrap{font-family:var(--mono);text-align:right;font-variant-numeric:tabular-nums}
.clockwrap #clock{font-size:1.05rem;display:block}
.clockwrap #datestr{font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint)}

/* ---- top actions: funnel filter + note + clock ---- */
.topactions{display:flex;align-items:center;gap:14px}
.iconbtn{position:relative;display:grid;place-items:center;width:40px;height:40px;border-radius:10px;
  border:1px solid var(--line-2);background:var(--panel);color:var(--ink-dim);transition:.3s var(--ease)}
.iconbtn:hover,.iconbtn.open{color:var(--ink);border-color:var(--accent-dim);background:var(--raised)}
.iconbtn.filtered{color:var(--accent)}
.fbadge{position:absolute;top:-6px;right:-6px;min-width:17px;height:17px;padding:0 4px;border-radius:99px;
  background:var(--accent);color:oklch(0.18 0.02 250);font-family:var(--mono);font-size:.6rem;font-weight:700;
  display:grid;place-items:center;line-height:1}
.fbadge[hidden]{display:none}
.note-cta{font-weight:600;font-size:.86rem;padding:9px 16px;border-radius:9px;
  background:var(--accent);color:oklch(0.18 0.02 250);box-shadow:0 4px 20px -8px var(--accent);transition:.35s var(--ease)}
.note-cta:hover{filter:brightness(1.08);transform:translateY(-1px)}
.seenpill{font-family:var(--mono);font-size:.66rem;letter-spacing:.06em;color:var(--accent);
  border:1px solid var(--accent-dim);border-radius:99px;padding:5px 11px;transition:.3s var(--ease)}
.seenpill:hover{background:oklch(0.80 0.13 195 / .14)}
.card .meta .upd{color:var(--accent);font-weight:700;letter-spacing:.02em}

/* reports drawer */
.rep-item{border:1px solid var(--line);border-radius:10px;margin-bottom:9px;overflow:hidden}
.rep-head{width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 13px;
  font-family:var(--mono);font-size:.8rem;color:var(--ink);text-align:left;transition:.2s}
.rep-head:hover{background:var(--raised)}
.rep-date{letter-spacing:.04em}
.rep-chev{color:var(--ink-faint)}
.rep-body{padding:0 14px 14px;font-size:.9rem;color:var(--ink-dim);white-space:pre-wrap;line-height:1.55}

/* ---- filter popover ---- */
.fbtn{font-family:var(--mono);font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint);
  padding:4px 9px;border:1px solid var(--line);border-radius:7px;transition:.3s var(--ease)}
.fbtn:hover{color:var(--ink);border-color:var(--line-2)}
.popover{position:fixed;z-index:25;width:230px;border:1px solid var(--line-2);border-radius:13px;
  background:linear-gradient(180deg,var(--panel-2),var(--panel));box-shadow:0 24px 60px -28px #000;
  padding:12px;transform-origin:top right;animation:pop .22s var(--ease)}
@keyframes pop{from{opacity:0;transform:scale(.96) translateY(-6px)}to{opacity:1;transform:none}}
.pop-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;padding:0 4px}
.pop-head span{font-family:var(--mono);font-size:.6rem;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-faint)}
.pop-btns{display:flex;gap:4px}
.pop-list{display:flex;flex-direction:column;gap:2px;max-height:50vh;overflow:auto}
.pop-row{display:flex;align-items:center;gap:9px;padding:8px 9px;border-radius:8px;font-size:.88rem;color:var(--ink-dim);
  transition:.2s;cursor:pointer}
.pop-row:hover{background:var(--raised);color:var(--ink)}
.pop-row .box{width:16px;height:16px;border-radius:5px;border:1.5px solid var(--line-2);display:grid;place-items:center;
  font-size:.7rem;color:oklch(0.18 0.02 250);flex:none}
.pop-row.on .box{background:var(--accent);border-color:var(--accent)}
.pop-row.on{color:var(--ink)}
.pop-row .dot{width:9px;height:9px;border-radius:3px;flex:none}
.popover-wide{width:280px}
.pop-group{font-family:var(--mono);font-size:.58rem;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-faint);padding:10px 4px 4px;margin-top:4px;border-top:1px solid var(--line-2)}
.pop-group:first-child{border-top:0;margin-top:0}
.pop-link{display:flex;align-items:center;gap:10px;padding:9px 9px;border-radius:8px;font-size:.9rem;color:var(--ink-dim);text-decoration:none;cursor:pointer}
.pop-link:hover{background:var(--raised);color:var(--ink)}
.pop-link .ic{display:grid;place-items:center;width:22px;height:22px;border-radius:6px;background:var(--raised);font-size:14px;flex:none}
.pop-link .arrow{margin-left:auto;opacity:0;color:var(--ink-faint);font-size:14px;transition:opacity .12s ease}
.pop-link:hover .arrow{opacity:1}
.pop-empty{font-size:.85rem;color:var(--ink-faint);padding:8px 9px}

/* ---- board ---- */
.board{flex:1;display:grid;grid-template-columns:repeat(4,1fr);gap:14px;
  padding:16px clamp(16px,3vw,30px) 24px;overflow:hidden;min-height:0}
.col{display:flex;flex-direction:column;min-height:0;background:var(--bg-2);border:1px solid var(--line);border-radius:14px}
.col-head{display:flex;align-items:center;gap:8px;padding:14px 16px 10px;position:sticky;top:0}
.col-head .ci{font-size:.95rem}
.col-head h2{font-size:.74rem;letter-spacing:.16em;text-transform:uppercase;font-weight:600;color:var(--ink-dim)}
.col-head .cnt{margin-left:auto;font-family:var(--mono);font-size:.74rem;color:var(--ink-faint);
  background:var(--panel);border:1px solid var(--line);border-radius:99px;padding:1px 9px;min-width:24px;text-align:center}
.col.needs .col-head h2{color:var(--ink)}
.col-list{flex:1;overflow-y:auto;padding:4px 12px 14px;display:flex;flex-direction:column;gap:9px}
.col-list::-webkit-scrollbar{width:6px}.col-list::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:99px}
.col-empty{color:var(--ink-faint);font-size:.82rem;text-align:center;padding:24px 8px;font-style:italic}
.board-empty{grid-column:1/-1;align-self:center;justify-self:center;text-align:center;color:var(--ink-faint);
  font-size:1rem;line-height:1.7}.board-empty b{color:var(--ink)}

/* ---- card ---- */
.card{background:linear-gradient(180deg,var(--panel-2),var(--panel));border:1px solid var(--line-2);border-radius:11px;
  padding:12px 13px;cursor:pointer;transition:transform .3s var(--ease),box-shadow .3s var(--ease),border-color .3s var(--ease)}
.card:hover{transform:translateY(-2px);border-color:var(--accent-dim);box-shadow:0 10px 26px -16px #000}
.card .cproj{font-family:var(--mono);font-size:.66rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  text-align:right;margin-bottom:8px;line-height:1}
.card .ttl{font-size:.92rem;font-weight:500;line-height:1.35}
.card .meta{display:flex;align-items:center;gap:9px;margin-top:9px;font-family:var(--mono);font-size:.68rem;color:var(--ink-faint);flex-wrap:wrap}
.card .urgent{color:var(--urgent);font-weight:700;letter-spacing:.04em}
.card .due.soon{color:var(--ink)}
.card .sg{font-size:.8rem}
.card .has-thread{margin-left:auto;color:var(--accent-dim)}

/* ---- drawer ---- */
.drawer-scrim{position:fixed;inset:0;z-index:30;background:oklch(0.1 0.01 250 / .55);backdrop-filter:blur(2px)}
.drawer{position:fixed;top:0;right:0;z-index:31;height:100vh;width:min(460px,100vw);overflow-y:auto;
  background:linear-gradient(180deg,var(--panel),var(--bg-2));border-left:1px solid var(--line-2);
  padding:26px clamp(20px,3vw,30px);box-shadow:-30px 0 80px -40px #000;
  transform:translateX(100%);transition:transform .5s var(--ease)}
.drawer.open{transform:none}
.drawer .dclose{font-family:var(--mono);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-dim);
  border:1px solid var(--line);border-radius:99px;padding:6px 12px;margin-bottom:18px}
.drawer .dclose:hover{color:var(--ink);border-color:var(--line-2)}
.d-ptag{display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-dim)}
.d-ptag .pd{width:9px;height:9px;border-radius:2px}
.d-title{font-size:1.45rem;font-weight:600;line-height:1.2;margin:10px 0 4px}
.d-sub{display:flex;gap:10px;font-family:var(--mono);font-size:.72rem;color:var(--ink-faint);flex-wrap:wrap;margin-bottom:6px}
.d-body{font-size:.95rem;color:var(--ink-dim);margin:10px 0 6px}

.thread{margin:18px 0;display:flex;flex-direction:column;gap:10px}
.msg{padding:11px 13px;border-radius:11px;font-size:.9rem;max-width:92%}
.msg.you{align-self:flex-end;background:var(--raised);border:1px solid var(--line-2)}
.msg.lenny{align-self:flex-start;background:oklch(0.30 0.05 195 / .35);border:1px solid var(--accent-dim)}
.msg .who{font-family:var(--mono);font-size:.58rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:4px}
.msg.pending{opacity:.6}

.composer{margin-top:18px;border-top:1px solid var(--line);padding-top:16px}
.seg{display:inline-flex;border:1px solid var(--line-2);border-radius:8px;overflow:hidden;margin-bottom:10px}
.seg button{font-family:var(--mono);font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;padding:7px 14px;color:var(--ink-dim);transition:.3s}
.seg button.on{background:var(--accent);color:oklch(0.18 0.02 250)}
.composer label{display:block;font-family:var(--mono);font-size:.62rem;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:6px}
.composer select,.composer textarea{width:100%;background:var(--bg);border:1px solid var(--line-2);border-radius:9px;color:var(--ink);
  font-family:inherit;font-size:.92rem;padding:10px 12px;resize:vertical}
.composer textarea{min-height:96px;margin-bottom:12px}
.composer select{margin-bottom:12px}
.send{width:100%;font-weight:600;font-size:.92rem;padding:12px;border-radius:10px;background:var(--accent);color:oklch(0.18 0.02 250);transition:.3s var(--ease)}
.send:hover{filter:brightness(1.08)}
.send:disabled{opacity:.5;cursor:default}

/* ---- toast ---- */
.toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%) translateY(20px);z-index:50;
  background:var(--raised);border:1px solid var(--accent-dim);color:var(--ink);border-radius:10px;padding:12px 20px;
  font-size:.9rem;opacity:0;transition:.4s var(--ease);box-shadow:0 14px 40px -18px #000}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

@media (max-width:900px){.board{grid-template-columns:repeat(2,1fr);overflow-y:auto}}
@media (max-width:560px){.board{grid-template-columns:1fr;overflow-y:auto}.note-cta{margin-left:0}}
@media (prefers-reduced-motion:reduce){*{transition-duration:.001s!important;animation:none!important}}
