/* Стили сайта «План замен». Перенесены из согласованного макета: тот же вид на телефоне, ноуте и широком мониторе. */
:root{
  --bg:#F4F6F5; --panel:#FFFFFF; --ink:#18221F; --ink-2:#5B6763; --ink-3:#8E9894;
  --line:#DDE3E0; --accent:#0E6F6C; --accent-ink:#FFFFFF; --accent-soft:#E1F0EE;
  --good:#2C7A4B; --good-soft:#E3F1E7; --warn:#B8760A; --warn-soft:#FBF0D8; --bad:#B23A2E; --bad-soft:#F8E3E0;
  --today:#FFF4D6; --photo:#2B3230;
  --w-vi:#5B3FB8; --w-vi-s:#EAE3FA; --w-bv:#B4560F; --w-bv-s:#FBE8D8; --w-sv:#1F63B8; --w-sv-s:#DDE9FA; --w-nk:#A8306B; --w-nk-s:#F9DFEC; --w-ak:#3E7D2A; --w-ak-s:#E1F1DA;
}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]){
  --bg:#131917; --panel:#1C2422; --ink:#EEF2F0; --ink-2:#A9B4B0; --ink-3:#77827E;
  --line:#2C3633; --accent:#4FB3AE; --accent-ink:#0B1513; --accent-soft:#1B3331;
  --good:#6CC28E; --good-soft:#1B3025; --warn:#E0A64A; --warn-soft:#3A2D14; --bad:#E27A6E; --bad-soft:#3B1F1B;
  --today:#3A3118; --photo:#0B100F;
  --w-vi:#C3AEFF; --w-vi-s:#2C2350; --w-bv:#F3A86A; --w-bv-s:#3E2716; --w-sv:#8DB8F5; --w-sv-s:#1B2C45; --w-nk:#F090C0; --w-nk-s:#42203A; --w-ak:#9CD48A; --w-ak-s:#1F3319;
}}
:root[data-theme="dark"]{
  --bg:#131917; --panel:#1C2422; --ink:#EEF2F0; --ink-2:#A9B4B0; --ink-3:#77827E;
  --line:#2C3633; --accent:#4FB3AE; --accent-ink:#0B1513; --accent-soft:#1B3331;
  --good:#6CC28E; --good-soft:#1B3025; --warn:#E0A64A; --warn-soft:#3A2D14; --bad:#E27A6E; --bad-soft:#3B1F1B;
  --today:#3A3118; --photo:#0B100F;
  --w-vi:#C3AEFF; --w-vi-s:#2C2350; --w-bv:#F3A86A; --w-bv-s:#3E2716; --w-sv:#8DB8F5; --w-sv-s:#1B2C45; --w-nk:#F090C0; --w-nk-s:#42203A; --w-ak:#9CD48A; --w-ak-s:#1F3319;
}
*{box-sizing:border-box;scrollbar-width:thin;scrollbar-color:var(--line) transparent}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--line);border-radius:99px;border:3px solid transparent;background-clip:padding-box}
::-webkit-scrollbar-thumb:hover{background:var(--ink-3);background-clip:padding-box;border:3px solid transparent}
::-webkit-scrollbar-corner{background:transparent}
html{background:var(--bg);min-height:100%}
body{margin:0;min-height:100vh;background:var(--bg);color:var(--ink);font:15px/1.45 "IBM Plex Sans",system-ui,-apple-system,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased}
.phone{max-width:480px;margin:0 auto;min-height:100%;background:var(--bg);display:flex;flex-direction:column;position:relative}
h1,h2,h3{font-family:"Manrope","IBM Plex Sans",sans-serif;margin:0;text-wrap:balance}
.num{font-variant-numeric:tabular-nums}
button,input{font:inherit;color:inherit}
button{background:none;border:0;padding:0;cursor:pointer}
button:focus-visible,input:focus-visible,.row:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* аватарки монтёров */
[data-w]{background:var(--ws,var(--accent-soft))!important;color:var(--wc,var(--accent))!important}
[data-w="ВИ"]{--wc:var(--w-vi);--ws:var(--w-vi-s)}
[data-w="БВ"]{--wc:var(--w-bv);--ws:var(--w-bv-s)}
[data-w="СВ"]{--wc:var(--w-sv);--ws:var(--w-sv-s)}
[data-w="НК"]{--wc:var(--w-nk);--ws:var(--w-nk-s)}
[data-w="АК"]{--wc:var(--w-ak);--ws:var(--w-ak-s)}

/* header + org tabs */
.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:5;background:var(--bg);border-bottom:1px solid var(--line)}
.top .t1{padding:12px 16px 6px;display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.top h1{font-size:20px;font-weight:800;letter-spacing:-.01em}
.role{display:inline-flex;align-items:center;gap:9px;padding:4px 12px 4px 4px;border:1px solid var(--line);border-radius:99px;background:var(--panel);font-size:13.5px;color:var(--ink);cursor:pointer;transition:border-color .15s}
.role:hover{border-color:var(--accent)}
.role b{width:30px;height:30px;border-radius:50%;background:var(--accent);color:var(--accent-ink);font-size:12px;font-weight:700;display:grid;place-items:center}
.role span{display:flex;flex-direction:column;line-height:1.15}
.role small{font-size:11px;color:var(--ink-2)}
.role svg{width:14px;height:14px;stroke:var(--ink-3);fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}
.orgs{display:flex;gap:0;overflow-x:auto;scrollbar-width:none;padding:0 16px}
.orgs button{flex:0 0 auto;padding:7px 12px 9px;font-size:13.5px;font-weight:500;color:var(--ink-2);border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}
.orgs button[aria-selected="true"]{color:var(--ink);border-bottom-color:var(--accent);font-weight:600}
.orgs button.add{align-self:center;margin:0 0 6px 10px;border-bottom:1px solid var(--line)}

main{flex:1;padding:12px 16px calc(84px + env(safe-area-inset-bottom,0px))}
.screen[hidden]{display:none}
.eyebrow{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);margin:18px 0 8px;display:flex;justify-content:space-between;align-items:center;min-height:34px}
.eyebrow:first-child{margin-top:4px}
.eyebrow a,.eyebrow button{font-size:12px;letter-spacing:0;text-transform:none;color:var(--accent);font-weight:600}
.eyebrow button,.orgs button.add{display:inline-flex;align-items:center;gap:7px;min-height:34px;border:1px solid var(--line);border-radius:99px;padding:5px 14px 5px 11px;background:var(--panel);color:var(--ink);font-size:13.5px;font-weight:600;letter-spacing:0;text-transform:none;line-height:1.2;transition:border-color .15s,background .15s;cursor:pointer}
.eyebrow button:hover,.orgs button.add:hover{border-color:var(--accent);background:var(--accent-soft)}
.eyebrow button svg,.orgs button.add svg{width:15px;height:15px;stroke:var(--accent);fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}

