
/* ── THEME TOKENS ───────────────────────────────────────── */
:root {
  --bg:#0a0a0c;--bg2:#111114;--bg3:#18181d;--bg4:#202026;--bg5:#28282f;
  --border:#252530;--border2:#32323f;--border3:#3e3e50;
  --text:#dddde8;--text2:#8888a0;--text3:#4a4a60;
  --shadow:rgba(0,0,0,.5);
}
[data-theme="light"] {
  --bg:#f5f5f7;--bg2:#ffffff;--bg3:#f0f0f3;--bg4:#e8e8ec;--bg5:#dddde4;
  --border:#d0d0da;--border2:#b8b8c8;--border3:#9898b0;
  --text:#0f0f1a;--text2:#3a3a58;--text3:#606080;
  --shadow:rgba(0,0,0,.12);
}
:root, [data-theme="light"] {
  --accent:#5b6af0;--accent2:#7a87f5;--accent-dim:rgba(91,106,240,0.12);
  --green:#22c55e;--green-dim:rgba(34,197,94,0.12);
  --amber:#d97706;--amber-dim:rgba(217,119,6,0.12);
  --red:#e53935;--red-dim:rgba(229,57,53,0.12);
  --tom:#3b82f6;--tom-dim:rgba(59,130,246,0.12);
  --alex:#f97316;--alex-dim:rgba(249,115,22,0.12);
  --louis:#22c55e;--louis-dim:rgba(34,197,94,0.12);
  --alle:#9c84f5;--alle-dim:rgba(156,132,245,0.12);
  --offen:#64748b;--offen-dim:rgba(100,116,139,0.12);
  --l1:#5b6af0;--l1-dim:rgba(91,106,240,0.1);
  --l2:#00bcd4;--l2-dim:rgba(0,188,212,0.1);
  --l3:#a78bfa;--l3-dim:rgba(167,139,250,0.1);
  --r:8px;--r-sm:5px;
}
[data-theme="light"] {
  --accent-dim:rgba(91,106,240,0.1);
  --green-dim:rgba(34,197,94,0.1);
  --amber:#b45309;--amber-dim:rgba(180,83,9,0.1);
  --red-dim:rgba(229,57,53,0.1);
  --tom-dim:rgba(59,130,246,0.1);
  --alex-dim:rgba(249,115,22,0.1);
  --louis-dim:rgba(34,197,94,0.1);
}

/* ── RESET ──────────────────────────────────────────────── */
*{box-sizing:border-box;margin:0;padding:0;}
body{font-family:'IBM Plex Sans',sans-serif;background:var(--bg);color:var(--text);font-size:13px;line-height:1.5;min-height:100vh;transition:background .2s,color .2s;}

/* ── LOGIN ──────────────────────────────────────────────── */
#login-screen{position:fixed;inset:0;background:var(--bg);display:flex;align-items:center;justify-content:center;z-index:9999;}
#login-screen.hidden{display:none;}
.login-box{background:var(--bg2);border:1px solid var(--border2);border-radius:14px;padding:36px 40px;width:400px;max-width:95vw;box-shadow:0 20px 60px var(--shadow);}
.login-mark{font-size:10px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--text3);margin-bottom:20px;font-family:'IBM Plex Mono',monospace;}
.login-title{font-size:22px;font-weight:600;margin-bottom:4px;}
.login-sub{font-size:12px;color:var(--text3);margin-bottom:28px;}
.login-error{background:var(--red-dim);border:1px solid rgba(229,57,53,.3);color:var(--red);padding:8px 12px;border-radius:var(--r-sm);font-size:12px;margin-bottom:12px;display:none;}

