:root{--ink:#14172b;--side:#12152a;--side2:#1c2040;--paper:#f5f6fb;--card:#fff;--line:#e6e8f0;--text:#22263d;--muted:#7b809a;--accent:#1e5bf0;--accent-d:#1748c9;--red:#dc2626;--amber:#d97706;--green:#059669;--blue:#2563eb;--r:10px}
*{box-sizing:border-box}
html,body{height:100%;margin:0}
body{font:14px/1.5 'Plus Jakarta Sans',system-ui,Segoe UI,Arial,sans-serif;background:var(--paper);color:var(--text)}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.muted{color:var(--muted)}
#app{display:grid;grid-template-columns:260px 1fr;height:100vh}
#app>#side,#app>main{min-width:0}
main{display:flex;flex-direction:column;min-width:0;height:100vh;overflow:hidden}
#view{min-width:0;max-width:100%;flex:1;overflow:auto}
#side{background:var(--side);color:#c9cdea;display:flex;flex-direction:column;overflow:auto}
.brand{display:flex;gap:10px;align-items:center;padding:18px 18px 14px;color:#fff;font-weight:800;font-size:16px}
.brand-mark{width:32px;height:32px;border-radius:9px;background:linear-gradient(135deg,#6d66ff,#1748c9);display:grid;place-items:center;font-weight:800;color:#fff}
.brand-mark.big{width:52px;height:52px;font-size:24px;border-radius:14px}
.nav{padding:4px 10px}
.nav h4{margin:16px 8px 6px;font-size:12px;font-weight:600;color:#8388b3;display:flex;justify-content:space-between;align-items:center}
.nav a{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:8px;color:#c9cdea;text-decoration:none;cursor:pointer;font-weight:500}
.nav a:hover{background:var(--side2)}
.nav a.on{background:var(--accent);color:#fff}
.nav a .cnt{margin-left:auto;font-size:11px;background:#ffffff1f;border-radius:99px;padding:0 7px}
.nav .plus{background:none;border:0;color:#8388b3;cursor:pointer;font-size:18px;line-height:1}
.me{margin-top:auto;padding:14px;border-top:1px solid #ffffff14;display:flex;gap:10px;align-items:center}
.me .who{flex:1;min-width:0}.me b{display:block;color:#fff;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.me small{color:#8388b3}
.me a{color:#8388b3;text-decoration:none;font-size:12px}.me a:hover{color:#fff}
.top{display:flex;align-items:center;gap:14px;padding:12px 24px;background:var(--card);border-bottom:1px solid var(--line)}
.top h1{font-size:18px;margin:0;font-weight:700;white-space:nowrap;color:var(--ink)}
.search{flex:1;max-width:380px;margin-left:12px}
.search input{width:100%;padding:8px 12px;border:1px solid var(--line);border-radius:8px;background:var(--paper)}
.top-actions{margin-left:auto;display:flex;gap:10px;align-items:center}
#view{flex:1;overflow:auto;padding:22px 24px}
.menu-btn{display:none}
.btn{border:1px solid var(--line);background:var(--card);padding:8px 14px;border-radius:8px;cursor:pointer;font-weight:600}
.btn:hover{border-color:#b9bdd6}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{background:var(--accent-d)}
.btn.danger{color:var(--red)}
.btn.block{width:100%;padding:11px}
.icon-btn{border:1px solid var(--line);background:var(--card);border-radius:8px;width:36px;height:36px;cursor:pointer;position:relative}
.badge{position:absolute;top:-6px;right:-6px;background:var(--red);color:#fff;border-radius:99px;font-size:10px;min-width:18px;height:18px;display:grid;place-items:center;font-weight:700}
.bell-wrap{position:relative}
.pop{position:absolute;right:0;top:44px;width:340px;max-height:420px;overflow:auto;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 32px #0002;z-index:30}
.pop .item{padding:11px 14px;border-bottom:1px solid var(--line);cursor:pointer}.pop .item:hover{background:var(--paper)}
.pop .item.unread{border-left:3px solid var(--accent)}
.pop .head{padding:10px 14px;display:flex;justify-content:space-between;font-weight:700}
.av{width:34px;height:34px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:15px;line-height:1;letter-spacing:0;text-align:center;vertical-align:middle;flex:none;user-select:none}
.av.sm{width:28px;height:28px;font-size:13px}
td .av{margin-right:8px}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;margin-bottom:22px}
.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px}
.stat b{font-size:26px;display:block;color:var(--ink);line-height:1.1}.stat span{color:var(--muted);font-size:13px}
.stat.bad b{color:var(--red)}
.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--r)}
.panel>h3{margin:0;padding:14px 16px;font-size:14px;border-bottom:1px solid var(--line)}
.grid2{display:grid;grid-template-columns:2fr 1fr;gap:18px}
.row{display:flex;align-items:center;gap:12px;padding:11px 16px;border-bottom:1px solid var(--line);cursor:pointer}
.row:last-child{border:0}.row:hover{background:var(--paper)}
.row .t{flex:1;min-width:0}.row .t b{display:block;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.row.done .t b{text-decoration:line-through;color:var(--muted)}
.empty{padding:26px 16px;color:var(--muted);text-align:center}
.chip{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;padding:2px 9px;border-radius:99px;background:var(--paper);border:1px solid var(--line);white-space:nowrap}
.p-urgent{color:var(--red);background:#dc26261a;border-color:transparent}.p-high{color:var(--amber);background:#d977061a;border-color:transparent}.p-medium{color:var(--blue);background:#2563eb1a;border-color:transparent}.p-low{color:var(--muted)}
.s-todo{color:var(--muted)}.s-in_progress{color:var(--blue)}.s-review{color:var(--amber)}.s-done{color:var(--green)}
.late{color:var(--red);font-weight:600}
.toolbar{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:16px;align-items:center}
select,input[type=text],input[type=email],input[type=password],input[type=date],input[type=search],textarea{padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--card);width:100%}
.toolbar select{width:auto}
.board{display:grid;grid-template-columns:repeat(4,minmax(240px,1fr));gap:14px;align-items:start;overflow-x:auto;padding-bottom:10px}
.col{background:#7b809a14;border-radius:12px;padding:10px;min-height:200px}
.col.over{outline:2px dashed var(--accent)}
.col h3{margin:2px 6px 10px;font-size:13px;display:flex;justify-content:space-between}
.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:11px 12px;margin-bottom:9px;cursor:grab}
.card:hover{border-color:#b9bdd6}
.card b{display:block;font-weight:600;margin-bottom:8px}
.card .meta{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted)}
.card .meta .sp{margin-left:auto}
table{width:100%;border-collapse:collapse}
th{text-align:left;font-size:12px;color:var(--muted);font-weight:600;padding:10px 14px;border-bottom:1px solid var(--line)}
td{padding:10px 14px;border-bottom:1px solid var(--line)}
tbody tr{cursor:pointer}tbody tr:hover{background:var(--paper)}
.chat{display:grid;grid-template-columns:1fr 300px;gap:18px;height:calc(100vh - 130px)}
.chat-main{display:flex;flex-direction:column;min-height:0}
.msgs{flex:1;overflow:auto;padding:14px 16px}
.msg{display:flex;gap:10px;margin-bottom:14px}
.msg b{font-weight:700}.msg small{color:var(--muted);margin-left:6px}
.msg p{margin:2px 0 0;white-space:pre-wrap;word-break:break-word}
.composer{display:flex;gap:10px;padding:12px;border-top:1px solid var(--line)}
.composer textarea{resize:none;height:44px}
.modal{position:fixed;inset:0;background:#0a0c1c99;display:grid;place-items:center;z-index:50;padding:16px}
.modal[hidden]{display:none}
.dialog{background:var(--card);border-radius:14px;width:100%;max-width:720px;max-height:92vh;overflow:auto;box-shadow:0 20px 60px #0006}
.dialog.narrow{max-width:460px}
.dialog header{padding:16px 20px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}
.dialog header h2{margin:0;font-size:17px}
.dialog .body{padding:18px 20px}
.dialog footer{padding:14px 20px;border-top:1px solid var(--line);display:flex;gap:10px;justify-content:flex-end}
.dialog footer .l{margin-right:auto}
.f{display:grid;gap:14px}.f2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
label{display:block;font-weight:600;font-size:13px}label>*:not(span){margin-top:5px;font-weight:400}
.cm{display:flex;gap:10px;margin:12px 0}.cm p{margin:2px 0 0;white-space:pre-wrap}
.act{font-size:12px;color:var(--muted);padding:3px 0}
.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:var(--ink);color:var(--paper);padding:10px 18px;border-radius:10px;z-index:80;font-weight:600}
.toast.err{background:var(--red);color:#fff}
.toast[hidden]{display:none}
.alert{background:#dc26261a;color:var(--red);padding:10px 12px;border-radius:8px;margin-bottom:14px;font-weight:600}
.login-body{background:var(--side);min-height:100vh;display:grid;place-items:center;padding:20px}
.login-wrap{display:grid;grid-template-columns:1.1fr 1fr;max-width:920px;width:100%;background:var(--card);border-radius:18px;overflow:hidden;box-shadow:0 30px 80px #0008}
.login-art{background:linear-gradient(160deg,#2a2578,#12152a);color:#fff;padding:44px}
.login-art h1{font-size:28px;line-height:1.2;margin:22px 0 12px}.login-art p{color:#b4b8e0}
.login-card{padding:44px;display:grid;gap:14px;align-content:center}
.login-card h2{margin:0;font-size:24px}
@media(max-width:900px){
 #app{grid-template-columns:1fr}
 #side{position:fixed;inset:0 auto 0 0;width:270px;z-index:40;transform:translateX(-100%);transition:transform .2s}
 body.nav-open #side{transform:none}
 .menu-btn{display:block}.search{display:none}
 .grid2,.chat{grid-template-columns:1fr}.chat{height:auto}.msgs{max-height:60vh}
 .f2{grid-template-columns:1fr}.top{padding:10px 14px}#view{padding:14px}
 .login-wrap{grid-template-columns:1fr}.login-art{display:none}.login-card{padding:30px}
}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}

/* animated AI background — dark canvas behind a clean white sign-in card */

#app{position:relative}
#view{background:transparent}
.login-body{background:transparent}
.login-wrap{position:relative;z-index:1;background:#fff;border:1px solid var(--line);box-shadow:0 30px 80px -20px #00000066}
.login-art{background:linear-gradient(160deg,#f7f9ff 0%,#fff 100%);color:var(--ink);border-right:1px solid var(--line)}
.login-art p{color:var(--muted)}
.login-art .caret::after{background:var(--ink)}
.brand-mark.big{animation:pulseMark 3s ease-in-out infinite}
@keyframes pulseMark{0%,100%{box-shadow:0 0 0 0 #6d66ff88}50%{box-shadow:0 0 0 14px #6d66ff00}}
.ai-status{display:inline-flex;align-items:center;gap:8px;margin-top:22px;font-size:12px;font-weight:600;color:#b4b8e0;background:#ffffff14;padding:6px 12px;border-radius:99px}
.ai-status i{width:8px;height:8px;border-radius:50%;background:#34d399;animation:blink 1.4s infinite}
@keyframes blink{50%{opacity:.25}}
.caret::after{content:"";display:inline-block;width:2px;height:1em;background:#fff;margin-left:3px;vertical-align:-2px;animation:blink 1s steps(1) infinite}
@media(prefers-reduced-motion:reduce){.brand-mark.big,.ai-status i,.caret::after{animation:none}}

/* ===== Advanced dashboard ===== */
.nav a svg{flex:none;opacity:.9}
.nav a{padding:8px 10px}
.top{backdrop-filter:blur(10px);background:color-mix(in srgb,var(--card) 88%,transparent)}
.btn.light{background:#fff;color:#1748c9;border-color:#fff;display:inline-flex;align-items:center;gap:7px}
.btn.light:hover{background:#eef0ff}
.btn.ghost{background:#ffffff1f;color:#fff;border-color:#ffffff40;display:inline-flex;align-items:center;gap:7px}
.btn.ghost:hover{background:#ffffff33}
.hero{position:relative;display:grid;grid-template-columns:1.3fr 1fr;align-items:center;gap:10px;padding:30px 34px;border-radius:20px;color:#fff;overflow:hidden;margin-bottom:18px;
 background:radial-gradient(120% 140% at 100% 0%,#7c6cff 0%,transparent 55%),linear-gradient(135deg,#1748c9 0%,#1e1b6e 100%);box-shadow:0 18px 40px -18px #1748c9aa}
.hero-k{font-size:13px;font-weight:600;color:#c7cbff}
.hero h2{margin:6px 0 8px;font-size:30px;line-height:1.15;font-weight:800;letter-spacing:-.02em}
.hero p{margin:0 0 20px;color:#dfe2ff;max-width:46ch;font-size:15px}
.hero-a{display:flex;gap:10px;flex-wrap:wrap}
.hero-art{width:100%;max-width:400px;justify-self:end;filter:drop-shadow(0 12px 24px #0004)}
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}
.kpi{--c:#1e5bf0;text-align:left;border:1px solid var(--line);background:var(--card);border-radius:16px;padding:16px 18px;cursor:pointer;display:grid;gap:2px;position:relative;overflow:hidden;transition:transform .15s,border-color .15s}
.kpi:hover{transform:translateY(-2px);border-color:var(--c)}
.kpi::after{content:"";position:absolute;right:-24px;top:-24px;width:90px;height:90px;border-radius:50%;background:var(--c);opacity:.09}
.kpi.red{--c:#ef4444}.kpi.grn{--c:#10b981}.kpi.amb{--c:#f59e0b}
.kpi-ic{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;color:var(--c);background:color-mix(in srgb,var(--c) 14%,transparent);margin-bottom:10px}
.kpi-n{font-size:30px;font-weight:800;color:var(--ink);line-height:1;letter-spacing:-.02em}
.kpi-l{color:var(--muted);font-size:13px;font-weight:500;margin-top:4px}
.dgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;align-items:start}
.dc{background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden}
.dc.span2{grid-column:span 2}
.dc h3{margin:0;padding:15px 18px;font-size:14px;font-weight:700;display:flex;align-items:center;gap:8px;color:var(--ink)}
.dc h3 svg{color:var(--accent)}
.dc h3.sub{padding-top:6px}
.more{margin-left:auto;font-size:12px;font-weight:600;color:var(--accent);cursor:pointer}
.dc .row{padding:11px 18px}
.dc .empty{padding:30px 16px}.empty svg{opacity:.4}
.donut-wrap{display:flex;align-items:center;gap:18px;padding:4px 18px 18px;flex-wrap:wrap;justify-content:center}
.d-n{font-size:26px;font-weight:800;fill:var(--ink)}.d-l{font-size:11px;fill:var(--muted)}
.legend{list-style:none;margin:0;padding:0;display:grid;gap:8px;flex:1;min-width:120px}
.legend li{display:flex;align-items:center;gap:8px;font-size:13px}.legend b{margin-left:auto}
.legend i{width:10px;height:10px;border-radius:3px}
.bars{width:100%;padding:0 12px 6px}.b-l{font-size:10px;fill:var(--muted)}.b-v{font-size:10px;font-weight:700;fill:var(--ink)}
.pbar{display:grid;grid-template-columns:62px 1fr 26px;gap:10px;align-items:center;padding:5px 18px;font-size:13px}
.pbar>div{height:8px;background:var(--line);border-radius:9px;overflow:hidden}.pbar i{display:block;height:100%;border-radius:9px}.pbar b{text-align:right}
.pbar:last-child{padding-bottom:16px}
.dl{display:flex;align-items:center;gap:12px;padding:10px 18px;cursor:pointer}.dl:hover{background:var(--paper)}
.dl .t{flex:1;min-width:0}.dl .t b{display:block;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dl-d{width:44px;text-align:center;border-radius:10px;background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent);padding:4px 0;font-size:11px;font-weight:600;line-height:1.15}
.dl-d b{display:block;font-size:17px;font-weight:800}
.wl{display:grid;grid-template-columns:22px 1fr 90px 22px;gap:10px;align-items:center;padding:8px 18px;font-size:13px}
.wl:last-child{padding-bottom:16px}
.wl-n{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}
.wl-b{height:7px;background:var(--line);border-radius:9px;overflow:hidden}.wl-b i{display:block;height:100%;background:linear-gradient(90deg,#6ea0ff,#1e5bf0);border-radius:9px}
.wl b{text-align:right}
.feed{display:flex;gap:12px;padding:10px 18px;border-top:1px solid var(--line);cursor:pointer}.feed:hover{background:var(--paper)}
.ft{font-weight:600;color:var(--accent)}
.row{transition:background .12s}
.chip{font-size:11.5px}
@media(max-width:1100px){.kpis{grid-template-columns:repeat(2,1fr)}.dgrid{grid-template-columns:1fr 1fr}.dc.span2{grid-column:span 2}}
@media(max-width:700px){.hero{grid-template-columns:1fr;padding:22px}.hero-art{display:none}.hero h2{font-size:24px}.dgrid{grid-template-columns:1fr}.dc.span2{grid-column:auto}.kpi-n{font-size:24px}}

/* roles, access, settings */
.role-admin{color:#dc2626;background:#dc26261a;border-color:transparent}.role-manager{color:#1e5bf0;background:#1e5bf01a;border-color:transparent}.role-member{color:var(--muted)}
.tog{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid var(--line);cursor:pointer}
.sw{-webkit-appearance:none;appearance:none;flex:none;width:40px!important;height:23px;border-radius:99px;background:#9aa0bd66;position:relative;cursor:pointer;transition:background .15s;border:0!important;padding:0!important;margin:0!important}
.sw::after{content:"";position:absolute;top:3px;left:3px;width:17px;height:17px;border-radius:50%;background:#fff;transition:left .15s;box-shadow:0 1px 3px #0004}
.sw:checked{background:var(--accent)}.sw:checked::after{left:20px}.sw:disabled{opacity:.55;cursor:not-allowed}
.set-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}
.set-grid .panel>h3{display:flex;align-items:center;gap:8px}.set-grid h3 svg{color:var(--accent)}
.acl{margin-top:8px;border:1px solid var(--line);border-radius:10px;max-height:320px;overflow:auto}
.acl-r{display:flex;align-items:center;gap:10px;padding:9px 12px;border-bottom:1px solid var(--line);cursor:pointer;font-weight:500}.acl-r:last-child{border:0}.acl-r span{flex:1}
@media(max-width:1000px){.set-grid{grid-template-columns:1fr}}

/* ===== QTask white theme + logo ===== */
:root{--paper:#f6f8fc;--card:#fff;--ink:#0b1b3a;--text:#1f2a44;--muted:#6b7594;--line:#e5e9f2;--accent:#1e5bf0;--accent-d:#1748c9;--orange:#f97316}
body{background:#f6f8fc}
#side{background:#fff;border-right:1px solid var(--line);color:#4b5573}
.side-logo{display:block;padding:20px 20px 12px}.side-logo img{display:block;width:172px;height:auto}
.nav h4{color:#8b93b0}.nav .plus{color:#8b93b0}.nav .plus:hover{color:var(--accent)}
.nav a{color:#4b5573}.nav a:hover{background:#f1f5fd}
.nav a.on{background:#e8f0ff;color:var(--accent)}
.nav a .cnt{background:#0b1b3a12;color:#4b5573}.nav a.on .cnt{background:#1e5bf022;color:var(--accent)}
.me{border-top:1px solid var(--line)}.me b{color:var(--ink)}.me small,.me a{color:var(--muted)}.me a:hover{color:var(--accent)}
.top{background:#fff}
.hero{background:radial-gradient(90% 130% at 100% 0%,#3b82f6 0%,transparent 60%),radial-gradient(60% 90% at 0% 100%,#f9731633 0%,transparent 70%),linear-gradient(135deg,#1e5bf0 0%,#0b2a8a 100%);box-shadow:0 18px 40px -20px #1e5bf099}
.btn.light{color:#1748c9}.btn.light:hover{background:#eaf1ff}
.kpi-l,.d-l{color:var(--muted)}
/* login: white (dashboard theme only — login page keeps its dark styling above) */
.login-logo{width:250px;max-width:100%;height:auto;display:block}
.caret::after{background:var(--orange)}
.ai-status{background:#e8f0ff;color:#1748c9}.ai-status i{background:var(--orange)}
.form-logo{display:none;width:170px;margin-bottom:6px}
@media(max-width:900px){.form-logo{display:block}}

/* fixes: hidden badge + notification panel layering */
[hidden]{display:none!important}
.top{position:relative;z-index:40}
.bell-wrap{z-index:41}
.pop{z-index:60;box-shadow:0 18px 44px -12px #0b1b3a44;border-radius:14px}
.pop .head{border-bottom:1px solid var(--line)}
.pop .head a{color:var(--accent);font-weight:600;font-size:12px;text-decoration:none}

/* bigger logo */
#app{grid-template-columns:290px 1fr}
.side-head{position:relative}
.side-logo{padding:22px 20px 14px}.side-logo img{width:235px;max-width:100%}
@media(max-width:900px){.side-logo img{width:210px}}

/* ===== clean icon buttons, task IDs, delete ===== */
.icon-btn:not(.menu-btn){display:inline-flex;align-items:center;justify-content:center;color:var(--muted);transition:color .12s,border-color .12s,background .12s}
.icon-btn:not(.menu-btn):hover{color:var(--ink);border-color:#b9bdd6;background:var(--paper)}
.btn-ic{display:inline-flex;align-items:center;gap:7px}
.btn.danger{display:inline-flex;align-items:center;gap:7px}
.btn.danger:hover{border-color:var(--red);background:#dc26260d}
.btn.danger-solid{display:inline-flex;align-items:center;gap:7px;background:var(--red);border-color:var(--red);color:#fff}
.btn.danger-solid:hover{background:#b91c1c;border-color:#b91c1c}

.ib{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;flex:none;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--muted);cursor:pointer;transition:color .12s,background .12s,border-color .12s}
.ib:hover{background:var(--paper);border-color:var(--line);color:var(--ink)}
.ib.sm{width:26px;height:26px;border-radius:7px}
.ib.del:hover{background:#dc26261a;border-color:transparent;color:var(--red)}
.ib.warn:hover{background:#d977061a;border-color:transparent;color:var(--amber)}
.ib.ok:hover{background:#0596691a;border-color:transparent;color:var(--green)}
.ib svg{display:block}
td.acts{white-space:nowrap;text-align:right;width:1%}
td.acts .ib+.ib{margin-left:2px}
.tid{display:inline-flex;align-items:center;font:600 11.5px/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:var(--muted);background:var(--paper);border:1px solid var(--line);border-radius:6px;padding:4px 6px;white-space:nowrap;letter-spacing:.01em}
.tid.lg{font-size:13px;padding:4px 8px;vertical-align:2px;margin-left:4px}
.row>.tid{min-width:44px;justify-content:center}
.card .ch{display:flex;align-items:center;justify-content:space-between;min-height:26px;margin-bottom:6px}
.cc{display:inline-flex;align-items:center;gap:4px;margin-right:6px;color:var(--muted)}
.cc svg{display:block}
.del-note{display:flex;gap:14px;align-items:flex-start}
.del-note p{margin:6px 0 0}
.del-note b{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.del-ic{flex:none;width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:#dc26261a;color:var(--red)}
.nav .plus{display:grid;place-items:center;width:22px;height:22px;border-radius:6px}
.nav .plus:hover{background:#f1f5fd}

.ch-h{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.ch-acts{margin-left:auto;display:flex;align-items:center;gap:4px}
a.btn{display:inline-flex;align-items:center;gap:7px;text-decoration:none;color:inherit}
.btn svg{flex:none}
.preset-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px;padding:10px 14px;border:1px solid var(--line);border-left:4px solid var(--accent,#1e5bf0);border-radius:10px;background:var(--card)}
#side nav a,#side .side-logo,.more,.kpi{-webkit-tap-highlight-color:transparent}
#side nav a{text-decoration:none;cursor:pointer}

/* =====================================================================
   MOBILE / RESPONSIVE  (kept last so it wins over the earlier theme rules)
   ===================================================================== */
#app{height:100vh;height:100dvh}
main{height:100vh;height:100dvh}
.login-body{min-height:100vh;min-height:100dvh}
.scrim,.icon-btn.search-btn{display:none}
.top h1{overflow:hidden;text-overflow:ellipsis;min-width:0}
button,a,.row,.card,tbody tr,.kpi,.dl,.feed{touch-action:manipulation}

/* ---- tablet & phone: slide-in menu ---- */
@media(max-width:900px){
 #app{grid-template-columns:1fr}                       /* the desktop 290px column was leaking in here */
 #side{width:min(300px,86vw);z-index:70;visibility:hidden;transition:transform .22s ease,visibility 0s .22s;padding-bottom:env(safe-area-inset-bottom)}
 body.nav-open #side{visibility:visible;transition-delay:0s;box-shadow:14px 0 40px #0b1b3a40}
 body.nav-open{overflow:hidden}
 .scrim{display:block;position:fixed;inset:0;z-index:65;background:#0b1b3a66;opacity:0;pointer-events:none;transition:opacity .2s}
 body.nav-open .scrim{opacity:1;pointer-events:auto}
 .side-logo{padding:18px 20px 10px}.side-logo img{width:190px}
 .me{padding-bottom:calc(14px + env(safe-area-inset-bottom))}

 .menu-btn{display:inline-flex;align-items:center;justify-content:center;flex:none}
 .icon-btn.search-btn{display:inline-flex}
 .top{flex-wrap:wrap;gap:10px;padding:10px max(14px,env(safe-area-inset-right)) 10px max(14px,env(safe-area-inset-left));padding-top:calc(10px + env(safe-area-inset-top))}
 .top h1{flex:1 1 0;font-size:17px}
 .top-actions{margin-left:0;gap:8px}
 .search{display:none;order:9;flex:1 1 100%;max-width:none;margin:0}
 body.search-open .search{display:block}
 body.search-open #sbtn{color:var(--accent);border-color:var(--accent)}

 /* notification panel: full-width sheet under the header instead of running off the left edge */
 .bell-wrap{position:static}
 .pop{left:12px;right:12px;top:100%;width:auto;max-height:70vh;max-height:70dvh;margin-top:6px}

 #view{padding:14px max(14px,env(safe-area-inset-right)) calc(20px + env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left))}

 /* inputs at 16px stop iOS Safari zooming the page on focus */
 input,select,textarea{font-size:16px}
 .toolbar select{flex:1 1 140px;min-width:0}
 .toolbar .btn{flex:1 1 auto;justify-content:center}

 /* board: swipeable columns */
 .board{grid-template-columns:repeat(4,min(82vw,310px));scroll-snap-type:x mandatory;scroll-padding-left:14px;margin:0 -14px;padding:0 14px 12px;-webkit-overflow-scrolling:touch}
 .col{scroll-snap-align:start}

 /* channel chat */
 .chat{gap:14px}
 .chat-main{height:calc(100vh - 120px);height:calc(100dvh - 120px);min-height:380px}
 .msgs{max-height:none}
 .composer{padding-bottom:calc(12px + env(safe-area-inset-bottom))}

 .toast{bottom:calc(20px + env(safe-area-inset-bottom));left:16px;right:16px;transform:none;width:auto;text-align:center}
}

/* ---- phones ---- */
@media(max-width:700px){
 /* task rows (Home, My tasks, channel): id + title on line one, meta underneath */
 .row,.dc .row{position:relative;flex-wrap:wrap;gap:6px 10px;padding:12px 14px}
 .row .t{flex:1 1 calc(100% - 64px);padding-right:30px}
 .row .t+*{margin-left:54px}
 .row .ib{position:absolute;top:6px;right:6px;margin:0}
 .row .t b{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}

 /* All tasks table → stacked cards */
 table.tl thead,table.tm thead{display:none}
 table.tl,table.tl tbody,table.tl tr,table.tl td,table.tm,table.tm tbody,table.tm tr,table.tm td{display:block}
 table.tl tbody tr,table.tm tbody tr{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:12px 14px;border-bottom:1px solid var(--line)}
 table.tl tbody tr:last-child,table.tm tbody tr:last-child{border-bottom:0}
 table.tl td,table.tm td{padding:0;border:0;width:auto}
 table.tl tbody tr{position:relative}
 table.tl td:empty{display:none}
 table.tl td.empty{flex:1 1 100%;padding:26px 0;text-align:center}
 table.tl td:nth-child(2){order:-1;flex:1 1 100%;min-width:0;font-size:14.5px;padding-right:34px}   /* title first, full width */
 table.tl td:nth-child(1){order:1}                                                               /* then #id · channel · due */
 table.tl td:nth-child(3){order:2;color:var(--muted);font-size:13px}
 table.tl td:nth-child(7){order:3;font-size:13px}
 table.tl td:nth-child(5){order:4}                                                               /* then priority · status · assignee */
 table.tl td:nth-child(6){order:5}
 table.tl td:nth-child(4){order:6;font-size:13px}
 table.tl td.acts{position:absolute;top:6px;right:6px;margin:0}
 /* Team table → stacked cards */
 table.tm td:nth-child(1){flex:1 1 100%}
 table.tm td:nth-child(2){flex:1 1 100%;color:var(--muted);word-break:break-all;margin-top:-4px}
 table.tm td:nth-child(4)::after{content:" open";color:var(--muted)}
 table.tm td:nth-child(5)::before{content:"Seen: "}
 table.tm td:nth-child(5){font-size:12.5px}
 table.tm td.acts{margin-left:auto}
 #elog td{word-break:break-word}

 /* dashboard */
 .hero{padding:20px}.hero p{font-size:14px}.hero-a .btn{flex:1 1 auto;justify-content:center}
 .kpis{gap:10px}.kpi{padding:14px}
 .set-grid .panel>h3,.dc h3{padding-left:14px;padding-right:14px}
 .pbar,.wl,.dl,.feed{padding-left:14px;padding-right:14px}
 .pbar{grid-template-columns:56px 1fr 24px}
 .wl{grid-template-columns:22px 1fr 64px 22px}
 .preset-bar{padding:10px 12px}

 /* dialogs → bottom sheets */
 .modal{padding:0;place-items:end center}
 .dialog,.dialog.narrow{max-width:none;border-radius:18px 18px 0 0;max-height:94vh;max-height:94dvh}
 .dialog header{position:sticky;top:0;z-index:1;background:var(--card);padding:14px 16px}
 .dialog .body{padding:16px}
 .dialog footer{position:sticky;bottom:0;z-index:1;background:var(--card);flex-wrap:wrap;padding:12px 16px calc(12px + env(safe-area-inset-bottom))}
 .dialog footer .btn{flex:1 1 auto;justify-content:center}
 .dialog footer .l{margin-right:0}
 .del-note{gap:12px}

 /* sign-in */
 .login-body{padding:16px max(16px,env(safe-area-inset-right)) 16px max(16px,env(safe-area-inset-left))}
 .login-wrap{border-radius:16px}
 .login-card{padding:28px 22px}
 .login-card h2{font-size:22px}
}

/* ---- small phones: icon-only "New task" ---- */
@media(max-width:560px){
 .btn-ic .lbl{display:none}
 .top .btn-ic{width:40px;height:40px;padding:0;gap:0;justify-content:center}
 .top h1{font-size:16px}
 .top-actions{gap:6px}
}
@media(max-width:380px){
 .kpi-n{font-size:22px}.kpi-l{font-size:12px}
 .top{gap:8px}
}

/* ---- touch devices: bigger tap targets ---- */
@media(pointer:coarse){
 .icon-btn{width:40px;height:40px}
 .ib{width:38px;height:38px}.ib.sm{width:32px;height:32px}
 .nav a{padding:11px 12px}
 .btn{padding:10px 14px}
 .pop .item{padding:13px 14px}
 .card{cursor:pointer}
}

/* ---- clean Sign out button ---- */
.me a.signout{display:inline-flex;align-items:center;gap:6px;flex:none;padding:7px 12px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--ink);font-size:12.5px;font-weight:600;line-height:1;text-decoration:none;transition:color .12s,background .12s,border-color .12s}
.me a.signout svg{display:block;color:var(--muted);transition:color .12s}
.me a.signout:hover{color:var(--red);border-color:#dc262640;background:#dc26260d}
.me a.signout:hover svg{color:var(--red)}
@media(pointer:coarse){.me a.signout{padding:10px 14px}}