.strip{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:10px;overflow:hidden}
.strip.four{grid-template-columns:repeat(4,1fr)}
.strip div{background:var(--panel);padding:10px 12px}
.strip .v{font:800 22px/1.1 "Manrope",sans-serif}
.strip .l{font-size:12px;color:var(--ink-2);margin-top:2px}
.strip.six{grid-template-columns:repeat(3,1fr)}
.strip .v{display:flex;align-items:baseline;gap:6px}
.strip input{width:5ch;border:0;border-bottom:2px dashed var(--ink-3);border-radius:0;padding:0;background:transparent;font:inherit;color:inherit;font-variant-numeric:tabular-nums;transition:border-color .15s}
.strip input:focus-visible{box-shadow:none;border-bottom-color:var(--accent)}
.strip .pen{width:14px;height:14px;stroke:var(--ink-3);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;align-self:center}
input:focus-visible,select:focus-visible{outline:0;border-color:var(--accent)!important;box-shadow:0 0 0 3px var(--accent-soft)}
/* выпадающее меню */
.dd{position:relative}
#s-admin .list{overflow:visible}
.person:last-child .dd .menu,.person:nth-last-child(2) .dd .menu{top:auto;bottom:calc(100% + 6px)}
.person{position:relative}
.dd summary{list-style:none;display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:8px;padding:6px 10px 6px 12px;min-height:36px;background:var(--panel);font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap;transition:border-color .15s}
.dd summary::-webkit-details-marker{display:none}
.dd summary::after{content:"";width:12px;height:12px;background:no-repeat center/12px url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238E9894' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><path d='m6 9 6 6 6-6'/></svg>");transition:transform .15s}
.dd[open] summary{border-color:var(--accent)}
.dd[open] summary::after{transform:rotate(180deg)}
.dd summary:hover{border-color:var(--ink-3)}
.dd .menu{position:absolute;right:0;top:calc(100% + 6px);z-index:8;min-width:220px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:6px;box-shadow:0 10px 30px rgba(0,0,0,.18);display:grid;gap:2px}
.dd .menu button{display:flex;align-items:center;justify-content:space-between;width:100%;text-align:left;padding:8px 10px;border-radius:7px;font-size:13.5px;font-weight:500;transition:background .15s}
.dd .menu button:hover{background:var(--accent-soft);color:var(--accent)}
.dd .menu button[aria-checked="true"]{font-weight:600;color:var(--accent)}
.dd .menu button[aria-checked="true"]::after{content:"";width:14px;height:14px;background:no-repeat center/14px url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230E6F6C' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'><path d='m5 12 5 5 9-10'/></svg>")}
.dd .menu small{display:block;font-size:11px;color:var(--ink-3);font-weight:400;margin-top:1px;white-space:nowrap}
select{appearance:none;-webkit-appearance:none;border:1px solid var(--line);border-radius:8px;padding:6px 30px 6px 10px;background:var(--panel) no-repeat right 9px center/12px url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238E9894' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><path d='m6 9 6 6 6-6'/></svg>");color:var(--ink);font-size:13px;font-weight:600;cursor:pointer;min-height:36px;transition:border-color .15s}
select:hover{border-color:var(--ink-3)}
select option{background:var(--panel);color:var(--ink);font-weight:500}

.search{display:flex;align-items:center;gap:8px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:8px 12px;margin-top:10px}
.search{transition:border-color .15s,box-shadow .15s}
.search:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.search input{flex:1;border:0;background:none;outline:0;min-width:0}
.search input:focus-visible{box-shadow:none;outline:0}
.search svg{width:18px;height:18px;stroke:var(--ink-3);fill:none;stroke-width:2;stroke-linecap:round}

.list{background:var(--panel);border:1px solid var(--line);border-radius:10px;overflow:hidden}
.row{display:grid;grid-template-columns:1fr auto auto auto;gap:2px 14px;padding:11px 14px;border-top:1px solid var(--line);width:100%;text-align:left;align-items:center}
.row:first-child{border-top:0}
.row .t{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;grid-column:1/5;text-align:left;padding:0;display:block}
.row .t:hover{color:var(--accent)}
.row .s{font-size:12.5px;color:var(--ink-2);grid-column:1}
.row .st{grid-column:1/5;grid-row:2}
.row .meta{grid-column:1/5;grid-row:3;display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;font-size:12.5px;color:var(--ink-2)}
.row .ty{color:var(--ink-3)}
.row .dt{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border:1px dashed var(--line);border-radius:99px;color:var(--accent);font-weight:600;font-size:12.5px;white-space:nowrap}
.row .dt.set{border-style:solid;background:var(--accent-soft);border-color:transparent}
.row .dt svg{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round}
.row .ak{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;font-weight:600;color:var(--ink-2);white-space:nowrap}
.row .ak svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.row .ak.ok{color:var(--good)}
.row .ak.no{color:var(--warn)}
.row .ak.no:hover{text-decoration:underline}
.row .cw{display:inline-flex}
.row .cw b{width:28px;height:28px;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-size:11px;font-weight:700;display:grid;place-items:center;border:2px solid var(--panel);margin-left:-7px}
.row .cw b:first-child{margin-left:0}
.row .cw b.add{background:var(--panel);color:var(--ink-3);border:1px dashed var(--line);font-size:13px}
.row .k,.row .n,.row .r,.row .p{grid-row:4;text-align:right;font-family:"Manrope",sans-serif;font-weight:800;font-size:16px;white-space:nowrap}
.row .k small,.row .n small,.row .r small,.row .p small{display:block;font:500 11px/1.2 "IBM Plex Sans",sans-serif;color:var(--ink-3)}
.row .p{display:none}
.row.hdr{display:none}
.bar{grid-column:1/5;height:4px;border-radius:2px;background:var(--line);margin-top:6px;overflow:hidden;display:flex}
.bar i{display:block;height:100%;background:var(--accent)}
.bar i.iss{background:var(--warn)}
.bar.done i:first-child{background:var(--good)}
.bar.late i:first-child{background:var(--bad)}
.city{padding:8px 14px 6px;font-size:12px;font-weight:600;color:var(--ink-3);background:var(--bg);border-top:1px solid var(--line);display:flex;justify-content:space-between}
.city:first-child{border-top:0}
.pill{display:inline-block;font-size:11px;font-weight:600;padding:2px 7px;border-radius:99px;vertical-align:1px}
.row .st .pill{font-size:12.5px;padding:5px 11px;letter-spacing:.01em}
.pill.good{background:var(--good-soft);color:var(--good)}
.pill.warn{background:var(--warn-soft);color:var(--warn)}
.pill.bad{background:var(--bad-soft);color:var(--bad)}
.pill.acc{background:var(--accent-soft);color:var(--accent)}
.pill.mute{background:var(--line);color:var(--ink-2)}
.filters{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px;margin:0 -16px;padding-left:16px;padding-right:16px;scrollbar-width:none}
.filters button{flex:0 0 auto;border:1px solid var(--line);background:var(--panel);border-radius:99px;padding:5px 12px;font-size:13px;color:var(--ink-2)}
.filters button[aria-pressed="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}

/* week */
.crew{display:flex;flex-wrap:wrap;gap:6px}
.crew span{display:inline-flex;align-items:center;gap:8px;font-size:13px;padding:3px 11px 3px 3px;border:1px solid var(--line);border-radius:99px;background:var(--panel)}
.crew b{width:26px;height:26px;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-size:10.5px;font-weight:600;text-align:center;line-height:20px}
.assign{grid-column:1/5;display:flex;gap:8px;align-items:center;margin-top:8px;flex-wrap:wrap}
.btn{border-radius:8px;padding:8px 14px;font-weight:600;font-size:14px;border:1px solid var(--line);background:var(--panel);min-height:36px;transition:border-color .15s,background .15s}
.btn:hover{border-color:var(--ink-3)}
.btn.primary:hover{filter:brightness(1.08)}
.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.btn.sm{padding:5px 10px;font-size:13px}
.btn.on{background:var(--good-soft);color:var(--good);border-color:transparent}

/* неделя */
.wnav{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}
.wnav h2{font-size:18px;font-weight:800}
.wnav .btns{display:flex;gap:6px}
.wnav .btns button{width:34px;height:34px;border:1px solid var(--line);border-radius:8px;background:var(--panel);display:grid;place-items:center;font-size:18px;color:var(--accent);transition:border-color .15s}
.wnav .btns button:hover{border-color:var(--accent)}
.sched-wrap{overflow-x:auto;background:var(--panel);border:1px solid var(--line);border-radius:10px}
.sched{display:grid;grid-template-columns:150px repeat(7,minmax(104px,1fr));min-width:880px}
.sched > div{padding:8px 10px;border-top:1px solid var(--line);border-left:1px solid var(--line);font-size:12.5px;min-height:56px}
.sched > div:nth-child(8n+1){border-left:0;display:flex;align-items:center;gap:8px;font-weight:600;font-size:13.5px}
.sched > div:nth-child(-n+8){border-top:0;min-height:auto;background:var(--bg);font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);text-align:center}
.sched > div:nth-child(-n+8) b{display:block;font:800 15px "Manrope",sans-serif;color:var(--ink);letter-spacing:0}
.sched > div.tdy{background:var(--today)}
.sched .a{display:block;font-weight:500;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sched .m{display:block;color:var(--ink-2);font-size:12px}
.sched .m em{font-style:normal;font-weight:700;color:var(--ink);font-family:"Manrope",sans-serif}
.sched .we{color:var(--ink-3)}
.sched b[data-w]{width:30px;height:30px;border-radius:50%;font-size:11px;font-weight:700;display:grid;place-items:center;flex:0 0 auto}
.wtot{display:grid;grid-template-columns:auto 1fr auto;gap:0 10px;align-items:center;padding:9px 14px;border-top:1px solid var(--line);font-size:13.5px}
.wtot:first-child{border-top:0}
.wtot b[data-w]{width:30px;height:30px;border-radius:50%;font-size:11px;font-weight:700;display:grid;place-items:center}
.wtot .n{font-weight:500}.wtot .n small{display:block;font-size:12px;color:var(--ink-2)}
.wtot .v{font:800 17px "Manrope",sans-serif;font-variant-numeric:tabular-nums;text-align:right}
.wtot .v small{display:block;font:500 11px "IBM Plex Sans",sans-serif;color:var(--ink-3)}

/* house */
.back{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:6px 14px 6px 10px;margin-bottom:10px;border:1px solid var(--line);border-radius:99px;background:var(--panel);color:var(--ink);font-weight:600;font-size:14px;transition:border-color .15s,background .15s}
.back svg{width:16px;height:16px;stroke:var(--accent);fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}
.back:hover{border-color:var(--accent);background:var(--accent-soft)}
.head{padding:4px 0 12px}
.head h2{font-size:22px;font-weight:800;line-height:1.15}
.head .sub{color:var(--ink-2);margin-top:4px;font-size:13.5px}
.kv{background:var(--panel);border:1px solid var(--line);border-radius:10px}
.kv div{display:flex;justify-content:space-between;gap:12px;padding:9px 14px;border-top:1px solid var(--line);font-size:14px;align-items:center}
.kv div:first-child{border-top:0}
.kv span:first-child{color:var(--ink-2)}
.kv span:last-child{font-weight:500;text-align:right}
.kv input{width:72px;text-align:right;border:1px solid var(--line);border-radius:6px;padding:4px 8px;background:var(--bg);font-weight:600}
.tg{display:flex;align-items:center;gap:10px;padding:12px 14px;background:var(--panel);border:1px solid var(--line);border-radius:10px}
.tg .ic{width:36px;height:36px;border-radius:50%;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;font-weight:800;font-family:"Manrope",sans-serif;flex:0 0 auto}
.tg .tx{flex:1;min-width:0}
.tg .tx b{display:block;font-weight:600}
.tg .tx small{color:var(--ink-2);font-size:12.5px}

/* apartments grid */
.flats{display:grid;grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:5px}
.flats button,.flats a{aspect-ratio:1;border-radius:8px;border:1px solid var(--line);background:var(--panel);display:grid;place-content:center;gap:1px;font:600 13px/1 "Manrope",sans-serif;font-variant-numeric:tabular-nums}
.flats button small{font:500 9px/1 "IBM Plex Sans",sans-serif;color:var(--ink-3)}
.flats .ok{background:var(--good-soft);color:var(--good);border-color:transparent}
.flats .half{background:var(--accent-soft);color:var(--accent);border-color:transparent}
.flats .iss{background:var(--warn-soft);color:var(--warn);border-color:transparent}
.flats .ref{background:var(--bad-soft);color:var(--bad);border-color:transparent}
.legend{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12px;color:var(--ink-2);margin-top:8px}
.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.who{display:grid;grid-template-columns:auto 1fr auto;gap:0 12px;align-items:center;padding:10px 14px;border-top:1px solid var(--line)}
.who:first-child{border-top:0}
.who b{width:36px;height:36px;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-size:11px;font-weight:600;display:grid;place-items:center}
.who .n{font-weight:500}.who .d{font-size:12.5px;color:var(--ink-2);grid-column:2}
.who .v{grid-column:3;grid-row:1/3;font:800 18px/1 "Manrope",sans-serif}

/* apartment */
.pair{background:var(--panel);border:1px solid var(--line);border-radius:10px;overflow:hidden;margin-bottom:10px}
.pair .ph{display:flex;justify-content:space-between;align-items:center;padding:9px 14px;border-bottom:1px solid var(--line);font-size:13px}
.pair .ph b{font-weight:600}
.photo{position:relative;background:var(--photo);aspect-ratio:4/3;max-width:100%;display:grid;place-items:center;color:#9AA6A2;font-size:12.5px}
.photo .box{position:absolute;border:2px solid var(--accent);border-radius:3px}
.photo .box::after{content:attr(data-l);position:absolute;top:-16px;left:-2px;font-size:10px;font-weight:600;background:var(--accent);color:var(--accent-ink);padding:1px 5px;border-radius:3px}
.prompt{padding:10px 14px;font-size:13.5px;line-height:1.55;font-family:ui-monospace,"Cascadia Mono",Consolas,monospace;white-space:pre-wrap;color:var(--ink)}
.prompt .q{color:var(--ink-3)}
.hist{padding:8px 14px 12px;font-size:12.5px;color:var(--ink-2);border-top:1px solid var(--line)}
.hist div{padding:3px 0}

/* workers */
.wk{display:grid;grid-template-columns:auto 1fr auto;gap:0 12px;align-items:center;padding:12px 14px;border-top:1px solid var(--line);width:100%;text-align:left}
.wk:first-child{border-top:0}
.wk b.av{width:36px;height:36px;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-size:13px;font-weight:600;display:grid;place-items:center;grid-row:1/3}
.wk .n{font-weight:500}
.wk .s{font-size:12.5px;color:var(--ink-2);grid-column:2}
.wk .v{grid-column:3;grid-row:1/3;font:800 20px/1 "Manrope",sans-serif;text-align:right}
.wk .v small{display:block;font:500 11px/1.4 "IBM Plex Sans",sans-serif;color:var(--ink-3)}
.spark{display:flex;align-items:flex-end;gap:3px;height:96px;padding:12px 14px 0;background:var(--panel);border:1px solid var(--line);border-radius:10px 10px 0 0;border-bottom:0}
.spark div{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:stretch;height:100%;min-width:0}
.spark b{font:700 10px/1 "Manrope",sans-serif;text-align:center;color:var(--ink-2);margin-bottom:3px;font-variant-numeric:tabular-nums}
.spark i{display:block;background:var(--accent);border-radius:3px 3px 0 0;opacity:.9}
.spark i.off{background:var(--line);opacity:1}
.spark div.we i.off{background:transparent;border-bottom:2px solid var(--line)}
.sparkl{display:flex;justify-content:space-between;font-size:11px;color:var(--ink-3);padding:4px 14px 8px;background:var(--panel);border:1px solid var(--line);border-top:0;border-radius:0 0 10px 10px}
.note{font-size:12.5px;color:var(--ink-3);margin-top:10px}

nav{position:fixed;left:0;right:0;bottom:0;z-index:5;background:var(--panel);border-top:1px solid var(--line);padding:6px 0 calc(6px + env(safe-area-inset-bottom,0px))}
nav .in{max-width:480px;margin:0 auto;display:grid;grid-template-columns:repeat(4,1fr)}
nav button{display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 0;font-size:11px;font-weight:500;color:var(--ink-3)}
nav button svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
nav button[aria-current="page"]{color:var(--accent)}
.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(90px + env(safe-area-inset-bottom,0px));background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:10px;font-size:13.5px;max-width:calc(100% - 32px);box-shadow:0 6px 24px rgba(0,0,0,.25);z-index:9}
.toast[hidden]{display:none}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

/* календарь дат замены */
dialog{border:0;border-radius:14px;padding:0;overflow:visible;background:var(--panel);color:var(--ink);width:min(420px,calc(100% - 32px));box-shadow:0 20px 60px rgba(0,0,0,.35)}
dialog::backdrop{background:rgba(0,0,0,.45)}
.cal{padding:16px}
.cal h3{font-size:17px;font-weight:800}
.cal .sub{font-size:13px;color:var(--ink-2);margin:2px 0 12px}
.cal .mon{display:flex;justify-content:space-between;align-items:center;font-weight:600;margin-bottom:8px}
.cal .mon button{color:var(--accent);padding:4px 8px}
.grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.grid .wd{font-size:10.5px;color:var(--ink-3);text-transform:uppercase;letter-spacing:.05em;text-align:center;padding-bottom:4px}
.grid button{aspect-ratio:1;border-radius:8px;border:1px solid transparent;font:600 14px "Manrope",sans-serif;font-variant-numeric:tabular-nums;color:var(--ink)}
.grid button:hover{border-color:var(--line)}
.grid button.off{color:var(--ink-3);font-weight:500}
.grid button.we{color:var(--ink-2)}
.grid button.tdy{border-color:var(--warn)}
.grid button.on{background:var(--accent);color:var(--accent-ink)}
.grid button.busy{background:var(--line);color:var(--ink-2)}
.cal .who{display:flex;flex-wrap:wrap;gap:6px;padding:0;border:0}
.cal .who button{display:inline-flex;align-items:center;gap:6px;font-size:13px;padding:4px 10px 4px 4px;border:1px solid var(--line);border-radius:99px}
.cal .who button b{width:26px;height:26px;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-size:10px;font-weight:600;display:grid;place-items:center}
.cal .who button.on{background:var(--good-soft);border-color:transparent;color:var(--good)}
.cal .foot{display:flex;gap:8px;justify-content:flex-end;margin-top:14px}
/* форма */
.form{display:grid;grid-template-columns:1fr 1fr;gap:12px 10px}
.form label{display:grid;gap:5px;font-size:12px;font-weight:600;color:var(--ink-2)}
.form label.w{grid-column:1/3}
.form .dd summary{width:100%;justify-content:space-between;min-height:38px;font-size:14px;font-weight:500;background:var(--bg)}
.form .dd .menu{left:0;right:0;max-height:240px;overflow-y:auto;z-index:20}
.form .dd{position:relative}
.form label{position:relative}
.form label:has(.dd[open]){z-index:20}
.form input[type=text]{width:100%;min-height:38px;border:1px solid var(--line);border-radius:8px;padding:6px 10px;background:var(--bg);color:var(--ink);font:500 14px "IBM Plex Sans",sans-serif;transition:border-color .15s}
.form input:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:0}
.form input::placeholder{color:var(--ink-3);font-weight:400}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--bg)}
.seg button{padding:7px 14px;font-size:13.5px;font-weight:600;color:var(--ink-2);transition:background .15s}
.seg button[aria-pressed="true"]{background:var(--accent);color:var(--accent-ink)}
.form .hint{grid-column:1/3;font-size:12px;color:var(--ink-3);margin-top:-4px}
.form .num-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;grid-column:1/3}

