/* ─────────────────────────────────────────────────────────────
   Kuvalda+ — handoff stylesheet
   Load AFTER styles_01.css and any css/*.css. Every rule is scoped to
   .kv-page (or a .kv-* class), so nothing here can reach an existing page.
   No bare button / a / input / h1 selectors. No [hidden], [inert], :focus
   or state-class overrides. Tokens carry fallbacks so the file works even
   if the design-system token layer is not linked.
   ───────────────────────────────────────────────────────────── */

/* ── Page shell ── */
.kv-page{--kv-fg:var(--foreground,#1c1917);--kv-muted:var(--muted-foreground,#6b6259);--kv-bg:var(--background,#faf8f5);--kv-card:var(--card,#fff);--kv-sand:var(--muted,#f2ede6);--kv-line:var(--border,#e6dfd6);--kv-line-strong:var(--border-strong,#ddd4c8);--kv-primary:var(--primary,#c2410c);--kv-primary-hover:var(--primary-hover,#9a3412);--kv-primary-soft:var(--primary-soft,#fdf3e7);--kv-success:var(--success,#2f9e44);--kv-danger:var(--destructive,#ef4444);--kv-danger-ink:var(--destructive-foreground,#991b1b);--kv-danger-soft:var(--destructive-light,#fef2f2);--kv-danger-line:var(--kv-red-line,#fecaca);--kv-resume:var(--card-resume,#eff5fa);--kv-resume-line:var(--card-resume-border,#bfdbfe);--kv-vacancy:var(--card-vacancy,#fdf3e7);--kv-vacancy-line:var(--card-vacancy-border,#eed4bd);--kv-estimate:var(--card-estimate,#fbf6ee);--kv-warn-soft:var(--warning-light,#fefce8);--kv-warn-line:var(--kv-amber-line,#fde68a);--kv-warn-ink:var(--warning-foreground,#92400e);--kv-r-sm:6px;--kv-r-md:8px;--kv-r-lg:12px;--kv-r-xl:16px;--kv-pad:20px;--kv-gap:10px;--kv-shell:780px;--kv-font:var(--font-sans,'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif);min-height:100vh;margin:0;background:var(--kv-bg);color:var(--kv-fg);font-family:var(--kv-font);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}
.kv-page *,.kv-page *::before,.kv-page *::after{box-sizing:border-box}
.kv-page img,.kv-page svg{max-width:100%}
.kv-page p,.kv-page li,.kv-page h1,.kv-page h2,.kv-page h3{overflow-wrap:anywhere}
.kv-shell{width:100%;max-width:var(--kv-shell);margin:0 auto;padding:24px 16px 48px}
.kv-vh{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* ── Header ── */
.kv-header{position:sticky;top:0;z-index:100;background:var(--surface-header,rgba(250,248,245,.92));border-bottom:1px solid var(--kv-line);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.kv-header__row{display:flex;align-items:center;gap:8px;min-height:64px;max-width:var(--kv-shell);margin:0 auto;padding:0 16px;min-width:0}
.kv-header__back{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;min-width:44px;flex-shrink:0;margin-left:-8px;border-radius:var(--kv-r-md);color:var(--kv-fg);text-decoration:none;font-size:20px}
.kv-header__back:hover{background:var(--kv-sand)}
.kv-header__back img{width:40px;height:40px;object-fit:contain}
.kv-header__title{min-width:0;margin:0;font-size:1.125rem;font-weight:600;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kv-header__mid{flex:1 1 auto;display:flex;justify-content:center;min-width:0;overflow:hidden}
.kv-header__end{display:flex;align-items:center;gap:8px;flex-shrink:0;min-width:0}
.kv-logo{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 4px;border-radius:var(--kv-r-md);font-size:1.25rem;font-weight:600;line-height:1;color:var(--kv-fg);text-decoration:none;white-space:nowrap}
.kv-logo:hover{color:var(--kv-fg);text-decoration:none}
.kv-logo img{width:24px;height:24px;object-fit:contain}
.kv-logo span{color:var(--kv-primary)}
.kv-avatar{width:36px;height:36px;flex-shrink:0;border-radius:50%;border:1px solid var(--kv-line);background:var(--kv-sand);object-fit:cover;display:inline-grid;place-items:center;font-size:13px;font-weight:600;color:var(--kv-muted);overflow:hidden}
.profile-header-avatar .kv-avatar[hidden]{display:none}
.kv-nav-toggle{display:inline-grid;place-items:center;width:44px;height:44px;flex-shrink:0;padding:0;background:transparent;border:1px solid var(--kv-line);border-radius:var(--kv-r-md);color:var(--kv-muted);font:inherit;cursor:pointer}
.kv-nav-toggle[aria-expanded="true"]{background:var(--kv-primary-soft);border-color:var(--kv-primary);color:var(--kv-primary)}
.kv-header__nav{border-top:1px solid var(--kv-line);background:var(--kv-bg);padding:12px 16px;max-width:var(--kv-shell);margin:0 auto;display:grid;gap:4px}
.kv-header__nav a{display:flex;align-items:center;min-height:44px;padding:0 8px;border-radius:var(--kv-r-md);color:var(--kv-fg);text-decoration:none}
.kv-header__nav a:hover{background:var(--kv-sand);text-decoration:none}

/* ── Section heading ── */
.kv-section{display:flex;align-items:flex-start;gap:12px;margin:0 0 16px}
.kv-section__icon{width:50px;height:50px;flex-shrink:0;object-fit:contain;margin-top:-2px}
.kv-section__body{flex:1;min-width:0}
.kv-section__title{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-height:22px;margin:0;font-size:1.25rem;font-weight:600;line-height:1.3}
.kv-section__desc{margin:4px 0 0;font-size:13px;line-height:1.5;color:var(--kv-muted)}
.kv-section__action{flex-shrink:0}
.kv-h3{margin:0 0 12px;font-size:1.25rem;font-weight:600;line-height:1.3}

/* ── Buttons ── */
/* 44px — минимум для пальца по гайду §5. Плотность даётся паддингом, не высотой. */
.kv-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 20px;border:1px solid transparent;border-radius:var(--kv-r-md);background:var(--kv-primary);color:#fff;font-family:inherit;font-size:14px;font-weight:500;line-height:1;text-decoration:none;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease}
.kv-btn:hover{background:var(--kv-primary-hover);color:#fff;text-decoration:none}
.kv-btn[disabled],.kv-btn[aria-disabled="true"]{opacity:.5;cursor:not-allowed}
.kv-btn--secondary{background:var(--kv-bg);color:var(--kv-fg);border-color:var(--kv-line)}
.kv-btn--secondary:hover{background:var(--kv-sand);border-color:var(--kv-line-strong);color:var(--kv-fg)}
.kv-btn--ghost{background:transparent;color:var(--kv-muted);border-color:transparent}
.kv-btn--ghost:hover{background:var(--kv-sand);color:var(--kv-fg)}
.kv-btn--danger{background:var(--kv-danger);color:#fff}
.kv-btn--danger:hover{background:var(--destructive-hover,#dc2626);color:#fff}
.kv-btn--danger-quiet{background:transparent;color:var(--destructive-hover,#dc2626);border-color:var(--kv-danger-line)}
.kv-btn--danger-quiet:hover{background:var(--kv-danger-soft);color:var(--destructive-hover,#dc2626)}
/* 44px — минимум для пальца (гайд §5). Компактность даётся паддингом и кеглем,
   а не высотой. */
.kv-btn--sm{min-height:44px;padding:0 16px;font-size:13px}
.kv-btn--lg{min-height:48px}
.kv-btn--icon{width:44px;min-width:44px;padding:0}
.kv-btn--block{width:100%}
.kv-iconbtn{display:inline-grid;place-items:center;width:44px;height:44px;min-width:44px;flex-shrink:0;padding:0;background:var(--kv-bg);border:1px solid var(--kv-line);border-radius:var(--kv-r-md);color:var(--kv-muted);cursor:pointer}
.kv-iconbtn:hover{border-color:var(--kv-primary);color:var(--kv-primary)}
.kv-iconbtn[aria-pressed="true"]{background:var(--kv-primary-soft);border-color:var(--kv-primary);color:var(--kv-primary)}
.kv-toolbar{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px}
.kv-toolbar .kv-btn[aria-pressed="true"]{background:var(--kv-primary-soft);border-color:var(--kv-primary);color:var(--kv-primary-hover)}

/* ── Cards ── */
.kv-card{min-width:0;padding:var(--kv-pad);background:var(--kv-card);border:1px solid var(--kv-line);border-radius:var(--kv-r-xl);transition:border-color .2s ease,box-shadow .2s ease}
.kv-card--resume{background:var(--kv-resume);border-color:var(--kv-resume-line)}
.kv-card--vacancy{background:var(--kv-vacancy);border-color:var(--kv-vacancy-line)}
.kv-card--estimate{background:var(--kv-estimate)}
.kv-card--archived{opacity:.85}
.kv-card--archived:hover{opacity:1}
.kv-list{display:grid;gap:var(--kv-gap);margin:0;padding:0;list-style:none;min-width:0}
.kv-card__head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:12px}
.kv-card__title{min-width:0;margin:0 0 4px;font-size:1rem;font-weight:600;line-height:1.5;overflow-wrap:anywhere}
.kv-card__meta{display:flex;align-items:center;flex-wrap:wrap;gap:6px 16px;font-size:13px;line-height:1.5;color:var(--kv-muted)}
.kv-card__meta span{display:inline-flex;align-items:center;gap:4px;min-width:0}
.kv-card__meta svg{flex-shrink:0;opacity:.7}
.kv-card__text{margin:8px 0 0;font-size:14px;line-height:1.6;overflow-wrap:anywhere}
.kv-card__avail{margin:8px 0 0;font-size:13px;font-weight:500;line-height:1.4;color:var(--kv-primary)}
.kv-card__foot{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:12px;padding-top:10px;border-top:1px solid var(--kv-line)}
.kv-card__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-left:auto}
.kv-card__ava{width:44px;height:44px;flex-shrink:0;border-radius:var(--kv-r-md);border:1px solid var(--kv-line);background:var(--kv-sand);object-fit:cover;display:inline-grid;place-items:center;font-size:15px;font-weight:600;color:var(--kv-muted);overflow:hidden}
.kv-salary{display:inline-flex;align-items:center;gap:8px;font-size:15px;font-weight:600;line-height:1.2;color:var(--kv-primary)}

/* ── Status, badges ── */
.kv-status{display:inline-flex;align-items:center;gap:6px;flex-shrink:0;white-space:nowrap;font-size:13px;font-weight:500;line-height:1.2}
.kv-status--active{color:var(--kv-success)}
.kv-status--active::before{content:"";width:8px;height:8px;flex-shrink:0;border-radius:50%;background:var(--kv-success)}
.kv-status--muted{color:var(--kv-muted)}
.kv-status--archived{padding:4px 8px;border-radius:var(--kv-r-sm);background:var(--kv-sand);color:var(--kv-muted);font-size:12px}
.kv-badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.7em;height:22px;padding:0 5px;border-radius:999px;background:var(--kv-primary);color:#fff;font-size:11px;font-weight:700;line-height:1}
.kv-badge--neutral{background:var(--kv-sand);color:var(--kv-muted)}
.kv-pill{display:inline-flex;align-items:center;flex-shrink:0;height:28px;padding:0 12px;border-radius:var(--kv-r-md);background:var(--kv-sand);color:var(--kv-muted);font-size:13px;font-weight:500;line-height:1;white-space:nowrap}

/* ── States ── */
.kv-live{min-height:1.5em;margin:8px 0;font-size:14px;line-height:1.5;color:var(--kv-muted)}
.kv-live.is-error{color:var(--kv-danger-ink)}
.kv-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;width:100%;min-height:160px;padding:48px 20px;background:var(--kv-sand);border:2px dashed var(--kv-line);border-radius:var(--kv-r-xl);color:var(--kv-muted);font-size:15px;line-height:1.5;text-align:center}
.kv-empty--compact{min-height:80px;padding:24px}
.kv-error{max-width:var(--kv-shell);margin:16px auto;padding:20px;background:var(--kv-danger-soft);border:1px solid var(--kv-danger-line);border-radius:var(--kv-r-lg);color:var(--kv-danger-ink);text-align:center}
.kv-error__msg{display:block;margin-bottom:12px;font-size:14px;line-height:1.6}
.kv-notice{display:flex;align-items:flex-start;gap:12px;padding:16px 20px;background:var(--kv-warn-soft);border:1px solid var(--kv-warn-line);border-radius:var(--kv-r-xl);color:var(--kv-warn-ink);font-size:14px;line-height:1.6}
.kv-notice--info{background:var(--kv-sand);border-color:var(--kv-line);color:var(--kv-muted)}
.kv-notice svg{flex-shrink:0;margin-top:3px}
.kv-loader{display:flex;justify-content:center;gap:6px;padding:24px 0}
.kv-loader span{width:8px;height:8px;border-radius:50%;background:var(--kv-primary);animation:kv-dot 1.4s ease-in-out infinite both}
.kv-loader span:nth-child(1){animation-delay:-.32s}
.kv-loader span:nth-child(2){animation-delay:-.16s}
@keyframes kv-dot{0%,80%,100%{transform:scale(.6);opacity:.5}40%{transform:scale(1);opacity:1}}
.kv-skeleton{background:var(--kv-sand);border:1px solid var(--kv-line);border-radius:var(--kv-r-xl);min-height:120px}

/* ── Forms ── */
.kv-field{display:grid;gap:8px;margin-bottom:20px;min-width:0}
.kv-field__label{font-size:15px;font-weight:600;line-height:1.3}
.kv-field__req{margin-left:4px;color:var(--kv-danger)}
.kv-field__row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;min-width:0}
.kv-field__row>.kv-input,.kv-field__row>.kv-textarea{flex:1;min-width:0}
.kv-field__hint{margin:0;font-size:13px;line-height:1.5;color:var(--kv-muted)}
.kv-field__err{margin:0;font-size:13px;line-height:1.4;color:var(--kv-danger-ink)}
.kv-input,.kv-textarea,.kv-select{width:100%;min-height:44px;padding:12px 16px;background:var(--kv-sand);border:1px solid var(--kv-line);border-radius:var(--kv-r-lg);color:var(--kv-fg);font-family:inherit;font-size:15px;line-height:1.5}
.kv-input:focus,.kv-textarea:focus,.kv-select:focus{background:var(--kv-bg);border-color:var(--kv-primary);outline:none}
.kv-input[aria-invalid="true"],.kv-textarea[aria-invalid="true"]{border-color:var(--kv-red-deep,#b42318);outline:2px solid rgba(180,35,24,.15)}
.kv-input[disabled],.kv-textarea[disabled],.kv-select[disabled]{opacity:.6;cursor:not-allowed}
.kv-textarea{min-height:100px;resize:vertical}
.kv-select{appearance:none;-webkit-appearance:none;padding-right:40px;cursor:pointer;background-image:url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236b6259' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right 12px center;background-size:18px}
.kv-input-wrap{position:relative;min-width:0}
.kv-input-wrap>svg{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--kv-muted);pointer-events:none}
.kv-input-wrap .kv-input{padding-left:42px}
.kv-filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;width:100%;margin:0 0 20px;min-width:0}
.kv-filters__wide{grid-column:1 / -1}
.kv-check{display:flex;align-items:flex-start;gap:12px;min-height:44px;cursor:pointer}
.kv-check input{width:20px;height:20px;margin-top:2px;flex-shrink:0;accent-color:var(--kv-primary)}
.kv-check span{font-size:14px;line-height:1.5;padding-top:1px}
.kv-vis{display:inline-flex;border:1px solid var(--kv-line);border-radius:var(--kv-r-md);overflow:hidden}
.kv-vis button{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 16px;background:transparent;border:0;color:var(--kv-muted);font-family:inherit;font-size:14px;font-weight:500;cursor:pointer;white-space:nowrap}
.kv-vis button[aria-pressed="true"]{background:var(--kv-primary-soft);color:var(--kv-primary)}
.kv-vis-note{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--kv-muted);white-space:nowrap}
.kv-vis-note.is-saved{color:var(--kv-success)}
.kv-vis-note.is-error{color:var(--kv-danger-ink)}

/* ── Tabs ── */
.kv-tabs{display:flex;gap:4px;padding:4px;background:var(--kv-sand);border-radius:var(--kv-r-lg);margin:0 0 20px}
.kv-tabs button{flex:1;min-height:44px;padding:12px 16px;background:transparent;border:0;border-radius:var(--kv-r-md);color:var(--kv-muted);font-family:inherit;font-size:15px;font-weight:500;line-height:1;cursor:pointer;text-align:center}
.kv-tabs button[aria-selected="true"]{background:var(--kv-bg);color:var(--kv-fg);box-shadow:0 1px 2px 0 rgb(0 0 0/.05)}
.kv-tabs--underline{display:flex;gap:4px;padding:0;background:transparent;border-bottom:1px solid var(--kv-line);border-radius:0}
.kv-tabs--underline button{flex:0 0 auto;border-radius:0;border-bottom:2px solid transparent;margin-bottom:-1px;background:transparent}
.kv-tabs--underline button[aria-selected="true"]{background:transparent;border-bottom-color:var(--kv-primary);color:var(--kv-primary);box-shadow:none}

/* ── Cabinet overview rows ── */
.kv-row{display:flex;align-items:center;gap:16px;padding:var(--kv-pad);background:var(--kv-card);border:1px solid var(--kv-line);border-radius:var(--kv-r-xl)}
.kv-row__icon{width:56px;height:56px;flex-shrink:0;object-fit:contain}
.kv-row__body{flex:1;min-width:0}
.kv-row__title{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-height:22px;margin:0;font-size:1rem;font-weight:600;line-height:1.3}
.kv-row__desc{margin:2px 0 0;font-size:14px;line-height:1.6;color:var(--kv-muted)}
.kv-row__end{flex-shrink:0}
.kv-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.kv-chip{display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:999px;background:var(--kv-sand);color:var(--kv-muted);font-size:12px;font-weight:500;white-space:nowrap}

/* ── Relationship strips ── */
.kv-strips{margin-top:12px;padding-top:12px;border-top:1px solid var(--kv-line);min-width:0}
.kv-strip{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;min-width:0;padding:10px 12px;background:rgba(255,255,255,.6);border:1px solid var(--kv-line);border-radius:var(--kv-r-md)}
.kv-strip__text{display:flex;align-items:center;flex-wrap:wrap;gap:6px 16px;flex:1;min-width:0}
.kv-strip__text strong{font-size:14px;font-weight:600;line-height:1.3;overflow-wrap:anywhere}
.kv-strip__text span{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--kv-muted)}
.kv-strip__feedback{flex-basis:100%;min-height:0;font-size:13px;color:var(--kv-muted)}

/* ── Profile ── */
.kv-profile{display:flex;align-items:flex-start;gap:24px;flex-wrap:wrap}
.kv-profile__pic{display:grid;gap:12px;justify-items:center}
.kv-profile__pic>img,.kv-profile__pic>.kv-initials{width:150px;height:150px;border-radius:50%;border:1px solid var(--kv-line);background:var(--kv-sand);object-fit:cover}
.kv-initials{display:grid;place-items:center;font-size:54px;font-weight:600;color:var(--kv-muted)}
.kv-profile__body{flex:1;min-width:240px}
.kv-profile__name{margin:0;font-size:1.5rem;font-weight:700;line-height:1.25;overflow-wrap:anywhere}
.kv-profile__role{margin:4px 0 0;font-size:1rem;line-height:1.4;color:var(--kv-muted)}
.kv-profile__about-t{margin:20px 0 8px;font-size:1rem;font-weight:600;line-height:1.3}
.kv-profile__about{margin:0;font-size:15px;line-height:1.6;overflow-wrap:anywhere;white-space:pre-line}
.kv-contacts{display:flex;flex-wrap:wrap;gap:12px 24px;margin-top:20px;font-size:15px;line-height:1.4}
.kv-contacts span{display:inline-flex;align-items:center;gap:8px;min-width:0}
.kv-page a:not([class]){display:inline-block;min-height:44px;line-height:44px}
.kv-privacy{display:flex;align-items:center;gap:8px;margin-top:20px;padding-top:16px;border-top:1px solid var(--kv-line);color:var(--kv-muted);font-size:14px;line-height:1.6}
.kv-setting{display:flex;align-items:center;gap:16px;padding:var(--kv-pad);background:var(--kv-card);border:1px solid var(--kv-line);border-radius:var(--kv-r-xl)}
.kv-setting--danger{background:var(--kv-vacancy);border-color:var(--kv-vacancy-line)}
.kv-setting__icon{display:grid;place-items:center;width:48px;height:48px;flex-shrink:0;border-radius:50%;background:var(--kv-sand);color:var(--kv-muted)}
.kv-setting--danger .kv-setting__icon{background:var(--kv-primary-soft);color:var(--kv-primary)}
.kv-setting__body{flex:1;min-width:0}
.kv-setting__title{margin:0;font-size:1rem;font-weight:600;line-height:1.3}
.kv-setting__desc{margin:2px 0 0;font-size:14px;line-height:1.6;color:var(--kv-muted)}

/* ── Notifications ── */
.kv-notif{padding:14px;background:var(--kv-card);border:1px solid var(--kv-line);border-radius:var(--kv-r-lg);overflow-wrap:anywhere}
.kv-notif.is-unread{background:#fffaf0;border-left:4px solid var(--kv-primary)}
.kv-notif__title{margin:0 0 6px;font-size:1rem;font-weight:600;line-height:1.3}
.kv-notif__body{margin:0 0 10px;font-size:14px;line-height:1.6;color:var(--kv-muted)}
.kv-notif__actions{display:flex;flex-wrap:wrap;gap:8px}

/* ── Chat ── */
.kv-chat{display:grid;grid-template-columns:minmax(300px,38%) minmax(0,1fr);gap:16px;align-items:start;min-width:0}
.kv-pane{display:flex;flex-direction:column;min-width:0;background:var(--kv-card);border:1px solid var(--kv-line);border-radius:var(--kv-r-lg);overflow:hidden}
.kv-pane--list{max-height:640px}
.kv-pane--thread{min-height:460px}
.kv-pane__search{padding:12px;border-bottom:1px solid var(--kv-line)}
.kv-convs{display:grid;gap:2px;align-content:start;padding:8px;margin:0;overflow-y:auto;list-style:none;min-height:0}
.kv-convs__group{margin:6px 8px 2px;font-size:13px;font-weight:500;line-height:1;color:var(--kv-muted)}
.kv-conv{display:flex;align-items:center;gap:12px;width:100%;min-height:44px;padding:12px;background:transparent;border:1px solid transparent;border-radius:var(--kv-r-lg);color:inherit;font-family:inherit;text-align:left;cursor:pointer}
.kv-conv[aria-pressed="true"]{background:var(--kv-primary-soft);border-color:var(--kv-primary)}
.kv-conv:hover{background:var(--kv-sand)}
.kv-conv[aria-pressed="true"]:hover{background:var(--kv-primary-soft)}
.kv-conv__ava{width:40px;height:40px;flex-shrink:0;border-radius:50%;border:1px solid var(--kv-line);background:var(--kv-sand);object-fit:cover;display:grid;place-items:center;font-size:14px;font-weight:600;color:var(--kv-muted);overflow:hidden}
.kv-conv__body{flex:1;min-width:0;display:grid;gap:2px}
.kv-conv__title{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;overflow-wrap:anywhere;font-size:14px;font-weight:600;line-height:1.3}
.kv-conv__meta{font-size:13px;line-height:1.4;color:var(--kv-muted);overflow-wrap:anywhere}
.kv-conv__meta.is-blocked{color:var(--kv-primary)}
.kv-conv__end{display:grid;justify-items:end;gap:4px;flex-shrink:0}
.kv-thread__head{display:flex;align-items:flex-start;gap:12px;padding:12px;border-bottom:1px solid var(--kv-line)}
.kv-thread__ava{width:48px;height:48px;flex-shrink:0;border-radius:50%;border:1px solid var(--kv-line);background:var(--kv-sand);object-fit:cover;display:grid;place-items:center;font-size:17px;font-weight:600;color:var(--kv-muted);overflow:hidden}
.kv-thread__body{flex:1;min-width:0}
.kv-thread__title{display:flex;align-items:center;gap:8px;margin:0;font-size:1rem;font-weight:600;line-height:1.3;overflow-wrap:anywhere}
.kv-thread__role{margin:2px 0 0;font-size:13px;line-height:1.4;color:var(--kv-muted)}
.kv-thread__link{display:inline-flex;align-items:center;min-height:44px;margin-top:2px;font-size:13px;color:var(--kv-primary);text-decoration:underline;text-underline-offset:2px}
.kv-msgs{flex:1;min-height:0;overflow-y:auto;padding:12px}
.kv-msg{display:flex;gap:8px;align-items:flex-end;margin:8px 0}
.kv-msg--out{justify-content:flex-end}
.kv-msg--sys{justify-content:center}
.kv-msg__ava{width:32px;height:32px;flex-shrink:0;border-radius:50%;object-fit:cover;background:var(--kv-sand);border:1px solid var(--kv-line)}
.kv-bubble{max-width:min(82%,44rem);padding:10px 12px;background:var(--kv-card);border:1px solid var(--kv-line);border-radius:var(--kv-r-lg);font-size:14px;line-height:1.6;overflow-wrap:anywhere}
.kv-msg--out .kv-bubble{background:#fff1e8;border-color:var(--kv-vacancy-line)}
.kv-msg--sys .kv-bubble{max-width:100%;background:var(--kv-sand);text-align:center}
.kv-bubble p{margin:0;white-space:pre-wrap}
.kv-bubble time{display:flex;align-items:center;gap:4px;margin-top:4px;font-size:12px;line-height:1;color:var(--kv-muted)}
.kv-msg--out .kv-bubble time{justify-content:flex-end}
.kv-composer{display:grid;gap:8px;margin:0;padding:12px;background:var(--kv-card);border-top:1px solid var(--kv-line)}
.kv-composer__row{display:flex;align-items:center;justify-content:space-between;gap:12px}
.kv-composer--off{padding:12px;color:var(--kv-muted);font-size:14px;line-height:1.6;text-align:center;border-top:1px solid var(--kv-line)}
.kv-menu{position:absolute;top:48px;right:0;z-index:20;min-width:250px;padding:6px;margin:0;background:var(--kv-card);border:1px solid var(--kv-line);border-radius:var(--kv-r-lg);box-shadow:0 10px 15px -3px rgb(0 0 0/.1);list-style:none}
.kv-menu button{display:flex;align-items:center;gap:12px;width:100%;min-height:44px;padding:0 12px;background:transparent;border:0;border-radius:var(--kv-r-md);color:var(--kv-fg);font-family:inherit;font-size:14px;text-align:left;cursor:pointer}
.kv-menu button:hover{background:var(--kv-sand)}
.kv-menu button.is-danger{color:var(--kv-primary)}

/* ── Drawer ── */
.kv-drawer{position:fixed;inset:0;z-index:10030;display:flex;justify-content:flex-end;background:var(--surface-scrim,rgba(28,25,23,.52))}
.kv-drawer[hidden]{display:none}
.kv-drawer__panel{display:grid;grid-template-rows:auto minmax(0,1fr) auto;width:min(100%,560px);height:100dvh;overflow:hidden;background:var(--kv-bg);border-left:1px solid var(--kv-line);box-shadow:-18px 0 42px rgba(28,25,23,.18)}
.kv-drawer__head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 18px;border-bottom:1px solid var(--kv-line)}
.kv-drawer__head h2{margin:0;font-size:1.125rem;font-weight:600;line-height:1.3}
.kv-drawer__body{min-width:0;min-height:0;overflow:auto;padding:16px}
.kv-drawer__foot{display:grid;border-top:1px solid var(--kv-line)}
.kv-drawer__foot>a{display:flex;align-items:center;justify-content:center;min-height:44px;padding:10px 18px;color:var(--kv-primary);font-size:14px;font-weight:600;line-height:1.3;text-align:center;text-decoration:none}
.kv-drawer__foot>a:hover{background:var(--kv-sand);text-decoration:none}
.kv-drawer .kv-chat{grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:12px}
.kv-drawer .kv-pane--list{max-height:none}
.kv-drawer .kv-conv__ava{display:none}

/* ── Dialog ── */
.kv-dialog{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:16px;background:var(--surface-scrim-modal,rgba(0,0,0,.5))}
.kv-dialog[hidden]{display:none}
.kv-dialog__panel{position:relative;display:flex;flex-direction:column;width:100%;max-width:500px;max-height:calc(100dvh - 48px);overflow:hidden;background:var(--kv-bg);border:1px solid var(--kv-line);border-radius:var(--kv-r-xl);box-shadow:0 20px 25px -5px rgb(0 0 0/.1)}
.kv-dialog__panel--sm{max-width:420px}
.kv-dialog__head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:20px;border-bottom:1px solid var(--kv-line)}
.kv-dialog__head h2{margin:0;font-size:1.125rem;font-weight:600;line-height:1.3}
.kv-dialog__body{padding:20px;overflow-y:auto}
.kv-dialog__foot{display:flex;justify-content:flex-end;gap:12px;flex-wrap:wrap;padding:20px;border-top:1px solid var(--kv-line)}
.kv-dialog__ring{display:grid;place-items:center;width:72px;height:72px;margin:0 auto 16px;border:2px solid var(--kv-vacancy-line);border-radius:50%;background:linear-gradient(135deg,#fdf3e7 0%,#f6e3d3 100%);color:var(--kv-primary)}
.kv-dialog__ring--danger{border-color:var(--kv-danger-line);background:var(--kv-danger-soft);color:var(--destructive-hover,#dc2626)}
.kv-dialog__t{margin:0 0 12px;font-size:1.125rem;font-weight:600;line-height:1.3;text-align:center}
.kv-dialog__p{margin:0 0 20px;font-size:14px;line-height:1.6;color:var(--kv-muted);text-align:center}
.kv-dialog__err{margin:0 0 16px;padding:12px 16px;background:var(--kv-danger-soft);border:1px solid var(--kv-danger-line);border-radius:var(--kv-r-md);color:var(--kv-danger-ink);font-size:14px;line-height:1.5}

/* ─────────────── Responsive ───────────────
   Boundaries required by the technical guide §5: 768 (tablet), 680 (chat
   collapse), 480 (phone), 360 (narrow + 200% reflow). */
@media (max-width:768px){
  .kv-page{--kv-pad:16px}
  .kv-header__row{min-height:56px}
  .kv-shell{padding:20px 16px 40px}
  .kv-filters{grid-template-columns:minmax(0,1fr)}
  .kv-filters__wide{grid-column:auto}
  .kv-profile__pic>img,.kv-profile__pic>.kv-initials{width:120px;height:120px}
  .kv-initials{font-size:44px}
}
@media (max-width:680px){
  .kv-chat,.kv-drawer .kv-chat{grid-template-columns:minmax(0,1fr)}
  .kv-pane--list{max-height:none}
  /* Below 680 the inbox is two views, not two columns. */
  .kv-page[data-inbox-view="list"] .kv-pane--thread{display:none}
  .kv-page[data-inbox-view="thread"] .kv-pane--list{display:none}
  .kv-pane--thread{min-height:0;border:0;border-radius:0}
  .kv-pane--thread .kv-msgs{max-height:none}
}
@media (max-width:480px){
  .kv-page{--kv-pad:12px;--kv-gap:8px}
  .kv-header__row{min-height:52px;padding:0 12px;gap:4px}
  .kv-header__title{display:none}
  /* Знак остаётся, слово уходит: 44px тап-таргет сохраняется. */
  .kv-logo{font-size:0;gap:0;min-width:44px;justify-content:center}
  .kv-logo img{width:28px;height:28px}
  .kv-logo span{display:none}
  .kv-header__back{margin-left:-4px}
  .kv-header__back img{width:32px;height:32px}
  .kv-avatar{width:32px;height:32px}
  .kv-shell{padding:16px 12px 32px}
  .kv-card__head{flex-direction:column;gap:8px}
  .kv-card__actions{margin-left:0;width:100%}
  .kv-card__actions>.kv-btn{flex:1 1 auto}
  .kv-row{flex-wrap:wrap}
  .kv-row__end{width:100%}
  .kv-row__end>.kv-btn{width:100%}
  .kv-dialog__foot{flex-direction:column-reverse}
  .kv-dialog__foot>.kv-btn{width:100%}
  .kv-drawer__panel{width:100%;border-left:0}
  .kv-profile{gap:16px}
  .kv-profile__body{min-width:0}
  .kv-section{flex-wrap:wrap}
  .kv-section__action{width:100%}
}
@media (max-width:360px){
  .kv-page{--kv-pad:10px}
  .kv-shell{padding:12px 8px 24px}
  .kv-header__row{padding:0 8px}
  .kv-header__end .kv-btn{padding:0 10px;font-size:12px}
  .kv-card__title,.kv-row__title{font-size:.9375rem}
  .kv-section__title,.kv-h3{font-size:1.125rem}
  .kv-profile__name{font-size:1.25rem}
  .kv-conv{padding:8px;gap:8px}
  .kv-contacts{gap:8px 16px}
}
@media (prefers-reduced-motion:reduce){
  .kv-page *{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
}

/* Stable unresolved header-avatar slot; resolved content is revealed atomically. */
.profile-header-avatar:not([data-avatar-resolved="true"])::before{
  content:"";display:block;width:36px;height:36px;border:1px solid var(--kv-line);
  border-radius:50%;background:var(--kv-sand);box-sizing:border-box
}
.profile-header-avatar>.kv-avatar{visibility:hidden!important}
.profile-header-avatar:not([data-avatar-resolved="true"])>.kv-avatar{display:none!important}
.profile-header-avatar[data-avatar-resolved="true"]>.kv-avatar{visibility:visible!important}
@media(max-width:480px){.profile-header-avatar:not([data-avatar-resolved="true"])::before{width:32px;height:32px}}

/* Header icon motion: main-menu depth cue without a tile background. */
.kv-header__back,
.back-btn,
.profile-header-avatar {
    background: transparent;
}
.kv-header__back img,
.back-btn img,
.profile-header-avatar .kv-avatar {
    transition: transform 0.25s cubic-bezier(0.16, 1, 0.3, 1), filter 0.25s ease;
    transform-origin: center;
}
.kv-header__back:hover,
.kv-header__back:focus-visible,
.back-btn:hover,
.back-btn:focus-visible,
.profile-header-avatar:hover,
.profile-header-avatar:focus-visible {
    background: transparent;
}
@media (hover: hover) {
    .kv-header__back:hover img,
    .back-btn:hover img,
    .profile-header-avatar:hover .kv-avatar {
        transform: translate(-2px, -3px);
        filter: drop-shadow(5px 7px 5px rgba(28, 25, 23, 0.24));
    }
}
.kv-header__back:focus-visible img,
.back-btn:focus-visible img,
.profile-header-avatar:focus-visible .kv-avatar {
    transform: translate(-2px, -3px);
    filter: drop-shadow(5px 7px 5px rgba(28, 25, 23, 0.24));
}
.kv-header__back:active img,
.back-btn:active img,
.profile-header-avatar:active .kv-avatar {
    transform: translate(-1px, -1px) scale(0.97);
    filter: drop-shadow(2px 3px 3px rgba(28, 25, 23, 0.18));
    transition-duration: 0.12s;
}
@media (prefers-reduced-motion: reduce) {
    .kv-header__back img,
    .back-btn img,
    .profile-header-avatar .kv-avatar {
        transition: none;
    }
    .kv-header__back:hover img,
    .kv-header__back:focus-visible img,
    .kv-header__back:active img,
    .back-btn:hover img,
    .back-btn:focus-visible img,
    .back-btn:active img,
    .profile-header-avatar:hover .kv-avatar,
    .profile-header-avatar:focus-visible .kv-avatar,
    .profile-header-avatar:active .kv-avatar {
        transform: none;
        filter: none;
    }
}