/* ── APP SHELL ──────────────────────────────────────────── */
.app{display:flex;height:100vh;overflow:hidden;}
.sidebar{width:220px;flex-shrink:0;background:var(--bg2);border-right:1px solid var(--border);display:flex;flex-direction:column;transition:background .2s;}
.app.simple-mode .sidebar{width:180px;}
.sidebar-top{padding:16px 14px 12px;border-bottom:1px solid var(--border);}
.s-label{font-size:9px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--text3);font-family:'IBM Plex Mono',monospace;margin-bottom:4px;}
.proj-title{font-size:13px;font-weight:600;line-height:1.3;cursor:pointer;display:flex;align-items:center;gap:4px;}
.proj-title:hover{color:var(--accent);}
.proj-switcher{margin-top:8px;display:none;}
.proj-switcher.show{display:block;}
.proj-btn{width:100%;text-align:left;padding:5px 8px;border-radius:var(--r-sm);font-size:11px;background:none;border:1px solid var(--border);color:var(--text2);cursor:pointer;font-family:'IBM Plex Sans',sans-serif;margin-bottom:3px;transition:all .12s;}
.proj-btn.active{background:var(--accent-dim);color:var(--accent2);border-color:transparent;font-weight:500;}
.proj-btn:hover:not(.active){background:var(--bg3);}
.user-pill{margin:8px 8px 0;display:flex;align-items:center;gap:7px;padding:6px 9px;background:var(--bg3);border:1px solid var(--border);border-radius:var(--r-sm);}
.user-av{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;flex-shrink:0;}
.user-av-name{font-size:11px;font-weight:500;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.sidebar-nav{padding:8px 6px;flex:1;overflow-y:auto;}
.nav-group{font-size:9px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--text3);padding:0 8px;margin:10px 0 4px;font-family:'IBM Plex Mono',monospace;}
.nav-btn{display:flex;align-items:center;gap:7px;width:100%;padding:6px 8px;border:none;background:none;color:var(--text2);font-size:12px;font-weight:400;font-family:'IBM Plex Sans',sans-serif;border-radius:var(--r-sm);cursor:pointer;transition:all .12s;text-align:left;}
.nav-btn:hover{background:var(--bg3);color:var(--text);}
.nav-btn.active{background:var(--accent-dim);color:var(--accent2);font-weight:500;}
.nav-btn.nav-alert{color:var(--red);}
.nav-btn.nav-alert.active{background:var(--red-dim);color:var(--red);}
.nav-btn .ni{width:14px;text-align:center;font-size:12px;}
.nbadge{margin-left:auto;font-size:10px;font-family:'IBM Plex Mono',monospace;background:var(--red-dim);color:var(--red);padding:1px 5px;border-radius:3px;}
.sidebar-bottom{padding:8px;border-top:1px solid var(--border);}
.deadline-box{background:var(--red-dim);border:1px solid rgba(229,57,53,.2);border-radius:var(--r-sm);padding:7px 10px;text-align:center;margin-bottom:6px;}
.deadline-box .days{font-size:20px;font-weight:700;font-family:'IBM Plex Mono',monospace;color:var(--red);}
.deadline-box .dlabel{font-size:9px;color:var(--red);opacity:.7;margin-top:1px;}
.app.simple-mode .deadline-box{display:none;}
.mode-toggle{width:100%;padding:5px;background:none;border:1px solid var(--border);color:var(--text3);border-radius:var(--r-sm);font-size:11px;cursor:pointer;font-family:'IBM Plex Sans',sans-serif;transition:all .12s;margin-bottom:4px;display:flex;align-items:center;justify-content:center;gap:5px;}
.mode-toggle:hover{background:var(--bg3);color:var(--text);}
.app.simple-mode .mode-toggle{background:var(--accent-dim);color:var(--accent2);border-color:var(--accent);}
.theme-toggle{width:100%;padding:5px;background:none;border:1px solid var(--border);color:var(--text3);border-radius:var(--r-sm);font-size:11px;cursor:pointer;font-family:'IBM Plex Sans',sans-serif;transition:all .12s;margin-bottom:4px;display:flex;align-items:center;justify-content:center;gap:5px;}
.theme-toggle:hover{background:var(--bg3);color:var(--text);}
.btn-logout{width:100%;padding:5px;background:none;border:1px solid var(--border);color:var(--text3);border-radius:var(--r-sm);font-size:11px;cursor:pointer;font-family:'IBM Plex Sans',sans-serif;transition:all .12s;}
.btn-logout:hover{border-color:rgba(229,57,53,.3);color:var(--red);}

