/* ==================================================================
   ВГУ Платформа — общий каркас страниц кабинета.
   Палитра: белый, синий ВГУ #404842, серый, жёлтый герба #f5c518.
   Все длины — в design-пикселях кадра 1470 × 900 × --u (масштаб .9 на десктопе).
   ================================================================== */
:root{
  --u:1px;
  --font:"GS",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --ink:#111827;--muted:#5b6170;--icon:#6b7280;--faint:#9aa0ad;
  --line:#e3e6ee;--line-2:#d6dae6;--paper:#ffffff;--paper-2:#f3f4f8;--paper-3:#f8f9fc;--on-ink:#ffffff;
  --blue:#404842;--blue-2:#2c322d;--blue-soft:#ecebe6;--blue-mid:#6b776c;
  --yellow:#f5c518;--yellow-soft:#fff4cc;--yellow-ink:#1a1a1a;--yellow-text:#7a5a00;
  --ok:#1f8a4c;--ok-soft:#e4f4ea;--warn:#b45309;--warn-soft:#fdf1e1;--danger:#b3231b;--danger-soft:#fbe8e7;--info:#3a6ea5;--info-soft:#e6eef8;
  --accent:#404842;--accent-soft:#ecebe6;--warm:#f5c518;
  --glass-border:rgba(255,255,255,.14);
  --shadow-xs:0 1px 2px 0 rgba(16,24,40,.05);--shadow-sm:0 1px 2px rgba(16,24,40,.05),0 6px 18px -8px rgba(16,24,40,.14);--shadow-lg:0 24px 64px -24px rgba(16,24,40,.35);
  --r:calc(12 * var(--u));--r-sm:calc(8 * var(--u));
  --brand-img:url(/assets/img/vsu-main.webp);
}
@media (min-width:740px){
  :root{
    --k:.9;
    --u-floor:min(clamp(.8px, calc(.8px + (1176px - 100vw) / 1180), 1px), max(.8px, calc(100vh / 772), calc(500px - 100vh)));
    --u:calc(var(--k) * min(4px, max(var(--u-floor), min(calc(100vw / 1470), calc(100vh / 900)))));
  }
  @supports (height:100dvh){
    :root{
      --u-floor:min(clamp(.8px, calc(.8px + (1176px - 100vw) / 1180), 1px), max(.8px, calc(100dvh / 772), calc(500px - 100dvh)));
      --u:calc(var(--k) * min(4px, max(var(--u-floor), min(calc(100vw / 1470), calc(100dvh / 900)))));
    }
  }
}
*,*::before,*::after{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font-family:var(--font);background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-size:calc(14 * var(--u));line-height:calc(20 * var(--u))}
button,input,select,textarea{font:inherit;color:inherit}
a{color:inherit;text-decoration:none}
svg{display:block}
img{max-width:100%}
[hidden]{display:none!important}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
h1,h2,h3,h4,p{margin:0}