/* графики */
.chart{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px 14px}
.chart h3{font-size:13px;font-weight:600;margin-bottom:8px;display:flex;justify-content:space-between;align-items:baseline}
.chart h3 small{font-weight:500;color:var(--ink-3);font-size:11px}
.months{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;align-items:end;height:110px}
.months div{display:flex;flex-direction:column;justify-content:flex-end;height:100%;gap:4px;text-align:center;font-size:11px;color:var(--ink-2)}
.months i{display:block;background:var(--accent);border-radius:4px 4px 0 0}
.months i.cur{background:var(--warn)}
.months b{font:800 13px "Manrope",sans-serif;color:var(--ink);font-variant-numeric:tabular-nums}
.cities div{display:grid;grid-template-columns:86px 1fr auto;gap:8px;align-items:center;font-size:12.5px;padding:4px 0}
.cities .b{height:8px;border-radius:4px;background:var(--line);overflow:hidden}
.cities .b i{display:block;height:100%;background:var(--accent)}
.cities .v{font:700 12px "Manrope",sans-serif;font-variant-numeric:tabular-nums;color:var(--ink-2)}
.ring{display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:center}
.ring svg{width:84px;height:84px}
.ring .lg{font-size:12.5px;color:var(--ink-2);display:grid;gap:3px}
.ring .lg i{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:6px;vertical-align:-1px}
.ring .lg b{font-family:"Manrope",sans-serif;font-variant-numeric:tabular-nums;color:var(--ink)}
.week7{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;align-items:end;height:70px}
.week7 div{display:flex;flex-direction:column;justify-content:flex-end;height:100%;text-align:center;font-size:10.5px;color:var(--ink-3)}
.week7 i{display:block;background:var(--accent);border-radius:3px 3px 0 0;opacity:.85}
.week7 i.off{background:var(--line)}
.week7 i.plan{background:repeating-linear-gradient(135deg,var(--accent-soft) 0 4px,transparent 4px 8px);border:1px dashed var(--accent);opacity:1}
.week7 b{font:700 11px "Manrope",sans-serif;color:var(--ink);margin-bottom:3px;font-variant-numeric:tabular-nums}
.week7 b.pl{color:var(--ink-3)}
.next{margin-top:12px;border-top:1px solid var(--line)}
.next div{display:grid;grid-template-columns:48px 1fr auto;gap:8px;align-items:center;padding:7px 0;border-top:1px solid var(--line);font-size:13px}
.next div:first-child{border-top:0}
.next .d{font:700 12px "Manrope",sans-serif;color:var(--accent);text-transform:uppercase}
.next .a{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.next .cw{display:inline-flex}
.next .cw b{width:28px;height:28px;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-size:11px;font-weight:700;display:grid;place-items:center;border:2px solid var(--panel);margin-left:-7px}
.next .cw b:first-child{margin-left:0}
.next .cw b.add{background:var(--warn-soft);color:var(--warn)}

/* кабинет */
.person{display:grid;grid-template-columns:auto 1fr auto;gap:2px 12px;align-items:center;padding:11px 14px;border-top:1px solid var(--line)}
.person:first-child{border-top:0}
.person .av{width:36px;height:36px;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-size:12px;font-weight:600;display:grid;place-items:center;grid-row:1/3}
.person .n{font-weight:500}
.person .s{font-size:12.5px;color:var(--ink-2);grid-column:2}
.person .dd{grid-column:3;grid-row:1/3}
.person .orgs2{grid-column:2/4;display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.person .orgs2 span{font-size:11px;padding:2px 8px;border-radius:99px;border:1px solid var(--line);color:var(--ink-2)}
.person .orgs2 span.on{background:var(--accent-soft);color:var(--accent);border-color:transparent}
.person.new .av{background:var(--warn-soft);color:var(--warn)}
.rights{font-size:12.5px;border-collapse:collapse;width:100%}
.rights th,.rights td{padding:6px 8px;border-top:1px solid var(--line);text-align:center}
.rights th{font-weight:600;color:var(--ink-2);font-size:11px;text-transform:uppercase;letter-spacing:.05em}
.rights td:first-child,.rights th:first-child{text-align:left}
.rights tr:first-child th{border-top:0}
.rights .y{color:var(--good);font-weight:700}
.rights .m{color:var(--ink-3)}
.rights .own{color:var(--accent);font-weight:600;font-size:11px}
.rights-wrap{overflow-x:auto;background:var(--panel);border:1px solid var(--line);border-radius:10px}
.botrow{display:grid;grid-template-columns:auto 1fr auto;gap:0 12px;align-items:center;padding:11px 14px;border-top:1px solid var(--line)}
.botrow:first-child{border-top:0}
.botrow .ic{width:36px;height:36px;border-radius:10px;background:var(--accent);color:var(--accent-ink);display:grid;place-items:center;font:800 12px "Manrope",sans-serif;grid-row:1/3}
.botrow .n{font-weight:500}.botrow .s{font-size:12.5px;color:var(--ink-2);grid-column:2}
.botrow .st{grid-column:3;grid-row:1/3}

/* ---- ноут и шире: меню слева, список таблицей ---- */
@media (min-width:900px){
  .phone{max-width:none;display:grid;grid-template-columns:224px minmax(0,1fr);grid-template-rows:auto 1fr;min-height:100vh}
  nav{position:sticky;top:0;grid-column:1;grid-row:1/3;height:100vh;border-top:0;border-right:1px solid var(--line);padding:18px 10px;display:flex;flex-direction:column}
  nav .in{display:flex;flex-direction:column;gap:2px;max-width:none;margin:0}
  nav .in .brand{display:flex;align-items:center;gap:10px;font:800 17px "Manrope",sans-serif;color:var(--ink);padding:0 12px 14px;text-decoration:none;background:none!important}
  nav button{flex-direction:row;gap:10px;padding:9px 12px;font-size:14px;border-radius:8px;justify-content:flex-start}
  nav button[aria-current="page"]{background:var(--accent-soft)}
  .top{grid-column:2;grid-row:1;position:sticky;top:0;z-index:6;padding:0 32px}
  #pin{position:sticky;top:var(--top-h,63px);z-index:5;box-shadow:0 8px 16px -12px rgba(0,0,0,.4)}
  .top .t1{padding:18px 0 8px}
  .top h1{font-size:24px}
  .orgs{padding:0}
  main{grid-column:2;grid-row:2;padding:20px 32px 40px;max-width:1180px;width:100%}
  .strip.six{grid-template-columns:repeat(6,1fr)}
  .filters{margin:0;padding:0}
  .strip .v{font-size:26px}
  .search{max-width:420px}
  #houses .row{grid-template-columns:minmax(170px,1.8fr) 100px minmax(110px,1fr) 118px 104px 84px 56px 68px 76px 64px minmax(70px,.7fr);gap:0 12px;padding:8px 14px;transition:background .15s}
  #houses .row:hover{background:color-mix(in srgb,var(--accent) 6%,var(--panel))}
  #houses .row.hdr:hover{background:var(--bg)}
  #houses .row .t{grid-column:1;grid-row:1}
  #houses .row .st{grid-column:2;grid-row:1;text-align:left}
  #houses .row .meta{display:contents}
  #houses .row .ty{grid-column:3;grid-row:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  #houses .row .dt{grid-column:4;grid-row:1;justify-self:start}
  #houses .row .cw{grid-column:5;grid-row:1}
  #houses .row .ak{grid-column:6;grid-row:1;justify-self:start}
  #houses .row .k,#houses .row .n,#houses .row .r,#houses .row .p{grid-row:1;font-size:15px}
  #houses .row .k{grid-column:7}#houses .row .n{grid-column:8}#houses .row .r{grid-column:9}#houses .row .p{grid-column:10;display:block}
  #houses .row .k small,#houses .row .n small,#houses .row .r small,#houses .row .p small{display:none}
  #houses .row .bar{grid-column:11;grid-row:1;margin:0;height:6px}
  #houses .row.hdr .ty,#houses .row.hdr .dt,#houses .row.hdr .cw,#houses .row.hdr .bt,#houses .row.hdr .ak{text-align:left;border:0;background:none;color:var(--ink-3);padding:0;font-weight:600;font-size:11px;letter-spacing:.06em}
  #houses .row.hdr .bar{background:none;height:auto;text-align:left}
  .dash{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:0 28px;align-items:start}
  .dash > aside{position:sticky;top:calc(var(--pin-bottom,170px) + 12px);max-height:calc(100vh - var(--pin-bottom,170px) - 24px);overflow-y:auto;padding-right:4px}
  .listwrap{display:flex;flex-direction:column;max-height:calc(100vh - 216px)}
  .listwrap #houses{overflow:auto;flex:1;min-height:0}
  #houses .row,#houses .city{min-width:1140px}
  #houses .city{position:sticky;left:0}
  .listwrap .note{flex:0 0 auto}
  #houses .row.hdr{position:sticky;top:0;z-index:2}
  main{max-width:1500px}
  #houses .row.hdr{display:grid;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);background:var(--bg);padding:8px 14px;align-items:start;border-bottom:1px solid var(--line)}
  #houses .row.hdr span{text-align:right;font-family:inherit;font-weight:600;font-size:11px;white-space:normal;line-height:1.2}
  #houses .row.hdr .t,#houses .row.hdr .s,#houses .row.hdr .st{text-align:left}
  .city{padding:6px 16px 4px}
  .cols{display:grid;grid-template-columns:1.2fr 1fr;gap:0 32px;align-items:start}
  .flats{grid-template-columns:repeat(auto-fill,minmax(44px,1fr))}
  .pair{max-width:560px}
  #s-crew{max-width:720px}
  #s-week .cols{grid-template-columns:1.5fr 1fr}
  #s-admin .cols{grid-template-columns:1.15fr 1fr;gap:0 28px}
  #s-admin .cols > div:nth-child(3){grid-column:2}
}
@media (min-width:1500px){
  main{max-width:none;padding:24px 44px 48px}
  .top{padding:0 44px}
  .dash{grid-template-columns:minmax(0,1fr) 380px;gap:0 36px}
  .strip .v{font-size:26px}
  #houses .row{grid-template-columns:minmax(230px,1.8fr) 108px minmax(150px,1fr) 136px 120px 96px 72px 84px 90px 80px minmax(120px,.8fr);padding:10px 18px;font-size:15px}
  .chart{padding:16px 18px}
  .months{height:140px}
  #s-admin .cols{grid-template-columns:1.2fr 1fr .9fr}
  #s-admin .cols > div:nth-child(3){grid-column:auto}
  #s-admin .strip{max-width:720px}
}
@media (min-width:1900px){
  body{font-size:16px}
  .dash{grid-template-columns:minmax(0,1fr) 460px;gap:0 44px}
  .strip .v,.strip.six .v{font-size:30px}
  .strip div{padding:14px 18px}
  #houses .row{padding:12px 20px}
  .flats{grid-template-columns:repeat(auto-fill,minmax(52px,1fr))}
}

/* ── живой сайт поверх макета ───────────────────────────────────────────── */
nav a,nav .soon{display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 0;font-size:11px;font-weight:500;color:var(--ink-3);text-decoration:none}
nav a svg,nav .soon svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
nav a[aria-current="page"]{color:var(--accent)}
nav .soon{opacity:.45;cursor:default}
.orgs a{flex:0 0 auto;padding:7px 12px 9px;font-size:13.5px;font-weight:500;color:var(--ink-2);border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;text-decoration:none}
.orgs a[aria-selected="true"]{color:var(--ink);border-bottom-color:var(--accent);font-weight:600}
summary.role{list-style:none}
summary.role::-webkit-details-marker{display:none}
#me{position:relative}
#me .menu{right:0;left:auto;min-width:200px}
#me .menu form{display:contents}
.form input[type=file]{width:100%;font-size:13px;color:var(--ink-2)}
.form input[type=file]::file-selector-button{border:1px solid var(--line);border-radius:8px;padding:7px 12px;background:var(--panel);color:var(--ink);font:600 13px "IBM Plex Sans",sans-serif;margin-right:10px;cursor:pointer}
.strip .v form{display:inline}
.row.flash{background:var(--accent-soft)}
.chip{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border:1px solid var(--line);border-radius:99px;background:var(--panel);font-size:12px;font-weight:500;color:var(--ink);white-space:nowrap;text-decoration:none;line-height:1.3}
a.chip:hover{border-color:var(--accent)}
.menu .hint{display:block;padding:8px 10px;font-size:12px;color:var(--ink-3)}
.menu-filter{width:100%;border:1px solid var(--line);border-radius:7px;padding:6px 9px;margin-bottom:4px;background:var(--bg);color:var(--ink);font-size:13px}
.menu-filter:focus-visible{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}

/* кружки людей и ботов — одинаковые, 28px; у меню (details) сбрасываем общие стили summary */
.av,.dd summary.av{width:28px;height:28px;min-height:0;padding:0;margin:0;border-radius:50%;border:2px solid var(--panel);background:var(--ws,var(--accent-soft));color:var(--wc,var(--accent));font:700 11px/1 "IBM Plex Sans",sans-serif;display:grid;place-items:center;gap:0;list-style:none;white-space:nowrap;cursor:default;flex:0 0 auto;box-sizing:border-box}
.dd summary.av::after,.dd summary.av::-webkit-details-marker{content:none;display:none}
button.av,summary.av{cursor:pointer}
button.av:hover,.dd summary.av:hover{filter:brightness(.92)}
.dd[open] summary.av{box-shadow:0 0 0 2px var(--accent)}
.av.add,.dd summary.av.add{background:var(--panel);color:var(--ink-3);border:1px dashed var(--ink-3);font-size:13px;font-weight:600}
.av.add.bot,.dd summary.av.add.bot{font-size:8.5px;letter-spacing:.02em}
.av.bot{margin-left:4px}
.av.mini{width:22px;height:22px;font-size:9px;margin:0 8px 0 0;border:0;display:inline-grid;vertical-align:middle}
[data-w="0"]{--wc:var(--w-vi);--ws:var(--w-vi-s)}
[data-w="1"]{--wc:var(--w-bv);--ws:var(--w-bv-s)}
[data-w="2"]{--wc:var(--w-sv);--ws:var(--w-sv-s)}
[data-w="3"]{--wc:var(--w-nk);--ws:var(--w-nk-s)}
[data-w="4"]{--wc:var(--w-ak);--ws:var(--w-ak-s)}
.row .cw{display:flex;align-items:center;gap:0;flex-wrap:nowrap}       /* одна строка: до трёх кружков, дальше «+N», бот последним */
.row .cw > * + *{margin-left:-8px}
.row .cw > .dd:has(> .add){margin-left:2px}
.row .cw > .dd:has(> .bot){margin-left:0}
.row .cw > details.more,.row .cw > b.more{display:none}   /* на телефоне кружки все, «+N» не нужен */
.menu .hint b{color:var(--ink);font-weight:600;font-size:13px}
.menu .hint.sep{border-top:1px solid var(--line);margin-top:4px;padding-top:10px}
.menu form.inline{display:contents}
.av.more,.dd summary.av.more{background:var(--panel);color:var(--ink-2);box-shadow:inset 0 0 0 1px var(--line);font-size:10px}
.row .mo .dd .menu{max-height:380px;overflow-y:auto}
@media (min-width:900px){
  .row .cw:has(> .cwp:nth-child(4)) > .cwp:nth-child(n+3){display:none}   /* .cwp: .p — колонка «проблем», .who — блок макета */
  .row .cw:has(> .cwp:nth-child(4)) > details.more{display:inline-flex}
  .row .cw:has(> .cwp:nth-child(4)) > b.more{display:grid}
}
.row .cw .dd,.row .bt .dd{display:inline-flex}
.row .cw .dd .menu,.row .bt .dd .menu{left:0;right:auto;min-width:240px;max-height:280px;overflow-y:auto}
.row .bt{display:inline-flex}
.dt.file{border-style:dashed;color:var(--ink-3);background:transparent}
button.dt{cursor:pointer}
button.dt:hover{border-color:var(--accent)}
.grid button.file{border:1px dashed var(--ink-3)}
button.ak{cursor:pointer;border:0;background:none;padding:0;font:inherit;font-size:12.5px;font-weight:600}
button.ak.no{color:var(--warn)}
button.ak:hover{text-decoration:underline}
.ak.no{color:var(--ink-3)}
.row .t small{display:none;font:500 12px/1.2 "IBM Plex Sans",sans-serif;color:var(--ink-3);margin-top:2px}

/* ── ноут и шире: таблица без боковой прокрутки ──────────────────────────── */
@media (min-width:900px){
  nav a,nav .soon{flex-direction:row;gap:10px;padding:9px 12px;font-size:14px;border-radius:8px;justify-content:flex-start}
  nav a[aria-current="page"]{background:var(--accent-soft)}
  .dash{display:block}
  .dash > aside{position:static;max-height:none;overflow:visible;display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:0 20px;align-items:start;margin-top:16px}
  .listwrap{display:block;max-height:none}
  .listwrap #houses{overflow:visible;max-height:none}
  #houses .row,#houses .city{min-width:0}
  #houses .city span:first-child{position:static}
  #houses .row{grid-template-columns:minmax(150px,2fr) 78px 110px 100px 36px 86px 50px 60px 50px minmax(64px,.6fr);gap:0 8px;padding:7px 12px;min-height:54px;align-items:center}
  #houses .row .bt{grid-column:5;grid-row:1}
  #houses .row .t{grid-column:1;grid-row:1;position:static;background:none;padding:0;white-space:normal;line-height:1.2;font-size:14px;display:flex;flex-direction:column}
  #houses .row .t > span{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  #houses .row .t small{display:block}
  #houses .row .st{grid-column:2;grid-row:1;text-align:center}
  #houses .row .meta{display:contents}
  #houses .row .ty,#houses .row .k{display:none}
  #houses .row .dt{grid-column:3;grid-row:1;justify-self:start}
  #houses .row .cw{grid-column:4;grid-row:1}
  #houses .row .ak{grid-column:6;grid-row:1;justify-self:start}
  #houses .row .n{grid-column:7}#houses .row .r{grid-column:8}#houses .row .p{grid-column:9;display:block}
  #houses .row .n,#houses .row .r,#houses .row .p{grid-row:1;font-size:15px}
  #houses .row .n small,#houses .row .r small,#houses .row .p small{display:none}
  #houses .row .bar{grid-column:10;grid-row:1;margin:0;height:6px}
  #houses .row.hdr{display:grid;position:sticky;top:var(--pin-bottom,180px);z-index:3;min-height:0;padding:8px 14px;align-items:start;background:var(--bg);border-bottom:1px solid var(--line);font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}
  #houses .row.hdr span{text-align:center;font-family:inherit;font-weight:600;font-size:11px;white-space:normal;line-height:1.2}
  #houses .row .k,#houses .row .n,#houses .row .r,#houses .row .p,#houses .row .rn{text-align:center}
  #houses .row:not(.hdr) .bar{align-self:center;width:56px;justify-self:center}
  #houses .row.hdr .st{text-align:center}
  #houses .row.hdr .t,#houses .row.hdr .dt,#houses .row.hdr .cw,#houses .row.hdr .bt,#houses .row.hdr .ak{text-align:left;border:0;background:none;color:var(--ink-3);padding:0;display:block}
  #houses .row.hdr .bar{background:none;height:auto;text-align:center}
  #houses .row.hdr .ty,#houses .row.hdr .k{display:none}
  #houses .row:hover{background:color-mix(in srgb,var(--accent) 6%,var(--panel))}
  #houses .row.hdr:hover{background:var(--bg)}
  ::-webkit-scrollbar{width:12px;height:12px}
}
/* широкий список: тип ПУ и всего ПУ своими колонками. Порог — по ширине самого
   списка, не окна: на широком мониторе справа стоят графики, и список уже, чем на 1500 */
.listwrap{container-type:inline-size}
@container (min-width:1150px){
  #houses .row{grid-template-columns:minmax(140px,2fr) 84px minmax(96px,1fr) 118px 100px 36px 88px 52px 60px 64px 58px minmax(64px,.5fr);gap:0 6px;padding:8px 14px}
  #houses .row .ty{display:block;grid-column:3;grid-row:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  #houses .row .t small{display:none}
  #houses .row .dt{grid-column:4}#houses .row .cw{grid-column:5}#houses .row .bt{grid-column:6}#houses .row .ak{grid-column:7}
  #houses .row .k{display:block;grid-column:8;grid-row:1;font-size:15px}#houses .row .k small{display:none}
  #houses .row .n{grid-column:9}#houses .row .r{grid-column:10}#houses .row .p{grid-column:11}#houses .row .bar{grid-column:12}
  #houses .row.hdr .ty,#houses .row.hdr .k{display:block}
  #houses .row.hdr .ty{text-align:center}
  #houses .row .ty{text-align:center}
}
/* совсем широкий: верх стоит на месте, прокручивается только список, графики справа от поиска */
@media (min-width:1800px) and (min-height:720px){
  .phone:has(> main.pinned){height:100vh}   /* только список адресов: карточке дома нужна обычная прокрутка */
  main.pinned{display:flex;flex-direction:column;min-height:0;overflow:hidden;padding-bottom:20px}
  #pin{position:static;box-shadow:none}
  .dash{display:grid;grid-template-columns:minmax(0,1fr) 360px;grid-template-rows:auto minmax(0,1fr);gap:0 32px;flex:1;min-height:0;align-items:stretch}
  .dash > .tools{grid-column:1;grid-row:1}
  .dash > .listwrap{grid-column:1;grid-row:2;display:flex;flex-direction:column;min-height:0}
  .listwrap #houses{flex:1;min-height:0;overflow-y:auto}
  .listwrap .note{flex:0 0 auto}
  #houses .row.hdr{top:0}
  .dash > aside{grid-column:2;grid-row:1/3;display:block;position:static;margin-top:0;overflow-y:auto;min-height:0;padding-right:4px}
  .dash > aside .eyebrow:first-child{margin-top:10px}
}

/* узкий ноут: плитки в два ряда, «заменено / нужно» одной ячейкой */
.row .rn{display:none}
@media (min-width:900px){
  #houses .row.hdr .bar{padding:0}
}
@media (min-width:900px) and (max-width:1199px){
  .strip.six{grid-template-columns:repeat(3,1fr)}
  #houses .row{grid-template-columns:minmax(130px,2fr) 88px 106px 96px 36px 82px 72px minmax(64px,.5fr);gap:0 8px}
  #houses .row .n,#houses .row .r,#houses .row .p,#houses .row.hdr .n,#houses .row.hdr .r,#houses .row.hdr .p{display:none}
  #houses .row .rn{display:block;grid-column:7;grid-row:1;text-align:center;font:800 15px "Manrope",sans-serif;white-space:nowrap}
  #houses .row.hdr .rn{font:600 11px "IBM Plex Sans",sans-serif;letter-spacing:.06em}
  #houses .row .bar{grid-column:8}
  #houses .row .dt{font-size:12px;padding:3px 8px}
}

/* ── правка в таблице, меню строки, удалённые ────────────────────────────── */
.row{position:relative}
#houses .row:not(.hdr){padding-right:44px}
.row .mo{position:absolute;top:8px;right:8px;height:28px}
.dd summary.more{border:0;background:none;padding:0;min-height:0;width:28px;height:28px;border-radius:50%;justify-content:center;color:var(--ink-3);font-size:15px;font-weight:700;letter-spacing:-.02em}
.dd summary.more::after{content:none}
.dd summary.more:hover,.dd[open] summary.more{background:var(--accent-soft);color:var(--accent)}
.dd[open] summary.more{box-shadow:none}
.row .mo .dd .menu{min-width:240px}
[data-edit]{cursor:text;border-radius:4px;outline-offset:2px}
[data-edit]:hover{background:color-mix(in srgb,var(--accent) 14%,transparent)}
[data-edit]:has(> input.cell){display:block;overflow:visible;-webkit-line-clamp:unset;background:none}
input.cell,.row.new input{width:100%;min-width:0;font:inherit;color:var(--ink);background:var(--bg);border:1px solid var(--accent);border-radius:6px;padding:2px 6px;box-shadow:0 0 0 3px var(--accent-soft)}
input.cell:focus-visible,.row.new input:focus-visible{box-shadow:0 0 0 3px var(--accent-soft);outline:0}
.row.new{background:var(--accent-soft)}
.row.new .t input{font-weight:500}
.row.new .dt{color:var(--ink-3);border-color:transparent;font-weight:500}
@media (min-width:900px){
  .row .mo{top:0;bottom:0;margin:auto 0;right:6px}   /* без transform: у меню position:fixed, transform сделал бы его точкой отсчёта */
  #houses .row.hdr,#houses .row:not(.hdr){padding-right:44px}   /* шапке тот же отступ под «···», иначе её колонки шире строк */
}
@media (min-width:900px) and (max-width:1199px){
  #houses .row.new .n{display:block;grid-column:7}
  #houses .row.new .rn{display:none}
}
/* строка списка — та же сетка, что у строк: итог стоит под «Прогресс» */
#houses .row.city .bar{margin:0;height:auto;background:none;flex:0 0 auto;font:inherit}
@media (min-width:900px){
  #houses .row.city{min-height:0;padding-top:6px;padding-bottom:4px;font-size:12px;font-weight:600;color:var(--ink-3);background:var(--bg)}
  #houses .row.city:hover{background:var(--bg)}
  #houses .row.city .t{font-size:12px;font-weight:600;color:var(--ink-3);display:block}
  #houses .row.city .bar{width:auto;justify-self:stretch;text-align:center;display:block;font:inherit;color:var(--ink-3)}
}

/* ── карточка дома ──────────────────────────────────────────────────────── */
a.pill{text-decoration:none}
a.pill:hover{filter:brightness(1.15)}
.dd .menu a{display:flex;align-items:center;width:100%;text-align:left;padding:8px 10px;border-radius:7px;font-size:13.5px;font-weight:500;color:var(--ink);text-decoration:none}
.dd .menu a:hover{background:var(--accent-soft);color:var(--accent)}
.row.iss,.row.who2,.row.rec{display:grid;grid-template-columns:auto 1fr;gap:2px 12px;align-items:center;padding:9px 14px}
.row.iss .t{grid-column:1;grid-row:1/3;font:800 15px "Manrope",sans-serif;min-width:34px}
.row.iss .pill{grid-column:2;justify-self:start}
.row.iss .s,.row.who2 .s,.row.rec .s{grid-column:2;font-size:12.5px;color:var(--ink-2)}
.row.who2 .av{grid-row:1/3;width:32px;height:32px}
.row.who2 .t{grid-column:2;grid-row:1}
.row.rec{grid-template-columns:1fr}
.row.rec .t,.row.rec .s{grid-column:1}
.row.rec.dim{opacity:.6}
.kv .inline{display:inline}
.kv .lnk{font-size:12px;color:var(--accent);margin-left:8px}
.kv .dd summary{min-height:30px;padding:4px 10px;font-size:12.5px}
.kv .dd .menu{max-height:280px;overflow-y:auto;min-width:280px}
#flat .list{max-height:60vh;overflow-y:auto;margin-top:8px}
@media (min-width:900px){
  .head h2{font-size:26px}
  .cols{margin-top:6px}
  .cols .strip{margin-bottom:6px}
}

/* ── квартира ─────────────────────────────────────────────────────────────── */
.flats a{aspect-ratio:1;border-radius:8px;border:1px solid var(--line);background:var(--panel);display:grid;place-content:center;gap:1px;font:600 13px/1 "Manrope",sans-serif;font-variant-numeric:tabular-nums;color:var(--ink);text-decoration:none}
.flats a small{font:500 9px/1 "IBM Plex Sans",sans-serif;color:var(--ink-3)}
.flats a:hover{border-color:var(--accent)}
.pairs{display:grid;gap:12px}
.pair.dim{opacity:.7}
.pair .photo{display:block;aspect-ratio:auto;max-height:70vh;overflow:hidden;background:var(--photo)}
.pair .photo img{display:block;width:100%;height:auto;max-height:70vh;object-fit:contain;background:#111}
.pair div.photo{aspect-ratio:4/3}
.pair .kv{border:0;border-radius:0}
@media (min-width:900px){
  .pairs{grid-template-columns:repeat(auto-fit,minmax(360px,1fr));max-width:1200px;align-items:start}
  .pair{margin:0}
}

/* квартира — повеселее: цвет по статусу, показания крупно */
.pair .ph b i{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:8px;vertical-align:-1px}
.pair.out .ph{background:var(--warn-soft)}.pair.out .ph b{color:var(--warn)}.pair.out .ph b i{background:var(--warn)}
.pair.in .ph{background:var(--good-soft)}.pair.in .ph b{color:var(--good)}.pair.in .ph b i{background:var(--good)}
.pair.out{border-color:color-mix(in srgb,var(--warn) 45%,var(--line))}
.pair.in{border-color:color-mix(in srgb,var(--good) 45%,var(--line))}
.pair .photo img{background:var(--panel)}
.pair .big{display:flex;justify-content:space-between;align-items:baseline;padding:10px 14px 4px;border-top:1px solid var(--line)}
.pair .big span{font-size:12px;color:var(--ink-2);text-transform:uppercase;letter-spacing:.06em}
.pair .big b{font:800 28px/1 "Manrope",sans-serif;font-variant-numeric:tabular-nums;color:var(--ink)}
.pair.in .big b{color:var(--good)}.pair.out .big b{color:var(--warn)}

/* ── неделя ───────────────────────────────────────────────────────────────── */
.wnav{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.wnav b{font:800 17px "Manrope",sans-serif;margin:0 6px}
.wnav .back{margin:0}
@media (min-width:900px){
  .week{max-width:980px}
}

/* длинный список не рисуем по частям: браузер показывал половину, потом скрипт прятал строки — «перерисовка» */
html.pre #houses{visibility:hidden}

/* ── бригада ──────────────────────────────────────────────────────────────── */
.seg a{padding:7px 14px;font-size:13.5px;font-weight:600;color:var(--ink-2);text-decoration:none}
.seg a[aria-pressed="true"]{background:var(--accent);color:var(--accent-ink)}

/* ── кабинет ──────────────────────────────────────────────────────────────── */
.person .orgs2 form{display:contents}
.person .orgs2 button{font-size:11px;padding:2px 8px;border-radius:99px;border:1px solid var(--line);color:var(--ink-2);background:var(--panel);cursor:pointer}
.person .orgs2 button.on{background:var(--accent-soft);color:var(--accent);border-color:transparent}
.person .orgs2 button:hover{border-color:var(--accent)}
.person .n small{font-size:11px;font-weight:500;color:var(--ink-3)}
.person .dd .menu{min-width:230px}
.person .pill.self{font-size:13px;padding:8px 12px}
.eyebrow .dd summary{padding:5px 14px 5px 11px;min-height:34px;border-radius:99px;font-size:13.5px}
.eyebrow .dd .menu{min-width:260px}
.eyebrow .dd .menu input.menu-filter{width:100%;border:1px solid var(--line);border-radius:8px;padding:7px 10px;background:var(--bg);margin-bottom:4px}
.eyebrow .dd .menu .btn{justify-content:center}
@media (min-width:900px){
  .cols.cab{grid-template-columns:1.15fr 1fr;gap:0 28px}
  .cols.cab > div:nth-child(3){grid-column:2}
}
@media (min-width:1500px){
  .cols.cab{grid-template-columns:1.2fr 1fr .9fr}
  .cols.cab > div:nth-child(3){grid-column:auto}
  .strip.cab{max-width:720px}
}
.cols.cab .list{overflow:visible}
.cols.cab .person .dd .menu{top:calc(100% + 6px);bottom:auto}
.rights td:first-child{width:44%}

/* ── верх списка: поиск, фильтры и импорт в одну строку ───────────────────── */
.tools{display:flex;flex-wrap:wrap;gap:8px 10px;align-items:center;margin:10px 0 12px}
.tools .search{margin:0;flex:1 1 260px;min-width:200px;position:relative}
.tools .filters{margin:0;padding:0;flex:1 1 auto}
.tools .imp{display:inline-flex;align-items:center;gap:7px;min-height:34px;border:1px solid var(--line);border-radius:99px;padding:5px 14px 5px 11px;background:var(--panel);color:var(--ink);font-size:13.5px;font-weight:600;white-space:nowrap;margin-left:auto}
.tools .imp:hover{border-color:var(--accent);background:var(--accent-soft)}
.tools .imp svg{width:15px;height:15px;stroke:var(--accent);fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}
.search .sugg{position:absolute;left:-1px;right:-1px;top:calc(100% + 4px);z-index:9;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:6px;box-shadow:0 10px 30px rgba(0,0,0,.18);display:grid;gap:2px}
.search .sugg[hidden]{display:none}
.search .sugg button{text-align:left;padding:7px 10px;border-radius:7px;font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.search .sugg button:hover{background:var(--accent-soft);color:var(--accent)}
#houses .row.empty .t{color:var(--ink-3);grid-column:1/-1}
#houses .city .t{white-space:nowrap}

#houses .row[hidden],#houses .city[hidden]{display:none!important}
#houses .city .t > .cnt{display:inline}

/* ── брак ─────────────────────────────────────────────────────────────────── */
#defects .dlist{margin-top:14px;max-height:40vh;overflow-y:auto}
#defects .row.rec{grid-template-columns:1fr auto}
#defects .row.rec .t{grid-column:1;white-space:normal}
#defects .row.rec .s{grid-column:1}
#defects .row.rec form{grid-column:2;grid-row:1/3}
#defects .lnk{font-size:18px;color:var(--ink-3);padding:0 6px}
#defects .lnk:hover{color:var(--bad)}
#defects .form .dd .menu button[aria-checked="true"]{color:var(--accent)}
.cities .v small{display:block;font:500 10.5px "IBM Plex Sans",sans-serif;color:var(--ink-3)}

@media (max-width:899px){.strip.six{grid-template-columns:1fr 1fr}}
@media (min-width:900px){
  #houses .row.city{display:grid}   /* та же сетка, что у строк: итог встаёт ровно под «Прогресс» */
  #houses .row.city .t{grid-column:1}
  #houses .row.city .bar{justify-self:center;width:auto}
}
/* список уже 786 px (окно ~1000): колонке прогресса места нет — полоса тонкой линией под строкой, как на телефоне.
   Порог по ширине списка, не окна: окно 1117 даёт странице 1093, и там восемь колонок ещё влезают */
@media (min-width:900px){ @container (max-width:785px){
  #houses .row{grid-template-columns:minmax(100px,2fr) 72px 110px 100px 30px 82px 72px;gap:0 7px}
  #houses .row.hdr .bar{display:none}
  #houses .row[data-status] .bar{grid-column:1/-1;grid-row:2;width:auto;justify-self:stretch;height:3px;margin-top:6px}
  #houses .row.city .bar{grid-column:7}
}}

/* кольцо договора в плитке: размер от самой плитки; узкая плитка ставит легенду под кольцо */
.strip div.ring{container-type:size;padding:0;display:block}
.strip .ring .rin{height:100%;display:grid;grid-template-columns:auto 1fr;gap:clamp(6px,4cqw,16px);align-items:center;padding:8px clamp(8px,5cqw,18px)}
.strip .ring svg{height:min(100cqh - 16px,28cqw);width:auto;aspect-ratio:1}
.strip .ring .lg{display:grid;gap:clamp(0px,2cqh,4px);font-size:clamp(11px,min(13cqh,4.6cqw),15px);line-height:1.25}
.strip .ring .lg span{white-space:nowrap}
.strip .ring .lg i{width:clamp(8px,8cqh,11px);height:clamp(8px,8cqh,11px)}
@container (max-width:205px){
  .strip .ring .rin{grid-template-columns:1fr;justify-items:center;align-content:center;gap:4px;padding:6px 8px}
  .strip .ring svg{height:min(44cqh,64px)}
  .strip .ring .lg{font-size:11px;gap:0}
}
@media (min-width:900px){#houses .row.hdr .bar{text-align:center;justify-content:center}}   /* заголовок над полосами и итогом, а не у левого края */
.kv .lnk.del{color:var(--ink-3);font-size:12px;margin-left:10px}
.kv .lnk.del:hover{color:var(--bad)}

/* ── кто снимал, бот по записям, год поверки, «заменено» руками ─────────── */
#houses .row .av.fact,#houses .row .av.bot.auto{box-shadow:inset 0 0 0 1.5px currentColor;opacity:.75}   /* не назначен — по записям */
.menu .hint .av.mini.fact{box-shadow:inset 0 0 0 1px currentColor}
#houses .row .ty small{display:block;font-size:11.5px;color:var(--ink-3);margin-top:1px}
#houses .row small.yr{display:table;margin:3px auto 0}
#houses .row small.yr,#houses .row b.yr{padding:1px 7px;border-radius:5px;background:var(--accent-soft);color:var(--accent);font:700 12px/1.3 "Manrope",sans-serif;font-variant-numeric:tabular-nums}   /* год поверки — заметно */
#houses .row .r .man{color:var(--warn);border-bottom:1px dashed currentColor}
/* ── спокойные кнопки диалогов, календарь, переключатель, подсказки ──────── */
.btn{min-height:32px;padding:6px 14px;font-size:13.5px;border-color:transparent;background:transparent;color:var(--ink-2)}
.btn:hover{border-color:transparent;background:var(--line);color:var(--ink)}
.btn.primary{background:var(--accent-soft);color:var(--accent);border-color:transparent}
.btn.primary:hover{filter:none;background:var(--accent);color:var(--accent-ink)}
.cal .foot{gap:4px}
.seg button[aria-pressed="true"],.seg a[aria-pressed="true"]{background:var(--accent-soft);color:var(--accent)}
.grid{gap:3px}
.grid button{aspect-ratio:auto;height:36px;font-size:13.5px}
.grid button.on{background:var(--accent-soft);color:var(--accent)}
.cal .mon button{width:30px;height:30px;border-radius:8px;font-size:18px;line-height:1;padding:0}
.cal .mon button:hover{background:var(--accent-soft)}
.strip .v .tile{display:flex;align-items:baseline;gap:6px;cursor:pointer;color:inherit;font:inherit;padding:0}
.strip .v .tile:hover .pen{stroke:var(--accent)}
.tip{position:fixed;z-index:50;max-width:280px;padding:6px 10px;border-radius:8px;background:var(--panel);color:var(--ink);border:1px solid var(--line);box-shadow:0 8px 24px rgba(0,0,0,.25);font-size:12.5px;line-height:1.35;pointer-events:none}
.tip[hidden]{display:none}
.row .cw .menu b.av.mini{display:inline-grid;width:22px;height:22px;margin:0 8px 0 0;border:0;font-size:9px}   /* иначе .row .cw b: кружок над именем */
/* ── календарь: выходные и праздники красным ──────────────────────────── */
.grid button.we{color:var(--bad)}
.grid button.we.on{color:var(--accent)}

/* ── неделя: дни строками, дома карточками ─────────────────────────────── */
.wstrip{margin-bottom:14px}
.wday{display:grid;grid-template-columns:78px 1fr;border:1px solid var(--line);border-radius:10px;background:var(--panel);margin-bottom:8px;overflow:hidden}
.wday .dd0{padding:10px 12px;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:1px}
.wday .dd0 .w{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3)}
.wday .dd0 .d{font:800 24px/1 "Manrope",sans-serif}
.wday .dd0 .m{font-size:12px;color:var(--ink-2)}
.wday .dd0 .h{font-size:11px;line-height:1.25;color:var(--bad);margin-top:4px}
.wday.off .dd0 .w,.wday.off .dd0 .d{color:var(--bad)}
.wday.today{border-color:var(--accent)}
.wday.today .dd0{background:var(--accent-soft)}
.wday .body{padding:8px;display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:8px;align-content:start}
.wday .empty{padding:0 6px;align-self:center;font-size:13px;color:var(--ink-3)}
.wc{display:grid;grid-template-columns:minmax(0,1fr);gap:6px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--ink);text-decoration:none;transition:border-color .15s}
.wc:hover{border-color:var(--accent)}
.wc .hd{display:flex;justify-content:space-between;align-items:start;gap:8px}
.wc .a{font-weight:600;font-size:13.5px;line-height:1.3}
.wc .ft{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:12.5px;color:var(--ink-2)}
.wc .ft b{font:800 15px "Manrope",sans-serif;color:var(--ink);font-variant-numeric:tabular-nums}
.wc .cw{display:inline-flex;align-items:center}
.wc .cw .av{width:24px;height:24px;border-radius:50%;font-size:9.5px;font-weight:700;display:grid;place-items:center;border:2px solid var(--bg)}
.wc .cw .av + .av{margin-left:-6px}
.wc .cw .no{color:var(--warn)}
.wc .bar{grid-column:auto;margin:0}
@media (max-width:599px){.wday{grid-template-columns:1fr}.wday .dd0{flex-direction:row;align-items:baseline;gap:8px;border-right:0;border-bottom:1px solid var(--line)}}
.wnav.wkn{justify-content:flex-start}
.wnav a{text-decoration:none}
.strip .l a{color:var(--accent)}
/* ── шрифты плиток крупнее ─────────────────────────────────────────────── */
.strip .l{font-size:13.5px;line-height:1.35}
@media (min-width:1500px){.strip .l{font-size:14.5px}}
.form label{font-size:13px}

/* ── поле с подсказками ────────────────────────────────────────────────── */
.combo{position:relative;display:block}
.combo .menu{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:30;max-height:204px;overflow-y:auto;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:4px;box-shadow:0 12px 32px rgba(0,0,0,.3);display:block}
.combo .menu[hidden]{display:none}
.combo .menu button{display:block;width:100%;text-align:left;padding:8px 10px;border-radius:7px;font-size:14px;font-weight:500;color:var(--ink)}
.combo .menu button:hover,.combo .menu button.on{background:var(--accent-soft);color:var(--accent)}
.combo .menu button[hidden]{display:none}

/* ── бригада: фильтры, карточки людей ─────────────────────────────────── */
.cfl{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px}
.cfl .seg a,.cfl .seg button{display:inline-flex;align-items:center;gap:6px}
.cfl .seg svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.cfl .dd summary{min-height:34px}
.cfl .dd .menu a{display:flex;justify-content:space-between;align-items:center;padding:8px 10px;border-radius:7px;font-size:13.5px;color:var(--ink);text-decoration:none}
.cfl .dd .menu a:hover{background:var(--accent-soft);color:var(--accent)}
.cfl .dd .menu a[aria-checked="true"]{color:var(--accent);font-weight:600}
.cfl + .strip{margin-bottom:12px}
.crew-grid{display:grid;gap:12px}
.person-card{background:var(--panel);border:1px solid var(--line);border-radius:10px;overflow:hidden}
.person-card[hidden]{display:none}
.person-card .wk{border-top:0}
.person-card .pst{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line)}
.person-card .pst span{padding:8px 14px;font-size:12px;color:var(--ink-3);border-left:1px solid var(--line)}
.person-card .pst span:first-child{border-left:0}
.person-card .pst b{display:block;font:800 16px/1.2 "Manrope",sans-serif;color:var(--ink);font-variant-numeric:tabular-nums}
.person-card .kv{border:0;border-radius:0;border-top:1px solid var(--line)}
.person-card .kv div{font-size:13.5px;padding:7px 14px}
.person-card .kv a{color:var(--ink);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.person-card .kv a:hover{color:var(--accent)}
.person-card .kv summary{padding:7px 14px;font-size:13px;color:var(--accent);cursor:pointer;list-style:none}
.person-card .kv details[open] summary{display:none}
.person-card .kv .eyebrow-line{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);padding:8px 14px 2px;border-top:0}
.person-card .plan{background:var(--bg)}
@media (min-width:900px){.crew-grid{grid-template-columns:repeat(auto-fill,minmax(380px,1fr));align-items:start}}

/* ── календарь: период, год в шапке ───────────────────────────────────── */
.grid button.mid{background:var(--accent-soft);color:var(--accent);border-radius:0}
.grid .wd.we{color:var(--bad)}
.cal .cal-m b{font-weight:800;color:var(--accent)}
#rng .hint{font-size:13px;color:var(--ink-2);margin-top:10px}

/* ── иконки: база без веса — правила разделов главнее ─────────────────── */
:where(svg.i){width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:0 0 auto}
.dd .menu span > svg.i{width:16px;height:16px;margin-right:9px;vertical-align:-3px;color:var(--ink-3);transition:color .15s}
.dd .menu :hover > span > svg.i{color:var(--accent)}
.dd .menu .bad:hover{background:var(--bad-soft);color:var(--bad)}
.dd .menu .bad:hover svg.i{color:var(--bad)}
.icons{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px}
.icons div{display:grid;justify-items:center;gap:8px;padding:16px 8px;background:var(--panel);border:1px solid var(--line);border-radius:10px;font-size:12px;color:var(--ink-2)}
.icons svg.i{width:26px;height:26px;color:var(--ink)}
.person-card .kv .fold{display:flex;align-items:center;gap:6px;padding:7px 14px;font-size:13px;color:var(--accent)}
.person-card .kv .fold svg.i{width:14px;height:14px}
.wc .pill{white-space:nowrap;flex:0 0 auto}

/* ── шапка: вкладки организаций на месте заголовка ─────────────────────── */
.top .t1 .orgs{order:3;flex:0 0 100%;margin:0 -16px}     /* телефон: вкладки своей строкой под заголовком */
.top .t1:has(.orgs){flex-wrap:wrap;padding-bottom:0}
@media (min-width:900px){
  .top .t1:has(.orgs){flex-wrap:nowrap;align-items:flex-end;padding:10px 0 0}
  .top .t1:has(.orgs) h1{display:none}                     /* раздел и так подсвечен в меню слева */
  .top .t1 .orgs{order:0;flex:1 1 auto;margin:0;min-width:0}
  .top .t1:has(.orgs) #me{margin-bottom:8px;order:2}
}
a.back{text-decoration:none}

/* ── строка инструментов одной высоты, крестик в поиске, вкладки крупнее ─ */
.tools .search{min-height:36px;padding:0 6px 0 12px;border-radius:99px}
.tools .search input{height:34px;font-size:14px}
.tools .filters button,.tools .imp{min-height:36px;padding-top:0;padding-bottom:0;display:inline-flex;align-items:center;font-size:13.5px}
.tools .filters{align-self:center}
.search .clr{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;color:var(--ink-3);flex:0 0 auto}
.search .clr[hidden]{display:none}
.search .clr:hover{background:var(--line);color:var(--ink)}
.search .clr svg.i{width:14px;height:14px;stroke:currentColor;stroke-width:2.2}
.top .orgs a{font-size:15.5px;padding:10px 14px 12px}
#defects h3{margin-bottom:12px}

/* ── шапка таблицы: обычный регистр, одна строка, по центру высоты ──────── */
@media (min-width:900px){
  #houses .row.hdr{align-items:center;min-height:40px;padding-top:6px;padding-bottom:6px}
  #houses .row.hdr span,#houses .row.hdr .ty,#houses .row.hdr .dt,#houses .row.hdr .cw,#houses .row.hdr .bt,#houses .row.hdr .ak{text-transform:none;letter-spacing:0;font-size:12.5px;font-weight:600;color:var(--ink-3);white-space:nowrap;line-height:1.25}
  #houses .row.hdr .rn{white-space:normal;font:600 12.5px/1.25 "IBM Plex Sans",sans-serif;letter-spacing:0}
}

/* ── правка ячейки: текст на месте, только линия снизу ───────────────── */
input.cell{background:transparent;border:0!important;border-bottom:1.5px solid var(--accent)!important;border-radius:0;padding:0 0 1px;box-shadow:none!important;outline:0;text-align:inherit;font-weight:inherit}
input.cell::selection{background:var(--accent-soft);color:var(--accent)}
.num input.cell{width:6ch;display:block;margin:0 auto}

/* ── выделенная строка: подложка и полоса слева; ячейка при наведении не подсвечивается ── */
[data-edit]:hover{background:none}
#houses .row.sel,#houses .row.sel:hover{background:color-mix(in srgb,var(--accent) 12%,var(--panel));box-shadow:inset 3px 0 0 var(--accent)}
#houses .row.flash{background:none}

/* ── знак проекта ─────────────────────────────────────────────────────── */
nav .brand{display:none}
svg.logo{width:24px;height:24px;flex:0 0 auto;fill:none;stroke:var(--accent);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

/* ── меню слева и вкладки организаций: подложка и подчёркивание едут к выбранному.
   Едут по щелчку ещё на этой странице (JS), переход — после: межстраничная анимация
   ждала, пока новая страница целиком отрисуется, и тормозила. До JS — обычная подсветка. */
.navpill,.orgline{display:none}
.orgs a{transition:color .2s}
.orgs a:not([aria-selected="true"]):hover{color:var(--ink)}
.orgs.slid{position:relative}
.orgs.slid a[aria-selected="true"]{border-bottom-color:transparent}
.orgs.slid .orgline{display:block;position:absolute;left:0;bottom:0;height:2px;border-radius:2px;background:var(--accent);pointer-events:none;transition:transform .22s cubic-bezier(.2,.8,.2,1),width .22s cubic-bezier(.2,.8,.2,1);will-change:transform}
@media (min-width:900px){
  nav .in{position:relative}
  nav a{position:relative;z-index:1;transition:background-color .2s,color .2s}
  nav a:not([aria-current]):hover{background:color-mix(in srgb,var(--accent) 7%,transparent);color:var(--ink)}
  nav a svg{transition:transform .2s ease}
  nav a:not(.brand):hover svg{transform:translateX(2px)}
  nav .in.slid a[aria-current="page"]{background:none}
}
nav .in{position:relative}
nav a{position:relative;z-index:1}
nav .in.slid .navpill{display:block;position:absolute;top:0;left:0;border-radius:8px;background:var(--accent-soft);pointer-events:none;transition:transform .22s cubic-bezier(.2,.8,.2,1),height .22s,width .22s;will-change:transform}
@media (max-width:899px){                  /* телефон: подложка — «таблетка» под иконкой и подписью, нажатие чуть проседает */
  nav .in.slid .navpill{border:5px solid transparent;border-left-width:18px;border-right-width:18px;background-clip:padding-box;border-radius:16px}
  nav a svg{transition:transform .15s}
  nav a:active svg{transform:scale(.88)}
}

/* ── плитки на телефоне везде по две: «Неделя» и «Бригада» были по четыре и скакали ── */
@media (max-width:899px){.strip,.strip.four,.strip.six{grid-template-columns:1fr 1fr}}

/* ── ноут 900–1199: плитки в два ряда — не липнут, иначе съедают пол-экрана списка ── */
@media (min-width:900px) and (max-width:1199px){#pin{position:static;box-shadow:none}}

/* ── графики под списком: каждый блок — подпись и график вместе ── */
.dash > aside > section > .eyebrow:first-child{margin-top:18px}

/* ── шапка на телефоне: заголовок уходит, вкладки рядом с кружком пользователя ── */
@media (max-width:899px){
  .top .t1:has(.orgs){flex-wrap:nowrap;align-items:flex-end;padding:8px 16px 0}
  .top .t1:has(.orgs) h1{display:none}
  .top .t1 .orgs{order:0;flex:1 1 auto;margin:0;min-width:0;padding:0}
  .top .t1:has(.orgs) #me{order:2;margin-bottom:6px}
  .top .orgs a{font-size:14.5px;padding:8px 10px 10px}
  #me summary.role > span{display:none}
  #me summary.role{padding:3px;min-height:0}
  #me summary.role::after{display:none}
}

/* ── инструменты на телефоне: поиск и импорт иконкой в строку, фильтры переносом ── */
@media (max-width:899px){
  .tools{flex-wrap:wrap}
  .tools .search{order:0;flex:1 1 0;min-width:0}
  .tools .imp{order:1;padding:0;width:36px;justify-content:center}
  .tools .imp span{display:none}
  .tools .imp svg{margin:0}
  .tools .filters{order:2;flex:1 1 100%;flex-wrap:wrap;overflow:visible;margin:0;padding:0}
}

/* ── строка адреса на телефоне: адрес и статус, тип с годом, дата-бригада-бот-ведомость, цифры в ряд ── */
@media (max-width:899px){
  #houses .row[data-status]{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px 10px;padding:12px 44px 12px 14px}
  #houses .row[data-status] .t{grid-column:1/4;grid-row:1;white-space:normal}
  #houses .row[data-status] .t small{display:block;margin-top:4px}
  #houses .row[data-status] .st{grid-column:4;grid-row:1;justify-self:end;align-self:start}
  #houses .row[data-status] .st .pill{font-size:11.5px;padding:3px 8px}
  #houses .row[data-status] .meta{grid-row:2;grid-column:1/-1}
  #houses .row[data-status] .meta .ty{display:none}
  #houses .row[data-status] .k,#houses .row[data-status] .n,#houses .row[data-status] .r,#houses .row[data-status] .p{grid-row:3;display:block;text-align:left;font-size:17px}
  #houses .row[data-status] .k{grid-column:1}#houses .row[data-status] .n{grid-column:2}#houses .row[data-status] .r{grid-column:3}#houses .row[data-status] .p{grid-column:4}
  #houses .row[data-status] .bar{grid-row:4;grid-column:1/-1;margin:0}
  #houses .row[data-status] .mo{top:10px}
  .num input.cell{margin:0}
}

html.busy,html.busy *{cursor:progress!important}

/* ── бригада: раскрытые адреса прокручиваются внутри карточки, карточка не вытягивается ── */
.person-card .kv .more-list{display:block;padding:0;max-height:208px;overflow-y:auto;border-top:1px solid var(--line);scrollbar-width:thin}
.person-card .kv .more-list > div:first-child{border-top:0}

/* ── выбор файла ───────────────────────────────────────────────────────── */
.filebox{grid-column:1/3;display:grid;gap:5px}
.filebox .lbl{font-size:13px;font-weight:600;color:var(--ink-2)}
.drop{display:flex;align-items:center;gap:12px;padding:10px;border:1.5px dashed var(--line);border-radius:10px;background:var(--bg);transition:border-color .15s,background .15s}
.drop .btn{display:inline-flex;align-items:center;gap:7px;background:var(--panel);border:1px solid var(--line);color:var(--ink);flex:0 0 auto}
.drop .btn:hover{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}
.drop .fname{font-size:13px;color:var(--ink-3);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.drop.over{border-color:var(--accent);background:var(--accent-soft)}
.drop.has{border-style:solid;border-color:color-mix(in srgb,var(--good) 50%,var(--line))}
.drop.has .fname{color:var(--good);font-weight:600;animation:fin .25s ease}
.drop.has .fname::before{content:"✓ "}
.drop.need{border-color:var(--bad);animation:shake .3s}
.drop.need .fname{color:var(--bad)}
@keyframes fin{from{opacity:0;transform:translateY(3px)}}
@keyframes shake{25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}
.btn:active{transform:scale(.97)}
.btn.wait{opacity:.75;pointer-events:none}

/* ── переключатель периода: иконки, подсветка едет к выбранному ─────────── */
.segpill{display:none}
.cfl .seg{position:relative}
.cfl .seg a,.cfl .seg button{position:relative;z-index:1;transition:color .2s}
.cfl .seg a:not([aria-pressed="true"]):hover,.cfl .seg button:not([aria-pressed="true"]):hover{color:var(--ink)}
.cfl .seg svg.i{width:15px;height:15px;opacity:.8}
.cfl .seg.slid a[aria-pressed="true"],.cfl .seg.slid button[aria-pressed="true"]{background:none}
.cfl .seg.slid .segpill{display:block;position:absolute;top:0;left:0;background:var(--accent-soft);pointer-events:none;transition:transform .22s cubic-bezier(.2,.8,.2,1),width .22s cubic-bezier(.2,.8,.2,1);will-change:transform}

/* ── плитки «Бригады»: иконка, кружки людей, столбики по дням, лидер ────── */
.strip.ctiles{grid-template-columns:repeat(3,1fr)}
.ctiles > div{position:relative}
.ctiles svg.ic{position:absolute;top:16px;right:18px;width:22px;height:22px;color:var(--ink-3);opacity:.55}
.ctiles .avs{display:flex;margin-top:10px}
.ctiles .avs .av{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-size:10.5px;font-weight:700;border:2px solid var(--panel)}
.ctiles .avs .av + .av{margin-left:-7px}
.ctiles .bars{display:flex;align-items:flex-end;gap:2px;height:34px;margin-top:10px}
.ctiles .bars i{flex:1;background:var(--accent);opacity:.85;border-radius:2px 2px 0 0;transition:opacity .15s}
.ctiles .bars i:hover{opacity:1;background:var(--good)}
.ctiles .lead{display:flex;align-items:center;gap:8px;margin-top:10px;font-size:13px;color:var(--ink-2)}
.ctiles .lead .av{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-size:10px;font-weight:700;flex:0 0 auto}
@media (max-width:899px){.strip.ctiles{grid-template-columns:1fr 1fr}.strip.ctiles > div:nth-child(2){grid-column:1/-1;order:-1}}
.ctiles .bars i.z{background:var(--line);height:2px!important;opacity:1}

/* плитки «Бригады»: люди с числами вместо пустых кружков, темп — по каждому */
.strip.ctiles{grid-template-columns:minmax(0,1fr) minmax(0,1.5fr) minmax(0,1.3fr)}
.ctiles .ppl{display:grid;gap:6px;margin-top:10px}
.ctiles .ppl > span{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;font-size:13px;color:var(--ink-2)}
.ctiles .ppl .av{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:9.5px;font-weight:700}
.ctiles .ppl em{font-style:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ctiles .ppl strong{font:800 14px "Manrope",sans-serif;color:var(--ink);font-variant-numeric:tabular-nums}
.ctiles .ppl .more{display:block;font-size:12px;color:var(--ink-3);padding-left:32px}
.ctiles .ppl.rate > span{grid-template-columns:auto minmax(60px,.9fr) minmax(40px,1fr) auto}
.ctiles .ppl.rate i{height:5px;border-radius:3px;background:var(--line);overflow:hidden;display:block}
.ctiles .ppl.rate u{display:block;height:100%;background:var(--accent);border-radius:3px}
@media (max-width:899px){.strip.ctiles{grid-template-columns:1fr}}

/* ── плитки «Недели»: дни недели, прогресс, столбики, адреса без дат ────── */
.wtiles > div{position:relative}
.wtiles svg.ic{position:absolute;top:16px;right:18px;width:22px;height:22px;color:var(--ink-3);opacity:.55}
.wtiles .wdays{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-top:10px}
.wtiles .wdays a{display:grid;justify-items:center;gap:1px;padding:4px 0;border-radius:6px;background:var(--bg);text-decoration:none;color:var(--ink);transition:background .15s}
.wtiles .wdays a:hover{background:var(--accent-soft)}
.wtiles .wdays small{font-size:10px;text-transform:uppercase;color:var(--ink-3)}
.wtiles .wdays b{font:800 14px "Manrope",sans-serif;font-variant-numeric:tabular-nums}
.wtiles .wdays a.none b{color:var(--ink-3);font-weight:600}
.wtiles .wdays a.off small{color:var(--bad)}
.wtiles .wdays a.tdy{box-shadow:inset 0 0 0 1px var(--accent)}
.wtiles .wprog{display:grid;gap:6px;margin-top:12px}
.wtiles .wprog i{display:block;height:8px;border-radius:4px;background:var(--line);overflow:hidden}
.wtiles .wprog u{display:block;height:100%;border-radius:4px;background:var(--good)}
.wtiles .wprog em{font-style:normal;font-size:12.5px;color:var(--ink-2)}
.wtiles .wbars{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;height:48px;margin-top:10px}
.wtiles .wbars > span{display:flex;flex-direction:column;justify-content:flex-end;align-items:stretch;gap:3px}
.wtiles .wbars i{display:block;background:var(--good);border-radius:2px 2px 0 0;opacity:.85}
.wtiles .wbars i.z{height:2px!important;background:var(--line);opacity:1}
.wtiles .wbars small{font-size:10px;text-transform:uppercase;text-align:center;color:var(--ink-3)}
.wtiles .wbars small.off{color:var(--bad)}
.wtiles .wlist{display:grid;gap:3px;margin-top:10px;font-size:12.5px}
.wtiles .wlist a{color:var(--ink-2);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wtiles .wlist a:hover{color:var(--accent)}
.wtiles .wlist a.all{color:var(--accent);margin-top:2px}
@media (max-width:899px){.strip.wtiles{grid-template-columns:1fr 1fr}}
@media (max-width:599px){.strip.wtiles{grid-template-columns:1fr}}
@media (min-width:900px) and (max-width:1399px){.strip.wtiles{grid-template-columns:1fr 1fr}}
.ctiles .man{display:block;margin-top:8px;font-size:12px;color:var(--warn)}
.person-card .kv span small{font-weight:500;color:var(--ink-3)}
.person-card .kv span em{font-style:normal;font-weight:500;font-size:12px;color:var(--ink-3)}