/* ── MAIN ───────────────────────────────────────────────── */
.main{flex:1;overflow:hidden;display:flex;flex-direction:column;min-width:0;}
.topbar{height:48px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:8px;padding:0 18px;background:var(--bg2);flex-shrink:0;}
.topbar-title{font-size:13px;font-weight:600;flex:1;}
.btn{padding:5px 12px;border-radius:var(--r-sm);font-size:12px;font-weight:500;cursor:pointer;border:none;font-family:'IBM Plex Sans',sans-serif;transition:all .12s;}
.btn-ghost{background:var(--bg3);color:var(--text2);border:1px solid var(--border);}
.btn-ghost:hover{background:var(--bg4);color:var(--text);}
.btn-accent{background:var(--accent);color:#fff;}
.btn-accent:hover{background:var(--accent2);}
.btn-sm{padding:3px 8px;font-size:11px;}
.btn-danger{background:var(--red-dim);color:var(--red);border:1px solid rgba(229,57,53,.25);}
.btn-danger:hover{background:var(--red);color:#fff;}
.f-toggle{display:flex;background:var(--bg3);border:1px solid var(--border);border-radius:var(--r-sm);padding:2px;gap:1px;}
.f-toggle-btn{padding:2px 9px;border:none;background:none;color:var(--text3);font-size:11px;font-weight:500;cursor:pointer;border-radius:3px;font-family:'IBM Plex Sans',sans-serif;transition:all .12s;}
.f-toggle-btn.active{background:var(--bg2);color:var(--text);}
.filter-bar{padding:6px 18px;border-bottom:1px solid var(--border);background:var(--bg2);display:flex;gap:7px;align-items:center;flex-wrap:wrap;min-height:40px;}
.filter-label{font-size:10px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.08em;}
.f-select,.f-input{background:var(--bg3);border:1px solid var(--border);color:var(--text);padding:4px 8px;border-radius:var(--r-sm);font-size:11px;font-family:'IBM Plex Sans',sans-serif;outline:none;}
.f-select:focus,.f-input:focus{border-color:var(--accent);}
.f-input{width:140px;}
.filter-sep{width:1px;height:18px;background:var(--border);}

/* Gantt: content must not scroll, Gantt manages its own overflow */
.content{flex:1;overflow:hidden;display:flex;flex-direction:column;}
.view{display:none;flex:1;overflow-y:auto;padding:18px;}
.view.active{display:flex;flex-direction:column;}
/* Gantt view: no padding, overflow handled by inner gantt-scroll */
#view-gantt{padding:0;overflow:hidden;}

/* ── CHIPS ──────────────────────────────────────────────── */
.chip{display:inline-flex;align-items:center;padding:1px 7px;border-radius:99px;font-size:10px;font-weight:500;white-space:nowrap;}
.c-todo{background:var(--bg4);color:var(--text3);}
.c-doing{background:var(--amber-dim);color:var(--amber);}
.c-done{background:var(--green-dim);color:var(--green);}
.c-blocked{background:var(--red-dim);color:var(--red);}
.p-Tom{background:var(--tom-dim);color:var(--tom);}
.p-Alex{background:var(--alex-dim);color:var(--alex);}
.p-Louis{background:var(--louis-dim);color:var(--louis);}
.p-Alle{background:var(--alle-dim);color:var(--alle);}
.p-Offen{background:var(--offen-dim);color:var(--offen);}
.lv-1{background:var(--l1-dim);color:var(--l1);}
.lv-2{background:var(--l2-dim);color:var(--l2);}
.lv-3{background:var(--l3-dim);color:var(--l3);}
.inc-dot{width:6px;height:6px;border-radius:50%;background:var(--amber);flex-shrink:0;display:inline-block;}

/* ── CARDS ──────────────────────────────────────────────── */
.card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:14px;}
.card h3{font-size:10px;font-weight:600;margin-bottom:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.07em;}
.g2{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.g3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;}
.g4{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;}
.stat{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:12px;}
.stat .sv{font-size:24px;font-weight:600;font-family:'IBM Plex Mono',monospace;}
.stat .sl{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.06em;margin-bottom:3px;}
.stat .ss{font-size:11px;color:var(--text3);margin-top:2px;}
.stat-green .sv{color:var(--green);}.stat-amber .sv{color:var(--amber);}.stat-red .sv{color:var(--red);}.stat-acc .sv{color:var(--accent2);}
.task-row{display:flex;align-items:flex-start;gap:7px;padding:7px 0;border-bottom:1px solid var(--border);cursor:pointer;transition:all .1s;}
.task-row:last-child{border-bottom:none;}
.task-row:hover{background:var(--bg3);margin:0 -6px;padding:7px 6px;border-radius:var(--r-sm);}
.tr-dot{width:5px;height:5px;border-radius:50%;margin-top:5px;flex-shrink:0;}
.tr-body{flex:1;min-width:0;}
.tr-name{font-size:12px;font-weight:500;line-height:1.3;display:flex;align-items:center;gap:5px;flex-wrap:wrap;}
.tr-meta{font-size:11px;color:var(--text3);margin-top:2px;display:flex;flex-wrap:wrap;gap:4px;align-items:center;}
.inc-banner{background:var(--amber-dim);border:1px solid rgba(217,119,6,.25);border-radius:var(--r);padding:9px 12px;margin-bottom:14px;display:flex;align-items:center;gap:9px;cursor:pointer;}
.pb-wrap{margin-bottom:8px;}
.pb-label{display:flex;justify-content:space-between;margin-bottom:3px;font-size:11px;color:var(--text2);}
.pb{height:5px;background:var(--bg4);border-radius:99px;overflow:hidden;}
.pb-fill{height:100%;border-radius:99px;transition:width .4s;}
.sec-title{font-size:11px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.08em;margin-bottom:8px;}
.empty{text-align:center;padding:28px;color:var(--text3);font-size:12px;}
.alert-list{display:flex;flex-direction:column;gap:7px;}
.alert-item{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:10px 12px;cursor:pointer;transition:all .12s;}
.alert-item:hover{border-color:var(--border3);}
.a-ov{border-left:3px solid var(--red);}
.a-wk{border-left:3px solid var(--amber);}
.a-ic{border-left:3px solid var(--amber);}
.ai-head{display:flex;align-items:center;gap:7px;margin-bottom:4px;}
.ai-name{font-size:12px;font-weight:500;flex:1;}
.ai-meta{font-size:11px;color:var(--text3);display:flex;gap:7px;flex-wrap:wrap;}
.ov-days{font-size:11px;font-weight:600;color:var(--red);font-family:'IBM Plex Mono',monospace;}

/* ── GANTT ──────────────────────────────────────────────── */
/*
  NEW APPROACH: single overflow:auto scroll container.
  Label column = position:sticky left:0
  Header row   = position:sticky top:0
  No split-sync, no JS scroll hacks — pure CSS sticky.
*/
.gantt-wrap{display:flex;flex-direction:column;height:100%;overflow:hidden;background:var(--bg);}
.gantt-toolbar{display:flex;gap:8px;align-items:center;padding:8px 14px;border-bottom:1px solid var(--border);flex-shrink:0;flex-wrap:wrap;background:var(--bg2);}
.gantt-zoom{display:flex;background:var(--bg3);border:1px solid var(--border);border-radius:var(--r-sm);padding:2px;gap:1px;}
.gantt-zoom-btn{padding:3px 10px;border:none;background:none;color:var(--text3);font-size:11px;font-weight:500;cursor:pointer;border-radius:3px;font-family:'IBM Plex Sans',sans-serif;transition:all .12s;}
.gantt-zoom-btn.active{background:var(--bg2);color:var(--text);}
.gantt-nav-btn{padding:3px 10px;border:1px solid var(--border);background:var(--bg3);color:var(--text2);font-size:13px;font-weight:600;cursor:pointer;border-radius:var(--r-sm);font-family:'IBM Plex Sans',sans-serif;transition:all .12s;line-height:1;}
.gantt-nav-btn:hover{background:var(--bg4);color:var(--text);}

/* The single scroll container — scrolls both axes */
.gantt-scroll{flex:1;overflow:auto;position:relative;}
.gantt-scroll::-webkit-scrollbar{width:6px;height:6px;}
.gantt-scroll::-webkit-scrollbar-track{background:var(--bg3);}
.gantt-scroll::-webkit-scrollbar-thumb{background:var(--border2);border-radius:99px;}

/* The inner table that defines true width × height */
.gantt-table{border-collapse:collapse;table-layout:fixed;}

/* Header row — sticky top */
.gantt-table thead tr{position:sticky;top:0;z-index:20;}
.g-th-label{
  position:sticky;left:0;z-index:30;
  background:var(--bg3);
  width:230px;min-width:230px;max-width:230px;
  height:34px;
  padding:0 10px;
  font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text3);
  border-bottom:2px solid var(--border2);border-right:1px solid var(--border2);
  white-space:nowrap;vertical-align:middle;
}
.g-th-timeline{
  background:var(--bg3);
  height:34px;
  border-bottom:2px solid var(--border2);
  vertical-align:bottom;
  padding:0;
  /* width set inline per column */
}
/* Period cell inside header */
.g-period-cell{
  display:inline-block;height:34px;
  border-left:1px solid var(--border);
  padding:0 4px;font-size:10px;color:var(--text3);
  font-family:'IBM Plex Mono',monospace;white-space:nowrap;
  vertical-align:top;line-height:34px;
}
.g-period-cell.major{border-left:2px solid var(--border2);font-weight:600;color:var(--text2);}
.g-ev-label-cell{
  position:absolute;bottom:2px;font-size:9px;font-weight:700;
  white-space:nowrap;z-index:8;padding:1px 5px;border-radius:2px;pointer-events:none;
}

