body{font-family:var(--font);color:var(--ink);background:var(--paper)}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer;border:0}:root{--blue:#5d81a9}.shell{display:flex;width:100%;max-width:100%;min-height:100vh}.side{width:224px;background:var(--navy);color:#eaf3ef;padding:28px 16px 22px;display:flex;flex-direction:column;gap:40px;flex-shrink:0}.brand{font-size:25px;font-weight:850;letter-spacing:-1.5px}.brand span{color:var(--yellow)}.brand-block p{margin:6px 0 0;color:#9bb5b3;font-size:12px}.nav{display:grid;gap:5px}.nav button{display:flex;align-items:center;gap:12px;background:transparent;color:#abc2bf;text-align:left;padding:12px;border-radius:var(--r-m);font-size:14px}.nav button.active,.nav button:hover{background:var(--navy-2);color:#fff}.side-footer{margin-top:auto;border-top:1px solid var(--navy-2);padding:17px 5px 0;display:flex;align-items:center;gap:10px;font-size:12px}.side-footer strong,.side-footer small{display:block}.side-footer small{color:#8eaaa7;margin-top:4px}.status-dot{width:8px;height:8px;border-radius:50%;background:#69c499;box-shadow:0 0 0 4px var(--navy-2)}.main{width:100%;max-width:none;min-width:0;padding:clamp(16px,2.2vw,34px) max(var(--gutter),env(safe-area-inset-right)) clamp(24px,3vw,52px) max(var(--gutter),env(safe-area-inset-left))}.eyebrow{text-transform:uppercase;letter-spacing:1.3px;color:var(--teal);font-size:10px;font-weight:800}.accent{color:var(--coral-ink)}.stat-coral .stat-yellow .quick{display:flex;gap:8px;align-items:center}.quick input{border:1px solid var(--line);padding:12px;border-radius:6px;min-width:0;flex:1;background:#fff;color:var(--ink);outline:none}.quick input:focus,.search:focus{border-color:var(--teal);box-shadow:0 0 0 3px var(--teal-soft)}.primary{background:var(--teal);color:#fff;padding:12px 17px;border-radius:6px;font-weight:750;white-space:nowrap}.primary:hover{background:var(--teal-ink)}.layout{display:grid;grid-template-columns:minmax(0,1fr);gap:clamp(14px,1.4vw,22px);align-items:start;margin-top:clamp(12px,1.4vw,20px)}.content-column,.right-column{display:grid;align-content:start;gap:18px}.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--r-l);padding:clamp(14px,1.5vw,22px);box-shadow:var(--shadow-card);min-width:0}.panelhead{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:15px}.panel h2{font-size:17px;margin:5px 0 0;letter-spacing:-.3px}.search{border:1px solid var(--line);padding:8px 10px;border-radius:6px;min-width:120px;width:180px;font-size:12px;outline:none}.item{display:flex;gap:12px;align-items:flex-start;padding:13px 0;border-top:1px solid var(--line)}.item:first-child{border-top:0}.check{width:19px;height:19px;border:2px solid #b8cbc4;border-radius:50%;background:#fff;flex:0 0 auto;position:relative}.check:hover{border-color:var(--teal)}.check.done{background:var(--teal);border-color:var(--teal)}.check.done:after{content:'✓';color:#fff;position:absolute;left:2px;top:-5px;font-size:14px}.itembody{flex:1;min-width:0}.itemtitle{font-weight:700;font-size:14px}.itemtitle.completed{text-decoration:line-through;color:var(--muted)}.itemmeta{color:var(--muted);font-size:11px;margin-top:5px}.tag,.local-badge{display:inline-block;padding:3px 7px;border-radius:99px;font-size:10px;font-weight:750}.tag{background:var(--yellow-soft);color:var(--yellow-ink);margin-left:5px}.local-badge{background:var(--ok-soft);color:var(--ok);white-space:nowrap}.ghost{background:transparent;color:var(--teal);font-size:12px;font-weight:750;padding:2px 0}.empty{font-size:13px;color:var(--muted);line-height:1.6;padding:7px 0 2px}.goal{padding:12px 0;border-top:1px solid var(--line)}.goal:first-child{border-top:0;padding-top:0}.goal-row,.money-row{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.goal strong{font-size:13px}.goal-row>b{color:var(--teal);font-size:12px}.progress{height:6px;background:var(--teal-soft);border-radius:5px;margin-top:10px;overflow:hidden}.progress i{display:block;background:var(--teal);height:100%;border-radius:5px}.money-row{align-items:center;padding:5px 0}.money-icon{width:34px;height:34px;display:grid;place-items:center;background:var(--yellow-soft);color:var(--yellow-ink);border-radius:6px;font-weight:800}.money-row>div:nth-child(2){flex:1}.money-row>b{font-size:14px}.note{display:flex;gap:11px;background:#f1f6f3;padding:13px;border-radius:6px}.quote{color:var(--coral);font-size:29px;line-height:.8}.note strong{font-size:13px}.note p{font-size:12px;line-height:1.5;color:var(--muted);margin:5px 0 0}.chat{background:#eef5f1}.messages{min-height:186px;max-height:none;overflow:auto;overscroll-behavior:contain;display:grid;grid-template-columns:minmax(0,1fr);align-content:start;gap:9px;margin-bottom:13px;padding-bottom:var(--composer-pad)}.bubble{padding:10px 12px;background:#fff;border-radius:7px;line-height:1.45;font-size:clamp(13px,0.4vw + 10.5px,15px);max-width:92%;min-width:0;overflow-wrap:anywhere}.bubble.me{background:var(--teal);color:#fff;justify-self:end}.suggest{border:1px solid #e7c76f;background:#fff9e8;padding:11px;border-radius:6px;font-size:12px}.suggest button{margin-top:9px;padding:8px 11px;font-size:12px}.chatbox input{background:#fff}.areas{display:grid;grid-template-columns:1fr 1fr;gap:8px}.area{display:flex;align-items:center;gap:8px;padding:10px;background:#f7f9f7;border-radius:5px;font-size:12px}.area small{margin-left:auto;color:#72b28a;font-size:8px}.area-dot{width:8px;height:8px;border-radius:50%;background:var(--coral)}.dot-1{background:var(--teal)}.dot-2{background:var(--yellow)}.dot-3{background:var(--blue)}.is-dimmed{opacity:.55}.mobilebar{display:none}@media(max-width:1024px){.side{display:none}.main{padding:clamp(12px,2vw,20px) max(var(--gutter),env(safe-area-inset-right)) calc(var(--mobilebar-h) + 20px + env(safe-area-inset-bottom)) max(var(--gutter),env(safe-area-inset-left))}.quick input{padding:11px}.primary{padding:11px 13px}.layout{grid-template-columns:1fr;margin-top:16px;gap:15px}.panel{padding:17px}.search{width:135px}.panelhead{margin-bottom:11px}.mobilebar{display:flex;position:fixed;bottom:0;left:0;right:0;background:var(--navy);padding:9px 5px;justify-content:space-around;z-index:var(--z-nav);box-shadow:0 -4px 16px #172f3833}.mobilebar button{background:transparent;color:#a9c2bf;font-size:11px;padding:6px 9px}.mobilebar button.active{color:#fff;font-weight:750;border-bottom:2px solid var(--yellow)}.areas{gap:6px}}
.mail-import{display:grid;grid-template-columns:1fr 1fr auto auto;gap:7px;margin:13px 0}.mail-import input,.mail-import select{border:1px solid var(--line);padding:9px;border-radius:6px;min-width:0}.mail-import button{min-height:var(--tap)}@media(max-width:1024px){.mail-import button{grid-column:span 2}}.mail-message{border-top:1px solid var(--line);padding:11px 0}.mail-message p{font-size:12px;color:var(--muted);margin:5px 0 0;white-space:pre-wrap}@media(max-width:1024px){.mail-import{grid-template-columns:1fr 1fr}.mail-import button{grid-column:span 2}}.login-screen{min-height:100vh;display:grid;place-items:center;background:var(--navy);padding:clamp(12px,5vw,24px)}.login-form{width:min(100%,380px);min-width:0;max-width:100%;background:var(--card);padding:clamp(18px,6vw,32px);border-radius:var(--r-l);box-shadow:var(--shadow-float)}.login-form h1{margin:28px 0 8px;font-size:28px}.login-form p{color:var(--muted);font-size:13px;margin:0 0 24px}.login-form label{display:grid;gap:7px;font-size:12px;font-weight:700;margin-top:15px}.login-form input{padding:11px;border:1px solid var(--line);border-radius:6px;outline:none;min-width:0;width:100%}.login-form input:focus{border-color:var(--teal);box-shadow:0 0 0 3px var(--teal-soft)}.login-form .primary{width:100%;margin-top:22px}.login-error{color:var(--danger);font-size:12px;min-height:18px;margin-top:12px}.logout{position:fixed;right:24px;top:22px;z-index:var(--z-float)}@media(max-width:1024px){.logout{right:14px;top:14px}}.stat-blue 


.agr-form{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-bottom:13px}.agr-form input{border:1px solid var(--line);padding:9px;border-radius:6px;min-width:0}.agr-form .full{grid-column:span 2}
.item.control .tag{background:var(--coral-soft);color:var(--coral-ink)}.overdue-tag{background:var(--danger)!important;color:#fff!important}.item.overdue .itemtitle{color:var(--danger)}
.item.agreement .check{border-radius:50%}

@media(max-width:1024px){}
.iconbtn{background:transparent;color:var(--muted);font-size:14px;padding:4px 6px;border-radius:5px;line-height:1;flex:0 0 auto}
.iconbtn:hover{background:#f0f3f1;color:var(--ink)}
.iconbtn.del:hover{background:var(--coral-soft);color:var(--danger)}
.mic{background:transparent;color:var(--teal);font-size:17px;padding:11px 10px;border-radius:6px;line-height:1}
.mic.on{color:#fff;background:var(--coral);animation:micpulse 1.1s infinite}
@keyframes micpulse{50%{opacity:.55}}

[hidden]{display:none!important}
.section-panel{display:none}.section-panel.active{display:block}
.transcript-box{display:grid;gap:8px;margin-top:10px}
.transcript-box textarea{border:1px solid var(--line);border-radius:6px;padding:10px;font:inherit;font-size:13px;resize:vertical;min-height:90px}
#transcriptToggle{margin-top:8px}
.mic.polishing{opacity:.5;animation:micspin 1s infinite}
@keyframes micspin{50%{opacity:.25}}
.memory-head{font-size:11px;font-weight:750;color:var(--muted);margin:14px 0 7px;text-transform:uppercase;letter-spacing:.7px}
.memory-item{padding:8px 0;border-top:1px solid var(--line);font-size:13px}
.memory-item .itemmeta{display:block;margin-top:3px}
@media(max-width:1024px){.layout{grid-template-columns:minmax(0,1fr)}}
/* chat-first redesign (v14) */
.topbar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 0 16px;flex-wrap:wrap}
.brand-mini{font-size:19px;font-weight:850;letter-spacing:-1px;margin-right:10px}
.topbar-date{color:var(--muted);font-size:13px;text-transform:capitalize}
.topbar-stats{display:flex;gap:8px;flex-wrap:wrap}
.chip{display:inline-flex;gap:6px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:99px;padding:6px 12px;font-size:12px;color:var(--muted)}
.chip b{color:var(--ink)}
.chip-warn{border-color:var(--coral-soft);color:var(--coral-ink)}.chip-warn b{color:var(--coral-ink)}
.chat{position:sticky;top:calc(var(--topbar-h) + 10px);display:flex;flex-direction:column;height:calc(100dvh - var(--chat-top-desktop));min-height:420px}
.chat .messages{flex:1;min-height:0;overflow-y:auto;max-height:none;-webkit-overflow-scrolling:touch}
.chatbox-wrap{position:sticky;bottom:0;z-index:var(--z-nav);width:100%;flex:0 0 auto;border-top:1px solid var(--line);padding-top:10px;margin-top:8px;background:var(--card)}
.chatbox-wrap .quick{margin-top:8px}
/* Вложения в чате: превью выбранных файлов, уведомления, показ в сообщении */
.attach-btn{font-size:16px;padding:9px 8px;line-height:1}
.attach-btn.has-files{color:#fff;background:var(--teal)}
.panel.chat.dragging{outline:2px dashed var(--teal);outline-offset:-4px;border-radius:10px}
.panel.chat.dragging .chatbox-wrap{background:#eef7f3}
.attach-uploading{font-size:12px;color:var(--teal);margin-top:8px}
.attach-preview{display:flex;flex-wrap:wrap;gap:7px;margin-top:8px}
.pf-item{display:flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:7px;padding:5px 7px;background:#fbfdfc;max-width:100%}
.pf-item img{width:34px;height:34px;object-fit:cover;border-radius:5px;flex:0 0 auto}
.pf-icon{width:34px;height:34px;display:grid;place-items:center;background:#eef3f1;border-radius:5px;font-size:16px;flex:0 0 auto}
.pf-name{font-size:12px;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pf-size{font-size:11px;color:var(--muted);white-space:nowrap}
.pf-item.pf-error{border-color:var(--danger);background:var(--coral-soft)}
.pf-err{font-size:11px;color:var(--danger);max-width:160px}
.pf-del{border:0;background:transparent;color:var(--muted);font-size:15px;line-height:1;padding:2px 3px;cursor:pointer;border-radius:4px}
.pf-del:hover{color:var(--danger)}
.attach-notice{font-size:12px;color:var(--coral-ink);background:#fff8e6;border-radius:6px;padding:6px 9px;margin-top:8px}
.attach-list{display:flex;flex-wrap:wrap;gap:7px;margin-top:7px}
.attach{display:inline-flex;align-items:center;gap:7px;text-decoration:none;border-radius:7px;font-size:12px;max-width:100%}
.attach.file{border:1px solid var(--line);background:#fff;color:var(--ink);padding:6px 9px}
.attach.file:hover{border-color:var(--teal)}
.attach.thumb{padding:0;border:1px solid var(--line);overflow:hidden}
.attach.thumb img{width:120px;height:120px;object-fit:cover;display:block}
.attach-icon{font-size:15px;flex:0 0 auto}
.attach-name{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.attach-size{color:var(--muted);white-space:nowrap}
.bubble.me .attach.file{background:rgba(255,255,255,.92);border-color:transparent}
.bubble.me .attach-size{color:#5c6b68}
.attach-wrap{display:inline-flex;align-items:center;gap:5px;max-width:100%;min-width:0}
.attach-wrap .attach{max-width:100%}
.attach-del{flex:0 0 auto;min-width:32px;min-height:32px;display:inline-flex;align-items:center;justify-content:center;background:transparent;color:var(--muted);border:1px solid var(--line);border-radius:6px;font-size:14px;line-height:1;transition:background var(--anim),color var(--anim)}
.attach-del:hover,.attach-del:focus-visible{background:var(--coral-soft);color:var(--danger)}
.attach-del:disabled{opacity:.5}
.bubble.me .attach-del{color:rgba(255,255,255,.9);border-color:rgba(255,255,255,.4)}
.bubble.me .attach-del:hover,.bubble.me .attach-del:focus-visible{background:rgba(255,255,255,.18);color:#fff}
@media(max-width:480px){.chatbox{gap:6px}.chatbox .mic{padding:11px 7px}.chatbox .primary{padding:12px 11px}}

.demo-details{margin:10px 0;border:1px dashed var(--line);border-radius:7px;padding:9px 11px}
.demo-details summary{font-size:12px;color:var(--teal);cursor:pointer;font-weight:750}
.mail-provider-card{display:flex;justify-content:space-between;align-items:center;gap:10px;border:1px solid var(--line);border-radius:8px;padding:13px;margin-bottom:9px;background:#fbfdfc}
.mail-provider-card strong{font-size:14px}
.tag-ok{background:var(--ok-soft);color:var(--ok)}
.mail-sync{margin:8px 0 4px}
.mail-sync-row{display:flex;gap:var(--gap-s);align-items:center;flex-wrap:wrap;margin:8px 0 4px}
.mail-sync-row select{border:1px solid var(--line);border-radius:var(--r-s);padding:9px 10px;min-height:38px;background:#fff;flex:1;min-width:0;font-size:13px}
.nav button.active{box-shadow:inset 3px 0 0 var(--yellow)}
@media(max-width:1024px){.layout{grid-template-columns:minmax(0,1fr)}.chat{position:static;top:auto;height:calc(100dvh - var(--chat-top-mobile) - var(--mobilebar-h));min-height:min(360px,64dvh)}.chat .messages{min-height:150px;max-height:none}.topbar{padding:8px 0 10px}}
/* prevent grid overflow on narrow screens */
.content-column,.right-column,.panel,.chat,.chatbox-wrap,.chatbox{min-width:0}
.chatbox{display:flex;gap:8px}


.mic-status{font-size:11px;padding:6px 10px;border-radius:6px;margin:0 0 8px;display:flex;align-items:center;gap:7px}
.mic-status.st-rec{background:var(--coral-soft);color:var(--danger);animation:micpulse 1.4s infinite}
.mic-status.st-work{background:#fff8e6;color:var(--coral-ink)}
.mic-status.st-ok{background:var(--ok-soft);color:var(--ok)}
.mic-status.st-err{background:var(--coral-soft);color:var(--danger)}

.res-form{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-bottom:13px}
.res-form input,.res-form select{border:1px solid var(--line);padding:9px;border-radius:6px;min-width:0;font:inherit;font-size:13px}
.res-form .full{grid-column:span 2}
.res-kind{grid-column:span 2}
.res-group{margin-bottom:4px}
.res-group-head{font-size:11px;font-weight:750;color:var(--muted);text-transform:uppercase;letter-spacing:.7px;margin:13px 0 5px}
/* design system v2: спокойные тени, переходы, читабельность */

.topbar{position:sticky;top:0;z-index:var(--z-topbar);background:linear-gradient(180deg,var(--paper) 78%,transparent);padding-bottom:12px}
.nav button{transition:background var(--anim),color var(--anim),box-shadow var(--anim);border-radius:var(--r-m)}
.itemtitle{transition:color var(--anim)}
.item:hover .itemtitle{color:var(--teal-ink)}
.bubble{box-shadow:var(--shadow-card);border:1px solid var(--line);transition:transform var(--anim)}
.bubble.me{background:var(--teal);border-color:var(--teal)}
.suggest{border-radius:var(--r-m);box-shadow:var(--shadow-card)}
.input,.quick input,.agr-form input,.res-form input,.mail-import input,.mail-import select,#search{transition:border-color var(--anim),box-shadow var(--anim)}
#messages{scroll-behavior:smooth}

.stat:hover{transform:translateY(-1px)}
.nav-ico{width:22px;height:22px;border-radius:6px;background:#f5f7f4;padding:2px;opacity:.85;flex:0 0 auto}
.nav button.active .nav-ico,.nav button:hover .nav-ico{opacity:1}
/* ui-anamnesis fix pack 1 */
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,[role="button"]:focus-visible,[data-section]:focus-visible{outline:2px solid var(--teal);outline-offset:2px;border-radius:var(--r-s)}
@media(max-width:1024px){.mobilebar{overflow-x:auto;justify-content:flex-start;gap:2px;padding:9px 9px calc(9px + env(safe-area-inset-bottom)) ;scrollbar-width:none}.mobilebar::-webkit-scrollbar{display:none}.mobilebar button{flex:0 0 auto;padding:7px 10px}}
@supports(height:100dvh){.shell{min-height:100dvh}.login-screen{min-height:100dvh}}
/* Легаси-перебивка `.primary` на коралле удалена (UI.DESIGN.HOLES.1): акцент один —
   teal, канон ниже (v17). Коралл — только смысловой (просрочка/деструктив). */
.iconbtn{min-width:30px;min-height:30px;display:inline-flex;align-items:center;justify-content:center}
.mic svg{vertical-align:-3px}
/* fixes: forms & file input */
.agr-form input[type="date"],.res-form input[type="date"]{font-size:12px;padding:9px 8px;min-width:0}
.res-form .res-title{grid-column:span 2}
.res-form .renew-wrap{grid-column:span 2}
.file-pick{display:flex;align-items:center;gap:10px;border:1px dashed var(--line-strong,#cfdad4);border-radius:var(--r-m);padding:11px;cursor:pointer;transition:border-color var(--anim)}
.file-pick:hover{border-color:var(--teal)}
.file-pick-btn{background:var(--teal-soft);color:var(--teal-ink);font-weight:750;font-size:12px;padding:8px 13px;border-radius:6px;white-space:nowrap}
.file-pick-name{font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
/* Голосовой вывод (TTS): кнопка-динамик рядом с микрофоном, пульсация во время озвучки */
.mic.tts-toggle{color:var(--yellow)}
.mic.tts-toggle.muted{color:var(--muted);opacity:.55}
.mic.tts-toggle.speaking{color:#fff;background:var(--teal);animation:micpulse 1.3s infinite}
.nav-ico-emoji{display:inline-flex;align-items:center;justify-content:center;font-size:15px;background:transparent}
.tg-message{border-top:1px solid var(--line);padding:10px 0}
.tg-message .tg-head{font-size:11px;color:var(--muted);display:flex;justify-content:space-between;gap:8px}
.tg-message .tg-text{font-size:13px;margin:4px 0 0;white-space:pre-wrap;word-break:break-word}
.tg-message.out .tg-text{color:var(--teal-ink)}
.msg-sep{border:0;border-top:1px dashed var(--line);margin:16px 0 12px}
.wa-qr{display:block;width:220px;height:220px;margin:8px auto;background:#fff;border:1px solid var(--line);border-radius:8px;padding:6px}
.max-qr{display:block;width:100%;max-width:420px;margin:8px auto;background:#fff;border:1px solid var(--line);border-radius:8px}
.bubble.typing{display:inline-flex;gap:4px;align-items:center;padding:12px 14px}
.bubble.typing span{width:6px;height:6px;border-radius:50%;background:var(--muted);animation:lifeos-typing 1.2s infinite ease-in-out}
.bubble.typing span:nth-child(2){animation-delay:.18s}
.bubble.typing span:nth-child(3){animation-delay:.36s}
@keyframes lifeos-typing{0%,60%,100%{opacity:.25;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}
.hist-more{display:block;margin:4px auto 10px}
/* Цитата-ответ: блок в пузыре ассистента + вспышка исходного сообщения при переходе
   по клику. Селектор .bubble .quote — чтобы не задеть «кавычку» панели «Контекст»
   (.note .quote). Тап-таргет ≥44px, текст цитаты в одну строку с многоточием. */
.bubble .quote{display:flex;flex-direction:column;justify-content:center;gap:2px;width:100%;max-width:100%;min-width:0;min-height:var(--tap);text-align:left;margin:-2px 0 8px;padding:5px 10px;border:0;border-left:3px solid var(--teal);border-radius:0 var(--r-s) var(--r-s) 0;background:#f1f7f5;cursor:pointer;transition:background var(--anim);font:inherit}
.bubble .quote:hover,.bubble .quote:focus-visible{background:var(--teal-soft)}
.bubble .quote-author{font-size:var(--fs-meta);font-weight:var(--fw-bold);color:var(--teal-ink);line-height:1.2}
.bubble .quote-text{display:block;max-width:100%;font-size:var(--fs-meta);color:var(--muted);line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bubble.md-flash{animation:md-flash 1.5s ease}
@keyframes md-flash{0%,55%{box-shadow:0 0 0 3px var(--yellow),var(--shadow-card)}100%{box-shadow:var(--shadow-card)}}
@media(prefers-reduced-motion:reduce){.bubble.md-flash{animation-duration:1ms}}
/* Цитата-ответ в обе стороны: кнопка «Ответить» на каждом сообщении и плашка
   активного ответа над полем ввода. Кнопка не перекрывает текст (под неё зарезервирован
   отступ справа), на десктопе появляется при наведении, на тач-устройствах видна всегда.
   Тап-таргет 44px, плашка — одна строка с CSS-обрезкой (ellipsis). */
.bubble{position:relative}
.bubble.has-reply{padding-right:46px}
.reply-btn{position:absolute;top:2px;right:2px;width:var(--tap);height:var(--tap);display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:transparent;color:var(--muted);font-size:15px;line-height:1;opacity:0;pointer-events:none;transition:opacity var(--anim),background var(--anim);z-index:2}
.bubble:hover .reply-btn,.bubble:focus-within .reply-btn,.bubble.reply-open .reply-btn{opacity:1;pointer-events:auto}
.reply-btn:hover{background:var(--teal-soft);color:var(--teal-ink)}
.bubble.me .reply-btn{color:#dff0ea}
.bubble.me .reply-btn:hover{background:rgba(255,255,255,.22);color:#fff}
.bubble.me .quote{background:rgba(255,255,255,.16);border-left-color:#fff}
.bubble.me .quote:hover,.bubble.me .quote:focus-visible{background:rgba(255,255,255,.28)}
.bubble.me .quote-author{color:#eafff7}
.bubble.me .quote-text{color:#dff0ea}
.replybar{display:flex;align-items:center;gap:8px;min-width:0;margin-bottom:8px;padding:4px 6px 4px 10px;border-left:3px solid var(--teal);border-radius:0 var(--r-s) var(--r-s) 0;background:var(--teal-soft)}
.replybar[hidden]{display:none}
.replybar-quote{display:flex;flex-direction:column;gap:1px;flex:1;min-width:0}
.replybar-author{font-size:var(--fs-meta);font-weight:var(--fw-bold);color:var(--teal-ink);line-height:1.2}
.replybar-text{display:block;max-width:100%;font-size:var(--fs-meta);color:var(--muted);line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.replybar-cancel{flex:0 0 auto;width:var(--tap);height:var(--tap);display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:transparent;color:var(--muted);font-size:20px;line-height:1;transition:background var(--anim),color var(--anim)}
.replybar-cancel:hover{background:#fff;color:var(--ink)}
/* Тач-устройства: hover нет — кнопка «Ответить» видна всегда и стоит в потоке,
   чтобы гарантированно не перекрывать текст и вложения. */
@media(hover:none){
  .bubble.has-reply{padding-right:12px}
  .reply-btn{position:static;display:flex;margin-left:auto;width:var(--tap);height:var(--tap);opacity:1;pointer-events:auto}
}
/* Поручения агенту OpenCode: полоска активной работы, живая карточка в чате,
   выдвижная панель истории. Без отдельной вкладки — простой встроенный пульт. */
.panelhead-right{display:flex;align-items:center;gap:10px}
.works-open b{color:var(--ink);font-weight:var(--fw-bold)}
.works-strip{display:flex;align-items:center;gap:9px;width:100%;text-align:left;border:1px solid #c6e4df;background:var(--teal-soft);color:var(--teal-ink);border-radius:var(--r-m);padding:9px 12px;margin-bottom:9px;font-size:13px;transition:background var(--anim)}
.works-strip:hover{background:#cfe9e4}
.works-strip .ws-dot{width:7px;height:7px;border-radius:50%;background:var(--teal);animation:lifeos-typing 1.2s infinite;flex:0 0 auto}
.works-strip .ws-task{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:var(--fw-bold)}
.works-strip .ws-more{color:var(--teal-ink);opacity:.8;font-size:var(--fs-meta);white-space:nowrap}
.suggest.deleg{border-left:3px solid var(--teal)}
.deleg-task{font-size:13px;color:var(--ink);margin-top:5px;overflow-wrap:anywhere}
.deleg-status{font-size:var(--fs-meta);color:var(--muted);margin-top:3px}
.work-card{border:1px solid var(--line);border-radius:var(--r-m);padding:12px 13px;margin-bottom:9px;background:#fbfdfc}
.work-top{display:flex;gap:10px;align-items:flex-start}
.work-title{flex:1;font-weight:var(--fw-bold);font-size:var(--fs-body);line-height:1.35;overflow-wrap:anywhere}
.work-badge{font-size:var(--fs-eyebrow);font-weight:var(--fw-bold);text-transform:uppercase;letter-spacing:.4px;padding:3px 8px;border-radius:99px;white-space:nowrap}
.work-badge.queued{background:var(--yellow-soft);color:var(--yellow-ink)}
.work-badge.running{background:var(--teal-soft);color:var(--teal-ink)}
.work-badge.done{background:var(--ok-soft);color:var(--ok)}
.work-badge.error{background:var(--coral-soft);color:var(--coral-ink)}
.work-badge.cancelled{background:#eef1f0;color:var(--muted)}
.work-meta{color:var(--muted);font-size:var(--fs-meta);margin-top:5px;overflow-wrap:anywhere}
.work-result{margin-top:9px;font-size:13px;line-height:1.55;color:var(--ink-soft);white-space:pre-wrap;overflow-wrap:anywhere;position:relative;max-height:6.6em;overflow:hidden}
.work-result.clamped::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2.2em;background:linear-gradient(transparent,#fbfdfc);pointer-events:none}
.work-result.open{max-height:320px;overflow:auto}
.work-actions{margin-top:8px;display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.drawer-backdrop{position:fixed;inset:0;background:#172f3840;z-index:var(--z-modal);opacity:0;transition:opacity var(--anim-slow)}
.drawer-backdrop.show{opacity:1}
.drawer{position:fixed;top:0;right:0;height:100vh;height:100dvh;width:min(420px,92vw);background:var(--card);border-left:1px solid var(--line);box-shadow:var(--shadow-float);z-index:var(--z-modal);display:flex;flex-direction:column;transform:translateX(10px);opacity:0;transition:opacity var(--anim-slow),transform var(--anim-slow)}
.drawer.show{transform:none;opacity:1}
.drawer-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:20px 18px 12px;border-bottom:1px solid var(--line)}
.drawer-head h2{margin:5px 0 0;font-size:var(--fs-title);letter-spacing:-.3px}
.drawer-body{padding:14px 18px 26px;overflow-y:auto;-webkit-overflow-scrolling:touch}
@media(max-width:1024px){.drawer{top:auto;bottom:0;right:0;left:0;width:auto;height:auto;max-height:82dvh;border-left:0;border-top:1px solid var(--line);border-radius:16px 16px 0 0;transform:translateY(12px);padding-bottom:env(safe-area-inset-bottom)}.drawer.show{transform:none}}
@media(prefers-reduced-motion:reduce){.drawer,.drawer-backdrop,.works-strip{transition:none!important}.works-strip .ws-dot{animation:none!important}}
/* Просмотр сессий OpenCode в панели поручений */
.drawer-head-actions{display:flex;gap:6px;align-items:center}
.works-sessions{margin-top:12px}
.session-row{display:flex;flex-direction:column;gap:3px;width:100%;text-align:left;border:1px solid var(--line);border-radius:var(--r-m);padding:11px 13px;margin-bottom:8px;background:#fbfdfc;transition:border-color var(--anim),box-shadow var(--anim)}
.session-row:hover{border-color:var(--teal);box-shadow:var(--shadow-card)}
.session-title{font-weight:var(--fw-bold);font-size:var(--fs-body);line-height:1.35;overflow-wrap:anywhere}
.session-meta{font-size:var(--fs-meta);color:var(--muted);display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.sess-badge{font-size:var(--fs-eyebrow);font-weight:var(--fw-bold);text-transform:uppercase;letter-spacing:.4px;padding:2px 7px;border-radius:99px;white-space:nowrap}
.sess-badge.working{background:var(--teal-soft);color:var(--teal-ink)}
.sess-badge.asking{background:var(--yellow-soft);color:var(--yellow-ink)}
.sess-badge.stalled{background:var(--yellow-soft);color:var(--yellow-ink)}
.sess-badge.error{background:var(--coral-soft);color:var(--coral-ink)}
.dot-live{width:7px;height:7px;border-radius:50%;background:var(--teal);animation:lifeos-typing 1.2s infinite;flex:0 0 auto}
.tr-live{display:flex;align-items:center;gap:7px;font-size:var(--fs-meta);color:var(--teal-ink);background:var(--teal-soft);border-radius:99px;padding:5px 11px;margin-bottom:10px;width:fit-content}
.tr-msg{padding:10px 0;border-top:1px solid var(--line)}
.tr-msg:first-child{border-top:0}
.tr-role{font-size:var(--fs-eyebrow);text-transform:uppercase;letter-spacing:.6px;font-weight:var(--fw-heavy);color:var(--teal);margin-bottom:4px}
.tr-msg.user .tr-role{color:var(--muted)}
.tr-text{font-size:13px;line-height:1.55;color:var(--ink);white-space:pre-wrap;overflow-wrap:anywhere}
.tr-tools{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px}
.tr-tool{font-size:var(--fs-eyebrow);font-weight:var(--fw-bold);background:#eef1f0;color:var(--ink-soft);border-radius:99px;padding:3px 8px}
@media(prefers-reduced-motion:reduce){.dot-live{animation:none!important}}
/* Бэклог просьб ассистенту: компактная сворачиваемая секция в чат-колонке.
   Показывает, что пользователь просил и в каком это состоянии; активные — первыми. */
.requests-block{border:1px solid var(--line);border-radius:var(--r-m);background:#fbfdfc;margin-top:9px;flex:0 0 auto;min-width:0}
/* Госуслуги: компактная сворачиваемая секция рядом с просьбами. */
.gos-block{border:1px solid var(--line);border-radius:var(--r-m);background:#fbfdfc;margin-top:9px;flex:0 0 auto;min-width:0}
.gos-head{display:flex;align-items:center;gap:9px;width:100%;background:transparent;text-align:left;padding:9px 12px;border-radius:var(--r-m);color:var(--ink)}
.gos-head:hover{background:#f2f6f4}
.gos-title{flex:1;display:flex;align-items:center;gap:7px;font-size:13px;font-weight:var(--fw-bold);min-width:0}
.gos-badge{color:var(--teal-ink);background:var(--teal-soft);border-radius:99px;padding:1px 8px;font-size:var(--fs-meta);font-weight:var(--fw-bold);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.gos-chevron{color:var(--muted);font-size:12px;transition:transform var(--anim);flex:0 0 auto}
.gos-block.open .gos-chevron{transform:rotate(180deg)}
.gos-dot{width:7px;height:7px;border-radius:50%;background:var(--faint);flex:0 0 auto}
.gos-dot.live{background:var(--teal);animation:lifeos-typing 1.2s infinite}
.gos-list{max-height:min(46vh,320px);overflow-y:auto;border-top:1px solid var(--line);padding:4px 12px 8px}
.gos-meta{font-size:var(--fs-meta);color:var(--muted);padding:7px 0 2px;line-height:1.5;overflow-wrap:anywhere}
.gos-warn{font-size:var(--fs-meta);color:var(--coral-ink);background:var(--coral-soft);border-radius:6px;padding:6px 9px;margin:5px 0;line-height:1.45}
.gos-group{margin-top:9px}
.gos-group-head{font-size:var(--fs-eyebrow);text-transform:uppercase;letter-spacing:.5px;font-weight:var(--fw-heavy);color:var(--teal);padding:3px 0;overflow-wrap:anywhere}
.gos-row{padding:8px 0;border-top:1px solid var(--line)}
.gos-row:first-of-type{border-top:0}
.gos-row-main{min-width:0}
.gos-row-title{font-size:13px;line-height:1.4;color:var(--ink);font-weight:var(--fw-bold);overflow-wrap:anywhere;display:flex;gap:7px;flex-wrap:wrap;align-items:baseline}
.gos-row-title b{color:var(--teal-ink);white-space:nowrap}
.gos-row-sub{font-size:var(--fs-meta);color:var(--muted);line-height:1.5;margin-top:3px;overflow-wrap:anywhere}
.gos-empty{font-size:12px;color:var(--muted);padding:9px 0 5px;text-align:center;line-height:1.5}
.gos-err{color:var(--danger)}
.requests-head{display:flex;align-items:center;gap:9px;width:100%;background:transparent;text-align:left;padding:9px 12px;border-radius:var(--r-m);color:var(--ink)}
.requests-head:hover{background:#f2f6f4}
.requests-title{flex:1;display:flex;align-items:center;gap:7px;font-size:13px;font-weight:var(--fw-bold);min-width:0}
.requests-title b{color:var(--teal-ink);background:var(--teal-soft);border-radius:99px;padding:1px 8px;font-size:var(--fs-meta);font-weight:var(--fw-bold)}
.requests-chevron{color:var(--muted);font-size:12px;transition:transform var(--anim);flex:0 0 auto}
.requests-block.open .requests-chevron{transform:rotate(180deg)}
.req-dot{width:7px;height:7px;border-radius:50%;background:var(--faint);flex:0 0 auto}
.req-dot.live{background:var(--teal);animation:lifeos-typing 1.2s infinite}
.requests-list{max-height:min(46vh,320px);overflow-y:auto;border-top:1px solid var(--line);padding:4px 12px 8px}
.req-row{display:flex;gap:10px;align-items:flex-start;padding:9px 0;border-top:1px solid var(--line)}
.req-row:first-child{border-top:0}
.req-main{flex:1;min-width:0}
.req-text{font-size:13px;line-height:1.45;color:var(--ink);overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.req-meta{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:4px;font-size:var(--fs-meta);color:var(--muted)}
.req-badge{font-size:var(--fs-eyebrow);font-weight:var(--fw-bold);text-transform:uppercase;letter-spacing:.4px;padding:2px 7px;border-radius:99px;white-space:nowrap}
.req-badge.open{background:var(--yellow-soft);color:var(--yellow-ink)}
.req-badge.doing{background:var(--teal-soft);color:var(--teal-ink)}
.req-badge.done{background:var(--ok-soft);color:var(--ok)}
.req-badge.failed{background:var(--coral-soft);color:var(--coral-ink)}
.req-badge.cancelled{background:#eef1f0;color:var(--muted)}
.req-actions{display:flex;flex-direction:column;gap:5px;flex:0 0 auto}
.req-actions button{font-size:var(--fs-meta);font-weight:var(--fw-bold);padding:5px 9px;border-radius:6px;white-space:nowrap;transition:background var(--anim),color var(--anim)}
.req-actions button:disabled{opacity:.5;cursor:default}
.req-done{background:var(--ok-soft);color:var(--ok)}
.req-done:hover:not(:disabled){background:#cde8d8}
.req-cancel{background:transparent;color:var(--muted);border:1px solid var(--line)}
.req-cancel:hover:not(:disabled){background:var(--coral-soft);color:var(--danger);border-color:transparent}
.req-empty{font-size:12px;color:var(--muted);padding:9px 0 5px;text-align:center;line-height:1.5}
.req-err{color:var(--danger)}
@media(max-width:480px){.req-actions{flex-direction:row;align-items:center}.req-actions button{padding:6px 10px}.req-text{-webkit-line-clamp:3}}
/* План на день: компактная сворачиваемая карточка в разделе «Сегодня». */
.plan-block{border:1px solid var(--line);border-radius:var(--r-m);background:#fbfdfc;margin:0 0 12px;min-width:0}
.plan-head{display:flex;align-items:center;gap:9px;width:100%;background:transparent;text-align:left;padding:9px 12px;border-radius:var(--r-m);color:var(--ink);min-height:var(--tap)}
.plan-head:hover{background:#f2f6f4}
.plan-title{flex:1;display:flex;align-items:center;gap:7px;font-size:13px;font-weight:var(--fw-bold);min-width:0}
.plan-dot{width:7px;height:7px;border-radius:50%;background:var(--faint);flex:0 0 auto}
.plan-dot.live{background:var(--teal)}
.plan-meta{font-size:var(--fs-meta);color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.plan-badge{color:var(--teal-ink);background:var(--teal-soft);border-radius:99px;padding:1px 8px;font-size:var(--fs-meta);font-weight:var(--fw-bold);white-space:nowrap;min-width:0}
.plan-chevron{color:var(--muted);font-size:12px;transition:transform var(--anim);flex:0 0 auto}
.plan-block.open .plan-chevron{transform:rotate(180deg)}
.plan-list{max-height:min(54vh,380px);overflow-y:auto;border-top:1px solid var(--line);padding:4px 12px 8px;mask-image:linear-gradient(180deg,#000 calc(100% - 30px),transparent);scrollbar-width:thin;scrollbar-color:var(--line) transparent}
/* Видимый тонкий скроллбар: без него непонятно, что список продолжается
   (визуальный разбор 2026-11-02 считал обрезанную строку дефектом). */
.plan-list::-webkit-scrollbar{width:6px}
.plan-list::-webkit-scrollbar-thumb{background:var(--line);border-radius:99px}
.plan-toolbar{display:flex;justify-content:flex-end;padding:5px 0;border-bottom:1px solid var(--line);margin-bottom:4px}
.plan-collect{min-height:var(--tap);display:inline-flex;align-items:center;justify-content:center;white-space:nowrap}
.plan-body,.plan-groups{min-width:0}
.plan-group{margin-top:7px;min-width:0}
.plan-group-head{font-size:var(--fs-eyebrow);text-transform:uppercase;letter-spacing:.5px;font-weight:var(--fw-heavy);color:var(--teal);padding:3px 0;overflow-wrap:anywhere}
.plan-row{padding:7px 0;border-top:1px solid var(--line);min-width:0}
.plan-row:first-of-type{border-top:0}
.plan-row-title{font-size:13px;line-height:1.4;color:var(--ink);font-weight:var(--fw-bold);overflow-wrap:anywhere}
.plan-row-sub{font-size:var(--fs-meta);color:var(--muted);line-height:1.5;margin-top:3px;overflow-wrap:anywhere}
.plan-empty{font-size:12px;color:var(--muted);padding:9px 0 5px;text-align:center;line-height:1.5}
.plan-err{color:var(--danger)}
.plan-brief{font-size:13px;line-height:1.5;color:var(--ink);padding:7px 0 4px;min-width:0}
.plan-brief .md{max-width:none;font-size:13px}
/* --- Markdown-ответы напарника: читаемость и анти-«портянка» ---
   Ширина колонки ~72ch (максимум 760px), выравнивание по левому краю,
   интервал 1.5, таблицы скроллятся ТОЛЬКО внутри своей обёртки,
   длинные ответы (>15 строк или >1200 символов) сворачиваются. */
.bubble.md-bubble{max-width:min(1000px,100%);justify-self:start}
.md{max-width:var(--measure);width:100%;min-width:0;line-height:1.5;font-size:clamp(13px,0.4vw + 10.5px,15px);text-align:left;overflow-wrap:anywhere}
.md>:first-child{font-weight:600}
.md p{margin:0 0 10px}
.md>:last-child{margin-bottom:0}
.md h1,.md h2,.md h3,.md h4,.md h5,.md h6{margin:12px 0 8px;line-height:1.3;font-weight:750;letter-spacing:-.2px}
.md h1{font-size:17px}.md h2{font-size:15px}.md h3{font-size:14px}
.md h1:first-child,.md h2:first-child,.md h3:first-child{margin-top:0}
.md strong{font-weight:750}
.md ul,.md ol{margin:0 0 10px;padding-left:22px}
.md li{margin:3px 0}
.md .md-list .md-list{margin:3px 0 0}
.md blockquote{margin:8px 0;padding:2px 0 2px 12px;border-left:3px solid var(--teal-soft);color:var(--ink-soft)}
.md code{background:#eef1f0;border-radius:4px;padding:1px 5px;font-size:12px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;overflow-wrap:anywhere}
.md pre.md-pre{position:relative;background:#172f38;color:#eaf3ef;border-radius:8px;padding:12px;margin:10px 0;max-height:320px;overflow:auto;font-size:12px;line-height:1.45}
.md pre.md-pre code{background:none;color:inherit;padding:0;font-size:12px;white-space:pre}
.md .md-lang{display:block;margin:-12px -12px 8px;padding:4px 12px;background:rgba(255,255,255,.06);border-radius:8px 8px 0 0;font-size:10px;text-transform:uppercase;letter-spacing:.6px;color:#b9cfcb}
.md a{color:var(--teal-ink);text-decoration:underline;overflow-wrap:anywhere}
.md hr.md-hr{border:0;border-top:1px solid var(--line);margin:12px 0}
.md .md-table-wrap{overflow-x:auto;max-width:100%;margin:10px 0;border:1px solid var(--line);border-radius:8px}
.md table.md-table{border-collapse:collapse;width:100%;font-size:12px}
.md table.md-table th,.md table.md-table td{border:1px solid var(--line);padding:6px 9px;text-align:left;white-space:nowrap}
.md table.md-table thead th{background:#f5f7f4;font-weight:750}
.md table.md-table tbody tr:nth-child(even){background:#fafcfb}
.md-msg{display:flex;flex-direction:column;align-items:flex-start;width:100%}
.md.md-clamped{max-height:22.5em;overflow:hidden;position:relative}
.md.md-clamped::after{content:"";position:absolute;left:0;right:0;bottom:0;height:3em;background:linear-gradient(transparent,#fff);pointer-events:none}
.md-toggle{margin-top:8px;font-size:12px;padding:6px 11px}
@media(max-width:1024px){.bubble.md-bubble{max-width:100%}.md{max-width:100%}}
/* Трек чата фиксируем по ширине контейнера: широкие таблицы/код скроллятся внутри,
   а не растягивают всю колонку сообщений (иначе «портянка» уезжает по горизонтали). */
.messages{grid-template-columns:minmax(0,1fr)}
.bubble.md-bubble{min-width:0}
.md-table-wrap,.md pre.md-pre{min-width:0}

/* ==========================================================================
   АДАПТИВНАЯ РАСКЛАДКА — трёхчастная схема: меню разделов сверху, чат слева
   (1/3 ширины), область контента справа (2/3). Единые брейкпоинты:
     ≤480 телефон · 481–768 крупный телефон/планшет портрет · 769–1024 планшет
     (переключатель «Чат | Раздел») · ≥1025 две колонки 1fr : 2fr.
   Принципы: сумма колонок = 100% ширины без центрирующего max-width; каждая
   колонка скроллится ВНУТРИ себя, страница целиком не скроллится; отступы —
   clamp(); мера строки текста ассистента — 72ch (--measure).
   ========================================================================== */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
.shell,.main,.layout,.content-column,.right-column,.panel,.chat,.messages,.chatbox-wrap,.chatbox,.md-msg,.topbar,.panelhead,.nav{min-width:0}

/* --- ≥1025: две колонки 1fr : 2fr (чат слева 1/3, контент справа 2/3).
   Ширина колонок задана в базовом правиле .layout и на широких экранах не
   меняется — пропорция 1/3 : 2/3 сохраняется на всех десктопных ширинах. */

/* --- Телефон: чат-поверхность во всю ширину экрана (≥95% вьюпорта) ---- */
@media(max-width:480px){
  .panel.chat{padding-inline:8px}
}

/* --- Мобильные/планшетные ограничения (≤1024) ------------------------- */
@media(max-width:1024px){
  /* iOS зумит при фокусе, если font-size поля < --field-font (tokens) */
  #chatinput,.quick input,.agr-form input,.res-form input,.res-form select,.mail-import input,.mail-import select,#mailSyncAccount,.transcript-box textarea,.login-form input,#search,.input,.select{font-size:var(--field-font)}
  /* тап-таргеты ≥ --tap (tokens) */
  .nav button,.view-tabs button,.chip-sm,.ghost,.md-toggle,.suggest button,.attach-btn,.mic,.iconbtn,.pf-del,.attach-del,.req-actions button,.requests-head,.plan-head,.plan-collect,.session-row,.works-strip,.seg-btn,.line-chip{min-height:var(--tap)}
  .mic,.attach-btn,.iconbtn,.pf-del,.attach-del{min-width:var(--tap)}  .chip-sm,.ghost,.md-toggle,.req-actions button{display:inline-flex;align-items:center;justify-content:center}
  .chip-sm{display:inline-flex}
  .logout{min-height:var(--tap)}
  /* вырез сверху учтён в .topbar, снизу — в .view-tabs (env safe-area) */
  /* широкие таблицы и код скроллятся ВНУТРИ своего контейнера */
  .md .md-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}
  .md pre.md-pre{overflow:auto;-webkit-overflow-scrolling:touch;max-width:100%}
}
/* Звонки: карточка с плеером и расшифровкой */
.call-card{border-top:1px solid var(--line);padding:14px 0}
.call-card:first-child{border-top:0;padding-top:0}
.call-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.call-dir{display:inline-block;padding:2px 8px;border-radius:99px;font-size:10px;font-weight:800;background:var(--teal-soft);color:var(--teal);white-space:nowrap}
.call-dir.out{background:var(--yellow-soft);color:var(--yellow-ink)}
.call-who{font-size:14px;font-weight:700;min-width:0;overflow-wrap:anywhere}
.call-badge{margin-left:auto;display:inline-block;padding:3px 8px;border-radius:99px;font-size:10px;font-weight:750;background:#eef1ef;color:var(--muted);white-space:nowrap}
.call-badge.ok{background:var(--ok-soft);color:var(--ok)}
.call-badge.wait{background:var(--yellow-soft);color:var(--yellow-ink)}
.call-badge.err{background:#fbe9e6;color:var(--danger)}
.call-audio{display:block;width:100%;max-width:100%;margin:10px 0 4px;height:38px}
.call-summary{font-size:13px;line-height:1.5;margin:8px 0 0}
.call-points{margin:8px 0 0;padding-left:18px;font-size:12px;line-height:1.5;color:var(--ink)}
.call-points li{margin:3px 0}
.call-transcript{margin-top:10px}
.call-transcript summary{cursor:pointer;font-size:12px;font-weight:750;color:var(--teal);min-height:var(--tap);display:flex;align-items:center}
.call-text{margin-top:6px;font-size:12px;line-height:1.55;color:var(--muted);white-space:pre-wrap;overflow-wrap:anywhere;max-height:280px;overflow-y:auto;background:#f7f9f7;border:1px solid var(--line);border-radius:6px;padding:10px}
.call-err{margin-top:8px;font-size:12px;color:var(--danger)}
.call-segs{display:flex;flex-direction:column;gap:6px;white-space:normal}
.call-seg{display:grid;grid-template-columns:44px 78px 1fr;gap:6px;align-items:baseline;padding:5px 8px;border-radius:6px;background:#f7f9f7;border:1px solid var(--line)}
.call-seg.spk-me{background:#f2f8f7;border-color:#cfe6e2}
.call-seg.spk-peer{background:#fdf7f0;border-color:#f0e2cf}
.seg-t{font-size:10px;font-weight:800;color:var(--muted);font-variant-numeric:tabular-nums}
.seg-s{font-size:10px;font-weight:800;letter-spacing:.02em}
.spk-me .seg-s{color:var(--teal)}
.spk-peer .seg-s{color:#a86a1f}
.seg-x{font-size:12px;line-height:1.5;color:var(--ink);overflow-wrap:anywhere}
.call-clar{margin-top:10px}
.call-clar summary{cursor:pointer;font-size:12px;font-weight:750;color:var(--yellow-ink);min-height:var(--tap);display:flex;align-items:center}
.call-clar-body{margin-top:6px;display:flex;flex-direction:column;gap:8px}
.clar-row{border-left:3px solid var(--yellow-soft);padding:6px 10px;background:#fffdf5;border-radius:6px}
.clar-t{font-size:10px;font-weight:800;color:var(--muted);margin-bottom:3px}
.clar-p{font-size:12px;line-height:1.45;color:var(--ink)}
.clar-p::before{content:'основная: ';font-weight:800;color:var(--muted)}
.clar-s{font-size:12px;line-height:1.45;color:var(--yellow-ink);margin-top:4px}
.clar-s::before{content:'вторая: ';font-weight:800;color:var(--muted)}

.call-search{display:block;width:100%;margin:0 0 12px}
@media(max-width:1024px){.call-search{width:100%}}

/* ==========================================================================
   ТРЁХЧАСТНАЯ РАСКЛАДКА (v15): меню сверху, чат СЛЕВА 1/3, контент СПРАВА 2/3.
   Прежнее правило «страница на всю ширину, без центрирующего max-width» сохранено:
   сумма колонок = 100% ширины, пустых полей нет. Изменилось расположение — чат
   больше НЕ по центру, а в левой колонке шириной ровно 1/3.
   Корневой контейнер .main: grid rows auto minmax(0,1fr) — шапка + основная зона.
   Основная зона .layout: grid columns minmax(0,1fr) minmax(0,2fr) — чат/контент.
   Высота — от dvh; каждая колонка скроллится ВНУТРИ себя, страница не скроллится.
   ========================================================================== */

/* Каркас: .shell держит высоту вьюпорта (шапка + основная зона + таб-бар на мобиле),
   .main — «шапка сверху + основная зона под ней». */
.shell{display:grid;grid-template-rows:minmax(0,1fr) auto;width:100%;max-width:100%;height:100vh;height:100dvh;max-height:100dvh;min-height:0;overflow:hidden}
.main{display:grid;grid-template-rows:auto minmax(0,1fr);width:100%;max-width:none;min-width:0;min-height:0;overflow:hidden;padding:0}
.layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:0;align-items:stretch;margin-top:0;min-height:0;min-width:0;overflow:hidden}

/* Колонки: чат слева (1/3) и область контента справа (2/3). Разделитель — рамка
   правого края чат-колонки (входит в её ширину, поэтому сумма колонок = 100%). */
.content-column{display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden;padding:14px 14px 0;border-right:1px solid var(--line)}
.right-column{display:block;min-width:0;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:14px clamp(14px,1.6vw,26px) 28px}
.right-column>.panel{margin-bottom:16px}

/* Чат занимает всю высоту колонки: сообщения скроллятся внутри, композер закреплён снизу. */
.panel.chat{position:static;top:auto;height:auto;min-height:0;flex:1;display:flex;flex-direction:column}

/* Шапка: строка с брендом/статусом + горизонтальное меню разделов (скролл при переполнении). */
.topbar{display:grid;grid-template-columns:1fr;gap:6px;position:static;z-index:var(--z-topbar);background:var(--card);border-bottom:1px solid var(--line);padding:calc(8px + env(safe-area-inset-top)) max(var(--gutter),env(safe-area-inset-right)) 6px max(var(--gutter),env(safe-area-inset-left))}
.topbar-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0}
.topbar-left{display:flex;align-items:baseline;gap:10px;min-width:0}
.topbar-date{color:var(--muted);font-size:13px;text-transform:capitalize;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topbar-right{display:flex;align-items:center;gap:10px;min-width:0}
.topbar-status{display:inline-flex;align-items:center;gap:7px;color:var(--muted);font-size:var(--fs-meta);white-space:nowrap}
.topbar-status .status-dot{width:8px;height:8px;border-radius:50%;background:#69c499;box-shadow:0 0 0 3px var(--teal-soft);flex:0 0 auto}
.topbar-status small{display:block;max-width:34ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.logout{position:static;flex:0 0 auto;min-height:var(--tap);display:inline-flex;align-items:center}

/* Горизонтальное меню: пункты — разделы; активный подсвечен, переполнение скроллится внутри. */
.nav{display:flex;align-items:center;gap:4px;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-webkit-overflow-scrolling:touch;min-width:0;padding-bottom:2px}
.nav::-webkit-scrollbar{display:none}
.nav button{display:inline-flex;align-items:center;gap:8px;flex:0 0 auto;background:transparent;color:var(--muted);text-align:left;padding:9px 12px;border-radius:var(--r-m);font-size:14px;white-space:nowrap;min-height:var(--tap);transition:background var(--anim),color var(--anim),box-shadow var(--anim)}
.nav button:hover{background:#eef3f1;color:var(--ink)}
.nav button.active{background:var(--teal-soft);color:var(--teal-ink);font-weight:750;box-shadow:inset 0 -2px 0 var(--teal)}
.nav .nav-ico{width:22px;height:22px;border-radius:6px;background:#f5f7f4;padding:2px;opacity:.85;flex:0 0 auto}
.nav button.active .nav-ico,.nav button:hover .nav-ico{opacity:1}

/* Таб-бар «Чат | Раздел» — только на планшетах/телефонах (≤1024). На десктопе скрыт. */
.view-tabs{display:none}

/* ≤1024: две колонки не влезают — переключатель «Чат | Раздел», каждый экран на всю ширину. */
@media(max-width:1024px){
  .view-tabs{display:flex;position:relative;z-index:var(--z-nav);background:var(--card);border-top:1px solid var(--line);gap:6px;padding:4px max(8px,env(safe-area-inset-right)) calc(4px + env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left))}
  .view-tabs button{flex:1;min-height:48px;background:transparent;color:var(--muted);font-size:13px;font-weight:750;border-radius:var(--r-m);display:inline-flex;align-items:center;justify-content:center;gap:6px}
  .view-tabs button.active{background:var(--navy);color:#fff}
  .layout{grid-template-columns:minmax(0,1fr)}
  .shell[data-view="chat"] .right-column{display:none}
  .shell[data-view="section"] .content-column{display:none}
  .content-column{padding:0;border-right:0}
  .right-column{padding:10px 10px 20px}
  .panel.chat{border-radius:0;border-left:0;border-right:0}
  .topbar-stats{display:none}
  .topbar-status small{max-width:18ch}
}

/* ==========================================================================
   SMART-задачи и «Линии жизни» как рабочий пульт (v16).
   SMART: чипы осей S/M/A/R/T у задачи; фильтр «Все/SMART/Без критерия/Без срока»;
   лента линий в «Сегодня» + раздел-пульт с раскрытием состава линии.
   ========================================================================== */
.smart-row{margin-top:6px;display:flex;align-items:center;gap:8px}
.smart{display:inline-flex;gap:2px}
.smart-l{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:4px;font-size:9px;font-weight:800;font-style:normal;background:var(--teal-soft);color:var(--teal-ink)}
.smart-l.off{background:#eef1ef;color:var(--faint);box-shadow:inset 0 0 0 1px var(--line-strong)}
.smart-nudge{display:flex;align-items:center;gap:10px;width:100%;margin:0 0 12px;padding:10px 12px;border:1px dashed var(--line-strong);border-radius:var(--r-m);background:#fffdf5;color:var(--ink);font-size:13px;text-align:left;min-height:var(--tap)}
.smart-nudge:hover{border-color:var(--teal);background:var(--teal-soft)}
.smart-nudge b{color:var(--coral-ink)}

.seg{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.seg-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border:1px solid var(--line);border-radius:99px;background:#fff;color:var(--muted);font-size:12px;font-weight:700;min-height:40px}
.seg-btn b{color:var(--ink);font-weight:800}
.seg-btn.active{background:var(--navy);color:#fff;border-color:var(--navy)}
.seg-btn.active b{color:#fff}

.lines-strip{margin-bottom:14px}
.strip-head{font-size:10px;text-transform:uppercase;letter-spacing:1.2px;color:var(--teal);font-weight:800;margin-bottom:7px}
.strip-row{display:flex;gap:7px;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}
.strip-row::-webkit-scrollbar{display:none}
.line-chip{display:inline-flex;align-items:center;gap:7px;flex:0 0 auto;padding:7px 12px;border:1px solid var(--line);border-radius:99px;background:#fff;color:var(--ink);font-size:12px;min-height:40px}
.line-chip:hover{border-color:var(--teal)}
.line-chip b{color:var(--teal);font-weight:800}
.line-chip.attn{border-color:var(--coral);background:var(--coral-soft)}
.line-chip-attn{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 4px;border-radius:99px;background:var(--coral-strong);color:#fff;font-size:9px;font-weight:800}

.areas{display:grid;grid-template-columns:1fr;gap:8px}
.line{border:1px solid var(--line);border-radius:var(--r-m);background:#fff;overflow:hidden}
.line-head{display:flex;align-items:center;gap:10px;width:100%;padding:12px;background:transparent;color:var(--ink);text-align:left;min-height:var(--tap)}
.line-head:hover{background:#f4f8f6}
.line-name{font-weight:750;font-size:14px;flex:0 0 auto}
.line-meta{color:var(--muted);font-size:11px;flex:1;min-width:0}
.line-attn{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:99px;background:var(--coral-strong);color:#fff;font-size:10px;font-weight:800}
.line-next{color:var(--muted);font-size:11px;white-space:nowrap}
.line-chev{color:var(--faint);font-size:12px;transition:transform var(--anim)}
.line-head[aria-expanded="true"] .line-chev{transform:rotate(180deg)}
.line-items{padding:0 12px 12px}
.line-sub{font-size:10px;text-transform:uppercase;letter-spacing:1px;color:var(--teal);font-weight:800;margin:10px 0 2px}
.line .item{padding:10px 0}

/* ==========================================================================
   DESIGN SYSTEM v17 — «Спокойный журнал», современная огранка.
   Принципы: одна поверхностная шкала, один акцент (teal), danger только для
   просрочки/удаления, единые радиусы 6/10/14, отступы по шагу 4/8/12/16/24,
   тихая типографика. Слой переопределений: идёт последним и выигрывает по
   каскаду, не трогая логику. Опирается на токены web/tokens.css.
   ========================================================================== */

/* --- Базовая типографика и поверхности ---------------------------------- */
body{font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}
h2,.panel h2{font-size:16px;font-weight:700;letter-spacing:-.01em}
.eyebrow,.section-eyebrow{font-size:10px;letter-spacing:.14em;color:var(--faint);font-weight:600}
.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--r-l);box-shadow:none}
.panelhead{margin-bottom:14px;align-items:center;gap:10px}
.panelhead h2{margin-top:2px}
.panelhead>div{min-width:0}
.search{border:1px solid var(--line);border-radius:var(--r-s);background:#fff;padding:8px 10px;font-size:13px;color:var(--ink)}
.search::placeholder{color:var(--faint)}
.search:focus{border-color:var(--teal);box-shadow:0 0 0 3px var(--teal-soft)}
:focus-visible{outline:2px solid var(--teal);outline-offset:2px;border-radius:4px}

/* --- Кнопки: один акцент, вторичные — тихие ----------------------------- */
.primary{background:var(--teal);border-radius:var(--r-s);font-weight:600;box-shadow:0 1px 2px rgba(15,118,110,.25)}
.primary:hover{background:var(--teal-ink)}
.ghost{color:var(--teal-ink);font-weight:600}
.ghost:hover{color:var(--teal)}
.iconbtn{color:var(--faint);border-radius:var(--r-s)}
.iconbtn:hover{background:#f1f5f4;color:var(--ink)}
.logout{color:var(--muted);background:transparent;border:1px solid var(--line);border-radius:var(--r-s);padding:7px 12px;font-weight:600}
.logout:hover{border-color:var(--line-strong);color:var(--ink);background:#f8fafb}

/* --- Шапка: чистая, без телеметрии -------------------------------------- */
.topbar{border-bottom:1px solid var(--line);background:var(--card)}
.topbar-left{gap:8px}
.brand-mini{font-weight:800;letter-spacing:-.02em}
.topbar-date{color:var(--muted);font-size:12.5px;text-transform:none}
.topbar-status{color:var(--faint)}
.topbar-status small{display:none}
.topbar-status .status-dot{width:7px;height:7px;box-shadow:0 0 0 3px var(--teal-soft)}
.topbar-stats{gap:6px}
.chip{background:#f8fafb;border:1px solid var(--line);border-radius:var(--r-s);padding:5px 10px;font-size:12px;color:var(--muted)}
.chip b{color:var(--ink);font-weight:700}
.chip-warn{background:var(--coral-soft);border-color:var(--coral-soft);color:var(--coral-ink)}
.chip-warn b{color:var(--coral-ink)}

/* --- Меню разделов: единый таб, мягкий ховер ---------------------------- */
.nav{gap:1px;padding-bottom:4px;scrollbar-width:none}
.nav::-webkit-scrollbar{display:none}
.nav button{border-radius:var(--r-s);color:var(--muted);font-size:13px;padding:7px 10px;min-height:40px;letter-spacing:-.01em}
.nav button:hover{background:#f2f5f4;color:var(--ink)}
.nav button.active{background:var(--teal-soft);color:var(--teal-ink);font-weight:650;box-shadow:none}
.nav .nav-ico{width:18px;height:18px;border-radius:5px;background:transparent;padding:0;opacity:.7}
.nav button.active .nav-ico,.nav button:hover .nav-ico{opacity:1}

/* --- Чат: единый composer, компактная отправка -------------------------- */
.panel.chat{background:#fbfcfc}
.messages{gap:10px}
.bubble{border:1px solid var(--line);box-shadow:none;border-radius:var(--r-l);font-size:13.5px;line-height:1.55;padding:10px 13px}
.bubble.me{background:var(--teal);border-color:var(--teal);border-radius:var(--r-l)}
.bubble .md ul,.md ul{padding-left:18px;margin:6px 0}
.bubble .md li{margin:2px 0}
.md em{font-style:italic}
.md strong{font-weight:650}
.chatbox{gap:8px;align-items:center;border:1px solid var(--line);border-radius:var(--r-l);background:#fff;padding:6px 6px 6px 12px;transition:border-color var(--anim),box-shadow var(--anim)}
.chatbox:focus-within{border-color:var(--teal);box-shadow:0 0 0 3px var(--teal-soft)}
.chatbox input#chatinput{border:0;background:transparent;padding:8px 8px 8px 0;box-shadow:none;min-height:var(--tap)}
/* Плейсхолдер не «слипается» с кнопкой скрепки: многоточие вместо обрыва по краю. */
#chatinput::placeholder{text-overflow:ellipsis}
.chatbox input#chatinput:focus{outline:none;box-shadow:none;border:0}
.chatbox .mic{border-radius:var(--r-s);min-width:36px;min-height:36px;display:inline-flex;align-items:center;justify-content:center;color:var(--muted)}
.chatbox .mic:hover{background:#f1f5f4;color:var(--ink)}
.chatbox .primary{padding:9px 14px;border-radius:var(--r-s);min-width:auto}
.starter-chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px}
.chip-sm{background:#fff;border:1px solid var(--line);border-radius:99px;padding:6px 12px;font-size:12px;color:var(--muted);font-weight:600}
.chip-sm:hover{border-color:var(--teal);color:var(--teal-ink);background:var(--teal-soft)}

/* --- Задачи: квадратный чекбокс, компактные метаданные ------------------ */
/* Сам квадрат остаётся 18px: тап-зону 44×44 даёт псевдоэлемент (UI.TAP.CHECK.1),
   он же часть кнопки для hit-теста, поэтому визуально иконка не раздувается. */
.check{position:relative;border-radius:5px;border:1.5px solid var(--ctrl-line);width:18px;height:18px;margin-top:1px;background:#fff;flex:0 0 auto;padding:0}
.check::before{content:"";position:absolute;inset:-14px;border-radius:inherit}
.check:hover{border-color:var(--teal)}
.check.done{background:var(--teal);border-color:var(--teal)}
.item{padding:11px 0;gap:11px;align-items:flex-start}
.item:hover{background:linear-gradient(90deg,#fafcfb,transparent 60%)}
.itemtitle{font-size:13.5px;font-weight:600}
.itemmeta{font-size:11.5px;color:var(--muted);margin-top:3px}
.item .iconbtn{opacity:0;transition:opacity var(--anim)}
.item:hover .iconbtn,.item:focus-within .iconbtn{opacity:1}
@media(hover:none){.item .iconbtn{opacity:1}}
.tag{background:#f1f5f4;color:var(--ink-soft);font-weight:600;border-radius:5px}
.tag.overdue-tag{background:var(--coral-soft);color:var(--coral-ink)}

/* --- SMART: компактный индикатор вместо пяти квадратов ------------------ */
.smart-row{margin-top:5px}
.smart{display:inline-flex;align-items:center;gap:6px;background:#f8fafb;border:1px solid var(--line);border-radius:99px;padding:3px 9px 3px 8px}
.smart-l{width:auto;height:auto;background:transparent;color:var(--teal);font-size:10px;font-weight:800;letter-spacing:.02em;box-shadow:none;border-radius:0}
.smart-l.off{background:transparent;color:var(--faint);box-shadow:none}
.smart::after{content:'';display:none}
.smart-nudge{background:var(--teal-soft);border:1px solid transparent;border-radius:var(--r-m);padding:10px 12px;color:var(--teal-ink);font-weight:600}
.smart-nudge:hover{background:#d7efeb}

/* --- Фильтр задач: горизонтальная лента -------------------------------- */
.seg{gap:6px;margin-bottom:12px;flex-wrap:wrap}
.seg-btn{background:#fff;border:1px solid var(--line);border-radius:99px;padding:6px 12px;font-size:12px;color:var(--muted);font-weight:600;min-height:var(--tap)}
.seg-btn b{color:var(--ink)}
.seg-btn:hover{border-color:var(--line-strong)}
.seg-btn.active{background:var(--ink);border-color:var(--ink);color:#fff}
.seg-btn.active b{color:#fff}

/* --- Пустые состояния: компактно и по делу ----------------------------- */
.empty-state{padding:14px 0 4px;color:var(--muted)}
.empty-state img{max-width:52px;opacity:.85;margin:0 0 6px}

/* --- «Линии жизни»: лента и карточки ----------------------------------- */
.strip-head{font-size:10px;letter-spacing:.14em;color:var(--faint);font-weight:600;margin-bottom:6px}
.line-chip{background:#fff;border:1px solid var(--line);border-radius:99px;padding:6px 11px;font-size:12px;font-weight:600;min-height:var(--tap)}
.line-chip:hover{border-color:var(--teal);color:var(--teal-ink)}
.line-chip b{background:var(--teal-soft);color:var(--teal-ink);border-radius:99px;padding:1px 7px;font-weight:700}
.line-chip.attn{border-color:var(--coral);background:var(--coral-soft)}
.line-chip.attn b{background:#fff;color:var(--coral-ink)}
.line{border:1px solid var(--line);border-radius:var(--r-m)}
.line-head{padding:11px 12px;gap:8px}
.line-head:hover{background:#f8fafb}
.line-name{font-size:13.5px;font-weight:600}
.line-attn{background:var(--coral-strong);color:#fff}
.line-sub{color:var(--faint);font-weight:600;margin:12px 0 2px}

/* --- Мобильный переключатель: лёгкий segmented ------------------------- */
@media(max-width:1024px){
  .view-tabs{gap:4px;padding:6px max(8px,env(safe-area-inset-right)) calc(6px + env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left));background:var(--card)}
  .view-tabs button{min-height:var(--tap);border-radius:var(--r-s);color:var(--muted);font-weight:600;background:#f4f6f6}
  .view-tabs button.active{background:var(--teal);color:#fff}
  .seg{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding-bottom:2px}
  .seg::-webkit-scrollbar{display:none}
  .seg-btn{flex:0 0 auto}
  .nav{mask-image:linear-gradient(90deg,#000 calc(100% - 28px),transparent)}
  .right-column{padding:12px 12px calc(20px + var(--mobilebar-h))}
  .content-column{padding:0}
  .panel{border-radius:0;border-left:0;border-right:0}
  .panel.chat{border-radius:0}
}

/* --- Широкий экран: контент раздела не растягивается в пустоту ---------- */
@media(min-width:1025px){
  .right-column{--content-measure:clamp(680px,60vw,1040px)}
  .right-column>.panel{max-width:var(--content-measure)}
}

/* --- v17.2: план, формы, аккордеоны, композер — доводка ----------------- */
.plan-block{background:#fff;border:1px solid var(--line)}
.plan-title{font-weight:600;font-size:13px}
.plan-meta{color:var(--faint)}
.plan-badge{background:#f1f5f4;color:var(--ink-soft)}
.plan-toolbar{justify-content:flex-start}
.plan-collect{color:var(--teal-ink);font-weight:600}
.plan-group-head{color:var(--faint);letter-spacing:.12em;font-weight:600}
.plan-row-title{font-weight:600;font-size:13px}
.plan-row-sub{font-size:11.5px}

.agr-form,.res-form{gap:8px}
.agr-form input,.res-form input,.res-form select,.mail-import input,.mail-import select,.transcript-box textarea{border:1px solid var(--line);border-radius:var(--r-s);padding:9px 10px;font-size:13px;min-height:38px;background:#fff}
.agr-form input:focus,.res-form input:focus,.res-form select:focus,.mail-import input:focus,.transcript-box textarea:focus{border-color:var(--teal);box-shadow:0 0 0 3px var(--teal-soft);outline:none}

.requests-block,.gos-block{border-top:1px solid var(--line);margin-top:2px}
.requests-head,.gos-head{min-height:40px;font-size:12px;color:var(--muted);font-weight:600}
.requests-head:hover,.gos-head:hover{color:var(--ink)}

.chatbox{flex-wrap:nowrap}
.chatbox input#chatinput{min-width:0}
.item.agreement .check{border-radius:5px}

/* Пустое состояние внутри карточки — по центру, компактно */
.right-column>.panel>.empty-state{text-align:left}

/* --- v17.3: разгрузка шапки, спокойные пузыри, пустые состояния -------- */
.topbar-stats{gap:2px;align-items:center}
.chip{background:none;border:0;border-radius:0;padding:0;font-size:12.5px;color:var(--muted);gap:5px}
.chip+.chip::before{content:'·';color:var(--faint);margin:0 7px 0 3px}
.chip b{color:var(--ink);font-weight:700}
.chip-warn,.chip-warn b{color:var(--coral-ink)}
.topbar-date{color:var(--ink-soft)}
.logout{border-color:transparent;background:transparent}
.logout:hover{background:#f1f5f4;border-color:transparent}

.nav button.active{background:transparent;color:var(--teal-ink);font-weight:650;box-shadow:inset 0 -2px 0 var(--teal)}
.nav button:hover{background:#f2f5f4;color:var(--ink)}
.nav .nav-ico{opacity:.55}

.bubble.me{background:var(--teal-soft);border-color:#cfe8e3;color:var(--teal-ink)}
.bubble.me .attach-size{color:var(--muted)}
.chip-sm{border-radius:var(--r-s)}

.empty-state{text-align:left;display:block}
.empty-state img{max-width:40px}

.money-total{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:2px 0 12px;border-bottom:1px solid var(--line);margin-bottom:4px}
.money-total span{font-size:12px;color:var(--muted)}
.money-total b{font-size:20px;font-weight:750;letter-spacing:-.02em}

@media(max-width:1024px){
  .starter-chips{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding-bottom:2px}
  .starter-chips::-webkit-scrollbar{display:none}
  .chip-sm{flex:0 0 auto}
}

/* --- v17.4: компактная шапка и мобильный чат без лишней навигации ------- */
.topbar{padding:calc(6px + env(safe-area-inset-top)) max(var(--gutter),env(safe-area-inset-right)) 4px max(var(--gutter),env(safe-area-inset-left));gap:4px}
.topbar-row{padding-bottom:2px}
.topbar-stats{gap:0}
.chip{font-size:12px}
.chip b{font-weight:650}
@media(max-width:1024px){
  .shell[data-view="chat"] .nav{display:flex}
  .view-tabs{padding-top:4px;padding-bottom:calc(4px + env(safe-area-inset-bottom))}
  .view-tabs button{min-height:var(--tap);border-radius:var(--r-m);background:#f3f5f5;color:var(--muted);font-weight:600}
  .view-tabs button.active{background:var(--teal);color:#fff}
  .chatbox .mic{min-width:var(--tap);min-height:var(--tap)}
  .chatbox .primary{min-height:var(--tap)}
  .requests-head,.gos-head{min-height:var(--tap)}
  .nav button{min-height:var(--tap)}
}

@media(min-width:1025px){
  .topbar-row{min-height:34px}
  .logout{min-height:34px;padding:6px 11px}
  .brand-mini{font-size:15px}
}

/* --- v17.5: финальная доводка ------------------------------------------ */
.empty-state img{display:none}
.smart-nudge{background:#f8fafc;border:1px solid var(--line);color:var(--muted);font-weight:500}
.smart-nudge b{color:var(--ink)}
.smart-nudge:hover{background:#f1f5f4;border-color:var(--line-strong)}
.smart{padding:2px 8px}
.smart-row{margin-top:3px}
@media(max-width:480px){
  .nav-ico{display:none}
  .nav button{padding:8px 11px}
}

/* --- v17.6: мобильное меню разделов — компактный sheet вместо ленты ----- */
.navsheet-open{display:none;align-items:center;justify-content:center;width:var(--tap);height:var(--tap);border-radius:var(--r-s);background:transparent;color:var(--ink);flex:0 0 auto}
.navsheet-open:hover{background:#f1f5f4}
.navsheet{position:fixed;left:0;right:0;bottom:0;z-index:var(--z-modal);background:var(--card);border-top:1px solid var(--line);border-radius:16px 16px 0 0;box-shadow:var(--shadow-float);max-height:82dvh;display:flex;flex-direction:column;transform:translateY(12px);opacity:0;transition:opacity var(--anim-slow),transform var(--anim-slow);padding-bottom:env(safe-area-inset-bottom)}
.navsheet.show{transform:none;opacity:1}
.navsheet-head{display:flex;justify-content:space-between;align-items:center;padding:14px 16px 8px;border-bottom:1px solid var(--line)}
.navsheet-list{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:12px 12px 18px;overflow-y:auto}
.navsheet-list button{display:flex;align-items:center;gap:10px;min-height:48px;padding:0 12px;border-radius:var(--r-m);background:#f7f9f9;color:var(--ink);font-size:14px;font-weight:600;text-align:left}
.navsheet-list button:hover{background:#eef3f2}
.navsheet-list button.active{background:var(--teal-soft);color:var(--teal-ink)}
.navsheet-list .nav-ico{width:20px;height:20px}

@media(max-width:1024px){
  .nav{display:none}
  .navsheet-open{display:inline-flex}
}

/* --- v17.7: мобильная шапка, компактный композер, план и чипы ---------- */
.brand-mini{white-space:nowrap}
@media(max-width:1024px){
  .topbar-date{display:none}
  .topbar-status{display:none}
  .topbar-left{gap:6px}
  .logout{padding:7px 10px}
  .chatbox{padding:5px 5px 5px 12px}
  .chatbox .primary{font-size:0;min-width:var(--tap);min-height:var(--tap);padding:0;display:inline-flex;align-items:center;justify-content:center}
  .chatbox .primary::after{content:'↑';font-size:19px;font-weight:700;line-height:1}
}

/* План: убираем дробящие линии, ритм задаётся отступами */
.plan-toolbar{border-bottom:0;padding:2px 0 6px}
.plan-list{border-top:1px solid var(--line)}
.plan-row{border-top:0;padding:8px 0}
.plan-row+.plan-row{border-top:1px solid var(--line)}
.plan-group{margin-top:10px}

/* Чипы быстрых действий — без «проволочной» рамки */
.chip-sm{border:0;background:#eef2f1;color:var(--ink-soft)}
.chip-sm:hover{background:var(--teal-soft);color:var(--teal-ink)}

/* Плотность рабочей карточки: уже и собраннее */
@media(min-width:1025px){
  .right-column{--content-measure:clamp(620px,54vw,900px)}
}

/* --- v17.8: монохромная навигация, мелкая огранка списков -------------- */
.nav .nav-ico{filter:grayscale(1);opacity:.45}
.nav button.active .nav-ico,.nav button:hover .nav-ico{filter:grayscale(0);opacity:.85}
.nav button.active{box-shadow:inset 0 -2px 0 var(--teal)}

.check{width:16px;height:16px;border-radius:4px;border:1px solid var(--ctrl-line);margin-top:2px}
.check.done{border-color:var(--teal)}
.item{border-top-color:#f1f5f9}
.item+.item{border-color:#f1f5f9}
.tag{border-radius:4px;font-size:10.5px}
.itemtitle{font-size:13px}

.money-total b{font-size:26px}

.chip{font-variant-numeric:tabular-nums}
.topbar-stats{background:#f8fafb;border:1px solid var(--line);border-radius:var(--r-s);padding:3px 10px}
.chip+.chip::before{margin:0 7px 0 3px}

/* --- v17.9: чипы над композером, плоские аккордеоны, поиск по базовой --- */
.chatbox-wrap .starter-chips{margin:6px 0 2px}
.requests-head,.gos-head{background:transparent;border:0}
.requests-block,.gos-block{background:transparent}
.search{height:var(--tap)}
@media(min-width:1025px){.panelhead .search{width:200px}}

/* --- v18: компактный мобильный segmented, маска скролла, чистый подвал -- */
@media(max-width:1024px){
  .seg,.starter-chips,.strip-row{mask-image:linear-gradient(90deg,#000 calc(100% - 26px),transparent)}
  .view-tabs{background:transparent;border-top:0;justify-content:center;padding:6px 12px calc(8px + env(safe-area-inset-bottom));gap:0;pointer-events:none}
  .view-tabs button{pointer-events:auto;flex:0 1 190px;max-width:190px;min-height:var(--tap);font-size:13px;font-weight:600;background:#eef2f1;color:var(--muted)}
  .view-tabs button:first-child{border-radius:99px 0 0 99px}
  .view-tabs button:last-child{border-radius:0 99px 99px 0}
  .view-tabs button.active{background:var(--teal);color:#fff}
  .navsheet-open{width:var(--tap);height:var(--tap)}
}

/* --- v19: тело задачи (объяснение для пользователя) --------------------- */
/* Свёрнуто до 3 строк; «Показать полностью» (класс .md-toggle, тот же тумблер,
   что в чате) снимает ограничение. Раскрытие — класс .open на самом теле. */
.item-body{margin:5px 0 0;font-size:12.5px;line-height:1.5;color:var(--muted);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.item-body.open{-webkit-line-clamp:unset;overflow:visible;display:block}
.item-body+.md-toggle{margin-top:6px}
.item-body a{color:var(--teal-ink)}

/* --- v20: раздел «Банк» (СМС с телефона: операции и балансы) ------------- */
.bank-bals{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.bank-bal{display:inline-flex;align-items:baseline;gap:8px;padding:8px 12px;background:var(--teal-soft);border-radius:var(--r-m);min-width:0}
.bank-bal b{font-size:15px;color:var(--teal-ink)}
.sms-item .item-body{-webkit-line-clamp:4}

/* --- v21: контекст задачи (модель контекста, фаза A) --------------------
   refs[] — откуда пришло, context[] — таймлайн. Свёрнуто по умолчанию, чтобы
   не раздувать список; один акцент (--teal), без новых слоёв (docs/DESIGN.md). */
.ctx{margin-top:6px}
.ctx-toggle{display:inline-flex;align-items:center;gap:6px;min-height:var(--tap);padding:6px 12px;border:1px solid var(--line);border-radius:99px;background:#f8fafb;color:var(--muted);font-size:11.5px;font-weight:600}
.ctx-toggle:hover{border-color:var(--teal);color:var(--teal-ink);background:var(--teal-soft)}
.ctx-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:99px;background:var(--teal-soft);color:var(--teal-ink);font-size:10.5px;font-weight:800}
.ctx-chev{font-size:11px;color:var(--faint);transition:transform var(--anim)}
.ctx-toggle[aria-expanded="true"] .ctx-chev{transform:rotate(180deg)}
.ctx-body{margin-top:8px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r-m);background:#fbfcfc}
.ctx-refs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.ctx-ref{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:99px;background:var(--teal-soft);color:var(--teal-ink);font-size:10.5px;font-weight:700}
.ctx-timeline{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px}
.ctx-item{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:baseline;font-size:12px;line-height:1.45}
.ctx-when{color:var(--faint);font-size:10.5px;white-space:nowrap;font-variant-numeric:tabular-nums}
.ctx-who{flex:none;font-size:12px}
.ctx-text{flex:1 1 220px;min-width:0;color:var(--ink-soft)}
.ctx-created .ctx-text{color:var(--muted)}
@media(max-width:480px){.ctx-text{flex-basis:100%}}

/* --- Правка записи в карточке (.card-edit) — канон, один акцент --------- */
.card-edit{margin:6px 0 2px}
.ce-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.ce-field{display:grid;gap:4px;font-size:11px;font-weight:700;color:var(--muted)}
.ce-field input,.ce-field select,.ce-field textarea{border:1px solid var(--line);border-radius:var(--r-s);padding:9px 10px;font:inherit;font-size:13px;min-height:38px;background:#fff;color:var(--ink);min-width:0;outline:none}
.ce-field textarea{min-height:84px;resize:vertical;line-height:1.5}
.ce-field input:focus,.ce-field select:focus,.ce-field textarea:focus{border-color:var(--teal);box-shadow:0 0 0 3px var(--teal-soft)}
.ce-full{grid-column:span 2}
.ce-actions{display:flex;gap:8px;align-items:center;margin-top:10px;flex-wrap:wrap}
.ce-actions .primary,.ce-actions .ghost{min-height:var(--tap)}
.ce-actions .ghost{padding:8px 10px}
.ce-preview{margin-top:7px;padding:10px;background:#f6faf8;border:1px solid var(--line);border-radius:var(--r-s)}
.ce-preview:empty{display:none}
/* Markdown-тело задачи: компактная типографика внутри карточки. */
.item-body{margin:6px 0 0;font-size:12px;line-height:1.55;color:var(--muted)}
.item-body.md p{margin:0 0 6px}
.item-body.md p:last-child{margin-bottom:0}
.item-body.md ul,.item-body.md ol{margin:4px 0;padding-left:18px}
.item-body.md code{background:#eef5f1;border-radius:4px;padding:1px 4px;font-size:11px}
.item-body.md pre{background:#eef5f1;border-radius:var(--r-s);padding:8px;overflow:auto}
.item-body.md table{border-collapse:collapse;font-size:11px}
.item-body.md th,.item-body.md td{border:1px solid var(--line);padding:3px 6px}
.item-body.md blockquote{margin:4px 0;padding-left:9px;border-left:3px solid var(--teal-soft);color:var(--muted)}
.item.editing{padding:12px 0}
@media(max-width:1024px){.ce-field input,.ce-field select,.ce-field textarea{font-size:var(--field-font)}}
@media(max-width:480px){.ce-grid{grid-template-columns:1fr}.ce-full{grid-column:span 1}}

/* --- Офлайн-режим (UI.OFFLINE.1) -------------------------------------------
   Обрыв сети — не повод выбрасывать на форму входа и не «пустой экран»:
   показываем оболочку с последними данными и тонкий баннер в шапке. Баннер
   живёт третьей строкой .topbar (grid), поэтому высота шапки растёт — на ≥1025
   компенсируем это токенами sticky-чата, иначе композер уезжал бы под низ. */
.offline-banner{display:flex;align-items:center;gap:6px;margin:2px 0 0;padding:4px 10px;border-radius:var(--r-s);background:var(--yellow-soft);color:var(--yellow-ink);font-size:11px;font-weight:600;line-height:1.3}
.offline-banner[hidden]{display:none}
html.is-offline{--topbar-h:calc(54px + 28px);--chat-top-desktop:calc(118px + 28px)}
