/* Трекер СТМ — лёгкий «яблочный» интерфейс: полупрозрачная боковая панель, белые карточки на светло-сером фоне. */
@font-face{font-family:"InterVar";font-style:normal;font-weight:100 900;font-display:swap;src:url(/static/fonts/inter-cyrillic-ext-wght-normal.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}
@font-face{font-family:"InterVar";font-style:normal;font-weight:100 900;font-display:swap;src:url(/static/fonts/inter-cyrillic-wght-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"InterVar";font-style:normal;font-weight:100 900;font-display:swap;src:url(/static/fonts/inter-latin-ext-wght-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"InterVar";font-style:normal;font-weight:100 900;font-display:swap;src:url(/static/fonts/inter-latin-wght-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

:root{
  /* Контраст по WCAG 2.2 AA: основной и вторичный текст ≥ 4.5:1 к белому и к фону, разделители — 1px. */
  --bg:#EEF0F3; --surface:#FFFFFF; --surface-2:rgba(80,88,104,.11); --hover:rgba(15,23,42,.05); --line:rgba(15,23,42,.12); --line-strong:rgba(15,23,42,.22);
  --fg:#14161A; --muted:#60656E; --fg-2:#2E3138;
  --accent:#0A63CF; --accent-ink:#FFFFFF; --accent-soft:rgba(10,99,207,.11);
  --green:#1C7A33; --green-soft:rgba(36,160,70,.15); --orange:#B83000; --orange-soft:rgba(255,140,0,.17); --amber:#8A5A00; --amber-soft:rgba(255,190,0,.2); --red:#C8001A; --red-soft:rgba(230,30,40,.12);
  --violet:#7D3AA3; --violet-soft:rgba(150,70,210,.13); --slate:#50555D; --slate-soft:rgba(80,88,104,.13); --blue:#0A5FC7; --blue-soft:rgba(10,99,207,.12);
  --teal:#0B6E77; --pink:#B0164F; --olive:#66741A;
  --side-bg:rgba(232,234,238,.86); --sheet:rgba(255,255,255,.96); --scrim:rgba(0,0,0,.24);
  --av-l:82%; --av-s:60%; --av-fg:#14161A;
  --shadow-1:0 0 0 1px rgba(15,23,42,.06), 0 1px 3px rgba(15,23,42,.06);
  --shadow-2:0 24px 64px rgba(0,0,0,.16), 0 4px 12px rgba(0,0,0,.06);
  --ring:0 0 0 3px color-mix(in srgb, var(--accent) 35%, transparent);
  --f-body:-apple-system, BlinkMacSystemFont, "SF Pro Text", "InterVar", "Segoe UI Variable Text", "Segoe UI", system-ui, sans-serif;
  --f-display:-apple-system, BlinkMacSystemFont, "SF Pro Display", "InterVar", "Segoe UI Variable Display", "Segoe UI", system-ui, sans-serif;
  color-scheme:light;
}
@media (prefers-color-scheme: dark){:root{
  --bg:#000; --surface:#1C1C1E; --surface-2:rgba(130,130,140,.26); --hover:rgba(255,255,255,.07); --line:rgba(110,110,118,.5); --line-strong:rgba(150,150,160,.55);
  --fg:#F5F5F7; --muted:#AEAEB4; --fg-2:#E2E2E6;
  --accent:#2E8FFF; --accent-soft:rgba(10,132,255,.22);
  --green:#30D158; --green-soft:rgba(48,209,88,.18); --orange:#FF9F0A; --orange-soft:rgba(255,159,10,.18); --amber:#FFD60A; --amber-soft:rgba(255,214,10,.16); --red:#FF453A; --red-soft:rgba(255,69,58,.18);
  --violet:#BF5AF2; --violet-soft:rgba(191,90,242,.2); --slate:#AEAEB2; --slate-soft:rgba(118,118,128,.26); --blue:#409CFF; --blue-soft:rgba(10,132,255,.22);
  --teal:#5AC8D2; --pink:#FF6FA8; --olive:#B8C95A;
  --side-bg:rgba(28,28,30,.78); --sheet:rgba(36,36,38,.96); --scrim:rgba(0,0,0,.5);
  --av-l:30%; --av-s:35%; --av-fg:#F5F5F7;
  --shadow-1:0 1px 2px rgba(0,0,0,.3); --shadow-2:0 24px 64px rgba(0,0,0,.6), 0 4px 12px rgba(0,0,0,.4);
  color-scheme:dark}}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--fg);font:14px/1.45 var(--f-body);letter-spacing:-.006em;min-height:100vh}
@media (prefers-color-scheme: dark){body{-webkit-font-smoothing:antialiased}}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
button,input,select,textarea{font:inherit;color:inherit;letter-spacing:inherit}
button{cursor:pointer}
[hidden]{display:none!important}
:focus-visible{outline:none;box-shadow:var(--ring);border-radius:8px}
h1,h2,h3{margin:0}
code{font:12.5px ui-monospace, "SF Mono", Menlo, Consolas, monospace;background:var(--surface-2);padding:1px 5px;border-radius:5px}
.min0{min-width:0}
.ell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.muted{color:var(--muted)}
.small{font-size:12.5px}
.nowrap{white-space:nowrap}
.row-gap{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.spacer{flex:1}
.select-all{user-select:all}

/* ---------- каркас ---------- */
.app{display:grid;grid-template-columns:264px minmax(0,1fr);min-height:100vh}
.side{position:sticky;top:0;height:100vh;overflow:auto;background:var(--side-bg);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);
  border-right:1px solid var(--line);display:flex;flex-direction:column;gap:6px;padding:20px 12px 12px;padding-left:max(12px, env(safe-area-inset-left,0px))}
.brand{display:flex;align-items:center;gap:11px;padding:0 6px 10px}
.brand-mark{width:34px;height:34px;border-radius:9px;background:linear-gradient(180deg, color-mix(in srgb, var(--accent) 78%, #fff), var(--accent));color:#fff;display:grid;place-items:center;font:650 11px var(--f-display);letter-spacing:.02em;flex:none;box-shadow:0 1px 3px rgba(0,0,0,.14)}
.brand-mark.lg{width:56px;height:56px;border-radius:14px;font-size:15px}
.brand-name{font:650 17px/1.15 var(--f-display);letter-spacing:-.02em}
.brand-logo{width:46px;height:auto;flex:none;display:block}
.login-logo{display:block;width:min(260px,80%);height:auto;margin:0 auto 4px}
.brand-sub{font-size:12px;color:var(--muted)}
.side-search{display:flex;align-items:center;gap:7px;background:var(--surface);box-shadow:0 0 0 1px var(--line);border-radius:9px;padding:0 10px;height:32px;color:var(--muted);margin:0 2px 6px}
.side-search:focus-within{box-shadow:var(--ring)}
.side-search input{border:0;background:none;outline:none;min-width:0;width:100%;color:var(--fg);font-size:13.5px}
.side-search input::placeholder{color:var(--muted);opacity:1}
.side-search kbd{font:500 11px var(--f-body);color:var(--muted);background:var(--surface);border-radius:5px;padding:0 6px;box-shadow:var(--shadow-1)}
.create{margin:0 2px 8px;justify-content:center;height:38px;font-size:14.5px}
.nav{display:flex;flex-direction:column;gap:1px}
.nav-label{font-size:12px;color:var(--muted);padding:14px 10px 4px;font-weight:600}
.nav-item{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:8px;color:var(--fg-2);font-size:14px;min-width:0}
.nav-item svg{color:var(--accent);flex:none}
.nav-item:hover{background:var(--hover);text-decoration:none}
.nav-item[aria-current="page"]{background:var(--surface-2);color:var(--fg);font-weight:550}
.nav-item.sub{font-size:13.5px;padding-block:5px}
.nav-item .count{margin-left:auto;font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums}
.nav-item .count.accent{background:var(--accent);color:#fff;border-radius:999px;padding:0 7px;font-weight:600}
.dot{width:8px;height:8px;border-radius:50%;background:currentColor;flex:none;display:inline-block}
.side-foot{margin-top:auto;display:flex;align-items:center;gap:6px;padding:10px 2px 0;border-top:1px solid var(--line)}
.me{display:flex;align-items:center;gap:9px;min-width:0;flex:1;border-radius:10px;padding:4px;color:var(--fg)}
.me:hover{background:var(--hover);text-decoration:none}
.me .min0{display:flex;flex-direction:column}
.me-name{font-weight:550;font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.me-login{font-size:12px;color:var(--muted)}
.icon-btn{border:0;background:var(--surface-2);border-radius:999px;width:32px;height:32px;display:inline-grid;place-items:center;flex:none;color:var(--fg-2)}
.icon-btn:hover{filter:brightness(.95)}
.icon-btn.sm{width:26px;height:26px;background:none;color:var(--muted)}
.icon-btn.sm:hover{background:var(--hover);color:var(--red)}
.main{min-width:0;padding:22px max(20px, env(safe-area-inset-right,0px)) 56px 28px}
.mobile-top{display:none}
.side-scrim{display:none}

/* ---------- кнопки, поля ---------- */
.btn{border:0;background:var(--surface-2);border-radius:999px;height:34px;padding:0 15px;display:inline-flex;align-items:center;gap:7px;font-weight:550;white-space:nowrap;color:var(--accent);text-decoration:none!important}
.btn:hover{filter:brightness(.96)}
.btn.primary{background:var(--accent);color:#fff}
.btn.primary:hover{filter:brightness(1.08)}
.btn.small{height:28px;padding:0 12px;font-size:13px}
.btn.ghost{background:none}
.btn.ghost:hover{background:var(--hover)}
.btn.wide{width:100%;justify-content:center;height:42px;font-size:15px}
.link-btn{border:0;background:none;padding:0;color:var(--accent);font-size:13px;font-weight:500}
.link-btn:hover{text-decoration:underline}
.link-btn.danger{color:var(--red)}
.sel{height:30px;border:0;background:var(--surface-2);border-radius:8px;padding:0 10px;font-size:13px;max-width:100%;color:var(--fg);min-width:0}
.sel:focus{outline:none;box-shadow:var(--ring)}
.w-num{width:64px}
.chk{display:inline-flex;align-items:center;gap:7px;font-size:13.5px;cursor:pointer}
.chk input{accent-color:var(--accent);width:16px;height:16px;margin:0}
.chk.tight{font-size:13px;color:var(--fg-2)}
.chip{display:inline-flex;align-items:center;gap:5px;height:26px;padding:0 10px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:12.5px;font-weight:500;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.chip:hover{text-decoration:none;filter:brightness(.97)}
.chip.static{background:var(--surface-2);color:var(--fg-2)}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.badge{display:inline-flex;align-items:center;height:18px;padding:0 6px;border-radius:5px;background:var(--surface-2);color:var(--muted);font-size:10.5px;font-weight:600;letter-spacing:.02em;vertical-align:middle;text-transform:uppercase}
.badge.accent{background:var(--accent-soft);color:var(--accent)}
.badge.danger{background:var(--red-soft);color:var(--red);text-transform:none;letter-spacing:0}
.qkey{font:650 10.5px var(--f-body);letter-spacing:.03em;color:var(--accent);background:var(--accent-soft);border-radius:6px;padding:3px 7px;white-space:nowrap}
.key{font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.key.strong{color:var(--fg-2);font-weight:550}
.tag{font-size:12px;color:var(--fg-2);background:var(--surface-2);border-radius:5px;padding:0 6px;white-space:nowrap}
.sep{color:var(--muted)}
.notice{border-radius:12px;padding:12px 16px;margin-bottom:14px;line-height:1.55}
.notice.ok{background:var(--green-soft)}
.notice.err{background:var(--red-soft);color:var(--red)}
.err{color:var(--red);font-size:13px}
.hint{font-size:12px;color:var(--muted)}

/* ---------- заголовок страницы ---------- */
.page{display:flex;flex-direction:column;gap:14px}
.page.narrow{max-width:720px}
.page-head{display:flex;align-items:flex-end;gap:12px 16px;flex-wrap:wrap;padding-top:4px}
.page-title{font:700 28px/1.15 var(--f-display);letter-spacing:-.025em;text-wrap:balance}
.page-sub{color:var(--muted);font-size:13px;margin-top:4px}
.eyebrow{font-size:12.5px;color:var(--muted);margin-bottom:4px;display:flex;gap:6px;align-items:center}
.head-actions{margin-left:auto;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.lead-text{max-width:75ch;color:var(--fg-2);margin:0;line-height:1.55}
.pad{padding:6px 4px}

/* сегменты */
.seg{display:inline-flex;background:var(--surface-2);border-radius:9px;padding:2px;gap:2px;flex-wrap:wrap}
.seg > a,.seg-opt span{display:inline-flex;align-items:center;gap:6px;border-radius:7px;padding:4px 13px;font-weight:550;font-size:13px;color:var(--fg-2);text-decoration:none!important;cursor:pointer}
.seg > a[aria-pressed="true"],.seg-opt input:checked + span{background:var(--surface);color:var(--fg);box-shadow:0 1px 3px rgba(0,0,0,.12), 0 0 0 .5px rgba(0,0,0,.04)}
.seg-opt input{position:absolute;opacity:0;pointer-events:none}
.seg-opt input:focus-visible + span{box-shadow:var(--ring)}
.seg.big > a{padding:6px 16px;font-size:13.5px}

/* выпадающие меню на <details> */
.menu{position:relative}
.menu > summary{list-style:none;cursor:pointer}
.menu > summary::-webkit-details-marker{display:none}
.menu-body{position:absolute;z-index:30;top:calc(100% + 6px);left:0;min-width:220px;max-width:min(320px, calc(100vw - 32px));max-height:60vh;overflow:auto;background:var(--sheet);
  -webkit-backdrop-filter:saturate(180%) blur(24px);backdrop-filter:saturate(180%) blur(24px);border-radius:12px;box-shadow:var(--shadow-2), 0 0 0 1px var(--line);padding:6px;display:flex;flex-direction:column;gap:2px}
.menu.right .menu-body{left:auto;right:0}
.menu.up .menu-body{top:auto;bottom:calc(100% + 6px)}
.menu-title{font-size:12px;color:var(--muted);padding:6px 10px 4px;font-weight:600}
.menu-item{display:flex;align-items:center;gap:10px;width:100%;border:0;background:none;padding:7px 10px;border-radius:7px;text-align:left}
.menu-item:hover{background:var(--accent);color:#fff}
.menu-item:hover .dot{background:#fff}
.form-col{display:flex;flex-direction:column;gap:10px;padding:8px}
.form-col input:not([type=checkbox]):not([type=radio]){height:34px;border:0;border-radius:9px;background:var(--surface-2);padding:0 11px}
.checks-list{gap:0}
.checks-list .chk{padding:6px 8px;border-radius:7px}
.checks-list .chk:hover{background:var(--hover)}

/* ---------- фильтры ---------- */
.filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.search{flex:1 1 240px;min-width:0;max-width:440px;display:flex;align-items:center;gap:8px;background:var(--surface);box-shadow:0 0 0 1px var(--line-strong);border-radius:10px;padding:0 12px;height:34px;color:var(--muted)}
.search:focus-within{box-shadow:var(--ring)}
.search input{border:0;background:none;outline:none;width:100%;min-width:0;color:var(--fg)}
.filters .sel{background:var(--surface);box-shadow:0 0 0 1px var(--line-strong);height:34px;border-radius:10px}
.filters .reset{margin-left:auto}

/* ---------- списки ---------- */
.panel{background:var(--surface);border-radius:16px;box-shadow:var(--shadow-1);overflow:hidden}
.rows{display:flex;flex-direction:column;padding:4px 10px 10px}
.row{position:relative;display:grid;grid-template-columns:minmax(240px,1fr) 170px 180px 92px 128px 120px 64px;align-items:center;gap:14px;padding:11px 12px;border-radius:10px;min-width:0}
.row::after{content:"";position:absolute;left:12px;right:12px;bottom:0;height:1px;background:var(--line)}
.row:hover:not(.head){background:var(--hover)}
.row:hover::after{opacity:0}
.row.head{font-size:12px;color:var(--muted);font-weight:550;padding-block:10px 8px}
.row.head a{color:var(--muted)}
.row.head a.on{color:var(--fg)}
.row-link{color:var(--fg);font-weight:550;font-size:14.5px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.row-link::before{content:"";position:absolute;inset:0;border-radius:10px}
.row-link:hover{text-decoration:none;color:var(--accent)}
.row .c-star,.row .star,.row button,.row form{position:relative;z-index:1}
.sub-line{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:12.5px;margin-top:2px;min-width:0;overflow:hidden;white-space:nowrap}
.is-done .row-link,.is-done .ell{color:var(--muted)}
.c-who{display:flex;gap:8px;align-items:center;min-width:0;color:var(--fg-2)}
.c-star{display:flex;justify-content:flex-end}
.due{font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--fg-2)}
.due.over{color:var(--red);font-weight:550}
.due.today{color:var(--orange);font-weight:550}
.more{display:block;margin:10px auto 4px;border:0;background:var(--surface-2);color:var(--accent);border-radius:999px;padding:7px 18px;font-weight:550}
.empty{padding:56px 16px;text-align:center;color:var(--muted)}
.empty b{display:block;color:var(--fg);font:650 17px var(--f-display);margin-bottom:4px}
.empty.big{padding-top:18vh}
.prows .row{grid-template-columns:minmax(240px,1fr) 150px 190px 170px 150px 36px}
.qrows .row{grid-template-columns:100px minmax(200px,1fr) 200px 90px 70px 130px}
.urows .row{grid-template-columns:minmax(200px,1fr) 110px minmax(120px,.7fr) minmax(120px,.7fr) 130px 110px 80px}
.qarows .row{grid-template-columns:110px minmax(200px,1fr) 200px 70px 80px}
.frows .row{grid-template-columns:minmax(200px,1fr) 150px minmax(180px,1fr) 80px 80px}
.row-details > summary{list-style:none;cursor:pointer}
.row-details > summary::-webkit-details-marker{display:none}
.row-details.off summary{opacity:.55}
.row-details[open] > summary{background:var(--accent-soft)}
.row-edit{padding:14px 12px 18px;display:flex;flex-direction:column;gap:12px}
.row-edit.form-grid{display:grid}
.progress-cell{display:inline-flex;align-items:center;gap:8px}
.bar{display:inline-block;width:72px;height:5px;border-radius:3px;background:var(--surface-2);overflow:hidden;vertical-align:middle}
.bar.wide{width:140px}
.bar i{display:block;height:100%;background:var(--green);border-radius:3px}

/* статусы — цвета */
.pill{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:3px 10px 3px 8px;font-size:12.5px;font-weight:550;white-space:nowrap;border:0;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.pill::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}
.pill.plain::before{display:none}
.c-slate{--c:var(--slate);--cs:var(--slate-soft)}
.c-blue{--c:var(--blue);--cs:var(--blue-soft)}
.c-orange{--c:var(--orange);--cs:var(--orange-soft)}
.c-violet{--c:var(--violet);--cs:var(--violet-soft)}
.c-green{--c:var(--green);--cs:var(--green-soft)}
.c-amber{--c:var(--amber);--cs:var(--amber-soft)}
.c-red{--c:var(--red);--cs:var(--red-soft)}
.pill[class*="c-"]{background:var(--cs);color:var(--c)}
.dot[class*="c-"]{background:var(--c)}

/* аватары, приоритет, избранное */
.av{width:24px;height:24px;border-radius:50%;display:inline-grid;place-items:center;font:650 10px var(--f-body);flex:none;letter-spacing:0;
  background:linear-gradient(180deg, hsl(var(--h) var(--av-s) calc(var(--av-l) + 4%)), hsl(var(--h) var(--av-s) var(--av-l)));color:var(--av-fg)}
.av.sm{width:20px;height:20px;font-size:9px}
.av.lg{width:32px;height:32px;font-size:12px}
.av.xl{width:56px;height:56px;font-size:19px}
.av.bot{border-radius:7px}
.av.none{background:none;box-shadow:inset 0 0 0 1px var(--line);color:var(--muted)}
.people{display:inline-flex}
.people .av{margin-left:-6px;box-shadow:0 0 0 2px var(--surface)}
.people .av:first-child{margin-left:0}
.prio{display:inline-flex;align-items:center;gap:7px;white-space:nowrap;color:var(--fg-2);font-size:13px}
.bars{display:inline-flex;gap:2px;align-items:flex-end;height:11px}
.bars i{width:3px;border-radius:1.5px;background:var(--line)}
.bars i:nth-child(1){height:4px}.bars i:nth-child(2){height:7px}.bars i:nth-child(3){height:9px}.bars i:nth-child(4){height:11px}
.prio .bars i.on{background:var(--muted)}
.prio.w3 .bars i.on{background:var(--accent)}
.prio.w4 .bars i.on{background:var(--orange)}
.prio.w5 .bars i.on,.prio.w5 .bars i{background:var(--red)}
.prio.w4,.prio.w5{font-weight:550}
.prio.w5{color:var(--red)}
.star{border:0;background:none;width:30px;height:30px;border-radius:50%;display:inline-grid;place-items:center;color:var(--muted)}
.star:hover{background:var(--hover);color:var(--orange)}
.star.on{color:#FF9F0A}
.star.on svg{fill:#FF9F0A}

/* ---------- доска ---------- */
.board-wrap{overflow-x:auto;margin-inline:-4px;padding-bottom:8px}
.board{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(264px,1fr);gap:12px;padding:2px 4px;align-items:start;min-width:min-content}
.col{background:color-mix(in srgb, var(--surface-2) 60%, transparent);border-radius:16px;padding:10px;display:flex;flex-direction:column;gap:8px;min-height:160px;transition:box-shadow .15s}
.col.drop{box-shadow:inset 0 0 0 2px var(--accent)}
.col-head{display:flex;align-items:center;gap:8px;padding:2px 4px 2px}
.col-head .count{margin-left:auto;font-size:13px;color:var(--muted)}
.col-body{display:flex;flex-direction:column;gap:8px;min-height:60px}
.card{background:var(--surface);border-radius:14px;box-shadow:var(--shadow-1)}
a.card{padding:12px 13px;display:flex;flex-direction:column;gap:8px;color:var(--fg);cursor:grab;transition:transform .12s, box-shadow .12s;text-decoration:none!important}
a.card:hover{transform:translateY(-1px);box-shadow:0 2px 4px rgba(0,0,0,.05), 0 8px 24px rgba(0,0,0,.08)}
.card.dragging{opacity:.4}
.card-title{font-weight:550;line-height:1.35}
h2.card-title{font:650 15px var(--f-display);letter-spacing:-.01em;margin-bottom:6px}
.card-meta{display:flex;align-items:center;gap:6px 8px;font-size:12.5px;color:var(--muted);flex-wrap:wrap}
.card-meta .prio-name{display:none}
.card-meta .av{margin-left:auto}

/* ---------- карточка задачи / проекта ---------- */
.crumbs{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13.5px;color:var(--muted)}
.crumbs a{color:var(--fg-2)}
.issue-grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:20px;align-items:start}
.issue-main{display:flex;flex-direction:column;gap:18px;background:var(--surface);border-radius:18px;box-shadow:var(--shadow-1);padding:20px 26px 28px}
.issue-aside{display:flex;flex-direction:column;gap:14px;position:sticky;top:16px;max-height:calc(100vh - 32px);overflow:auto;padding-bottom:4px}
.title-input{width:100%;border:0;border-radius:10px;background:none;font:700 25px/1.25 var(--f-display);letter-spacing:-.022em;padding:4px 8px;margin-left:-8px;resize:none;overflow:hidden;color:var(--fg);display:block}
.title-input:hover{background:var(--hover)}
.title-input:focus{outline:none;background:var(--surface);box-shadow:var(--ring)}
.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.status-btn{cursor:pointer;padding:5px 12px 5px 10px;font-size:13px}
.status-btn::after{content:"";width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg) translateY(-2px);margin-left:4px;opacity:.7}
.sec{display:flex;flex-direction:column;gap:8px}
.sec-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.sec-title{font:650 15px var(--f-display);letter-spacing:-.01em;display:flex;align-items:center;gap:8px}
.sec-title .n,.tabs .n{font-size:12px;margin-left:6px;color:var(--muted);font-weight:500}
.md{line-height:1.6;color:var(--fg-2);font-size:14.5px;max-width:75ch;overflow-wrap:anywhere}
.md p{margin:0 0 .6em}.md p:last-child{margin-bottom:0}
.md ul,.md ol{margin:.2em 0 .6em;padding-left:1.4em}
.md pre{background:var(--surface-2);padding:10px 12px;border-radius:10px;overflow:auto}
.md table{border-collapse:collapse;display:block;overflow-x:auto}.md td,.md th{border:1px solid var(--line);padding:4px 8px}
.md blockquote{margin:0;padding-left:12px;border-left:3px solid var(--line);color:var(--muted)}
.mention{color:var(--accent);font-weight:550}
.composer{display:flex;flex-direction:column;gap:8px}
textarea.box{width:100%;min-height:84px;border:1px solid var(--line-strong);border-radius:12px;padding:11px 13px;background:var(--surface);resize:vertical;line-height:1.5}
textarea.box:hover{border-color:color-mix(in srgb, var(--fg) 35%, transparent)}
textarea.box:focus{outline:none;border-color:var(--accent);box-shadow:var(--ring)}
textarea.box::placeholder,.search input::placeholder{color:var(--muted);opacity:1}
.composer-row{display:flex;gap:8px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.file-pick{cursor:pointer}
.tabs{display:inline-flex;gap:2px;background:var(--surface-2);border-radius:9px;padding:2px;overflow-x:auto;max-width:100%;align-self:flex-start}
.tabs button{border:0;background:none;padding:5px 13px;border-radius:7px;color:var(--fg-2);font-weight:550;font-size:13px;white-space:nowrap}
.tabs button[aria-selected="true"]{background:var(--surface);color:var(--fg);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.feed{display:flex;flex-direction:column;gap:20px}
.c{display:grid;grid-template-columns:32px minmax(0,1fr);gap:12px}
.c-head{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}
.c-head b{font-weight:650}
.c-time{color:var(--muted);font-size:12.5px}
.c-actions{margin-left:auto;display:inline-flex;gap:12px}
.c-actions .link-btn{color:var(--muted)}
.c-actions .link-btn:hover{color:var(--accent)}
.c-actions .link-btn.danger:hover{color:var(--red)}
.c-text{margin-top:3px}
.c-files{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.call{background:var(--bg);border-radius:14px;margin-top:8px;overflow:hidden;box-shadow:0 0 0 1px var(--line)}
.call-top{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:11px 14px;font-size:13px;color:var(--fg-2)}
.call-top svg{color:var(--accent)}
.call-top .tag{font:650 11px var(--f-body);letter-spacing:.04em;text-transform:uppercase;color:var(--accent);background:none;padding:0}
.call-sum{padding:0 14px 12px;line-height:1.55}
.call details{padding:0 14px;border-top:1px solid var(--line)}
.call summary{cursor:pointer;padding:10px 0;color:var(--accent);font-weight:550;list-style:none}
.call summary::-webkit-details-marker{display:none}
.call details[open]{padding-bottom:12px}
.tr{display:grid;grid-template-columns:44px 96px minmax(0,1fr);gap:8px;padding:4px 0;font-size:13.5px}
.tr .t{font-size:12px;color:var(--muted);padding-top:2px;font-variant-numeric:tabular-nums}
.tr .s{font-weight:600;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hist{display:flex;flex-direction:column}
.h{display:grid;grid-template-columns:24px minmax(0,1fr);gap:12px;padding:10px 0;border-bottom:1px solid var(--line);font-size:13.5px}
.h:last-child{border-bottom:0}
.h-head{margin-bottom:2px}
.chg{display:flex;gap:6px;align-items:baseline;flex-wrap:wrap;margin-top:2px}
.chg .old{color:var(--muted)}
.arrow{color:var(--muted)}
.files{display:flex;flex-direction:column;gap:8px}
.file{display:grid;grid-template-columns:40px minmax(0,1fr) auto;gap:12px;align-items:center;padding:10px 12px;background:var(--bg);border-radius:12px}
.file-name{font-weight:550;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;color:var(--fg)}
.file-meta{font-size:12.5px;color:var(--muted)}
.ext{width:40px;height:40px;border-radius:9px;display:grid;place-items:center;font:650 10px var(--f-body);text-transform:uppercase;background:var(--accent-soft);color:var(--accent);overflow:hidden}
.ext.e-pdf{background:var(--red-soft);color:var(--red)} .ext.e-xlsx,.ext.e-xls,.ext.e-csv{background:var(--green-soft);color:var(--green)} .ext.e-dwg{background:var(--violet-soft);color:var(--violet)}
.drop label{display:flex;gap:8px;align-items:center;justify-content:center;padding:18px;border-radius:12px;border:1.5px dashed var(--line);color:var(--muted);cursor:pointer;margin-top:10px}
.drop.over label{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}
.link-row{display:grid;grid-template-columns:auto auto minmax(0,1fr) auto auto;gap:10px;align-items:center;padding:9px 12px;background:var(--bg);border-radius:12px}
.link-row .rel{font-size:12.5px;color:var(--muted);white-space:nowrap}
.add-link,.inline-form{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:10px}
.inline-form{margin:0}
.add-link .sel,.inline-form .sel{flex:1 1 180px;height:30px}
.mini-list{display:flex;flex-direction:column}
.mini-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto auto;gap:12px;align-items:center;padding:9px 6px;border-bottom:1px solid var(--line);color:var(--fg)}
.mini-row:has(button){grid-template-columns:auto minmax(0,1fr) auto auto auto auto}
.mini-row:last-child{border-bottom:0}
a.mini-row:hover{background:var(--hover);text-decoration:none;border-radius:8px}
.mini-row .ell{color:var(--fg)}
.pad-list{padding:6px 14px}

/* панель параметров */
.fields{padding:14px 16px 12px}
.f{display:grid;grid-template-columns:116px minmax(0,1fr);gap:8px;align-items:center;min-height:38px;border-bottom:1px solid var(--line)}
.f:last-of-type{border-bottom:0}
.f.top{align-items:start;padding-block:8px}
.f .lbl{color:var(--muted);font-size:13px;line-height:1.3}
.f form{min-width:0}
.f input:not([type=checkbox]),.f select,.inline-area{width:100%;height:30px;border:0;background:none;border-radius:8px;padding:0 8px;margin-left:-8px;color:var(--fg);min-width:0}
.inline-area{height:auto;padding:6px 8px;resize:vertical;line-height:1.45}
.f input:hover,.f select:hover,.inline-area:hover{background:var(--hover)}
.f input:focus,.f select:focus,.inline-area:focus{background:var(--surface-2);outline:none}
.f input.due-input.over{color:var(--red);font-weight:550}
.f input.due-input.today{color:var(--orange);font-weight:550}
.f .static{display:flex;align-items:center;gap:8px;min-width:0}
.with-av{display:flex;align-items:center;gap:6px}
.with-av select{margin-left:-4px!important}
.people-edit{display:flex;flex-wrap:wrap;gap:4px;align-items:center;min-width:0}
.person{display:inline-flex;align-items:center;gap:5px;background:var(--surface-2);border-radius:999px;padding:2px 4px 2px 2px;font-size:12.5px;max-width:100%}
.person.warn{background:var(--orange-soft)}
.person > span:not(.av){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.person .x{border:0;background:none;color:var(--muted);width:18px;height:18px;border-radius:50%;padding:0;line-height:1}
.person .x:hover{background:var(--hover);color:var(--red)}
.add-sel{width:auto!important;color:var(--accent)!important;font-size:13px;height:26px!important}
.checks{display:flex;flex-direction:column;gap:4px}
.checks.grid2{display:grid;grid-template-columns:1fr 1fr;gap:6px 12px}
.switch{position:relative;display:inline-block;width:38px;height:22px}
.switch input{opacity:0;width:0;height:0;position:absolute}
.switch span{position:absolute;inset:0;border-radius:999px;background:var(--surface-2);transition:background .15s;cursor:pointer}
.switch span::after{content:"";position:absolute;left:2px;top:2px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .15s}
.switch input:checked + span{background:var(--green)}
.switch input:checked + span::after{transform:translateX(16px)}
.switch input:focus-visible + span{box-shadow:var(--ring)}
.url-field{display:flex;align-items:center}
.url-open{padding:0 6px}
.add-field{margin-top:8px}
.add-field > summary{list-style:none;width:max-content}
.add-field > summary::-webkit-details-marker{display:none}
.add-field-form{display:flex;flex-direction:column;gap:8px;padding:10px;background:var(--bg);border-radius:12px;margin-top:6px}
.add-field-form input,.add-field-form select,.add-field-form textarea{border:0;border-radius:8px;background:var(--surface);padding:7px 10px;width:100%}
.seg-radio{display:flex;flex-direction:column;gap:4px;font-size:13px}
.seg-radio label{display:flex;gap:7px;align-items:center}

/* ---------- модальное окно ---------- */
.modal-wrap{position:fixed;inset:0;z-index:50;display:grid;place-items:center;background:var(--scrim);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  padding:16px max(16px, env(safe-area-inset-right,0px)) 16px max(16px, env(safe-area-inset-left,0px));animation:fade .18s}
.modal{background:var(--sheet);-webkit-backdrop-filter:saturate(180%) blur(24px);backdrop-filter:saturate(180%) blur(24px);border-radius:20px;box-shadow:var(--shadow-2);width:min(600px,100%);max-height:100%;overflow:auto;padding:24px 26px;display:flex;flex-direction:column;gap:16px;animation:pop .22s cubic-bezier(.2,.8,.2,1)}
@keyframes pop{from{transform:scale(.97);opacity:0}to{transform:none;opacity:1}}
@keyframes fade{from{opacity:0}to{opacity:1}}
@media (prefers-reduced-motion: reduce){.modal,.modal-wrap{animation:none}}
.modal h2{font:700 22px var(--f-display);letter-spacing:-.02em}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 14px}
.form-grid .full{grid-column:1/-1}
.fld{display:flex;flex-direction:column;gap:6px;min-width:0}
.fld > label{font-size:12.5px;color:var(--muted);font-weight:550}
.fld input:not([type=checkbox]):not([type=radio]),.fld select,.fld textarea{height:38px;border:0;border-radius:10px;padding:0 12px;background:var(--surface-2);width:100%;color:var(--fg)}
.fld textarea{height:auto;min-height:80px;padding:10px 12px;resize:vertical}
.fld input:focus,.fld select:focus,.fld textarea:focus{outline:none;box-shadow:var(--ring)}
.fld.checks{justify-content:flex-end}
.modal-foot{display:flex;justify-content:flex-end;gap:8px}

/* ---------- вход ---------- */
.login-wrap{min-height:100vh;display:grid;place-items:center;padding:24px max(16px, env(safe-area-inset-right,0px)) 24px max(16px, env(safe-area-inset-left,0px))}
.login{width:min(380px,100%);background:var(--surface);border-radius:22px;box-shadow:var(--shadow-1);padding:32px 28px;display:flex;flex-direction:column;gap:14px;align-items:stretch}
.login .brand-mark{align-self:center}
.login h1{font:700 24px var(--f-display);letter-spacing:-.02em;text-align:center;margin-top:4px}
.login > p.muted{text-align:center;margin:-10px 0 4px}
.login .hint{text-align:center}

/* ---------- дашборд, доски, админка ---------- */
.widgets{display:grid;grid-template-columns:repeat(auto-fill, minmax(min(380px,100%), 1fr));gap:14px;align-items:start}
.widget{padding:16px 16px 10px;display:flex;flex-direction:column}
.w-head{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.w-head h2{font:650 16px var(--f-display);letter-spacing:-.015em}
.w-count{margin-left:auto;font:700 22px var(--f-display);color:var(--fg);letter-spacing:-.02em}
.w-count.hot{color:var(--accent)}
.w-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:10px;align-items:center;padding:8px 6px;border-top:1px solid var(--line);color:var(--fg);border-radius:8px}
.w-row:hover{background:var(--hover);text-decoration:none}
.w-main{display:flex;flex-direction:column}
.w-empty{padding:10px 6px;border-top:1px solid var(--line);margin:0}
.w-more{padding:8px 6px 4px;font-size:13px;font-weight:550}
.tiles{display:grid;grid-template-columns:repeat(auto-fill, minmax(min(300px,100%),1fr));gap:12px}
.tile{padding:14px 16px;display:flex;flex-direction:column;gap:8px}
.tile-name{display:flex;gap:8px;align-items:center;font:650 15px var(--f-display);color:var(--fg)}
.tile-name svg{color:var(--accent)}
.pad-card{padding:18px 20px}
.token-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:8px 0;border-bottom:1px solid var(--line)}
.ref-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:6px 0;border-bottom:1px solid var(--line)}
.ref-row .sel[name=name]{flex:1 1 200px}
.ref-key{min-width:110px;width:110px}

/* ---------- уведомления ---------- */
#toasts{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);z-index:80;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none;width:max-content;max-width:calc(100vw - 32px)}
.toast{background:var(--sheet);color:var(--fg);-webkit-backdrop-filter:saturate(180%) blur(24px);backdrop-filter:saturate(180%) blur(24px);padding:10px 18px;border-radius:999px;font-weight:550;box-shadow:var(--shadow-2), 0 0 0 1px var(--line);animation:pop .2s}
.toast.err{color:var(--red)}
.htmx-request.btn,.htmx-request .btn.primary{opacity:.7}


/* ---------- просмотр вложений ---------- */
.no-scroll,.no-scroll body{overflow:hidden}
.viewer-wrap{position:fixed;inset:0;z-index:70;background:var(--scrim);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:grid;place-items:center;
  padding:max(20px, env(safe-area-inset-top,0px)) max(20px, env(safe-area-inset-right,0px)) max(20px, env(safe-area-inset-bottom,0px)) max(20px, env(safe-area-inset-left,0px));animation:fade .15s}
.viewer{width:min(1200px,100%);height:100%;background:var(--sheet);-webkit-backdrop-filter:saturate(180%) blur(24px);backdrop-filter:saturate(180%) blur(24px);border-radius:18px;box-shadow:var(--shadow-2);display:flex;flex-direction:column;overflow:hidden;animation:pop .2s cubic-bezier(.2,.8,.2,1)}
.vw-head{display:flex;align-items:center;gap:8px;padding:12px 14px 12px 20px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.vw-title{display:flex;flex-direction:column;flex:1 1 200px}
.vw-title b{font-weight:650;font-size:15px}
.vw-body{flex:1;min-height:0;overflow:auto;background:var(--bg);position:relative}
.vw-body.k-video{overflow:hidden}
.vw-body.k-pdf{overflow:auto;overscroll-behavior:contain;scroll-behavior:auto}  /* страницы PDF листаются колесом, тачпадом и клавишами */
.vw-body:focus{outline:none}
.pv-frame{width:100%;height:100%;border:0;display:block;background:#525659}
.pv-img{display:block;max-width:100%;max-height:100%;margin:auto;object-fit:contain;position:absolute;inset:0}
.k-image{background:repeating-conic-gradient(var(--surface-2) 0 25%, transparent 0 50%) 0 0/20px 20px}
.pv-media{width:100%;height:100%;background:#000;display:block}
.pv-loading,.pv-empty{display:grid;place-items:center;align-content:center;gap:10px;height:100%;min-height:240px;color:var(--muted);text-align:center;padding:24px}
.pv-empty b{color:var(--fg);font:650 16px var(--f-display);overflow-wrap:anywhere}
.pv-text{margin:0;padding:20px 24px;font:13px/1.55 ui-monospace, "SF Mono", Menlo, Consolas, monospace;white-space:pre-wrap;overflow-wrap:anywhere;background:var(--surface);min-height:100%}
.pv-note{margin:0;padding:8px 16px;font-size:12.5px;color:var(--muted);background:var(--surface);border-top:1px solid var(--line)}
.pv-sheets{display:flex;flex-direction:column;min-height:100%;background:var(--surface)}
.pv-tabs{display:flex;gap:2px;padding:8px 10px 0;overflow-x:auto;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--surface);z-index:3}
.pv-tabs button{border:0;background:none;padding:6px 12px;border-radius:8px 8px 0 0;font-size:13px;font-weight:550;color:var(--fg-2);white-space:nowrap}
.pv-tabs button[aria-selected="true"]{background:var(--accent-soft);color:var(--accent)}
.pv-table-wrap{overflow:auto}
.pv-table{border-collapse:collapse;font-size:12.5px;font-variant-numeric:tabular-nums}
.pv-table th,.pv-table td{border:1px solid var(--line);padding:4px 8px;white-space:nowrap;max-width:360px;overflow:hidden;text-overflow:ellipsis;text-align:left;vertical-align:top}
.pv-table td.n{text-align:right}
.pv-table thead th{position:sticky;top:0;background:var(--surface-2);background-color:color-mix(in srgb, var(--surface) 88%, var(--fg));color:var(--muted);font-weight:550;text-align:center;z-index:2}
.pv-table th.rn{position:sticky;left:0;background-color:color-mix(in srgb, var(--surface) 88%, var(--fg));color:var(--muted);font-weight:500;text-align:right;min-width:40px;z-index:1}
.pv-table thead th.rn{z-index:3}
.pv-table tbody tr:hover td{background:var(--accent-soft)}
.pv-docx{min-height:100%}
.pv-pdf{display:flex;flex-direction:column;align-items:center;gap:16px;padding:20px 16px}
.pv-page{position:relative;max-width:100%;background:#fff;box-shadow:var(--shadow-1), 0 0 0 1px var(--line)}
.pv-page canvas{display:block;width:100%;height:auto}
.pv-pno{position:absolute;right:8px;bottom:8px;font-size:11px;color:#86868B;background:rgba(255,255,255,.85);border-radius:6px;padding:1px 6px}
.pv-docx .docx-wrapper{background:var(--bg);padding:24px 16px}
.pv-docx .docx-wrapper > section.docx{box-shadow:var(--shadow-1);margin-bottom:24px}
.ext.thumb{padding:0;overflow:hidden;background:var(--surface-2)}
.ext.thumb img{width:100%;height:100%;object-fit:cover;display:block}
.file-name[data-preview]{cursor:zoom-in}
@media (max-width: 860px){
  .viewer-wrap{padding:0}
  .viewer{border-radius:0;padding-top:env(safe-area-inset-top,0px)}
  .vw-head{padding:10px 12px}
  .vw-head .btn[data-v="open"]{display:none}
}


/* ---------- боковая панель задачи ---------- */
.issue-panel{position:fixed;top:0;right:0;bottom:0;width:min(880px, 62vw);z-index:45;background:var(--bg);box-shadow:var(--shadow-2), 0 0 0 1px var(--line);
  border-radius:18px 0 0 18px;display:flex;flex-direction:column;animation:slide-in .22s cubic-bezier(.2,.8,.2,1);padding-right:env(safe-area-inset-right,0px)}
@keyframes slide-in{from{transform:translateX(32px);opacity:0}to{transform:none;opacity:1}}
@media (prefers-reduced-motion: reduce){.issue-panel{animation:none}}
.ip-body{flex:1;min-height:0;overflow:auto;padding:14px 18px 28px}
/* ручка ширины панели — левый край */
.ip-resize{position:absolute;left:-5px;top:0;bottom:0;width:12px;z-index:6;cursor:col-resize;touch-action:none;outline:none}
.ip-resize::after{content:"";position:absolute;left:4px;top:50%;width:4px;height:44px;margin-top:-22px;border-radius:2px;background:var(--line-strong);opacity:0;transition:opacity .15s, background .15s}
.ip-resize:hover::after,.ip-resize:focus-visible::after,.ip-resizing .ip-resize::after{opacity:1;background:var(--accent)}
.ip-resizing,.ip-resizing *{cursor:col-resize!important;user-select:none!important}
.ip-resizing iframe{pointer-events:none}
.issue-panel .issue-grid{grid-template-columns:minmax(0,1fr)}
.issue-panel .issue-aside{position:static;max-height:none;overflow:visible}
.issue-panel .page{max-width:none}
.issue-panel .crumbs{position:sticky;top:-14px;z-index:5;background:var(--bg);padding:8px 0;margin-top:-8px}
.only-panel{display:none}
.issue-panel .only-panel{display:inline-grid}
.is-open,.row.is-open{background:var(--accent-soft)!important}
@media (max-width: 1100px){.issue-panel{width:min(760px, 92vw)}}

/* ---------- шапка задачи, вложения плитками, действия ---------- */
.meta-line{font-size:12.5px;color:var(--muted);margin-bottom:-12px}
.tr-btn{color:var(--fg-2);background:var(--surface-2);font-weight:500}
.tr-btn:hover{background:var(--accent);color:#fff;filter:none}
details.menu > summary.tr-btn::after{content:"";width:5px;height:5px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg) translateY(-2px);margin-left:2px;opacity:.6}
.add-row{display:flex;gap:4px 6px;flex-wrap:wrap;align-items:center;margin-top:-6px}
.add-row form{display:contents}
.danger-text{color:var(--red)!important}
.tiles-files{display:flex;gap:10px;flex-wrap:wrap}
.ftile{width:120px;display:flex;flex-direction:column;gap:4px;color:var(--fg);text-decoration:none!important;border-radius:12px}
.ftile-img{height:84px;border-radius:12px;background:var(--surface);box-shadow:0 0 0 1px var(--line), var(--shadow-1);display:grid;place-items:center;overflow:hidden;transition:transform .12s}
.ftile:hover .ftile-img{transform:translateY(-1px);box-shadow:0 0 0 1px var(--accent)}
.ftile-img img{width:100%;height:100%;object-fit:cover}
.ftile-name{font-size:12.5px;line-height:1.3;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;text-align:center;overflow-wrap:anywhere}
.ftile-meta{font-size:11.5px;color:var(--muted);text-align:center}
.tile-more{width:84px;height:84px;border-radius:12px;border:1.5px dashed var(--line);background:none;color:var(--accent);font-weight:550}
.md img{max-width:100%;max-height:420px;border-radius:10px;box-shadow:0 0 0 1px var(--line);cursor:zoom-in;display:block;margin:6px 0}
/* фото и видео в тексте — значки в ряд, по клику просмотр (29.10) */
.md .md-media{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}
.md .md-tile{position:relative;flex:none;display:block;width:88px;height:88px;border-radius:10px;overflow:hidden;background:var(--surface-2);box-shadow:0 0 0 1px var(--line);cursor:zoom-in;text-decoration:none!important}
.md .md-tile:hover{box-shadow:0 0 0 2px var(--accent)}
.md .md-tile img{width:100%;height:100%;max-height:none;object-fit:cover;display:block;margin:0;border-radius:0;box-shadow:none}
.md .md-tile.vid::after,.ftile-img.vid::after,.ext.thumb.vid::after{content:"";position:absolute;left:50%;top:50%;width:30px;height:30px;margin:-15px 0 0 -15px;border-radius:50%;background:rgba(0,0,0,.55) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='white'%3E%3Cpath d='M8 5.5v13l11-6.5z'/%3E%3C/svg%3E") 55% 50%/15px no-repeat;pointer-events:none}
.ext.thumb.vid{position:relative}.ext.thumb.vid::after{width:22px;height:22px;margin:-11px 0 0 -11px;background-size:11px}
.md .md-tile.noimg img,.ftile-img.noimg img,.ext.thumb.noimg img{display:none}
.ftile-fb{display:none}.ftile-img.noimg .ftile-fb{display:grid}
.ext.thumb.noimg::before{content:attr(data-ext)}
.md .md-tile.noimg::before{content:attr(data-ext);position:absolute;inset:0;display:grid;place-items:center;font:650 11px var(--f-body);text-transform:uppercase;color:var(--accent)}
@media (max-width:640px){.md .md-tile{width:72px;height:72px}}

/* ---------- чек-лист ---------- */
.cl-bar{height:5px;border-radius:3px;background:var(--surface-2);overflow:hidden}
.cl-bar i{display:block;height:100%;background:var(--green);border-radius:3px;transition:width .3s}
.cl-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.cl-item{display:grid;grid-template-columns:24px minmax(0,1fr) auto;gap:8px;align-items:start;padding:7px 4px;border-radius:8px}
.cl-item:hover{background:var(--hover)}
.cl-item input[type=checkbox]{width:18px;height:18px;margin:2px 0 0;accent-color:var(--green);cursor:pointer}
.cl-text{line-height:1.45;cursor:text;overflow-wrap:anywhere}
.cl-item.done .cl-text{color:var(--muted);text-decoration:line-through;text-decoration-color:color-mix(in srgb, var(--muted) 60%, transparent)}
.cl-item .icon-btn.sm{opacity:0}
.cl-item:hover .icon-btn.sm,.cl-item:focus-within .icon-btn.sm{opacity:1}
.cl-edit{display:flex;gap:6px}
.cl-edit input{flex:1;min-width:0;border:0;border-radius:8px;background:var(--surface-2);padding:5px 9px}
.cl-add{display:flex;gap:8px;align-items:flex-start}
.cl-add textarea{flex:1;min-width:0;border:0;border-radius:10px;background:var(--surface-2);padding:7px 11px;resize:none;line-height:1.45;min-height:34px}
.cl-add textarea:focus{outline:none;box-shadow:var(--ring)}

/* ---------- редактор рабочего процесса ---------- */
.wf-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(min(360px,100%),1fr));gap:12px;align-items:start}
.wf-card{padding:14px 16px;display:flex;flex-direction:column;gap:8px}
.wf-card.any{background:color-mix(in srgb, var(--surface) 90%, var(--accent))}
.wf-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.tr-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:2px;font-size:13px;color:var(--muted)}
.tr-item{display:grid;grid-template-columns:auto auto minmax(0,1fr) auto;gap:6px;align-items:center;padding:2px 0}
.tr-arrow{color:var(--muted);margin-right:6px}
.tr-name{min-width:0}
.tr-name input{border:0;background:none;border-radius:6px;padding:3px 6px;width:100%;font-size:12.5px;color:var(--fg-2)}
.tr-name input:hover,.tr-name input:focus{background:var(--surface-2);outline:none}
.tr-add{display:flex;gap:6px;flex-wrap:wrap}
.tr-add .sel{flex:1 1 140px}
@media (max-width: 860px){.hide-narrow,.seg > a.hide-narrow{display:none}}


/* ---------- мой день ---------- */
.day-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(320px,1fr);grid-template-areas:"plan tasks";gap:16px;align-items:start}
.day-plan{grid-area:plan;padding:14px 16px 6px;min-width:0}
.day-tasks{grid-area:tasks;padding:12px 12px 8px;position:sticky;top:16px;max-height:calc(100vh - 32px);overflow:auto;min-width:0}
.notice.warn{background:var(--orange-soft)}
.chip-err{background:var(--red-soft)!important;color:var(--red)!important}
.plan-add{display:flex;gap:6px;flex-wrap:wrap;align-items:center;padding-bottom:12px;border-bottom:1px solid var(--line);margin-bottom:6px}
.plan-add-title{flex:1 1 240px;min-width:0;height:36px;border:0;border-radius:10px;background:var(--surface-2);padding:0 12px}
.plan-add-title:focus{outline:none;box-shadow:var(--ring)}
.plan-add .sel{height:36px}
.w-dur{width:72px}
.plan-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.pl{display:grid;grid-template-columns:76px minmax(0,1fr) auto;gap:10px;align-items:start;padding:9px 8px;border-radius:12px;position:relative}
.pl + .pl{border-top:1px solid var(--line)}
.pl:hover{background:var(--hover)}
.pl[draggable="true"]{cursor:grab}
.pl.dragging{opacity:.4}
.pl.pl-over{background:none}
.over-mark{color:var(--orange)}
.pl.drop-before{box-shadow:inset 0 2px 0 var(--accent)}
.pl-t{border:0;background:none;padding:2px 0;display:flex;flex-direction:column;align-items:flex-start;font:600 14px var(--f-body);font-variant-numeric:tabular-nums;color:var(--fg);text-align:left}
.pl-t small{font-weight:400;font-size:12px;color:var(--muted)}
button.pl-t:hover{color:var(--accent)}
.pl-title{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;font-weight:550;line-height:1.35}
.pl-title .key{font-weight:500}
.pl-link{color:var(--fg)}
.pl-ico{color:var(--accent);display:inline-flex;align-self:center}
/* булавка: синяя — время не закреплено (щелчок — закрепить), красная — закреплено (щелчок — открепить) */
.pin-tg{appearance:none;-webkit-appearance:none;border:0!important;outline:0;box-shadow:none!important;background:none!important;padding:0;margin:0;height:auto;min-height:0;min-width:0;line-height:1;cursor:pointer;color:var(--accent);opacity:.6;transition:opacity .15s,transform .15s}
.pin-tg.on{color:var(--red);opacity:1}
.pin-tg:hover,.pin-tg:focus-visible{opacity:1;transform:scale(1.15)}
.pl.done .pl-ico{color:var(--muted)}
.pl-meta{font-size:12.5px;color:var(--muted);margin-top:2px}
.pl-edit{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:6px}
.pl-actions{display:flex;gap:4px;align-items:center}
.done-btn{background:var(--green-soft);color:var(--green)}
.done-btn:hover{background:var(--green);color:#fff;filter:none}
.pl.done .pl-title,.pl.done .pl-link{color:var(--muted);text-decoration:line-through;text-decoration-color:color-mix(in srgb, var(--muted) 50%, transparent)}
.pl.done .pl-t{color:var(--muted)}
.pl.meeting{background:color-mix(in srgb, var(--accent-soft) 60%, transparent)}
.pl.meeting + .pl,.pl + .pl.meeting{border-top-color:transparent}
.pl.is-now{box-shadow:inset 3px 0 0 var(--orange)}
.pl.allday .pl-t{font-size:12px;color:var(--muted)}
.gap{list-style:none;font-size:12px;color:var(--muted);padding:2px 8px 2px 94px;opacity:.8}
.now-line{list-style:none;position:relative;height:18px;margin:2px 0}
.now-line::before{content:"";position:absolute;left:8px;right:8px;top:50%;height:1.5px;background:var(--orange);border-radius:1px}
.now-line span{position:relative;background:var(--surface);color:var(--orange);font-size:11.5px;font-weight:600;padding:0 6px;margin-left:8px}
.plan-list .empty{list-style:none;padding:40px 12px}
.menu-form{padding:4px 6px;display:flex;gap:6px}
.menu-form .menu-item{padding:7px 4px}
.menu-form .sel{flex:1;min-width:0}
.menu-item.danger{color:var(--red)}
.menu-item.danger:hover{background:var(--red);color:#fff}
.dt-sec{padding:4px 4px 12px;border-bottom:1px solid var(--line);margin-bottom:10px}
.dt-sec.due{background:var(--orange-soft);border-radius:12px;padding:8px 8px 6px;border:0}
.dt-h{font:650 14px var(--f-display);display:flex;gap:6px;align-items:center;margin:2px 4px 6px}
.dt-filter{display:flex;gap:6px;flex-wrap:wrap;margin:0 2px 8px}
.dt-filter .search{flex:1 1 140px;height:32px;max-width:none}
.dt-filter .sel{height:32px}
.dt-list{display:flex;flex-direction:column}
.dt-row{display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:8px;align-items:center;padding:6px 4px;border-radius:10px;cursor:grab}
.dt-row + .dt-row{border-top:1px solid var(--line)}
.dt-row:hover{background:var(--hover)}
.dt-row.in-plan{opacity:.55}
.dt-row.adding{background:var(--accent-soft)}
.dt-row{user-select:none}
.dt-hint{margin:0 6px 4px}
/* счётчик задач по приоритетам — он же быстрый отбор */
.dt-count{display:flex;flex-wrap:wrap;gap:4px;margin:0 2px 6px}
.dt-chip{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 11px;border-radius:999px;font-size:13px;color:var(--fg-2);text-decoration:none!important;cursor:pointer}
.dt-chip:hover{background:var(--hover)}
.dt-chip b{font-weight:650;color:var(--fg);font-variant-numeric:tabular-nums}
.dt-chip .prio{font-size:13px;gap:6px}
.dt-chip.on{background:var(--accent-soft);color:var(--accent)}
.dt-chip.on b{color:var(--accent)}
.dt-row .add{background:var(--accent-soft);color:var(--accent)}
.dt-row .add:hover{background:var(--accent);color:#fff}
.dt-row .add:disabled{opacity:.35;cursor:default;background:var(--surface-2);color:var(--muted)}
.dt-title{display:block;color:var(--fg);font-weight:500}
.dt-row .pill{font-size:11.5px;padding:2px 8px 2px 7px}
/* проект задачи в строке «Моего дня»: последним в строке, сжимается первым */
/* строка задачи: название и статус сверху; ниже на всю ширину — ключ, срок, приоритет и справа проект (как у Todoist) */
.dt-row{row-gap:1px}
.dt-row > .min0{display:contents}
.dt-row > .add{grid-row:1 / 3}
.dt-row > .min0 > .dt-title{grid-column:2;grid-row:1}
.dt-row > .pill,.dt-row > .link-btn{grid-column:3;grid-row:1}
.dt-row > .min0 > .sub-line{grid-column:2 / 4;grid-row:2;margin-top:0}
.dt-row > .min0 > .dt-ai{grid-column:2 / 4;grid-row:3;margin-top:0}
.dt-row > .add{grid-row:1 / 4}
.dt-row .sub-line > *{flex:none}
.dt-row .sub-line > .sep:has(+ .proj){display:none}
.dt-row .sub-line > .proj{flex:0 1 auto;min-width:0;margin-left:auto;padding-left:12px;display:inline-flex;align-items:center;gap:4px;color:var(--fg-2)}
.dt-row .sub-line > .proj svg{flex:none;color:var(--muted)}
.dt-row .sub-line > .proj:hover{color:var(--accent);text-decoration:none}
.dt-row .sub-line > .proj:hover span{text-decoration:underline}
.dt-row .sub-line > .proj:hover svg{color:var(--accent)}
.dt-row .sub-line > .proj span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dt-row .prio-name{display:none}
.qchip{display:inline-flex;align-items:center;border-radius:999px;background:var(--accent-soft);overflow:hidden}
.qchip button{border:0;background:none;color:var(--accent);font-size:12.5px;font-weight:550;padding:4px 4px 4px 10px;white-space:nowrap;max-width:240px;overflow:hidden;text-overflow:ellipsis}
.qchip .x{padding:4px 9px 4px 4px;opacity:.6}
.qchip .x:hover{opacity:1;color:var(--red)}
.plan-drop{box-shadow:inset 0 0 0 2px var(--accent);border-radius:18px}

/* ---------- учёт времени ---------- */
.wl-total{font-size:14px;margin-bottom:6px}
.wl-list{display:flex;flex-direction:column}
.wl-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;padding:8px 4px;border-bottom:1px solid var(--line);font-size:13.5px}
.wl-add{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}
.wl-add .sel{height:32px}
.wl-add input[name=comment]{flex:1 1 160px}
.badge.warn-badge{background:var(--orange-soft);color:var(--orange);text-transform:none;letter-spacing:0}
.tday{border-bottom:1px solid var(--line)}
.tday > summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:90px auto minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 4px}
.tday > summary::-webkit-details-marker{display:none}
.tday-d{font-weight:600;font-variant-numeric:tabular-nums}
.tday-t{font-variant-numeric:tabular-nums}
.tday .wl-row{padding-left:24px}

/* ---------- повторение ---------- */
.rec-edit > summary{list-style:none;cursor:pointer;width:max-content;max-width:100%}
.rec-edit > summary::-webkit-details-marker{display:none}
.rec-form{display:flex;flex-direction:column;gap:8px;margin-top:8px;padding:10px;background:var(--bg);border-radius:12px;font-size:13px}
.rec-form label{display:flex;align-items:center;gap:6px}
.rec-wd{display:flex;gap:4px;flex-wrap:wrap}
.wd input{position:absolute;opacity:0;pointer-events:none}
.wd span{display:inline-grid;place-items:center;width:30px;height:28px;border-radius:8px;background:var(--surface);box-shadow:0 0 0 1px var(--line);cursor:pointer;font-size:12.5px}
.wd input:checked + span{background:var(--accent);color:#fff;box-shadow:none}
.wd input:focus-visible + span{box-shadow:var(--ring)}
.cal-choices{display:flex;flex-direction:column;gap:6px;margin-top:10px}
.cal-choice{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;background:var(--bg)}
.cal-choice .btn,.cal-choice .badge{margin-left:auto}
.howto{margin-top:14px}
.howto > summary{list-style:none;cursor:pointer}
.howto .md{margin-top:8px;font-size:13.5px}
@media (max-width: 1020px){
  .day-grid{grid-template-columns:minmax(0,1fr);grid-template-areas:"plan" "tasks"}
  .day-tasks{position:static;max-height:none}
}
@media (max-width: 860px){
  .pl{grid-template-columns:58px minmax(0,1fr);grid-template-areas:"t b" "a a"}
  .pl-time{grid-area:t}.pl-body{grid-area:b}.pl-actions{grid-area:a;justify-content:flex-end}
  .gap{padding-left:66px}
}

/* ---------- узкие экраны ---------- */
@media (max-width: 1280px){
  .row{grid-template-columns:minmax(220px,1fr) 160px 170px 86px 36px}
  .row .c-prio,.row .c-upd{display:none}
  .issue-grid{grid-template-columns:minmax(0,1fr) 320px}
}
@media (max-width: 1020px){
  .issue-grid{grid-template-columns:minmax(0,1fr)}
  .issue-aside{position:static;max-height:none;overflow:visible}
  .prows .row{grid-template-columns:minmax(200px,1fr) 140px 160px 36px}
  .prows .row > :nth-child(4),.prows .row > :nth-child(5){display:none}
}
@media (max-width: 860px){
  .app{grid-template-columns:minmax(0,1fr)}
  .side{position:fixed;z-index:60;top:0;bottom:0;left:0;width:min(300px,86vw);height:auto;background:var(--sheet);box-shadow:var(--shadow-2);
    padding-top:calc(16px + env(safe-area-inset-top,0px));padding-bottom:calc(12px + env(safe-area-inset-bottom,0px));transform:translateX(-110%);transition:transform .25s cubic-bezier(.2,.8,.2,1)}
  .app.nav-open .side{transform:none}
  .app.nav-open .side-scrim{display:block;position:fixed;inset:0;z-index:59;background:var(--scrim)}
  .main{padding:10px max(16px, env(safe-area-inset-right,0px)) 40px max(16px, env(safe-area-inset-left,0px))}
  .mobile-top{display:flex;align-items:center;gap:10px;margin-bottom:8px}
  .page-title{font-size:24px}
  .head-actions{margin-left:0}
  .search{max-width:none;flex-basis:100%}
  .filters .reset{margin-left:0}
  .filters .sel{flex:1 1 150px}
  .rows{padding:2px 6px 8px}
  .row,.prows .row,.qrows .row,.urows .row,.qarows .row,.frows .row{grid-template-columns:minmax(0,1fr) auto;gap:6px 10px;padding:12px 8px}
  .row.head{display:none}
  .row > *{min-width:0}
  .row-link{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
  .prows .row{grid-template-columns:minmax(0,1fr) auto auto}
  .prows .row .c-star,.prows .row .c-who{grid-area:auto}
  .rows:not(.prows):not(.qrows):not(.urows):not(.qarows):not(.frows) .row{grid-template-areas:"sum sum" "who st" "due star"}
  .row .c-sum{grid-area:sum}.row .c-st{grid-area:st;justify-self:end}.row .c-who{grid-area:who}.row .c-due{grid-area:due}.row .c-star{grid-area:star}
  .row .c-prio,.row .c-upd{display:none}
  .prows .row > :nth-child(3),.qrows .row > :nth-child(n+5),.urows .row > :nth-child(n+3):not(:nth-child(5)),.qarows .row > :nth-child(n+3),.frows .row > :nth-child(n+3){display:none}
  .issue-main{padding:16px 16px 22px;border-radius:16px}
  .title-input{font-size:21px}
  .f{grid-template-columns:104px minmax(0,1fr)}
  .form-grid,.checks.grid2{grid-template-columns:1fr}
  .modal{padding:20px 18px}
  .tr{grid-template-columns:40px minmax(0,1fr)} .tr .s,.tr .x{grid-column:2}
  .board{grid-auto-columns:minmax(250px,80vw)}
  .mini-row,.mini-row:has(button){grid-template-columns:auto minmax(0,1fr) auto}
  .mini-row > .pill,.mini-row > .due{display:none}
  .link-row{grid-template-columns:auto minmax(0,1fr) auto}
  .link-row .rel,.link-row .pill{display:none}
}

/* ---------- проекты и портфели ---------- */
.page.wide{max-width:none}
.c-teal{--c:var(--teal);--cs:color-mix(in srgb, var(--teal) 14%, transparent)}
.c-pink{--c:var(--pink);--cs:color-mix(in srgb, var(--pink) 13%, transparent)}
.c-olive{--c:var(--olive);--cs:color-mix(in srgb, var(--olive) 16%, transparent)}
.picon{display:inline-flex;flex:none;color:var(--c, var(--slate))}
.as-btn{display:inline-flex;align-items:center;gap:6px;cursor:pointer;line-height:30px}
.filters .menu > summary.sel{height:34px;line-height:34px;background:var(--surface);box-shadow:0 0 0 1px var(--line);border-radius:10px}
.checks-menu{display:flex;flex-direction:column;gap:2px;padding:6px}
.checks-menu .chk{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:7px;cursor:pointer}
.checks-menu .chk:hover{background:var(--hover)}
.checks-actions{display:flex;align-items:center;gap:12px;padding:4px 8px 8px;border-bottom:1px solid var(--line);margin-bottom:4px;position:sticky;top:-6px;background:inherit;z-index:1}
.checks-actions [data-check-apply]{margin-left:auto}
.checks-actions .link-btn{white-space:nowrap}
.tree-tools{display:flex;gap:14px;margin:-4px 2px -6px;font-size:13px}
.ptable-wrap{overflow-x:auto}
.ptable{border-collapse:separate;border-spacing:0;width:100%;min-width:1180px;font-size:13.5px}
.ptable th{position:sticky;top:0;background:var(--surface);text-align:left;font-weight:600;font-size:12.5px;color:var(--fg-2);padding:12px 10px 10px;border-bottom:1px solid var(--line);white-space:nowrap;z-index:2}
.ptable td{padding:7px 10px;border-bottom:1px solid var(--line);vertical-align:middle;white-space:nowrap;max-width:240px;overflow:hidden;text-overflow:ellipsis}
.ptable tbody tr:last-child td{border-bottom:0}
.ptable tbody tr:hover td{background:var(--hover)}
.ptable .c-name{position:sticky;left:0;background:var(--surface);z-index:1;min-width:340px;max-width:460px;width:30%}
.ptable thead .c-name{z-index:3}
.ptable tbody tr:hover .c-name{background:color-mix(in srgb, var(--surface) 96%, var(--fg))}
.ptable .c-star{width:36px;padding-left:0;display:table-cell;text-align:right}
.th-sort{color:inherit}
.th-sort:hover,.th-sort.on{color:var(--accent);text-decoration:none}
.pname{display:flex;align-items:center;gap:8px;padding-left:calc(var(--depth, 0) * 22px);position:relative;min-width:0}
.pname .row-link{font-size:14px;font-weight:500}
.pname .row-link::before{display:none}
.pname .sub-line{margin-top:0;font-size:12px}
.tree-tg{flex:none;width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;border:0;background:none;border-radius:6px;color:var(--muted);padding:0}
button.tree-tg:hover{background:var(--surface-2);color:var(--fg)}
button.tree-tg svg{transition:transform .15s}
tr.open > td button.tree-tg svg{transform:rotate(90deg)}
.row-add{margin-left:auto;opacity:0;flex:none}
.ptable tr:hover .row-add,.row-add:focus-visible{opacity:1}
tr.ghost .row-link,tr.ghost td{color:var(--muted)}
tr.ghost .pill{opacity:.6}
.who{display:inline-flex;align-items:center;gap:6px;max-width:200px;min-width:0}
.who .ell{overflow:hidden;text-overflow:ellipsis}
.pbar{display:inline-flex;flex-direction:column;gap:3px;line-height:1.1}
.pbar .bar{width:86px}
.kids-list .mini-row .picon{margin-right:2px}
.chip.extra{background:var(--surface-2);color:var(--fg-2)}
.crumbs .crumb-pf{display:inline-flex;align-items:center;gap:5px;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:700px){.ptable .c-name{min-width:240px}}
.title-row{display:flex;gap:10px;align-items:flex-start}
.title-row .picon{margin-top:6px}
.title-row .title-input{flex:1;min-width:0}

/* ---------- свёрнутое меню (только значки) ---------- */
.brand-text{min-width:0;flex:1}
.side-toggle{background:none;color:var(--muted);margin-left:auto}
.side-toggle:hover{background:var(--hover);color:var(--fg)}
.side-search-btn{border:0;background:none;padding:0;color:inherit;display:inline-flex;cursor:text}
.create span{display:inline}
@media (min-width: 861px){
  .app{transition:grid-template-columns .2s ease}
  .side-mini .app{grid-template-columns:68px minmax(0,1fr)}
  .side-mini .side{padding-inline:10px;align-items:stretch;overflow-x:hidden}
  .side-mini .brand{flex-direction:column;gap:10px;padding:0 0 8px}
  .side-mini .brand-logo{width:38px}
  .side-mini .brand-text,.side-mini .side-search input,.side-mini .side-search kbd,.side-mini .side-extra,
  .side-mini .nav-item span,.side-mini .create span,.side-mini .me .min0{display:none}
  .side-mini .side-toggle{margin:0}
  .side-mini .side-search{justify-content:center;padding:0;width:40px;height:40px;margin:0 auto 6px;border-radius:10px}
  .side-mini .side-search-btn{cursor:pointer}
  .side-mini .create{width:40px;height:40px;padding:0;margin:0 auto 8px;border-radius:12px}
  .side-mini .nav{align-items:center}
  .side-mini .nav-item{width:40px;height:40px;padding:0;justify-content:center;position:relative}
  .side-mini .nav-item .count.accent{display:block;position:absolute;top:3px;right:2px;font-size:10px;line-height:15px;padding:0 4px}
  .side-mini .side-foot{flex-direction:column;justify-content:center;padding-inline:0;gap:4px}
  .side-mini .me{flex:none;padding:2px}
}
@media (max-width: 860px){.side-toggle{display:none}}
.form-grid .sub-grid:empty{display:none}
.rule-box{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.rule-box .sel{min-width:220px}

/* ---------- автоматизация ---------- */
.auto-head{display:flex;gap:16px;align-items:flex-start;justify-content:space-between;flex-wrap:wrap}
.auto-head .lead-text{flex:1 1 420px;margin:0}
.auto-table tr.off td{opacity:.55}
.auto-table .sub-line{max-width:620px}
.tgl{border:0;background:none;padding:0;cursor:pointer}
.tgl i,.tgl-ui i{display:inline-block;position:relative;width:38px;height:22px;border-radius:999px;background:var(--surface-2);transition:background .15s;vertical-align:middle}
.tgl i::after,.tgl-ui i::after{content:"";position:absolute;left:2px;top:2px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .15s}
.tgl.on i,.tgl-label input:checked + .tgl-ui i{background:var(--accent)}
.tgl.on i::after,.tgl-label input:checked + .tgl-ui i::after{transform:translateX(16px)}
.tgl-label{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:14px;white-space:nowrap}
.tgl-label input{position:absolute;opacity:0;pointer-events:none}
.tgl-label input:focus-visible + .tgl-ui i{box-shadow:var(--ring)}
.auto-page{max-width:1100px}
.auto-form{display:flex;flex-direction:column;gap:14px}
.auto-title{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.auto-title .title-input{flex:1;min-width:240px}
.desc-input{border:0;background:none;resize:none;font-size:14.5px;color:var(--fg-2);padding:0;outline:none;font-family:inherit}
.desc-input:focus{color:var(--fg)}
.flow{display:flex;flex-direction:column;gap:6px;position:relative}
.flow-step{display:grid;grid-template-columns:40px minmax(0,1fr);gap:16px;padding-bottom:18px;position:relative}
.flow-step:not(:last-child)::before{content:"";position:absolute;left:19px;top:44px;bottom:0;width:1.5px;background:var(--line)}
.flow-ico{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:var(--cs);color:var(--c)}
.flow-body h2{font:650 18px var(--f-display);margin:6px 0 2px}
.flow-body > .muted{margin:0 0 12px;font-size:13.5px}
.cond-wrap{display:flex;gap:10px;align-items:stretch}
.conds.multi .cond-list{border-left:11px solid var(--line);padding-left:12px}
.op-btn{align-self:center;border:0;background:var(--surface-2);border-radius:8px;padding:4px 10px;font-weight:600;font-size:12.5px;cursor:pointer;color:var(--fg-2)}
.op-btn:hover{background:var(--accent-soft);color:var(--accent)}
.cond-list{display:flex;flex-direction:column;gap:8px;flex:1;min-width:0}
.cond{display:grid;grid-template-columns:170px 230px minmax(0,1fr) 28px;gap:10px;align-items:start;background:var(--surface);border-radius:12px;padding:10px 12px;box-shadow:var(--shadow-1)}
.cond-field{font-weight:550;padding-top:6px}
.cond-val{display:flex;flex-direction:column;gap:6px;min-width:0}
.cond-val .chk{font-size:13px;color:var(--fg-2)}
.add-sel-btn{margin-top:10px;width:auto;max-width:260px;background:var(--surface-2)!important;font-weight:550}
.chips-input{display:flex;flex-direction:column;gap:6px;min-width:0}
.chips-input .chips{display:flex;gap:6px;flex-wrap:wrap}
.chips-input .chips:empty{display:none}
.chips-input .chip{background:var(--surface-2);color:var(--fg);max-width:100%}
.chip-x{border:0;background:none;color:var(--muted);cursor:pointer;padding:0 0 0 2px;font-size:14px;line-height:1}
.chip-x:hover{color:var(--red)}
.act-list{display:flex;flex-direction:column;gap:10px;margin-bottom:10px}
.act-card{background:var(--surface);border-radius:14px;box-shadow:var(--shadow-1);padding:12px 14px;display:flex;flex-direction:column;gap:10px}
.act-head{display:flex;align-items:center;gap:6px}
.act-head .spacer{flex:1}
.act-body{display:flex;flex-direction:column;gap:8px}
.act-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.act-row > label:first-child{color:var(--muted);font-size:13px;min-width:120px}
.act-val{display:flex;flex-direction:column}
.act-body .sel,.cond .sel{background:var(--surface-2)}
.act-body .box{width:100%}
.sel.wide{width:100%}
.w-num{width:70px}
.sched{display:flex;flex-direction:column;gap:10px;max-width:640px}
.more-opts{margin-top:4px}
.more-opts .form-grid{margin-top:10px;max-width:520px}
.more-opts code{background:var(--surface-2);border-radius:5px;padding:1px 5px;font-size:12px}
.auto-foot{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding-top:6px}
.notice.warn{background:var(--orange-soft);color:var(--orange)}
.macro-menu .menu-item{white-space:normal}
@media (max-width:860px){
  .cond{grid-template-columns:minmax(0,1fr) 28px}
  .cond > .cond-field{grid-column:1/2}
  .cond > select,.cond > .cond-val{grid-column:1/-1}
  .cond > .icon-btn{grid-row:1;grid-column:2}
  .flow-step{grid-template-columns:minmax(0,1fr)}
  .flow-ico,.flow-step::before{display:none}
}
.ptable.auto-table{min-width:760px}
.auto-table .c-name{min-width:300px;width:auto;max-width:none}
.auto-foot .spacer{flex:1}

/* ---- уведомления ---- */
.ntf-list{display:flex;flex-direction:column;padding:6px 0}
.ntf-day{padding:12px 20px 4px;font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.ntf{display:flex;align-items:center;gap:14px;padding:11px 20px;color:var(--fg);text-decoration:none!important;position:relative;min-width:0}
.ntf:hover{background:var(--hover)}
.ntf + .ntf::before{content:"";position:absolute;left:66px;right:20px;top:0;border-top:1px solid var(--line)}
.ntf.unread::after{content:"";position:absolute;left:8px;top:50%;width:6px;height:6px;border-radius:50%;background:var(--accent);transform:translateY(-50%)}
.ntf .min0{flex:1;display:flex;flex-direction:column;gap:3px}
.ntf-text{font-size:14px}
.ntf.unread .ntf-text{font-weight:500}
.ntf-issue{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--fg-2);min-width:0}
.ntf-when{flex:none}
.ntf-quote{font-size:13px;color:var(--muted);border-left:2px solid var(--line);padding-left:8px}
.ntf-ico{width:36px;height:36px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;flex:none;background:var(--orange-soft);color:var(--orange)}
.ntf-ico.overdue{background:var(--red-soft);color:var(--red)}
.push-right{margin-left:auto}
@media (max-width:640px){.ntf{padding:10px 14px;gap:10px}.ntf + .ntf::before{left:14px;right:14px}.ntf-when{display:none}}

/* ---- поиск: где нашлось ---- */
.snippet{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:12.5px;line-height:1.35;color:var(--fg-2);margin:2px 0 1px;overflow:hidden}
.snippet mark{background:var(--orange-soft);color:inherit;border-radius:3px;padding:0 2px}

/* ---- чек-лист: свернуть, следующий пункт, скрыть выполненные ---- */
.cl-fold{display:inline-flex;align-items:center;gap:6px;border:0;background:none;padding:0;font:inherit;color:inherit;cursor:pointer}
.cl-fold svg{transition:transform .2s;color:var(--muted)}
.checklist.folded .cl-fold svg{transform:rotate(-90deg)}
.cl-fold:hover span{color:var(--accent)}
.cl-fold:focus-visible{outline:none;box-shadow:var(--ring);border-radius:6px}
.cl-next{display:none}
.checklist.folded .cl-next{display:flex;flex-direction:column;gap:2px;margin-top:2px}
.checklist.folded .cl-list,.checklist.folded .cl-add,.checklist.folded .cl-hidden-note,.checklist.folded .cl-hide-btn{display:none}
.cl-next-lbl{font-size:12px;color:var(--muted);padding-left:4px}
.cl-next-lbl.ok{display:inline-flex;align-items:center;gap:6px;color:var(--green);font-size:13px;padding:4px}
.checklist.hide-done .cl-item.done{display:none}
.cl-hidden-note{padding:2px 4px}
.cl-hide-btn[aria-pressed="true"]{color:var(--accent)}
@media (prefers-reduced-motion: reduce){.cl-fold svg{transition:none}}

/* ---- доступ к очереди ---- */
.lock-badge{display:inline-flex;vertical-align:-2px;color:var(--orange)}
#access .card-title{display:flex;align-items:center;gap:8px}
#access .card-title svg{color:var(--accent)}
.access-note{margin:0;max-width:72ch}
.access-people .chk.muted{color:var(--muted)}
#access .seg{align-self:flex-start}

/* ---- стадии проекта ---- */
.stage-hint{white-space:nowrap;margin-left:6px}

/* ---- свои поля ---- */
.field-types-help{line-height:1.6}
.field-types-help b{color:var(--fg-2);font-weight:550}
.field-preview{margin:10px 0 12px;padding:10px 12px;border-radius:12px;background:var(--surface-2);max-width:520px}
.field-preview .f{display:grid;grid-template-columns:130px minmax(0,1fr);gap:10px;align-items:center;margin-top:6px}
.preview-off{opacity:.9}
.ms{align-items:center}
.ms-chip span{font-size:13px}
.fld > .seg{align-self:flex-start}

/* ---- поле «Компания» ---- */
.cpick{position:relative;min-width:0;width:100%}
.cpick-input{width:100%}
.cpick-list{position:absolute;z-index:60;left:0;right:0;top:calc(100% + 4px);max-height:300px;overflow:auto;background:var(--sheet);
  -webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-radius:12px;box-shadow:var(--shadow-2);padding:5px}
.cpick-item{display:flex;align-items:baseline;justify-content:space-between;gap:10px;width:100%;border:0;background:none;text-align:left;
  padding:7px 10px;border-radius:8px;font:inherit;color:var(--fg);cursor:pointer;min-width:0}
.cpick-item:hover,.cpick-item.on{background:var(--accent-soft)}
.cpick-item .muted{flex:none}
.cpick-item.new{color:var(--accent);font-weight:550}
.cpick-item.none{color:var(--muted)}
.cpick-empty{padding:8px 10px}
.c-company{max-width:240px}
.c-company a{display:block;color:var(--fg-2)}
.menu-title.small{font-size:11px;margin-top:6px}
.cpick-input{text-overflow:ellipsis}
.kids-list .mini-row{grid-template-columns:auto minmax(0,1fr) repeat(4,auto)}

/* ---- длинный список с поиском (select[data-combo]) ---- */
.combo-input{width:100%;text-overflow:ellipsis}
.combo-input::-webkit-search-cancel-button{display:none}
.combo-list{max-height:calc(8 * 34px + 40px)}  /* до 8 строк, дальше прокрутка */
.combo-sec{padding:6px 10px 2px;font-weight:600;letter-spacing:.01em}
.combo-item{display:flex;align-items:center;gap:10px;width:100%;border:0;background:none;text-align:left;
  padding:7px 10px;border-radius:8px;font:inherit;color:var(--fg);cursor:pointer;min-width:0;min-height:34px}
.combo-item .ell{min-width:0}
.combo-item:hover,.combo-item.on{background:var(--accent-soft)}
.combo-item.cur{font-weight:600}
.combo-item.new{color:var(--accent);font-weight:550}
.combo-item.none{color:var(--muted)}
.combo-item mark{background:none;color:var(--accent);font-weight:650;padding:0}
.combo-add{width:auto;flex:1 1 220px;min-width:200px}
.combo-add .combo-list{min-width:280px}

/* ссылки на файлы хранилища */
.ftile-img{position:relative}
.ftile-cloud{position:absolute;right:6px;bottom:6px;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;background:var(--surface);color:var(--accent);box-shadow:0 0 0 1px var(--line)}
.ext.e-dir{background:var(--orange-soft);color:var(--orange)}
.file.is-link .file-meta svg{vertical-align:-2px;color:var(--accent)}
.nc-pick{width:min(760px,100%)}
.nc-bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:8px}
.nc-bar .search{flex:1;min-width:200px}
.nc-crumbs{display:flex;flex-wrap:wrap;gap:2px;align-items:center;font-size:13px;margin:4px 0 8px;color:var(--muted)}
.nc-crumbs button{background:none;border:0;padding:2px 6px;border-radius:6px;color:var(--accent);cursor:pointer;font:inherit}
.nc-crumbs button:hover{background:var(--accent-soft)}
.nc-crumbs .here{color:var(--fg);font-weight:600;padding:2px 6px}
.nc-list{max-height:min(52vh,460px);overflow:auto;border-radius:12px;box-shadow:0 0 0 1px var(--line);background:var(--surface)}
.nc-row{display:grid;grid-template-columns:22px 34px minmax(0,1fr) auto;gap:10px;align-items:center;padding:7px 12px;border-bottom:1px solid var(--line);cursor:pointer}
.nc-row:last-child{border-bottom:0}
.nc-row:hover{background:var(--surface-2)}
.nc-row .ext{width:34px;height:34px;border-radius:8px;font-size:9px}
.nc-row .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nc-row .sub{display:block;font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nc-row .meta{font-size:12px;color:var(--muted);white-space:nowrap;text-align:right}
.nc-row input{margin:0}
.nc-row.dir .nm{font-weight:550}
.nc-empty{padding:28px 16px;text-align:center;color:var(--muted)}
.nc-paste{margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.nc-paste summary{cursor:pointer;color:var(--accent);font-size:13.5px}
.nc-paste .form-grid{margin-top:8px}
.nc-count{font-size:13px;color:var(--muted);margin-right:auto}
.modal .search input,.modal .search input:focus{box-shadow:none;border:0;background:none;padding:0;height:auto;outline:none}

/* несколько компаний в роли */
.cpick.multi{display:flex;flex-wrap:wrap;gap:4px 6px;align-items:center;min-width:0}
.cpick-chips{display:contents}
.cchip{display:inline-flex;align-items:center;gap:4px;max-width:100%;padding:2px 4px 2px 9px;border-radius:999px;background:var(--accent-soft);font-size:13px;line-height:1.5}
.cchip a{color:var(--fg);max-width:220px}
.cchip-x{border:0;background:none;color:var(--muted);cursor:pointer;font-size:15px;line-height:1;padding:0 4px;border-radius:50%}
.cchip-x:hover{color:var(--red);background:var(--red-soft)}
.cpick.multi .cpick-input{flex:1 1 140px;min-width:120px}
.ctypes{display:flex;flex-wrap:wrap;gap:4px 12px}
.ctypes .chk{font-size:13px}
.chip-link{display:inline-block;padding:2px 9px;border-radius:999px;background:var(--surface-2);color:var(--fg);font-size:12.5px}
.chip-link:hover{background:var(--accent-soft);text-decoration:none}
.kids-list .mini-row{grid-template-columns:auto minmax(0,1fr) repeat(5,auto)}
.c-roles .cchip-ro{display:inline-block;max-width:100%}
.ctype{display:inline-block;font-size:11.5px;padding:1px 7px;border-radius:999px;background:var(--surface-2);color:var(--muted);margin-right:3px}
.filter-company{display:flex;gap:6px;align-items:center;min-width:0}.filter-company .cpick{width:230px}
.filter-company .cpick-input{height:30px;border:0;background:var(--surface-2);border-radius:8px;padding:0 10px;font-size:13px;color:var(--fg);outline:none}.filter-company .cpick-input:focus{box-shadow:var(--ring)}.filter-company .cpick-input::placeholder{color:var(--muted)}

/* ---------- путевые листы ---------- */
.wb-hint{margin:4px 0 12px}
.wb-form{grid-template-columns:repeat(4,minmax(0,1fr))}
.wb-table{min-width:1100px}
.wb-table th.n,.wb-table td.n{text-align:right;font-variant-numeric:tabular-nums}
.wb-table td.wb-route{max-width:360px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--fg-2)}
.wb-table tr.wb-stale td{background:var(--orange-soft)}
.wb-table .inline-form{display:inline}
.wb-row{grid-template-columns:minmax(200px,1.2fr) minmax(120px,1fr) minmax(120px,1.4fr) 130px 120px 120px}
.wb-status{display:flex;flex-direction:column;gap:8px;margin:10px 0 14px}
@media (max-width:900px){.wb-form{grid-template-columns:1fr 1fr}.wb-row{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.wb-form{grid-template-columns:1fr}}

/* письмо в комментарии; свёрнутый блок «Предыдущие сообщения» */
.c-mail{display:flex;gap:8px;align-items:flex-start;margin:2px 0 6px;padding:7px 10px;border-radius:10px;background:var(--surface-2);font-size:13px;color:var(--fg-2)}
.c-mail svg{flex:none;margin-top:2px;color:var(--accent)}
.c-mail .min0{display:flex;flex-direction:column;gap:2px}
.c-mail-subj{font-weight:600;color:var(--fg)}
.md details.cut{margin:8px 0;border-radius:10px;background:var(--surface-2);padding:6px 12px}
.md details.cut>summary{cursor:pointer;color:var(--accent);font-size:13.5px;list-style:none}
.md details.cut>summary::-webkit-details-marker{display:none}
.md .yc-gray{color:var(--muted)}.md .yc-red{color:#C8312B}.md .yc-green{color:#1E8A4C}.md .yc-blue{color:var(--accent)}.md .yc-yellow{color:#9A6B00}.md .yc-orange{color:#B85C00}.md .yc-purple,.md .yc-violet{color:#7A3FC4}
.md details.cut>summary::before{content:"▸ ";color:var(--muted)}
.md details.cut[open]>summary::before{content:"▾ "}
.md details.cut>.cut-body{margin-top:6px}
/* поля из 1С: полное наименование, адрес; контакт и прораб у компании проекта */
.f textarea{width:100%;border:0;background:none;border-radius:8px;padding:5px 8px;margin-left:-8px;color:var(--fg);font:inherit;resize:vertical;min-height:30px;line-height:1.35}
.f textarea:hover{background:var(--hover)}
.f textarea:focus{background:var(--surface-2);outline:none}
.pc-note{margin:2px 0 4px;line-height:1.35;overflow-wrap:anywhere}
/* комментарии: поле ввода сверху, порядок переключается; правка — на месте текста */
.c-list{display:flex;flex-direction:column;gap:20px}
.c-order{display:flex;justify-content:flex-end;margin:-8px 0 -10px;font-size:13px}
.c-edit{margin-top:4px}

/* ---- «В мой день» из карточки и списка ---- */
.plan-menu > summary.in{color:var(--orange)}
.plan-menu .menu-form .sel{height:30px;min-width:150px}
.c-star{gap:2px;align-items:center}
.row .plan-btn{opacity:0;transition:opacity .12s;color:var(--muted)}
.row:hover .plan-btn,.row .plan-btn:focus-visible{opacity:1}
.row .plan-btn:hover{color:var(--orange)}
.row .plan-btn.done{opacity:1;color:var(--orange)}
@media (hover:none){.row .plan-btn{opacity:1}}

/* родительская задача в параметрах, перенесённые поля */
.parent-ref{display:flex;align-items:center;gap:6px;min-width:0}
.parent-ref .ell{min-width:0;color:var(--fg)}
.parent-ref .x{border:0;background:none;color:var(--muted);cursor:pointer;font-size:15px;padding:0 4px;border-radius:6px}
.parent-ref .x:hover{background:var(--hover);color:var(--fg)}
.legacy-h{margin:14px 0 2px;color:var(--muted)}

/* ---- «Изменить список параметров» ---- */
.fields-pick{margin-top:10px}
.fields-pick > summary{list-style:none;cursor:pointer}
.fields-pick > summary::-webkit-details-marker{display:none}
.fields-pick-body{margin-top:8px;padding:10px;border-radius:12px;background:var(--surface-2);display:flex;flex-direction:column;gap:8px}
.fp-search{flex:none;height:34px;max-width:none;background:var(--bg)}
.fp-list{max-height:320px;overflow:auto;display:flex;flex-direction:column;margin:0 -4px;padding:0 4px}
.fp-h{font-size:12px;font-weight:650;color:var(--muted);margin:8px 6px 2px;text-transform:none}
.fp-item{display:flex;align-items:center;gap:10px;padding:7px 6px;border-radius:8px;cursor:pointer;min-width:0}
.fp-item:hover{background:var(--hover)}
.fp-item input{width:16px;height:16px;accent-color:var(--accent);flex:none;margin:0}
.fp-item span:not(.muted){min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fp-item .muted{margin-left:auto;flex:none}
.fp-item.fixed{color:var(--muted);cursor:default}
.fp-grip{flex:none;width:10px;height:16px;opacity:.35;cursor:grab;background:radial-gradient(circle,currentColor 1.2px,transparent 1.4px) 0 0/5px 5px}
.fp-item.fixed .fp-grip{visibility:hidden}
.fp-item[draggable="true"]:hover .fp-grip{opacity:.8}
.fp-item.dragging{opacity:.45;background:var(--hover)}
.fp-item.drop-before{box-shadow:inset 0 2px 0 var(--accent)}
.fp-item.drop-after{box-shadow:inset 0 -2px 0 var(--accent)}
.fp-actions{position:sticky;bottom:0}
.fields-pick-body .hint{margin:0}

/* ---- матрица Эйзенхауэра ---- */
.mx-filter{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:0 0 12px}
.mx-filter .sel{height:34px}
.mx-total{margin-left:auto}
.mx-warn{margin:0 0 12px}
.mx-grid{display:grid;grid-template-columns:28px minmax(0,1fr) minmax(0,1fr);grid-template-rows:auto minmax(320px,46vh) minmax(320px,46vh);gap:10px}
.mx-axis{font-size:12px;font-weight:650;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.mx-axis-top{text-align:center;padding-bottom:2px}
.mx-axis-side{display:flex;align-items:center;justify-content:center}
.mx-axis-side span{writing-mode:vertical-rl;transform:rotate(180deg);white-space:nowrap}
.mx-cell{display:flex;flex-direction:column;min-height:0;border-radius:16px;background:var(--surface);box-shadow:var(--shadow-1);padding:12px 12px 6px;border-top:4px solid var(--mxc);transition:box-shadow .12s,background .12s}
.mx-cell.over{box-shadow:var(--ring);background:var(--accent-soft)}
.mx-a{--mxc:var(--red)} .mx-b{--mxc:var(--accent)} .mx-c{--mxc:var(--orange)} .mx-d{--mxc:var(--muted)}
.mx-head{display:flex;align-items:center;gap:10px}
.mx-letter{flex:none;width:26px;height:26px;border-radius:8px;display:grid;place-items:center;font-weight:750;color:#fff;background:var(--mxc)}
.mx-head b{font-weight:650}
.mx-count{margin-left:auto;font-weight:700;font-size:18px;color:var(--mxc)}
.mx-hint{margin:6px 0 8px;font-size:12.5px;color:var(--muted);line-height:1.35}
.mx-list{flex:1;min-height:0;overflow:auto;margin:0 -6px;padding:0 6px}
.mx-row{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:10px;cursor:grab;border-bottom:1px solid var(--line)}
.mx-row:hover{background:var(--hover)}
.mx-row.dragging{opacity:.45}
.mx-row.in-plan .mx-title{color:var(--muted)}
.mx-title{display:block;color:var(--fg);font-weight:550}
.mx-row .plan-btn{flex:none;opacity:0;color:var(--muted)}
.mx-row:hover .plan-btn,.mx-row .plan-btn.done{opacity:1}
.mx-row .plan-btn.done{color:var(--orange)}
@media (hover:none){.mx-row .plan-btn{opacity:1}}
.mx-proj{display:flex;align-items:center;gap:4px;min-width:0;margin-top:2px;font-size:12.5px;color:var(--fg-2)}
.mx-proj span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mx-proj svg{flex:none;color:var(--muted)}
.mx-proj:hover{color:var(--accent);text-decoration:none}
.mx-empty{padding:10px 8px}
.mx-memo{margin-top:14px;padding:12px 16px}
.mx-memo summary{cursor:pointer}
.mx-memo-body p{margin:8px 0;line-height:1.45}
.mx-dlg{border:0;border-radius:16px;padding:0;box-shadow:var(--shadow-2);background:var(--surface);color:var(--fg)}
.mx-dlg::backdrop{background:var(--scrim)}
.mx-dlg-body{display:flex;flex-direction:column;gap:10px;padding:18px;min-width:280px}
@media (max-width: 860px){
  .mx-grid{grid-template-columns:minmax(0,1fr);grid-template-rows:none}
  .mx-axis{display:none}
  .mx-cell{max-height:60vh}
}

/* быстрый перенос срока под комментарием */
.quick-due{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:8px 0 4px;padding:8px 10px;border-radius:12px;background:var(--surface-2)}
.quick-due .chip{cursor:pointer}
.quick-due .chip-date{padding:0 6px;display:inline-flex;align-items:center}
.quick-due .chip-date input{border:0;background:none;color:inherit;font:inherit;height:24px;width:130px}
.quick-due .chip.ghost{background:none;color:var(--muted)}
.quick-due button.chip{border:0;font:inherit;font-size:12.5px}

/* ---- призыв и новые комментарии ---- */
.summon-banner{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 12px;margin-bottom:12px;border-radius:12px;
  background:color-mix(in srgb,var(--accent) 10%,transparent);border:1px solid color-mix(in srgb,var(--accent) 35%,transparent)}
.summon-banner > span:first-of-type{flex:1;min-width:200px}
.summon-banner svg{color:var(--accent);flex:none}
.c.c-fresh{animation:c-fresh 6s ease-out}
@keyframes c-fresh{0%,40%{background:color-mix(in srgb,var(--accent) 12%,transparent)}100%{background:transparent}}
@media (prefers-reduced-motion:reduce){.c.c-fresh{animation:none;outline:2px solid color-mix(in srgb,var(--accent) 40%,transparent)}}

/* ---- «Мой день»: начало дня, обед и перерыв ---- */
.day-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;margin-bottom:10px}
.day-start{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted)}
.day-start .sel{width:auto;flex:0 0 auto}
.break-btns{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.break-btns .muted-on{opacity:.8;font-weight:400}
.break-set{display:flex;flex-direction:column;gap:8px;min-width:200px}
.break-set label{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13px}
.pl.brk{background:repeating-linear-gradient(135deg,transparent 0 8px,color-mix(in srgb,var(--muted) 7%,transparent) 8px 16px)}
.pl.brk .pl-title{color:var(--muted)}

/* ---- крестик «очистить» в поиске ---- */
.search .search-x{flex:none;border:0;background:none;color:var(--muted);font-size:18px;line-height:1;width:22px;height:22px;
  border-radius:50%;cursor:pointer;display:grid;place-items:center;padding:0;margin-right:-4px}
.search .search-x:hover{background:var(--hover);color:var(--fg)}
.search .search-x:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.search input::-webkit-search-cancel-button{display:none}

/* встреча в «Моём дне»: адрес (в календарь «Место», в путевой лист) */
.plan-add-loc{flex:1 1 100%;min-width:0}
.plan-add:not(:has(input[name=meeting]:checked)) .plan-add-loc{display:none}
.pl-loc{display:inline-flex;align-items:center;gap:4px;max-width:100%;margin-top:3px;font-size:12.5px;color:var(--accent);text-decoration:none}
.pl-loc:hover span{text-decoration:underline}
.pl.done .pl-loc{color:var(--muted)}
.meet-form{display:flex;flex-direction:column;gap:6px;min-width:260px}
.meet-form .sel{width:100%}
.meet-form .row-gap .sel{width:auto;flex:1}

/* вход: «Войти через Диск» и разделитель */
.login-or{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:12.5px;margin:2px 0}
.login-or::before,.login-or::after{content:"";flex:1;height:1px;background:var(--line)}
.login a.btn.wide{justify-content:center;text-decoration:none}

/* ответ на комментарий и реакции */
.c-actions{align-items:center}
.c-tools{display:inline-flex;align-items:center;gap:2px;color:var(--muted)}
.c-tools .icon-btn{color:var(--muted)}
.c-tools .icon-btn:hover{color:var(--accent)}
.c-tools details.menu > summary{list-style:none}
.c-tools details.menu > summary::-webkit-details-marker{display:none}
.rx-grid{display:grid;grid-template-columns:repeat(4,40px);gap:4px;padding:8px;min-width:0}
.rx-pick{width:40px;height:40px;border:0;border-radius:10px;background:none;font-size:22px;line-height:1;cursor:pointer}
.rx-pick:hover{background:var(--hover)}
.c-react{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.c-react:empty{display:none}
.rx{display:inline-flex;align-items:center;gap:5px;height:26px;padding:0 9px;border-radius:13px;border:1px solid var(--line);background:var(--surface);font-size:14px;cursor:pointer}
.rx b{font:600 12px var(--f-text, inherit);color:var(--muted)}
.rx.mine{border-color:color-mix(in srgb,var(--accent) 55%,transparent);background:var(--accent-soft)}
.rx.mine b{color:var(--accent)}
.rx:hover{border-color:var(--accent)}
.reply-chip{display:flex;align-items:center;gap:8px;padding:6px 10px;margin-bottom:6px;border-radius:10px;background:var(--accent-soft);color:var(--accent);font-size:13px}
.reply-chip .reply-x{margin-left:auto;border:0;background:none;color:inherit;font-size:18px;line-height:1;cursor:pointer;padding:0 4px}
.md blockquote a[href^="#c"],.md blockquote a[href*="#yc-"]{font-weight:600}
.c.c-flash{animation:c-fresh 2.5s ease-out}
.c{position:relative}
/* якорь перенесённого комментария вне сетки .c (иначе он занимал колонку аватара и текст шёл в 32px) */
.c-anchor{position:absolute;top:-80px;left:0;width:0;height:0}
/* меню «⋯» у комментария */
.c-more .menu-body{min-width:280px}
.c-more .menu-item{white-space:nowrap;text-decoration:none;color:var(--fg)}
.c-more .menu-item.danger{color:var(--red)}
.c-more hr{border:0;border-top:1px solid var(--line);margin:6px 4px;width:auto}

/* ---------- ИИ: заметки в карточке, брифинг, администрирование (0024) ---------- */
.ai-mark{color:var(--violet);font-weight:700;margin-right:2px}
.ai-sec{border:1px solid var(--line);border-radius:14px;padding:14px 16px;background:linear-gradient(180deg,color-mix(in srgb,var(--violet-soft) 45%,transparent),transparent 70%)}
.ai-sec .sec-head{margin-bottom:6px}
.ai-sec .sec-title{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ai-summary{color:var(--fg);line-height:1.55}
.ai-summary p:last-child{margin-bottom:0}
.ai-next{margin-top:8px;padding:8px 10px;border-radius:10px;background:var(--surface-2);display:flex;gap:8px;flex-wrap:wrap}
.ai-next .lbl{color:var(--muted);font-size:12.5px;font-weight:550;white-space:nowrap}
.ai-brief{display:flex;flex-direction:column;gap:6px}
.ai-brief .ai-next{margin-top:0}
.ai-fire,.ai-calm,.ai-now{padding:8px 10px;border-radius:10px;display:flex;gap:8px;flex-wrap:wrap;line-height:1.45}
.ai-fire{background:color-mix(in srgb,#e5484d 12%,transparent)}
.ai-calm{background:color-mix(in srgb,#30a46c 10%,transparent)}
.ai-now{background:var(--surface-2)}
.ai-prio{margin-top:6px;padding:8px 10px;border-radius:10px;border:1px dashed var(--border);display:flex;gap:8px;flex-wrap:wrap;align-items:center;line-height:1.45}
.dt-ai{display:block;font-size:12.5px;color:var(--muted);margin-top:2px;line-height:1.35}
.dt-ai.stale{font-style:italic}
.ai-stale{margin-bottom:6px;font-size:13px}
.dt-ai.fire{color:color-mix(in srgb,#e5484d 80%,var(--text,currentColor))}
.ai-feedback{margin-top:6px;display:flex;gap:6px 12px;flex-wrap:wrap;align-items:center;justify-content:space-between}
.ai-vote{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.ai-vote .btn.on{background:var(--surface-2);border-color:var(--accent,var(--border));font-weight:600}
.ai-bad{display:inline-block}
.ai-bad>summary{list-style:none;cursor:pointer}
.ai-bad>summary::-webkit-details-marker{display:none}
.ai-bad[open]{flex-basis:100%;display:block}
.ai-bad form{margin-top:6px;display:flex;flex-direction:column;gap:6px;align-items:flex-start}
.ai-bad textarea{width:100%;min-height:52px;font:inherit;padding:6px 8px;border-radius:8px;border:1px solid var(--border);background:var(--surface);color:inherit}
.ai-prio .lbl{color:var(--muted);font-size:12.5px;font-weight:550;white-space:nowrap}
.ai-cell{font-size:13px}
.ai-fire .lbl,.ai-calm .lbl,.ai-now .lbl{color:var(--muted);font-size:12.5px;font-weight:550;white-space:nowrap}
.ai-note{margin-top:10px;border-top:1px solid var(--line);padding-top:8px}
.ai-note>summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:6px;font-weight:550}
.ai-note>summary::-webkit-details-marker{display:none}
.ai-note>summary svg{margin-left:auto;transition:transform .15s}
.ai-note[open]>summary svg{transform:rotate(180deg)}
.ai-body{margin-top:8px}
.brief-day{padding:14px 16px}
.brief-day .card-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}
.brief-item{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:start;padding:8px 0;border-bottom:1px solid var(--line)}
.brief-item:last-of-type{border-bottom:0}
.brief-item .key{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:12.5px;padding-top:1px}
.brief-line{display:flex;align-items:center;gap:6px;margin-top:8px;font-size:13.5px}
.brief-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:16px;align-items:start}
.brief-text{max-width:none}
@media (max-width:900px){.brief-grid{grid-template-columns:1fr}}
.ai-jobs{display:flex;flex-direction:column}
.ai-job{padding:12px 0;border-bottom:1px solid var(--line)}
.ai-job:last-child{border-bottom:0}
.ai-job .ref-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.ai-job-title{flex:1 1 320px;display:flex;align-items:center;gap:8px}
.ai-job .sel{width:170px}
.ai-job-state{margin-top:6px;display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.ai-job-state .err{color:var(--red)}
.ai-job-log pre{white-space:pre-wrap;font-size:12px;max-height:260px;overflow:auto;background:var(--surface-2);padding:8px 10px;border-radius:8px}
.tbl{border-collapse:collapse;width:100%;font-size:13.5px}
.tbl th{text-align:left;color:var(--muted);font-weight:550;font-size:12.5px;padding:6px 8px;border-bottom:1px solid var(--line)}
.tbl td{padding:6px 8px;border-bottom:1px solid var(--line)}
.tbl .num{text-align:right;font-variant-numeric:tabular-nums}

/* ---------- «Ждут ответа», напоминания (0025) ---------- */
.wait-tabs{margin:4px 0 14px}
.wait-tabs .n{display:inline-block;min-width:18px;padding:0 6px;border-radius:9px;background:var(--surface-2);font-size:12px;margin-left:4px}
.wait-list{padding:4px 16px}
.wait-row.fresh{box-shadow:inset 3px 0 0 var(--accent);padding-left:12px}
.wait-row .sub-line{white-space:normal;flex-wrap:wrap}
.wait-row{display:grid;grid-template-columns:110px minmax(0,1fr) auto;gap:14px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line)}
.wait-row:last-child{border-bottom:0}
.wait-age{font-variant-numeric:tabular-nums;font-weight:600;color:var(--fg-2);font-size:13px}
.wait-row.late .wait-age{color:var(--red)}
.wait-title{display:block;font-weight:550;color:var(--fg)}
.wait-actions{flex-wrap:wrap;justify-content:flex-end}
@media (max-width:760px){.wait-row{grid-template-columns:1fr}.wait-actions{justify-content:flex-start}}
/* (30.10) «История → Мои действия»: лента по дням */
.hist-tabs{margin-bottom:12px}
.hist-filters{margin:0 0 12px}
.hist-filters .search{flex:1 1 220px;min-width:0}
.hist-feed{padding:0 16px 4px}
.hist-day{position:sticky;top:0;z-index:1;background:var(--surface);padding:14px 0 6px;font-size:12px;font-weight:650;letter-spacing:.03em;text-transform:uppercase;color:var(--fg-2);border-bottom:1px solid var(--line)}
.hist-row{display:grid;grid-template-columns:52px minmax(0,1fr) auto;gap:12px;align-items:start;padding:11px 0;border-bottom:1px solid var(--line)}
.hist-row.answer{box-shadow:inset 3px 0 0 var(--accent);padding-left:10px}
.hist-time{font-variant-numeric:tabular-nums;font-weight:600;color:var(--fg-2);font-size:13px;padding-top:2px}
.hist-title{display:block;font-weight:550;color:var(--fg)}
.hist-row .sub-line{margin-top:2px}
.hist-acts{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:3px;font-size:13px;color:var(--fg-2)}
.hist-acts li{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hist-acts .act-what{color:var(--fg)}
.hist-acts .act-answer .act-what{font-weight:600}
.act-quote{margin-left:6px;color:var(--fg-2)}
.hist-more{display:flex;justify-content:center;padding:12px 0}
@media (max-width:760px){.hist-row{grid-template-columns:44px minmax(0,1fr)}.hist-go{display:none}.hist-acts li{white-space:normal}
  .hist-title.ell{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}
/* на телефоне фильтры прячутся за кнопкой — у истории вид действий нужен всегда */
.hist-filters > .seg{display:inline-flex!important}
.remind-form{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.remind-form .grow{flex:1 1 280px}
.remind-form .w-key{width:120px}
.remind-body{min-width:300px}
.remind-form-sm{display:flex;flex-direction:column;gap:8px;padding:6px 10px}
.chk{display:inline-flex;align-items:center;gap:6px;font-size:13.5px}
.chk-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:6px 16px}
.summon-banner.snoozed{background:var(--surface-2)}
.ntf-ico.reminder{color:var(--violet)}
.ntf-ico.briefing{color:var(--violet)}
/* журнал звонков (Администрирование → ИИ → Звонки) */
.calls-tbl td{vertical-align:top}
.calls-tbl .ellipsis{max-width:420px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tbl-wrap{overflow-x:auto}

/* живые уведомления: плашка в правом верхнем углу */
#live-alerts{position:fixed;top:calc(12px + env(safe-area-inset-top,0px));right:12px;z-index:90;display:flex;flex-direction:column;gap:8px;width:min(380px,calc(100vw - 24px))}
.live-alert{display:flex;gap:10px;align-items:flex-start;background:var(--sheet);color:var(--fg);-webkit-backdrop-filter:saturate(180%) blur(24px);backdrop-filter:saturate(180%) blur(24px);border-radius:14px;padding:12px 12px 12px 14px;box-shadow:var(--shadow-2),0 0 0 1px var(--line);border-left:4px solid var(--accent);animation:pop .2s}
.live-alert.sticky{border-left-color:var(--red)}
.live-alert .la-ic{font-size:20px;line-height:1.2}
.live-alert .la-tx{flex:1;min-width:0;color:inherit;text-decoration:none;display:flex;flex-direction:column;gap:2px}
.live-alert .la-tx b{font-weight:650}
.live-alert .la-tx span{color:var(--muted);font-size:13px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.live-alert .la-side{display:flex;flex-direction:column;align-items:flex-end;gap:6px}
.live-alert button{background:none;border:0;color:var(--muted);cursor:pointer;padding:0;font:inherit}
.live-alert .la-x{font-size:15px}
.live-alert .la-mute{font-size:11px;white-space:nowrap}
.live-alert .la-mid{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px}
.live-alert .la-snooze{display:flex;flex-wrap:wrap;align-items:center;gap:5px}
.live-alert .la-snooze-l{width:100%;font-size:12px;color:var(--muted)}
.live-alert .la-chip{padding:4px 9px;border-radius:999px;background:var(--surface-2);color:var(--fg);font-size:12.5px;font-weight:550;white-space:nowrap}
.live-alert .la-chip:hover{background:var(--hover);color:var(--accent)}
.live-alert .la-done{background:var(--green-soft);color:var(--green)}
.live-alert .la-ok{background:var(--accent);color:var(--accent-ink)}
.live-alert .la-when{display:flex;gap:6px;width:100%}
.live-alert .la-when[hidden]{display:none}
.live-alert .la-when input{flex:1;min-width:0;height:30px;border:0;border-radius:8px;padding:0 8px;background:var(--surface-2);color:var(--fg);font:inherit;font-size:13px}

/* призывы в комментарии: кто призван и кто ответил */
.c-summons{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:2px 0 6px;font-size:13px}
.c-summon-inline{display:inline-flex;flex-wrap:wrap;align-items:center;gap:4px 8px;font-size:13px;font-weight:400;align-self:center}
.c-summons .sm-who{display:inline-flex;align-items:center;gap:5px;padding:2px 8px 2px 3px;border-radius:999px;background:var(--amber-soft)}
.c-summons .sm-who.done{background:var(--green-soft)}
.c-summons .sm-who.sm-me{box-shadow:0 0 0 1.5px var(--amber) inset;font-weight:600}
.c-summons .sm-st a{text-decoration:none}
.c-summons .sm-hint{color:var(--amber);font-size:12px}
.c.c-summoned{background:linear-gradient(90deg,var(--amber-soft),transparent 60%);border-radius:12px}
.summon-links{display:inline-flex;flex-wrap:wrap;gap:6px;margin:0 6px}
.summon-links a{font-weight:600}
.answer-to{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;padding:6px 2px}

/* контакты компании */
.contacts-tbl{width:100%;border-collapse:collapse}
.contacts-tbl td{padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}
.contacts-tbl .nowrap{white-space:nowrap}

/* Перерисовка карточки (htmx outerHTML #issue) не должна прокручивать страницу: «привязка прокрутки» браузера
   выбирала опорный элемент ниже заменённой карточки и уводила страницу в самый низ */
html,body,#ip-body{overflow-anchor:none}

/* ---------- карточка задачи: «Параметры» между шапкой и лентой ----------
   Широкий экран: шапка и лента — одна колонка слева (выглядят одним листом), параметры справа и липкие.
   Боковая панель и узкий экран: параметры сразу под описанием, до комментариев (как в Яндекс Трекере),
   чтобы не листать сотню комментариев ради смены исполнителя. */
.issue-grid.split{grid-template-areas:"head aside" "feed aside";grid-template-rows:auto 1fr;row-gap:0}
.issue-grid.split .issue-head{grid-area:head;border-radius:18px 18px 0 0;padding-bottom:18px}
.issue-grid.split .issue-feed{grid-area:feed;border-radius:0 0 18px 18px;padding-top:16px;position:relative;border-top:1px solid var(--line)}
.issue-grid.split .issue-aside{grid-area:aside}
.issue-aside .card-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}
.issue-aside .card-head .card-title{margin-bottom:0}
.pf-toggle{display:none;align-items:center;gap:4px;font-size:13px}
.pf-toggle svg{transition:transform .18s;transform:rotate(180deg)}
.pf-folded .pf-toggle svg{transform:none}
@media (prefers-reduced-motion: reduce){.pf-toggle svg{transition:none}}
.issue-panel .issue-grid.split{grid-template-areas:"head" "aside" "feed";grid-template-rows:auto;row-gap:14px}
.issue-panel .issue-grid.split .issue-head,.issue-panel .issue-grid.split .issue-feed{border-radius:18px;border-top:0}
.issue-panel .issue-grid.split .issue-feed{padding-top:20px}
.issue-panel .pf-toggle{display:inline-flex}
.issue-panel .pf-folded .f:not(.keep),.issue-panel .pf-folded .fields-pick,.issue-panel .pf-folded .pf-extra{display:none}
@media (max-width: 1020px){
  .issue-grid.split{grid-template-areas:"head" "aside" "feed";grid-template-rows:auto;row-gap:14px}
  .issue-grid.split .issue-head,.issue-grid.split .issue-feed{border-radius:18px;border-top:0}
  .issue-grid.split .issue-feed{padding-top:20px}
  .pf-toggle{display:inline-flex}
  .pf-folded .f:not(.keep),.pf-folded .fields-pick,.pf-folded .pf-extra{display:none}
}
@media (max-width: 860px){.issue-grid.split .issue-feed{padding-top:16px;border-radius:16px}.issue-grid.split .issue-head{border-radius:16px}}

/* ---------- меню «Действия» в шапке задачи ---------- */
.menu-body hr{border:0;border-top:1px solid var(--line);margin:5px 4px;height:0}
.actions-menu .menu-body{min-width:260px}
.actions-menu .menu-item svg{flex:none;color:var(--muted)}
.actions-menu .menu-item:hover svg{color:#fff}
/* в боковой панели шапка тесная: подпись «Ссылка» прячем (значок с подсказкой остаётся), промежутки меньше */
.issue-panel .crumbs{gap:4px}
.issue-panel .hide-panel{display:none}
/* в панели подписи «Наблюдать» и «Напомнить» — только значком (подсказка при наведении); узкая панель — все значками */
.issue-panel{container-type:inline-size}
@container (max-width: 720px){.crumbs .hide-narrow{display:none}}

/* ---------- путевые листы: поездки водителя ---------- */
.trips-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:20px;align-items:start}
.trip-list{display:flex;flex-direction:column;margin:6px 0 18px}
.trip{display:grid;grid-template-columns:56px minmax(0,1fr) auto;gap:10px;align-items:start;padding:10px 0;border-bottom:1px solid var(--line)}
.trip:last-child{border-bottom:0}
.trip-time{font-weight:600;font-variant-numeric:tabular-nums;padding-top:1px}
.trip-addr{display:flex;align-items:center;gap:6px;font-weight:550}
.trip-addr svg{flex:none;color:var(--muted)}
.trip-edit{margin-top:4px}
.trip-edit > summary{list-style:none;cursor:pointer;display:inline}
.trip-edit > summary::-webkit-details-marker{display:none}
.trip-form{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.trip-form .trip-loc{flex:1 1 260px}
.trip-add{border-top:1px solid var(--line);padding-top:14px;display:flex;flex-direction:column;gap:10px}
.trip-add-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.trips-ahead{position:sticky;top:16px}
.ta-day{display:block;margin-top:12px;padding:4px 8px;border-radius:8px;color:var(--fg)}
.ta-day:hover,.ta-day.is-sel{background:var(--accent-soft)}
.ta-list{list-style:none;margin:2px 0 0;padding:0 8px;font-size:13px;color:var(--fg-2)}
.ta-list li{padding:2px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (max-width:1020px){.trips-grid{grid-template-columns:minmax(0,1fr)}.trips-ahead{position:static}}
@media (max-width:640px){.trip-add-grid{grid-template-columns:1fr}}
/* правка комментария: файлы комментария с удалением; обычный список файлов на время правки прячем */
.c-edit-files .chip .x{border:0;background:none;padding:0 0 0 4px;margin-left:2px;color:var(--muted);cursor:pointer;font-size:15px;line-height:1}
.c-edit-files .chip .x:hover{color:var(--red)}
.c-edit:not([hidden]) ~ .c-files{display:none}
/* путевые листы: сводная информация по топливу за период */
.wb-fuel{margin-bottom:16px}
.wb-fuel-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:8px}
.wbf{display:flex;flex-direction:column;gap:4px;padding:10px 12px;border-radius:12px}
.wbf span{font-size:12.5px;color:var(--fg-2)}
.wbf b{font:650 19px var(--f-display);font-variant-numeric:tabular-nums}
.wbf.k1{background:var(--accent-soft)}
.wbf.k2{background:var(--green-soft)}
.wbf.k3{background:var(--red-soft)}
.wbf.k4{background:var(--orange-soft)}
.wb-fuel-per{margin-top:12px;width:100%}
.wb-fuel-per th.n,.wb-fuel-per td.n{text-align:right;font-variant-numeric:tabular-nums}
@media (max-width:900px){.wb-fuel-grid{grid-template-columns:1fr 1fr}}
.c-edited{display:flex;align-items:center;gap:5px;margin-top:6px;font-size:12.5px;color:var(--muted)}
.c-edited svg{flex:none}
.c-files.tiles-files{gap:10px;margin-top:10px}
/* список задач: «Только с адресом» и адрес поездки в строке задачи */
.filter-toggle{padding:0 12px;height:34px;border-radius:10px;background:var(--surface);box-shadow:0 0 0 1px var(--line-strong);white-space:nowrap;font-size:13px}
.filter-toggle:has(input:checked){background:var(--accent-soft);box-shadow:0 0 0 1px var(--accent)}
.filter-toggle svg{color:var(--muted)}
.trip-line{display:flex;align-items:center;gap:5px;min-width:0;font-size:12.5px;color:var(--fg-2);margin-top:2px}
.trip-line svg{flex:none;color:var(--accent)}
.trip-line .muted{flex:none}
.mini-row.trip-row{grid-template-columns:auto minmax(0,1fr) auto}
.trip-row .ell{display:flex;align-items:center;gap:5px}
.trip-row .ell svg{flex:none;color:var(--accent)}

/* ---------- миниатюры вложений под полем ввода (19.10) ---------- */
.att-strip{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0 2px}
.att-tile{position:relative;width:88px;display:flex;flex-direction:column;gap:3px}
.att-pic{display:block;width:88px;height:66px;border-radius:10px;overflow:hidden;background:var(--surface-2);box-shadow:0 0 0 1px var(--line);
  display:flex;align-items:center;justify-content:center}
.att-pic img{width:100%;height:100%;object-fit:cover;display:block}
a.att-pic:hover{box-shadow:0 0 0 2px var(--accent);text-decoration:none}
.att-ext{font-size:12px;font-weight:600;color:var(--muted);letter-spacing:.02em}
.att-name{font-size:11.5px;color:var(--muted)}
.att-x{position:absolute;top:-6px;right:-6px;width:22px;height:22px;border-radius:50%;border:0;background:var(--fg);color:var(--surface);
  font-size:15px;line-height:22px;padding:0;box-shadow:0 1px 3px rgba(0,0,0,.25);opacity:.85}
.att-x:hover{opacity:1}
.att-tile.is-loading .att-pic img{opacity:.55;filter:saturate(.6)}
.att-spin{position:absolute;top:21px;left:32px;width:24px;height:24px;border-radius:50%;border:2.5px solid rgba(255,255,255,.7);border-top-color:var(--accent);
  animation:att-spin .8s linear infinite;box-shadow:0 0 0 1px rgba(0,0,0,.08)}
@keyframes att-spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion: reduce){.att-spin{animation-duration:2.4s}}

/* ---------- «Готово» с выбором времени и день другого сотрудника (19.10) ---------- */
.done-menu > summary{list-style:none;display:inline-flex;align-items:center}
.done-menu > summary::-webkit-details-marker{display:none}
.done-pop{min-width:250px}
.done-pop .menu-item{flex-direction:column;align-items:flex-start;gap:1px;padding:8px 10px}
.done-pop .menu-item .muted{font-size:12.5px}
.done-pop .done-now{background:var(--green-soft)}
.done-pop .done-now b{color:var(--green)}
.done-pop .done-now:hover{background:color-mix(in srgb, var(--green) 22%, transparent)}
.done-when{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:2px 4px 6px}
.done-when label{display:flex;align-items:center;gap:5px;font-size:13px;color:var(--muted)}
.done-when input[type=time]{width:108px}
.notice.info{background:var(--accent-soft)}
.day-other{display:flex;align-items:center;gap:10px}
.day-page.is-other .page-title{color:var(--accent)}
.day-who{max-width:220px}
.trip-acts{display:flex;align-items:center;gap:6px}
.trip-time small{display:block;font-weight:400;color:var(--muted);font-size:12px}
.trip.is-done .trip-addr,.trip.is-done .trip-addr + .small{color:var(--muted)}
.trip.is-done .trip-addr svg{color:var(--green)}

/* ---------- панель разметки над полем ввода (19.10) ---------- */
.fmt-bar{display:flex;align-items:center;gap:2px;flex-wrap:wrap;padding:4px;margin-bottom:6px;border-radius:10px;background:var(--surface-2)}
.fmt-bar button,.fmt-bar summary{display:inline-flex;align-items:center;justify-content:center;gap:2px;min-width:30px;height:30px;padding:0 7px;border:0;border-radius:7px;
  background:none;color:var(--fg-2);font-size:14.5px;line-height:1;cursor:pointer;list-style:none}
.fmt-bar summary::-webkit-details-marker{display:none}
.fmt-bar button:hover,.fmt-bar summary:hover,.fmt-dd[open] > summary{background:var(--surface);box-shadow:var(--shadow-1)}
.fmt-sep{width:1px;height:18px;background:var(--line-strong);margin:0 4px}
.fmt-mark{background:var(--amber-soft);padding:1px 4px;border-radius:4px;font-weight:600}
.fmt-a{font-weight:700;text-decoration:underline;text-decoration-color:#C8312B;text-decoration-thickness:3px;text-underline-offset:2px}
.fmt-caret{font-size:10px;color:var(--muted);margin-left:1px}
.fmt-dd{position:relative}
.fmt-pop{position:absolute;z-index:40;top:calc(100% + 4px);left:0;min-width:170px;padding:4px;background:var(--sheet);border-radius:10px;box-shadow:var(--shadow-2);display:flex;flex-direction:column}
.fmt-pop button{justify-content:flex-start;gap:8px;width:100%;height:32px;font-size:13.5px}
.fmt-dot{width:12px;height:12px;border-radius:50%;flex:none}
.yc-bg-red{background:#C8312B}.yc-bg-orange{background:#B85C00}.yc-bg-green{background:#1E8A4C}.yc-bg-blue{background:var(--accent)}.yc-bg-purple{background:#7A3FC4}.yc-bg-gray{background:var(--muted)}
.md mark{background:var(--amber-soft);color:inherit;padding:0 2px;border-radius:3px}
.md u{text-underline-offset:2px}
@media (prefers-color-scheme: dark){.md .yc-red{color:#FF6B61}.md .yc-green{color:#4ED07E}.md .yc-orange{color:#FFA94D}.md .yc-purple,.md .yc-violet{color:#C89BFF}}
.sm-done{margin-left:6px}
.day-pick{display:flex;align-items:center;gap:6px}
.day-pick label{font-size:13px;color:var(--muted)}
.day-pick .icon-btn{text-decoration:none;font-size:16px}
.plan-add-day{width:150px}
/* плоский календарь месяца в «Моём дне» */
.day-cal > summary{list-style:none;display:inline-flex;align-items:center;gap:6px;cursor:pointer;white-space:nowrap}
.day-cal > summary::-webkit-details-marker{display:none}
.mcal-pop{min-width:300px;max-width:none;padding:10px}
.mcal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.mcal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.mcal-wd{font-size:11px;color:var(--muted);text-align:center;padding:2px 0 4px}
.mcal-d{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;height:38px;border-radius:9px;color:var(--fg);font-variant-numeric:tabular-nums;text-decoration:none}
.mcal-d:hover{background:var(--hover);text-decoration:none}
.mcal-d.out{color:var(--muted);opacity:.55}
.mcal-d.we span{color:var(--red)}
.mcal-d.today span{font-weight:700;color:var(--accent)}
.mcal-d.sel{background:var(--accent);color:var(--accent-ink)}
.mcal-d.sel span{color:var(--accent-ink)}
.mcal-dot{font-style:normal;font-size:10px;line-height:1;margin-top:2px;padding:1px 5px;border-radius:999px;background:var(--accent-soft);color:var(--accent)}
.mcal-dot.all{background:var(--green-soft);color:var(--green)}
.mcal-d.sel .mcal-dot{background:rgba(255,255,255,.25);color:#fff}
.mcal-today{display:inline-block;margin-top:6px}

/* ---------- фильтр «Проект» с поиском и галочками (19.10) ---------- */
.mpick{position:relative;min-width:220px;max-width:380px}
.mpick-btn{width:100%;display:flex;align-items:center;text-align:left;cursor:pointer;padding-right:28px;position:relative}
.mpick-btn::after{content:"";position:absolute;right:12px;top:50%;width:7px;height:7px;border-right:1.6px solid var(--muted);border-bottom:1.6px solid var(--muted);transform:translateY(-70%) rotate(45deg)}
.mpick-btn.on{box-shadow:0 0 0 1.5px var(--accent) inset;color:var(--accent)}
.mpick-pop{position:absolute;z-index:45;top:calc(100% + 6px);left:0;width:min(440px, calc(100vw - 32px));background:var(--sheet);border-radius:12px;box-shadow:var(--shadow-2);padding:8px}
.mpick-q{width:100%;border:1px solid var(--line-strong);border-radius:8px;padding:8px 10px;background:var(--surface);margin-bottom:6px}
.mpick-list{max-height:min(360px, 50vh);overflow:auto}
.mpick-item{display:flex;align-items:center;gap:10px;width:100%;border:0;background:none;text-align:left;padding:7px 8px;border-radius:8px;min-height:34px;color:var(--fg)}
.mpick-item:hover,.mpick-item.kb{background:var(--accent-soft)}
.mpick-item mark{background:none;color:var(--accent);font-weight:650;padding:0}
.mpick-box{flex:none;width:17px;height:17px;border-radius:5px;border:1.6px solid var(--line-strong);background:var(--surface);position:relative}
.mpick-item.on .mpick-box{background:var(--accent);border-color:var(--accent)}
.mpick-item.on .mpick-box::after{content:"";position:absolute;left:5px;top:1.5px;width:4px;height:8px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
.mpick-foot{display:flex;justify-content:space-between;align-items:center;padding-top:6px;border-top:1px solid var(--line);margin-top:6px}
.key-copy{color:var(--muted);margin-left:-2px}
.key-copy:hover{color:var(--accent)}
#issue{overflow-anchor:none}

/* ---------- телефон / PWA (19.10): нижняя панель, верхняя строка, полноэкранные панели ---------- */
.tabbar{display:none}
.mobile-search{display:none}
.mobile-create{display:none}
@media (max-width: 860px){
  .mobile-top{position:sticky;top:0;z-index:35;margin:-10px -16px 8px;padding:calc(8px + env(safe-area-inset-top,0px)) 12px 8px;
    background:var(--side-bg);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid var(--line)}
  .mobile-top .brand-name{font-size:16px}
  .mobile-top .icon-btn{width:38px;height:38px}
  .mobile-search{display:flex;flex:1;min-width:0;margin:0}
  .mobile-search input{width:100%;height:36px;border:0;border-radius:10px;padding:0 12px;background:var(--surface-2);color:var(--fg);outline:none}
  .mobile-search input:focus{box-shadow:var(--ring)}
  .mobile-create{display:inline-grid;background:var(--accent);color:var(--accent-ink)}
  .mobile-create:hover{filter:none}
  /* нижняя панель: пять разделов, под большой палец; место под ней — у .main */
  .tabbar{position:fixed;left:0;right:0;bottom:0;z-index:40;display:grid;grid-template-columns:repeat(5,1fr);
    padding:4px 4px calc(4px + env(safe-area-inset-bottom,0px));background:var(--side-bg);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);
    border-top:1px solid var(--line)}
  .tab{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:50px;padding:4px 2px;
    border:0;background:none;border-radius:12px;color:var(--muted);font:inherit;font-size:10.5px;line-height:1.1;text-decoration:none!important;
    -webkit-tap-highlight-color:transparent;white-space:nowrap}
  .tab[aria-current="page"]{color:var(--accent)}
  .tab:active{background:var(--hover)}
  .tab svg{width:22px;height:22px}
  .tab-count{position:absolute;top:2px;left:calc(50% + 6px);min-width:17px;height:17px;padding:0 5px;border-radius:999px;background:var(--red);color:#fff;
    font-size:10.5px;font-weight:700;line-height:17px;text-align:center;font-style:normal}
  .main{padding-bottom:calc(72px + env(safe-area-inset-bottom,0px))}
  .app.nav-open .tabbar{display:none}
  /* выйти — внизу выдвижного меню видно и на телефоне */
  .side-foot{padding-bottom:4px}
  /* iOS увеличивает страницу при фокусе в поле мельче 16px — у полей ввода 16px */
  input:not([type=checkbox]):not([type=radio]):not([type=range]),select,textarea{font-size:16px}
  /* боковая панель задачи — во весь экран, без ручки ширины */
  .issue-panel{width:100vw;border-radius:0;padding-top:env(safe-area-inset-top,0px)}
  .ip-resize{display:none}
  .ip-body{padding:12px 14px calc(28px + env(safe-area-inset-bottom,0px))}
  /* окна — снизу, во всю ширину */
  .modal-wrap{place-items:end center;padding:0}
  .modal{width:100%;max-height:92vh;border-radius:20px 20px 0 0;padding:18px 16px calc(18px + env(safe-area-inset-bottom,0px))}
  /* таблицы шире экрана — прокрутка внутри, а не всей страницы */
  .table-wrap,.ptable-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}
  #toasts{bottom:calc(76px + env(safe-area-inset-bottom,0px))}
  /* ничего не должно быть шире экрана: иначе телефон уменьшает всю страницу и нижняя панель уезжает за край */
  .fmt-pop{left:auto;right:0;max-width:calc(100vw - 32px)}
  .combo-add{min-width:0;flex-basis:100%}
  .combo-add .add-sel{width:100%!important}
  .combo-add .combo-list,.combo-list{min-width:0;max-width:calc(100vw - 32px)}
  /* список задач: на первом экране — поиск, «Чьи задачи» и сами задачи; остальные фильтры — по кнопке */
  .filters .filters-toggle{display:inline-flex}
  .filters:not(.open) > :not(.search):not([name=preset]):not(.filters-toggle):not([type=hidden]){display:none}
  .filters .search{flex:1 1 100%}
  .filters > .sel{flex:1 1 calc(50% - 4px);min-width:0}
  /* пункты меню и кнопки — под палец */
  .menu-body .menu-item{min-height:40px}
  .icon-btn.sm{min-width:32px;min-height:32px}
}
.filters-toggle{display:none;align-items:center;gap:6px}
.filters-toggle b{min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--accent);color:var(--accent-ink);font-size:11px;line-height:18px;text-align:center}
/* подсказки «двойной клик / перетащить» — для мыши; на телефоне — свои */
.touch-only{display:none}
@media (hover:none) and (pointer:coarse){.touch-only{display:inline}.mouse-only{display:none}}
.move-row{display:flex;gap:6px}
.move-row .menu-item{flex:1;justify-content:center}
@media (max-width: 860px) and (display-mode: standalone){
  /* установлено как приложение: адресной строки нет, скролл не «тянет» всё окно */
  html{overscroll-behavior-y:none}
  body{-webkit-user-select:none;user-select:none}
  input,textarea,[contenteditable],.md,.c-text,pre,code{-webkit-user-select:text;user-select:text}
}

/* ---------- групповые действия в списке задач (routes_bulk.py) ---------- */
.irows .row{grid-template-columns:22px minmax(240px,1fr) 170px 180px 92px 128px 120px 64px}
.row .c-sel{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;align-self:stretch;cursor:pointer;margin:-11px 0;padding:11px 0}
.c-sel input{width:17px;height:17px;margin:0;accent-color:var(--accent);cursor:pointer}
.row.is-sel,.row.is-sel:hover{background:var(--accent-soft)}
.row.is-sel::after{opacity:0}
.show-narrow,.show-narrow-i{display:none}
.bulk-bar{position:fixed;z-index:45;left:50%;bottom:calc(18px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);display:flex;align-items:center;gap:4px;
  max-width:calc(100vw - 24px);padding:6px 6px 6px 16px;border-radius:14px;background:var(--accent);color:var(--accent-ink);box-shadow:var(--shadow-2)}
.bulk-bar[hidden]{display:none}
.bulk-n{white-space:nowrap;margin-right:8px;font-weight:550}
.bulk-btn,.bulk-x{border:0;background:none;color:inherit;font:inherit;font-weight:550;padding:8px 12px;border-radius:9px;white-space:nowrap;cursor:pointer;list-style:none}
.bulk-btn::-webkit-details-marker{display:none}
.bulk-btn:hover,.bulk-x:hover,.bulk-more[open] > summary{background:rgba(255,255,255,.18)}
.bulk-x{font-size:20px;line-height:1;padding:6px 10px}
.bulk-more .menu-body{color:var(--fg)}
body:has(.bulk-bar:not([hidden])) #toasts{bottom:calc(78px + env(safe-area-inset-bottom,0px))}
@media (max-width: 1280px){
  .irows .row{grid-template-columns:22px minmax(220px,1fr) 160px 170px 86px 36px}
}
@media (max-width: 860px){
  .rows.irows:not(.prows):not(.qrows):not(.urows):not(.qarows):not(.frows) .row{grid-template-columns:26px minmax(0,1fr) auto;
    grid-template-areas:"sel sum sum" "sel who st" "sel due star"}
  .row .c-sel{grid-area:sel;align-items:flex-start;justify-content:flex-start;margin:-12px 0;padding:14px 0}
  .c-sel input{width:20px;height:20px}
  .show-narrow{display:flex}
  .show-narrow-i{display:inline}
  body:has(.bulk-bar:not([hidden])) #toasts{bottom:calc(126px + env(safe-area-inset-bottom,0px))}
  /* над нижней панелью разделов, во всю ширину */
  .bulk-bar{left:8px;right:8px;transform:none;max-width:none;bottom:calc(66px + env(safe-area-inset-bottom,0px));padding-left:12px;gap:0}
  .bulk-n{margin-right:auto}
  .bulk-btn{padding:9px 9px}
}

/* «С хранилища» под полем комментария: выбранные файлы Nextcloud — плашками до отправки */
.nc-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.nc-chips[hidden]{display:none}
.nc-chip .x{margin-left:4px}

/* ---------- Гант: /issues?view=gantt (partials/gantt.html, app.js → gantt) ---------- */
.gantt-tools{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 10px}
.seg.small > a{padding:3px 11px;font-size:12.5px}
.gantt-phone{display:none}
.gantt{--gl:340px;--rh:34px;position:relative}
.g-scroll{overflow:auto;max-height:calc(100vh - 230px);max-height:calc(100dvh - 230px);overscroll-behavior:contain}
.g-inner{width:calc(var(--gl) + var(--n) * var(--px));position:relative}
.g-head{position:sticky;top:0;z-index:4;display:flex;background:var(--surface);box-shadow:0 1px 0 var(--line)}
.g-left{position:sticky;left:0;z-index:2;width:var(--gl);flex:none;display:flex;align-items:center;gap:8px;padding:0 10px 0 12px;background:var(--surface);box-shadow:1px 0 0 var(--line);min-width:0}
.g-hl{z-index:5;font-size:12.5px;font-weight:600;color:var(--muted)}
.g-cal{position:relative;width:calc(var(--n) * var(--px));height:46px;flex:none}
.g-months,.g-days{position:absolute;left:0;right:0;height:23px}
.g-days{top:23px}
.g-months > span,.g-days > span{position:absolute;top:0;height:23px;display:flex;align-items:center;font-size:11.5px;color:var(--muted);white-space:nowrap}
.g-months > span{padding-left:6px;box-shadow:-1px 0 0 var(--line)}
.g-months b{font-weight:600;color:var(--fg-2)}
.g-days > span{width:var(--px);justify-content:center;font-variant-numeric:tabular-nums}
.g-days > span.wk{width:auto;padding-left:3px;justify-content:flex-start}
.g-days > span.we{color:var(--red);opacity:.75}
.g-days > span.td{color:var(--accent-ink);background:var(--accent);border-radius:6px;font-weight:650;opacity:1}
.g-days > span.wk.td{background:none;color:var(--accent)}
.g-body{position:relative}
.g-bg{position:absolute;top:0;bottom:0;left:var(--gl);width:calc(var(--n) * var(--px));pointer-events:none;z-index:0}
.g-we{position:absolute;top:0;bottom:0;background:var(--surface-2);opacity:.45}
.g-ml{position:absolute;top:0;bottom:0;width:1px;background:var(--line)}
.g-now{position:absolute;top:0;bottom:0;width:2px;margin-left:-1px;background:var(--accent);opacity:.7;z-index:1}
.g-group{display:flex;height:30px;align-items:flex-end;position:relative;z-index:1}
.g-group .g-left{font-weight:650;font-size:13px;height:30px;gap:6px;background:var(--surface)}
.g-group.nodl{height:38px;box-shadow:0 -1px 0 var(--line)}
.g-group.nodl .g-left{height:38px;padding-top:8px}
.g-ghint{position:sticky;left:calc(var(--gl) + 10px);align-self:center;white-space:nowrap;padding-top:6px}
.g-row{display:flex;height:var(--rh);position:relative}
.g-row:hover .g-left,.g-row.is-sel .g-left{background:color-mix(in srgb, var(--accent) 6%, var(--surface))}
.g-row:hover{background:var(--hover)}
.g-row.is-sel{background:var(--accent-soft)}
.g-hl{position:sticky}
.g-resize{position:absolute;top:0;bottom:0;right:-5px;width:10px;cursor:col-resize;z-index:6;touch-action:none}
.g-resize::after{content:"";position:absolute;top:20%;bottom:20%;left:4px;width:2px;border-radius:2px;background:var(--line);transition:background .15s}
.g-resize:hover::after,.gantt.g-resizing .g-resize::after{background:var(--accent)}
.gantt.g-resizing{cursor:col-resize;user-select:none}
.g-left .c-sel{display:flex;align-items:center;align-self:stretch;cursor:pointer}
.g-name{display:flex;gap:6px;align-items:baseline;min-width:0;flex:1;color:var(--fg);text-decoration:none!important;font-size:13.5px}
.g-name:hover .ell{color:var(--accent)}
.g-row.is-done .g-name .ell{color:var(--muted);text-decoration:line-through}
.g-track{position:relative;width:calc(var(--n) * var(--px));flex:none;overflow:hidden;overflow:clip}
.g-track[data-nodl]{cursor:copy}
.g-ghost{position:absolute;top:7px;bottom:7px;width:var(--px);border-radius:6px;border:1.5px dashed var(--accent);pointer-events:none}
.g-bar{position:absolute;top:7px;bottom:7px;min-width:6px;border-radius:6px;background:var(--c);color:#fff;display:flex;align-items:center;cursor:grab;
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.08);touch-action:none;user-select:none;z-index:1}
.g-bar.implied{background:linear-gradient(90deg, color-mix(in srgb, var(--c) 35%, transparent), var(--c) 40%)}
.g-bar.over{background:var(--red);box-shadow:0 0 0 2px var(--red-soft)}
.g-bar.done{opacity:.4}
.g-bar.cut-l{border-top-left-radius:0;border-bottom-left-radius:0}
.g-bar.cut-r{border-top-right-radius:0;border-bottom-right-radius:0}
.g-bar.drag{cursor:grabbing;box-shadow:0 4px 14px rgba(0,0,0,.25);z-index:3}
.g-bar.saving{opacity:.6}
.g-lbl{position:sticky;left:calc(var(--gl) + 2px);flex:0 1 auto;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:0 8px;font-size:12px;font-weight:550;pointer-events:none}
.g-h{position:absolute;top:-2px;bottom:-2px;width:9px;cursor:ew-resize;z-index:2}
.g-h.l{left:-3px}.g-h.r{right:-3px}
.g-h::after{content:"";position:absolute;top:50%;left:50%;width:3px;height:12px;margin:-6px 0 0 -1.5px;border-radius:2px;background:rgba(255,255,255,.9);opacity:0;transition:opacity .12s}
.g-bar:hover .g-h::after,.g-bar.drag .g-h::after{opacity:1}
.g-bar.cut-l .g-h.l,.g-bar.cut-r .g-h.r{display:none}
.g-tip{position:fixed;z-index:60;pointer-events:none;background:var(--fg);color:var(--bg);font-size:12px;font-weight:600;padding:4px 8px;border-radius:7px;white-space:nowrap;box-shadow:var(--shadow-2)}
.g-out{position:absolute;top:8px;font-size:11.5px;color:var(--muted);background:var(--surface-2);border-radius:6px;padding:2px 7px;text-decoration:none!important;z-index:1}
.g-out.before{left:4px}.g-out.after{right:4px}
.g-out:hover{color:var(--accent)}
@media (max-width: 860px){
  .gantt,.gantt-tools{display:none}
  .gantt-phone{display:block}
}

/* открытие задачи на поле комментария / призыве — не под шапкой страницы и панели */
#issue form.new-comment, #issue .summon-banner{scroll-margin-top:72px}

/* фильтры задач на странице проекта */
.ptask-filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:4px 0 10px}
.ptask-filters .search{flex:1 1 220px;min-width:180px}
.ptask-filters .sel{max-width:240px}
.wait-row .plan-btn.done{color:var(--orange)}

/* плитка вложения: «Скачать» и «Скопировать ссылку» при наведении (на телефоне — всегда) */
.ftile-wrap{position:relative;width:120px}
.ftile-act{position:absolute;top:6px;right:6px;display:flex;flex-direction:column;gap:4px;opacity:0;transition:opacity .12s;pointer-events:none}
.ftile-wrap:hover .ftile-act,.ftile-wrap:focus-within .ftile-act{opacity:1;pointer-events:auto}
.ftile-act a,.ftile-act button{width:28px;height:28px;border-radius:8px;border:0;padding:0;cursor:pointer;display:grid;place-items:center;
  background:var(--surface);color:var(--fg);box-shadow:0 0 0 1px var(--line),var(--shadow-1);text-decoration:none!important}
.ftile-act a:hover,.ftile-act button:hover{color:var(--accent);box-shadow:0 0 0 1px var(--accent),var(--shadow-1)}
@media (hover:none){.ftile-act{opacity:1;pointer-events:auto}.ftile-act a,.ftile-act button{width:26px;height:26px}}

/* «после конца рабочего дня ещё N дел» — тихая строка, не плашка */
.day-over-hint{display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:13px;color:var(--muted);margin:-4px 0 10px 2px}
.day-over-hint>span{display:inline-flex;align-items:center;gap:6px}
.day-over-hint .link-btn{font-size:13px}
.day-over-hint[hidden]{display:none}

/* поиск в уведомлениях */
.ntf-search{position:relative;margin-bottom:12px;max-width:640px}
.ntf-search input{width:100%;padding-left:34px}
.ntf-search-ico{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--muted);display:grid}
.ntf-found{padding:10px 16px 0}

/* смайлики в панели оформления */
.fmt-emo-ico{font-size:16px;line-height:1}
.fmt-emo .emo-pop{left:auto;right:0;min-width:0;width:296px;padding:6px}
.emo-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:2px}
.fmt-bar .emo-grid button{min-width:0;width:34px;height:34px;padding:0;font-size:19px;line-height:1}
.emo-title{font-size:11.5px;color:var(--muted);padding:4px 4px 2px}
@media (max-width:600px){.fmt-emo .emo-pop{width:264px}.fmt-bar .emo-grid button{width:30px;height:30px}}

/* «Что нового» — как «Список изменений» в Яндекс Трекере: месяц слева, заметки справа */
.wn-panel{padding:8px 28px}
.wn-month{display:grid;grid-template-columns:140px 1fr;gap:24px;padding:22px 0;border-top:1px solid var(--line)}
.wn-month:first-child{border-top:0}
.wn-when{display:flex;flex-direction:column;gap:2px;font-size:17px;color:var(--muted);position:sticky;top:12px;align-self:start}
.wn-item{padding-bottom:22px}
.wn-item + .wn-item{padding-top:6px}
.wn-item h2{font-size:20px;line-height:1.3;margin:0 0 2px;font-weight:650}
.wn-date{margin-bottom:8px}
.wn-body{font-size:15px;line-height:1.6;max-width:760px}
.wn-new{display:inline-block;vertical-align:middle;font-size:11.5px;font-weight:600;color:#fff;background:var(--accent);border-radius:999px;padding:2px 8px;margin-left:6px}
@media (max-width:700px){.wn-panel{padding:4px 16px}.wn-month{grid-template-columns:1fr;gap:6px}.wn-when{flex-direction:row;gap:6px;position:static}.wn-item h2{font-size:18px}}

/* «Скрыть завершённые» в связях и подзадачах */
.hide-done .is-done{display:none!important}
.hide-done-toggle{display:inline-flex;align-items:center;gap:6px;margin:0 0 8px;color:var(--muted)}
.sec-head .hide-done-toggle{margin:0 0 0 auto}

/* пункт чек-листа → подзадача */
.cl-sub{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;color:var(--muted);text-decoration:none!important;white-space:nowrap}
.cl-sub .key{color:var(--accent)}
.cl-item .cl-mksub{opacity:0;transition:opacity .12s}
.cl-item:hover .cl-mksub,.cl-item:focus-within .cl-mksub{opacity:1}
@media (hover:none){.cl-item .cl-mksub{opacity:1}}
.cl-list .cl-item{grid-template-columns:24px minmax(0,1fr) auto auto}

/* доска: правка срока и исполнителя прямо на карточке */
.card-meta .cq{cursor:pointer;border-radius:6px;padding:1px 4px;margin:-1px -4px}
.card-meta .cq:hover{background:var(--surface-2);color:var(--accent)}
.card-meta .cq-who{margin-left:auto}
.card-meta .cq-empty{opacity:0;font-size:12px;color:var(--muted)}
.card:hover .cq-empty,.card:focus-within .cq-empty{opacity:1}
@media (hover:none){.card-meta .cq-empty{opacity:.7}}
.card-pop{position:absolute;z-index:80;width:250px;padding:10px;background:var(--sheet);border-radius:12px;box-shadow:var(--shadow-2);display:flex;flex-direction:column;gap:8px}
.card-pop .cp-title{font-size:12.5px;color:var(--muted)}
.card-pop .sel{width:100%}
.cp-chips{display:flex;flex-wrap:wrap;gap:6px}
.cp-chips button,.cp-list button{border:0;background:var(--surface-2);border-radius:8px;padding:5px 9px;font:inherit;font-size:13px;cursor:pointer;color:var(--fg);text-align:left}
.cp-chips button:hover,.cp-list button:hover{background:var(--accent-soft, var(--surface));color:var(--accent)}
.cp-list{display:flex;flex-direction:column;gap:2px;max-height:240px;overflow:auto}
.cp-list button{background:none}
.cp-list button.on{font-weight:600;color:var(--accent)}
.cp-clear{color:var(--muted)!important}

/* история срабатываний автоматизации */
.auto-runs{margin-top:18px;padding:16px 18px}
.auto-runs .tbl td{padding:6px 10px;font-size:13.5px}
.auto-runs .run-err td{background:var(--red-soft, transparent)}
.ok-text{color:var(--green, #2E7D32)}
.auto-runs .table-wrap{overflow:auto}

/* список задач: режим «Дерево» */
.tree-row .c-sum{position:relative;padding-left:calc(var(--lvl, 0) * 22px + 26px)}
.tree-row:not([data-lvl="0"]){background:color-mix(in srgb, var(--surface-2) 45%, transparent)}
.tree-row .c-sum .tree-tg{position:absolute;left:calc(var(--lvl, 0) * 22px);top:1px;border:0;background:none;cursor:pointer;color:var(--muted);font-size:13px;
  width:22px;height:22px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;transition:transform .12s;padding:0}
.tree-tg:hover{background:var(--surface-2);color:var(--accent)}
.tree-tg[aria-expanded="true"]{transform:rotate(90deg)}
.btn.on{background:var(--accent-soft, var(--surface-2));color:var(--accent)}

/* Гант: загрузка сотрудника по дням и отсутствия (группировка «По исполнителям») */
.g-group.has-load{height:34px}
.g-group.has-load .g-left{height:34px}
.g-load{position:relative;width:calc(var(--n) * var(--px));flex:none;height:34px}
.g-load i{position:absolute;top:9px;height:16px;border-radius:3px;display:flex;align-items:center;justify-content:center;font-size:11px;font-style:normal;box-sizing:border-box;border:1px solid var(--surface)}
.gl-some{background:color-mix(in srgb, #2E9E5B 30%, transparent)}
.gl-warn{background:#F2C14E}
.gl-full{background:#E5533D}
.gl-abs{background:repeating-linear-gradient(135deg, var(--surface-2) 0 4px, color-mix(in srgb, var(--muted) 35%, transparent) 4px 6px)}
.g-legend{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.g-legend i{display:inline-block;width:12px;height:12px;border-radius:3px;margin-left:6px}

/* отсутствия */
.abs-form{margin-bottom:14px}
.abs-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px 12px;align-items:end}
.abs-grid .fld{display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:var(--muted)}
.abs-grid .abs-note{grid-column:span 2}
.abs-tbl td{vertical-align:middle}
.abs-tbl tr.abs-now td{background:color-mix(in srgb, var(--accent) 5%, transparent)}
@media (max-width:700px){.abs-grid .abs-note{grid-column:auto}.abs-tbl th:nth-child(4),.abs-tbl td:nth-child(4),.abs-tbl th:nth-child(5),.abs-tbl td:nth-child(5){display:none}}

/* «Разрешить доступ» для MCP-клиента */
.oauth-card{max-width:620px;margin:40px auto;padding:28px 30px}
.oauth-ico{width:48px;height:48px;border-radius:14px;background:var(--surface-2);display:grid;place-items:center;color:var(--accent);margin-bottom:10px}
.oauth-list{list-style:none;padding:0;margin:14px 0 20px;display:flex;flex-direction:column;gap:10px;color:var(--fg-2);line-height:1.5}
.oauth-list li{display:flex;gap:10px;align-items:flex-start}
.oauth-list li svg{flex:none;margin-top:3px;color:var(--accent)}

/* повторение: ближайший раз и «Сделано / Пропустить» прямо в карточке */
.rec-now{grid-column:1/-1;display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:0 0 8px}
.rec-now .hint{margin:0;flex:1 1 100%;line-height:1.35}
.rec-now .rec-done .menu-body{min-width:300px}
.rec-now .rec-note{width:100%;min-height:64px;padding:6px 8px;resize:vertical}
.rec-done .menu-body{min-width:300px}

/* ---------- список задач: свои столбцы и правка прямо в строке (22.10) ---------- */
.irows .row{grid-template-columns:var(--cols, 22px minmax(240px,1fr) 170px 180px 92px 128px 110px 64px)}
.panel:has(> .irows){overflow-x:auto}
.irows{min-width:var(--minw, 0)}
.cq-cell{appearance:none;border:0;background:none;font:inherit;color:inherit;padding:3px 6px;margin:-3px -6px;border-radius:7px;cursor:pointer;
  display:inline-flex;align-items:center;gap:8px;max-width:calc(100% + 12px);min-width:0;text-align:left}
.cq-cell:hover,.cq-cell:focus-visible{background:var(--surface);box-shadow:0 0 0 1px var(--line-strong, var(--line));outline:none}
.cq-who-cell{color:var(--fg-2)}
.row .cq-empty .due{color:var(--muted);opacity:0;transition:opacity .12s}
.row:hover .cq-empty .due,.row .cq-empty:focus-visible .due{opacity:.8}
@media (hover:none){.row .cq-empty .due{opacity:.6}}
.row.head .col-h{cursor:grab;user-select:none}
.row.head .col-h.dragging{opacity:.4}
.row.head .col-h.drop-before{box-shadow:inset 2px 0 0 var(--accent)}
.row.flash{animation:rowflash 1.2s ease-out}
@keyframes rowflash{from{background:var(--accent-soft)}to{background:transparent}}
.cols-menu .menu-body{min-width:280px}
.cols-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;max-height:min(60vh,420px);overflow:auto}
.cols-list li{display:flex;align-items:center;gap:6px;padding:3px 4px;border-radius:8px;background:var(--surface)}
.cols-list li.dragging{opacity:.4}
.cols-list li.drop-before{box-shadow:inset 0 2px 0 var(--accent)}
.cols-list .chk{flex:1;margin:0}
.cols-grip{cursor:grab;color:var(--muted);font-size:12px;letter-spacing:-2px;padding:0 2px}
.cols-move{display:flex;gap:2px}
.card-pop .cp-list button .pill{pointer-events:none}
.card-pop .cp-res{display:flex;flex-direction:column;gap:4px;margin-top:6px}
@media (max-width: 1280px){.irows .row .cc-x{display:block}}
@media (max-width: 860px){.irows{min-width:0}.irows .row .cc-x{display:none}.cols-menu{display:none}}
.hist-filter{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 12px}
.hist-filter .sel{width:auto;max-width:220px}
.hist-date{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:13px}
.viewers{display:inline-flex;align-items:center;gap:2px;padding:2px 8px 2px 6px;border-radius:999px;background:var(--surface-2);font-size:12px;color:var(--fg-2);cursor:default}
.viewers .vw-eye{font-size:13px;margin-right:2px}
.viewers .vw-av{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-weight:650;font-size:10.5px;margin-left:-4px;box-shadow:0 0 0 2px var(--surface)}
.viewers .vw-av:first-of-type{margin-left:0}
.viewers .vw-av.typing{background:var(--orange-soft);color:var(--orange)}
.viewers .vw-more{margin-left:4px}
.viewers .vw-typing{margin-left:6px;color:var(--orange);font-weight:550}
.ntf-item{position:relative}
.ntf-item .ntf-del{position:absolute;right:10px;top:50%;transform:translateY(-50%);z-index:2;opacity:0;transition:opacity .12s;background:var(--surface);font-size:18px;line-height:1}
.ntf-item:hover .ntf-del,.ntf-item .ntf-del:focus-visible{opacity:1}
.ntf-item:hover .ntf-when{visibility:hidden}
@media (hover:none){.ntf-item .ntf-del{opacity:.6;top:12px;transform:none}.ntf-item:hover .ntf-when{visibility:visible}}

/* ---------- PDF-инструменты (окно в задаче и страница /pdf) ---------- */
.pt-modal{width:min(720px,100%)}
.pt-modal > *,.pt-form > *{flex-shrink:0}
.pt-ops{align-self:flex-start}
.pt-hint{margin-top:-8px;min-height:1.4em}
.pt-files{display:flex;flex-direction:column;gap:6px;counter-reset:pt;max-height:300px;overflow:auto;margin:0 -4px;padding:0 4px}
.pt-file{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;padding:6px 8px 6px 10px;background:var(--bg);border-radius:12px}
.pt-file.is-off{opacity:.45}
.pt-pick{display:flex;align-items:center;gap:10px;cursor:pointer;min-width:0}
.pt-pick > .min0{flex:1;display:flex;flex-direction:column}
.pt-pick .ext{flex:none}
.pt-pick input{accent-color:var(--accent);width:17px;height:17px;margin:0}
.pt-pick .ext{width:34px;height:34px;border-radius:8px}
.pt-pick .file-name{font-size:13.5px}
.pt-n{display:none;flex:none;min-width:20px;height:20px;border-radius:999px;background:var(--accent);color:#fff;font:650 11px/20px var(--f-body);text-align:center}
[data-op=merge] .pt-file:has(input:checked) .pt-n{display:inline-block}
[data-op=merge] .pt-file:has(input:checked) .pt-n::before{counter-increment:pt;content:counter(pt)}
.pt-move{display:flex;gap:2px}
.pt-move .icon-btn{font-size:15px}
[data-op]:not([data-op=merge]) .pt-move [data-pt-up],[data-op]:not([data-op=merge]) .pt-move [data-pt-down]{display:none}
.pt-pages{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:10px;max-height:290px;overflow:auto;padding:10px;background:var(--bg);border-radius:12px}
.pt-pages > .muted{grid-column:1/-1;text-align:center;padding:16px}
.pt-pg{border:0;background:none;padding:0;display:flex;flex-direction:column;align-items:center;gap:4px;cursor:pointer;color:var(--fg-2)}
.pt-pg-img{display:grid;place-items:center;width:100%;aspect-ratio:1/1.3;border-radius:8px;background:var(--surface);box-shadow:var(--shadow-1);overflow:hidden;outline:2px solid transparent;outline-offset:1px;position:relative}
.pt-pg canvas{max-width:92%;max-height:92%;width:auto;height:auto;background:#fff;transform:rotate(var(--rot,0deg)) scale(var(--sc,1));transition:transform .2s}
.pt-pg-n{font-size:11.5px;font-variant-numeric:tabular-nums}
.pt-pg:hover .pt-pg-img{outline-color:var(--line-strong)}
.pt-pg.on .pt-pg-img{outline-color:var(--accent)}
.pt-pg.on .pt-pg-n{color:var(--accent);font-weight:650}
.pt-pg.del .pt-pg-img{outline-color:var(--red)}
.pt-pg.del .pt-pg-img::after{content:"×";position:absolute;inset:0;display:grid;place-items:center;font:300 54px/1 var(--f-body);color:var(--red);background:color-mix(in srgb,var(--red-soft) 70%,transparent)}
.pt-pg.del .pt-pg-n{color:var(--red)}
.pt-opts input.bad{box-shadow:0 0 0 2px var(--red)}
.pt-radios{gap:8px}
.pt-radios .chk{align-items:center;flex-wrap:wrap}
.pt-radios .chk .sel{height:30px}
.pt-ranges input[name=ranges]{width:180px}
.pt-form{padding:20px 22px;display:flex;flex-direction:column;gap:14px}
.pt-drop{margin-top:-4px}
.pt-drop label{margin-top:0;flex-wrap:wrap;text-align:center}
.pt-job-page{padding:18px 22px;margin-top:4px}
.pt-run{display:flex;align-items:center;gap:14px;padding:6px 0}
.pt-spin{width:26px;height:26px;border-radius:50%;border:3px solid var(--accent-soft);border-top-color:var(--accent);animation:pt-spin .8s linear infinite;flex:none}
@keyframes pt-spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion: reduce){.pt-spin{animation-duration:2.4s}.pt-pg canvas{transition:none}}
.pt-done{display:flex;flex-direction:column;gap:12px;line-height:1.5}
.pt-out{display:flex;flex-direction:column;gap:6px}
.pt-out-file{display:grid;grid-template-columns:40px minmax(0,1fr);gap:12px;align-items:center;padding:8px 12px;background:var(--bg);border-radius:12px;color:var(--fg)}
.pt-out-file:hover{text-decoration:none;background:var(--hover)}
@media (max-width: 640px){
  .pt-ops{display:grid;grid-template-columns:1fr 1fr;width:100%}
  .pt-ops .seg-opt{display:flex}
  .pt-ops .seg-opt span{flex:1;justify-content:center;padding:6px 8px}
  .pt-pages{grid-template-columns:repeat(auto-fill,minmax(78px,1fr));max-height:240px}
  .pt-files{max-height:240px}
  .pt-form{padding:16px 14px}
}

/* расходы курьера */
.cr-table .cr-num { width: 88px; text-align: right; }
.cr-table .cr-note { width: 200px; }
.cr-table tr.cr-extra td { background: color-mix(in srgb, var(--accent, #0a66d8) 5%, transparent); }
.cr-form { display: grid; gap: 6px; min-width: 220px; }
.cr-form label { display: grid; gap: 2px; font-size: 13px; }
.cr-btn { min-width: 32px; }
.cr-sum { color: var(--text-2, inherit); }
.cr-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(380px, 1fr)); gap: 16px; margin-top: 16px; }
.cr-grid .card { min-width: 0; }
.ptable.cr-cards { width: 100%; min-width: 0; margin-top: 10px; }
.ptable.cr-table { min-width: 1100px; }
@media (max-width: 700px) { .cr-grid { grid-template-columns: 1fr; } }
.ptable.wb-fuel-per { min-width: 0; }

/* расшифровка аудио и видео */
.tr-modal { max-width: 520px; }
.tr-modes { display: grid; gap: 8px; margin: 12px 0; }
.tr-opt { align-items: flex-start; padding: 10px 12px; border: 1px solid var(--line); border-radius: 10px; cursor: pointer; }
.tr-opt > span { display: grid; gap: 2px; }
.tr-opt:has(input:checked) { border-color: var(--accent); background: color-mix(in srgb, var(--accent) 6%, transparent); }

/* туры по интерфейсу (tour.js) */
.tour-block { position: fixed; inset: 0; z-index: 9000; background: transparent; }
.tour-hole { position: fixed; z-index: 9001; border-radius: 10px; pointer-events: none; box-shadow: 0 0 0 9999px rgba(10, 14, 22, .58);
  outline: 2px solid #fff; transition: left .45s ease, top .45s ease, width .45s ease, height .45s ease; }
.tour-cursor { position: fixed; z-index: 9003; width: 26px; height: 26px; pointer-events: none; margin: -2px 0 0 -3px;
  transition: left .7s cubic-bezier(.4,.1,.2,1), top .7s cubic-bezier(.4,.1,.2,1); filter: drop-shadow(0 2px 3px rgba(0,0,0,.35)); }
.tour-cursor .tour-ripple { position: absolute; left: -9px; top: -9px; width: 26px; height: 26px; border-radius: 50%; border: 2px solid #fff; opacity: 0; }
.tour-cursor.tour-click .tour-ripple { animation: tour-ripple 1.4s .75s ease-out infinite; }
@keyframes tour-ripple { 0% { transform: scale(.4); opacity: .95; } 100% { transform: scale(1.9); opacity: 0; } }
.tour-tip { position: fixed; z-index: 9002; background: var(--surface, #fff); color: var(--fg, #111); border-radius: 14px; padding: 14px 16px 12px;
  box-shadow: 0 12px 40px rgba(0,0,0,.28); max-width: calc(100vw - 24px); transition: left .45s ease, top .45s ease; }
.tour-tip .tour-count { font-size: 12px; color: var(--muted, #667); margin-bottom: 4px; }
.tour-tip .tour-title { font-size: 17px; margin: 0 0 6px; }
.tour-tip .tour-text { margin: 0 0 12px; line-height: 1.45; font-size: 14.5px; }
.tour-tip .tour-btns { display: flex; gap: 6px; align-items: center; }
.tour-tip .tour-sp { flex: 1; }
.tour-shake { animation: tour-shake .35s; }
@keyframes tour-shake { 25% { transform: translateX(-5px); } 75% { transform: translateX(5px); } }
.tour-pulse { animation: tour-pulse 1.8s ease-in-out infinite; }
@keyframes tour-pulse { 0%, 100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--accent, #0a66d8) 55%, transparent); } 60% { box-shadow: 0 0 0 7px transparent; } }
.tour-help-btn { gap: 6px; }
@media (prefers-reduced-motion: reduce) { .tour-hole, .tour-cursor, .tour-tip { transition: none; } .tour-pulse, .tour-cursor.tour-click .tour-ripple { animation: none; } }
.tour-help-row { margin: 0 0 10px; }

/* ---------- Регламенты: сдача и ведение (23.10) ---------- */
.rq-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.rq-stat{padding:14px 16px;display:flex;flex-direction:column;gap:2px}
.rq-stat b{font:700 26px var(--f-display);letter-spacing:-.02em;color:var(--fg)}
.rq-stat span{font-size:12.5px;color:var(--muted)}
.rq-stat.is-pass b{color:var(--green)}
.rq-stat.is-todo b{color:var(--orange)}
.rq-progress{height:6px;border-radius:999px;background:var(--surface-2);overflow:hidden}
.rq-progress i{display:block;height:100%;background:var(--green);border-radius:inherit;transition:width .3s}
.rq-group{display:flex;flex-direction:column;gap:8px}
.rq-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.rq-row{display:grid;grid-template-columns:minmax(0,1fr) 190px auto;gap:10px 18px;align-items:center;padding:14px 16px}
.rq-title{margin:0;font:600 15px/1.35 var(--f-display)}
.rq-meta{margin-top:3px}
.rq-intro{margin-top:6px;color:var(--fg-2)}
.rq-intro p{margin:0}
.rq-read{display:inline-flex;align-items:center;gap:5px;margin-top:6px}
.rq-state{display:flex;flex-direction:column;align-items:flex-start;gap:4px}
.rq-act{justify-self:end}
.rq-extra > summary{cursor:pointer;list-style:none;margin-bottom:6px}
.rq-extra > summary::-webkit-details-marker{display:none}
.rq-extra > summary::before{content:"›";display:inline-block;margin-right:6px;transition:transform .15s;color:var(--muted)}
.rq-extra[open] > summary::before{transform:rotate(90deg)}
.rq-attempt{max-width:760px}
.rq-question{font:600 17px/1.45 var(--f-display);margin-bottom:14px;white-space:pre-line}
.rq-answers{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}
.rq-answer{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border-radius:12px;background:var(--surface-2);cursor:pointer;line-height:1.45;border:1.5px solid transparent}
.rq-answer:hover{background:var(--hover)}
.rq-answer input{accent-color:var(--accent);width:18px;height:18px;margin:1px 0 0;flex:none}
.rq-answer:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}
.rq-answer:has(input:focus-visible){box-shadow:var(--ring)}
.rq-result{display:flex;gap:16px;align-items:flex-start;padding:18px 20px}
.rq-result h2{margin:0 0 4px;font:650 19px var(--f-display)}
.rq-result p{margin:0;line-height:1.5}
.rq-result-mark{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;flex:none}
.rq-result.is-pass .rq-result-mark{background:var(--green-soft);color:var(--green)}
.rq-result.is-fail .rq-result-mark{background:var(--red-soft);color:var(--red)}
.rq-mistakes{margin:10px 0 0;padding-left:22px;display:flex;flex-direction:column;gap:10px;line-height:1.45}
.rq-page .ptable{min-width:760px}
.rq-page .ptable td.min0{white-space:normal;max-width:none}
.rq-page .ptable tr.off td{opacity:.55}
.rq-h3{margin:6px 0 8px;font:600 14px var(--f-display)}
.rq-form{margin-top:14px}
.rq-groups,.rq-members{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:6px 14px;margin-bottom:8px}
.rq-more summary,.rq-log summary{cursor:pointer;color:var(--accent)}
.rq-more .form-grid{margin-top:8px}
.rq-log pre{white-space:pre-wrap;font-size:12px;line-height:1.5;background:var(--surface-2);border-radius:10px;padding:10px 12px;max-height:420px;overflow:auto;margin:8px 0 0}
.rq-qlist{display:flex;flex-direction:column;gap:10px}
.rq-qcard.is-off{opacity:.7}
.rq-qhead{display:flex;gap:12px;align-items:flex-start;justify-content:space-between}
.rq-qtext{font-weight:600;line-height:1.45;white-space:pre-line}
.rq-qbadges{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex:none}
.rq-opts{margin:10px 0;padding-left:22px;display:flex;flex-direction:column;gap:4px;line-height:1.45}
.rq-opts li.is-key{color:var(--green);font-weight:550}
.rq-opts li.is-key svg{vertical-align:-2px}
.rq-note{background:var(--amber-soft);color:var(--amber);border-radius:8px;padding:6px 10px;margin-bottom:10px}
.rq-publish{display:flex;gap:12px 18px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.rq-aedit{flex-direction:row!important;align-items:center;gap:10px!important}
.rq-aedit > label{flex:none;width:150px;font-size:12.5px}
.rq-aedit input:not([type=radio]){flex:1}
.rq-people{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:8px;margin-top:10px}
.rq-person{display:flex;gap:10px;align-items:center;padding:8px 10px;border-radius:10px;background:var(--surface-2);color:var(--fg);min-width:0}
.rq-person:hover{background:var(--hover);text-decoration:none}
.rq-person > .min0{display:flex;flex-direction:column}
.rq-grow{grid-template-columns:minmax(0,1fr) auto auto!important}
textarea.mono{font:12.5px/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
@media (max-width: 720px){
  .rq-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .rq-row{grid-template-columns:1fr auto}
  .rq-row .rq-main{grid-column:1/-1}
  .rq-act{justify-self:end}
  .rq-aedit{flex-direction:column!important;align-items:stretch}
  .rq-aedit > label{width:auto}
}
/* двойники компаний (24.10) */
.dup-group{margin-bottom:14px}
.dup-group .c-pick{width:84px;text-align:center}
.dup-actions{display:flex;justify-content:flex-end;padding:10px 14px}
.dup-manual{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:flex-end;padding:14px}
.dup-manual p{flex-basis:100%;margin:0}
.dup-manual label{display:flex;flex-direction:column;gap:4px;font-size:13px;flex:1 1 220px}
/* компании по ролям в проектах (24.10) */
.role-counts{display:flex;flex-wrap:wrap;gap:8px;margin:-4px 0 12px}
.role-count{display:inline-flex;gap:5px;align-items:baseline;padding:5px 12px;border-radius:999px;background:var(--surface-2);color:var(--fg);text-decoration:none;font-size:13.5px}
.role-count:hover{background:var(--hover)}
.role-count.on{background:var(--accent);color:#fff}
.filters .chk{display:inline-flex;gap:6px;align-items:center;font-size:13.5px;white-space:nowrap}
.card-sub{font-size:15px;font-weight:600;margin:20px 0 6px}

/* (26.10) брифинг не за сегодня */
.brief-stale{border-left:4px solid var(--amber);background:var(--amber-soft);margin-bottom:12px}

/* «Сейчас или в конец?» при добавлении дела в «Мой день» (28.10.2026) */
.where-pop{position:fixed;z-index:1000;min-width:240px;max-width:min(320px,calc(100vw - 16px));background:var(--surface);border-radius:12px;box-shadow:var(--shadow-2);padding:8px;display:flex;flex-direction:column;gap:4px}
.where-pop .wp-h{font-size:12px;color:var(--muted, #6b7280);padding:2px 6px 4px}
.where-pop .wp-b{display:flex;flex-direction:column;align-items:flex-start;gap:1px;text-align:left;border:0;border-radius:8px;background:transparent;padding:8px 10px;cursor:pointer;color:inherit;font:inherit}
.where-pop .wp-b small{font-size:12px;color:var(--muted, #6b7280)}
.where-pop .wp-b:hover,.where-pop .wp-b:focus-visible{background:var(--hover);outline:none}
.where-pop .wp-b.primary{background:var(--accent-soft)}
.where-pop .wp-b.primary b{color:var(--accent)}

/* ---------- выбор дня и времени (29.10): окно с календарём и часами вместо системного поля ---------- */
.dtp-native{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important;overflow:hidden;clip:rect(0 0 0 0)}
.dtp-field{display:inline-flex;align-items:center;gap:8px;text-align:left;cursor:pointer;min-height:36px;font:inherit;color:var(--fg)}
.dtp-field.empty{color:var(--muted)}
.dtp-field .dtp-ico{font-size:14px;line-height:1}
.dtp-wrap{position:fixed;inset:0;z-index:1000;background:rgba(15,18,25,.38);display:grid;place-items:center;padding:16px;opacity:0;transition:opacity .15s}
.dtp-wrap.in{opacity:1}
.dtp{width:min(360px,100%);max-height:calc(100vh - 32px);overflow:auto;background:var(--bg);border-radius:18px;box-shadow:var(--shadow-2), 0 0 0 1px var(--line);
  padding:14px 14px 12px;display:flex;flex-direction:column;gap:10px;color:var(--fg);overscroll-behavior:contain}
.dtp-title{font-size:12px;color:var(--muted);font-weight:600}
.dtp-sum{display:flex;align-items:center;justify-content:space-between;gap:6px;flex-wrap:wrap;margin-top:2px}
.dtp-part{border:0;background:none;font:inherit;color:inherit;padding:2px 6px;border-radius:8px;cursor:pointer}
.dtp-sum > .dtp-part{font-size:16px;font-weight:600;text-align:left}
.dtp-time{font-size:26px;font-weight:650;font-variant-numeric:tabular-nums;white-space:nowrap}
.dtp-time .dtp-part{font-size:26px;font-weight:650;padding:0 4px}
.dtp-part.on{background:var(--accent-soft);color:var(--accent)}
.dtp-sum.past .dtp-part{color:var(--red)}
.dtp-quick{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.dtp-quick::-webkit-scrollbar{display:none}
.dtp-chip{flex:none;border:1px solid var(--line);background:var(--sheet);border-radius:999px;padding:7px 12px;font:inherit;font-size:13px;color:var(--fg);cursor:pointer;white-space:nowrap}
.dtp-chip:hover{border-color:var(--accent);color:var(--accent)}
.dtp-nav{display:flex;align-items:center;justify-content:space-between;padding:0 2px 2px}
.dtp-nav b{font-weight:600}
.dtp-nav b::first-letter{text-transform:uppercase}
.dtp-nav .icon-btn{font-size:22px;width:38px;height:38px;line-height:1}
.dtp-cal{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;text-align:center}
.dtp-wd{font-size:11px;color:var(--muted);padding:4px 0}
.dtp-day{border:0;background:none;font:inherit;height:40px;border-radius:999px;cursor:pointer;color:var(--fg);font-variant-numeric:tabular-nums}
.dtp-day.we{color:var(--muted)}
.dtp-day.today{box-shadow:inset 0 0 0 1.5px var(--accent)}
.dtp-day.on{background:var(--accent);color:var(--accent-ink)}
.dtp-day:disabled{opacity:.3;cursor:default}
.dtp-day:not(:disabled):not(.on):hover{background:var(--accent-soft)}
.dtp-dial{position:relative;flex:none;width:280px;height:280px;margin:2px auto 0;border-radius:50%;background:var(--sheet);box-shadow:inset 0 0 0 1px var(--line);touch-action:none;-webkit-user-select:none;user-select:none}
.dtp-hand{position:absolute;left:50%;bottom:50%;width:2px;margin-left:-1px;background:var(--accent);transform-origin:50% 100%;pointer-events:none;transition:transform .12s}
.dtp-hand::before{content:"";position:absolute;left:50%;bottom:-4px;width:8px;height:8px;margin-left:-4px;border-radius:50%;background:var(--accent)}
.dtp-num{position:absolute;width:38px;height:38px;margin:-19px 0 0 -19px;border:0;border-radius:50%;background:transparent;font:inherit;font-size:15px;color:var(--fg);cursor:pointer;z-index:1;font-variant-numeric:tabular-nums;padding:0}
.dtp-num.inner{width:32px;height:32px;margin:-16px 0 0 -16px;font-size:13px;color:var(--fg-2)}
.dtp-num.off{opacity:.5}
.dtp-num.on{background:var(--accent);color:var(--accent-ink);opacity:1}
.dtp-exact{display:flex;align-items:center;justify-content:center;gap:8px;font-size:13px;flex-wrap:wrap}
.dtp-ti{width:84px;text-align:center}
.dtp-foot{display:flex;justify-content:flex-end;gap:8px;padding-top:2px}
@media (max-width: 860px){
  .dtp-wrap{place-items:end center;padding:0}
  .dtp{width:100%;max-height:94vh;border-radius:20px 20px 0 0;padding:16px 16px calc(14px + env(safe-area-inset-bottom,0px));transform:translateY(24px);transition:transform .18s}
  .dtp-wrap.in .dtp{transform:none}
  .dtp-foot .btn{flex:1;min-height:44px}
  .dtp-chip{padding:9px 14px}
}
@media (max-width: 330px){.dtp-dial{transform:scale(.88);margin:-14px auto}}

/* ---------- подсказки задач по названию (29.10) ---------- */
.isg-list{position:fixed;z-index:1001;max-height:320px;overflow:auto;background:var(--bg);border-radius:12px;box-shadow:var(--shadow-2), 0 0 0 1px var(--line);padding:4px;overscroll-behavior:contain}
.isg-item{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:8px;row-gap:1px;width:100%;text-align:left;border:0;background:none;padding:8px 10px;border-radius:8px;cursor:pointer;font:inherit;color:var(--fg)}
.isg-item .key{font-size:12px;font-weight:600;color:var(--accent);white-space:nowrap;align-self:center}
.isg-sum{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.isg-meta{grid-column:2;font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.isg-item.on,.isg-item:hover{background:var(--accent-soft)}
.isg-item.done .isg-sum{color:var(--muted);text-decoration:line-through}
@media (max-width: 860px){.isg-item{padding:10px}}

/* ---------- меню на телефоне — снизу во всю ширину (29.10): «Напомнить», «В мой день», дела «Моего дня» ---------- */
@media (max-width: 860px){
  details.menu.sheet-m[open] > .menu-body{position:fixed;left:8px;right:8px;top:auto;bottom:calc(8px + env(safe-area-inset-bottom,0px));min-width:0;max-width:none;
    max-height:80vh;z-index:90;padding:8px;border-radius:16px;background:var(--bg);box-shadow:var(--shadow-2), 0 0 0 1px var(--line)}
  details.menu.sheet-m[open]::after{content:"";position:fixed;inset:0;z-index:89;background:rgba(15,18,25,.32)}
  details.menu.sheet-m[open] > .menu-body .menu-item{min-height:44px}
  details.menu.sheet-m[open] > .menu-body .dtp-field{width:100%;min-height:44px}
}
.remind-form-sm .dtp-field,.remind-form .dtp-field{min-width:200px}
.remind-form-sm .dtp-field{width:100%}
@media (max-width: 860px){details.menu.sheet-m[open] > .menu-body input.sel{min-height:44px}}

/* Тендеры компании (Тендерплан) */
.tp-block{margin:10px 0}
.tp-block>summary{cursor:pointer;padding:6px 0;list-style-position:inside}
.tp-tbl td{vertical-align:top}
.tp-tbl td.tp-name{min-width:160px;max-width:480px}
.tp-tbl td.tp-co{min-width:120px;max-width:220px;font-size:13px}
.tp-mark{font:inherit;font-size:12.5px;padding:2px 4px;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--fg);width:100%;min-width:100px;max-width:190px}
.tabs:has(> button:nth-child(7)) button{padding:5px 9px}
.tabs:has(> button:nth-child(7)) .n{margin-left:4px}

/* страница «Тендеры» (разбор) */
.tp-triage td.tp-acts{text-align:right}
.tp-triage td.tp-acts .btn+.btn{margin-left:4px}
.tenders-page .tp-min{width:130px}