/* Body rows */
.g-tr-sec td{height:22px;background:var(--bg3);border-bottom:1px solid var(--border);}
.g-tr-sec .g-td-label{
  position:sticky;left:0;z-index:10;
  background:var(--bg3);
  padding:0 8px;font-size:9px;font-weight:600;text-transform:uppercase;
  letter-spacing:.07em;
  border-right:1px solid var(--border2);white-space:nowrap;vertical-align:middle;
}
.g-tr-task td{height:30px;border-bottom:1px solid var(--border);}
.g-tr-task:hover td{background:rgba(255,255,255,.015);}
.g-tr-task .g-td-label{
  position:sticky;left:0;z-index:10;
  background:var(--bg2);
  border-right:1px solid var(--border2);
  padding:0 8px;
  font-size:11px;white-space:nowrap;vertical-align:middle;cursor:pointer;
  transition:background .1s;
}
.g-tr-task:hover .g-td-label{background:var(--bg3);}
.g-td-label.lv2{padding-left:20px;font-size:10px;}
.g-td-label.lv3{padding-left:34px;font-size:10px;}
.g-label-inner{display:flex;align-items:center;gap:5px;max-width:210px;}
.g-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

/* Timeline cells */
.g-td-timeline{
  position:relative;vertical-align:middle;
  padding:0;
  /* background set per-column for grid lines */
}
/* Bars */
.g-bar{
  position:absolute;height:20px;top:50%;transform:translateY(-50%);
  border-radius:4px;cursor:pointer;z-index:4;
  display:flex;align-items:center;padding:0 6px;
  font-size:10px;white-space:nowrap;overflow:hidden;
  user-select:none;transition:box-shadow .1s;
}
.g-bar:hover{box-shadow:0 2px 8px var(--shadow);z-index:6;}
.g-bar.dragging{opacity:.85;box-shadow:0 4px 16px var(--shadow);z-index:20;cursor:grabbing;}
.g-bar-resize-l,.g-bar-resize-r{position:absolute;top:0;bottom:0;width:8px;cursor:col-resize;z-index:5;}
.g-bar-resize-l{left:0;border-radius:4px 0 0 4px;}
.g-bar-resize-r{right:0;border-radius:0 4px 4px 0;}
.g-bar-label{flex:1;overflow:hidden;text-overflow:ellipsis;font-weight:700;}
.g-bar-person{font-weight:400;opacity:.65;margin-left:4px;}
.g-bar-prog{position:absolute;left:0;top:0;bottom:0;border-radius:4px;opacity:.25;pointer-events:none;}
/* Vertical lines (today + events) — span full tbody height via a pseudo-overlay */
.g-vline{position:absolute;top:0;bottom:0;width:2px;pointer-events:none;z-index:3;}
.g-vline.today{background:var(--red);opacity:.7;}
.g-vline.event{opacity:.55;}