/* ---------------- оболочка ---------------- */
.shell{display:flex;min-height:100vh;min-height:100dvh;width:100%}
.side{position:relative;flex:0 0 calc(248 * var(--u));display:flex;flex-direction:column;gap:calc(24 * var(--u));padding:calc(24 * var(--u)) calc(16 * var(--u));overflow:hidden;isolation:isolate;color:#fff;background:var(--blue) var(--brand-img) center bottom / cover no-repeat}
.side::before,.side::after{content:"";position:absolute;pointer-events:none;z-index:-1}
.side::before{inset:0;background:linear-gradient(180deg,var(--blue) 0%,var(--blue) 46%,rgba(64,72,66,.78) 72%,rgba(64,72,66,.42) 100%)}
.side::after{left:-30%;bottom:-8%;width:160%;height:46%;background:radial-gradient(closest-side,rgba(245,197,24,.38),rgba(245,197,24,.10) 55%,transparent);mix-blend-mode:screen;filter:blur(calc(8 * var(--u)));animation:bloom 5.5s cubic-bezier(.45,0,.55,1) infinite alternate}
@keyframes bloom{from{opacity:.35;transform:scale(.92)}to{opacity:1;transform:scale(1.1)}}
.logo{display:inline-flex;align-items:center;height:calc(44 * var(--u));gap:calc(12 * var(--u));padding:0 calc(8 * var(--u))}
.logo__mark{width:calc(38 * var(--u));height:calc(44 * var(--u));flex:none;display:grid;place-items:center;filter:drop-shadow(0 calc(1 * var(--u)) calc(3 * var(--u)) rgba(0,0,0,.35))}
.logo__mark img{width:100%;height:100%;object-fit:contain}
.logo__word{font-size:calc(18 * var(--u));line-height:1.1;font-weight:600;letter-spacing:-.02em;color:#fff}
.logo__word b{display:block;font-weight:800;letter-spacing:.01em;color:var(--yellow)}
.logo__word span{display:block;font-size:calc(13 * var(--u));font-weight:400;color:rgba(255,255,255,.7);letter-spacing:0}
.nav{display:flex;flex-direction:column;gap:calc(2 * var(--u))}
.nav__label{margin:calc(8 * var(--u)) calc(12 * var(--u)) calc(6 * var(--u));font-size:calc(11.5 * var(--u));line-height:calc(14 * var(--u));letter-spacing:.06em;text-transform:uppercase;color:rgba(255,255,255,.42)}
.nav__item{display:flex;align-items:center;gap:calc(12 * var(--u));height:calc(38 * var(--u));padding:0 calc(12 * var(--u));border-radius:var(--r-sm);font-size:calc(14.5 * var(--u));line-height:calc(20 * var(--u));font-weight:500;color:rgba(255,255,255,.76);transition:background-color .15s ease,color .15s ease}
.nav__item svg{width:calc(18 * var(--u));height:calc(18 * var(--u));flex:none}
@media (hover:hover){.nav__item:hover{background:rgba(255,255,255,.08);color:#fff}}
.nav__item.is-active{background:rgba(255,255,255,.14);color:#fff;box-shadow:inset calc(3 * var(--u)) 0 0 var(--yellow)}
.nav__item--out{color:rgba(255,255,255,.62)}
.badge{min-width:calc(20 * var(--u));height:calc(20 * var(--u));padding:0 calc(6 * var(--u));border-radius:calc(10 * var(--u));background:var(--yellow);color:var(--yellow-ink);font-size:calc(11.5 * var(--u));line-height:calc(20 * var(--u));font-weight:600;text-align:center;display:inline-block}
.nav__item .badge{margin-left:auto}
.side__bottom{margin-top:auto;display:flex;flex-direction:column;gap:calc(12 * var(--u))}
.legal{margin:0;padding:0 calc(8 * var(--u));font-size:calc(12 * var(--u));line-height:calc(16 * var(--u));color:rgba(255,255,255,.45)}

.main{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;background:var(--paper)}
.top{display:flex;align-items:center;gap:calc(16 * var(--u));height:calc(72 * var(--u));padding:0 calc(32 * var(--u));border-bottom:calc(1 * var(--u)) solid var(--line)}
.top__title{margin:0;font-size:calc(20 * var(--u));line-height:calc(28 * var(--u));font-weight:600;letter-spacing:-.022em;white-space:nowrap}
.top__crumb{font-size:calc(14 * var(--u));line-height:calc(20 * var(--u));color:var(--muted);white-space:nowrap}
.search{position:relative;margin:0 auto;width:calc(360 * var(--u));max-width:36%}
.search svg{position:absolute;left:calc(10 * var(--u));top:50%;transform:translateY(-50%);width:calc(16 * var(--u));height:calc(16 * var(--u));color:var(--icon);pointer-events:none}
.search .input{padding-left:calc(32 * var(--u))}
.icon-btn{width:calc(36 * var(--u));height:calc(36 * var(--u));border:calc(1 * var(--u)) solid var(--line);border-radius:var(--r-sm);background:var(--paper);box-shadow:var(--shadow-xs);display:grid;place-items:center;cursor:pointer;color:var(--icon);position:relative;flex:none}
.icon-btn svg{width:calc(17 * var(--u));height:calc(17 * var(--u))}
.icon-btn .dot{position:absolute;top:calc(7 * var(--u));right:calc(7 * var(--u));width:calc(7 * var(--u));height:calc(7 * var(--u));border-radius:50%;background:var(--yellow);box-shadow:0 0 0 calc(2 * var(--u)) var(--paper)}
@media (hover:hover){.icon-btn:hover{background:var(--paper-2);color:var(--ink)}}
.me{display:flex;align-items:center;gap:calc(10 * var(--u));padding:calc(4 * var(--u)) calc(6 * var(--u)) calc(4 * var(--u)) calc(4 * var(--u));border-radius:calc(999 * var(--u));border:calc(1 * var(--u)) solid var(--line);background:var(--paper);box-shadow:var(--shadow-xs);color:var(--ink);flex:none}
.me__id{min-width:0;display:flex;flex-direction:column}
.me__name{font-size:calc(13.5 * var(--u));line-height:calc(16 * var(--u));font-weight:600;letter-spacing:-.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.me__role{margin-top:calc(1 * var(--u));font-size:calc(12 * var(--u));line-height:calc(16 * var(--u));color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.me__more{flex:none;width:calc(28 * var(--u));height:calc(28 * var(--u));color:var(--icon);display:grid;place-items:center}
.me__more svg{width:calc(16 * var(--u));height:calc(16 * var(--u))}
.avatar{flex:none;width:calc(34 * var(--u));height:calc(34 * var(--u));border-radius:50%;display:grid;place-items:center;font-size:calc(11.5 * var(--u));font-weight:600;letter-spacing:.02em;color:#fff;box-shadow:inset 0 0 0 calc(1 * var(--u)) rgba(255,255,255,.18);object-fit:cover}
.avatar--a{background:linear-gradient(135deg,#f5c518,#404842)}.avatar--b{background:linear-gradient(135deg,#9aa3b8,#3c4256)}.avatar--c{background:linear-gradient(135deg,#ffd76b,#5b6cd6)}.avatar--d{background:linear-gradient(135deg,#7fa6e8,#404842)}.avatar--e{background:linear-gradient(135deg,#6fd9b4,#1f8a4c)}
.avatar--lg{width:calc(64 * var(--u));height:calc(64 * var(--u));font-size:calc(20 * var(--u))}
.avatar--xl{width:calc(88 * var(--u));height:calc(88 * var(--u));font-size:calc(26 * var(--u))}

.content{flex:1;padding:calc(22 * var(--u)) calc(32 * var(--u)) calc(22 * var(--u));display:flex;flex-direction:column;gap:calc(22 * var(--u))}
.content--narrow{max-width:calc(860 * var(--u))}

/* ---------------- заголовки, ссылки, кнопки ---------------- */
.ptitle{font-size:calc(30 * var(--u));line-height:calc(36 * var(--u));font-weight:700;letter-spacing:-.034em;color:var(--blue)}
.ptitle em{font-style:normal;color:var(--ink);position:relative}
.ptitle em::after{content:"";position:absolute;left:0;right:0;bottom:calc(-2 * var(--u));height:calc(4 * var(--u));border-radius:calc(2 * var(--u));background:var(--yellow)}
.psub{margin-top:calc(4 * var(--u));font-size:calc(15 * var(--u));line-height:calc(22 * var(--u));color:var(--muted)}
.phead{display:flex;align-items:flex-end;justify-content:space-between;gap:calc(16 * var(--u));flex-wrap:wrap}
.phead__actions{display:flex;gap:calc(10 * var(--u));flex-wrap:wrap}
.sec{display:flex;flex-direction:column;gap:calc(12 * var(--u))}
.sec__head{display:flex;align-items:baseline;gap:calc(12 * var(--u));min-height:calc(28 * var(--u))}
.sec__title{margin:0;font-size:calc(17 * var(--u));line-height:calc(24 * var(--u));font-weight:600;letter-spacing:-.02em}
.sec__count{font-size:calc(14 * var(--u));color:var(--muted)}
.sec__link{margin-left:auto;font-size:calc(14 * var(--u));line-height:calc(20 * var(--u));font-weight:500;color:var(--blue);white-space:nowrap}
.link{color:var(--blue);font-weight:500}
@media (hover:hover){.sec__link:hover,.link:hover{text-decoration:underline;text-underline-offset:calc(3 * var(--u))}}
.cta{display:inline-flex;align-items:center;justify-content:center;gap:calc(8 * var(--u));height:calc(36 * var(--u));padding:0 calc(16 * var(--u));border:0;border-radius:var(--r-sm);background:var(--blue);color:#fff;font-size:calc(14 * var(--u));line-height:calc(20 * var(--u));font-weight:500;cursor:pointer;white-space:nowrap;transition:background-color .15s ease,opacity .15s ease}
.cta svg{width:calc(16 * var(--u));height:calc(16 * var(--u))}
@media (hover:hover){.cta:hover{background:var(--blue-2)}}
.cta:disabled{opacity:.55;cursor:not-allowed}
.cta--ghost{background:var(--paper);color:var(--ink);border:calc(1 * var(--u)) solid var(--line);box-shadow:var(--shadow-xs)}
@media (hover:hover){.cta--ghost:hover{background:var(--paper-2)}}
.cta--yellow{background:var(--yellow);color:var(--yellow-ink);font-weight:600}
@media (hover:hover){.cta--yellow:hover{background:#ffd43a}}
.cta--danger{background:var(--danger-soft);color:var(--danger)}
@media (hover:hover){.cta--danger:hover{background:#f6d4d1}}
.cta--sm{height:calc(32 * var(--u));padding:0 calc(12 * var(--u));font-size:calc(13.5 * var(--u))}
.cta--lg{height:calc(42 * var(--u));padding:0 calc(20 * var(--u));font-size:calc(15 * var(--u))}
.cta--wide{width:100%}
.cta:focus-visible,.icon-btn:focus-visible,.chip:focus-visible{outline:calc(2 * var(--u)) solid var(--blue-mid);outline-offset:calc(2 * var(--u))}

/* ---------------- фильтры-кнопки ---------------- */
.chips,.filters{display:flex;gap:calc(8 * var(--u));flex-wrap:wrap;align-items:center}
.chip{height:calc(32 * var(--u));padding:0 calc(13 * var(--u));border-radius:calc(16 * var(--u));border:calc(1 * var(--u)) solid var(--line);background:var(--paper);box-shadow:var(--shadow-xs);font-size:calc(13.5 * var(--u));line-height:calc(30 * var(--u));font-weight:500;color:var(--muted);cursor:pointer;display:inline-flex;align-items:center;gap:calc(8 * var(--u));white-space:nowrap;transition:background-color .15s ease,color .15s ease}
@media (hover:hover){.chip:hover{background:var(--paper-2);color:var(--ink)}}
.chip.is-on{background:var(--blue);border-color:var(--blue);color:#fff}
.chip__n{font-size:calc(12 * var(--u));line-height:calc(20 * var(--u));padding:0 calc(7 * var(--u));border-radius:calc(10 * var(--u));background:var(--paper-2);color:var(--muted);font-weight:600}
.chip__n--hot{background:var(--yellow);color:var(--yellow-ink)}
.chip.is-on .chip__n{background:rgba(255,255,255,.18);color:#fff}
.chip.is-on .chip__n--hot{background:var(--yellow);color:var(--yellow-ink)}

/* ---------------- карточки, плашки ---------------- */
.card{border:calc(1 * var(--u)) solid var(--line);border-radius:var(--r);background:var(--paper);box-shadow:var(--shadow-xs);padding:calc(18 * var(--u))}
.card--pad-sm{padding:calc(14 * var(--u)) calc(16 * var(--u))}
.card--flat{box-shadow:none;background:var(--paper-3)}
.card__head{display:flex;align-items:center;gap:calc(10 * var(--u));margin-bottom:calc(14 * var(--u))}
.card__title{margin:0;font-size:calc(15 * var(--u));line-height:calc(20 * var(--u));font-weight:600;letter-spacing:-.015em}
.card__sub{margin:0;font-size:calc(12.5 * var(--u));line-height:calc(16 * var(--u));color:var(--muted)}
.card__more{margin-left:auto;font-size:calc(13.5 * var(--u));font-weight:500;color:var(--blue);white-space:nowrap}
.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:calc(16 * var(--u))}
.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:calc(16 * var(--u))}
.grid-4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:calc(16 * var(--u))}
.cols{display:grid;grid-template-columns:minmax(0,1fr) calc(340 * var(--u));gap:calc(24 * var(--u));align-items:start}
.cols--rev{grid-template-columns:calc(300 * var(--u)) minmax(0,1fr)}
.col{display:flex;flex-direction:column;gap:calc(20 * var(--u));min-width:0}
.tags{display:flex;gap:calc(6 * var(--u));flex-wrap:wrap}
.tag{height:calc(24 * var(--u));padding:0 calc(9 * var(--u));border-radius:calc(6 * var(--u));background:var(--paper-2);font-size:calc(12 * var(--u));line-height:calc(24 * var(--u));color:var(--muted);white-space:nowrap;display:inline-flex;align-items:center;gap:calc(6 * var(--u))}
.tag b{font-weight:600;color:var(--ink)}
.tag--hot{background:var(--yellow-soft);color:var(--yellow-text);font-weight:500}
.tag--blue{background:var(--blue-soft);color:var(--blue);font-weight:500}
.tag button{border:0;background:none;padding:0;cursor:pointer;color:inherit;display:grid;place-items:center;width:calc(14 * var(--u));height:calc(14 * var(--u))}
.pill,.status{display:inline-flex;align-items:center;gap:calc(6 * var(--u));height:calc(22 * var(--u));padding:0 calc(8 * var(--u));border-radius:calc(999 * var(--u));font-size:calc(12 * var(--u));line-height:calc(22 * var(--u));font-weight:500;white-space:nowrap}
.pill::before,.status::before{content:"";width:calc(6 * var(--u));height:calc(6 * var(--u));border-radius:50%;background:currentColor}
.pill--new,.status--new,.status--pick,.status--work{background:var(--blue-soft);color:var(--blue)}
.pill--wait,.status--wait{background:var(--yellow-soft);color:var(--yellow-text)}
.pill--ok,.status--ok,.status--open{background:var(--ok-soft);color:var(--ok)}
.pill--no,.status--no{background:var(--danger-soft);color:var(--danger)}
.pill--done,.status--done{background:var(--paper-2);color:var(--muted)}
.pill--info,.status--sent{background:var(--info-soft);color:var(--info)}
.kv{display:flex;justify-content:space-between;gap:calc(12 * var(--u));padding:calc(7 * var(--u)) 0;border-top:calc(1 * var(--u)) solid var(--line);font-size:calc(13 * var(--u));line-height:calc(18 * var(--u))}
.kv:first-child{border-top:0;padding-top:0}
.kv span{color:var(--muted)}
.kv b{font-weight:600;text-align:right}
.hr{height:calc(1 * var(--u));background:var(--line);border:0;margin:0}
.muted{color:var(--muted)}
.small{font-size:calc(12.5 * var(--u));line-height:calc(17 * var(--u))}
.empty{padding:calc(36 * var(--u)) calc(20 * var(--u));text-align:center;color:var(--muted);border:calc(1 * var(--u)) dashed var(--line-2);border-radius:var(--r)}
.empty b{display:block;color:var(--ink);font-weight:600;margin-bottom:calc(4 * var(--u))}
.stat{display:flex;align-items:center;gap:calc(14 * var(--u));padding:calc(14 * var(--u)) calc(16 * var(--u))}
.stat__icon{width:calc(40 * var(--u));height:calc(40 * var(--u));border-radius:calc(10 * var(--u));display:grid;place-items:center;flex:none;background:var(--blue-soft);color:var(--blue)}
.stat__icon svg{width:calc(20 * var(--u));height:calc(20 * var(--u))}
.stat__icon--y{background:var(--yellow-soft);color:var(--yellow-text)}
.stat__icon--ok{background:var(--ok-soft);color:var(--ok)}
.stat__v{font-size:calc(22 * var(--u));line-height:calc(26 * var(--u));font-weight:600;letter-spacing:-.02em}
.stat__l{color:var(--muted);font-size:calc(13 * var(--u))}
.bar{height:calc(6 * var(--u));border-radius:calc(3 * var(--u));background:var(--paper-2);overflow:hidden}
.bar i{display:block;height:100%;border-radius:inherit;background:var(--blue);width:var(--p,0%)}
.bar--y i{background:var(--yellow)}

/* ---------------- списки-строки ---------------- */
.list{display:flex;flex-direction:column;border:calc(1 * var(--u)) solid var(--line);border-radius:var(--r);box-shadow:var(--shadow-xs);overflow:hidden;background:var(--paper)}
.row{display:flex;align-items:center;gap:calc(14 * var(--u));padding:calc(12 * var(--u)) calc(18 * var(--u));transition:background-color .15s ease}
.row + .row{border-top:calc(1 * var(--u)) solid var(--line)}
@media (hover:hover){.row:hover{background:var(--paper-3)}}
.row--head{padding:calc(9 * var(--u)) calc(18 * var(--u));background:var(--paper-2);font-size:calc(12 * var(--u));line-height:calc(16 * var(--u));color:var(--muted);font-weight:500}
.row--head + .row{border-top:0}
.row__b{min-width:0;flex:1}
.row__t{font-size:calc(14 * var(--u));line-height:calc(18 * var(--u));font-weight:600;letter-spacing:-.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.row__s{font-size:calc(12.5 * var(--u));line-height:calc(16 * var(--u));color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.row__a{display:flex;align-items:center;gap:calc(6 * var(--u));justify-content:flex-end;flex:none}
.rlogo{flex:none;width:calc(36 * var(--u));height:calc(28 * var(--u));object-fit:contain;display:block}
.proj__mark{flex:none;width:calc(44 * var(--u));height:calc(44 * var(--u));border-radius:calc(10 * var(--u));display:grid;place-items:center;font-size:calc(13 * var(--u));font-weight:700;letter-spacing:-.02em;background:var(--blue-soft);color:var(--blue)}
.proj__mark--img{background:var(--paper);border:calc(1 * var(--u)) solid var(--line);padding:calc(5 * var(--u))}
.proj__mark--img img{width:100%;height:100%;object-fit:contain;display:block}
.table{width:100%;border-collapse:collapse;font-size:calc(13.5 * var(--u));line-height:calc(18 * var(--u))}
.table th{text-align:left;padding:calc(9 * var(--u)) calc(14 * var(--u));background:var(--paper-2);font-size:calc(12 * var(--u));color:var(--muted);font-weight:500}
.table td{padding:calc(11 * var(--u)) calc(14 * var(--u));border-top:calc(1 * var(--u)) solid var(--line);vertical-align:middle}
.table tr:first-child td{border-top:0}
.table--wrap{border:calc(1 * var(--u)) solid var(--line);border-radius:var(--r);overflow:hidden;background:var(--paper)}

/* ---------------- карточки проектов (как на главной) ---------------- */
.pcard{display:flex;flex-direction:column;border:calc(1 * var(--u)) solid var(--line);border-radius:calc(14 * var(--u));background:var(--paper);box-shadow:0 calc(1 * var(--u)) calc(2 * var(--u)) rgba(16,24,40,.04),0 calc(10 * var(--u)) calc(28 * var(--u)) calc(-14 * var(--u)) rgba(16,24,40,.14);overflow:hidden;min-width:0}
.pcard__media{position:relative;height:calc(104 * var(--u));overflow:hidden;display:flex;align-items:flex-start;justify-content:space-between;gap:calc(8 * var(--u));padding:calc(12 * var(--u)) calc(14 * var(--u));color:#fff;background:#dfe3ee center / cover no-repeat}
.pcard__media::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(17,24,56,.18),rgba(17,24,56,0) 45%)}
.pcard__brand{position:relative;z-index:1;display:inline-flex;align-items:center;gap:calc(7 * var(--u));height:calc(28 * var(--u));padding:0 calc(9 * var(--u)) 0 calc(5 * var(--u));border-radius:var(--r-sm);background:rgba(255,255,255,.94);color:var(--ink);box-shadow:0 calc(1 * var(--u)) calc(4 * var(--u)) rgba(16,24,40,.12);font-size:calc(12.5 * var(--u));line-height:calc(16 * var(--u));font-weight:600;letter-spacing:-.01em;white-space:nowrap}
.pcard__brand--wm{padding:0 calc(9 * var(--u))}
.blogo{width:calc(20 * var(--u));height:calc(20 * var(--u));object-fit:contain;flex:none;display:block}
.wmark{height:calc(14 * var(--u));width:auto;max-width:calc(96 * var(--u));object-fit:contain;display:block}
.wmark--tall{height:calc(18 * var(--u))}
.pcard__fmt{position:relative;z-index:1;flex:none;padding:calc(3 * var(--u)) calc(9 * var(--u));border-radius:calc(999 * var(--u));background:rgba(255,255,255,.9);color:var(--ink);font-size:calc(11 * var(--u));line-height:calc(15 * var(--u));font-weight:500;white-space:nowrap}
.pcard__body{display:flex;flex-direction:column;flex:1;padding:calc(14 * var(--u)) calc(16 * var(--u)) calc(16 * var(--u))}
.pcard__title{margin:0;font-size:calc(14.5 * var(--u));line-height:calc(19 * var(--u));font-weight:600;letter-spacing:-.02em;min-height:calc(38 * var(--u))}
.pcard__desc{margin:calc(8 * var(--u)) 0 0;font-size:calc(12.5 * var(--u));line-height:calc(18 * var(--u));color:var(--muted);min-height:calc(72 * var(--u))}
.pmeta{list-style:none;margin:calc(10 * var(--u)) 0 0;padding:0;display:flex;flex-direction:column;gap:calc(5 * var(--u))}
.pmeta li{display:flex;align-items:center;gap:calc(8 * var(--u));font-size:calc(12.5 * var(--u));line-height:calc(17 * var(--u));color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pmeta svg{width:calc(14 * var(--u));height:calc(14 * var(--u));flex:none;color:var(--icon)}
.pcard__skills{margin-top:calc(12 * var(--u));font-size:calc(12 * var(--u));line-height:calc(16 * var(--u));font-weight:500;color:var(--ink)}
.pcard .tags{margin-top:calc(7 * var(--u))}
.pcard__actions{margin-top:auto;padding-top:calc(14 * var(--u));display:flex;gap:calc(8 * var(--u))}
.pcard__more{flex:1;height:calc(36 * var(--u));border-radius:var(--r-sm);font-size:calc(13 * var(--u));gap:calc(8 * var(--u));padding:0 calc(10 * var(--u))}
.pcard__more svg{width:calc(14 * var(--u));height:calc(14 * var(--u))}
.pcard__fav{flex:none;width:calc(36 * var(--u));height:calc(36 * var(--u));border-radius:var(--r-sm);border:calc(1 * var(--u)) solid var(--line);background:var(--paper);color:var(--ink);display:grid;place-items:center;cursor:pointer;transition:background-color .15s ease,color .15s ease,border-color .15s ease}
.pcard__fav svg{width:calc(16 * var(--u));height:calc(16 * var(--u))}
@media (hover:hover){.pcard__fav:hover{background:var(--paper-2)}}
.pcard__fav[aria-pressed="true"]{color:#e0245e;border-color:#f6c6d3;background:#fff1f5}
.pcard__fav[aria-pressed="true"] svg{fill:currentColor}

/* ---------------- формы ---------------- */
.form{display:flex;flex-direction:column;gap:calc(16 * var(--u))}
.form__row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:calc(14 * var(--u))}
.form__row--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.field{display:flex;flex-direction:column;gap:calc(6 * var(--u));min-width:0}
.label{font-size:calc(13.5 * var(--u));line-height:calc(18 * var(--u));font-weight:500;color:var(--ink)}
.label i{font-style:normal;color:var(--danger)}
.hint{font-size:calc(12 * var(--u));line-height:calc(16 * var(--u));color:var(--muted)}
.input,.select,.textarea{display:block;width:100%;height:calc(38 * var(--u));padding:0 calc(12 * var(--u));font-size:calc(14 * var(--u));line-height:calc(20 * var(--u));color:var(--ink);background:var(--paper);border:calc(1 * var(--u)) solid var(--line);border-radius:var(--r-sm);box-shadow:var(--shadow-xs);outline:none;transition:border-color .15s ease,box-shadow .15s ease}
.textarea{height:auto;min-height:calc(96 * var(--u));padding:calc(9 * var(--u)) calc(12 * var(--u));resize:vertical}
.select{appearance:none;padding-right:calc(34 * var(--u));background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><path d='m6 9 6 6 6-6'/></svg>");background-repeat:no-repeat;background-position:right calc(10 * var(--u)) center;background-size:calc(16 * var(--u))}
.input::placeholder,.textarea::placeholder{color:var(--faint);opacity:1}
.input:focus-visible,.select:focus-visible,.textarea:focus-visible{border-color:var(--blue);box-shadow:var(--shadow-xs),0 0 0 calc(3 * var(--u)) var(--blue-soft)}
.field.is-invalid .input,.field.is-invalid .select,.field.is-invalid .textarea{border-color:var(--danger);box-shadow:var(--shadow-xs),0 0 0 calc(3 * var(--u)) var(--danger-soft)}
.field.is-valid .input,.field.is-valid .select,.field.is-valid .textarea{border-color:var(--ok)}
.error{display:none;font-size:calc(12 * var(--u));line-height:calc(16 * var(--u));color:var(--danger)}
.field.is-invalid .error{display:block}
.field.is-invalid .hint{display:none}
.control{position:relative}
.control .input{padding-left:calc(32 * var(--u))}
.control__icon{position:absolute;left:calc(10 * var(--u));top:50%;transform:translateY(-50%);width:calc(16 * var(--u));height:calc(16 * var(--u));color:var(--icon);pointer-events:none}
.control__icon svg,.icon-btn svg,.cta svg{width:100%;height:100%}
.cta svg{width:calc(16 * var(--u));height:calc(16 * var(--u))}
.icon-btn svg{width:calc(17 * var(--u));height:calc(17 * var(--u))}
.control__btn{position:absolute;right:calc(4 * var(--u));top:50%;transform:translateY(-50%);width:calc(30 * var(--u));height:calc(30 * var(--u));border:0;background:none;color:var(--icon);display:grid;place-items:center;cursor:pointer;border-radius:calc(6 * var(--u))}
.control__btn svg{width:calc(15 * var(--u));height:calc(15 * var(--u))}
.check{display:inline-flex;align-items:flex-start;gap:calc(10 * var(--u));cursor:pointer;font-size:calc(13.5 * var(--u));line-height:calc(20 * var(--u));color:var(--ink)}
.check input{position:absolute;opacity:0;width:1px;height:1px}
.check__box{width:calc(18 * var(--u));height:calc(18 * var(--u));flex:none;margin-top:calc(1 * var(--u));border-radius:calc(5 * var(--u));border:calc(1 * var(--u)) solid var(--line-2);background:var(--paper);box-shadow:var(--shadow-xs);display:grid;place-items:center;color:#fff}
.check__box svg{width:calc(12 * var(--u));height:calc(12 * var(--u));opacity:0}
.check input:checked + .check__box{background:var(--blue);border-color:var(--blue)}
.check input:checked + .check__box svg{opacity:1}
.check input:focus-visible + .check__box{box-shadow:0 0 0 calc(3 * var(--u)) var(--blue-soft)}
.check--radio .check__box{border-radius:50%}
.check--radio .check__box svg{display:none}
.check--radio .check__box::after{content:"";width:calc(8 * var(--u));height:calc(8 * var(--u));border-radius:50%;background:#fff;opacity:0}
.check--radio input:checked + .check__box::after{opacity:1}
.field.is-invalid .check__box{border-color:var(--danger)}
.seg{display:flex;gap:calc(4 * var(--u));padding:calc(4 * var(--u));border:calc(1 * var(--u)) solid var(--line);border-radius:calc(10 * var(--u));background:var(--paper-2)}
.seg label{flex:1;position:relative;cursor:pointer}
.seg input{position:absolute;opacity:0;width:1px;height:1px}
.seg span{display:flex;align-items:center;justify-content:center;height:calc(32 * var(--u));border-radius:calc(7 * var(--u));font-size:calc(13.5 * var(--u));font-weight:500;color:var(--muted);transition:background-color .15s ease,color .15s ease}
.seg input:checked + span{background:var(--paper);color:var(--blue);box-shadow:var(--shadow-xs)}
.seg input:focus-visible + span{box-shadow:0 0 0 calc(3 * var(--u)) var(--blue-soft)}
.tagin{display:flex;flex-wrap:wrap;gap:calc(6 * var(--u));min-height:calc(38 * var(--u));padding:calc(5 * var(--u)) calc(8 * var(--u));border:calc(1 * var(--u)) solid var(--line);border-radius:var(--r-sm);background:var(--paper);box-shadow:var(--shadow-xs);cursor:text}
.tagin:focus-within{border-color:var(--blue);box-shadow:var(--shadow-xs),0 0 0 calc(3 * var(--u)) var(--blue-soft)}
.tagin input{border:0;outline:0;background:none;flex:1;min-width:calc(120 * var(--u));height:calc(26 * var(--u));padding:0 calc(4 * var(--u))}
.field.is-invalid .tagin{border-color:var(--danger)}
.form__foot{display:flex;align-items:center;gap:calc(10 * var(--u));justify-content:flex-end;flex-wrap:wrap;padding-top:calc(6 * var(--u))}
.form__foot .muted{margin-right:auto}
.steps{display:flex;gap:calc(6 * var(--u));align-items:center;flex-wrap:wrap}
.step{display:inline-flex;align-items:center;gap:calc(8 * var(--u));height:calc(32 * var(--u));padding:0 calc(12 * var(--u)) 0 calc(6 * var(--u));border-radius:calc(16 * var(--u));font-size:calc(13 * var(--u));font-weight:500;color:var(--muted);background:var(--paper-2)}
.step i{width:calc(22 * var(--u));height:calc(22 * var(--u));border-radius:50%;display:grid;place-items:center;font-style:normal;font-size:calc(11.5 * var(--u));font-weight:600;background:var(--paper);color:var(--muted);border:calc(1 * var(--u)) solid var(--line)}
.step.is-now{background:var(--blue);color:#fff}
.step.is-now i{background:var(--yellow);color:var(--yellow-ink);border-color:var(--yellow)}
.step.is-done{color:var(--ink)}
.step.is-done i{background:var(--blue);color:#fff;border-color:var(--blue)}
.steps__sep{width:calc(18 * var(--u));height:calc(1 * var(--u));background:var(--line-2)}
.pw-meter{display:flex;gap:calc(4 * var(--u));margin-top:calc(2 * var(--u))}
.pw-meter i{flex:1;height:calc(4 * var(--u));border-radius:calc(2 * var(--u));background:var(--paper-2)}
.pw-meter[data-score="1"] i:nth-child(-n+1){background:var(--danger)}
.pw-meter[data-score="2"] i:nth-child(-n+2){background:var(--warn)}
.pw-meter[data-score="3"] i:nth-child(-n+3){background:var(--yellow)}
.pw-meter[data-score="4"] i:nth-child(-n+4){background:var(--ok)}
.dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:calc(6 * var(--u));padding:calc(22 * var(--u));border:calc(1 * var(--u)) dashed var(--line-2);border-radius:var(--r);background:var(--paper-3);color:var(--muted);text-align:center;cursor:pointer;font-size:calc(13 * var(--u))}
.dropzone.is-over{border-color:var(--blue);background:var(--blue-soft)}
.dropzone b{color:var(--blue);font-weight:600}

/* ---------------- модалки, тосты, пагинация ---------------- */
.modal{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;padding:calc(20 * var(--u));background:rgba(17,24,56,.45);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.modal[hidden]{display:none}
.modal__box{width:100%;max-width:calc(560 * var(--u));max-height:calc(100vh - 40 * var(--u));overflow:auto;background:var(--paper);border-radius:calc(16 * var(--u));box-shadow:var(--shadow-lg);padding:calc(22 * var(--u)) calc(24 * var(--u));animation:modal-in .25s cubic-bezier(.22,1,.36,1)}
.modal__box--lg{max-width:calc(760 * var(--u))}
@keyframes modal-in{from{opacity:0;transform:translateY(calc(10 * var(--u))) scale(.985)}to{opacity:1;transform:none}}
.modal__head{display:flex;align-items:flex-start;gap:calc(12 * var(--u));margin-bottom:calc(16 * var(--u))}
.modal__title{font-size:calc(18 * var(--u));line-height:calc(24 * var(--u));font-weight:600;letter-spacing:-.02em}
.modal__close{margin-left:auto}
.toasts{position:fixed;right:calc(20 * var(--u));bottom:calc(20 * var(--u));z-index:70;display:flex;flex-direction:column;gap:calc(8 * var(--u));pointer-events:none}
.toast{display:flex;align-items:center;gap:calc(10 * var(--u));min-width:calc(260 * var(--u));max-width:calc(380 * var(--u));padding:calc(10 * var(--u)) calc(14 * var(--u));border-radius:var(--r);background:var(--blue);color:#fff;box-shadow:var(--shadow-lg);font-size:calc(13.5 * var(--u));line-height:calc(18 * var(--u));pointer-events:auto;animation:toast-in .25s cubic-bezier(.22,1,.36,1)}
.toast::before{content:"";width:calc(8 * var(--u));height:calc(8 * var(--u));border-radius:50%;background:var(--yellow);flex:none}
.toast--ok::before{background:#5fe0b2}
.toast--err{background:var(--danger)}
.toast--err::before{background:#fff}
@keyframes toast-in{from{opacity:0;transform:translateY(calc(8 * var(--u)))}to{opacity:1;transform:none}}
.pager{display:flex;align-items:center;justify-content:center;gap:calc(4 * var(--u))}
.pager button{min-width:calc(32 * var(--u));height:calc(32 * var(--u));padding:0 calc(8 * var(--u));border:calc(1 * var(--u)) solid var(--line);border-radius:var(--r-sm);background:var(--paper);color:var(--ink);font-weight:500;cursor:pointer}
.pager button.is-on{background:var(--blue);border-color:var(--blue);color:#fff}
.pager button:disabled{opacity:.4;cursor:default}
.help-strip{display:flex;align-items:center;gap:calc(16 * var(--u));padding:calc(14 * var(--u)) calc(18 * var(--u))}
.help-strip .card__head{flex:1;margin-bottom:0}
.card--dark{background:var(--blue);color:#fff;border-color:var(--blue)}
.card--dark .card__sub{color:rgba(255,255,255,.7)}
/* плашка о статусе (модерация организации и т. п.) */
.notice{display:flex;align-items:center;gap:calc(14 * var(--u));padding:calc(14 * var(--u)) calc(18 * var(--u));border-radius:var(--r);border:calc(1 * var(--u)) solid #f1e2a6;background:var(--yellow-soft);color:var(--yellow-text);font-size:calc(13.5 * var(--u));line-height:calc(19 * var(--u))}
.notice > svg{width:calc(22 * var(--u));height:calc(22 * var(--u));flex:none}
.notice__b{flex:1;min-width:0}
.notice b{color:var(--ink);font-weight:600}
.notice--no{border-color:#f2cbc8;background:var(--danger-soft);color:var(--danger)}
.notice--info{border-color:#d6dcef;background:var(--blue-soft);color:var(--blue)}
.kbd{font-size:calc(11 * var(--u));color:var(--faint);border:calc(1 * var(--u)) solid var(--line);border-radius:calc(5 * var(--u));padding:0 calc(5 * var(--u));line-height:calc(18 * var(--u))}

/* ---------------- календарь (месяц) ---------------- */
.calw{display:flex;flex-direction:column;gap:calc(10 * var(--u))}
.calw__head{display:flex;align-items:center;gap:calc(14 * var(--u))}
.calw__head .cal__nav{margin-left:auto}
.cal__nav{display:flex;gap:calc(4 * var(--u))}
.cal__nav button{width:calc(26 * var(--u));height:calc(26 * var(--u));border:calc(1 * var(--u)) solid var(--line);border-radius:calc(6 * var(--u));background:var(--paper);display:grid;place-items:center;cursor:pointer;color:var(--icon)}
.cal__nav svg{width:calc(12 * var(--u));height:calc(12 * var(--u))}
.cal__todaybtn{width:auto!important;padding:0 calc(10 * var(--u));font-size:calc(12.5 * var(--u));font-weight:500;color:var(--ink)!important}
.calw__body{display:grid;grid-template-columns:minmax(0,1fr) calc(250 * var(--u));gap:calc(16 * var(--u));align-items:start}
.calw__grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;background:#d6dae6;border:1px solid #d6dae6;border-radius:calc(10 * var(--u));overflow:hidden}
.calw__wd{font-size:calc(11 * var(--u));line-height:calc(26 * var(--u));letter-spacing:.06em;text-transform:uppercase;font-weight:600;color:var(--muted);text-align:center;background:var(--paper-2)}
.calw__wd.is-weekend{color:#a32d2d}
.day{position:relative;height:calc(40 * var(--u));border:0;border-radius:0;background:var(--paper);padding:0;font:inherit;color:inherit;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:calc(2 * var(--u));font-size:calc(13.5 * var(--u));line-height:calc(16 * var(--u));transition:background-color .15s ease}
.day:nth-child(7n + 6),.day:nth-child(7n){background:#f8f9fc}
@media (hover:hover){.day:hover{background:var(--blue-soft)}}
.day--empty{cursor:default;background:var(--paper)!important}
.day.is-weekend{color:#a32d2d}
.day.is-today{font-weight:700;color:var(--blue);box-shadow:inset 0 0 0 calc(2 * var(--u)) var(--blue)}
.day.is-sel{background:var(--blue);color:#fff;box-shadow:none}
.day__dots{display:flex;gap:calc(2 * var(--u));height:calc(5 * var(--u))}
.day__dots i{width:calc(5 * var(--u));height:calc(5 * var(--u));border-radius:50%;background:var(--blue)}
.day__dots i.y{background:var(--yellow)}
.day__dots i.r{background:#e24b4a}
.day.is-sel .day__dots i{background:#fff}
.calw__side{display:flex;flex-direction:column;gap:calc(8 * var(--u));padding:calc(12 * var(--u));border-radius:calc(10 * var(--u));background:var(--paper-2);min-height:100%}
.calw__sel{font-size:calc(13 * var(--u));line-height:calc(18 * var(--u));font-weight:600;letter-spacing:-.01em}
.calw__sel small{display:block;font-weight:400;color:var(--muted);font-size:calc(12 * var(--u))}
.evw{display:flex;gap:calc(10 * var(--u));align-items:flex-start;padding:calc(8 * var(--u)) calc(10 * var(--u));border-radius:var(--r-sm);background:var(--paper);box-shadow:var(--shadow-xs);min-width:0}
.evw__i{flex:none;width:calc(4 * var(--u));height:calc(30 * var(--u));border-radius:calc(2 * var(--u));background:var(--blue);margin-top:calc(2 * var(--u))}
.evw__i.y{background:var(--yellow)}
.evw__i.r{background:#e24b4a}
.evw__n{font-size:calc(12.5 * var(--u));line-height:calc(16 * var(--u));font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.evw__t{font-size:calc(11.5 * var(--u));line-height:calc(15 * var(--u));color:var(--muted)}
.calw__empty{font-size:calc(12.5 * var(--u));line-height:calc(17 * var(--u));color:var(--muted)}
.calw__up{margin-top:calc(4 * var(--u));font-size:calc(11 * var(--u));line-height:calc(16 * var(--u));letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.calw--tall .day{height:calc(72 * var(--u));align-items:flex-start;justify-content:flex-start;padding:calc(6 * var(--u)) calc(8 * var(--u))}
.calw--tall .day__dots{margin-top:auto}

/* ---------------- вход на страницу ---------------- */
@media (prefers-reduced-motion:no-preference){
  .e{opacity:0;transform:translate3d(0,10px,0);animation:settle .7s cubic-bezier(.22,1,.36,1) forwards;animation-delay:calc(var(--i,0) * 60ms + 80ms)}
  @keyframes settle{to{opacity:1;transform:none}}
}
@media (prefers-reduced-motion:reduce){.side::after{animation:none}*{transition:none!important}}

/* ---------------- телефон ---------------- */
.tabbar{display:none}
@media (max-width:980px){
  .cols,.cols--rev{grid-template-columns:minmax(0,1fr)}
  .grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}
  .search{max-width:30%}
}
@media (max-width:739.98px){
  :root{--g:clamp(16px,5vw,24px)}
  .shell{flex-direction:column}
  .side{flex:none;flex-direction:row;align-items:center;gap:12px;padding:calc(12px + env(safe-area-inset-top)) var(--g) 12px;background-image:none}
  .side::before,.side::after{display:none}
  .nav,.side__bottom{display:none}
  .top{height:auto;flex-wrap:wrap;padding:12px var(--g);gap:10px}
  .me{padding:3px;border:0;background:none;box-shadow:none}
  .me__id,.me__more{display:none}
  .search{margin:0;width:100%;max-width:none;order:3}
  .content{padding:16px var(--g) calc(84px + env(safe-area-inset-bottom));gap:16px}
  .grid-2,.grid-3,.grid-4,.form__row,.form__row--3{grid-template-columns:1fr}
  .calw__body{grid-template-columns:1fr}
  .calw__head{flex-wrap:wrap}
  .help-strip{flex-wrap:wrap}.help-strip .cta{width:100%;margin-left:0!important}
  .ptitle{font-size:26px;line-height:32px}
  .row{flex-wrap:wrap}
  .row--head{display:none}
  .tabbar{position:fixed;left:0;right:0;bottom:0;z-index:5;display:flex;padding:6px var(--g) calc(6px + env(safe-area-inset-bottom));background:var(--blue);border-top:1px solid var(--glass-border)}
  .tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 0;font-size:11px;color:rgba(255,255,255,.65);position:relative}
  .tabbar a svg{width:20px;height:20px}
  .tabbar a.is-active{color:var(--yellow)}
  .tabbar .badge{position:absolute;top:2px;left:calc(50% + 6px);min-width:16px;height:16px;padding:0 4px;border-radius:8px;font-size:10px;line-height:16px}
  .modal__box{padding:18px}
  .toasts{left:var(--g);right:var(--g);bottom:calc(76px + env(safe-area-inset-bottom))}
  .toast{max-width:none}
}

/* ==================================================================
   Каркас кабинетов компании и ВГУ — в одном стиле с кабинетом студента (cab.css):
   светлое меню слева, шапка с фотографией, стеклянная полоса с поиском по центру.
   Разметку вставляет VSU.shell() из platform.js. Размеры — calc(N * var(--wm)), макет 1536.
   ================================================================== */
:root{--wm:1px;--ws-bg:#f3f2ee;--ws-side:#f6f5f2;--ws-olive:#404842;--ws-olive2:#2c322d;--ws-ink:#16171b;--ws-gray:#6f7077}
/* единый масштаб: кабинеты студента, компании и ВГУ считают единицу по одной формуле (как --m в cab.css) */
@media (min-width:1100px){:root{--wm:clamp(.8px, min(100vw / 1500, 100vh / 940), 1.3px);--u:clamp(.8px, min(100vw / 1500, 100vh / 940), 1.3px)}}
body:has(.shell.ws){background:var(--ws-bg)}
.shell.ws{display:grid;grid-template-columns:calc(248 * var(--wm)) minmax(0,1fr);min-height:100vh;background:var(--ws-bg)}
.shell.ws > .main{min-width:0;display:flex;flex-direction:column;background:var(--ws-bg)}
.shell.ws > .side,.shell.ws .tabbar,.shell.ws .top:not(.ws-hero){display:none!important}

/* меню */
.ws-side{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;background:var(--ws-side);border-right:1px solid #e9e7e1;z-index:5;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none;color:var(--ws-ink)}
.ws-side::-webkit-scrollbar{display:none}
.ws-logo{display:flex;align-items:center;height:calc(69 * var(--wm));padding:0 0 0 calc(33 * var(--wm));border-bottom:1px solid #e9e7e1;flex:none}
.ws-logo img{width:calc(28 * var(--wm));height:calc(40 * var(--wm));object-fit:contain}
.ws-logo__vgu{margin-left:calc(14 * var(--wm));font-size:calc(26 * var(--wm));line-height:1;letter-spacing:-.01em}
.ws-logo__sub{margin-left:calc(16 * var(--wm));font-size:calc(12.2 * var(--wm));line-height:calc(16 * var(--wm));color:#3c3d42}
.ws-me{display:block;padding:calc(22 * var(--wm)) calc(20 * var(--wm)) 0 calc(32 * var(--wm));flex:none}
.ws-av{width:calc(34 * var(--wm));height:calc(34 * var(--wm));border-radius:calc(11 * var(--wm));display:grid;place-items:center;flex:none;overflow:hidden;font-size:calc(13 * var(--wm));font-weight:600;color:#fff;background:linear-gradient(135deg,#c9a24a,#40433a)}
.ws-av--big{width:calc(64 * var(--wm));height:calc(64 * var(--wm));border-radius:50%;font-size:calc(22 * var(--wm));font-weight:500}
.ws-av--logo{background:#fff;box-shadow:0 0 0 1px #e6e4de}
.ws-av--logo img{width:70%;height:70%;object-fit:contain}
.ws-me__n{display:block;margin-top:calc(12 * var(--wm));font-size:calc(16 * var(--wm));line-height:calc(21 * var(--wm))}
.ws-me__r{display:block;margin-top:calc(2 * var(--wm));font-size:calc(13 * var(--wm));line-height:calc(19 * var(--wm));color:var(--ws-gray)}
.ws-nav{display:flex;flex-direction:column;gap:calc(4 * var(--wm));padding:calc(24 * var(--wm)) calc(18 * var(--wm)) 0 calc(21 * var(--wm));flex:none}
.ws-nav .nav__label{margin:calc(12 * var(--wm)) 0 calc(4 * var(--wm)) calc(17 * var(--wm));font-size:calc(11.5 * var(--wm));letter-spacing:.06em;text-transform:uppercase;color:#9a9a9f}
.ws-nav .nav__item{display:flex;align-items:center;gap:calc(20 * var(--wm));height:calc(46 * var(--wm));padding:0 calc(14 * var(--wm)) 0 calc(17 * var(--wm));border-radius:calc(12 * var(--wm));font-size:calc(14.5 * var(--wm));font-weight:400;color:#2f3035;background:none;box-shadow:none;transition:background-color .15s ease}
.ws-nav .nav__item svg{width:calc(20 * var(--wm));height:calc(20 * var(--wm));flex:none}
.ws-nav .nav__item:hover{background:#ecebe6;color:#2f3035}
.ws-nav .nav__item.is-active{background:var(--ws-olive);color:#fff;box-shadow:0 6px 16px -10px rgba(30,35,25,.6)}
.ws-nav .n{margin-left:auto;min-width:calc(26 * var(--wm));height:calc(26 * var(--wm));padding:0 calc(7 * var(--wm));border-radius:calc(13 * var(--wm));background:#e8e7e3;display:grid;place-items:center;font-size:calc(12 * var(--wm));color:#3b3c40}
.ws-nav .nav__item.is-active .n{background:rgba(255,255,255,.18);color:#fff}
.ws-out{display:flex;align-items:center;gap:calc(20 * var(--wm));margin:auto calc(18 * var(--wm)) calc(28 * var(--wm)) calc(21 * var(--wm));height:calc(46 * var(--wm));padding:0 calc(17 * var(--wm));border-radius:calc(12 * var(--wm));font-size:calc(14.5 * var(--wm));color:var(--ws-gray)}
.ws-out svg{width:calc(20 * var(--wm));height:calc(20 * var(--wm))}
.ws-out:hover{background:#ecebe6;color:var(--ws-ink)}

/* шапка с фото */
.ws-hero{position:relative;min-height:calc(290 * var(--wm));padding-bottom:calc(46 * var(--wm));color:#fff;overflow:hidden;isolation:isolate;flex:none}
.ws-hero__bg{position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover;object-position:58% 32%;transform:scale(1.06)}
.ws-hero::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(16,15,8,.86) 0%,rgba(16,15,8,.68) 32%,rgba(16,15,8,.32) 60%,rgba(16,15,8,.2) 100%),linear-gradient(180deg,rgba(10,9,5,.45) 0%,rgba(10,9,5,0) 30%)}
.ws-top{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,calc(520 * var(--wm))) minmax(0,1fr);align-items:center;gap:calc(16 * var(--wm));height:calc(58 * var(--wm));margin:calc(12 * var(--wm)) calc(26 * var(--wm)) 0 calc(24 * var(--wm));padding:0 calc(8 * var(--wm)) 0 calc(22 * var(--wm));border-radius:calc(18 * var(--wm));border:1px solid rgba(255,255,255,.22);background:linear-gradient(180deg,rgba(255,255,255,.17),rgba(255,255,255,.05));-webkit-backdrop-filter:blur(18px) saturate(1.5);backdrop-filter:blur(18px) saturate(1.5);box-shadow:inset 0 1px 0 rgba(255,255,255,.28),0 14px 34px -18px rgba(0,0,0,.55)}
.ws-search{grid-column:2;position:relative;display:flex;align-items:center;margin:0;width:auto;max-width:none}
.ws-search svg{position:absolute;left:calc(15 * var(--wm));width:calc(18 * var(--wm));height:calc(18 * var(--wm));color:rgba(255,255,255,.82);pointer-events:none}
.ws-search input{width:100%;height:calc(42 * var(--wm));padding:0 calc(16 * var(--wm)) 0 calc(44 * var(--wm));border-radius:calc(14 * var(--wm));border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.1);color:#fff;font:inherit;font-size:calc(14 * var(--wm));outline:none;transition:background-color .2s ease,border-color .2s ease}
.ws-search input::placeholder{color:rgba(255,255,255,.72)}
.ws-search input:hover{background:rgba(255,255,255,.14)}
.ws-search input:focus{background:rgba(255,255,255,.2);border-color:rgba(255,255,255,.65)}
.ws-search input::-webkit-search-cancel-button{filter:invert(1)}
.ws-top__r{grid-column:3;justify-self:end;display:flex;align-items:center;gap:calc(8 * var(--wm))}
.ws-circ{position:relative;width:calc(42 * var(--wm));height:calc(42 * var(--wm));border-radius:calc(13 * var(--wm));display:grid;place-items:center;color:#fff;transition:background-color .2s ease}
.ws-circ:hover{background:rgba(255,255,255,.14)}
.ws-circ svg{width:calc(19 * var(--wm));height:calc(19 * var(--wm))}
.ws-circ .dot{position:absolute;top:calc(9 * var(--wm));right:calc(10 * var(--wm));width:calc(7 * var(--wm));height:calc(7 * var(--wm));border-radius:50%;background:#d8443b}
.ws-pill{display:flex;align-items:center;gap:calc(11 * var(--wm));height:calc(44 * var(--wm));padding:0 calc(16 * var(--wm)) 0 calc(5 * var(--wm));border-radius:calc(15 * var(--wm));border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.08);color:#fff;font-size:calc(14 * var(--wm));transition:background-color .2s ease,border-color .2s ease}
.ws-pill:hover{background:rgba(255,255,255,.18);border-color:rgba(255,255,255,.55)}
.ws-hero__b{padding:calc(30 * var(--wm)) calc(36 * var(--wm)) 0 calc(43 * var(--wm))}
.ws-kick{margin:0 0 calc(8 * var(--wm));font-size:calc(16 * var(--wm));line-height:calc(20 * var(--wm));color:rgba(255,255,255,.88)}
.ws-hero .ws-h1{margin:0;font-size:calc(56 * var(--wm));line-height:calc(62 * var(--wm));font-weight:400;letter-spacing:-.035em;color:#fff;white-space:normal}
.ws-lead{margin:calc(14 * var(--wm)) 0 0;max-width:calc(780 * var(--wm));font-size:calc(20 * var(--wm));line-height:calc(27 * var(--wm));color:rgba(255,255,255,.92)}
body[data-hero="compact"] .ws-hero{min-height:calc(176 * var(--wm))}
body[data-hero="compact"] .ws-h1{font-size:calc(36 * var(--wm));line-height:calc(42 * var(--wm))}
body[data-hero="compact"] .ws-lead{display:none}

/* содержимое — светлая панель, наезжающая на фото */
.shell.ws .content{position:relative;z-index:1;flex:1;margin-top:calc(-24 * var(--wm));padding:calc(26 * var(--wm)) calc(28 * var(--wm)) calc(28 * var(--wm));border-radius:calc(24 * var(--wm)) calc(24 * var(--wm)) 0 0;background:var(--ws-bg)}
.shell.ws .card,.shell.ws .pcard,.shell.ws .list,.shell.ws .stat{background-color:#fbfaf7}
/* блоки видны сразу: анимация появления с прозрачности могла оставлять страницу пустой, пока браузер не отрисует кадр */
.shell.ws .content > .e{opacity:1;transform:none;animation:none}
/* заголовок страницы уже в шапке */
.shell.ws .content .ptitle,.shell.ws .content .psub{display:none}

@media (max-width:1099.98px){
  .shell.ws{display:block}
  .ws-side{position:static;height:auto;border-right:0;border-bottom:1px solid #e9e7e1;overflow:visible}
  .ws-logo{height:60px;padding-left:20px}
  .ws-me,.ws-out,.ws-nav .nav__label{display:none}
  .ws-nav{flex-direction:row;gap:6px;padding:10px 20px;overflow-x:auto;scrollbar-width:none}
  .ws-nav::-webkit-scrollbar{display:none}
  .ws-nav .nav__item{flex:none;height:40px;gap:10px;padding:0 14px;font-size:14px}
  .ws-nav .nav__item svg{width:18px;height:18px}
  .ws-top{grid-template-columns:minmax(0,1fr) auto;gap:10px;margin:10px 12px 0;padding:0 6px 0 14px;height:56px}
  .ws-search{grid-column:1}
  .ws-search[hidden] + .ws-top__r{grid-column:1 / -1}
  .ws-top__r{grid-column:2}
  .ws-search input{height:40px;font-size:14px}
  .ws-hero{height:auto;padding-bottom:44px}
  .ws-hero__b{padding:20px 20px 0}
  .shell.ws .content{padding:22px 20px 40px}
}
@media (max-width:739.98px){
  .ws-pill > span:not(.ws-av){display:none}
  .ws-pill{padding-right:5px}
  .ws-hero .ws-h1{font-size:clamp(30px,9vw,40px);line-height:1.1}
  .ws-lead{font-size:15px;line-height:21px}
  .shell.ws .content{padding:18px 16px calc(28px + env(safe-area-inset-bottom))}
}

/* ---------------- вложения в чатах и проектах (VSU.uploads.html) ---------------- */
.att{display:flex;flex-wrap:wrap;gap:calc(8 * var(--u))}
.att__it{position:relative;display:inline-flex;max-width:100%}
.att__f{display:flex;align-items:center;gap:calc(10 * var(--u));max-width:calc(280 * var(--u));padding:calc(8 * var(--u)) calc(12 * var(--u)) calc(8 * var(--u)) calc(8 * var(--u));border:1px solid var(--line);border-radius:calc(12 * var(--u));background:var(--paper);color:var(--ink);text-decoration:none;transition:background-color .15s ease}
.att__f:hover{background:var(--paper-2)}
.att__ic{flex:none;width:calc(36 * var(--u));height:calc(36 * var(--u));border-radius:calc(9 * var(--u));display:grid;place-items:center;background:var(--blue);color:#fff;font-size:calc(10.5 * var(--u));font-weight:600;letter-spacing:.02em}
.att__t{min-width:0;display:flex;flex-direction:column}
.att__t b{font-size:calc(13 * var(--u));line-height:calc(17 * var(--u));font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.att__t small{font-size:calc(11.5 * var(--u));line-height:calc(15 * var(--u));color:var(--muted)}
.att__it--img a{display:block;width:calc(120 * var(--u));height:calc(90 * var(--u));border-radius:calc(12 * var(--u));overflow:hidden;border:1px solid var(--line);background:var(--paper-2)}
.att__it--img img{width:100%;height:100%;object-fit:cover;display:block}
.att__x{position:absolute;top:calc(-6 * var(--u));right:calc(-6 * var(--u));width:calc(22 * var(--u));height:calc(22 * var(--u));padding:0;border:0;border-radius:50%;display:grid;place-items:center;background:var(--ink);color:#fff;cursor:pointer}
.att__x svg{width:calc(12 * var(--u));height:calc(12 * var(--u))}
@media (max-width:739.98px){.att__f{max-width:100%}.att__it--img a{width:104px;height:78px}.att__x{width:28px;height:28px;top:-8px;right:-8px}}
/* телефон: элементы управления не меньше 36px — по ним удобно попадать пальцем */
@media (max-width:739.98px){
  .cal__nav button{width:36px;height:36px}
  .cal__todaybtn{height:36px}
  .card__more,.sec__link{display:inline-flex;align-items:center;min-height:36px}
  .att__ic{font-size:11px}
}
/* телефон: поле касания у кнопок и ссылок-кнопок не меньше 32–36px */
@media (max-width:739.98px){
  .control__btn{width:40px;height:40px;right:0}
  .icon-btn{min-width:36px;min-height:36px}
  .pcard__more{min-height:36px;display:inline-flex;align-items:center}
  .pcard__foot .lnk,.cp__flow .link,.cp__cur .link,.form__foot a{display:inline-flex;align-items:center;min-height:32px}
}

/* ==================================================================
   Единый дизайн: элементы страниц компании и ВГУ выглядят так же, как в кабинете студента (cab.css) —
   овальные кнопки, чипы-заливки, тёплые карточки без тени, поля со скруглением 12, заголовки без жирного.
   Только внутри каркаса кабинета (.shell.ws), страницы входа и регистрации не меняются.
   ================================================================== */
.shell.ws{--paper:#fbfaf7;--paper-2:#edece8;--paper-3:#f6f5f1;--line:#e6e4de;--line-2:#dcd9d1;--ink:#16171b;--muted:#6f7077;--icon:#6f7077;--faint:#9a9a9f;--yellow:#c9a24a;--yellow-soft:#fdf0c4;--yellow-text:#7a5a00;color:var(--ink)}
.shell.ws .cta{height:calc(40 * var(--u));padding:0 calc(20 * var(--u));gap:calc(10 * var(--u));border-radius:calc(20 * var(--u));background:var(--ws-olive);color:#fff;font-weight:500;box-shadow:none}
.shell.ws .cta:hover{background:var(--ws-olive2)}
.shell.ws .cta--sm{height:calc(34 * var(--u));padding:0 calc(15 * var(--u));border-radius:calc(17 * var(--u));font-size:calc(13 * var(--u))}
.shell.ws .cta--ghost{background:#fff;color:#2b2c31;border:1px solid var(--line);box-shadow:none}
.shell.ws .cta--ghost:hover{background:#f6f5f1}
.shell.ws .cta--yellow{background:var(--ws-olive);color:#fff;font-weight:500}
.shell.ws .cta--yellow:hover{background:var(--ws-olive2)}
.shell.ws .cta--danger{background:#fbe4e1;color:#9a2a22}
.shell.ws .cta:disabled,.shell.ws .cta[aria-disabled="true"]{opacity:.5}
.shell.ws .card{background:#fbfaf7;border:1px solid #efede8;border-radius:calc(16 * var(--u));box-shadow:none}
.shell.ws .card__title{font-size:calc(16 * var(--u));line-height:calc(22 * var(--u));font-weight:500;letter-spacing:-.01em}
.shell.ws .card__sub{color:var(--muted)}
.shell.ws .sec__title{font-size:calc(20 * var(--u));line-height:calc(26 * var(--u));font-weight:400;letter-spacing:-.015em}
.shell.ws .list{border:1px solid #efede8;border-radius:calc(14 * var(--u));background:#fbfaf7;box-shadow:none}
.shell.ws .row:hover{background:#f3f1ed}
.shell.ws .chip{height:calc(36 * var(--u));padding:0 calc(15 * var(--u));border:0;border-radius:calc(12 * var(--u));background:#ebeae5;box-shadow:none;color:#2b2c31;font-weight:400;line-height:calc(36 * var(--u))}
.shell.ws .chip:hover{background:#e3e1db;color:#2b2c31}
.shell.ws .chip.is-on,.shell.ws .chip[aria-pressed="true"],.shell.ws .chip[aria-selected="true"]{background:#2b302a;color:#fff}
.shell.ws .chip__n{background:rgba(0,0,0,.06);color:inherit;font-weight:500}
.shell.ws .chip.is-on .chip__n,.shell.ws .chip[aria-selected="true"] .chip__n{background:rgba(255,255,255,.18);color:#fff}
.shell.ws .chip__n--hot{background:#d8443b;color:#fff}
.shell.ws .input,.shell.ws .select,.shell.ws .textarea{border:1px solid #ebe9e3;border-radius:calc(12 * var(--u));background-color:#fdfdfc;box-shadow:none}
.shell.ws .input:focus,.shell.ws .select:focus,.shell.ws .textarea:focus{border-color:#b9b39f;box-shadow:0 0 0 3px rgba(201,162,74,.18)}
.shell.ws .label{font-weight:400;color:var(--muted)}
.shell.ws .tag{border-radius:calc(13 * var(--u));background:#ebeae5;color:#2b2c31}
.shell.ws .tag--blue{background:#e2eae3;color:#2f3a2c;font-weight:400}
.shell.ws .badge{background:#e8e7e3;color:#3b3c40}
.shell.ws .empty{border:1px dashed #d8d5cd;border-radius:calc(14 * var(--u));color:var(--muted)}
.shell.ws .icon-btn{border-radius:calc(12 * var(--u));border-color:var(--line);background:#fff;box-shadow:none}
.shell.ws .bar{background:#e8e7e3}
.shell.ws .bar i{background:var(--ws-olive)}
.shell.ws .link{color:var(--ws-olive)}
.shell.ws .notice{border-color:#f1e2a6;border-radius:calc(14 * var(--u))}
body:has(.shell.ws) .modal__box{background:#fbfaf7;border-radius:calc(20 * var(--u))}
body:has(.shell.ws) .modal .cta{border-radius:calc(20 * var(--u));background:var(--ws-olive);color:#fff}
body:has(.shell.ws) .modal .cta--ghost{background:#fff;color:#2b2c31;border:1px solid var(--line)}

/* меню и шапка — как в кабинете студента: без подписей разделов, внизу — карточка-подсказка, выход — в меню профиля */
.ws-nav .nav__label{display:none}
.ws-nav{gap:calc(4 * var(--wm));padding-top:calc(30 * var(--wm))}
.ws-nav .nav__item{height:calc(48 * var(--wm));gap:calc(25 * var(--wm));padding:0 calc(14 * var(--wm)) 0 calc(17 * var(--wm))}
.ws-nav .nav__item svg{width:calc(21 * var(--wm));height:calc(21 * var(--wm))}
.ws-nav .nav__item{gap:calc(18 * var(--wm))}
.ws-nav .nav__item > span:not(.n){flex:1;min-width:0;line-height:1.25}
.ws-nav .nav__item .n{margin-left:0}
.ws-av--big{width:calc(72 * var(--wm));height:calc(72 * var(--wm))}
.ws-me{padding-top:calc(24 * var(--wm))}
.ws-me__n{margin-top:calc(14 * var(--wm));font-size:calc(16.5 * var(--wm));line-height:calc(22 * var(--wm))}
.ws-idea{margin:auto calc(22 * var(--wm)) calc(44 * var(--wm)) calc(26 * var(--wm));display:flex;flex-direction:column;gap:calc(16 * var(--wm));position:relative;padding:calc(19 * var(--wm)) calc(19 * var(--wm)) calc(22 * var(--wm));border:1px solid #ebe9e3;border-radius:calc(16 * var(--wm));background:#fbfaf7;flex:none;color:var(--ws-ink);transition:transform .2s ease,box-shadow .2s ease}
.ws-idea:hover{transform:translateY(-2px);box-shadow:0 10px 24px -18px rgba(40,35,20,.6)}
.ws-idea i{width:calc(38 * var(--wm));height:calc(38 * var(--wm));border-radius:calc(10 * var(--wm));display:grid;place-items:center;background:#edece8}
.ws-idea i svg{width:calc(18 * var(--wm));height:calc(18 * var(--wm))}
.ws-idea span{font-size:calc(12.5 * var(--wm));line-height:calc(18 * var(--wm))}
.ws-idea > svg{position:absolute;right:calc(19 * var(--wm));top:50%;width:calc(15 * var(--wm));height:calc(15 * var(--wm))}
.ws-pill{position:relative;border:1px solid rgba(255,255,255,.3);cursor:pointer;font:inherit;font-size:calc(14 * var(--wm))}
.ws-pill > svg{width:calc(15 * var(--wm));height:calc(15 * var(--wm))}
.ws-menu{position:absolute;right:0;top:calc(100% + 10px);z-index:40;min-width:220px;padding:6px;border-radius:14px;background:#fff;color:var(--ws-ink);box-shadow:0 18px 40px -16px rgba(0,0,0,.45);display:flex;flex-direction:column;text-align:left}
.ws-menu a{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:9px;font-size:14px}
.ws-menu a:hover{background:#f2f1ec}
.ws-menu svg{width:16px;height:16px;color:var(--ws-gray)}
@media (max-width:1099.98px){.ws-idea{display:none}}
@media (max-width:739.98px){.ws-pill > svg{display:none}}
