.cv-shell{min-height:100vh;display:flex;}
.cv-sidebar{width:var(--sidebar-w);flex-shrink:0;background:var(--surface);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:var(--sp-5) var(--sp-4);position:sticky;top:0;height:100vh;}
.cv-sidebar__brand{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-8);padding:0 var(--sp-2);}
.cv-sidebar__logo{width:36px;height:36px;border-radius:var(--r-md);background:var(--brand-500);display:flex;align-items:center;justify-content:center;color:#fff;flex-shrink:0;}
.cv-sidebar__name{font-size:var(--fs-lg);font-weight:var(--fw-bold);}
.cv-nav{display:flex;flex-direction:column;gap:2px;flex:1;}
.cv-nav__item{display:flex;align-items:center;gap:var(--sp-3);padding:11px var(--sp-3);border-radius:var(--r-md);color:var(--ink-2);font-size:var(--fs-md);font-weight:var(--fw-medium);cursor:pointer;transition:all var(--dur) var(--ease);border:none;background:transparent;width:100%;text-align:left;font-family:inherit;}
.cv-nav__item:hover{background:var(--surface-3);color:var(--ink);}
.cv-nav__item--active{background:var(--brand-500);color:#fff;}
.cv-nav__item--active:hover{background:var(--brand-600);color:#fff;}
.cv-nav__item svg{width:20px;height:20px;flex-shrink:0;}
.cv-nav__bottom{margin-top:auto;padding-top:var(--sp-4);border-top:1px solid var(--line);}
.cv-tabbar{position:fixed;bottom:0;left:0;right:0;height:var(--tabbar-h);background:var(--surface);border-top:1px solid var(--line);display:none;align-items:stretch;z-index:100;padding-bottom:env(safe-area-inset-bottom,0);}
.cv-tabbar__item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--ink-3);font-size:11px;font-weight:var(--fw-medium);cursor:pointer;border:none;background:transparent;font-family:inherit;}
.cv-tabbar__item svg{width:22px;height:22px;}
.cv-tabbar__item--active{color:var(--brand-500);}
.cv-main{flex:1;min-width:0;display:flex;flex-direction:column;}
.cv-header{height:var(--header-h);display:flex;align-items:center;justify-content:space-between;padding:0 var(--sp-6);border-bottom:1px solid var(--line);background:var(--surface);position:sticky;top:0;z-index:50;}
.cv-header__title{font-size:var(--fs-xl);font-weight:var(--fw-bold);}
.cv-content{padding:var(--sp-6);max-width:var(--content-max);width:100%;margin:0 auto;}
.cv-ai-fab{position:fixed;right:var(--sp-6);bottom:var(--sp-6);z-index:90;width:56px;height:56px;border-radius:50%;border:none;cursor:pointer;background:var(--brand-500);color:#fff;box-shadow:var(--sh-lg);display:flex;align-items:center;justify-content:center;transition:all var(--dur) var(--ease);}
.cv-ai-fab:hover{background:var(--brand-600);transform:scale(1.05);}
body.mode-app .cv-sidebar{display:none;}
body.mode-app .cv-tabbar{display:flex;}
body.mode-app .cv-main{padding-bottom:var(--tabbar-h);}
body.mode-app .cv-header{padding:0 var(--sp-4);}
body.mode-app .cv-content{padding:var(--sp-4);}
body.mode-app .cv-ai-fab{bottom:calc(var(--tabbar-h) + var(--sp-4));}
@media (max-width:720px){
  .cv-sidebar{display:none;}
  .cv-tabbar{display:flex;}
  .cv-main{padding-bottom:var(--tabbar-h);}
  .cv-header{padding:0 var(--sp-4);}
  .cv-content{padding:var(--sp-4);}
  .cv-ai-fab{bottom:calc(var(--tabbar-h) + var(--sp-4));}
}

/* Карта дышит на всю ширину (списки/карточки остаются ограниченными по центру) */
.cv-content--wide{max-width:100%;}