/* ── KANBAN ─────────────────────────────────────────────── */
.kanban{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;}
.kb-col{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);overflow:hidden;}
.kb-head{padding:9px 11px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;}
.kb-title{font-size:11px;font-weight:600;}
.kb-count{font-size:10px;color:var(--text3);background:var(--bg3);padding:1px 6px;border-radius:3px;font-family:'IBM Plex Mono',monospace;}
.kb-cards{padding:7px;display:flex;flex-direction:column;gap:5px;min-height:50px;}
.kb-card{background:var(--bg3);border:1px solid var(--border);border-radius:var(--r-sm);padding:8px 9px;cursor:pointer;transition:all .12s;position:relative;overflow:hidden;}
.kb-card:hover{border-color:var(--border3);transform:translateY(-1px);}
.kb-card.kb-inc{border-left:2px solid var(--amber);}
.kc-name{font-size:11px;font-weight:500;margin-bottom:4px;line-height:1.3;}
.kc-meta{display:flex;flex-wrap:wrap;gap:3px;}
.kc-stripe{position:absolute;right:0;top:0;bottom:0;width:3px;}
.kc-prog{margin-top:5px;height:3px;background:var(--bg4);border-radius:99px;overflow:hidden;}
.kc-prog-fill{height:100%;border-radius:99px;background:var(--green);}

