:root{
 --bg:#f5f6f8;--panel:#fff;--text:#172033;--muted:#697386;--border:#e5e8ee;
 --accent:#2563eb;--accent-soft:#eaf1ff;--danger:#dc2626;--warn:#d97706;--success:#16a34a;
 --shadow:0 10px 30px rgba(16,24,40,.07);--radius:16px;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);font:15px/1.45 Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
button,input,textarea,select{font:inherit}
button{cursor:pointer}
.topbar{height:64px;background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 24px;gap:28px;position:sticky;top:0;z-index:10}
.logo{font-weight:800;font-size:20px;letter-spacing:-.4px}
nav{display:flex;gap:4px;flex:1}
nav button,.ghost,.icon-btn{border:0;background:transparent;padding:10px 13px;border-radius:10px;color:var(--muted)}
nav button:hover,.ghost:hover,.icon-btn:hover{background:var(--bg);color:var(--text)}
.top-actions{display:flex;align-items:center;gap:8px}
.container{max-width:1450px;margin:auto;padding:28px 24px 60px}
h1,h2,h3{margin:0 0 8px;letter-spacing:-.3px}
.subtitle{color:var(--muted);margin-bottom:24px}
.grid-stats{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;margin:20px 0}
.stat{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:16px}
.stat .num{font-size:28px;font-weight:800}
.stat .label{color:var(--muted);font-size:13px;margin-top:3px}
.stat.danger .num{color:var(--danger)}.stat.warn .num{color:var(--warn)}.stat.review .num{color:var(--accent)}.stat.success .num{color:var(--success)}
.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}
.error-panel{border-color:#fecaca;background:linear-gradient(180deg,rgba(254,242,242,.5),var(--panel) 60px)}
.error-panel h2{color:#b91c1c}
:root[data-theme="dark"] .error-panel,:root[data-theme="graphite"] .error-panel{border-color:rgba(239,68,68,.35);background:var(--panel)}
:root[data-theme="dark"] .error-panel h2,:root[data-theme="graphite"] .error-panel h2{color:#f87171}
.loading-line{color:var(--muted);font-size:13px;font-weight:600}
.panel-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px}
.attention-list{display:grid;gap:10px}
.attention{display:flex;align-items:center;justify-content:space-between;border:1px solid var(--border);border-radius:12px;padding:13px 15px}
.attention-main{min-width:0}.attention-title{font-weight:700}.meta{color:var(--muted);font-size:13px}
.badge{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:4px 9px;font-size:12px;font-weight:700;background:#eef1f5;color:#4b5563}
.badge.red{background:#fee2e2;color:#991b1b}.badge.orange{background:#ffedd5;color:#9a3412}.badge.blue{background:#dbeafe;color:#1d4ed8}.badge.green{background:#dcfce7;color:#166534}
.badge.draft-badge{background:#fef9c3;color:#854d0e;border:1px dashed #d4a72c}
.form-draft-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#fef9c3;color:#713f12;border-bottom:1px solid #eab308;padding:10px 24px;font-size:13px;line-height:1.5}
.form-draft-banner span{flex:1}
.primary{background:var(--accent);color:#fff;border:0;border-radius:11px;padding:10px 15px;font-weight:700}
.primary:hover{filter:brightness(.95)}
.secondary{background:#fff;border:1px solid var(--border);border-radius:11px;padding:10px 15px}
.danger-btn{background:#fff;border:1px solid #fecaca;color:#b91c1c;border-radius:11px;padding:10px 15px}
.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:18px}
input,textarea,select{width:100%;border:1px solid var(--border);background:#fff;border-radius:10px;padding:10px 12px;outline:none}
input:focus,textarea:focus,select:focus{border-color:#93b4ff;box-shadow:0 0 0 3px var(--accent-soft)}
label{display:grid;gap:6px;color:#4b5563;font-size:13px;font-weight:600}
textarea{min-height:100px;resize:vertical}
.form-grid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:14px}
.kanban{display:grid;grid-template-columns:repeat(6,minmax(230px,1fr));gap:12px;overflow-x:auto;padding-bottom:8px}
.column{background:#eef0f4;border-radius:14px;padding:10px;min-height:350px}
.column-head{display:flex;justify-content:space-between;align-items:center;padding:4px 5px 10px;font-weight:800}
.column-count{color:var(--muted);font-size:12px}
.task-card{background:#fff;border:1px solid var(--border);border-radius:12px;padding:13px;margin-bottom:9px;box-shadow:0 2px 8px rgba(16,24,40,.04);cursor:pointer}
.task-card:hover{border-color:#b9c7e8;transform:translateY(-1px)}
.task-title{font-weight:750;margin-bottom:9px}
.task-footer{display:flex;justify-content:space-between;align-items:center;gap:8px}
.progress{height:6px;background:#e8ebf0;border-radius:99px;overflow:hidden;margin:9px 0 6px}
.progress>i{display:block;height:100%;background:var(--accent)}
.modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.48);display:flex;align-items:center;justify-content:center;padding:20px;z-index:30}
.modal{background:#fff;border-radius:18px;max-width:850px;width:100%;max-height:92vh;overflow:auto;box-shadow:0 30px 80px rgba(0,0,0,.25)}
.modal-head{display:flex;justify-content:space-between;gap:15px;padding:22px 24px;border-bottom:1px solid var(--border)}
.modal-body{padding:24px}
.close{border:0;background:var(--bg);width:36px;height:36px;border-radius:10px}
.checklist{border:1px solid var(--border);border-radius:14px;padding:15px;margin:15px 0}
.check-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.check-item{display:flex;gap:10px;align-items:flex-start;padding:8px 0}
.check-item input{width:18px;height:18px;margin-top:2px}.done{text-decoration:line-through;color:#8a93a3}
.comment-author{font-weight:600;font-size:13px;color:var(--text)}.comment-date{display:block;color:var(--muted);font-size:10px;margin-top:2px;font-weight:400}
.comment-box{display:flex;flex-direction:column;gap:8px;margin-top:14px}.comment-box textarea{min-height:96px;resize:none}
.comment-box-actions{display:flex;align-items:center;justify-content:space-between;gap:8px}
.comment-box-actions .meta{font-size:11px}
.login-page{min-height:100vh;display:grid;place-items:center;padding:20px;background:linear-gradient(135deg,#f8fafc,#eef4ff)}
.login-page[hidden]{display:none}
.login-card{width:min(420px,100%);background:#fff;border:1px solid var(--border);box-shadow:var(--shadow);border-radius:22px;padding:34px}
.brand-mark{width:46px;height:46px;border-radius:13px;background:var(--accent);color:#fff;display:grid;place-items:center;font-weight:900;margin-bottom:15px}
.login-card form{display:grid;gap:14px;margin-top:22px}.error{color:var(--danger);min-height:20px}
.table{width:100%;border-collapse:collapse}.table th,.table td{text-align:left;padding:12px;border-bottom:1px solid var(--border)}.table th{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.4px}
.mobile-only{display:none}
@media(max-width:1100px){.grid-stats{grid-template-columns:repeat(3,1fr)}.kanban{grid-template-columns:repeat(6,260px)}}
@media(max-width:700px){.topbar{padding:0 14px;gap:8px}.topbar nav{display:none}.top-actions #userName{display:none}.container{padding:18px 14px}.grid-stats{grid-template-columns:repeat(2,1fr)}.form-grid{grid-template-columns:1fr}.attention{align-items:flex-start;gap:10px;flex-direction:column}.modal-backdrop{padding:0}.modal{border-radius:0;max-height:100vh;height:100%}.modal-body{padding:18px}.login-card{padding:25px}}

.table-wrap{overflow-x:auto}
.small-btn{padding:7px 11px;font-size:13px}
.modal-small{max-width:620px}
.user-form{grid-template-columns:1.4fr 1fr 1fr}
.switch-label{align-content:start}
.switch-row{display:flex;align-items:center;gap:8px;height:42px;font-size:14px;font-weight:500}
.switch-row input{width:18px;height:18px}
.admin-danger-zone{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:22px;padding:16px;border:1px solid var(--border);border-radius:14px;background:var(--bg)}
@media(max-width:700px){.user-form{grid-template-columns:1fr}.admin-danger-zone{align-items:flex-start;flex-direction:column}}

.user-role{font-size:12px;color:var(--muted);margin-left:4px}
.admin-nav{font-weight:700}

.workflow-hint{margin-top:8px;font-size:12px;color:#64748b}

/* v0.3.1 task workspace */
.task-modal{max-width:980px}.task-head-main{flex:1;min-width:0}.task-head-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.task-head-meta{margin-top:8px}.task-summary-line{margin-top:8px}.task-section{padding:18px 0;border-bottom:1px solid var(--border)}.task-section:last-child{border-bottom:0}
.section-title{font-size:18px;font-weight:800;margin-bottom:12px;display:flex;align-items:center;gap:8px}.section-counter{font-size:12px;font-weight:700;color:var(--muted);background:var(--bg);padding:3px 8px;border-radius:99px}
.task-description{border:1px solid var(--border);border-radius:14px;padding:15px;background:#fbfcfe;min-height:54px}.status-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:16px 0}
.checklist-progress-row{display:flex;gap:10px;align-items:center;margin-bottom:10px}.progress.big{height:8px;flex:1}.empty-state,.empty-column{color:var(--muted);padding:12px 4px}
.comment{padding:14px;border:1px solid var(--border);border-radius:12px;margin-bottom:8px;background:#fff}.comment-head{display:block;margin-bottom:6px}.comment-head-top{display:flex;align-items:center;gap:8px}.comment-body{color:var(--text);font-size:14px}
.file-upload-bar{margin:0 0 12px}.attachments-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}.attachment-card{border:1px solid var(--border);border-radius:14px;overflow:hidden;background:#fff;min-width:0}
.attachment-preview{display:block;background:#f3f5f8;aspect-ratio:16/10;overflow:hidden}.attachment-preview img{width:100%;height:100%;object-fit:cover;display:block}.attachment-icon{height:120px;display:grid;place-items:center;background:#f3f5f8;font-size:34px}
.attachment-info{padding:10px 11px}.attachment-name{display:block;font-weight:700;color:var(--text);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attachment-name:hover{text-decoration:underline}
.history-list{display:grid;gap:8px}.history-item{display:grid;grid-template-columns:14px 1fr;gap:10px}.history-dot{width:8px;height:8px;border-radius:50%;background:#94a3b8;margin-top:7px}
.card-hint{font-size:11px;color:#98a2b3;margin-top:9px}.task-card[draggable="true"]{cursor:grab}.task-card.dragging{opacity:.55;transform:rotate(1deg)}
.column.drag-over{outline:2px solid var(--col-status,#93b4ff);outline-offset:2px}.column-body{min-height:280px}.task-badges{display:flex;gap:7px;flex-wrap:wrap}
.paste-preview{margin-top:8px;padding:9px 11px;border-radius:10px;background:#f0fdf4;border:1px solid #bbf7d0}.success-text{color:#166534;font-size:13px;font-weight:700}
@media(max-width:700px){.task-modal{max-width:none}.attachments-grid{grid-template-columns:1fr}.task-head-top{align-items:flex-start}}


/* v0.3.3 — visual polish + smooth Kanban drag & drop */
:root{--accent:#4f6df5;--accent-2:#7c5cff;--accent-soft:#eef2ff;--bg:#f7f8fc;--border:#e7eaf1;--text:#172033;--muted:#748096;--card-shadow:0 5px 18px rgba(20,30,55,.06)}
body{background:radial-gradient(circle at top left,rgba(79,109,245,.05),transparent 26%),var(--bg)}
.topbar{height:70px;padding:0 26px;gap:30px;background:rgba(255,255,255,.94);backdrop-filter:blur(14px);box-shadow:0 1px 0 rgba(15,23,42,.04)}
.logo{display:flex;align-items:center;gap:10px;font-size:21px}.logo svg{flex:0 0 auto;border-radius:7px}
nav button{font-weight:650;position:relative}nav button:hover{background:#f3f5fb}nav button[data-page="board"]{color:var(--text)}
.container{max-width:1560px;padding:26px 26px 64px}
.board-page{display:flex;flex-direction:column;gap:16px}.board-hero{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;padding:4px 2px 3px}.eyebrow{font-size:11px;font-weight:850;letter-spacing:1.5px;color:#7c5cff;margin-bottom:6px}.board-hero h1{font-size:32px;letter-spacing:-.8px;margin-bottom:4px}.board-hero .subtitle{margin:0;max-width:780px}.hero-action{box-shadow:0 10px 24px rgba(79,109,245,.22)}
.board-toolbar{display:flex;align-items:center;gap:10px;padding:10px 12px;background:rgba(255,255,255,.88);border:1px solid var(--border);border-radius:16px;box-shadow:0 8px 22px rgba(15,23,42,.04);position:sticky;top:78px;z-index:7}.search-wrap{display:flex;align-items:center;gap:8px;min-width:280px;flex:1;max-width:520px}.search-wrap>span{font-size:20px;color:#98a2b3}.search-wrap input{border:0;background:transparent;box-shadow:none;padding:9px 0}.search-wrap input:focus{border:0;box-shadow:none}.board-toolbar select{max-width:240px}.board-toolbar-spacer{flex:1}.board-total{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:13px;font-weight:650;padding:0 8px}.board-total-dot{width:7px;height:7px;border-radius:50%;background:#4f6df5;box-shadow:0 0 0 4px #eef2ff}
.kanban{display:grid;grid-template-columns:repeat(6,minmax(250px,1fr));gap:14px;overflow-x:auto;padding:2px 2px 12px;align-items:start}.column{position:relative;background:#eef1f7;border:1px solid #e5e9f2;border-radius:18px;padding:11px;min-height:510px;transition:background .18s,border-color .18s,box-shadow .18s,transform .18s}.column-head{padding:4px 5px 11px}.column-title{display:flex;align-items:center;gap:8px;font-size:13px}.column-dot{width:9px;height:9px;border-radius:50%;background:#a7b0c4}.column-new .column-dot{background:#94a3b8}.column-accepted .column-dot{background:#60a5fa}.column-in_progress .column-dot{background:#4f6df5}.column-waiting .column-dot{background:#f59e0b}.column-review .column-dot{background:#8b5cf6}.column-done .column-dot{background:#22c55e}.column-count{min-width:26px;height:24px;padding:0 8px;display:grid;place-items:center;border-radius:999px;background:rgba(255,255,255,.75);font-weight:800}.column-body{min-height:390px}.column.drag-active{border-color:#9db0ff;background:#e8edff;box-shadow:inset 0 0 0 1px rgba(79,109,245,.1),0 10px 28px rgba(79,109,245,.08);transform:translateY(-1px)}.column.drag-over .drop-caption{opacity:1;transform:translateY(0)}.drop-caption{position:absolute;left:12px;right:12px;bottom:10px;padding:8px;border:1px dashed #a8b8ee;border-radius:11px;text-align:center;font-size:11px;font-weight:750;color:#5a6fc5;background:rgba(255,255,255,.68);opacity:0;transform:translateY(4px);transition:.16s;pointer-events:none}.empty-column{min-height:170px;margin:10px 2px;border:1px dashed #cbd2df;border-radius:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;background:rgba(255,255,255,.28)}.empty-column span{font-weight:700;color:#7e899d}.empty-column small{color:#a0a8b7}
.task-card{position:relative;border:1px solid #e5e8ef;border-radius:15px;padding:13px 13px 12px;margin-bottom:10px;box-shadow:var(--card-shadow);transition:transform .16s,box-shadow .16s,border-color .16s,opacity .16s;background:#fff;overflow:hidden}.task-card:before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:#cbd2df}.task-card.priority-critical:before{background:#ef4444}.task-card.priority-high:before{background:#f59e0b}.task-card.priority-normal:before{background:#4f6df5}.task-card.priority-low:before{background:#22c55e}.task-card.is-draggable{cursor:grab}.task-card.is-draggable:hover{transform:translateY(-2px);box-shadow:0 12px 28px rgba(20,30,55,.10);border-color:#d5dcf1}.task-card.is-draggable:active{cursor:grabbing}.task-card.dragging{opacity:.42;transform:rotate(1.3deg) scale(.985);box-shadow:none}.task-card-top{display:flex;justify-content:space-between;align-items:center;gap:8px}.drag-grip{color:#a0a8b8;font-size:18px;line-height:1;letter-spacing:-3px;padding:2px 4px;border-radius:7px;cursor:grab}.drag-grip:hover{background:#f3f5f9;color:#65708a}.task-title{font-size:14px;line-height:1.35;font-weight:780;margin:9px 0 12px}.task-card-footer{display:flex;align-items:center;justify-content:space-between;gap:9px;min-width:0}.assignee{display:flex;align-items:center;gap:7px;min-width:0;color:#667188;font-size:12px;font-weight:650}.assignee>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.assignee-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1 1 auto}.helper-avatars{flex:0 0 auto}.avatar{width:25px;height:25px;display:grid;place-items:center;flex:0 0 auto;border-radius:8px;background:linear-gradient(135deg,#eef2ff,#e7eaf9);color:#5668be;font-size:10px;font-weight:900}.due{font-size:11px;font-weight:700;color:#7c879a;white-space:nowrap}.due.is-overdue{color:#dc2626}.task-badges{display:flex;gap:6px;flex-wrap:wrap}.badge{padding:4px 8px;font-size:10px;letter-spacing:.1px}.task-card .badge{background:#f2f4f8;color:#687388}.task-card .badge.red{background:#fff0f0;color:#c62828}.task-card .badge.orange{background:#fff5e8;color:#bd6a00}.task-card .badge.blue{background:#eef3ff;color:#4561c8}.task-card .badge.green{background:#eaf9ef;color:#198044}.drag-placeholder{height:105px;border:2px dashed #9eb0f2;border-radius:14px;background:rgba(255,255,255,.52);margin:0 0 10px;position:relative}.drag-placeholder:after{content:"Переместить сюда";position:absolute;inset:0;display:grid;place-items:center;color:#5c6fc6;font-size:12px;font-weight:800}
.modal-backdrop{background:rgba(9,16,35,.56);backdrop-filter:blur(5px)}.modal{border:1px solid rgba(255,255,255,.35);box-shadow:0 36px 100px rgba(8,15,35,.32)}.modal-head{padding:24px 26px}.modal-body{padding:26px}.section-title{font-size:17px}.primary{background:linear-gradient(135deg,#4f6df5,#5b67e9);box-shadow:0 7px 18px rgba(79,109,245,.18)}
@media(max-width:1100px){.kanban{grid-template-columns:repeat(6,280px)}.board-toolbar{top:72px}}
@media(max-width:700px){.board-hero{align-items:flex-start;flex-direction:column}.board-hero h1{font-size:28px}.board-toolbar{position:static;flex-wrap:wrap}.search-wrap{min-width:0;max-width:none;flex-basis:100%}.board-toolbar select{max-width:none;flex:1}.board-total-spacer{display:none}.kanban{grid-template-columns:repeat(6,270px)}.column{min-height:430px}.column-body{min-height:320px}}


/* v0.3.5 — desktop Kanban without horizontal scroll + visual polish */
html,body{min-width:0;overflow-x:hidden;overflow-y:visible}
.container{width:100%;max-width:1872px;margin-inline:auto}
.board-page{gap:18px}
.board-hero{padding-top:8px}
.board-hero h1{font-size:34px;font-weight:850}
.board-hero .subtitle{font-size:14px;color:#7b879a}
.hero-action{min-height:42px;padding-inline:18px}
.board-toolbar{gap:8px;padding:8px 10px;border-radius:18px;box-shadow:0 10px 26px rgba(20,30,55,.05)}
.search-wrap{max-width:none;min-width:0;flex:1 1 auto;background:#f8f9fc;border:1px solid #edf0f5;border-radius:12px;padding:0 11px}
.search-wrap>span{font-size:18px}
.board-toolbar select{height:42px;max-width:230px;background:#fff}
.board-total{padding:0 10px 0 8px;white-space:nowrap}
.kanban{grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;overflow-x:visible;padding:0 0 10px;width:100%}
.column{min-width:0;min-height:520px;border-radius:18px;padding:10px;background:linear-gradient(180deg,#eef1f7 0%,#f0f2f6 100%);box-shadow:inset 0 1px 0 rgba(255,255,255,.65)}
.column-head{padding:5px 6px 12px}
.column-title{min-width:0}
.column-title span:last-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.column-count{height:22px;min-width:24px;background:rgba(255,255,255,.82);box-shadow:0 1px 2px rgba(15,23,42,.04)}
.column-body{min-height:414px}
.empty-column{min-height:150px;margin:6px 1px}
.task-card{padding:12px 12px 11px;border-radius:14px;margin-bottom:8px;box-shadow:0 3px 12px rgba(20,30,55,.05)}
.task-title{font-size:13.5px;line-height:1.38;margin:8px 0 11px}
.task-card-footer{gap:6px}
.assignee{font-size:11.5px}
.avatar{width:24px;height:24px;border-radius:7px}
.due{font-size:10.5px}
.drag-grip{font-size:17px}
.column.drag-active{box-shadow:inset 0 0 0 1px rgba(79,109,245,.12),0 12px 32px rgba(79,109,245,.10)}
.column.drag-active .column-body{background:rgba(255,255,255,.16);border-radius:12px}
.drag-placeholder{height:96px;border-radius:13px;margin-bottom:8px;background:linear-gradient(135deg,rgba(255,255,255,.8),rgba(238,242,255,.75));animation:ttDropPulse .9s ease-in-out infinite alternate}
.drag-placeholder:before{content:"";position:absolute;left:18px;right:18px;top:18px;height:3px;border-radius:99px;background:#8ea3ee;opacity:.55}
@keyframes ttDropPulse{from{transform:scale(.99);opacity:.72}to{transform:scale(1);opacity:1}}

/* Cleaner empty state */
.empty-column small{font-size:11px}

@media(max-width:1250px){
  .container{padding-left:18px;padding-right:18px}
  .topbar{padding-left:18px;padding-right:18px}
  .kanban{gap:10px}
  .column{padding:9px}
  .board-toolbar select{max-width:210px}
}
@media(max-width:1100px){
  .kanban{grid-template-columns:repeat(6,270px);overflow-x:auto;padding-bottom:14px}
  .column{min-width:270px}
  .board-toolbar{top:72px}
}
@media(max-width:700px){
  .container{padding:18px 14px 50px}
  .board-toolbar{position:static}
  .kanban{grid-template-columns:repeat(6,270px);overflow-x:auto}
}

.tt-dragging .column:not(.drag-active){opacity:.96}.tt-dragging .task-card:not(.dragging){transition:transform .14s,box-shadow .14s}

/* v0.3.7 — Trello-like visual refinement + in-app checklist dialog */
:root{--bg:#f4f5f9;--panel:#fff;--text:#172033;--muted:#728096;--border:#e4e7ef;--accent:#526df6;--accent-2:#7c5cff;--card-shadow:0 5px 16px rgba(15,23,42,.06)}
html{min-height:100%}
body{min-height:100vh;background:var(--bg);color:var(--text)}
.topbar{height:68px;border-bottom:1px solid #e7e9ef;background:rgba(255,255,255,.9);box-shadow:0 2px 14px rgba(30,41,59,.04)}
.logo{font-weight:850}.top-actions{font-size:13px}.user-role{background:#f3f5fb;border:1px solid #e6e9f1;padding:5px 8px;border-radius:999px}nav button{border-radius:10px}nav button[data-page="board"]{background:#f1f3f8}
.board-hero{padding:2px 3px 0}.eyebrow{font-size:10px;letter-spacing:1.7px;color:#6877d9;font-weight:900}.board-hero h1{font-size:34px;letter-spacing:-1px}.board-hero .subtitle{font-size:13px;color:#7b8799}.hero-action{border-radius:12px;padding:11px 17px}
.board-toolbar{background:rgba(255,255,255,.9);border:1px solid #e7eaf1;box-shadow:0 7px 22px rgba(15,23,42,.05);border-radius:15px;min-height:54px}.search-wrap{background:#f7f8fb;border-color:#eceef4}.board-toolbar select{border-color:#e5e8f0}
.kanban{gap:14px;align-items:stretch}.column{border:1px solid #e3e6ed;border-radius:15px;background:#eceef3;min-height:520px;padding:9px;box-shadow:0 1px 0 rgba(255,255,255,.8) inset;overflow:hidden}.column:before{content:"";display:block;height:3px;border-radius:999px;margin:0 5px 8px;background:var(--col-status,#aeb6c6)}
.column-head{padding:2px 6px 10px}.column-title{font-size:13px}.column-title span:last-child{font-weight:850}.column-count{font-size:11px;font-weight:800;color:#657084}.column-body{min-height:430px}.empty-column{border-color:#d4d9e3;background:rgba(255,255,255,.3);margin:7px 2px;min-height:145px}.empty-column span{font-size:12px}
.task-card{border:1px solid #e2e5ec;border-radius:12px;padding:11px 11px 10px;margin-bottom:8px;box-shadow:0 3px 10px rgba(15,23,42,.05)}.task-card:before{width:4px}.task-card.is-draggable:hover{box-shadow:0 10px 22px rgba(15,23,42,.10);border-color:#d2d8e8;transform:translateY(-1px)}.task-title{font-size:13px;font-weight:800;line-height:1.4;margin:8px 0 10px}.task-card-footer{font-size:11px}.assignee{font-size:11px}.avatar{width:23px;height:23px;border-radius:7px;background:#eef1ff}.due{font-size:10px}
.drag-placeholder{height:90px;margin-bottom:8px;border:2px dashed #9eace9;background:linear-gradient(135deg,rgba(255,255,255,.8),rgba(237,241,255,.9));box-shadow:inset 0 0 0 1px rgba(82,109,246,.05)}.drag-placeholder:after{font-size:11px;content:"Отпустить здесь"}.drag-placeholder:before{content:"";position:absolute;left:20px;right:20px;top:18px;height:3px;border-radius:999px;background:#9aa9ea}.column.drag-active{background:#e8ebf7;border-color:#a8b6eb;box-shadow:0 10px 28px rgba(82,109,246,.10)}
.modal-backdrop{background:rgba(16,24,40,.42);backdrop-filter:blur(4px)}.modal{border:1px solid rgba(255,255,255,.75);box-shadow:0 28px 80px rgba(15,23,42,.25)}.modal-dialog-small{max-width:520px}.site-dialog .modal-head{padding-bottom:18px}.site-dialog .modal-body{padding-top:20px}.dialog-kicker{font-size:10px;letter-spacing:1.3px;font-weight:900;color:#6c7ae0;margin-bottom:4px}.dialog-form{display:grid;gap:18px}.dialog-actions{display:flex;justify-content:flex-end;gap:9px;padding-top:4px}
.tt-toasts{position:fixed;right:22px;bottom:22px;z-index:90;display:grid;gap:8px;max-width:min(420px,calc(100vw - 44px))}.tt-toast{display:flex;align-items:center;gap:9px;padding:11px 14px;background:#fff;border:1px solid #e4e8ef;border-radius:12px;box-shadow:0 14px 30px rgba(15,23,42,.14);font-size:13px;animation:ttToastIn .2s ease-out}.tt-toast-error{border-color:#fecaca}.tt-toast-icon{width:24px;height:24px;display:grid;place-items:center;border-radius:7px;background:#eef2ff;color:#5369db;font-weight:900}.tt-toast-error .tt-toast-icon{background:#fee2e2;color:#b91c1c}.tt-toast.is-hide{opacity:0;transform:translateY(8px);transition:.2s}@keyframes ttToastIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(max-width:1250px){.board-hero h1{font-size:30px}.column{padding:8px}.task-card{padding:10px}}

/* v0.3.7 dashboard summary */
.grid-stats{grid-template-columns:repeat(7,minmax(0,1fr))}.stat.total .num{color:#526df6}.status-strip{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:rgba(255,255,255,.82);border:1px solid #e5e8ef;border-radius:13px;padding:11px 14px;color:#707c90;font-size:12px;margin:-8px 0 18px}.status-strip span{display:flex;gap:5px;align-items:center}.status-strip b{color:#26334a}.status-strip i{width:3px;height:3px;border-radius:50%;background:#c4cad5}@media(max-width:1250px){.grid-stats{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:700px){.grid-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.status-strip{gap:9px}}

/* v0.3.8 — status center, clickable tiles, safer drag/click, Trello polish */
nav button.active{background:#eef2ff;color:#24376f;font-weight:800}
nav button[data-page="board"]{background:transparent;color:var(--muted)}
nav button[data-page="board"].active{background:#eef2ff;color:#24376f}
.dashboard-page{display:flex;flex-direction:column;gap:18px}
.dashboard-hero{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;padding:4px 2px}
.dashboard-hero h1{font-size:34px;letter-spacing:-1px;margin:0 0 4px}
.status-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}
.status-tile{appearance:none;text-align:left;background:#fff;border:1px solid #e4e8f0;border-radius:16px;padding:17px 17px 14px;min-height:136px;box-shadow:0 4px 14px rgba(15,23,42,.045);transition:transform .16s,box-shadow .16s,border-color .16s;position:relative;overflow:hidden}
.status-tile:hover{transform:translateY(-2px);border-color:#cfd7e7;box-shadow:0 12px 26px rgba(15,23,42,.08)}
.status-tile:after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:var(--col-status,#cbd5e1)}.status-tile.info:after{background:var(--col-status,#60a5fa)}.status-tile.primary:after{background:var(--col-status,#526df6)}.status-tile.warning:after{background:var(--col-status,#f59e0b)}.status-tile.review:after{background:var(--col-status,#8b5cf6)}.status-tile.success:after{background:var(--col-status,#22c55e)}
.status-tile-top{display:flex;align-items:center;gap:8px;color:#667085;font-weight:750;font-size:12px}.status-dot{width:8px;height:8px;border-radius:50%;background:#94a3b8}.status-new{background:#94a3b8}.status-accepted{background:#60a5fa}.status-in_progress{background:#526df6}.status-waiting{background:#f59e0b}.status-review{background:#8b5cf6}.status-done{background:#22c55e}
.status-tile strong{display:block;font-size:31px;line-height:1;margin-top:18px;letter-spacing:-.7px}.status-tile-link{display:flex;justify-content:space-between;align-items:center;margin-top:13px;color:#8b95a7;font-size:11px;font-weight:700}.status-tile:hover .status-tile-link{color:#526df6}
.dashboard-lower{display:grid;grid-template-columns:minmax(0,2.2fr) minmax(260px,.8fr);gap:14px}.attention-panel,.dashboard-summary{min-height:210px}.attention{width:100%;text-align:left;background:#fff;cursor:pointer;transition:background .15s,border-color .15s,transform .15s}.attention:hover{background:#fbfcff;border-color:#d7ddeb;transform:translateY(-1px)}
.summary-row{display:flex;justify-content:space-between;align-items:center;padding:13px 0;border-bottom:1px solid #edf0f4;color:#667085;font-size:13px}.summary-row:last-child{border-bottom:0}.summary-row b{font-size:18px;color:#23314a}.danger-text{color:#dc2626!important}.warning-text{color:#d97706!important}.success-text{color:#16a34a!important}
.status-list-page{display:flex;flex-direction:column;gap:16px}.status-list{display:grid;gap:10px}.status-list-item{display:flex;justify-content:space-between;align-items:center;gap:16px;width:100%;text-align:left;background:#fff;border:1px solid #e4e8f0;border-radius:15px;padding:15px 16px;box-shadow:0 3px 12px rgba(15,23,42,.045);transition:.15s}.status-list-item:hover{transform:translateY(-1px);border-color:#ccd5e5;box-shadow:0 10px 24px rgba(15,23,42,.08)}.status-list-title{font-weight:800;font-size:14px;margin-bottom:4px}.status-list-main{min-width:0}.status-list-side{display:flex;align-items:center;gap:14px;flex:0 0 auto}.list-arrow{color:#8b95a7;font-size:18px}.status-list-item:hover .list-arrow{color:#526df6}
@media(max-width:1250px){.status-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.dashboard-lower{grid-template-columns:1fr}.status-tile{min-height:126px}}
@media(max-width:700px){.dashboard-hero{align-items:flex-start;flex-direction:column}.status-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.status-tile{min-height:118px;padding:14px}.status-tile strong{font-size:28px;margin-top:14px}.status-list-side .badge{display:none}}

/* v0.3.9 — modern Trello-like task drawer and task creation workspace */
.modal-close-text{border:0;background:transparent;color:#6b7485;padding:8px 10px;border-radius:9px;font-weight:700}.modal-close-text:hover{background:#f1f3f7;color:#1f2937}
.task-drawer-backdrop{justify-content:flex-end;padding:0;background:rgba(15,23,42,.34)}
.task-drawer{height:100%;width:min(860px,100%);background:#fff;box-shadow:-24px 0 60px rgba(15,23,42,.16);display:flex;flex-direction:column;overflow:hidden;animation:drawerIn .2s ease-out}
.task-drawer-head{display:flex;justify-content:space-between;gap:18px;padding:22px 28px 18px;border-bottom:1px solid #e9ecf1;background:rgba(255,255,255,.96);position:sticky;top:0;z-index:2}.task-drawer-body{padding:24px 28px 40px;overflow:auto}.task-drawer .task-head-main{min-width:0}.task-drawer .task-head-top{display:flex;align-items:center;gap:14px}.task-drawer .task-head-top h2{font-size:25px;letter-spacing:-.5px}.task-drawer .workflow-hint{margin-top:10px}.task-drawer .task-summary-line{margin-top:7px}.task-drawer .toolbar{padding:12px;border:1px solid #e8ebf1;background:#f8f9fb;border-radius:13px;margin:16px 0 4px}.task-drawer .task-section{border-bottom:1px solid #edf0f4;padding:20px 0}.task-drawer .task-section:last-child{border-bottom:0}.task-drawer .comment-box textarea{min-height:92px}
@keyframes drawerIn{from{transform:translateX(20px);opacity:.8}to{transform:translateX(0);opacity:1}}

.task-create-modal{max-width:1120px;max-height:94vh}.modal-head-modern{padding:16px 26px}.task-create-form{display:grid;gap:10px}.create-main-grid{display:grid;grid-template-columns:1fr 1.3fr;gap:10px}.create-secondary-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.create-card{border:1px solid #e7eaf0;border-radius:16px;background:#fbfcfd;padding:13px}.create-card .section-title{font-size:13px;font-weight:850;color:#263246;margin-bottom:9px}.create-fields-3{display:grid;grid-template-columns:1.2fr .9fr .9fr;gap:10px}.section-title-row{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:9px}.rich-editor-wrap{border:1px solid #dfe4ec;border-radius:13px;background:#fff;overflow:hidden}.rich-toolbar{display:flex;align-items:center;gap:2px;flex-wrap:wrap;padding:6px 8px;border-bottom:1px solid #e7eaf0;background:#f7f8fa}.rich-btn{border:1px solid transparent;background:transparent;border-radius:7px;padding:5px 7px;color:#4a5568;font-size:13px;line-height:1.2}.rich-btn:hover{background:#fff;border-color:#dfe4ec}.rich-select{width:auto;border:1px solid #e1e5ec;border-radius:8px;padding:5px 6px;background:#fff;font-size:11.5px}.toolbar-divider{width:1px;height:20px;background:#dde2ea;margin:0 2px}.rich-editor{min-height:110px;padding:11px 14px;outline:none;font-size:14px;line-height:1.5}.rich-editor:empty:before{content:attr(data-placeholder);color:#98a1b0;pointer-events:none}.rich-output{line-height:1.65}.rich-output p{margin:0 0 10px}.rich-output ul,.rich-output ol{padding-left:24px}.rich-output font,.rich-output span{font:inherit}.create-check-list{display:grid;gap:8px}.create-check-row{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid #e5e8ee;background:#fff;border-radius:11px}.check-dot{color:#98a1b0;font-size:15px}.create-check-input{border:0!important;box-shadow:none!important;padding:6px 4px!important}.create-check-row .icon-btn{margin-left:auto}.attach-btn{display:inline-flex;align-items:center;white-space:nowrap}.create-file-list{display:grid;gap:8px;margin-top:12px}.create-file-item{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:9px;padding:9px 10px;border:1px solid #e5e8ee;background:#fff;border-radius:10px;font-size:12px}.create-file-item .file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-chip{font-size:10px;font-weight:800;padding:4px 6px;border-radius:6px;background:#eef2ff;color:#526df6}.create-footer{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 4px 2px}.create-actions{display:flex;gap:8px}.small-btn{padding:7px 10px;font-size:12px}

/* smoother card interaction — click opens, drag is visually separate */
.task-card{user-select:none}.drag-grip{appearance:none;border:0;background:transparent;color:#9ba4b3;border-radius:7px;padding:3px 4px;cursor:grab;font-size:16px;line-height:1}.drag-grip:hover{background:#f1f3f7;color:#596579}.task-card.dragging{opacity:.38;transform:rotate(1deg) scale(.99)}.tt-dragging .task-card:not(.dragging){cursor:grabbing}.drag-placeholder{position:relative;display:flex;align-items:center;justify-content:center;color:#7683a0;font-weight:700;font-size:11px}
.notifications-popover{position:fixed;right:24px;top:66px;width:min(390px,calc(100vw - 32px));background:#fff;border:1px solid #e4e8ef;border-radius:16px;box-shadow:0 24px 50px rgba(15,23,42,.16);z-index:50;overflow:hidden}.popover-head{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;border-bottom:1px solid #edf0f4}.popover-body{max-height:420px;overflow:auto}.notif-item{width:100%;display:flex;gap:10px;text-align:left;border:0;background:#fff;padding:12px 14px}.notif-item:hover{background:#f7f8fb}.notif-item span:last-child{display:grid;gap:3px}.notif-item small{color:#7c8798;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:300px}.notif-dot{width:8px;height:8px;border-radius:50%;background:#526df6;margin-top:5px;flex:none}.notif-dot.read{background:#cbd2dc}
@media(max-width:900px){.create-main-grid,.create-secondary-grid{grid-template-columns:1fr}.task-drawer{width:100%}.task-drawer-head,.task-drawer-body{padding-left:18px;padding-right:18px}.create-fields-3{grid-template-columns:1fr}.create-footer{align-items:flex-start;flex-direction:column}.create-actions{width:100%;justify-content:flex-end}}
.drag-grip{display:inline-flex;align-items:center;justify-content:center;min-width:26px;min-height:26px;cursor:grab;user-select:none}.drag-grip:active{cursor:grabbing}

/* v0.3.10 — polished task modal, drag protection, attachments dropzones, themes */
.task-modal-backdrop{align-items:center;justify-content:center;padding:32px;background:rgba(15,23,42,.42);backdrop-filter:blur(7px)}
.task-modal-shell{width:min(1060px,calc(100vw - 56px));max-height:min(900px,calc(100vh - 64px));background:var(--panel);border:1px solid color-mix(in srgb,var(--border) 82%,#fff);border-radius:22px;box-shadow:0 34px 90px rgba(15,23,42,.25);display:flex;flex-direction:column;overflow:hidden;animation:taskModalIn .18s ease-out}
@keyframes taskModalIn{from{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}
.task-modal-head{display:flex;justify-content:space-between;gap:20px;padding:22px 26px 18px;border-bottom:1px solid var(--border);background:linear-gradient(180deg,rgba(255,255,255,.98),rgba(249,250,252,.96));position:sticky;top:0;z-index:2}.task-title-wrap{min-width:0}.task-title-kicker{font-size:10px;letter-spacing:1.4px;font-weight:900;color:#6877dd;margin-bottom:3px}.task-modal-head h2{font-size:27px;letter-spacing:-.65px;margin:0 0 9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.task-head-meta{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.task-modal-actions{display:flex;gap:8px;align-items:flex-start;flex:none}.task-modal-body{padding:18px 26px 34px;overflow:auto}.task-modal-body .task-section{padding:19px 0;border-bottom:1px solid var(--border)}.task-modal-body .task-section:first-child{padding-top:6px}.task-modal-body .task-section:last-of-type{border-bottom:0}.task-description{padding:14px 16px;border:1px solid var(--border);border-radius:14px;background:var(--panel);min-height:74px}.task-modal-body .toolbar{margin:12px 0 0;padding:10px 12px;border:1px solid var(--border);background:var(--bg);border-radius:13px}.task-modal-body .checklist-progress-row{max-width:720px}.section-counter{display:inline-flex;align-items:center;justify-content:center;min-width:25px;padding:2px 7px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:11px;font-weight:800;margin-left:5px}
.task-modal-body .section-title-row{display:flex;align-items:center;justify-content:space-between;gap:14px}.task-modal-body .section-title-row .section-title{margin:0 0 4px}
.check-add-row{display:flex;gap:8px;align-items:center;margin-top:10px}.check-add-row input{flex:1}
.task-history{margin-top:18px;border:1px solid var(--border);border-radius:14px;background:var(--panel);overflow:hidden}.task-history summary{list-style:none;cursor:pointer;padding:14px 16px;font-weight:800;display:flex;align-items:center;justify-content:space-between}.task-history summary::-webkit-details-marker{display:none}.task-history summary:after{content:'⌄';color:var(--muted);font-size:18px;transition:transform .15s}.task-history[open] summary:after{transform:rotate(180deg)}.task-history .history-list{padding:0 16px 16px;border-top:1px solid var(--border)}
.file-dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:110px;padding:16px;border:1.5px dashed #cbd4e2;border-radius:14px;background:var(--bg);color:#566276;cursor:pointer;transition:.15s;text-align:center;gap:4px}.file-dropzone:hover,.file-dropzone.is-dragover{border-color:#8399ef;background:#f2f5ff;color:#4c61c8;transform:translateY(-1px)}.file-dropzone.compact{min-height:86px;margin-top:10px}.file-drop-icon{width:30px;height:30px;display:grid;place-items:center;border-radius:9px;background:#fff;border:1px solid var(--border);font-weight:900;color:var(--accent);margin-bottom:3px}.file-dropzone small{color:var(--muted);font-size:12px}
.attachments-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px}.attachment-card{border:1px solid var(--border);border-radius:13px;padding:10px;background:var(--panel);display:grid;grid-template-columns:68px minmax(0,1fr);gap:10px;min-height:88px}.attachment-preview{display:block;width:68px;height:68px;border-radius:10px;overflow:hidden;background:var(--bg)}.attachment-preview img{width:100%;height:100%;object-fit:cover}.attachment-icon{width:68px;height:68px;border-radius:10px;background:var(--bg);display:grid;place-items:center;font-size:22px}.attachment-name{font-weight:750;color:var(--text);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attachment-name:hover{color:var(--accent)}
.rich-select{min-width:82px;cursor:pointer}.rich-select:focus{outline:none}.rich-editor:focus{background:#fff}.rich-output font[face="Georgia"]{font-family:Georgia,serif}.rich-output font[face="Arial"]{font-family:Arial,sans-serif}.rich-output font[face="Verdana"]{font-family:Verdana,sans-serif}.rich-output font[face="Tahoma"]{font-family:Tahoma,sans-serif}.rich-output font[face="Inter"]{font-family:Inter,system-ui,sans-serif}
.rich-editor blockquote,.rich-output blockquote{margin:8px 0;padding:6px 14px;border-left:3px solid var(--accent,#526df6);color:var(--muted,#697386);background:rgba(82,109,246,.07);border-radius:0 8px 8px 0}
.rich-editor a,.rich-output a{color:var(--accent,#2563eb);text-decoration:underline;text-underline-offset:2px;word-break:break-word}
.rich-editor a:hover,.rich-output a:hover{text-decoration:none}
.rich-editor::spelling-error{text-decoration-line:underline;text-decoration-style:dashed;text-decoration-color:#dc2626}
.proof-error{text-decoration-line:underline;text-decoration-style:dashed;text-decoration-color:#d64545;text-decoration-thickness:1px;text-underline-offset:2px;cursor:pointer}
.proof-context-menu{position:fixed;z-index:100000;min-width:190px;max-width:280px;padding:5px;border:1px solid var(--border);border-radius:10px;background:var(--panel);box-shadow:0 12px 30px rgba(20,30,55,.18)}
.proof-context-title{padding:7px 9px 6px;color:var(--muted);font-size:11px;border-bottom:1px solid var(--border)}
.proof-context-item{display:block;width:100%;border:0;background:transparent;text-align:left;padding:8px 9px;border-radius:7px;color:var(--text);cursor:pointer;font-size:13px;font:inherit}
.proof-context-item:hover{background:var(--accent-soft);color:var(--accent)}
.proof-context-empty{padding:8px 9px;color:var(--muted);font-size:12px}
input::spelling-error,textarea::spelling-error{text-decoration-line:underline;text-decoration-style:dashed;text-decoration-color:#dc2626}
.task-card-desc{font-size:12px;color:var(--muted);margin:2px 0 4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.create-fields-4{display:grid;grid-template-columns:1.25fr .9fr 1fr 1fr;gap:10px}.date-field,.time-field{min-height:42px;background:linear-gradient(#fff,#fbfcfe)}input[type=date],input[type=time]{accent-color:var(--accent)}
.task-modal-backdrop .danger-btn,.task-modal-backdrop .secondary,.task-modal-backdrop .primary{min-height:38px}
.theme-btn{font-size:15px}.user-role{padding:4px 8px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:11px;font-weight:800}
:root[data-theme="graphite"]{--bg:#edf1f6;--panel:#ffffff;--text:#1f2937;--muted:#667085;--border:#d9e0ea;--accent:#365bd6;--accent-soft:#e8edff;--shadow:0 12px 34px rgba(24,39,75,.08)}
:root[data-theme="graphite"] .column{background:#e7ebf1}
:root[data-theme="graphite"] .topbar{background:#f8fafc}
:root[data-theme="dark"]{--bg:#0d1117;--panel:#151b24;--text:#eef2f7;--muted:#9aa6b5;--border:#293341;--accent:#6d8cff;--accent-soft:#1d2947;--shadow:0 18px 46px rgba(0,0,0,.28)}
:root[data-theme="dark"] .topbar{background:#111720}:root[data-theme="dark"] .modal, :root[data-theme="dark"] .task-modal-shell, :root[data-theme="dark"] .status-tile, :root[data-theme="dark"] .panel, :root[data-theme="dark"] .task-card, :root[data-theme="dark"] .attachment-card{background:var(--panel);color:var(--text)}
:root[data-theme="dark"] input,:root[data-theme="dark"] textarea,:root[data-theme="dark"] select,:root[data-theme="dark"] .rich-editor,:root[data-theme="dark"] .rich-editor-wrap,:root[data-theme="dark"] .rich-toolbar,:root[data-theme="dark"] .file-dropzone{background:#10161f;color:var(--text);border-color:var(--border)}
:root[data-theme="dark"] .task-modal-head{background:linear-gradient(180deg,#171e29,#141a22)}:root[data-theme="dark"] .column{background:#161d27}:root[data-theme="dark"] .empty-column{border-color:#344153;color:#a0abb8}
:root[data-theme="dark"] .secondary{background:#171e29;color:var(--text);border-color:var(--border)}:root[data-theme="dark"] .close{background:#202936;color:var(--text)}:root[data-theme="dark"] .rich-btn:hover{background:#1b2430;border-color:var(--border)}

/* v0.3.38 — backward alias so an old localStorage value of "slate" doesn't
   leave the user on an unstyled page after the rename to "graphite". The JS
   already rewrites the persisted value on first apply, this is just a CSS
   safety net for one transition. */
:root[data-theme="slate"]{--bg:#e9edf3;--panel:#ffffff;--text:#172033;--muted:#667085;--border:#d7dee8;--accent:#4866dd;--accent-soft:#e9edff;--shadow:0 12px 30px rgba(23,32,51,.10)}
@media(max-width:900px){.task-modal-backdrop{padding:12px}.task-modal-shell{width:100%;max-height:calc(100vh - 24px);border-radius:18px}.task-modal-head{padding:18px}.task-modal-body{padding:14px 18px 28px}.attachments-grid{grid-template-columns:1fr}.create-fields-4{grid-template-columns:1fr 1fr}.task-modal-head h2{font-size:23px}}
@media(max-width:620px){.task-modal-head{flex-direction:column}.task-modal-actions{width:100%;justify-content:flex-end}.create-fields-4{grid-template-columns:1fr}.task-modal-body .section-title-row{align-items:flex-start;flex-direction:column}.check-add-row{align-items:stretch;flex-direction:column}.check-add-row button{width:100%}}


/* v0.3.11 — full themes + cleaner interactions */
:root[data-theme="light"]{--bg:#f6f7fb;--panel:#ffffff;--text:#172033;--muted:#718096;--border:#e5e8ef;--accent:#4f6df5;--accent-soft:#eef2ff;--shadow:0 12px 30px rgba(15,23,42,.07)}
:root[data-theme="graphite"]{
  /* Современная нейтральная тема между светлой и тёмной:
     тёмно-графитовый фон, карточки чуть светлее, хорошие контрасты. */
  --bg:#2a2e35;--text:#e8ebf0;--muted:#9ba4b3;--border:#444a54;
  --panel:#353a42;--accent:#7e9cff;--accent-soft:#2c3552;
  --danger:#ff7b7b;--warn:#f5b45b;--success:#5bd49a;
  --shadow:0 18px 50px rgba(0,0,0,.32);
}
:root[data-theme="dark"]{--bg:#0a0f16;--panel:#111821;--text:#f2f5f9;--muted:#9aa8b8;--border:#263140;--accent:#7188ff;--accent-soft:#202b49;--danger:#ff6b6b;--warn:#f5b45b;--success:#4ade80;--shadow:0 18px 50px rgba(0,0,0,.38)}
:root[data-theme="dark"] body{background:#0d131b;color:var(--text)}
:root[data-theme="dark"] .topbar{background:rgba(13,19,27,.94);border-color:var(--border)}
:root[data-theme="dark"] .logo{color:#fff}:root[data-theme="dark"] nav button,:root[data-theme="dark"] .ghost,:root[data-theme="dark"] .icon-btn{color:#aeb9c8}
:root[data-theme="dark"] nav button:hover,:root[data-theme="dark"] .ghost:hover,:root[data-theme="dark"] .icon-btn:hover{background:#17212d;color:#fff}
:root[data-theme="dark"] nav button.active{background:#1c2940;color:#fff}
:root[data-theme="dark"] .panel,:root[data-theme="dark"] .status-tile,:root[data-theme="dark"] .board-toolbar,:root[data-theme="dark"] .modal,:root[data-theme="dark"] .task-modal-shell{background:var(--panel);border-color:var(--border);box-shadow:var(--shadow);color:var(--text)}
:root[data-theme="dark"] .board-toolbar .search-wrap,:root[data-theme="dark"] .column{background:#151e28;border-color:#283544}
:root[data-theme="dark"] .task-card,:root[data-theme="dark"] .comment,:root[data-theme="dark"] .attachment-card,:root[data-theme="dark"] .create-card,:root[data-theme="dark"] .create-check-row{background:#121a23;border-color:#2a3645;color:var(--text)}
:root[data-theme="dark"] input,:root[data-theme="dark"] textarea,:root[data-theme="dark"] select,:root[data-theme="dark"] .rich-editor,:root[data-theme="dark"] .rich-editor-wrap,:root[data-theme="dark"] .rich-toolbar{background:#0f161f;color:var(--text);border-color:#2b3746}
:root[data-theme="dark"] input::placeholder,:root[data-theme="dark"] textarea::placeholder{color:#718096}
:root[data-theme="dark"] .secondary{background:#151e28;color:var(--text);border-color:#303d4d}:root[data-theme="dark"] .danger-btn{background:#23171b;border-color:#5b2b35;color:#ff8c98}
:root[data-theme="dark"] .status-tile-top,:root[data-theme="dark"] .meta,:root[data-theme="dark"] .subtitle{color:#98a6b7}
:root[data-theme="dark"] .column{background:linear-gradient(180deg,#151d27 0%,#111820 100%)}
:root[data-theme="dark"] .column-count{background:#1c2631}:root[data-theme="dark"] .empty-column{background:rgba(255,255,255,.02);border-color:#344454}
:root[data-theme="dark"] .drag-placeholder{background:linear-gradient(135deg,rgba(31,43,60,.95),rgba(30,42,67,.9));border-color:#6479d8}
:root[data-theme="dark"] .file-dropzone{background:#101720;border-color:#3a4657;color:#aeb9c8}:root[data-theme="dark"] .file-dropzone:hover,:root[data-theme="dark"] .file-dropzone.is-dragover{background:#172238;border-color:#7188ff}
:root[data-theme="dark"] .attachment-preview,:root[data-theme="dark"] .attachment-icon{background:#0c131b}
:root[data-theme="dark"] .task-modal-head{background:linear-gradient(180deg,#151e28,#111821);border-color:var(--border)}
:root[data-theme="dark"] .task-description{background:#121a23}:root[data-theme="dark"] .toolbar{background:#0f161f;border-color:#293645}
:root[data-theme="dark"] .rich-btn{color:#b5c0cf}:root[data-theme="dark"] .rich-btn:hover{background:#1a2430;border-color:#334153}
:root[data-theme="dark"] .login-page{background:radial-gradient(circle at top,#151f2d 0%,#0a0f16 55%)}:root[data-theme="dark"] .login-card{background:#111821;border-color:#293646;color:var(--text)}
:root[data-theme="dark"] .table th,:root[data-theme="dark"] .table td{border-color:#2a3544;color:var(--text)}
.task-card.dragging{pointer-events:none!important}


/* v0.3.12 — interaction, attachment controls, richer cards */
.task-card{cursor:pointer;position:relative;isolation:isolate}
.task-card.priority-critical{background:linear-gradient(180deg,#fff7f7 0%,#fff 72%)}
.task-card.priority-high{background:linear-gradient(180deg,#fffaf1 0%,#fff 72%)}
.task-card.priority-normal{background:linear-gradient(180deg,#f8faff 0%,#fff 72%)}
.task-card.priority-low{background:linear-gradient(180deg,#f5fcf8 0%,#fff 72%)}
.task-card .task-card-top{position:relative;z-index:2}
.task-card .drag-grip{user-select:none;touch-action:none;cursor:grab}
.task-card .drag-grip:active{cursor:grabbing}
.task-card.dragging{opacity:.42!important;pointer-events:none!important}
.task-card.just-dragged{outline:2px solid transparent}
.tt-dragging .task-card:not(.dragging){transition:transform .12s,box-shadow .12s,border-color .12s}
.attachment-topline{display:flex;align-items:center;gap:8px;min-width:0}
.attachment-topline .attachment-name{flex:1;min-width:0}
.attachment-delete{flex:0 0 auto;width:28px;height:28px;padding:0;display:grid;place-items:center;color:var(--muted)}
.attachment-delete:hover{color:#c53a4c;background:var(--accent-soft)}
.inline-description-editor .rich-editor-wrap{margin-top:10px}
.inline-editor-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:10px}
.team-person-icon{display:inline-grid;place-items:center;width:24px;height:24px;margin-right:7px;border-radius:8px;background:var(--accent-soft);font-size:13px;vertical-align:middle}
/* make rich font choices visible both while editing and when displayed */
.rich-editor font[face="Arial"],.rich-output font[face="Arial"]{font-family:Arial,sans-serif!important}
.rich-editor font[face="Georgia"],.rich-output font[face="Georgia"]{font-family:Georgia,serif!important}
.rich-editor font[face="Verdana"],.rich-output font[face="Verdana"]{font-family:Verdana,sans-serif!important}
.rich-editor font[face="Tahoma"],.rich-output font[face="Tahoma"]{font-family:Tahoma,sans-serif!important}
.rich-editor font[face="Inter"],.rich-output font[face="Inter"]{font-family:Inter,system-ui,sans-serif!important}
.rich-editor span[style*="font-family: Arial"],.rich-output span[style*="font-family: Arial"]{font-family:Arial,sans-serif!important}
.rich-editor span[style*="font-family: Georgia"],.rich-output span[style*="font-family: Georgia"]{font-family:Georgia,serif!important}
.rich-editor span[style*="font-family: Verdana"],.rich-output span[style*="font-family: Verdana"]{font-family:Verdana,sans-serif!important}
.rich-editor span[style*="font-family: Tahoma"],.rich-output span[style*="font-family: Tahoma"]{font-family:Tahoma,sans-serif!important}
.rich-editor span[style*="font-family: Inter"],.rich-output span[style*="font-family: Inter"]{font-family:Inter,system-ui,sans-serif!important}
.rich-output font,.rich-output span{font:inherit}
.rich-output font[face],.rich-output span[style*="font-family"]{font-size:inherit}
.create-fields-4{grid-template-columns:1.25fr 1fr 1fr 1fr}
.create-fields-4>label{min-width:0}
.create-fields-4 input,.create-fields-4 select{width:100%;box-sizing:border-box}
.date-field,.time-field{width:100%;box-sizing:border-box}
@media(max-width:1100px){.create-fields-4{grid-template-columns:1.15fr .95fr 1fr 1fr;gap:9px}}
@media(max-width:900px){.create-fields-4{grid-template-columns:1fr 1fr}}
@media(max-width:620px){.create-fields-4{grid-template-columns:1fr}}


/* v0.3.38 — Graphite (formerly Slate) theme: darker base than the previous
   "Slate", with a clearly lighter panel so cards stay readable. We piggy-back
   on the dark theme palette for the few niche surfaces (topbar, columns,
   modal head) that the dark theme styles in detail. */
:root[data-theme="graphite"] body{background:#2f343c;color:var(--text)}
:root[data-theme="graphite"] .topbar{background:rgba(46,52,60,.92);border-color:var(--border)}
:root[data-theme="graphite"] .logo{color:#fff}
:root[data-theme="graphite"] nav button,:root[data-theme="graphite"] .ghost,:root[data-theme="graphite"] .icon-btn{color:#c2c9d4}
:root[data-theme="graphite"] nav button:hover,:root[data-theme="graphite"] .ghost:hover,:root[data-theme="graphite"] .icon-btn:hover{background:#3a4049;color:#fff}
:root[data-theme="graphite"] nav button.active{background:#3a4660;color:#fff}
:root[data-theme="graphite"] .panel,:root[data-theme="graphite"] .status-tile,:root[data-theme="graphite"] .board-toolbar,:root[data-theme="graphite"] .modal,:root[data-theme="graphite"] .task-modal-shell{background:var(--panel);border-color:var(--border);box-shadow:var(--shadow);color:var(--text)}
:root[data-theme="graphite"] .board-toolbar .search-wrap,:root[data-theme="graphite"] .column{background:#3c4148;border-color:#4a505a}
:root[data-theme="graphite"] .task-card,:root[data-theme="graphite"] .comment,:root[data-theme="graphite"] .attachment-card,:root[data-theme="graphite"] .create-card,:root[data-theme="graphite"] .create-check-row{background:#3c4148;border-color:#4a505a;color:var(--text)}
:root[data-theme="graphite"] input,:root[data-theme="graphite"] textarea,:root[data-theme="graphite"] select,:root[data-theme="graphite"] .rich-editor,:root[data-theme="graphite"] .rich-editor-wrap,:root[data-theme="graphite"] .rich-toolbar{background:#2f343c;color:var(--text);border-color:#4a505a}
:root[data-theme="graphite"] input::placeholder,:root[data-theme="graphite"] textarea::placeholder{color:#8a93a3}
:root[data-theme="graphite"] .secondary{background:#3a4049;color:var(--text);border-color:#4a505a}
:root[data-theme="graphite"] .status-tile-top,:root[data-theme="graphite"] .meta,:root[data-theme="graphite"] .subtitle{color:#aab3c2}
:root[data-theme="graphite"] .column{background:linear-gradient(180deg,#3c4148 0%,#363b42 100%)}
:root[data-theme="graphite"] .login-page{background:radial-gradient(circle at top,#3c4148 0%,#2a2e35 55%)}
:root[data-theme="graphite"] .login-card{background:#353a42;border-color:#444a54;color:var(--text)}
:root[data-theme="graphite"] .table th,:root[data-theme="graphite"] .table td{border-color:#4a505a;color:var(--text)}
:root[data-theme="graphite"] .board-picker{background:#3a4049;border-color:#4a505a}
:root[data-theme="graphite"] .board-picker-menu{background:#353a42;border-color:#4a505a}
:root[data-theme="graphite"] .board-picker-option:hover,:root[data-theme="graphite"] .board-picker-option.active{background:#3a4049}

/* v0.3.38 — make sure the status tiles are readable in every theme. The
   base `.status-tile` rule (light theme) leaves `color` unset, so the label
   and number fall back to the inherited body color which can look very pale
   on a near-white card. We set a sensible default for the label and let the
   per-status rules override it. */
.status-tile-label{color:inherit;font-weight:750;font-size:12px;letter-spacing:.2px;text-transform:uppercase}

/* v0.3.12 polish */
.task-card{overflow:hidden;background:var(--panel)}
.task-card-colorbar{height:4px;margin:-1px -1px 10px;border-radius:12px 12px 0 0;background:var(--accent)}
.status-card-new .task-card-colorbar{background:#94a3b8}
.status-card-accepted .task-card-colorbar{background:#60a5fa}
.status-card-in_progress .task-card-colorbar{background:#4f6df5}
.status-card-waiting .task-card-colorbar{background:#f59e0b}
.status-card-review .task-card-colorbar{background:#8b5cf6}
.status-card-done .task-card-colorbar{background:#22c55e}
.priority-critical{box-shadow:inset 0 0 0 1px rgba(239,68,68,.05),0 3px 12px rgba(20,30,55,.05)}
.priority-high{box-shadow:inset 0 0 0 1px rgba(245,158,11,.04),0 3px 12px rgba(20,30,55,.05)}
.task-card:hover .task-card-colorbar{filter:saturate(1.15);height:5px}


/* v0.3.13 — personal profile + polished account UI */
.profile-trigger{display:flex;align-items:center;gap:9px;border:1px solid transparent;background:transparent;padding:5px 7px;border-radius:12px;cursor:pointer;color:var(--text);transition:.15s}
.profile-trigger:hover{background:var(--bg);border-color:var(--border)}
.profile-avatar{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;background:var(--accent-soft);font-size:16px;flex:0 0 auto}
.profile-trigger-text{display:flex;align-items:center;gap:7px;min-width:0}.profile-trigger-text #userName{font-weight:800;white-space:nowrap}.profile-caret{font-size:15px;color:var(--muted)}
.profile-popover{position:fixed;top:66px;right:18px;width:min(390px,calc(100vw - 24px));background:var(--panel);border:1px solid var(--border);border-radius:18px;box-shadow:0 24px 70px rgba(15,23,42,.18);z-index:80;overflow:hidden;animation:profileIn .16s ease-out}
.profile-popover-head{display:flex;align-items:center;gap:11px;padding:15px 16px;border-bottom:1px solid var(--border)}
.profile-big-avatar{width:44px;height:44px;border-radius:13px;display:grid;place-items:center;background:var(--accent);color:#fff;font-weight:900;letter-spacing:.4px}.profile-head-main{display:flex;flex-direction:column;gap:3px;min-width:0}.profile-head-main b{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.profile-head-main span{font-size:11px;color:var(--muted)}.profile-close{margin-left:auto}
.profile-tabs{display:grid;grid-template-columns:1fr 1fr;padding:6px;border-bottom:1px solid var(--border);background:var(--bg)}.profile-tab{border:0;background:transparent;border-radius:9px;padding:9px;font-weight:800;font-size:12px;color:var(--muted);cursor:pointer}.profile-tab.active{background:var(--panel);color:var(--text);box-shadow:0 2px 8px rgba(15,23,42,.06)}
.profile-admin-link-wrap{padding:12px 16px 0}
.profile-admin-link{display:flex;align-items:center;gap:11px;width:100%;padding:11px 13px;border:1px solid var(--border);background:var(--accent-soft);border-radius:13px;cursor:pointer;text-align:left;box-sizing:border-box}
.profile-admin-link:hover{border-color:var(--accent)}
.profile-admin-link>span:first-child{font-size:19px;line-height:1;flex-shrink:0}
.profile-admin-link b{display:block;font-size:13px;color:var(--text);font-weight:800}
.profile-admin-link small{display:block;font-size:11.5px;color:var(--muted);font-weight:600;margin-top:1px}
.profile-pane{padding:16px}.profile-form{display:grid;gap:12px}.profile-form label,.profile-password-form label{display:grid;gap:6px}.profile-form-actions{display:flex;justify-content:flex-end;padding-top:4px}.profile-divider{height:1px;background:var(--border);margin:16px 0}.password-block{display:flex;justify-content:space-between;align-items:center;gap:14px}.password-block>div{display:grid;gap:3px}
.profile-password-form{display:grid;gap:12px}.profile-password-modal{max-width:480px}
.theme-grid{display:grid;gap:9px}.theme-option{width:100%;display:grid;grid-template-columns:34px 1fr 18px;align-items:center;gap:10px;text-align:left;padding:11px 12px;border:1px solid var(--border);border-radius:13px;background:var(--panel);color:var(--text);cursor:pointer;transition:.15s}.theme-option:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--accent) 42%,var(--border));box-shadow:0 7px 18px rgba(15,23,42,.06)}.theme-option.selected{border-color:var(--accent);background:var(--accent-soft)}.theme-option-icon{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:var(--bg)}.theme-option span:nth-child(2){display:grid;gap:2px}.theme-option small{font-size:10px;color:var(--muted)}.theme-check{opacity:0;color:var(--accent);font-weight:900}.theme-option.selected .theme-check{opacity:1}
@keyframes profileIn{from{opacity:0;transform:translateY(-5px) scale(.99)}to{opacity:1;transform:none}}
:root[data-theme="dark"] .profile-popover{box-shadow:0 24px 70px rgba(0,0,0,.48)}:root[data-theme="dark"] .profile-tab.active{box-shadow:0 2px 10px rgba(0,0,0,.22)}
@media(max-width:700px){.profile-trigger-text{display:none}.profile-popover{right:10px;top:60px}}

/* v0.3.14 visual system */
.readonly-field{background:var(--bg)!important;color:var(--muted)!important;cursor:not-allowed}.filter-chip,.filter-reset{border:1px solid var(--border);background:var(--panel);color:var(--muted);border-radius:999px;padding:8px 12px;font-size:12px;font-weight:750}.filter-chip.active{background:var(--accent-soft);color:var(--accent);border-color:#b8c7ff}.task-card{position:relative;overflow:hidden;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}.task-card:hover{box-shadow:0 10px 24px rgba(15,23,42,.10)}.task-card-cover{position:absolute;left:0;right:0;top:0;height:4px;background:#4f6df5}.cover-violet .task-card-cover{background:#8b5cf6}.cover-green .task-card-cover{background:#22c55e}.cover-orange .task-card-cover{background:#f59e0b}.cover-red .task-card-cover{background:#ef4444}.cover-slate .task-card-cover{background:#64748b}.cover-pink .task-card-cover{background:#ec4899}.cover-blue .task-card-cover{background:#4f6df5}.task-card-tools{display:flex;align-items:center;gap:3px}.card-menu-btn{border:0;background:transparent;color:var(--muted);width:28px;height:28px;border-radius:8px;font-size:18px}.card-menu-btn:hover{background:var(--bg);color:var(--text)}.mini-alert{font-size:10px;font-weight:800;color:#b91c1c;background:#fee2e2;border-radius:999px;padding:3px 7px}.card-progress{display:flex;align-items:center;gap:8px}.card-progress .progress{flex:1;margin:4px 0 5px}.card-progress span{font-size:11px;color:var(--muted);font-weight:750}.card-counters{font-size:11px;color:var(--muted);margin-top:7px}.card-quick-menu{position:fixed;width:200px;background:var(--panel);border:1px solid var(--border);box-shadow:0 18px 44px rgba(15,23,42,.18);border-radius:13px;padding:6px;z-index:90}.card-quick-menu button{display:block;width:100%;text-align:left;border:0;background:transparent;color:var(--text);padding:9px 10px;border-radius:8px}.card-quick-menu button:hover{background:var(--bg)}.color-menu{display:flex;gap:8px;padding:8px}.color-dot{width:22px!important;height:22px!important;padding:0!important;border-radius:50%!important}.color-dot.blue{background:#4f6df5}.color-dot.violet{background:#8b5cf6}.color-dot.green{background:#22c55e}.color-dot.orange{background:#f59e0b}.color-dot.red{background:#ef4444}.color-dot.slate{background:#64748b}.color-dot.pink{background:#ec4899}.participant-list{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}.participant-chip{display:inline-flex;align-items:center;gap:6px;padding:7px 10px;border:1px solid var(--border);border-radius:999px;background:var(--bg);font-size:12px;font-weight:750}.participant-picker{display:grid;gap:8px}.participant-option{display:flex;align-items:center;gap:10px;padding:10px;border:1px solid var(--border);border-radius:12px;background:var(--panel)}.participant-option:hover{background:var(--bg)}.participant-option input{width:18px}.participant-option span:nth-child(3){display:grid;gap:2px}.participant-option small{color:var(--muted)}.command-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.50);backdrop-filter:blur(7px);z-index:100;display:flex;justify-content:center;align-items:flex-start;padding-top:12vh}.command-palette{width:min(680px,calc(100vw - 30px));background:var(--panel);border:1px solid var(--border);border-radius:18px;box-shadow:0 30px 80px rgba(15,23,42,.28);overflow:hidden}.command-top{display:flex;gap:10px;align-items:center;padding:15px;border-bottom:1px solid var(--border)}.command-top input{border:0;background:transparent;box-shadow:none;padding:6px;font-size:16px}.command-top input:focus{box-shadow:none}.command-results{max-height:55vh;overflow:auto;padding:7px}.command-item{display:flex;gap:12px;align-items:center;width:100%;border:0;background:transparent;text-align:left;color:var(--text);padding:11px 12px;border-radius:11px}.command-item:hover{background:var(--bg)}.command-item>span:first-child{width:28px;text-align:center}.command-item span:last-child{display:grid;gap:2px}.command-item small{color:var(--muted)}.command-hint{padding:9px 15px;color:var(--muted);font-size:11px;border-top:1px solid var(--border)}

.template-select{max-width:280px;background:var(--bg)}.comment-reply{margin-left:28px;border-left:2px solid var(--border);padding-left:14px}.comment-reply-btn{border:0;background:transparent;color:var(--accent);font-size:12px;font-weight:700;padding:5px 0}.comment-reply-btn:hover{text-decoration:underline}.task-card.just-dragged{pointer-events:auto}.task-card.dragging{opacity:.45;transform:rotate(1deg) scale(.985)}.tt-dragging .task-card{cursor:grabbing}.tt-dragging .task-card:not(.dragging){transition:none}.board-toolbar select{min-width:150px}.status-tile{transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.status-tile:hover{transform:translateY(-2px);box-shadow:0 14px 28px rgba(15,23,42,.10)}

/* v0.3.15 — workspaces / boards */
.board-title-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.board-title-row h1{margin:0}
.hero-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.board-switcher{min-width:240px;height:42px;padding:0 38px 0 14px;border:1px solid var(--border,#d8dfeb);border-radius:12px;background:var(--surface,#fff);font-weight:600;box-shadow:0 3px 10px rgba(15,23,42,.05)}
.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin:8px 0 20px}
.page-head h1{margin:0}
.boards-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px}
.board-admin-card{background:var(--surface,#fff);border:1px solid var(--border,#e1e6ef);border-radius:18px;padding:20px;display:grid;grid-template-columns:auto 1fr;gap:16px;box-shadow:0 10px 30px rgba(15,23,42,.06)}
.board-admin-icon{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;background:linear-gradient(135deg,#5b6df6,#7a5cf2);color:#fff;font-size:23px;font-weight:700}
.board-admin-main h2{margin:0 0 6px;font-size:20px}.board-admin-main p{margin:0 0 14px;color:var(--muted,#718096);line-height:1.5}.board-admin-meta{display:flex;gap:14px;flex-wrap:wrap;color:var(--muted,#718096);font-size:13px}.board-admin-actions{grid-column:1/-1;display:flex;gap:8px;flex-wrap:wrap;padding-top:10px;border-top:1px solid var(--border,#e1e6ef)}
.board-field{display:block;margin-bottom:12px}
.dark .board-switcher{background:#172033;color:#f5f7fb;border-color:#2b3549}
[data-theme="dark"] .board-switcher{background:#131b2b;color:#f3f6fb;border-color:#2a3549}
[data-theme="dark"] .board-admin-card{background:#131b2b;border-color:#2a3549}
[data-theme="dark"] .board-admin-main p,[data-theme="dark"] .board-admin-meta{color:#9da9bb}
@media(max-width:800px){.page-head{align-items:stretch;flex-direction:column}.hero-actions{width:100%}.board-switcher{width:100%}}


/* v0.3.19 */
.board-switcher-wrap{display:flex;align-items:center;gap:9px;padding:6px 8px 6px 12px;border:1px solid var(--border);background:var(--panel);border-radius:14px;box-shadow:0 5px 18px rgba(15,23,42,.06)}
.board-switcher-label{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.7px;color:var(--muted)}
.board-switcher{min-width:240px;height:38px;border:0!important;background:transparent!important;box-shadow:none!important;font-weight:750;padding-left:0}
.board-switcher-empty{display:inline-flex;align-items:center;padding:10px 14px;border:1px solid var(--border);background:var(--panel);border-radius:12px;color:var(--muted);font-size:13px}
.board-subline{display:inline-flex;align-items:center;gap:7px;margin-top:8px;font-size:12px;color:var(--muted);font-weight:650}.board-subline-dot{width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}
.task-card[draggable="true"]{cursor:grab}.task-card[draggable="true"]:active{cursor:grabbing}.task-card.dragging{opacity:.35!important;transform:rotate(1deg) scale(.985)!important}.tt-dragging .task-card:not(.dragging){pointer-events:none}
.task-card.cover-slate .task-card-cover{background:#64748b}.task-card.cover-blue .task-card-cover{background:#4f6df5}.task-card.cover-violet .task-card-cover{background:#8b5cf6}.task-card.cover-green .task-card-cover{background:#22c55e}.task-card.cover-orange .task-card-cover{background:#f59e0b}.task-card.cover-pink .task-card-cover{background:#ec4899}.task-card.cover-red .task-card-cover{background:#ef4444}
@media(max-width:800px){.board-switcher-wrap{width:100%}.board-switcher{min-width:0;width:100%}}

/* v0.3.20 fixes */
.board-switcher{position:relative}.board-switcher-btn{display:flex;align-items:center;gap:10px;min-width:260px;height:38px;border:0;background:transparent;color:var(--text);font-weight:800;padding:0 4px;cursor:pointer;text-align:left}.board-switcher-icon{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);font-size:14px}.board-switcher-caret{margin-left:auto;color:var(--muted)}.board-switcher-menu{position:absolute;top:calc(100% + 8px);right:0;min-width:300px;max-height:340px;overflow:auto;padding:6px;background:var(--panel);border:1px solid var(--border);border-radius:14px;box-shadow:0 22px 50px rgba(15,23,42,.16);display:none;z-index:80}.board-switcher-menu.open{display:block}.board-switcher-option{width:100%;display:flex;align-items:center;gap:10px;padding:10px 11px;border:0;background:transparent;color:var(--text);border-radius:10px;text-align:left;font-weight:750;cursor:pointer}.board-switcher-option:hover,.board-switcher-option.active{background:var(--bg)}.board-option-icon{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent)}.board-option-check{margin-left:auto;color:var(--accent)}.attachment-card{position:relative}.attachment-delete{margin-left:auto;white-space:nowrap}.status-list-hero{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:16px}.status-list-hero h1{margin:0}.task-card{background:var(--panel)!important}.task-card.priority-critical .task-card-cover{background:#ef4444}.task-card.priority-high .task-card-cover{background:#f59e0b}.task-card.priority-normal .task-card-cover{background:#4f6df5}.task-card.priority-low .task-card-cover{background:#22c55e}.task-card.priority-critical{border-color:#fecaca}.task-card.priority-high{border-color:#fed7aa}.task-card.priority-normal{border-color:#c7d2fe}.task-card.priority-low{border-color:#bbf7d0}.task-card[draggable="true"]{cursor:grab}.task-card.dragging{cursor:grabbing!important}.tt-dragging .task-card:not(.dragging){pointer-events:auto}.task-card.dragging{pointer-events:none!important}

/* v0.3.21 — reliable pointer drag, board picker, file drop, clearer themes */
.board-picker{position:relative;display:inline-flex;align-items:center;gap:8px;padding:5px 7px 5px 10px;border:1px solid var(--border);background:var(--panel);border-radius:13px;box-shadow:0 5px 18px rgba(15,23,42,.05)}
.board-picker-caption{font-size:10px;font-weight:850;text-transform:uppercase;letter-spacing:.7px;color:var(--muted)}
.board-picker-btn{display:flex;align-items:center;gap:9px;min-width:250px;border:0;background:transparent;color:var(--text);font-weight:800;padding:4px;cursor:pointer;text-align:left}
.board-picker-mark,.board-picker-option-mark{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);font-size:13px;flex:0 0 auto}
.board-picker-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.board-picker-chevron{margin-left:auto;color:var(--muted)}
.board-picker-menu{display:none;position:absolute;top:calc(100% + 8px);left:0;min-width:330px;max-width:420px;max-height:320px;overflow:auto;padding:7px;background:var(--panel);border:1px solid var(--border);border-radius:14px;box-shadow:0 20px 50px rgba(15,23,42,.18);z-index:80}
.board-picker-menu.open{display:block}.board-picker-option{display:flex;align-items:center;gap:10px;width:100%;border:0;background:transparent;color:var(--text);padding:10px;border-radius:10px;text-align:left;cursor:pointer;font-weight:750}.board-picker-option:hover,.board-picker-option.active{background:var(--bg)}.board-picker-option-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.board-picker-check{margin-left:auto;color:var(--accent);font-weight:900}
.status-list-hero{display:block}.status-list-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.status-list-back{margin:0 0 10px}.status-list-back .secondary{font-weight:750}
.task-file-drop,.create-file-drop{display:flex;align-items:center;gap:12px;border:1px dashed #b9c4d4;background:var(--bg);border-radius:13px;padding:11px 13px;color:var(--muted);transition:.15s}.task-file-drop{margin-top:10px}.task-file-drop>span,.create-file-drop>span{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);font-weight:900}.task-file-drop b,.create-file-drop b{display:block;color:var(--text);font-size:12px}.task-file-drop small,.create-file-drop small{display:block;font-size:11px;margin-top:2px}.task-file-drop.is-dragover,.create-file-drop.is-dragover{background:var(--accent-soft);border-color:var(--accent);transform:translateY(-1px)}
.create-file-drop{margin-top:10px;cursor:pointer}.tt-dragging{user-select:none}.tt-dragging .task-card:not(.dragging){opacity:.9}.task-card.dragging{opacity:.35!important;box-shadow:0 20px 40px rgba(15,23,42,.18)!important;transform:rotate(1deg) scale(.985)!important}.drag-placeholder{min-height:92px;margin-bottom:9px;border:2px dashed var(--col-status,var(--accent));border-radius:12px;background:color-mix(in srgb,var(--col-status,var(--accent)) 16%,transparent);color:var(--col-status,var(--accent));font-weight:800;display:flex;align-items:center;justify-content:center}.column.drag-over{outline:2px solid var(--col-status,var(--accent));outline-offset:2px}.column.drag-active{background:color-mix(in srgb,var(--col-status,var(--accent-soft)) 55%,var(--panel))}
:root[data-theme="dark"] .status-tile{background:#151d27;color:#f5f7fb;border-color:#2c3949}
:root[data-theme="dark"] .status-tile strong,
:root[data-theme="dark"] .status-tile-label,
:root[data-theme="dark"] .status-tile-link{color:#f1f5f9}
:root[data-theme="dark"] .board-picker{background:#151e29;border-color:#2c3949}
:root[data-theme="dark"] .board-picker-btn{color:#f5f7fb}
:root[data-theme="dark"] .board-picker-menu{background:#121a23;border-color:#2d3a4a}
:root[data-theme="dark"] .board-picker-option{color:#eef3f8}
:root[data-theme="dark"] .board-picker-option:hover,:root[data-theme="dark"] .board-picker-option.active{background:#1b2632}
:root[data-theme="dark"] .task-file-drop,:root[data-theme="dark"] .create-file-drop{background:#101821;border-color:#435268;color:#aeb9c8}
:root[data-theme="dark"] .task-file-drop b,:root[data-theme="dark"] .create-file-drop b{color:#f0f4f9}
@media(max-width:800px){.board-picker{width:100%}.board-picker-btn{min-width:0;width:100%}.board-picker-menu{width:100%;min-width:0}.status-list-heading{flex-direction:column}.status-list-heading .board-picker{width:100%}}

/* v0.3.21b — status tile naming collision + full priority tint */
.status-tile.tone-primary{background:var(--panel);color:var(--text);border-color:#cbd5ff}
.task-card.priority-critical{background:linear-gradient(180deg,#fff1f1 0%,#fff8f8 100%) !important;border-color:#f3b7b7 !important}
.task-card.priority-high{background:linear-gradient(180deg,#fff6e8 0%,#fffbf4 100%) !important;border-color:#f2c98f !important}
.task-card.priority-normal{background:linear-gradient(180deg,#eef4ff 0%,#f8faff 100%) !important;border-color:#bfccf5 !important}
.task-card.priority-low{background:linear-gradient(180deg,#eefaf2 0%,#f8fdf9 100%) !important;border-color:#b9dfc5 !important}
:root[data-theme="dark"] .status-tile.tone-primary{background:#151d27;color:#f5f7fb;border-color:#3e4d72}
:root[data-theme="dark"] .task-card.priority-critical{background:linear-gradient(180deg,#29191c 0%,#1b1518 100%) !important;border-color:#63323a !important}
:root[data-theme="dark"] .task-card.priority-high{background:linear-gradient(180deg,#2b2417 0%,#1c1914 100%) !important;border-color:#66502b !important}
:root[data-theme="dark"] .task-card.priority-normal{background:linear-gradient(180deg,#18233a 0%,#151b27 100%) !important;border-color:#34496f !important}
:root[data-theme="dark"] .task-card.priority-low{background:linear-gradient(180deg,#18281f 0%,#151d19 100%) !important;border-color:#355a45 !important}
/* v0.3.22 polish */
.status-list-back{margin-top:12px}
.status-list-heading>.board-picker{margin-top:2px}
.task-drawer-backdrop{justify-content:center!important;align-items:center!important;padding:28px!important;background:rgba(15,23,42,.46)!important}
.task-drawer{width:min(980px,calc(100vw - 56px))!important;height:min(88vh,920px)!important;border-radius:22px!important;box-shadow:0 30px 90px rgba(15,23,42,.24)!important}
.dashboard-overview-tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:12px 0 18px}
.overview-tile{border:1px solid var(--border);background:var(--panel);border-radius:16px;padding:16px;text-align:left;display:grid;gap:4px;min-height:112px;color:var(--text);box-shadow:var(--shadow);cursor:pointer}
.overview-tile span{font-size:12px;color:var(--muted);font-weight:750}.overview-tile strong{font-size:31px;line-height:1.05}.overview-tile small{color:var(--muted)}.overview-tile.danger strong{color:var(--danger)}.overview-tile.warning strong{color:var(--warn)}.overview-tile.success strong{color:var(--success)}
.status-tile.neutral{background:linear-gradient(180deg,#f8fafc,#fff);color:#334155;border-color:#d7dde7}.status-tile.info{background:linear-gradient(180deg,#eff6ff,#fff);color:#1e4f97;border-color:#c7daf8}.status-tile.tone-primary{background:linear-gradient(180deg,#eef4ff,#f9fbff);color:#3b50a3;border-color:#c5d1fb}.status-tile.warning{background:linear-gradient(180deg,#fff7ed,#fff);color:#9a5b0b;border-color:#fed7aa}.status-tile.review{background:linear-gradient(180deg,#f5f3ff,#fff);color:#6d45b7;border-color:#ddd3fe}.status-tile.success{background:linear-gradient(180deg,#ecfdf3,#fff);color:#1d7a4a;border-color:#bde7cc}
:root[data-theme="dark"] .status-tile.neutral{background:#18212c;color:#dbe4ee;border-color:#354252}:root[data-theme="dark"] .status-tile.info{background:#17263a;color:#cfe2ff;border-color:#365276}:root[data-theme="dark"] .status-tile.tone-primary{background:#1a2340;color:#dce4ff;border-color:#45578c}:root[data-theme="dark"] .status-tile.warning{background:#2b2417;color:#ffe2af;border-color:#6a5126}:root[data-theme="dark"] .status-tile.review{background:#251f38;color:#e5d9ff;border-color:#5d4a84}:root[data-theme="dark"] .status-tile.success{background:#172b21;color:#cef4dc;border-color:#37654a}
.board-toolbar>.board-picker{flex:0 0 auto}.board-toolbar>.board-picker .board-picker-btn{min-width:210px}
.task-card{border-radius:15px}.task-card-cover{height:6px!important;border-radius:15px 15px 0 0}.task-card.priority-critical{box-shadow:inset 0 0 0 1px rgba(239,68,68,.18),0 3px 12px rgba(15,23,42,.05)}.task-card.priority-high{box-shadow:inset 0 0 0 1px rgba(245,158,11,.18),0 3px 12px rgba(15,23,42,.05)}.task-card.priority-normal{box-shadow:inset 0 0 0 1px rgba(79,109,245,.18),0 3px 12px rgba(15,23,42,.05)}.task-card.priority-low{box-shadow:inset 0 0 0 1px rgba(34,197,94,.18),0 3px 12px rgba(15,23,42,.05)}
.create-fields-3{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.create-fields-3+label{display:none}.create-file-remove{margin-left:auto;color:var(--muted)}
@media(max-width:1000px){.dashboard-overview-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.create-fields-3{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.dashboard-overview-tiles{grid-template-columns:1fr}.task-drawer-backdrop{padding:0!important}.task-drawer{width:100%!important;height:100%!important;border-radius:0!important}.create-fields-3{grid-template-columns:1fr}.board-toolbar>.board-picker{width:100%}}

/* v0.3.23 fixes and polish */
.status-tile.status-new{background:linear-gradient(180deg,#f1f5f9 0%,#fff 100%);color:#334155;border-color:#cbd5e1}
.status-tile.status-accepted{background:linear-gradient(180deg,#eff6ff 0%,#fff 100%);color:#1d4f91;border-color:#bfd6f7}
.status-tile.status-in_progress{background:linear-gradient(180deg,#eef4ff 0%,#fff 100%);color:#364fa3;border-color:#bac8f4}
.status-tile.status-waiting{background:linear-gradient(180deg,#fff7ed 0%,#fff 100%);color:#9a5b0b;border-color:#f3d2a2}
.status-tile.status-review{background:linear-gradient(180deg,#f5f3ff 0%,#fff 100%);color:#6842ad;border-color:#d7caf9}
.status-tile.status-done{background:linear-gradient(180deg,#ecfdf3 0%,#fff 100%);color:#1b7447;border-color:#b8e1c7}
:root[data-theme="dark"] .status-tile.status-new{background:#1a232d;color:#dbe5ef;border-color:#364555}
:root[data-theme="dark"] .status-tile.status-accepted{background:#17273b;color:#cfe1ff;border-color:#38577e}
:root[data-theme="dark"] .status-tile.status-in_progress{background:#1b2640;color:#dce5ff;border-color:#465c91}
:root[data-theme="dark"] .status-tile.status-waiting{background:#2a2318;color:#ffe0ad;border-color:#6a5128}
:root[data-theme="dark"] .status-tile.status-review{background:#261f3b;color:#e5d9ff;border-color:#5c4a84}
:root[data-theme="dark"] .status-tile.status-done{background:#172b20;color:#ccf1da;border-color:#376249}
/* v0.3.38 — graphite theme shares the dark per-status tiles for consistency. */
:root[data-theme="graphite"] .status-tile.status-new{background:#2f343c;color:#cdd6e3;border-color:#4a505a}
:root[data-theme="graphite"] .status-tile.status-accepted{background:#1f2a44;color:#cfdcfb;border-color:#475a85}
:root[data-theme="graphite"] .status-tile.status-in_progress{background:#1f2c4d;color:#dde6ff;border-color:#52699e}
:root[data-theme="graphite"] .status-tile.status-waiting{background:#3a2c1c;color:#f0d8a3;border-color:#6a5128}
:root[data-theme="graphite"] .status-tile.status-review{background:#2c2440;color:#e3d8fb;border-color:#5d4a85}
:root[data-theme="graphite"] .status-tile.status-done{background:#1f3327;color:#cdebd8;border-color:#376249}

/* Task card priority color wraps the whole card */
.task-card{border:2px solid var(--task-priority,#bfccf5)!important;border-radius:16px!important;overflow:hidden}
.task-card.priority-critical{--task-priority:#ef9a9a}.task-card.priority-high{--task-priority:#efbe6b}.task-card.priority-normal{--task-priority:#9eb2f6}.task-card.priority-low{--task-priority:#98d5ae}
.task-card .task-card-cover{height:5px!important;background:var(--task-priority)!important;border-radius:0!important}
:root[data-theme="dark"] .task-card.priority-critical{--task-priority:#b85b65}:root[data-theme="dark"] .task-card.priority-high{--task-priority:#b78942}:root[data-theme="dark"] .task-card.priority-normal{--task-priority:#667fd0}:root[data-theme="dark"] .task-card.priority-low{--task-priority:#4c8c65}

/* Create task fields — vertical 2-column layout, all labels share the same
   structure so heights stay aligned and "необязательно" never pushes the
   surrounding fields around. */
.create-fields-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.create-fields-grid>label{display:grid;grid-template-rows:auto auto;gap:6px;min-width:0}
.create-fields-grid .field-label{font-size:13px;font-weight:600;color:#4b5563;line-height:1.3;min-height:18px;display:flex;align-items:center;gap:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.create-fields-grid .field-hint{font-style:normal;color:var(--muted);font-weight:500;font-size:11px;background:var(--bg);padding:1px 6px;border-radius:999px;white-space:nowrap;flex-shrink:0}
.create-fields-grid input,.create-fields-grid select{width:100%;box-sizing:border-box;min-width:0}
.create-fields-grid .date-field,.create-fields-grid .time-field{height:42px}
@media(max-width:820px){.create-fields-grid{grid-template-columns:1fr}}

/* v0.3.24 verified fixes */
.task-card{border:2px solid transparent!important;background-clip:padding-box}
.task-card.priority-critical{border-color:#ef4444!important;background:linear-gradient(180deg,#fff7f7 0%,#fff 72%)!important;box-shadow:0 0 0 1px rgba(239,68,68,.12),0 4px 14px rgba(16,24,40,.06)!important}
.task-card.priority-high{border-color:#f59e0b!important;background:linear-gradient(180deg,#fffaf1 0%,#fff 72%)!important;box-shadow:0 0 0 1px rgba(245,158,11,.12),0 4px 14px rgba(16,24,40,.06)!important}
.task-card.priority-normal{border-color:#4f6df5!important;background:linear-gradient(180deg,#f7f8ff 0%,#fff 72%)!important;box-shadow:0 0 0 1px rgba(79,109,245,.10),0 4px 14px rgba(16,24,40,.06)!important}
.task-card.priority-low{border-color:#22c55e!important;background:linear-gradient(180deg,#f5fdf7 0%,#fff 72%)!important;box-shadow:0 0 0 1px rgba(34,197,94,.10),0 4px 14px rgba(16,24,40,.06)!important}
.task-card .task-card-cover{height:0!important;display:none!important}
.task-card.dragging{opacity:.42!important}
.task-modal-backdrop{align-items:center!important;justify-content:center!important}
.task-modal-shell{width:min(880px,calc(100vw - 40px));max-height:92vh;background:var(--panel);border:1px solid var(--border);border-radius:20px;box-shadow:0 30px 90px rgba(0,0,0,.28);overflow:auto;color:var(--text)}
.task-modal-shell .task-drawer-head{position:sticky;top:0;z-index:2;background:var(--panel);border-bottom:1px solid var(--border);padding:20px 24px;display:flex;justify-content:space-between;gap:18px}
.task-modal-shell .task-drawer-body{padding:22px 24px}
.task-modal-shell .modal-close-text{flex:0 0 auto}
.status-tile.tone-primary:after{background:#526df6!important}
[data-theme="dark"] .task-card.priority-critical{background:linear-gradient(180deg,#2a171a 0%,#121a23 72%)!important;border-color:#ef6b73!important}
[data-theme="dark"] .task-card.priority-high{background:linear-gradient(180deg,#2b2216 0%,#121a23 72%)!important;border-color:#f2a33a!important}
[data-theme="dark"] .task-card.priority-normal{background:linear-gradient(180deg,#1b2442 0%,#121a23 72%)!important;border-color:#7188ff!important}
[data-theme="dark"] .task-card.priority-low{background:linear-gradient(180deg,#17291f 0%,#121a23 72%)!important;border-color:#43d17c!important}
[data-theme="dark"] .task-modal-shell{background:var(--panel);color:var(--text);border-color:var(--border)}

/* v0.3.25 — task interaction polish */
.task-card[data-dnd="1"]{cursor:grab;user-select:none;-webkit-user-select:none;touch-action:none}
.task-card[data-dnd="1"]:active{cursor:grabbing}
.task-card.dragging{opacity:.42!important;transform:rotate(.7deg) scale(.985)!important;box-shadow:0 24px 50px rgba(15,23,42,.20)!important}
.tt-dragging{cursor:grabbing!important}
.column.drag-over{outline:2px solid var(--col-status,var(--accent));outline-offset:3px;background:color-mix(in srgb,var(--col-status,var(--accent)) 16%,var(--panel))!important}
.task-description.is-editable{cursor:text;transition:border-color .15s,box-shadow .15s,background .15s}
.task-description.is-editable:hover{border-color:var(--accent)}
.task-description.is-editable:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.task-modal-shell .task-modal-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto;flex-wrap:wrap;justify-content:flex-end;max-width:340px}
.task-modal-shell .task-modal-actions .secondary.small-btn{min-width:92px;height:36px;display:inline-flex;align-items:center;justify-content:center}
.task-modal-shell .task-head-top #editTaskBtn{height:36px;min-width:96px;display:inline-flex;align-items:center;justify-content:center}
.task-file-drop{min-height:150px!important;padding:24px!important;justify-content:center!important;border-radius:16px!important;flex-direction:column!important;text-align:center!important}
.create-file-list{margin-top:14px}
.create-file-item{display:grid;grid-template-columns:38px minmax(0,1fr) auto;grid-template-rows:none;align-items:center;gap:10px;padding:8px 10px;border:1px solid #e5e8ee;background:#fff;border-radius:10px;font-size:12px}
.create-file-item .file-thumb{width:38px;height:38px;border-radius:8px;overflow:hidden;background:#eef2ff;display:grid;place-items:center;flex-shrink:0}
.create-file-item .file-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.create-file-item .file-thumb-text{font-size:10px;font-weight:900;color:var(--accent)}
.create-file-item .is-previewable{cursor:pointer}
.create-file-item .file-meta{min-width:0;display:flex;flex-direction:column;gap:2px}
.create-file-item .file-name{grid-column:auto;grid-row:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.create-file-item small{grid-column:auto;grid-row:auto;color:var(--muted)}
.create-file-item .create-file-remove{grid-column:auto;grid-row:auto;justify-self:end;margin:0;width:28px;height:28px;display:grid;place-items:center;border:0;border-radius:8px;background:transparent;color:var(--muted);cursor:pointer;transition:background .12s,color .12s}
.create-file-item .create-file-remove:hover{background:var(--accent-soft,#fee2e2);color:#dc2626}

/* v0.3.27 — smoother, more reliable Kanban drag */
body.tt-dragging{user-select:none;-webkit-user-select:none;cursor:grabbing}
body.tt-dragging .task-card{cursor:grabbing}
.task-card.is-draggable{cursor:grab}
.task-card.is-draggable:active{cursor:grabbing}

/* v0.3.28 — status tiles: keep them white cards with a colored accent bar + number */
.status-tile.neutral:after{background:#94a3b8}
.status-tile.neutral strong{color:#64748b}
.status-tile.info strong{color:#3b82f6}
.status-tile.primary strong{color:#526df6}
.status-tile.warning strong{color:#d97706}
.status-tile.review strong{color:#7c3aed}
.status-tile.success strong{color:#16a34a}
.team-person-icon{display:inline-flex;width:24px;height:24px;align-items:center;justify-content:center;margin-right:6px;font-size:15px;vertical-align:middle}
.team-spec-label{margin-left:6px}

/* v0.3.29 — pointer-based Kanban drag (Trello-style), replaces native HTML5 DnD */
.task-card.is-draggable{cursor:grab;touch-action:none}
.task-card.is-draggable:active{cursor:grabbing}
.task-card.is-drag-source{display:none!important}
.drag-ghost{position:fixed;left:0;top:0;z-index:9999;margin:0;pointer-events:none;
  box-shadow:0 26px 54px rgba(20,30,55,.34),0 0 0 1px rgba(79,109,245,.14);
  transform:rotate(2.5deg) scale(1.04);opacity:.98;will-change:left,top;
  animation:tt-ghost-pop .16s cubic-bezier(.2,.9,.3,1.3)}
@keyframes tt-ghost-pop{from{transform:rotate(0deg) scale(.97)}to{transform:rotate(2.5deg) scale(1.04)}}
body.tt-dragging{cursor:grabbing;user-select:none;-webkit-user-select:none}
body.tt-dragging *{cursor:grabbing!important}
.column.drag-over{animation:tt-column-pulse 1.1s ease-in-out infinite}
@keyframes tt-column-pulse{0%,100%{box-shadow:inset 0 0 0 2px var(--col-status,var(--accent))}50%{box-shadow:inset 0 0 0 2px transparent}}

/* v0.3.33 — attachment delete as a subtle corner trash-icon button */
.attachment-card{position:relative}
.attachment-card .attachment-info{padding-right:26px}
.attachment-card .attachment-delete{
  position:absolute;top:8px;right:8px;width:28px;height:28px;padding:0;margin:0;
  display:grid;place-items:center;border:0;border-radius:8px;background:transparent;
  color:var(--muted);cursor:pointer;opacity:0;
  transition:opacity .15s ease,background .15s ease,color .15s ease;
}
.attachment-card .attachment-delete svg{display:block}
.attachment-card:hover .attachment-delete,
.attachment-card .attachment-delete:focus-visible{opacity:1}
.attachment-card .attachment-delete:hover{background:var(--accent-soft);color:#dc2626}
.attachment-card .attachment-delete:disabled{opacity:.4;cursor:default}
@media (hover:none){ .attachment-card .attachment-delete{opacity:1} }
:root[data-theme="dark"] .attachment-card .attachment-delete:hover{color:#f87171}

/* v0.3.34 — collapsible task history */
.history-section{margin-top:4px}
.history-section>.history-summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:8px;user-select:none;padding:6px 0}
.history-section>.history-summary::-webkit-details-marker{display:none}
.history-section>.history-summary::after{content:"⌄";margin-left:2px;color:var(--muted);font-size:14px;transition:transform .18s ease}
.history-section[open]>.history-summary::after{transform:rotate(180deg)}
.history-count{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:var(--accent-soft);color:var(--accent);font-size:12px;font-weight:700}
.history-section>.history-list{margin-top:8px}

/* v0.3.35 — live notification bell, @mentions */
#notifBtn{position:relative}
#notifCount{display:none}
#notifCount.has-unread{display:inline-grid;place-items:center;position:absolute;top:-4px;right:-4px;
  min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:#ef4444;color:#fff;
  font-size:11px;font-weight:700;line-height:1;box-shadow:0 0 0 2px var(--panel)}
.notifications-popover .popover-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.notifications-popover .popover-actions{display:flex;align-items:center;gap:6px}
.link-btn{background:none;border:0;color:var(--accent);cursor:pointer;font-size:12px;font-weight:600;padding:4px 6px;border-radius:6px}
.link-btn:hover{background:var(--accent-soft)}
.notif-item{display:flex;gap:10px;align-items:flex-start;width:100%;text-align:left;background:none;border:0;
  padding:10px 12px;border-radius:10px;cursor:pointer;transition:background .12s}
.notif-item:hover{background:var(--accent-soft)}
.notif-item.is-read{opacity:.62}
.notif-item .notif-text{display:flex;flex-direction:column;gap:2px;min-width:0}
.notif-item .notif-text b{font-size:13px}
.notif-item .notif-text small{color:var(--muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.notif-item .notif-text time{color:var(--muted);font-size:11px;margin-top:2px}
.notif-dot{flex:0 0 auto;width:8px;height:8px;border-radius:50%;background:var(--accent);margin-top:6px}
.notif-dot.read{background:transparent;box-shadow:inset 0 0 0 1px var(--border)}
.mention{color:var(--accent);background:var(--accent-soft);border-radius:5px;padding:0 3px;font-weight:600}

/* v0.3.36 — personal notes slide-over */
.notes-overlay{position:fixed;inset:0;background:rgba(15,23,42,.32);z-index:1200;animation:notesFade .18s ease}
@keyframes notesFade{from{opacity:0}to{opacity:1}}
.notes-panel{position:fixed;top:0;right:0;height:100%;width:min(380px,92vw);z-index:1201;
  background:var(--panel);border-left:1px solid var(--border);box-shadow:-18px 0 50px rgba(15,23,42,.18);
  display:flex;flex-direction:column;transform:translateX(102%);transition:transform .18s ease}
.notes-panel.open{transform:translateX(0)}
.notes-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:16px 18px;border-bottom:1px solid var(--border)}
.notes-head b{font-size:16px}
.notes-head-actions{display:flex;align-items:center;gap:8px}
.notes-body{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:12px}
.note-card{background:var(--bg);border:1px solid var(--border);border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;gap:8px}
.note-card .note-text{width:100%;border:0;background:transparent;resize:vertical;min-height:70px;color:var(--text);
  font:inherit;line-height:1.5;outline:none}
.note-foot{display:flex;align-items:center;gap:10px}
.note-time{color:var(--muted);font-size:11px}
.note-saved{color:#16a34a;font-size:11px;font-weight:600}
.note-del{margin-left:auto;width:28px;height:28px;display:grid;place-items:center;border:0;border-radius:8px;
  background:transparent;color:var(--muted);cursor:pointer;transition:background .12s,color .12s}
.note-del:hover{background:var(--accent-soft);color:#dc2626}
:root[data-theme="dark"] .note-del:hover{color:#f87171}

/* v0.3.38 — System settings page layout. */
.settings-form{display:grid;gap:14px;max-width:880px}
.settings-form .create-card .section-title{margin-bottom:14px}
.settings-pwd-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.settings-pwd-row input{flex:1;min-width:200px}
.settings-actions{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}
.auth-switch a{color:var(--accent);text-decoration:none;font-weight:600}
.auth-switch a:hover{text-decoration:underline}
:root[data-theme="dark"] .auth-ok{background:rgba(34,197,94,.16);color:#86efac}

/* v0.3.37 — registration + @mention autocomplete */
.auth-switch{margin-top:12px;font-size:13px;color:var(--muted);text-align:center}
.auth-switch .link-btn{font-size:13px}
.auth-ok{margin-top:10px;padding:10px 12px;border-radius:10px;background:rgba(34,197,94,.12);color:#15803d;font-size:13px;line-height:1.45}
.badge.amber{background:rgba(245,158,11,.16);color:#b45309}
.admin-row-actions{display:flex;gap:6px;justify-content:flex-end}
.mention-wrap{position:relative;flex:1;display:flex}
.mention-wrap textarea{width:100%}
.mention-menu{position:absolute;left:0;bottom:calc(100% + 6px);z-index:60;width:min(320px,90%);max-height:240px;overflow-y:auto;
  background:var(--panel);border:1px solid var(--border);border-radius:12px;box-shadow:0 16px 40px rgba(15,23,42,.18);padding:6px}
.mention-opt{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:none;border:0;padding:8px 10px;border-radius:9px;cursor:pointer}
.mention-opt:hover,.mention-opt.active{background:var(--accent-soft)}
.mention-ico{width:24px;height:24px;display:grid;place-items:center;font-size:15px;flex:0 0 auto}
.mention-name{display:flex;flex-direction:column;min-width:0}
.mention-name b{font-size:13px}
.mention-name small{color:var(--muted);font-size:11px}

/* v0.3.44 batch — SMTP test button */
.settings-test-row{display:flex;align-items:center;gap:12px;margin-top:12px;flex-wrap:wrap}
.settings-test-result{margin-top:10px;padding:10px 12px;border-radius:10px;font-size:13px;line-height:1.5}
.settings-test-result.ok{background:rgba(34,197,94,.12);color:#15803d}
.settings-test-result.fail{background:rgba(239,68,68,.12);color:#b91c1c}
:root[data-theme="dark"] .settings-test-result.ok{background:rgba(34,197,94,.18);color:#4ade80}
:root[data-theme="dark"] .settings-test-result.fail{background:rgba(239,68,68,.18);color:#f87171}

/* v0.3.44 batch — archive (undo toast, viewer panel, card fade) */
.task-card.is-archiving{opacity:.35;pointer-events:none;filter:grayscale(.4);transition:opacity .15s ease}
.tt-toast-undo{display:flex;align-items:center;gap:10px;position:relative;overflow:hidden;padding-bottom:10px}
.tt-toast-info{border-color:#bfdbfe}
.tt-toast-info .tt-toast-icon{background:#dbeafe;color:#1d4ed8}
.tt-toast-undo-btn{background:none;border:1px solid currentColor;color:inherit;border-radius:8px;padding:4px 10px;font-size:12px;font-weight:700;cursor:pointer;white-space:nowrap}
.tt-toast-undo-btn:hover{background:rgba(255,255,255,.12)}
.tt-toast-bar{position:absolute;left:0;bottom:0;height:3px;background:currentColor;opacity:.55;width:100%;transform-origin:left;animation:tt-toast-shrink 3000ms linear forwards}
@keyframes tt-toast-shrink{from{transform:scaleX(1)}to{transform:scaleX(0)}}
.archive-panel .notes-body{gap:8px}
.archive-item{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--bg);border:1px solid var(--border);border-radius:12px;padding:10px 12px}
.archive-item-info{display:flex;flex-direction:column;gap:3px;min-width:0}
.archive-item-info b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.danger-btn{color:#dc2626;border-color:#fecaca}
.danger-btn:hover{background:rgba(239,68,68,.08)}
:root[data-theme="dark"] .tt-toast,:root[data-theme="graphite"] .tt-toast{background:var(--panel);color:var(--text);border-color:var(--border);box-shadow:var(--shadow)}
:root[data-theme="dark"] .tt-toast-icon,:root[data-theme="graphite"] .tt-toast-icon{background:var(--accent-soft);color:var(--accent)}
:root[data-theme="dark"] .tt-toast-error .tt-toast-icon,:root[data-theme="graphite"] .tt-toast-error .tt-toast-icon{background:rgba(239,68,68,.18);color:#f87171}
:root[data-theme="dark"] .tt-toast-error,:root[data-theme="graphite"] .tt-toast-error{border-color:rgba(239,68,68,.4)}

/* v0.3.44 batch — sticky column headers so long columns keep their title
   (and drop target) visible while scrolling the page down */
.column-head{position:relative;z-index:5;border-radius:12px}
.column-head.is-stuck{background:rgba(255,255,255,.86);backdrop-filter:blur(6px);box-shadow:0 6px 16px rgba(15,23,42,.1)}
:root[data-theme="dark"] .column-head.is-stuck{background:rgba(21,29,39,.9)}
:root[data-theme="graphite"] .column-head.is-stuck{background:rgba(53,58,66,.9)}

@media(max-width:700px){.column-head{position:static;backdrop-filter:none;background:transparent}}

/* v0.3.44 batch — modernize native date/time inputs (no custom JS picker,
   just restyled browser control: consistent radius, accent-colored icon,
   proper focus ring instead of the old default browser look) */
input[type="date"],input[type="time"]{
  position:relative;border:1px solid var(--border,#e1e5ec);border-radius:10px;
  background:var(--panel,#fff);color:var(--text,#1f2937);
  padding:0 12px;height:42px;font:inherit;cursor:pointer;
  transition:border-color .15s,box-shadow .15s;
}
input[type="date"]:hover,input[type="time"]:hover{border-color:var(--accent,#526df6)}
input[type="date"]:focus,input[type="time"]:focus{
  outline:none;border-color:var(--accent,#526df6);
  box-shadow:0 0 0 3px var(--accent-soft,rgba(82,109,246,.16));
}
input[type="date"]::-webkit-calendar-picker-indicator,
input[type="time"]::-webkit-calendar-picker-indicator{
  width:18px;height:18px;padding:0;margin-left:6px;cursor:pointer;
  opacity:.55;border-radius:6px;transition:opacity .15s,background .15s;
}
input[type="date"]::-webkit-calendar-picker-indicator:hover,
input[type="time"]::-webkit-calendar-picker-indicator:hover{
  opacity:1;background:var(--accent-soft,rgba(82,109,246,.14));
}
input[type="date"]::-webkit-datetime-edit,input[type="time"]::-webkit-datetime-edit{padding:0}
input[type="date"]::-webkit-datetime-edit-fields-wrapper,input[type="time"]::-webkit-datetime-edit-fields-wrapper{padding:0}
:root[data-theme="dark"] input[type="date"]::-webkit-calendar-picker-indicator,
:root[data-theme="dark"] input[type="time"]::-webkit-calendar-picker-indicator,
:root[data-theme="graphite"] input[type="date"]::-webkit-calendar-picker-indicator,
:root[data-theme="graphite"] input[type="time"]::-webkit-calendar-picker-indicator{filter:invert(1) brightness(1.6)}

/* v0.3.45 — per-board column rename/recolor UI in board settings */
.board-columns-section{margin-top:4px;padding-top:14px;border-top:1px solid var(--border)}
.board-columns-list{display:grid;gap:8px;margin-top:10px}
.board-column-row{display:grid;grid-template-columns:34px 110px 1fr;align-items:center;gap:10px}
.board-column-row input[type="color"]{width:34px;height:34px;padding:2px;border:1px solid var(--border);border-radius:9px;background:var(--panel);cursor:pointer}
.board-column-default{font-size:12px;font-weight:700;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.board-column-row input[type="text"]{height:34px;padding:0 10px}

/* v0.3.46 — fix: .column had overflow:hidden (added for rounded-corner
   clipping), which silently breaks position:sticky on .column-head since any
   overflow:hidden ancestor clips sticky descendants to its own box. Cards are
   already inset via .column's own padding, so nothing relies on the clip. */
.column{overflow:visible}
/* v0.3.47 — the real remaining cause of "sticky headers don't work": .kanban
   sets overflow-x:auto without an explicit overflow-y. Per the CSS Overflow
   spec, when only one axis is set to non-visible, the other silently computes
   as 'auto' too — so .kanban itself became the scroll container instead of
   the page, and position:sticky inside it had nothing to stick against. */
.kanban{overflow-y:visible}

/* v0.3.46 — attachment preview lightbox */
.attach-preview-overlay{position:fixed;inset:0;z-index:1300;background:rgba(10,14,22,.82);display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;padding:0;animation:notesFade .15s ease}
.attach-preview-head{display:flex;align-items:center;gap:12px;padding:14px 18px;color:#fff}
.attach-preview-name{font-weight:700;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.attach-preview-openlink{display:inline-flex;align-items:center;gap:6px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.18);border-radius:10px;padding:8px 14px;color:#fff;text-decoration:none;font-size:13px;font-weight:600;white-space:nowrap;transition:background .15s}
.attach-preview-openlink:hover{background:rgba(255,255,255,.22)}
.attach-preview-download{display:inline-flex;align-items:center;gap:6px;background:#526df6;border:1px solid #526df6;border-radius:10px;padding:8px 14px;color:#fff;text-decoration:none;font-size:13px;font-weight:600;white-space:nowrap;transition:background .15s,border-color .15s}
.attach-preview-download:hover{background:#3f57dd;border-color:#3f57dd}
.attach-preview-close{width:36px;height:36px;border-radius:10px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.12);color:#fff;font-size:18px;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background .15s}
.attach-preview-close:hover{background:rgba(255,255,255,.22)}
.attach-preview-body{flex:1;display:flex;align-items:center;justify-content:center;padding:0 24px 24px;overflow:auto}
.attach-preview-body img{max-width:100%;max-height:100%;border-radius:10px;box-shadow:0 30px 70px rgba(0,0,0,.5)}
.attach-preview-body iframe{width:min(900px,100%);height:100%;border:0;border-radius:10px;background:#fff;box-shadow:0 30px 70px rgba(0,0,0,.5)}
.attach-preview-body-rich{padding:0 24px 24px;align-items:stretch}
.attach-preview-rich{width:100%;height:100%;display:flex;flex-direction:column;overflow:auto;border-radius:10px;background:#fff;box-shadow:0 30px 70px rgba(0,0,0,.5)}
.attach-preview-drawio-frame{width:100%;height:100%;border:0;flex:1}
.attach-preview-status{color:#fff;font-size:14px;opacity:.85;margin:auto;padding:24px;text-align:center}
.attach-preview-status-static{margin:auto}
/* .xlsx/.xls/.csv — rendered as a real HTML table via SheetJS / the CSV parser */
.attach-preview-table-wrap{flex:1;overflow:auto;padding:4px}
.attach-preview-table-wrap table{border-collapse:collapse;font-size:13px;width:max-content;min-width:100%;color:#1c2530}
.attach-preview-table-wrap th,.attach-preview-table-wrap td{border:1px solid #e3e7ee;padding:6px 10px;white-space:nowrap;text-align:left}
.attach-preview-table-wrap th{background:#f3f5f8;font-weight:750;position:sticky;top:0}
.attach-preview-sheet-tabs{display:flex;gap:4px;padding:10px 10px 0;flex-wrap:wrap;flex:none}
.attach-preview-sheet-tab{border:1px solid #e3e7ee;background:#f3f5f8;border-radius:8px 8px 0 0;padding:6px 12px;font-size:12px;font-weight:700;cursor:pointer;color:#5a6a80}
.attach-preview-sheet-tab.is-active{background:#fff;color:#1c2530;border-bottom-color:#fff}
/* .docx — rendered as HTML via mammoth.js */
.attach-preview-docx{flex:1;overflow:auto;padding:28px 34px;color:#1c2530;font:14px/1.65 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;max-width:760px;margin:0 auto}
.attach-preview-docx h1,.attach-preview-docx h2,.attach-preview-docx h3{margin:1.2em 0 .5em;line-height:1.3}
.attach-preview-docx p{margin:0 0 1em}
.attach-preview-docx img{max-width:100%}
.attach-preview-docx table{border-collapse:collapse;margin:0 0 1em}
.attach-preview-docx table td,.attach-preview-docx table th{border:1px solid #e3e7ee;padding:5px 9px}
/* .zip — file listing via JSZip */
.attach-preview-zip-list{flex:1;overflow:auto;padding:10px 6px;font:13px/2 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:#1c2530}
.attach-preview-zip-row{display:flex;align-items:center;gap:8px;padding:2px 12px;border-radius:6px}
.attach-preview-zip-row:hover{background:#f3f5f8}
.attach-preview-zip-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.attach-preview-zip-size{color:#8a97a8;font-size:12px;flex:none}
.attachment-preview-pdf,.attachment-preview-drawio{display:flex;align-items:center;justify-content:center;font-size:26px;background:var(--bg)}

/* v0.3.47 — make the SMTP password field harder to miss */
.settings-pwd-label{display:block;padding:12px;border:1px solid var(--accent-soft,#dde3ff);background:var(--accent-soft,#f3f5ff);border-radius:12px;margin-top:4px}
:root[data-theme="dark"] .settings-pwd-label,:root[data-theme="graphite"] .settings-pwd-label{border-color:var(--accent-soft);background:var(--accent-soft)}

/* v0.3.47 — file format badge on attachment thumbnails */
.attachment-preview,.attachment-icon{position:relative}
.attachment-ext{position:absolute;right:4px;bottom:4px;background:rgba(15,23,42,.72);color:#fff;font-size:9px;font-weight:800;letter-spacing:.3px;padding:2px 5px;border-radius:5px;line-height:1.3}
.attachment-icon .attachment-ext{position:static;display:block;margin-top:4px;background:var(--accent-soft);color:var(--accent)}

/* v0.3.47 — fix: .attention rows in "Требует внимания" had a hardcoded white
   background (and white-ish hover), never covered by dark/graphite theme
   overrides, so they stood out as solid white blocks on a dark panel. */
:root[data-theme="dark"] .attention{background:var(--bg);border-color:var(--border)}
:root[data-theme="dark"] .attention:hover{background:#1a2230;border-color:#374254}
:root[data-theme="graphite"] .attention{background:var(--bg);border-color:var(--border)}
:root[data-theme="graphite"] .attention:hover{background:#33373e;border-color:#525862}

/* v0.3.47 — same hardcoded-white bug as .attention, found proactively in two
   more high-traffic spots before they got reported: the per-status task list
   (opened from a dashboard tile) and the notifications bell popover. */
:root[data-theme="dark"] .status-list-item{background:var(--panel);border-color:var(--border);color:var(--text)}
:root[data-theme="graphite"] .status-list-item{background:var(--panel);border-color:var(--border)}
:root[data-theme="dark"] .notifications-popover,:root[data-theme="dark"] .notif-item{background:var(--panel);border-color:var(--border);color:var(--text)}
:root[data-theme="graphite"] .notifications-popover,:root[data-theme="graphite"] .notif-item{background:var(--panel);border-color:var(--border)}
:root[data-theme="dark"] .notif-item:hover{background:#1a2230}
:root[data-theme="graphite"] .notif-item:hover{background:#3c4148}
:root[data-theme="dark"] .popover-head{border-color:var(--border)}
:root[data-theme="graphite"] .popover-head{border-color:var(--border)}

/* v0.3.49 — the actual root cause of "sticky headers don't work while
   scrolling": .kanban used align-items:start, so short columns (few cards)
   were much shorter than tall ones (many cards) and scrolled completely out
   of view — including their headers — long before the tall column finished
   scrolling. A sticky header can only stick within its own column's height;
   if the column itself has scrolled away, there's nothing left to stick to.
   Stretching all columns to equal height (the tallest one) gives every
   column's header room to stay pinned for the full scroll range. */
.kanban{align-items:stretch !important}
.column{display:flex !important;flex-direction:column !important}
.column-body{flex:1 1 auto !important}

/* v0.3.51 — .status-list-item is a <button>; button text color doesn't
   always inherit the way plain block elements do, so setting color on the
   parent alone (done earlier) wasn't reliably reaching the title text.
   Setting it directly and explicitly, plus giving the "Новая" status badge
   proper dark/graphite colors instead of its default light-gray pill. */
:root[data-theme="dark"] .status-list-title{color:var(--text) !important}
:root[data-theme="dark"] .status-list-item .meta{color:var(--muted) !important}
:root[data-theme="graphite"] .status-list-title{color:var(--text) !important}
:root[data-theme="graphite"] .status-list-item .meta{color:var(--muted) !important}
:root[data-theme="dark"] .badge{background:var(--accent-soft);color:var(--text)}
:root[data-theme="graphite"] .badge{background:var(--accent-soft);color:var(--text)}

/* v0.3.52 — colored badge variants (used by "Требуют внимания": Просрочено/
   На проверке/Новая) had no dark/graphite theme at all, only pale light
   pastel backgrounds regardless of theme. */
:root[data-theme="dark"] .badge.red{background:rgba(239,68,68,.18);color:#fca5a5}
:root[data-theme="dark"] .badge.orange{background:rgba(245,158,11,.18);color:#fcd34d}
:root[data-theme="dark"] .badge.blue{background:rgba(96,165,250,.18);color:#93c5fd}
:root[data-theme="dark"] .badge.green{background:rgba(34,197,94,.18);color:#86efac}
:root[data-theme="graphite"] .badge.red{background:rgba(239,68,68,.16);color:#ffb4b4}
:root[data-theme="graphite"] .badge.orange{background:rgba(245,158,11,.16);color:#ffd48a}
:root[data-theme="graphite"] .badge.blue{background:rgba(96,165,250,.16);color:#aecbff}
:root[data-theme="graphite"] .badge.green{background:rgba(34,197,94,.16);color:#a8f0c4}

/* v0.3.52 — .attention is also a <button> (same inheritance risk as
   .status-list-item fixed earlier): set the title color explicitly. */
:root[data-theme="dark"] .attention-title{color:var(--text) !important}
:root[data-theme="graphite"] .attention-title{color:var(--text) !important}

/* v0.3.53 — comprehensive dark/graphite text-contrast sweep for task cards.
   Several older rules (.task-card .badge.green, priority-based card
   backgrounds, etc.) are MORE specific than the earlier generic theme
   fixes and were silently winning, leaving dark text on dark backgrounds.
   These rules use maximum specificity + !important so nothing can outrank
   them, the same technique that reliably fixed the SMTP password field. */
:root[data-theme="dark"] .kanban .task-card .task-title{color:#f2f5f9 !important}
:root[data-theme="graphite"] .kanban .task-card .task-title{color:#e8ebf0 !important}
:root[data-theme="dark"] .kanban .task-card .assignee{color:#9aa8b8 !important}
:root[data-theme="graphite"] .kanban .task-card .assignee{color:#9ba4b3 !important}
:root[data-theme="dark"] .kanban .task-card .due{color:#9aa8b8 !important}
:root[data-theme="graphite"] .kanban .task-card .due{color:#9ba4b3 !important}
:root[data-theme="dark"] .kanban .task-card .card-counters{color:#9aa8b8 !important}
:root[data-theme="graphite"] .kanban .task-card .card-counters{color:#9ba4b3 !important}
:root[data-theme="dark"] .kanban .task-card .badge{background:rgba(255,255,255,.08) !important;color:#dbe4ee !important}
:root[data-theme="dark"] .kanban .task-card .badge.red{background:rgba(239,68,68,.30) !important;color:#ffe4e4 !important}
:root[data-theme="dark"] .kanban .task-card .badge.orange{background:rgba(245,158,11,.30) !important;color:#fff3d6 !important}
:root[data-theme="dark"] .kanban .task-card .badge.blue{background:rgba(96,165,250,.30) !important;color:#e6f0ff !important}
:root[data-theme="dark"] .kanban .task-card .badge.green{background:rgba(34,197,94,.28) !important;color:#eafff2 !important}
:root[data-theme="graphite"] .kanban .task-card .badge{background:rgba(255,255,255,.08) !important;color:#e8ebf0 !important}
:root[data-theme="graphite"] .kanban .task-card .badge.red{background:rgba(239,68,68,.26) !important;color:#ffe4e4 !important}
:root[data-theme="graphite"] .kanban .task-card .badge.orange{background:rgba(245,158,11,.26) !important;color:#fff3d6 !important}
:root[data-theme="graphite"] .kanban .task-card .badge.blue{background:rgba(96,165,250,.26) !important;color:#e6f0ff !important}
:root[data-theme="graphite"] .kanban .task-card .badge.green{background:rgba(34,197,94,.24) !important;color:#eafff2 !important}

/* v0.3.55 — .board-admin-card's dark-theme background rule wasn't reliably
   winning (same class of issue found repeatedly this session), while the
   title text correctly picked up the theme's light text color — light text
   on a white card. Graphite had no coverage at all. Fixed with guaranteed
   !important overrides, same technique as the SMTP password field. */
:root[data-theme="dark"] .board-admin-card{background:#131b2b !important;border-color:#2a3549 !important}
:root[data-theme="dark"] .board-admin-card h2{color:#f2f5f9 !important}
:root[data-theme="dark"] .board-admin-main p,:root[data-theme="dark"] .board-admin-meta{color:#9da9bb !important}
:root[data-theme="graphite"] .board-admin-card{background:#353a42 !important;border-color:#4a505a !important}
:root[data-theme="graphite"] .board-admin-card h2{color:#e8ebf0 !important}
:root[data-theme="graphite"] .board-admin-main p,:root[data-theme="graphite"] .board-admin-meta{color:#9ba4b3 !important}

/* v0.3.56 — graphite task-card background wasn't reliably resolving to
   var(--panel) in practice (same unreliable-cascade pattern found repeatedly
   this session), leaving cards white. Mirrors the dark-theme fix exactly:
   literal colors, !important, matching or exceeding any competing
   specificity — including the priority-tinted variants dark theme has but
   graphite never got. */
:root[data-theme="graphite"] .kanban .task-card{background:#3c4148 !important;border-color:#4a505a !important;color:#e8ebf0 !important}
:root[data-theme="graphite"] .kanban .task-card.priority-critical{background:linear-gradient(180deg,#463138 0%,#3c4148 72%) !important;border-color:#c96b6b !important}
:root[data-theme="graphite"] .kanban .task-card.priority-high{background:linear-gradient(180deg,#463b2c 0%,#3c4148 72%) !important;border-color:#cc9a4a !important}
:root[data-theme="graphite"] .kanban .task-card.priority-normal{background:linear-gradient(180deg,#2f3a52 0%,#3c4148 72%) !important;border-color:#7e9cff !important}
:root[data-theme="graphite"] .kanban .task-card.priority-low{background:linear-gradient(180deg,#2c4436 0%,#3c4148 72%) !important;border-color:#5bd49a !important}

/* v0.3.61 — armed (second-click-to-confirm) state for delete-user button */
.danger-armed{background:#dc2626 !important;border-color:#dc2626 !important;color:#fff !important;font-weight:800}
:root[data-theme="dark"] .danger-armed,:root[data-theme="graphite"] .danger-armed{background:#ef4444 !important;border-color:#ef4444 !important;color:#fff !important}

/* v0.3.64 — board color picker (swatch row) in the board create/edit form */
.board-color-picker{display:flex;gap:9px;flex-wrap:wrap;margin-top:6px}
.board-color-swatch{width:30px;height:30px;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0;box-shadow:0 1px 2px rgba(15,23,42,.15);transition:transform .12s,box-shadow .12s}
.board-color-swatch:hover{transform:scale(1.08)}
.board-color-swatch.active{border-color:var(--text,#1f2937);box-shadow:0 0 0 2px var(--panel,#fff),0 0 0 4px currentColor}

/* v0.3.67 — multiple assignees (main assignee + helpers) */
.helper-avatars{display:inline-flex;margin-left:6px;gap:3px}
.avatar-helper{width:22px;height:22px;font-size:10px;border-radius:50%;border:2px solid var(--panel,#fff);background:var(--accent-soft);color:var(--accent);display:inline-flex;align-items:center;justify-content:center;font-weight:800;flex:0 0 auto;letter-spacing:-.3px}
.avatar-more{background:var(--muted,#94a3b8);color:#fff;cursor:default}
#createHelperIds,#editHelperIds{min-height:64px}

/* v0.3.70 — quick-add card inline in each column */
.column-quickadd{padding:6px 2px 2px}
.quickadd-trigger{width:100%;text-align:left;background:none;border:1px dashed var(--border,#d5dae3);border-radius:9px;padding:5px 12px;font-size:13px;line-height:1.3;color:var(--muted,#697386);font-weight:600;cursor:pointer;transition:background .12s,border-color .12s}
.quickadd-trigger:hover{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}
.quickadd-form{background:var(--panel,#fff);border:1px solid var(--border,#e1e5ec);border-radius:12px;padding:10px;display:flex;flex-direction:column;gap:8px;box-shadow:0 6px 18px rgba(15,23,42,.08)}
.quickadd-form[hidden]{display:none}
.quickadd-form .quickadd-title{width:100%;border:1px solid var(--border);border-radius:9px;padding:8px 10px;font:inherit}
.quickadd-toggles{display:flex;gap:6px;flex-wrap:wrap}
.quickadd-toggle{background:var(--bg,#f4f6fa);border:1px solid transparent;border-radius:8px;padding:5px 9px;font-size:12px;cursor:pointer;color:var(--muted)}
.quickadd-toggle.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:700}
.quickadd-field{display:flex;gap:6px;flex-wrap:wrap}
.quickadd-field[hidden]{display:none}
.quickadd-field-due input{flex:1;min-width:0}
.quickadd-field-assignee select{width:100%}
.quickadd-checklist-items{display:flex;flex-direction:column;gap:3px;width:100%}
.quickadd-check-row{display:flex;justify-content:space-between;align-items:center;font-size:13px;background:var(--bg,#f4f6fa);border-radius:7px;padding:4px 8px}
.quickadd-checklist-input{width:100%;border:1px solid var(--border);border-radius:8px;padding:6px 9px;font:inherit;font-size:13px}
.quickadd-actions{display:flex;align-items:center;gap:8px}

/* v0.3.71 — board width follows content instead of always stretching to
   fill the screen. Columns keep a fixed, stable width (so drag targets never
   jump around while dragging a card between columns) — only the OVERALL
   board width adapts: compact when there isn't much on it, with horizontal
   scroll kicking in once 6 fixed-width columns don't fit the viewport. */
.kanban{grid-template-columns:repeat(6,270px) !important;width:max-content !important;max-width:100% !important;overflow-x:auto !important}
@media(max-width:1750px){.kanban{grid-template-columns:repeat(6,250px) !important}}
@media(max-width:700px){.kanban{width:100% !important;grid-template-columns:repeat(6,270px) !important}}

/* v0.3.72 — task templates picker in the create-task form */
.template-picker-row{display:flex;gap:8px;align-items:center}
.template-picker-row select{flex:1}

/* v0.3.74 — task number badge */
.task-number{color:var(--muted);font-weight:700;font-size:12px;opacity:.75}
.task-number-lg{display:block;font-size:13px;margin-bottom:2px}

/* v0.3.74 — stalled-task badge (amber, distinct from the red overdue badge) */
.mini-alert-stalled{color:#92400e;background:#fef3c7}
:root[data-theme="dark"] .mini-alert-stalled,:root[data-theme="graphite"] .mini-alert-stalled{background:rgba(245,158,11,.22);color:#fcd34d}

/* v0.3.75 — colored labels */
.task-labels{display:flex;flex-wrap:wrap;gap:4px;margin:6px 0 4px}
.task-label-pill{display:inline-block;padding:2px 9px;border-radius:6px;font-size:11px;font-weight:700;color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.15)}
.task-labels-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:8px 0}
.task-label-add-btn{border:1px dashed var(--border);background:none;border-radius:8px;padding:3px 9px;font-size:11px;color:var(--muted);cursor:pointer}
.task-label-add-btn:hover{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}
.label-picker-popover{position:fixed;width:290px;background:var(--panel);border:1px solid var(--border);border-radius:14px;box-shadow:0 20px 50px rgba(15,23,42,.22);padding:12px;z-index:120}
.label-picker-head{font-weight:800;font-size:13px;margin-bottom:8px}
.label-picker-list{display:flex;flex-direction:column;gap:2px;max-height:220px;overflow-y:auto}
.label-picker-row{display:flex;align-items:center;gap:8px;padding:6px 4px;border-radius:8px;cursor:pointer}
.label-picker-row input[type="checkbox"]{width:18px;flex:0 0 auto}
.label-picker-row:hover{background:var(--bg)}
.card-action-menu{width:216px;padding:6px;display:grid;gap:2px}
.card-action-item{display:flex;align-items:center;gap:9px;width:100%;padding:8px 9px;border:0;background:transparent;border-radius:9px;cursor:pointer;text-align:left;font:inherit;font-weight:650;font-size:13px;color:var(--text)}
.card-action-item>span:first-child{flex:0 0 20px;width:20px;text-align:center;font-size:14px}
.card-action-item:hover{background:var(--bg)}
.card-action-item.danger{color:#dc2626}
.card-action-item.danger:hover{background:rgba(220,38,38,.08)}
/* Drag handle (⠿) and quick-actions button (⋮) must sit in identical,
   centered boxes — several earlier passes left conflicting .drag-grip
   sizes scattered through this file, which is why they drifted out of
   vertical alignment with each other. This is the authoritative sizing. */
.task-card-tools .drag-grip,.task-card-tools .card-menu-btn{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;min-width:26px;min-height:26px;padding:0;line-height:1;box-sizing:border-box;font-size:16px}

/* Table view: toolbar, sortable headers, filter popover, active-filter chips —
   none of this had any CSS at all, so it fell back to raw unstyled browser
   buttons/text. */
.table-view-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:14px 0 10px}
.table-sort-hint{font-size:12px;color:var(--muted);font-weight:600}
.table-active-filters{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:12px}
.table-active-filters[hidden]{display:none}
.active-filter-chip.table{background:var(--accent)}
.table-sort-btn{display:inline-flex;align-items:center;gap:6px;border:0;background:transparent;padding:2px 0;margin:0;font:inherit;font-weight:800;font-size:13px;color:var(--text);cursor:pointer;text-align:left}
.table-sort-btn:hover{color:var(--accent)}
.table-sort-btn.active{color:var(--accent)}
.table-sort-icon{font-size:11px;color:var(--muted);opacity:.7}
.table-sort-btn.active .table-sort-icon{color:var(--accent);opacity:1}
.task-view-table th{padding:10px 14px;text-align:left;border-bottom:1px solid var(--border);background:var(--bg)}
.table-filter-popover{position:fixed;top:120px;right:24px;width:300px;max-width:calc(100vw - 24px);background:var(--panel);border:1px solid var(--border);border-radius:16px;box-shadow:0 24px 60px rgba(15,23,42,.2);padding:14px;z-index:120;display:grid;gap:12px}
.table-filter-head{display:flex;align-items:center;justify-content:space-between}
.table-filter-head b{font-size:14px}
.table-filter-count{margin-left:7px;display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:11px;font-weight:800}
.table-filter-field{display:grid;gap:6px;font-size:12px;font-weight:700;color:var(--muted)}
.table-filter-section{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.table-filter-section>span{font-size:12px;font-weight:700;color:var(--muted);margin-right:2px}
.table-filter-actions{display:flex;justify-content:space-between;gap:10px;padding-top:4px;border-top:1px solid var(--border)}
.filter-count-badge{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:var(--accent);color:#fff;font-size:10px;font-weight:800;margin-left:2px}
.label-swatch{width:14px;height:14px;border-radius:4px;flex:0 0 auto}
.label-picker-name{flex:1;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.label-picker-row .label-edit-btn,.label-picker-row .label-delete-btn{width:22px;height:22px;flex:0 0 22px;padding:0;border:0;background:none;color:var(--muted);border-radius:6px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:13px;line-height:1}
.label-picker-row .label-edit-btn:hover{background:rgba(79,109,245,.12);color:#4f6df5}
.label-delete-btn:hover{background:rgba(239,68,68,.12);color:#dc2626}
.label-create-form{margin-top:10px;padding-top:10px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:8px}
.label-create-form input[type="text"]{width:100%;border:1px solid var(--border);border-radius:8px;padding:7px 9px;font:inherit;font-size:13px}
.label-create-colors{display:flex;gap:6px;flex-wrap:wrap}
.label-create-swatch{width:22px;height:22px}

/* v0.3.76 — system-wide audit log */
.audit-log-list{display:flex;flex-direction:column;gap:2px;max-height:480px;overflow-y:auto}
.audit-log-row{display:flex;gap:12px;padding:9px 6px;border-bottom:1px solid var(--border);font-size:13px}
.audit-log-row:last-child{border-bottom:0}
.audit-log-time{flex:0 0 auto;color:var(--muted);font-size:12px;white-space:nowrap;padding-top:1px}
.audit-log-text{flex:1}

/* v0.3.80 — helper picker styled as a dropdown button instead of a
   stretched native multi-select */
.helper-picker-btn{width:100%;text-align:left;border:1px solid var(--border,#d9dee6);border-radius:9px;padding:9px 12px;background:var(--panel,#fff);color:var(--text,#1f2937);cursor:pointer;font:inherit;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.helper-picker-btn:hover{border-color:var(--accent)}

/* v0.3.84 — unified label search+create popover */
.label-picker-search{width:100%;border:1px solid var(--border);border-radius:9px;padding:8px 10px;font:inherit;font-size:13px;margin-bottom:8px}
.label-create-row{display:flex;gap:8px}
.label-create-row input[type="text"]{flex:1;border:1px solid var(--border);border-radius:8px;padding:7px 9px;font:inherit;font-size:13px}

/* v0.3.84 — active label-filter chips row under the board toolbar */
.active-label-filters{display:flex;gap:6px;flex-wrap:wrap;align-items:center;padding:0 2px 10px}
.active-label-filters[hidden]{display:none}
.active-filter-chip{display:inline-flex;align-items:center;gap:6px;padding:3px 6px 3px 10px;border-radius:999px;font-size:11px;font-weight:700;color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.15)}
.active-filter-chip button{background:rgba(255,255,255,.3);border:0;color:#fff;width:16px;height:16px;border-radius:50%;cursor:pointer;font-size:11px;line-height:1;display:inline-flex;align-items:center;justify-content:center}
.active-filter-chip button:hover{background:rgba(255,255,255,.5)}
.active-filter-clear{background:none;border:1px dashed var(--border);border-radius:999px;padding:3px 10px;font-size:11px;color:var(--muted);cursor:pointer}

/* v0.3.86 — inline label rename/recolor row */
.label-edit-row{padding:8px 4px;border-radius:8px;background:var(--bg);display:flex;flex-direction:column;gap:8px}
.label-edit-name{width:100%;border:1px solid var(--border);border-radius:8px;padding:6px 9px;font:inherit;font-size:13px}
.label-edit-swatch{width:20px;height:20px}
.label-edit-actions{display:flex;gap:8px}

/* v0.3.87 — unify page header typography across Статусы/Доска/Команда/
   Настройки/Рабочие доски, and remove the now-unused eyebrow kickers. */
.eyebrow{display:none}
.dashboard-hero h1,.board-hero h1,.page-head h1,.status-list-heading h1{font-size:22px !important;letter-spacing:-.4px !important;font-weight:800 !important;margin:0 0 2px !important;color:var(--text)}
.dashboard-hero .subtitle,.board-hero .subtitle,.page-head .subtitle,.status-list-heading .subtitle{font-size:12.5px !important;color:var(--muted) !important;font-weight:500 !important}
.board-page{gap:10px !important}
.board-hero{padding:2px 0 0 !important;align-items:center !important}
.container{padding-top:16px !important;padding-bottom:0 !important}

/* v0.3.87 — Trello-style two-column task modal: main content left,
   discussion/comments on the right, stacking to one column on narrow
   screens where a side-by-side layout wouldn't have room to breathe. */
.task-drawer-columns{display:grid;grid-template-columns:1fr 300px;gap:24px;align-items:start}
.task-drawer-main{min-width:0}
.task-drawer-side{min-width:0;border-left:1px solid var(--border);padding-left:20px}
.task-drawer-side .comments-list{margin-top:14px;max-height:420px;overflow-y:auto}
@media(max-width:760px){
  .task-drawer-columns{grid-template-columns:1fr}
  .task-drawer-side{border-left:0;padding-left:0;border-top:1px solid var(--border);padding-top:16px;margin-top:4px}
}

/* v0.3.88 — collapsible columns, Trello-style. Converting .kanban from grid
   to flex here specifically because CSS Grid's grid-template-columns sets
   ONE uniform track size for every column at once — there's no way to make
   a single track narrow while the others stay put. Flex lets each column
   carry its own explicit width via flex-basis, so a collapsed column
   actually shrinks and its neighbors reflow closer, instead of leaving a
   270px-wide empty gap around a 44px box. */
.kanban{display:flex !important;flex-wrap:nowrap !important;align-items:stretch !important;overflow-x:auto !important;overflow-y:visible !important;width:100% !important;max-width:100% !important}
.kanban .column{flex:1 1 0 !important;min-width:200px !important;max-width:340px !important;width:auto !important}
@media(max-width:1750px){.kanban .column{min-width:180px !important;max-width:300px !important}}
.kanban .column.is-collapsed{flex:0 0 58px !important;min-width:58px !important;max-width:58px !important;width:58px !important;overflow:visible;position:relative}
.column-collapse-btn{background:none;border:0;color:var(--muted);cursor:pointer;font-size:11px;padding:2px 4px;border-radius:6px;flex:0 0 auto}
.column-collapse-btn:hover{background:var(--bg);color:var(--text)}
.column.is-collapsed .column-body,.column.is-collapsed .column-quickadd,.column.is-collapsed .drop-caption{display:none}
.column.is-collapsed .column-head{display:block;position:static;padding:0;height:35px;min-height:35px;box-sizing:border-box;overflow:visible}
.column.is-collapsed .column-count{position:absolute;top:24px;left:7px;transform:none;z-index:2}
.column.is-collapsed .column-collapse-btn{position:absolute;top:24px;right:4px;left:auto;margin:0 !important;transform:none;z-index:2}
.column.is-collapsed .column-title{position:absolute;top:72px;left:0;right:0;max-height:calc(100vh - 84px);text-align:center;writing-mode:vertical-rl;transform:rotate(180deg);overflow:hidden;z-index:3}
.column.is-collapsed .column-dot{display:inline-block;margin-bottom:6px;vertical-align:middle}
.column.is-collapsed .column-title-text{white-space:nowrap;font-size:12px;overflow:hidden;text-overflow:ellipsis}

/* v0.3.89 — comment edit/delete controls */
.comment-head{display:block}
.comment-actions{margin-left:auto;display:flex;gap:2px;opacity:0;transition:opacity .12s}
.comment:hover .comment-actions{opacity:1}
.comment-action-btn{width:22px;height:22px;border:0;background:none;color:var(--muted);border-radius:6px;cursor:pointer;font-size:12px}
.comment-action-btn:hover{background:var(--bg);color:var(--text)}
.comment-edit-input{width:100%;min-height:60px;resize:none;border:1px solid var(--border);border-radius:8px;padding:8px;font:inherit;font-size:13px}
.comment-edit-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:6px}
@media(hover:none){.comment-actions{opacity:1}}

/* v0.3.95 — comment replies + quick emoji reactions */
.reply-preview{display:flex;align-items:center;gap:8px;background:var(--bg);border:1px solid var(--border);border-radius:9px;padding:7px 10px;font-size:12px;color:var(--muted)}
.reply-preview b{color:var(--text)}
.reply-preview-cancel{margin-left:auto;border:0;background:none;color:var(--muted);cursor:pointer;font-size:15px;line-height:1;width:20px;height:20px;border-radius:6px}
.reply-preview-cancel:hover{background:#fff;color:var(--text)}
.comment-reply-quote{border-left:2px solid var(--border);padding:2px 0 2px 9px;margin-bottom:7px;font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.comment-reply-quote b{color:var(--text);font-weight:600}
.comment-reactions{display:flex;flex-wrap:wrap;align-items:center;gap:5px;margin-top:9px}
.reaction-pill{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--border);background:var(--bg);border-radius:99px;padding:3px 9px;font-size:14px;cursor:pointer;color:var(--text);transition:transform .12s}
.reaction-pill:hover{border-color:var(--accent);transform:scale(1.08)}
.reaction-pill.mine{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);animation:reactionPulse 2.4s ease-in-out infinite}
.reaction-add-wrap{position:relative}
.reaction-add-btn{border:1px dashed var(--border);background:none;border-radius:99px;padding:3px 9px;font-size:14px;cursor:pointer;color:var(--muted);transition:transform .12s}
.reaction-add-btn:hover{border-color:var(--accent);color:var(--accent);transform:scale(1.08)}
.reaction-picker{position:absolute;left:0;bottom:calc(100% + 6px);z-index:40;display:flex;flex-wrap:wrap;gap:2px;background:#fff;border:1px solid var(--border);box-shadow:var(--shadow);border-radius:14px;padding:5px;width:160px}
.reaction-picker[hidden]{display:none}
.reaction-picker-opt{border:0;background:none;border-radius:10px;width:28px;height:28px;font-size:16px;line-height:1;cursor:pointer;transition:transform .12s}
.reaction-picker-opt:hover{background:var(--accent-soft);animation:reactionBounce .5s ease}
@keyframes reactionBounce{0%{transform:scale(1) translateY(0)}30%{transform:scale(1.35) translateY(-5px)}55%{transform:scale(.92) translateY(1px)}75%{transform:scale(1.12) translateY(-2px)}100%{transform:scale(1) translateY(0)}}
@keyframes reactionPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.07)}}

/* v0.3.92 — column header: group title+count together on the left, push
   the collapse control to the far right (was justify-content:space-between,
   which spread all 3 children evenly instead of grouping title+count) */
.column-head{justify-content:flex-start !important;gap:8px}
.column-count{margin-left:0 !important}
.column-collapse-btn{margin-left:auto !important}

/* v0.3.93 — a board column colour is the column's complete visual accent.
   The value comes from --col-status, which renderBoard/installBoardDnD set from
   the board's saved column_config. */
.kanban .column{
  border-color:color-mix(in srgb,var(--col-status,var(--accent)) 28%,#e5e9f2);
}
.kanban .column:before{background:var(--col-status,var(--accent))}
.kanban .column .column-count{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--col-status,var(--accent)) 18%,transparent)}
.kanban .column.drag-active{
  border-color:var(--col-status,var(--accent)) !important;
  background:color-mix(in srgb,var(--col-status,var(--accent)) 8%,var(--panel)) !important;
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--col-status,var(--accent)) 24%,transparent),0 10px 28px color-mix(in srgb,var(--col-status,var(--accent)) 14%,transparent) !important;
}
.kanban .column.drag-over{
  outline:2px solid var(--col-status,var(--accent)) !important;
  background:color-mix(in srgb,var(--col-status,var(--accent)) 16%,var(--panel)) !important;
}

/* v0.3.92 — quick column color menu button */
.column.is-collapsed .column-menu-btn{display:none}
.column-menu-btn{background:none;border:0;color:var(--muted);cursor:pointer;font-size:14px;padding:2px 4px;border-radius:6px;flex:0 0 auto}
.column-menu-btn:hover{background:var(--bg);color:var(--text)}

/* v0.3.96 — align collapsed-column controls with the normal sticky headers.
   The collapsed header is only 44px tall, so the count and expand arrow must
   sit inside that white header, not near its bottom edge. The vertical title
   starts immediately below the header. */
.kanban .column.is-collapsed .column-head.is-stuck{
  position:fixed !important;
  top:70px !important;
  height:35px !important;
  min-height:35px !important;
  box-sizing:border-box !important;
  overflow:visible !important;
  padding:0 !important;
}
.kanban .column.is-collapsed .column-head.is-stuck .column-count{
  position:absolute !important;
  top:6px !important;
  left:7px !important;
  transform:none !important;
  z-index:30 !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
}
.kanban .column.is-collapsed .column-head.is-stuck .column-collapse-btn{
  position:absolute !important;
  top:6px !important;
  right:4px !important;
  left:auto !important;
  margin:0 !important;
  transform:none !important;
  z-index:30 !important;
  display:grid !important;
  place-items:center !important;
}
.kanban .column.is-collapsed .column-head.is-stuck .column-title{
  position:absolute !important;
  top:58px !important;
  left:0 !important;
  right:0 !important;
  max-height:calc(100vh - 84px) !important;
  height:auto !important;
  overflow:hidden !important;
  z-index:10 !important;
  pointer-events:none !important;
}

/* v0.3.97 — final micro-alignment for collapsed sticky header controls.
   Keep the normal column headers completely untouched. Only the collapsed
   column's count and expand arrow are lifted slightly inside its white header
   so their centerline matches the normal sticky headers. */
.kanban .column.is-collapsed .column-head.is-stuck .column-count{
  top:3px !important;
}
.kanban .column.is-collapsed .column-head.is-stuck .column-collapse-btn{
  top:3px !important;
}

/* v0.3.98 — match collapsed sticky header height to normal column headers.
   Keep the already-aligned count and arrow positions unchanged. */
.kanban .column.is-collapsed .column-head.is-stuck{
  height:35px !important;
  min-height:35px !important;
  box-sizing:border-box !important;
}

/* v0.3.99 — vertically center normal column-header content inside the
   existing header height. Keep the total vertical padding unchanged (12px),
   so the white sticky band keeps the same height. Collapsed columns are
   intentionally excluded; their geometry is handled separately below. */
.kanban .column:not(.is-collapsed) .column-head{
  padding-top:6px !important;
  padding-bottom:6px !important;
}

/* Safe micro-fix: keep the collapsed sticky count and expand arrow on the
   same 35px header line without affecting normal column headers. */
.kanban .column.is-collapsed .column-head.is-stuck .column-count{
  width:22px !important;
  height:22px !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  box-sizing:border-box !important;
  top:3px !important;
  left:7px !important;
}
.kanban .column.is-collapsed .column-head.is-stuck .column-collapse-btn{
  width:22px !important;
  height:22px !important;
  padding:0 !important;
  margin:0 !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  box-sizing:border-box !important;
  top:3px !important;
  right:4px !important;
  left:auto !important;
}

/* Board views: Kanban / Table / Calendar / Timeline */
.view-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:0 0 12px;padding:10px 12px;background:rgba(255,255,255,.82);border:1px solid #e6e9ef;border-radius:13px}
.view-toolbar-actions{display:flex;gap:6px;flex-wrap:wrap}.view-btn{border:1px solid #dfe4ec;background:#fff;color:#5c687b;border-radius:9px;padding:7px 10px;font-size:12px;font-weight:800;cursor:pointer}.view-btn:hover{border-color:#bcc7d9;background:#f8faff}.view-btn.active{background:#eef2ff;border-color:#b7c3ff;color:#4f63d7}
.view-panel{overflow:hidden}.task-view-table td,.task-view-table th{vertical-align:middle}.table-task-link{border:0;background:none;padding:0;cursor:pointer;color:inherit;text-align:left}.table-task-link:hover{text-decoration:underline;color:var(--accent)}
.calendar-panel{overflow:hidden}.calendar-nav{display:flex;align-items:center;gap:7px;padding:4px 0 12px}.calendar-nav-title{font-size:18px;font-weight:850;margin-left:8px;text-transform:capitalize}.calendar-weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-left:1px solid var(--border);border-top:1px solid var(--border)}.calendar-weekdays>div{padding:9px 10px;background:#f7f8fb;border-right:1px solid var(--border);border-bottom:1px solid var(--border);font-size:11px;font-weight:850;color:#687488}.calendar-cell{min-height:128px;padding:7px;border-right:1px solid var(--border);border-bottom:1px solid var(--border);background:#fff}.calendar-cell.is-muted{background:#fafbfc}.calendar-cell.is-today{background:#f7f9ff}.calendar-day{font-size:12px;font-weight:850;color:#667085;margin-bottom:6px}.calendar-task{display:block;width:100%;text-align:left;border:0;border-radius:7px;background:#edf2ff;color:#3f4f7f;padding:6px 7px;margin:4px 0;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}.calendar-task:hover{background:#e1e8ff}.calendar-task.is-overdue{background:#fee2e2;color:#a12626}.calendar-task.is-done{opacity:.65;text-decoration:line-through}
.timeline-header{display:grid;grid-template-columns:minmax(250px,320px) minmax(0,1fr);gap:12px;margin-bottom:6px}.timeline-scale{display:grid;grid-template-columns:repeat(31,minmax(20px,1fr));overflow:hidden;border-top:1px solid var(--border);border-left:1px solid var(--border)}.timeline-day-head{padding:5px 2px;border-right:1px solid #e7ebf1;border-bottom:1px solid var(--border);text-align:center;font-size:9px;color:#7b8798;background:#fafbfc}.timeline-list{display:grid;gap:8px}.timeline-row{display:grid;grid-template-columns:minmax(250px,320px) minmax(0,1fr);gap:12px;align-items:center}.timeline-label{min-width:0}.timeline-track-grid{position:relative;height:40px;border:1px solid var(--border);border-radius:9px;overflow:hidden;background:#fbfcfd}.timeline-grid-lines{position:absolute;inset:0;display:grid;grid-template-columns:repeat(31,minmax(20px,1fr))}.timeline-grid-lines span{border-right:1px solid #edf0f4}.timeline-bar{position:absolute;top:8px;height:24px;border:0;border-radius:7px;background:#dbe4ff;color:#4659aa;font-size:10px;font-weight:800;padding:0 8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.timeline-bar:hover{filter:brightness(.97)}.timeline-bar.is-overdue{background:#fee2e2;color:#a12626}.timeline-bar.is-done{background:#dcfce7;color:#2e7140}.timeline-note{margin-top:10px;font-size:11px;color:var(--muted)}
.automation-list{display:grid;gap:8px}.automation-row{display:flex;justify-content:space-between;gap:12px;align-items:center;border:1px solid var(--border);border-radius:11px;padding:11px 12px;background:var(--panel)}.automation-actions{display:flex;gap:7px;flex:none}.modal-large{width:min(820px,calc(100vw - 32px));max-width:820px}.attachment-text-preview{margin:0;padding:18px;white-space:pre-wrap;word-break:break-word;font:13px/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;max-height:70vh;overflow:auto;background:#0f1720;color:#dbe5f0}.attachment-preview-text{font-size:13px;font-weight:850;display:grid;place-items:center}
.attachment-preview-xlsx,.attachment-preview-docx,.attachment-preview-doclegacy,.attachment-preview-csv,.attachment-preview-zip{font-size:13px;font-weight:850;display:grid;place-items:center;background:var(--bg)}
@media(max-width:900px){.view-toolbar{align-items:flex-start;flex-direction:column}.timeline-header,.timeline-row{grid-template-columns:1fr}.timeline-scale{display:none}.timeline-track-grid{height:36px}.calendar-cell{min-height:100px}.calendar-weekdays>div{padding:7px 5px}.calendar-cell{padding:5px}}


/* v0.4.x — stable top navigation sizing */
.topbar nav{display:flex;align-items:center;gap:4px;flex:1;min-width:0;white-space:nowrap}
.topbar nav button{display:inline-flex;align-items:center;justify-content:center;height:40px;box-sizing:border-box;border:0;background:transparent;padding:0 13px;border-radius:10px;color:var(--muted);font:inherit;font-weight:650;line-height:1;white-space:nowrap}
.topbar nav button:hover{background:var(--bg);color:var(--text)}
.topbar nav button.active{background:var(--accent-soft);color:var(--accent);font-weight:800}
:root[data-theme="dark"] .topbar nav button.active{background:#1c2940;color:#fff}
:root[data-theme="graphite"] .topbar nav button.active{background:#3a4660;color:#fff}

/* v0.4.x — calendar workweek/official Russian holidays */
.calendar-cell.is-weekend{background:#f7f7f8}
.calendar-cell.is-holiday{background:#fff4f4}
.calendar-cell.is-holiday.is-weekend{background:#fff0f0}
.calendar-cell.is-holiday .calendar-day{color:#c24141}
.calendar-holiday-dot{font-size:7px;vertical-align:2px;color:#ef4444}
.calendar-weekdays>div:nth-child(6),.calendar-weekdays>div:nth-child(7){color:#b45353}

.topbar nav button[data-board-view].active{background:var(--accent-soft);color:var(--accent);}
.topbar nav button[data-page="board"].active{background:var(--accent-soft);color:var(--accent);}


/* v0.6.6 — per-column scrolling (Trello-style): each list scrolls its own
   cards instead of growing the whole page. The column head (title/counter)
   stays fixed, only the card stack scrolls. Adjust the "230px" offset below
   if your header/toolbar height changes and columns end up too short/tall. */
.column{display:flex;flex-direction:column;max-height:var(--kanban-col-max-h, calc(100vh - 230px))}
.column-head{flex:0 0 auto}
.column-body{flex:1 1 auto;min-height:120px;overflow-y:auto;overflow-x:hidden;padding-right:4px;scrollbar-width:thin}
.column-body::-webkit-scrollbar{width:7px}
.column-body::-webkit-scrollbar-thumb{background:rgba(15,23,42,.16);border-radius:999px}
.column-body::-webkit-scrollbar-thumb:hover{background:rgba(15,23,42,.28)}
@media(max-width:700px){.column{max-height:none}.column-body{overflow-y:visible}}

/* v0.6.7 — spell-hint strip for plain inputs/textareas (title, comments) */
.spell-hint{margin-top:5px;font-size:11.5px;display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.spell-hint-label{color:#98a1b0;font-weight:700}
.spell-hint-item{border:1px solid #fbc7c7;background:#fff5f5;color:#b42318;border-radius:999px;padding:2px 9px;cursor:pointer;font-size:11px;font-weight:650}
.spell-hint-item:hover{background:#ffe9e9}
.spell-hint-item.spell-hint-plain{cursor:default}
.spell-hint-item.spell-hint-plain:hover{background:#fff5f5}
:root[data-theme="dark"] .spell-hint-item,:root[data-theme="graphite"] .spell-hint-item{background:rgba(220,38,38,.14);border-color:rgba(220,38,38,.4);color:#fca5a5}

/* v0.6.7 — quick-edit popovers from the card ⋮/ПКМ menu (dates, move) */
.card-date-form{display:flex;flex-direction:column;gap:8px;padding:2px 4px 4px}
.card-date-form label{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--muted);font-weight:650}
.card-date-form input,.card-date-form select{padding:7px 8px}
.card-date-form button{margin-top:2px}

/* v0.6.9 — live spell-hint strip inside the rich editor (real-time, not
   just on blur) */
.rich-editor-wrap .spell-hint.rich-spell-hint{margin:0;padding:8px 12px;border-top:1px solid #eef0f4;background:#fafbfc}
:root[data-theme="dark"] .rich-editor-wrap .spell-hint.rich-spell-hint,:root[data-theme="graphite"] .rich-editor-wrap .spell-hint.rich-spell-hint{border-top-color:var(--border);background:rgba(255,255,255,.02)}

/* v0.7.0 — denser board layout (more cards visible per column, tighter
   header) + avatar sizing fix + real dynamic column height (replaces the
   earlier fixed 230px guess, which didn't account for the actual header
   height and left the whole page still scrolling). */
.task-card{padding:10px 10px 9px !important;margin-bottom:7px !important;border-radius:12px !important}
.task-title{margin:6px 0 8px !important;font-size:13px !important;line-height:1.3 !important}
.task-card-footer{gap:6px !important}
.column{padding:8px !important}
.column-head{padding:3px 4px 8px !important}
.board-toolbar{padding:8px 10px !important}

.avatar{width:27px !important;height:27px !important;border-radius:50% !important;font-size:9.5px !important;letter-spacing:-.3px !important;background:var(--accent-soft) !important;color:var(--accent) !important;font-weight:800 !important}
.avatar-helper{width:27px !important;height:27px !important;font-size:9.5px !important}

/* v0.7.1 — column height was still fighting two old rules: a large fixed
   .column{min-height:520px} (bigger than the dynamic max-height on shorter
   screens, which forced the page to scroll again) and .kanban{align-items:
   stretch} (which stretched every column to match the TALLEST one, showing
   a lot of empty space under short columns). Both neutralized below. */
.kanban{align-items:start !important}
.column{min-height:160px !important}

/* v0.8.0 — inline team-role <select> replaces the old prompt() dialog */
.team-role-select{padding:5px 8px;border-radius:8px;font-size:12px;font-weight:650;min-width:100px}

/* v0.8.1 — calendar/timeline scroll in place, like the board's columns,
   instead of growing the whole page. */
.calendar-grid{max-height:var(--calendar-max-h, 60vh);overflow-y:auto}
.timeline-list{max-height:var(--timeline-max-h, 60vh);overflow-y:auto}

/* Today marker on the Timeline — the header cell and the matching grid-line
   in every row both get .is-today, so the whole column highlights
   consistently top to bottom, not just the date number at the top. Uses
   theme variables so it's correct in all three themes without per-theme
   overrides. */
.timeline-day-head.is-today{background:var(--accent-soft);color:var(--accent);font-weight:900;position:relative}
.timeline-day-head.is-today::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--accent)}
.timeline-grid-lines span.is-today{background:var(--accent-soft)}

/* v0.8.4 — dark-theme colors for calendar & timeline (never had any before
   — every cell/track was hardcoded white/light, regardless of theme) */
:root[data-theme="dark"] .calendar-weekdays>div{background:#131a24;color:#9aa6b5;border-color:var(--border)}
:root[data-theme="dark"] .calendar-cell{background:var(--panel);border-color:var(--border)}
:root[data-theme="dark"] .calendar-cell.is-muted{background:#0f151d}
:root[data-theme="dark"] .calendar-cell.is-today{background:#141c2c}
:root[data-theme="dark"] .calendar-task{background:#1d2947;color:#c7d2ff}
:root[data-theme="dark"] .calendar-task:hover{background:#243361}
:root[data-theme="dark"] .calendar-task.is-overdue{background:#3a1a1a;color:#ff9b9b}
:root[data-theme="dark"] .timeline-day-head{background:#131a24;color:#9aa6b5;border-color:var(--border)}
:root[data-theme="dark"] .timeline-track-grid{background:#131a24;border-color:var(--border)}
:root[data-theme="dark"] .timeline-grid-lines span{border-color:#232d3a}
:root[data-theme="dark"] .timeline-bar{background:#26365e;color:#c7d2ff}
:root[data-theme="dark"] .timeline-bar.is-overdue{background:#3a1a1a;color:#ff9b9b}
:root[data-theme="dark"] .timeline-bar.is-done{background:#173322;color:#8fe0ab}

/* Graphite never got the equivalent of the dark-theme block above — every
   calendar/timeline cell was falling back to hardcoded light colors
   (#fafbfc, #f7f8fb, white task pills, etc.) regardless of the graphite
   theme being active. Same fix, graphite's own palette. */
:root[data-theme="graphite"] .calendar-weekdays>div{background:#2f343c;color:var(--muted);border-color:var(--border)}
:root[data-theme="graphite"] .calendar-cell{background:var(--panel);border-color:var(--border)}
:root[data-theme="graphite"] .calendar-cell.is-muted{background:#25292f}
:root[data-theme="graphite"] .calendar-cell.is-today{background:var(--accent-soft)}
:root[data-theme="graphite"] .calendar-task{background:#3a4360;color:#c7d2ff}
:root[data-theme="graphite"] .calendar-task:hover{background:#454f72}
:root[data-theme="graphite"] .calendar-task.is-overdue{background:#4a2a2a;color:#ff9b9b}
:root[data-theme="graphite"] .timeline-day-head{background:#2f343c;color:var(--muted);border-color:var(--border)}
:root[data-theme="graphite"] .timeline-track-grid{background:#2f343c;border-color:var(--border)}
:root[data-theme="graphite"] .timeline-grid-lines span{border-color:#40454e}
:root[data-theme="graphite"] .timeline-bar{background:#3a4360;color:#c7d2ff}
:root[data-theme="graphite"] .timeline-bar.is-overdue{background:#4a2a2a;color:#ff9b9b}
:root[data-theme="graphite"] .timeline-bar.is-done{background:#20402c;color:#8fe0ab}

/* v0.8.4 — smaller calendar by default, per request — less scrolling needed */
.calendar-cell{min-height:88px !important;padding:5px !important}
.calendar-task{padding:4px 6px !important;margin:2px 0 !important;font-size:10px !important}

/* v0.8.5 — .view-toolbar (the "ИТ Восток · Таблица/Календарь/Временная
   шкала" strip above table/calendar/timeline) is a different element from
   .board-picker fixed in 0.8.4 — it never had a dark variant at all, hence
   the semi-transparent white background still showing through as a pale
   strip on dark backgrounds. */
:root[data-theme="dark"] .view-toolbar{background:rgba(21,30,41,.82);border-color:var(--border);color:var(--text)}