/* ── TABLE ──────────────────────────────────────────────── */
.tbl-wrap{overflow-x:auto;width:100%;}
table{width:100%;border-collapse:collapse;}
thead th{text-align:left;padding:7px 9px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--text3);border-bottom:1px solid var(--border);white-space:nowrap;background:var(--bg2);position:sticky;top:0;z-index:1;cursor:pointer;user-select:none;}
thead th:hover{color:var(--text);}
thead th .sort-arrow{margin-left:4px;opacity:.4;font-size:9px;}
thead th.sorted .sort-arrow{opacity:1;color:var(--accent2);}
tbody td{padding:7px 9px;border-bottom:1px solid var(--border);font-size:11px;vertical-align:middle;}
tbody tr:hover td{background:var(--bg3);}
.cell-edit{background:none;border:none;color:var(--text);font-family:'IBM Plex Sans',sans-serif;font-size:11px;padding:1px 3px;border-radius:3px;cursor:text;width:100%;outline:none;}
.cell-edit:focus{background:var(--bg4);border:1px solid var(--accent);outline:none;}
.cell-select{background:none;border:none;color:var(--text);font-family:'IBM Plex Sans',sans-serif;font-size:11px;cursor:pointer;border-radius:3px;padding:1px 3px;outline:none;}
.cell-select:focus{background:var(--bg4);border:1px solid var(--accent);}
td.editable:hover .cell-edit,td.editable:hover .cell-select{background:var(--bg4);}

/* ── CAPACITY ───────────────────────────────────────────── */
.cap-warn{background:var(--red-dim);border:1px solid rgba(229,57,53,.25);border-radius:var(--r);padding:10px 12px;margin-bottom:10px;}
.cap-ok{background:var(--green-dim);border:1px solid rgba(34,197,94,.2);border-radius:var(--r);padding:10px 12px;margin-bottom:10px;}
.cap-urgent{background:var(--amber-dim);border:1px solid rgba(217,119,6,.25);border-radius:var(--r);padding:10px 12px;margin-bottom:10px;}

/* ── KEY EVENTS ─────────────────────────────────────────── */
.ke-item{display:flex;align-items:center;gap:9px;padding:9px 11px;background:var(--bg3);border:1px solid var(--border);border-radius:var(--r-sm);margin-bottom:5px;}

/* ── MODAL ──────────────────────────────────────────────── */
.modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.75);display:none;align-items:flex-start;justify-content:center;z-index:1000;padding:36px 18px;overflow-y:auto;}
.modal-backdrop.open{display:flex;}
.modal{background:var(--bg2);border:1px solid var(--border2);border-radius:12px;width:640px;max-width:100%;box-shadow:0 24px 64px var(--shadow);}
.modal-head{padding:16px 20px 12px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;}
.modal-head h2{font-size:14px;font-weight:600;}
.modal-x{background:none;border:none;color:var(--text3);cursor:pointer;font-size:16px;padding:2px 5px;border-radius:4px;}
.modal-x:hover{background:var(--bg3);color:var(--text);}
.modal-body{padding:16px 20px;}
.m-tabs{display:flex;gap:1px;margin-bottom:14px;background:var(--bg3);border:1px solid var(--border);border-radius:var(--r-sm);padding:2px;}
.m-tab{flex:1;padding:5px;border:none;background:none;color:var(--text3);font-size:11px;font-weight:500;cursor:pointer;border-radius:3px;font-family:'IBM Plex Sans',sans-serif;transition:all .12s;}
.m-tab.active{background:var(--bg2);color:var(--text);}
.m-tc{display:none;}.m-tc.active{display:block;}
.modal-foot{padding:12px 20px;border-top:1px solid var(--border);display:flex;gap:7px;justify-content:flex-end;align-items:center;}
.fg{margin-bottom:11px;}
.fl{font-size:10px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.07em;margin-bottom:4px;display:flex;align-items:center;gap:3px;}
.req{color:var(--red);font-size:12px;}
.fi,.fs,.ft{width:100%;background:var(--bg3);border:1px solid var(--border);color:var(--text);padding:6px 9px;border-radius:var(--r-sm);font-size:12px;font-family:'IBM Plex Sans',sans-serif;outline:none;transition:border-color .12s;}
.fi:focus,.fs:focus,.ft:focus{border-color:var(--accent);}
.fi.err{border-color:var(--red)!important;}
.ft{resize:vertical;min-height:55px;}
.fr2{display:grid;grid-template-columns:1fr 1fr;gap:9px;}
.fr3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:9px;}
.inc-notice{background:var(--amber-dim);border:1px solid rgba(217,119,6,.2);border-radius:var(--r-sm);padding:7px 9px;font-size:11px;color:var(--amber);margin-bottom:12px;display:none;}
.inc-notice.show{display:block;}
.linked-task-row{display:flex;align-items:center;gap:7px;padding:5px 7px;background:var(--bg3);border:1px solid var(--border);border-radius:var(--r-sm);margin-bottom:4px;}
.linked-task-name{flex:1;font-size:11px;}
.linked-task-rm{background:none;border:none;color:var(--text3);cursor:pointer;font-size:12px;padding:1px 4px;}
.linked-task-rm:hover{color:var(--red);}
.task-search-results{background:var(--bg3);border:1px solid var(--border);border-radius:var(--r-sm);max-height:150px;overflow-y:auto;margin-top:4px;}
.tsr-item{padding:6px 9px;font-size:11px;cursor:pointer;border-bottom:1px solid var(--border);}
.tsr-item:last-child{border-bottom:none;}
.tsr-item:hover{background:var(--bg4);}
.ai-spin{display:flex;align-items:center;gap:7px;padding:9px;font-size:11px;color:var(--text3);}
.ai-spin::before{content:'';width:11px;height:11px;border:2px solid var(--border3);border-top-color:var(--accent);border-radius:50%;animation:spin .6s linear infinite;flex-shrink:0;}
@keyframes spin{to{transform:rotate(360deg);}}
.simple-modal{background:var(--bg2);border:1px solid var(--border2);border-radius:12px;width:420px;max-width:100%;box-shadow:0 24px 64px var(--shadow);}
.hierarchy-info{background:var(--bg3);border:1px solid var(--border);border-radius:var(--r-sm);padding:8px 10px;font-size:11px;color:var(--text2);margin-bottom:11px;display:flex;align-items:center;gap:7px;}
.hierarchy-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:99px;font-size:10px;font-weight:600;}
/* Date shift notice */
.date-shift-notice{background:var(--accent-dim);border:1px solid rgba(91,106,240,.25);border-radius:var(--r-sm);padding:6px 10px;font-size:11px;color:var(--accent2);margin-bottom:10px;display:none;}
.date-shift-notice.show{display:block;}

::-webkit-scrollbar{width:4px;height:4px;}
::-webkit-scrollbar-track{background:transparent;}
::-webkit-scrollbar-thumb{background:var(--border2);border-radius:99px;}
