/* Small editorial accents, retaining the original artwork and card layout. */
.editorial-kicker{display:flex;align-items:center;gap:16px;margin:0 0 18px;font:500 10px/1.5 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.editorial-kicker:after{content:"";width:42px;height:1px;background:var(--gold);flex-shrink:0}
.editorial-header{padding-top:22px;padding-bottom:20px;min-height:154px}
.editorial-header .uc-title{font-size:clamp(32px,3.3vw,46px);font-weight:400;letter-spacing:-.025em}
#ovHero{padding-top:20px;padding-bottom:18px}
#ovHero .dash-hello{font-size:clamp(30px,3.4vw,48px);line-height:1.15;letter-spacing:-.025em}
.uc-note{margin:12px 0 0;border-top:1px solid var(--line);padding-top:11px}
.uc-note summary{display:flex;gap:8px;align-items:center;cursor:pointer;color:var(--muted);font:500 12px var(--sans);list-style:none;padding:4px 0}
.uc-note summary::-webkit-details-marker{display:none}
.uc-note summary:after{content:"+";margin-left:auto}
.uc-note[open] summary:after{content:"−"}
.uc-note summary:hover,.uc-note[open] summary{color:var(--ever)}
.uc-note-form{padding-top:12px}
.uc-note-label{font:500 11px var(--sans);color:var(--muted);display:block}
.uc-note textarea{display:block;box-sizing:border-box;width:100%;min-height:110px;margin:8px 0 12px;padding:11px;border:1px solid var(--line2);border-radius:8px;background:var(--sand);font:400 13px/1.6 var(--sans);color:var(--ink);resize:vertical}
.uc-note textarea:focus{outline:2px solid var(--sage);outline-offset:2px}
.uc-note-actions{display:flex;justify-content:flex-end;gap:8px}
.uc-note-error{font:500 12px/1.5 var(--sans);color:#8a3e22;margin:8px 0 0}
.uc-note-error:empty{display:none}
.uc-note button:disabled{opacity:.55;cursor:wait}
@media(max-width:560px){.editorial-kicker{font-size:9px;letter-spacing:.08em;gap:10px;margin-bottom:12px}.editorial-header{min-height:0;padding-top:12px;padding-bottom:12px}#ovHero{padding-top:12px;padding-bottom:12px}}
:root{
  --sand:#f6f3ec; --panel:#fffefb; --line:#ece8df; --line2:#e3e0d8;
  --ink:#23211c; --muted:#8a8576; --muted2:#9a9484;
  --ever:#23382c; --ever2:#2f4738; --gold:#c9b88f; --clay:#c2703f;
  --sage:#5e8068; --sage-bg:#eaf0ea; --clay-bg:#f7e9df;
  --ok-bg:#eef3ee; --ok-bd:#d4e2d6; --ok-tx:#2f5a3b;
  --err-bg:#f9ebe6; --err-bd:#eccfc2; --err-tx:#8a3e22;
  --info-bg:#f3efe4; --info-tx:#6b5a2e;
  --card-sh:0 6px 20px rgba(40,35,25,.05); --card-sh2:0 8px 18px rgba(40,35,25,.1);
  --serif:Georgia,'Times New Roman',serif;
  --sans:'Segoe UI',-apple-system,BlinkMacSystemFont,Roboto,Helvetica,Arial,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;overscroll-behavior:none}
/* Фон и на html тоже: при перелистывании за край телефон показывает именно
   его, и без этой строки сверху и снизу выезжала белая полоса. */
html{background:var(--sand)}
html{scrollbar-gutter:stable}
/* Аккуратная тонкая полоса прокрутки в стиле сайта (шалфейно-зелёная). */
html{scrollbar-width:thin;scrollbar-color:rgba(94,128,104,.42) transparent}
*{scrollbar-width:thin;scrollbar-color:rgba(94,128,104,.42) transparent}
*::-webkit-scrollbar{width:10px;height:10px}
*::-webkit-scrollbar-track{background:transparent}
*::-webkit-scrollbar-thumb{background:rgba(94,128,104,.34);border-radius:10px;border:3px solid transparent;background-clip:content-box}
*::-webkit-scrollbar-thumb:hover{background:rgba(94,128,104,.55);background-clip:content-box}
*::-webkit-scrollbar-corner{background:transparent}
/* Все файловые поля скрыты — загрузка идёт через оформленные кнопки/зоны */
input[type="file"]{display:none!important}
body{font-family:var(--sans);color:var(--ink);background:var(--sand);min-height:100vh}
.serif{font-family:var(--serif);font-weight:400}
.hidden{display:none!important}
a{color:var(--ever);text-decoration:none;border-bottom:1px solid var(--gold);padding-bottom:1px}
a:hover{color:var(--clay)}

/* ---------- АВТОРИЗАЦИЯ (увеличенные размеры) ---------- */
.auth-screen{min-height:100vh;display:grid;grid-template-columns:minmax(320px,440px) 1fr;background:var(--sand)}
.auth-hero{position:relative;background:linear-gradient(155deg,#2f4738,#22382c 60%,#1c2f25);
  color:#f3efe4;padding:40px 38px;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden}
.hero-top{font-family:var(--serif);font-size:18px;letter-spacing:.3px;position:relative;z-index:2}
.hero-art{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;opacity:.9}
.hero-bottom{position:relative;z-index:2}
.hero-rule{display:block;width:56px;height:1px;background:var(--gold);margin-bottom:18px}
.hero-text{font-family:var(--serif);font-size:24px;line-height:1.4;margin:0;color:#f4f0e6}

.auth-panel{display:flex;align-items:center;justify-content:center;padding:54px 46px}
.auth-form{width:100%;max-width:480px;animation:fade .4s ease}
@keyframes fade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.title{font-size:36px;margin:0 0 8px;color:var(--ink)}
.subtitle{margin:0 0 32px;color:var(--muted);font-size:16px}

.field{display:flex;flex-direction:column;gap:8px;margin-bottom:22px}
.cap{font-size:12.5px;letter-spacing:.5px;text-transform:uppercase;color:var(--muted2)}
.opt{text-transform:none;letter-spacing:0}
.field input{height:54px;border:1.5px solid var(--line2);border-radius:11px;background:var(--panel);
  font-size:17px;color:var(--ink);padding:0 16px;outline:none;transition:border-color .15s,box-shadow .15s}
.field input::placeholder{color:#bdb8a8}
.field input:focus{border-color:var(--ever);box-shadow:0 0 0 3px rgba(35,56,44,.1)}
.hint{font-size:13px;color:var(--muted)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}
.span2{grid-column:1 / -1}

.pwd{position:relative;display:flex}
.pwd input{flex:1;padding-right:48px;width:100%}
.pwd-eye{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:38px;height:38px;
  border:none;background:transparent;cursor:pointer;display:grid;place-items:center;color:#9a9484;border-radius:8px}
.pwd-eye:hover{color:var(--ever);background:#f3efe4}

.consent{display:flex;gap:12px;align-items:flex-start;font-size:15px;color:#5e5a4e;line-height:1.55;
  background:var(--panel);border:1px solid var(--line);border-radius:11px;padding:15px;margin:8px 0 24px}
.consent input{margin-top:2px;width:19px;height:19px;accent-color:var(--ever);flex:0 0 auto}

.btn-solid{width:100%;height:54px;border:none;border-radius:11px;background:var(--ever);color:#f3efe4;
  font-size:17px;letter-spacing:.4px;cursor:pointer;transition:background .15s,transform .08s}
.btn-solid:hover{background:#1b2e23}
.btn-solid:active{transform:scale(.99)}
.btn-solid[disabled]{opacity:.6;cursor:not-allowed}
.btn-line{background:transparent;border:1px solid var(--line2);border-radius:8px;padding:9px 16px;
  font-size:13.5px;color:#5e5a4e;cursor:pointer}
.btn-line:hover{border-color:var(--ever);color:var(--ever)}

.switch{text-align:center;margin:24px 0 0;color:var(--muted);font-size:15px}
.alert{border-radius:10px;padding:13px 16px;font-size:14.5px;line-height:1.5;margin-bottom:18px}
.alert.err{background:var(--err-bg);color:var(--err-tx);border:1px solid var(--err-bd)}
.alert.ok{background:var(--ok-bg);color:var(--ok-tx);border:1px solid var(--ok-bd)}
.alert.info{background:var(--info-bg);color:var(--info-tx);border:1px solid #e6dcc3}

/* ---------- КАБИНЕТ ---------- */
.dash{min-height:100vh;display:flex;flex-direction:column;
  background:
    radial-gradient(1000px 620px at 100% -8%, rgba(35,56,44,.12), transparent 60%),
    radial-gradient(840px 560px at -8% 112%, rgba(201,184,143,.30), transparent 55%),
    repeating-radial-gradient(circle at 18px 18px, rgba(201,184,143,.10) 0 1.4px, transparent 1.4px 26px),
    var(--sand);
  background-attachment:fixed}
.topnav{display:flex;align-items:center;justify-content:space-between;gap:18px;
  padding:18px 34px;background:rgba(255,254,251,.92);backdrop-filter:saturate(120%) blur(4px);border-bottom:1px solid var(--line)}
.brand{font-size:19px;color:var(--ever);letter-spacing:.3px}
.nav{display:flex;gap:28px;font-size:14px;color:#6f6a5c}
.nav a{border:none;padding:0;color:#6f6a5c;cursor:pointer}
.nav a.active{color:var(--ever);border-bottom:1.5px solid var(--gold);padding-bottom:4px}
.nav a:hover{color:var(--ever)}
.nav-right{display:flex;align-items:center;gap:14px}
.avatar{width:38px;height:38px;border-radius:50%;background:var(--ever);color:#f3efe4;
  display:grid;place-items:center;font-family:var(--serif);font-size:15px}
.bell-wrap{position:relative;display:flex}
.bell{position:relative;width:40px;height:40px;border-radius:10px;border:1px solid var(--line2);background:#fff;color:#5e5a4e;cursor:pointer;display:grid;place-items:center;padding:0}
.bell:hover{border-color:var(--ever);color:var(--ever)}
.bell-count{position:absolute;top:-5px;right:-5px;min-width:18px;height:18px;padding:0 4px;border-radius:999px;background:var(--clay);color:#fff;font-size:11px;display:flex;align-items:center;justify-content:center;font-weight:600;line-height:1}
.bell-panel{position:fixed;top:64px;right:24px;width:340px;max-width:88vw;max-height:430px;overflow-y:auto;scrollbar-width:none;-ms-overflow-style:none;background:#fffefb;border:0.5px solid var(--line);border-radius:14px;box-shadow:0 24px 60px -24px rgba(40,38,32,.45);z-index:80}
.bell-panel::-webkit-scrollbar{width:0!important;height:0!important;display:none!important}
.bell-head{padding:14px 18px;font-weight:600;font-size:15px;color:var(--ink);border-bottom:0.5px solid var(--line);position:sticky;top:0;background:#fffefb;display:flex;align-items:center;justify-content:space-between;gap:10px}
.bell-x{display:none;width:30px;height:30px;border:none;background:transparent;color:#8a8576;cursor:pointer;align-items:center;justify-content:center;border-radius:8px;flex-shrink:0}
.bell-x:hover{background:#f1ede3}
.bell-head-acts{display:flex;align-items:center;gap:8px;flex-shrink:0}
.bell-markall{border:none;background:transparent;color:#3f5a48;cursor:pointer;font:600 12px var(--sans);padding:4px 6px;border-radius:8px;white-space:nowrap}
/* Переключатель звука уведомлений. Выключенный — приглушённый,
   включённый — в цвет кабинета, чтобы состояние читалось без подписи. */
.bell-snd{border:none;background:transparent;color:#a7a293;cursor:pointer;padding:5px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;transition:background .15s,color .15s}
.bell-snd:hover{background:#eef0e9;color:#3f5a48}
.bell-snd.on{color:#3f5a48}

.bell-markall:hover{background:#f1ede3;color:#23382c}
.bell-empty{padding:28px 18px;text-align:center;color:var(--muted);font-size:14px}
.bell-item{display:flex;gap:12px;align-items:flex-start;padding:13px 16px;border-bottom:0.5px solid var(--line)}
.bell-item:last-child{border-bottom:none}
.bell-item.unread{background:#f8faf6}
.bell-item.bell-go{cursor:pointer;transition:background .15s}
.bell-item.bell-go:hover{background:#eef0e9}
.bell-ic{width:40px;height:40px;border-radius:11px;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:#eef0e9;color:#2f6b46}
.bell-ic-payments{background:#f7e9df;color:#a85f30}
.bell-ic-homework{background:#eae6f3;color:#5a4a86}
.bell-ic-bell{background:#eef0e9;color:#2f6b46}
.bell-main{flex:1;min-width:0}
.bell-t-row{display:flex;align-items:center;gap:8px}
.bell-t{margin:0;font-size:14px;font-weight:600;color:var(--ink)}
.bell-dot{width:7px;height:7px;border-radius:50%;background:#c2703f;flex-shrink:0}
.bell-b{margin:2px 0 0;font-size:13px;color:#5e5a4e;line-height:1.4}
.bell-foot-row{display:flex;align-items:center;gap:10px;margin-top:5px;flex-wrap:wrap}
.bell-when{margin:0;font-size:11.5px;color:var(--muted)}
.bell-open{font:600 11.5px var(--sans);color:#3f5a48}

.dash-main{flex:1 0 auto;max-width:1040px;width:100%;margin:0 auto;padding:34px 34px 28px}
.dash-main.wide{max-width:1280px}
.dash-date{margin:0;color:var(--muted);font-size:13.5px;text-transform:capitalize}
.dash-hello{font-size:34px;margin:7px 0 26px;color:var(--ink);letter-spacing:-.4px}

/* статистика — карточки с картинкой */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(232px,1fr));gap:18px}
.stat{background:var(--panel);border:1px solid var(--line);border-radius:18px;overflow:hidden;
  display:flex;flex-direction:column;box-shadow:0 16px 44px -30px rgba(40,38,32,.5);transition:transform .12s,box-shadow .12s}
.stat:hover{transform:translateY(-2px);box-shadow:0 22px 52px -28px rgba(40,38,32,.55)}
.stat-img{height:96px;display:flex;align-items:center;justify-content:center;border-bottom:1px solid var(--line);
  background:linear-gradient(135deg,#eef1ea,#e6ece3)}
.stat-img svg{width:100%;height:100%;display:block}
.stat.dark .stat-img{background:linear-gradient(135deg,#2f4738,#22382c);border-bottom:none}
.stat-body{padding:18px 22px 22px;display:flex;flex-direction:column;gap:7px;flex:1;justify-content:flex-start}
.stat.dark{background:var(--ever);border:none;color:#f3efe4}
.stat .scap{margin:0;font-size:13px;letter-spacing:.5px;text-transform:uppercase;color:var(--muted2)}
.stat.dark .scap{color:#a9bdaf}
.stat .sbig{font-family:var(--serif);font-size:30px;line-height:1.08;color:var(--ink);margin:4px 0 0}
.stat.dark .sbig{color:#f3efe4}
.stat .nl-when{font-family:var(--serif);font-size:20px;line-height:1.3;color:var(--ink);margin:5px 0 0}
.stat.dark .nl-when{color:#f3efe4}
.stat .ssub{margin:0;font-size:14.5px;color:var(--muted);line-height:1.5}
.stat.dark .ssub{color:#bfd0c2}
.stat .sempty{margin:0;font-size:16px;color:var(--muted)}
.stat.dark .sempty{color:#cfe0d4}

.footer{border-top:1px solid var(--line);padding:24px 34px 40px;display:flex;flex-wrap:wrap;gap:22px;justify-content:center;background:rgba(255,254,251,.75)}
.footer a{color:var(--muted);font-size:13px;border:none}
.footer a:hover{color:var(--ever)}

/* ---------- Модалка ---------- */
.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:120;background:rgba(28,27,22,.5);display:grid;place-items:center;padding:20px}
.modal-box{background:var(--panel);border-radius:14px;max-width:680px;width:100%;max-height:84vh;display:flex;flex-direction:column;box-shadow:0 30px 70px -30px rgba(0,0,0,.5)}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--line)}
.modal-head h2{margin:0;font-size:19px;color:var(--ink)}
.modal-body{padding:24px;overflow:auto;line-height:1.65;font-size:14.5px;color:#403c33;white-space:pre-wrap}

@media(max-width:840px){
  .auth-screen{grid-template-columns:1fr}
  .auth-hero{min-height:140px;flex-direction:row;align-items:center;padding:22px 26px}
  .hero-bottom{display:none}
  .nav{display:none}
  .dash-hello{font-size:28px}
}
@media(max-width:520px){
  .grid2{grid-template-columns:1fr}
  .auth-panel{padding:32px 22px}
  .title{font-size:27px}
}

/* ---------- Раздел: общие ---------- */
.section-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:0 0 18px;flex-wrap:wrap}
.section-title{font-family:var(--serif);font-size:24px;color:var(--ink);margin:0}
.panel-card{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:20px 22px;
  box-shadow:0 16px 44px -32px rgba(40,38,32,.5);margin-bottom:18px}
.panel-cap{margin:0 0 14px;font-size:12px;letter-spacing:.5px;text-transform:uppercase;color:var(--muted2)}
.empty-line{color:var(--muted);font-size:15px;padding:8px 0}
.sched-hint{font-size:13px;color:var(--muted);margin:0 0 14px}
.btn-add{height:42px;border:none;border-radius:10px;background:var(--ever);color:#f3efe4;font-size:14px;padding:0 18px;cursor:pointer}
.btn-add:hover{background:#1b2e23}
.slot-act{height:40px;border:1.5px solid var(--line2);background:#fff;color:#5e5a4e;border-radius:10px;
  font-size:14px;padding:0 16px;cursor:pointer;transition:border-color .12s,color .12s;font-family:inherit}
.slot-act:hover{border-color:var(--ever);color:var(--ever)}
.hw-chip{display:inline-flex;align-items:center;gap:10px;background:#eef3ec;border:1px solid #d9e4d8;
  border-radius:999px;padding:8px 8px 8px 16px;font-size:14px;color:var(--ink);margin-bottom:18px}
.hw-chip b{font-weight:600}
.hw-chip button{border:none;background:#fff;color:var(--ever);border:1px solid #cdded0;border-radius:999px;
  padding:5px 12px;font-size:12.5px;cursor:pointer;font-family:inherit}
.hw-chip button:hover{background:var(--ever);color:#f3efe4}

/* ---------- Календарь ---------- */
.cal-nav{display:flex;align-items:center;gap:14px}
.cal-nav button{width:36px;height:36px;border:1px solid var(--line2);background:var(--panel);border-radius:9px;cursor:pointer;font-size:16px;color:#5e5a4e}
.cal-nav button:hover{border-color:var(--ever);color:var(--ever)}
.cal-range{font-family:var(--serif);font-size:17px;color:var(--ink);min-width:190px;text-align:center;text-transform:capitalize}
.cal-legend{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin:0 0 14px}
.cal-legend span{display:flex;align-items:center;gap:6px}
.lg{width:14px;height:14px;border-radius:4px;display:inline-block}
.lg-free{background:#fffefb;border:1px solid #d8d3c6}
.lg-pending{background:repeating-linear-gradient(45deg,#efe2cb,#efe2cb 4px,#faf5ea 4px,#faf5ea 8px);border:1px solid #e0cfa9}
.lg-paid{background:repeating-linear-gradient(45deg,#cfe2c8,#cfe2c8 4px,#eef5ea 4px,#eef5ea 8px);border:1px solid #9cc0a6}
.lg-paidsub{background:#bfdcb6;border:1px solid #7fae86}

.cal{overflow-x:auto}
.cal-grid{display:grid;grid-template-columns:54px repeat(7,minmax(0,1fr));gap:4px;min-width:640px}
.cal-corner{}
.cal-dh{text-align:center;padding:8px 0;font-size:13.5px;color:#5e5a4e}
.cal-dh b{display:block;font-family:var(--serif);font-size:20px;color:var(--ink);font-weight:400}
.cal-dh.today b{color:var(--clay)}
.cal-hr{display:flex;align-items:center;justify-content:flex-end;font-size:14px;font-weight:500;color:#6f6a5c;padding:0 9px 0 0}
.tz-sel{height:34px;border:1.5px solid var(--line2);border-radius:8px;background:#fff;font-size:12.5px;padding:0 8px;color:#46435c;font-family:inherit;max-width:185px;cursor:pointer}
.tz-sel:focus{border-color:var(--ever);outline:none}
.cal-cell{min-height:54px;border:1px solid var(--line);border-radius:9px;background:#fcfaf4;cursor:pointer;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:4px;transition:border-color .12s,background .12s}
.cal-cell.empty:hover{border-color:var(--ever);background:#fff}
.cal-cell.empty{color:#cdc6b4;font-size:20px}
.cal-cell.slot{cursor:pointer;font-size:14px;line-height:1.3}
.cell-free{background:#fffefb;border-color:#d8d3c6}
.cell-free:hover{border-color:var(--ever)}
.cell-pending{background:repeating-linear-gradient(45deg,#efe2cb,#efe2cb 5px,#faf5ea 5px,#faf5ea 10px);border-color:#e0cfa9;color:#8a6d34}
.cell-paid{background:repeating-linear-gradient(45deg,#cfe2c8,#cfe2c8 5px,#eef5ea 5px,#eef5ea 10px);border-color:#9cc0a6;color:#2f5a3b}
.cell-paidsub{background:#bfdcb6;border-color:#7fae86;color:#234a2e}
.cell-mine_pending{background:repeating-linear-gradient(45deg,#cfe2c8,#cfe2c8 5px,#e8f1e4 5px,#e8f1e4 10px);border-color:#9cc0a6;color:#2f5a3b}
.cell-mine_paid{background:#cde3c4;border-color:#7fae86;color:#234a2e}
.cal-cell .ctime{font-weight:600;font-size:13.5px}
.cal-cell .cname{font-size:12px;opacity:.9;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* всплывающее окно действия */
.pop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:160;background:rgba(28,27,22,.45);display:grid;place-items:center;padding:20px}
.pop-box{background:var(--panel);border-radius:16px;max-width:420px;width:100%;padding:24px;box-shadow:0 30px 70px -30px rgba(0,0,0,.5)}
.pop-box h3{font-family:var(--serif);font-weight:400;font-size:21px;margin:0 0 4px;color:var(--ink)}
.pop-when{color:var(--muted);font-size:14px;margin:0 0 18px}
.pop-row{display:flex;gap:10px;margin:0 0 16px;flex-wrap:wrap}
.pop-opt{flex:1;min-width:130px;border:1.5px solid var(--line2);border-radius:11px;padding:12px;cursor:pointer;font-size:14px;color:#5e5a4e;text-align:center}
.pop-opt.active{border-color:var(--ever);background:#f3efe4;color:var(--ever)}
.pop-actions{display:flex;gap:10px;justify-content:flex-end}
.nfy{text-align:center}
.nfy-ic{width:56px;height:56px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:28px;margin:4px auto 16px;font-family:var(--serif);line-height:1}
.nfy-ic.ok{background:#dcebd6;color:#2f5a3b}
.nfy-ic.error{background:#f6e2da;color:#a23b1e}
.nfy-ic.warn{background:#efe7d4;color:#8a6d34}
.nfy-msg{font-size:16px;color:var(--ink);line-height:1.55;margin:0 0 22px}
.grade-box{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:15px 16px;margin-top:12px}
.grade-row{display:flex;align-items:center;gap:22px;flex-wrap:wrap;margin-bottom:12px}
.grade-pts{display:flex;align-items:center;gap:9px}
.grade-lbl{font-size:13px;letter-spacing:.3px;text-transform:uppercase;color:#9a9484}
.grade-pts .g-pts{width:66px;height:44px;border:1.5px solid var(--line2);border-radius:10px;text-align:center;font-size:17px;font-family:inherit;outline:none;background:#fff}
.grade-pts .g-pts:focus{border-color:var(--ever)}
.grade-max{font-size:14px;color:#8a8576}
.grade-cor{display:flex;align-items:center;gap:9px;font-size:15px;color:#403c33;cursor:pointer}
.grade-cor input{width:19px;height:19px;accent-color:var(--ever)}
.grade-com{width:100%;height:46px;border:1.5px solid var(--line2);border-radius:10px;padding:0 14px;font-size:15px;font-family:inherit;box-sizing:border-box;outline:none;background:#fff}
.grade-com:focus{border-color:var(--ever)}
/* мягкий зелёный фон для конструктора и проверки ДЗ */
.hw-green{background:#e9f0e7;border-radius:16px;padding:18px}
.hw-card{background:#fffefb;border:0.5px solid #d9e4d8;border-radius:14px;padding:18px;box-shadow:0 10px 28px -24px rgba(40,38,32,.5)}
.hw-2col{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:22px}
.hw-2col .fld{margin-top:0}
.hw-green .q-card{border-color:#d9e4d8}
.hw-green .hw-chip{margin-bottom:16px}
/* список заданий ученика */
.hw-row{display:flex;align-items:center;gap:13px;background:#fffefb;border:0.5px solid #d9e4d8;border-radius:13px;padding:14px 16px;margin-bottom:10px;cursor:pointer;box-shadow:0 8px 24px -22px rgba(40,38,32,.5);transition:transform .1s}
.hw-row:hover{transform:translateY(-1px);border-color:#9cc0a6}
.hw-row-ic{width:38px;height:38px;border-radius:11px;background:#e7efe6;color:var(--ever);display:grid;place-items:center;flex-shrink:0}
.hw-row-ic svg{width:20px;height:20px}
.hw-row-title{flex:1;margin:0;font-weight:600;font-size:15px;color:var(--ink)}
.hw-row-right{display:flex;align-items:center;gap:12px;flex-shrink:0}
/* выбор ученика плитками */
.hw-pick-lbl{margin:0 2px 12px;font-size:12px;letter-spacing:.4px;text-transform:uppercase;color:#7a8a7e}
.hw-pick-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.hw-pick-card{display:flex;align-items:center;gap:12px;background:#fffefb;border:0.5px solid #d9e4d8;border-radius:14px;padding:14px 16px;cursor:pointer;font-family:inherit;font-size:15px;color:var(--ink);box-shadow:0 8px 24px -22px rgba(40,38,32,.5);transition:transform .1s}
.hw-pick-card:hover{transform:translateY(-1px);border-color:var(--ever)}
.sw-list{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}
.sw-item{text-align:left;background:#fff;border:1.5px solid var(--line2);border-radius:11px;padding:12px 16px;font-size:15px;cursor:pointer;font-family:inherit;color:var(--ink)}
.sw-item:hover{border-color:var(--ever)}
.sw-item.on{background:#e7efe6;border-color:#9cc0a6;color:var(--ever)}
/* раздел «Ученики» */
.st-wrap{display:flex;flex-wrap:wrap;gap:12px;background:#e9f0e7;border-radius:16px;padding:14px;width:fit-content;max-width:100%}
.st-card{width:320px;max-width:100%;background:#fffefb;border:0.5px solid #d9e4d8;border-radius:16px;padding:16px 18px;cursor:pointer;box-shadow:0 10px 28px -24px rgba(40,38,32,.5);transition:transform .1s}
.st-card:hover{transform:translateY(-2px);border-color:#9cc0a6}
.st-top{display:flex;align-items:center;gap:12px;margin-bottom:14px}
.st-name{margin:0;font-weight:600;font-size:15px;color:var(--ink)}
.st-status{margin:2px 0 0;font-size:12.5px;color:#5e7a66}
.st-warn{font-size:12px;padding:4px 10px;border-radius:999px;background:#f6e2da;color:#a23b1e;white-space:nowrap}
.st-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(72px,1fr));gap:8px}
.st-box{background:#eef3ec;border-radius:10px;padding:9px 8px;text-align:center}
.st-box-v{font-family:var(--serif);font-size:20px;color:var(--ever);line-height:1}
.st-box-l{font-size:11px;color:#6f6a5c;margin-top:4px;line-height:1.2}
.st-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}
.st-detail{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:start}
.st-contacts{display:flex;flex-direction:column}
.st-cline{display:flex;align-items:center;gap:13px;padding:13px 0;border-bottom:0.5px solid var(--line)}
.st-cline:last-child{border-bottom:none}
.st-cline:first-child{padding-top:2px}
.st-cic{width:38px;height:38px;border-radius:11px;background:#eef3ec;color:var(--ever);display:grid;place-items:center;flex-shrink:0}
.st-cic svg{width:18px;height:18px}
.st-clbl{font-size:12.5px;color:var(--muted)}
.st-cval{font-size:15px;color:var(--ink);margin-top:1px}
.st-detail-stats{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-content:start}
.st-detail-stats .st-box{padding:16px 10px}
.st-detail-stats .st-box-v{font-size:24px}
.hw-stud-head{display:flex;align-items:center;gap:13px;background:var(--ever);color:#eef3ec;border-radius:14px;padding:14px 18px;margin-bottom:14px}
.hw-stud-av{width:42px;height:42px;border-radius:50%;background:rgba(255,255,255,.15);display:grid;place-items:center;font-family:var(--serif);font-size:17px;flex-shrink:0}
.hw-stud-name{font-size:15px;font-weight:500}
.hw-stud-sub{font-size:13px;color:#cfe0d4;margin-top:2px}
.tq{background:#fffefb;border:0.5px solid #d9e4d8;border-radius:14px;margin-bottom:14px;box-shadow:0 10px 28px -24px rgba(40,38,32,.5);overflow:hidden}
.tq-head{display:flex;align-items:center;gap:10px;padding:13px 16px;border-bottom:0.5px solid var(--line)}
.tq-num{width:27px;height:27px;border-radius:8px;background:#e7efe6;color:var(--ever);display:grid;place-items:center;font-family:var(--serif);font-size:14px;flex-shrink:0}
.tq-text{font-weight:600;font-size:15px;color:var(--ink)}
.tq-pts{margin-left:auto;font-size:12.5px;color:var(--muted);white-space:nowrap}
.tq-body{padding:15px 16px}
.tq-body .grade-box{background:#eef3ec;border-color:#d9e4d8}
.grade-box.locked{background:#f6f4ee}
.grade-box.locked .g-pts,.grade-box.locked .g-com{background:#efece3;color:#8a8576;cursor:not-allowed}
.grade-box.locked .grade-cor{cursor:default;color:#8a8576}
.pop-time{display:flex;gap:10px;margin:0 0 16px}
.pop-time .fg{flex:1;display:flex;flex-direction:column;gap:6px}
.pop-time label{font-size:12px;color:var(--muted2);text-transform:uppercase;letter-spacing:.4px}
.pop-time input{height:44px;border:1.5px solid var(--line2);border-radius:10px;background:var(--panel);font-size:15px;padding:0 12px;outline:none}
.pop-time input:focus{border-color:var(--ever)}

/* ---------- Оплаты (по макету Оплаты.dc) ---------- */
@keyframes pyPop{0%{opacity:0;transform:scale(.82) translateY(10px)}60%{transform:scale(1.03)}100%{opacity:1;transform:scale(1) translateY(0)}}
#view-dashboard[data-section="payments"] .dash-main{max-width:820px}
.py-titlerow{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:16px}
.py-h1{margin:0;font:600 33px var(--serif);color:#23211c}
.py-sub{margin:8px 0 0;font:500 13.5px var(--sans);color:#8a8576}
.py-tabwrap{margin-top:20px}
.py-tabs{display:flex;gap:4px;padding:4px;background:#f1ede3;border:1px solid var(--line);border-radius:14px;width:fit-content;max-width:100%;overflow-x:auto;-ms-overflow-style:none;scrollbar-width:none}
.py-tabs::-webkit-scrollbar{display:none}
.py-tab{display:flex;align-items:center;gap:8px;white-space:nowrap;cursor:pointer;border:none;border-radius:10px;padding:10px 18px;font:500 13px var(--sans);color:#6b6657;background:transparent;transition:background .18s,color .18s,box-shadow .18s}
.py-tab.on{font-weight:600;color:#23382c;background:#fffefb;box-shadow:0 2px 8px rgba(40,35,25,.1)}
.py-tabcount{font:700 10.5px var(--sans);min-width:18px;height:18px;padding:0 5px;box-sizing:border-box;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;color:#8a8576;background:#e6e1d4}
.py-tabcount.on{color:#fdfcf7;background:#23382c}
@keyframes pyPaneFade{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.py-pane{margin-top:20px;display:flex;flex-direction:column;gap:12px;animation:pyPaneFade .4s cubic-bezier(.16,.84,.44,1) both}
/* Оплаты (репетитор): статистика «всего оплачено» / «за месяц» */
.py-stats{margin-top:18px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.py-statcard{background:#fffefb;border:1px solid var(--line);border-radius:16px;padding:18px 20px;box-shadow:0 6px 20px rgba(40,35,25,.05)}
.py-statcap{font:600 12.5px var(--sans);color:#8a8576;text-transform:uppercase;letter-spacing:.03em}
.py-statv{margin-top:8px;font:600 27px var(--serif);color:#23382c}
.py-statnote{margin-top:4px;font:500 12.5px var(--sans);color:#a7a293}
@media(max-width:560px){.py-stats{gap:10px}.py-statcard{padding:15px 16px}.py-statv{font-size:23px}}
.py-card{background:#fffefb;border:1.5px solid var(--sage);border-radius:16px;box-shadow:0 6px 20px rgba(40,35,25,.05);box-sizing:border-box;transition:transform .2s,box-shadow .2s,border-color .2s}
.py-card:hover{transform:translateY(-3px);box-shadow:0 18px 34px rgba(35,56,44,.12);border-color:#9dba98}
/* информационный баннер ученика */
.py-banner{display:flex;align-items:center;gap:12px;padding:14px 16px;background:#f7ece1;border:1px solid #efd9c4;border-radius:14px}
.py-banner-ic{width:34px;height:34px;border-radius:10px;background:#f4ddc6;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.py-banner-tx{font:500 12.5px/1.45 var(--sans);color:#a85f30}
/* карточка счёта ученика */
.py-due{padding:15px 20px}
.py-due-top{display:flex;align-items:center;gap:11px}
.py-iconw{width:40px;height:40px;border-radius:12px;flex-shrink:0;display:flex;align-items:center;justify-content:center}
.py-iconw-les{background:#eef0e9}
.py-iconw-sub{background:#e7f0e7}
.py-due-tx{flex:1;min-width:0}
.py-due-title{font:600 15.5px var(--sans);color:#23211c}
.py-due-sub{font:500 12px var(--sans);color:#8a8576;margin-top:2px}
.py-pill{font:600 10.5px var(--sans);border-radius:20px;padding:4px 11px;white-space:nowrap}
.py-pill-sub{color:#2f6b46;background:#e7f0e7}
.py-pill-book{color:#a85f30;background:#f6ebdf}
/* Доплата за уже прошедшее занятие — отдельная метка, чтобы её не путали
   с предоплатой за будущую бронь. */
.py-pill-rest{color:#4a6b52;background:#e8f0e6}
.py-pill-wait{color:#a85f30;background:#f7e9df}
.py-card-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;padding-top:12px;border-top:1px solid #f1ede3}
.py-amt-big{font:700 24px var(--serif);color:#23382c}
.py-amt-note{font:500 11px var(--sans);color:#a7a293}
.py-pay{display:flex;align-items:center;justify-content:center;gap:8px;font:600 14px var(--sans);color:#fdfcf7;background:linear-gradient(120deg,#23382c,#2f4738);border:none;border-radius:13px;padding:12px 24px;cursor:pointer;box-shadow:0 8px 18px rgba(35,56,44,.22);transition:transform .16s,box-shadow .16s}
.py-pay:hover{transform:translateY(-1px);box-shadow:0 12px 24px rgba(35,56,44,.26)}
.py-pay:disabled{opacity:.7;cursor:default}
/* герой-абонемент ученика */
.py-hero{position:relative;overflow:hidden;background:linear-gradient(135deg,#2b4436,#23382c 60%,#1d2f25);border-radius:22px;padding:22px 26px;box-shadow:0 16px 40px rgba(35,56,44,.28)}
.py-hero-glow{position:absolute;right:-30px;top:-30px;width:160px;height:160px;border-radius:50%;background:radial-gradient(circle,rgba(201,184,143,.22),transparent 70%);pointer-events:none}
.py-hero-top{position:relative;display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:20px}
.py-hero-left{min-width:0}
.py-hero-badge{display:inline-flex;align-items:center;gap:7px;padding:5px 11px;border-radius:20px;background:rgba(201,184,143,.16);font:600 11px var(--sans);color:#d8c89c}
.py-hero-dot{width:6px;height:6px;border-radius:50%;background:var(--gold)}
.py-hero-name{margin-top:11px;font:600 19px var(--serif);color:#f4efe2}
.py-hero-numrow{margin-top:11px;display:flex;align-items:baseline;gap:10px}
.py-hero-num{font:700 60px/.9 var(--serif);color:#f4efe2}
.py-hero-of{font:500 15px var(--sans);color:var(--gold)}
.py-renew{display:flex;align-items:center;gap:8px;font:600 14px var(--sans);color:#23382c;background:linear-gradient(120deg,#e2d3a6,#c9b88f);border:none;border-radius:13px;padding:14px 24px;cursor:pointer;box-shadow:0 8px 20px rgba(201,184,143,.3);flex-shrink:0;transition:transform .16s,box-shadow .16s}
.py-renew:hover{transform:translateY(-1px);box-shadow:0 12px 26px rgba(201,184,143,.4)}
.py-hero-barwrap{position:relative;margin-top:15px}
.py-hero-bar{height:8px;border-radius:5px;background:rgba(201,184,143,.18);overflow:hidden}
.py-hero-fill{height:100%;border-radius:5px;background:linear-gradient(90deg,#c9b88f,#e2d3a6)}
.py-hero-note{margin-top:8px;font:500 11.5px var(--sans);color:rgba(244,239,226,.66)}
/* доступные абонементы */
.py-grouplbl{margin-top:6px;font:600 12px var(--sans);color:#a7a293;letter-spacing:.05em;text-transform:uppercase}
.py-plan{display:flex;align-items:center;gap:14px;padding:14px 18px}
.py-plan-main{flex:1;min-width:0}
.py-plan-titlerow{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.py-plan-name{font:600 15px var(--sans);color:#23211c}
.py-badge{font:700 10px var(--sans);color:#bd6a37;background:#f6ebdf;border-radius:20px;padding:3px 9px}
.py-plan-sub{font:500 12px var(--sans);color:#8a8576;margin-top:3px}
.py-plan-right{text-align:right;flex-shrink:0}
.py-plan-price{font:700 18px var(--serif);color:#23382c}
.py-ghost{margin-top:7px;font:600 12.5px var(--sans);color:#3f5a48;background:#fffefb;border:1px solid #cfc8b6;border-radius:11px;padding:9px 18px;cursor:pointer;transition:background .16s,border-color .16s,color .16s}
.py-ghost:hover{background:#eef5ec;border-color:#9dba98;color:#2f6b46}
/* строка истории */
.py-hrow{display:flex;align-items:center;gap:13px;background:#fffefb;border:1px solid var(--line);border-radius:15px;padding:12px 16px;box-shadow:0 4px 14px rgba(40,35,25,.04);box-sizing:border-box}
.py-hic{width:38px;height:38px;border-radius:11px;background:#e7f0e7;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.py-hmain{flex:1;min-width:0}
.py-htitle{font:600 14px var(--sans);color:#23211c;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.py-hmeta{display:flex;align-items:center;gap:7px;margin-top:3px}
.py-hmeta span{font:500 11.5px var(--sans);color:#8a8576}
.py-dot{width:3px;height:3px;border-radius:50%;background:#cdc7b6}
.py-paid{font:600 11px var(--sans)!important;color:#3f6b4c!important}
.py-hamt{font:700 16px var(--serif);color:#23382c;flex-shrink:0}
/* строка «к оплате» репетитора */
.py-trow{display:flex;align-items:center;gap:13px;padding:13px 18px}
.py-av{width:46px;height:46px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font:600 15px var(--sans);color:#f4efe2;box-shadow:0 4px 12px rgba(35,56,44,.18)}
.py-av-eng{background:linear-gradient(135deg,#2f6b46,#23382c)}
.py-av-phys{background:linear-gradient(135deg,#3f6577,#2b4a57)}
.py-trow-main{flex:1;min-width:0}
.py-trow-name{font:600 15px var(--sans);color:#23211c;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.py-trow-sub{font:500 12px var(--sans);color:#8a8576;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.py-trow-right{text-align:right;flex-shrink:0}
.py-amt-sm{font:700 18px var(--serif);color:#23382c}
.py-amt-sm+.py-pill-wait{display:inline-block;margin-top:4px}
/* пустые состояния */
.py-empty{padding:50px 22px;text-align:center;background:#fcfaf4;border:1px dashed #e3ddcf;border-radius:18px}
.py-empty-ic{width:54px;height:54px;margin:0 auto 14px;border-radius:15px;background:#eef0e9;display:flex;align-items:center;justify-content:center}
.py-empty-t{font:600 17px var(--serif);color:#23211c}
.py-empty-s{margin:7px 0 0;font:500 13px var(--sans);color:#a7a293}
/* модалка «Молодец!» после интерактивного урока */
.cel-ov{position:fixed;top:0;right:0;bottom:0;left:0;z-index:120;display:flex;align-items:center;justify-content:center;padding:22px;background:rgba(28,32,26,.5);backdrop-filter:blur(3px);animation:payFade .25s ease both}
@keyframes payFade{from{opacity:0}to{opacity:1}}
.cel-card{position:relative;width:min(360px,92vw);background:#fffefb;border-radius:24px;padding:34px 28px 26px;text-align:center;box-shadow:0 30px 70px rgba(28,32,26,.4);animation:pyPop .5s cubic-bezier(.34,1.56,.64,1) both}
.cel-badge{width:78px;height:78px;margin:0 auto 18px;border-radius:50%;background:linear-gradient(135deg,#e7f0e7,#cfe4d1);display:flex;align-items:center;justify-content:center;box-shadow:0 10px 26px rgba(47,107,70,.28)}
.cel-badge svg{width:40px;height:40px;stroke:#2f6b46;fill:none;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.cel-title{margin:0;font:600 27px var(--serif);color:#23211c}
.cel-pct{margin:14px 0 4px;font:700 54px/1 var(--serif);color:#23382c}
.cel-of{font:600 13px var(--sans);color:#a7a293;letter-spacing:.04em;text-transform:uppercase}
.cel-cap{margin:12px 0 22px;font:500 13.5px/1.5 var(--sans);color:#8a8576}
.cel-btn{width:100%;font:600 15px var(--sans);color:#fdfcf7;background:linear-gradient(120deg,#23382c,#2f4738);border:none;border-radius:14px;padding:15px 0;cursor:pointer;box-shadow:0 10px 22px rgba(35,56,44,.24);transition:transform .16s,box-shadow .16s}
.cel-btn:hover{transform:translateY(-1px);box-shadow:0 14px 28px rgba(35,56,44,.3)}
/* прогресс: выбор ученика (репетитор) + шапка */
.prog-head{display:flex;align-items:center;justify-content:flex-start;gap:12px;text-align:left}
.prog-back{width:38px;height:38px;flex-shrink:0;border-radius:11px;border:1px solid var(--line);background:#fffefb;color:#3f5a48;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .16s,border-color .16s}
.prog-back:hover{background:#f1ede3;border-color:var(--gold)}
.prog-who{margin:3px 0 0;font:500 13.5px var(--sans);color:#8a8576}
.prog-pick{display:flex;align-items:center;gap:14px;background:#fffefb;border:1.5px solid var(--sage);border-radius:16px;padding:16px 18px;cursor:pointer;box-shadow:0 6px 20px rgba(40,35,25,.05);transition:transform .2s,box-shadow .2s,border-color .2s;animation:schEnter .8s cubic-bezier(.16,.7,.2,1) both}
.prog-pick:hover{transform:translateY(-3px);box-shadow:0 18px 34px rgba(35,56,44,.12);border-color:#9dba98}
.prog-pick .uc-av{width:44px;height:44px;flex-shrink:0}
.prog-pick-tx{flex:1;min-width:0}
.prog-pick-name{font:600 15px var(--sans);color:#23211c;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.prog-pick-sub{font:500 12px var(--sans);color:#8a8576;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.prog-pick svg{color:#5e8068;flex-shrink:0}
/* прогресс: заголовок-подпись, если ученик */
.section-head .prog-who{margin:5px 0 0}
/* прогресс: строка stat-карточек */
.prog-stats{margin-top:18px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.prog-stat{background:#fffefb;border:1px solid var(--line);border-radius:16px;padding:16px 16px 15px;box-shadow:0 5px 16px rgba(40,35,25,.05);transition:transform .2s,box-shadow .2s,border-color .2s}
.prog-stat:hover{transform:translateY(-3px);box-shadow:0 16px 30px rgba(35,56,44,.1);border-color:#d9d2c0}
.prog-stat-ic{width:38px;height:38px;border-radius:11px;display:flex;align-items:center;justify-content:center}
.prog-stat-ic svg{width:20px;height:20px}
.prog-stat-ic.eng{background:#e7f0e7;color:#2f6b46}
.prog-stat-ic.gold{background:#f5eedd;color:#a98f4f}
.prog-stat-ic.sage{background:#eaf1e8;color:#5e8068}
.prog-stat-ic.clay{background:#f6ebe1;color:#bd6a37}
.prog-stat-cap{margin-top:13px;font:600 11.5px var(--sans);color:#a7a293;letter-spacing:.02em}
.prog-stat-vrow{margin-top:5px;display:flex;align-items:baseline;gap:6px}
.prog-stat-v{font:600 30px var(--serif);color:#23211c;line-height:1}
.prog-stat-suf{font:600 12.5px var(--sans);color:#a7a293}
.prog-stat-note{margin-top:6px;font:500 11.5px var(--sans);color:#8a8576}
/* прогресс: карточка графика */
.prog-chartcard{margin-top:18px;background:#fffefb;border:1px solid var(--line);border-radius:20px;padding:22px 24px;box-shadow:0 6px 20px rgba(40,35,25,.05)}
.prog-chart-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap}
.prog-chart-t{font:600 18px var(--serif);color:#23211c}
.prog-chart-s{margin-top:3px;font:500 12px var(--sans);color:#a7a293}
.prog-chart-avg{flex-shrink:0;text-align:right;background:#eef3ec;border-radius:12px;padding:8px 14px}
.prog-chart-avgv{display:block;font:600 24px var(--serif);color:#23382c;line-height:1}
.prog-chart-avgl{font:600 10.5px var(--sans);color:#8a8576;letter-spacing:.04em;text-transform:uppercase}
.prog-chart-wrap{margin-top:18px;overflow:hidden}
.prog-chart-empty{display:flex;flex-direction:column;align-items:center;text-align:center;padding:40px 24px}
.prog-empty-ic{width:56px;height:56px;border-radius:16px;background:#eef3ec;display:flex;align-items:center;justify-content:center;margin-bottom:14px}
.prog-empty-t{font:600 17px var(--serif);color:#23211c}
.prog-empty-s{margin:7px 0 0;font:500 13px/1.5 var(--sans);color:#a7a293;max-width:420px}
/* прогресс: инфо-блоки */
.prog-info{margin-top:18px;display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}
.prog-side-card{background:#fffefb;border:1px solid var(--line);border-radius:18px;padding:18px 20px;box-shadow:0 5px 16px rgba(40,35,25,.05)}
.prog-side-h{font:600 15px var(--serif);color:#23211c;margin-bottom:6px}
.prog-row{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid #f1ede3}
.prog-row:last-child{border-bottom:none;padding-bottom:2px}
.prog-row-ic{width:32px;height:32px;flex-shrink:0;border-radius:10px;background:#eef3ec;color:#5e8068;display:flex;align-items:center;justify-content:center}
.prog-row-ic svg{width:17px;height:17px}
.prog-row-l{flex:1;min-width:0;font:500 13.5px var(--sans);color:#3a382f}
.prog-row-v{flex-shrink:0;font:600 15px var(--serif);color:#23382c}
.prog-recent{margin-top:4px}
.prog-recent-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid #f1ede3}
.prog-recent-row:last-child{border-bottom:none;padding-bottom:2px}
.prog-recent-main{flex:1;min-width:0}
.prog-recent-t{font:600 13.5px var(--sans);color:#23211c;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.prog-recent-d{margin-top:2px;font:500 11.5px var(--sans);color:#a7a293}
.prog-recent-tag{font:600 9.5px var(--sans);letter-spacing:.08em;text-transform:uppercase;color:#5e8068;background:#eaf0ea;border-radius:6px;padding:2px 6px;margin-left:6px;vertical-align:middle}
.prog-recent-clk{cursor:pointer;margin:0 -8px;padding-left:8px;padding-right:8px;border-radius:10px;transition:background .14s}
.prog-recent-clk:hover{background:#f4f1e9}
.prog-recent-clk:hover .prog-recent-t{color:var(--clay)}
.prog-score{flex-shrink:0;min-width:44px;text-align:center;font:600 14px var(--serif);border-radius:10px;padding:6px 10px}
.prog-score.hi{color:#2f6b46;background:#e7f0e7}
.prog-score.mid{color:#a98f4f;background:#f5eedd}
.prog-score.lo{color:#bd6a37;background:#f6ebe1}
@media(max-width:920px){.prog-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.prog-info{grid-template-columns:1fr}}
@media(max-width:560px){.prog-stats{gap:10px}.prog-stat{padding:14px 13px}.prog-stat-v{font-size:26px}.prog-chartcard{padding:16px 14px;border-radius:16px}.prog-chart-wrap{margin-top:14px}.prog-side-card{padding:16px}}

/* ---------- Тарифы (репетитор, по макету Тарифы.dc) ---------- */
.tf-titlerow{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:14px}
.tf-h1{margin:0;font:600 33px var(--serif);color:#23211c}
.tf-sub{margin:8px 0 0;font:500 13.5px var(--sans);color:#8a8576}
.tf-top{margin-top:24px;display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:stretch}
.tf-card{background:#fffefb;border:1.5px solid var(--sage);border-radius:18px;padding:22px 24px;box-shadow:0 6px 20px rgba(40,35,25,.05);box-sizing:border-box}
.tf-card-head{display:flex;align-items:center;gap:12px}
.tf-tile{width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.tf-tile.eng{background:#eef0e9}
.tf-tile.plus{background:#e7f0e7}
.tf-card-t{margin:0;font:600 18px var(--serif);color:#23211c}
.tf-card-s{margin-top:1px;font:500 11.5px var(--sans);color:#a7a293}
.tf-card-body{margin-top:20px;display:flex;flex-direction:column;gap:14px}
.tf-fld{display:flex;flex-direction:column;gap:7px}
.tf-fld>label{font:600 12px var(--sans);color:#3a382f}
.tf-input{box-sizing:border-box;width:100%;background:#fbfaf5;border:1px solid #dcd6c8;border-radius:12px;padding:13px 14px;font:600 14px var(--sans);color:#23211c;outline:none;transition:border-color .16s,box-shadow .16s,background .16s}
.tf-input.num{font-family:var(--serif);font-weight:700;font-size:16px}
.tf-input:focus{border-color:#7fa07f;background:#fff;box-shadow:0 0 0 3px rgba(94,128,104,.12)}
.tf-inwrap{display:flex;align-items:center;background:#fbfaf5;border:1px solid #dcd6c8;border-radius:12px;padding:0 14px;transition:border-color .16s,box-shadow .16s,background .16s}
.tf-inwrap:focus-within{border-color:#7fa07f;background:#fff;box-shadow:0 0 0 3px rgba(94,128,104,.12)}
.tf-inwrap .tf-input{flex:1;min-width:0;border:none;background:transparent;padding:13px 0;box-shadow:none}
.tf-inwrap .tf-input:focus{box-shadow:none}
.tf-unit{font:600 14px var(--sans);color:#a7a293;padding-left:8px}
.tf-hint{font:500 11.5px var(--sans);color:#a7a293}
.tf-newrow{display:flex;gap:12px}
.tf-newrow .tf-fld{flex:1}
.tf-save{align-self:flex-start;display:flex;align-items:center;gap:8px;font:600 13.5px var(--sans);color:#fdfcf7;background:linear-gradient(120deg,#23382c,#2f4738);border:none;border-radius:12px;padding:12px 22px;cursor:pointer;box-shadow:0 7px 16px rgba(35,56,44,.2);transition:transform .16s,box-shadow .16s}
.tf-save:hover{transform:translateY(-1px);box-shadow:0 10px 22px rgba(35,56,44,.24)}
.tf-save:disabled{opacity:.65;cursor:default}
.tf-create{margin-top:2px;align-self:flex-start;display:flex;align-items:center;gap:8px;font:600 13.5px var(--sans);color:#fdfcf7;background:linear-gradient(120deg,#2f6b46,#23382c);border:none;border-radius:12px;padding:12px 22px;cursor:pointer;box-shadow:0 7px 16px rgba(47,107,70,.22);transition:transform .16s,box-shadow .16s}
.tf-create:hover{transform:translateY(-1px);box-shadow:0 12px 26px rgba(47,107,70,.26)}
.tf-create:disabled{opacity:.65;cursor:default}
.tf-pending{margin-top:4px}
.tf-pending .sched-hint{margin-top:0!important}
/* заголовок раздела абонементов */
.tf-subshead{margin-top:24px;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.tf-h2{margin:0;font:600 21px var(--serif);color:#23211c}
.tf-count{font:500 12.5px var(--sans);color:#a7a293}
.tf-sublist{margin-top:16px;display:flex;flex-direction:column;gap:12px}
/* строка абонемента */
.tf-subrow{display:flex;align-items:center;gap:16px;flex-wrap:wrap;background:#fffefb;border:1.5px solid var(--sage);border-radius:15px;padding:15px 18px;box-shadow:0 5px 16px rgba(40,35,25,.05);box-sizing:border-box;transition:border-color .2s,box-shadow .2s,opacity .2s}
.tf-subrow:hover{box-shadow:0 12px 26px rgba(35,56,44,.1)}
.tf-subrow.off{opacity:.7}
.tf-subleft{display:flex;align-items:center;gap:14px;flex:1;min-width:0}
.tf-subicon{width:40px;height:40px;border-radius:12px;flex-shrink:0;display:flex;align-items:center;justify-content:center}
.tf-subicon.on{background:#e7f0e7}
.tf-subicon.off{background:#f1ede3}
.tf-subfields{display:flex;align-items:flex-end;gap:12px;flex:1;min-width:0}
.tf-subfields .tf-fld>label{font:600 10px var(--sans);color:#a7a293;letter-spacing:.04em;text-transform:uppercase}
.tf-subfields .tf-input{border-radius:10px;padding:10px 12px;font-size:13.5px}
.tf-subfields .tf-input.num{font-size:13.5px}
.tf-subfields .tf-inwrap{border-radius:10px;padding:0 12px}
.tf-subfields .tf-inwrap .tf-input{padding:10px 0}
.tf-subfields .tf-unit{font-size:12px;padding-left:6px}
.tf-fld-name{flex:1.4;min-width:120px}
.tf-fld-price{flex:1;min-width:96px}
.tf-fld-count{flex:.8;min-width:78px}
.tf-subact{display:flex;align-items:center;gap:14px;flex-shrink:0}
.tf-toggle-btn{display:flex;align-items:center;gap:10px;background:none;border:none;cursor:pointer;padding:0}
.tf-track{position:relative;width:42px;height:24px;border-radius:13px;flex-shrink:0;background:#d8d2c4;box-shadow:inset 0 1px 3px rgba(0,0,0,.12);transition:background .22s}
.tf-track.on{background:#2f6b46}
.tf-knob{position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fffefb;box-shadow:0 2px 5px rgba(0,0,0,.25);transition:transform .22s cubic-bezier(.3,1,.45,1)}
.tf-track.on .tf-knob{transform:translateX(18px)}
.tf-togglbl{font:600 12px var(--sans);color:#a7a293;white-space:nowrap;width:52px;flex-shrink:0;text-align:left}
.tf-togglbl.on{color:#3f6b4c}
.tf-save-sm{display:flex;align-items:center;gap:7px;font:600 12.5px var(--sans);color:#fdfcf7;background:linear-gradient(120deg,#23382c,#2f4738);border:none;border-radius:11px;padding:10px 16px;cursor:pointer;box-shadow:0 6px 14px rgba(35,56,44,.18);transition:transform .16s,box-shadow .16s}
.tf-save-sm:hover{transform:translateY(-1px);box-shadow:0 9px 20px rgba(35,56,44,.22)}
.tf-save-sm:disabled{opacity:.65;cursor:default}
.tf-del{width:38px;height:38px;flex-shrink:0;border-radius:11px;border:1px solid #e6e0d1;background:#fffefb;color:#a7a293;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .16s,color .16s,border-color .16s}
.tf-del:hover{background:#f4ece6;color:#bd6a37;border-color:#e6c9b6}
.tf-pending{flex-basis:100%;width:100%}
/* пустое состояние */
.tf-empty{margin-top:16px;padding:46px 22px;text-align:center;background:#fcfaf4;border:1px dashed #e3ddcf;border-radius:18px}
.tf-empty-ic{width:54px;height:54px;margin:0 auto 14px;border-radius:15px;background:#eef0e9;display:flex;align-items:center;justify-content:center}
.tf-empty-t{font:600 17px var(--serif);color:#23211c}
.tf-empty-s{margin:7px 0 0;font:500 13px var(--sans);color:#a7a293}
@media(max-width:880px){
  .tf-h1{font-size:28px}
  .tf-top{grid-template-columns:1fr}
  .tf-subrow{flex-direction:column;align-items:stretch;gap:14px}
  .tf-subleft{width:100%;align-items:center}
  .tf-subfields{flex-direction:column;align-items:stretch;gap:12px;width:100%}
  .tf-subfields>div{flex:none!important;width:100%}
  .tf-subact{justify-content:space-between;width:100%}
  .tf-newrow{flex-direction:column}
  .tf-create,.tf-save{width:100%;justify-content:center}
}

/* кликабельные карточки обзора */
.stat.clickable{cursor:pointer}
.stat.clickable:hover{border-color:var(--line2);transform:translateY(-2px)}

/* ---------- Домашние задания ---------- */
.hw-list-row{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--panel);
  border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin-bottom:10px;cursor:pointer}
.hw-list-row:hover{border-color:var(--line2)}
/* ученик — список заданий плитками */
.hw-sub{margin:0 2px 16px;font-size:14.5px;color:var(--muted)}
.hw-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(248px,1fr));gap:16px}
.hw-tile{background:#fffefb;border:0.5px solid var(--line);border-radius:16px;overflow:hidden;
  box-shadow:0 14px 40px -30px rgba(40,38,32,.55);cursor:pointer;display:flex;flex-direction:column;transition:transform .12s,box-shadow .12s}
.hw-tile:hover{transform:translateY(-2px);box-shadow:0 20px 50px -28px rgba(40,38,32,.6)}
.hw-tile-pad{padding:18px 18px 16px;display:flex;flex-direction:column;gap:13px;flex:1}
.hw-tile-cover{height:128px;background:#e7efe6 center/cover no-repeat;border-bottom:0.5px solid var(--line)}
.hw-tile.has-cover .hw-tile-top{justify-content:flex-end}
.cover-zone{border:1.5px dashed var(--line2);border-radius:12px;padding:16px;text-align:center;color:#5e5a4e;font-size:14px;cursor:pointer;background:var(--panel)}
.cover-zone:hover{border-color:var(--ever);color:var(--ever)}
.cover-prev{margin-top:10px}
.cover-prev .cover-prev{margin:0}
.cover-prev img{width:100%;max-height:160px;object-fit:cover;border-radius:12px;border:1px solid var(--line);display:block}
.cover-prev button{margin-top:8px;border:1.5px solid var(--line2);background:#fff;border-radius:9px;padding:7px 14px;font-size:13px;color:#b25a36;cursor:pointer;font-family:inherit}
.hw-tile-top{display:flex;align-items:center;justify-content:space-between}
.hw-tile-ico{width:44px;height:44px;border-radius:13px;background:#eef3ec;color:var(--ever);display:grid;place-items:center}
.hw-tile-ico svg{width:23px;height:23px}
.hw-tile-title{margin:0;font-weight:600;font-size:16px;line-height:1.35;color:var(--ink)}
.hw-tile-foot{display:flex;align-items:center;justify-content:space-between;margin-top:auto}
.hw-open-hint{font-size:13.5px;color:var(--ever)}
.hw-deadline{margin:0;font-size:12.5px;color:#8a6d34}
.hw-deadline.over{color:#a23b1e;font-weight:500}
.hw-empty{text-align:center;padding:46px 20px;background:var(--panel);border:1px solid var(--line);border-radius:16px}
.hw-empty-ill{width:64px;height:64px;margin:0 auto 14px;border-radius:18px;background:#eef3ec;color:var(--ever);display:grid;place-items:center}
.hw-empty-ill svg{width:32px;height:32px}
.hw-empty-t{margin:0 0 4px;font-family:var(--serif);font-size:19px;color:var(--ink)}
.hw-empty-s{margin:0;font-size:14px;color:var(--muted)}
/* ученик — прохождение задания */
.take-intro{display:flex;gap:18px;align-items:center;background:var(--ever);color:#eef3ec;border-radius:18px;padding:20px 24px;margin-bottom:18px;box-shadow:0 16px 44px -30px rgba(40,38,32,.6)}
.take-intro .ti-ill{flex-shrink:0;width:54px;height:54px;color:#cfe0d4}
.take-intro .ti-ill svg{width:54px;height:54px}
.take-intro h3{margin:0 0 5px;font-family:var(--serif);font-size:20px;font-weight:400;color:#f3efe4}
.take-intro p{margin:0;font-size:14px;color:#cfe0d4;line-height:1.55}
.take-timer{flex-shrink:0;align-self:flex-start;background:rgba(255,255,255,.14);color:#f3efe4;border:1px solid rgba(255,255,255,.28);border-radius:999px;padding:8px 16px;font-size:17px;font-variant-numeric:tabular-nums;font-weight:500;white-space:nowrap}
.take-timer.low{background:#7a2e1c;color:#fff;border-color:#a23b1e}
.take-q{background:#fffefb;border:1.5px solid #5e8068;border-radius:16px;padding:20px 22px;margin-bottom:14px;box-shadow:0 12px 34px -30px rgba(40,38,32,.5)}
.take-qhead{display:flex;gap:12px;align-items:flex-start;margin-bottom:14px}
.take-qn{flex-shrink:0;width:30px;height:30px;border-radius:9px;background:#eef3ec;color:var(--ever);font-family:var(--serif);display:flex;align-items:center;justify-content:center;font-size:15px}
.take-qtext{margin:3px 0 0;font-size:16px;font-weight:600;color:var(--ink);line-height:1.4}
.take-opt{display:flex;gap:12px;align-items:center;padding:13px 15px;border:1.5px solid var(--line2);border-radius:12px;margin-bottom:10px;cursor:pointer;font-size:15px;color:#403c33;transition:border-color .12s,background .12s}
.take-opt:hover{border-color:var(--ever);background:#fbfaf5}
.take-opt input{accent-color:var(--ever);width:18px;height:18px;flex-shrink:0}
.take-ta{width:100%;border:1.5px solid var(--line2);border-radius:12px;padding:13px 15px;font-family:inherit;font-size:15px;min-height:92px;box-sizing:border-box;background:#fff;outline:none}
.take-ta:focus{border-color:var(--ever)}
.take-hint{margin:8px 2px 0;font-size:12.5px;color:var(--muted)}
.take-att{margin-top:12px;display:flex;align-items:center;flex-wrap:wrap;gap:6px}
.take-att-btn{border:1.5px dashed var(--line2);background:transparent;border-radius:10px;padding:9px 16px;cursor:pointer;color:#5e5a4e;font-size:14px;font-family:inherit}
.take-att-btn:hover{border-color:var(--ever);color:var(--ever)}
.take-att-name{font-size:13.5px;color:#2f5a3b}
.take-att-rm{border:none;background:transparent;color:#b25a36;cursor:pointer;font-size:13px;font-family:inherit}
.att-view{margin:8px 0 2px}
.att-img{max-width:100%;max-height:240px;border-radius:10px;border:1px solid var(--line);display:block}
.att-dl{display:inline-block;border:1.5px solid var(--line2);border-radius:10px;padding:9px 16px;color:var(--ever);font-size:14px}
.att-dl:hover{border-color:var(--ever)}
.att-label{font-size:13px;color:#8a8576;margin:2px 0 4px}
.les-chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.les-chip{font-size:12.5px;padding:5px 12px;border-radius:999px;background:#f3efe4;color:#8a8576;border:1px solid var(--line)}
.les-chip.on{background:#e7efe6;color:#234a2e;border-color:#9cc0a6}
/* материалы */
.mat-add{background:#fffefb;border:0.5px solid var(--line);border-radius:16px;padding:20px;margin-bottom:20px;box-shadow:0 14px 40px -30px rgba(40,38,32,.5)}
.drop-zone{border:1.5px dashed var(--line2);border-radius:12px;padding:28px 20px;text-align:center;cursor:pointer;background:var(--panel);transition:border-color .12s,background .12s}
.drop-zone:hover,.drop-zone.over{border-color:var(--ever);background:#f6f8f4}
.drop-zone.over{background:#eef3ec}
.drop-zone.busy{opacity:.6;pointer-events:none}
.dz-ic{display:inline-flex;color:var(--ever)}
.dz-ic svg{width:30px;height:30px}
.dz-t{font-size:15px;color:var(--ink);margin-top:8px}
.dz-s{font-size:13px;color:var(--muted);margin-top:3px}
.mat-or{display:flex;align-items:center;gap:12px;margin:16px 0;color:var(--muted);font-size:13px}
.mat-or span{flex:1;height:1px;background:var(--line)}
.mat-link-row{display:flex;gap:10px;flex-wrap:wrap}
.mat-inp{flex:1;min-width:120px;height:46px;border:1.5px solid var(--line2);border-radius:10px;padding:0 14px;font-size:15px;font-family:inherit;outline:none;background:#fff}
.mat-inp:focus{border-color:var(--ever)}
.mat-inp-url{flex:2}
.mat-card{background:#fffefb;border:0.5px solid var(--line);border-radius:16px;padding:16px 18px;margin-bottom:14px;box-shadow:0 12px 34px -30px rgba(40,38,32,.5)}
.mat-head{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.mat-ic{width:46px;height:46px;border-radius:12px;background:#e7efe6;color:#234a2e;display:grid;place-items:center;flex-shrink:0}
.mat-ic svg{width:23px;height:23px}
.mat-ic.link{background:#e6f1fb;color:#0c447c}
.mat-info{flex:1;min-width:120px}
.mat-title{margin:0;font-weight:600;font-size:15px;color:var(--ink)}
.mat-type{margin:2px 0 0;font-size:13px;color:#8a8576}
.mat-acts{display:flex;gap:8px;flex-wrap:wrap}
.mat-btn{display:inline-flex;align-items:center;gap:7px;border:1.5px solid var(--line2);background:#fff;color:#46435c;border-radius:10px;padding:8px 14px;font-size:14px;cursor:pointer;font-family:inherit;text-decoration:none}
.mat-btn svg{width:16px;height:16px}
.mat-btn:hover{border-color:var(--ever);color:var(--ever)}
.mat-btn.danger{color:#b25a36}
.mat-btn.danger:hover{border-color:#b25a36;color:#b25a36}
.mat-access{border-top:0.5px solid var(--line);margin-top:14px;padding-top:13px}
.mat-access-lbl{margin:0 0 9px;font-size:12px;letter-spacing:.4px;text-transform:uppercase;color:#9a9484}
.acc-pills{display:flex;gap:8px;flex-wrap:wrap}
.acc-pill{display:inline-flex;align-items:center;gap:6px;border:1.5px solid var(--line2);background:#fff;color:#5e5a4e;border-radius:999px;padding:7px 16px;font-size:14px;cursor:pointer;font-family:inherit}
.acc-pill:hover{border-color:#9cc0a6}
.acc-pill.on{background:#e7efe6;border-color:#9cc0a6;color:#234a2e}
.acc-pill.on::before{content:"\2713 "}
.take-submit{height:50px;font-size:16px;padding:0 30px;margin-top:6px}
.take-wrap{width:100%}
.take-opts{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px}
.take-opts .take-opt{margin-bottom:0}
.res-opts{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:8px}
.res-opts>div{margin-bottom:0}
.hw-score{font-family:var(--serif);font-size:22px;color:var(--ever)}
.hw-badge{font-size:11px;padding:4px 10px;border-radius:7px}
.b-assigned{color:#6b5a2e;background:#f3efe4}
.b-submitted{color:#185fa5;background:#e6f1fb}
.b-graded{color:#2f5a3b;background:#eef3ee}
.hw-field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.hw-field label{font-size:12px;color:var(--muted2);text-transform:uppercase;letter-spacing:.4px}
.hw-field input,.hw-field select,.hw-field textarea{border:1.5px solid var(--line2);border-radius:10px;padding:10px 12px;font-size:15px;font-family:inherit;background:var(--panel);outline:none}
.hw-field input:focus,.hw-field select:focus,.hw-field textarea:focus{border-color:var(--ever)}
.hw-q{border:1px solid var(--line);border-radius:12px;padding:16px;margin-bottom:12px;background:#fcfaf4}
.res-card{background:#fffefb;border:0.5px solid var(--line);border-radius:14px;padding:0;overflow:hidden;box-shadow:0 10px 30px -26px rgba(40,38,32,.5)}
.res-main{display:flex;align-items:center;gap:15px;padding:17px 19px}
.res-chip{width:52px;height:52px;border-radius:13px;display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-size:21px;flex-shrink:0}
.res-chip.ok{background:#dcebd6;color:#2f5a3b}
.res-chip.wait{background:#efe7d4;color:#8a6d34}
.res-title{margin:0;font-weight:600;font-size:16.5px;color:var(--ink)}
.res-sub{margin:4px 0 0;font-size:14.5px;color:#6f6a5c;line-height:1.4}
.res-toggle{display:flex;align-items:center;justify-content:center;gap:7px;width:100%;border:none;border-top:0.5px solid var(--line);background:#faf8f2;color:var(--ever);font-size:14.5px;cursor:pointer;font-family:inherit;padding:13px}
.res-toggle:hover{background:#f3efe4}
.res-toggle .chev{display:inline-block;transition:transform .15s}
.res-toggle.open .chev{transform:rotate(180deg)}
.hw-q-head{display:flex;gap:10px;align-items:center;margin-bottom:10px}
.hw-q-head select{flex:0 0 auto}
.hw-q-head .hw-rm{margin-left:auto;border:1px solid var(--line2);background:transparent;border-radius:8px;padding:6px 12px;cursor:pointer;color:#b25a36}
.hw-opt{display:flex;gap:8px;align-items:center;margin-bottom:7px}
.hw-opt input[type=text]{flex:1;border:1.5px solid var(--line2);border-radius:9px;padding:8px 10px;font-size:14px}
.hw-opt label{display:flex;gap:5px;align-items:center;font-size:13px;color:#5e5a4e;white-space:nowrap}
.hw-addopt{border:1px dashed var(--line2);background:transparent;border-radius:9px;padding:7px 12px;cursor:pointer;color:#5e5a4e;font-size:13px}
.opt-correct{background:#eef3ee;border:1px solid #d4e2d6;border-radius:9px;padding:9px 12px;margin-bottom:6px;color:#2f5a3b;font-size:14px;display:flex;align-items:center;gap:8px}
.opt-wrong{background:#f9ebe6;border:1px solid #eccfc2;border-radius:9px;padding:9px 12px;margin-bottom:6px;color:#8a3e22;font-size:14px;display:flex;align-items:center;gap:8px}
.opt-plain{background:#fff;border:1px solid var(--line);border-radius:9px;padding:9px 12px;margin-bottom:6px;font-size:14px;display:flex;align-items:center;gap:8px}
.opt-pick{cursor:pointer}
.opt-pick.sel{border-color:var(--ever);box-shadow:0 0 0 2px rgba(35,56,44,.12)}
.result-head{display:flex;align-items:center;justify-content:space-between;gap:14px;background:var(--ever);color:#f3efe4;border-radius:14px;padding:18px 22px;margin-bottom:18px}
.result-head .rs{font-family:var(--serif);font-size:30px}

/* ---------- Календарь: уточнения цветов и прошлых дней ---------- */
.cell-paid{background:repeating-linear-gradient(45deg,#cfe2c8,#cfe2c8 5px,#e8f1e4 5px,#e8f1e4 10px);border-color:#9cc0a6;color:#2f5a3b}
.cell-paidsub{background:#cde3c4;border-color:#7fae86;color:#234a2e}
.cal-cell.past{opacity:.45;cursor:default}
.cal-cell.slot.past{filter:grayscale(.6);opacity:.5}
.cal-cell.cell-closed{background:#efe9dc;border-color:#e3dcc9;color:#b0a892;cursor:not-allowed}
.cal-cell.past.empty:hover{border-color:var(--line);background:#fcfaf4}
.cal-cell.cont{color:transparent}
.lg-paidh{background:repeating-linear-gradient(45deg,#cfe2c8,#cfe2c8 4px,#e8f1e4 4px,#e8f1e4 8px);border:1px solid #9cc0a6}
.lg-paids{background:#cde3c4;border:1px solid #7fae86}

/* ---------- Окно «Добавить урок» (вариант A) ---------- */
.les-head{background:linear-gradient(135deg,#2f4738,#22382c);padding:20px 24px;color:#f3efe4}
.les-head h3{margin:0;font-family:var(--serif);font-weight:400;font-size:22px;color:#f3efe4}
.les-head p{margin:4px 0 0;font-size:13px;color:#a9bdaf}
.les-body{padding:22px 24px}
.les-label{display:block;font-size:12px;letter-spacing:.4px;text-transform:uppercase;color:#9a9484;margin-bottom:6px}
.les-ta{width:100%;border:1.5px solid #e3e0d8;border-radius:10px;background:#fcfaf4;padding:11px;font-size:14.5px;font-family:inherit;outline:none;margin-bottom:16px;box-sizing:border-box}
.les-ta:focus{border-color:var(--ever);background:#fff}
.les-drop{border:1.5px dashed #d8d3c6;border-radius:10px;background:#fcfaf4;padding:16px;text-align:center;color:#8a8576;font-size:13px;cursor:pointer;margin-bottom:20px}
.les-drop:hover{border-color:var(--ever);color:var(--ever)}
.les-drop.has{border-style:solid;border-color:#9cc0a6;background:#eef3ee;color:#2f5a3b}
.les-actions{display:flex;gap:10px;justify-content:flex-end}
.les-cancel{border:1.5px solid #e3e0d8;background:#fff;border-radius:11px;padding:11px 22px;color:#5e5a4e;font-size:15px;cursor:pointer}
.les-cancel:hover{border-color:var(--ever);color:var(--ever)}
.les-save{background:var(--ever);color:#f3efe4;border:none;border-radius:11px;padding:11px 24px;font-size:15px;cursor:pointer}
.les-save:hover{background:#1b2e23}

/* ---------- Раздел ДЗ: вкладки, ученики, конструктор, фото ---------- */
.hw-tabs{display:inline-flex;background:#f3efe4;border-radius:11px;padding:4px;margin-bottom:18px}
.hw-tab{padding:9px 20px;font-size:14px;color:#8a8576;border-radius:8px;cursor:pointer;border:none;background:transparent}
.hw-tab.active{background:#fffefb;color:#23382c;box-shadow:0 2px 8px -4px rgba(0,0,0,.2)}
.stud-card{display:flex;align-items:center;gap:12px;padding:13px 16px;border-radius:12px;background:#fffefb;border:1px solid #ece8df;margin-bottom:8px;cursor:pointer}
.stud-card:hover{border-color:#d8d3c6}
.stud-av{width:40px;height:40px;border-radius:50%;background:#23382c;color:#f3efe4;display:grid;place-items:center;font-family:var(--serif);font-size:15px}
.hw-sel{width:100%;height:48px;border:1.5px solid var(--line2);border-radius:11px;background:var(--panel);font-size:15px;padding:0 14px;outline:none;color:var(--ink)}
.hw-sel:focus{border-color:var(--ever)}
.hw-ta{display:block;width:100%;min-height:84px;border:1.5px solid var(--line2);border-radius:11px;background:var(--panel);font-size:15px;padding:12px 14px;font-family:inherit;box-sizing:border-box;outline:none;color:var(--ink);resize:vertical}
.hw-ta:focus{border-color:var(--ever)}
.q-card{border:1px solid var(--line);border-radius:14px;padding:18px;margin-bottom:14px;background:#fffefb;box-shadow:0 10px 30px -26px rgba(40,38,32,.5)}
.q-num{font-family:var(--serif);font-size:15px;color:var(--ever);background:#eef3ec;border:1px solid #d9e4d8;border-radius:8px;min-width:30px;height:40px;display:inline-flex;align-items:center;justify-content:center;padding:0 8px}
.q-card-head{display:flex;gap:10px;align-items:center;margin-bottom:12px;flex-wrap:wrap}
.q-card-head select.q-kind{height:40px;border:1.5px solid var(--line2);border-radius:10px;padding:0 12px;font-size:14px;background:#fff;outline:none;flex:1;min-width:150px}
.q-pts-box{display:inline-flex;align-items:center;gap:7px;height:40px;border:1.5px solid var(--line2);border-radius:10px;padding:0 12px;background:#fff}
.q-pts-box .q-pts{width:46px;border:none;outline:none;font-size:15px;text-align:center;background:transparent;font-family:inherit}
.q-pts-box .q-pts-lbl{font-size:11px;letter-spacing:.3px;text-transform:uppercase;color:#9a9484}
.q-card-head .q-rm{border:1.5px solid var(--line2);background:transparent;border-radius:10px;width:40px;height:40px;cursor:pointer;color:#b25a36;font-size:16px}
.q-field-lbl{display:block;font-size:12px;letter-spacing:.4px;text-transform:uppercase;color:#9a9484;margin:0 0 8px;padding-left:2px;line-height:1.3}
.fld{margin-top:22px}
.fld:first-child{margin-top:4px}
.hw-ta{resize:none}
.q-text{width:100%;border:1.5px solid var(--line2);border-radius:10px;padding:11px 13px;font-size:15px;font-family:inherit;background:#fff;outline:none;min-height:48px;box-sizing:border-box;margin-bottom:12px}
.q-text:focus{border-color:var(--ever)}
.q-opt{display:flex;gap:10px;align-items:center;margin-bottom:8px}
.q-opt .o-text{flex:1;height:42px;border:1.5px solid var(--line2);border-radius:10px;padding:0 12px;font-size:14px;background:#fff;outline:none}
.q-opt .o-text:focus{border-color:var(--ever)}
.o-toggle{display:flex;align-items:center;gap:6px;font-size:13px;color:#5e5a4e;white-space:nowrap;cursor:pointer;user-select:none;border:1.5px solid var(--line2);border-radius:10px;padding:0 12px;height:42px}
.o-toggle input{accent-color:var(--ever);width:16px;height:16px}
.o-rm2{border:none;background:transparent;cursor:pointer;color:#b25a36;font-size:16px;width:30px}
.q-add-opt{border:1.5px dashed var(--line2);background:transparent;border-radius:10px;padding:9px 14px;cursor:pointer;color:#5e5a4e;font-size:13px;margin-top:4px}
.q-photo-btn{border:1.5px dashed var(--line2);background:transparent;border-radius:10px;padding:0 14px;height:40px;cursor:pointer;color:#5e5a4e;font-size:13px}
.q-photo-prev{display:flex;align-items:center;gap:8px;margin:8px 0 4px;font-size:13px;color:#2f5a3b}
.q-photo-prev img{height:46px;border-radius:8px;border:1px solid var(--line)}
.q-photo-prev button{border:none;background:transparent;color:#b25a36;cursor:pointer}
.q-image{text-align:center;margin:8px 0 14px}
.q-image img{max-width:100%;max-height:240px;width:auto;border-radius:10px;border:1px solid var(--line);display:inline-block;margin:0 auto}
.q-add-btn{border:1.5px dashed var(--line2);background:transparent;border-radius:12px;padding:13px;cursor:pointer;color:#5e5a4e;font-size:14px;width:100%;margin-bottom:16px}

/* ---------- Интерактивный урок: иконка, кнопка и модальное окно ---------- */
.mat-ic.play{background:#e7efe6;color:#234a2e}
.mat-btn.play{background:var(--ever);border-color:var(--ever);color:#f3efe4}
.mat-btn.play:hover{background:#1b2e23;border-color:#1b2e23;color:#f3efe4}
@keyframes lesOvIn{from{opacity:0}to{opacity:1}}
@keyframes lesModalIn{from{opacity:0;transform:translateY(22px) scale(.97)}to{opacity:1;transform:none}}
.les-ov{position:fixed;top:0;right:0;bottom:0;left:0;z-index:160;background:rgba(18,28,21,.55);display:flex;align-items:center;justify-content:center;padding:24px;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);animation:lesOvIn .28s ease both}
.les-modal{background:#fffefb;border-radius:20px;width:min(620px,96vw);height:min(88vh,860px);display:flex;flex-direction:column;overflow:hidden;box-shadow:0 34px 90px rgba(18,28,21,.38);animation:lesModalIn .4s cubic-bezier(.3,1,.45,1) both}
@media (prefers-reduced-motion:reduce){.les-ov,.les-modal{animation:none!important}}
.les-bar{display:flex;align-items:center;gap:13px;padding:16px 18px;background:linear-gradient(120deg,#23382c,#2f4738);color:#f4efe2;flex-shrink:0}
.les-bar-ic{width:40px;height:40px;border-radius:12px;background:rgba(201,184,143,.18);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.les-bar-ic svg{width:21px;height:21px;stroke:#c9b88f}
.les-bar-tx{flex:1;min-width:0}
.les-bar-eyebrow{font:600 10.5px var(--sans);color:#c9b88f;letter-spacing:.16em;text-transform:uppercase}
.les-bar-t{font:600 17px var(--serif);color:#f4efe2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}
.les-bar-btn{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;border:1px solid rgba(244,239,226,.25);background:rgba(255,255,255,.07);color:#f4efe2;cursor:pointer;flex-shrink:0;transition:background .15s}
.les-bar-btn:hover{background:rgba(255,255,255,.16)}
.les-finish{flex-shrink:0;font:600 13px var(--sans);color:#23382c;background:#c9b88f;border:none;border-radius:10px;padding:9px 16px;cursor:pointer;transition:background .15s,transform .15s}
.les-finish:hover{background:#d8c9a2;transform:translateY(-1px)}
@media (max-width:560px){.les-finish{padding:8px 12px;font-size:12px}}
.les-bar-btn svg{width:18px;height:18px}
.les-frame-wrap{flex:1;background:#fff;position:relative;min-height:0;overflow:hidden}
.les-frame-wrap:fullscreen{background:#fff}
.les-frame{width:100%;height:100%;border:0;display:block}
.les-modal ::-webkit-scrollbar{width:0;height:0}
.les-modal *{scrollbar-width:none;-ms-overflow-style:none}
/* режим «на весь экран» — поверх всех шапок */
.les-ov.les-fs{top:0!important;right:0!important;bottom:0!important;left:0!important;top:0!important;right:0!important;bottom:0!important;left:0!important;padding:0;background:#0b120e;z-index:200;backdrop-filter:none;-webkit-backdrop-filter:none}
.les-ov.les-fs .les-modal{width:100%;height:100%;max-height:none;border-radius:0}
.les-ov.les-fs .les-bar{padding-top:calc(16px + env(safe-area-inset-top))}
@media(max-width:820px){
  /* по умолчанию урок ограничен верхней шапкой и нижней навигацией (границы задаёт JS) */
  .les-ov{top:0;right:0;bottom:0;left:0;padding:0;background:rgba(18,28,21,.5)}
  .les-modal{width:100%;height:100%;max-height:none;border-radius:0}
  .les-bar{padding-top:16px}
}

/* ---------- Push: кнопка в панели уведомлений ---------- */
.bell-foot{border-top:0.5px solid var(--line);padding:12px;text-align:center}
.bell-push-btn{width:100%;border:1.5px solid var(--ever);background:#eef3ec;color:var(--ever);border-radius:10px;padding:10px 14px;font-size:13.5px;cursor:pointer;font-family:inherit}
.bell-push-btn:hover{background:#e0eadd}
.bell-push-test{width:100%;margin-top:8px;border:1.5px solid var(--line2);background:#fff;color:#5e5a4e;border-radius:10px;padding:9px 14px;font-size:13px;cursor:pointer;font-family:inherit}
.bell-push-test:hover{border-color:var(--ever);color:var(--ever)}
.bell-push-note{font-size:12.5px;color:var(--muted)}

/* ---------- Баннер «Включите уведомления» ---------- */
.push-banner{display:flex;align-items:center;gap:14px;background:#eef3ec;border:1px solid #cfe0d4;
  border-radius:14px;padding:14px 18px;margin:0 0 18px;flex-wrap:wrap}
.push-banner .pb-ic{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:12px;background:#2f4738;color:#f3efe4;flex-shrink:0}
.push-banner .pb-txt{flex:1;min-width:200px}
.push-banner .pb-t{margin:0;font-weight:600;font-size:15.5px;color:var(--ink)}
.push-banner .pb-s{margin:3px 0 0;font-size:13.5px;color:#5e6b5e;line-height:1.45}
.push-banner .pb-acts{display:flex;gap:10px;align-items:center;margin-left:auto}
.push-banner .pb-on{border:none;background:var(--ever);color:#f3efe4;border-radius:10px;padding:10px 20px;font-size:14px;cursor:pointer;font-family:inherit}
.push-banner .pb-on:hover{background:#1b2e23}
.push-banner .pb-later{border:1.5px solid transparent;background:transparent;color:#5e6b5e;border-radius:10px;padding:10px 14px;font-size:14px;cursor:pointer;font-family:inherit}
.push-banner .pb-later:hover{color:var(--ever)}
@media(max-width:560px){.push-banner .pb-acts{margin-left:0;width:100%}.push-banner .pb-on{flex:1}}

/* ---------- Профиль и учебные данные ученика ---------- */
.prof-wrap{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px;align-items:start}
.prof-card{padding:20px 22px}
.prof-h{margin:0 0 14px;font-family:var(--serif);font-size:19px;color:var(--ink)}
.cap2{display:block;font-size:12px;letter-spacing:.4px;text-transform:uppercase;color:#9a9484;margin:12px 0 5px}
.prof-inp{width:100%;height:44px;border:1.5px solid var(--line2);border-radius:10px;background:var(--panel);font-size:15px;padding:0 13px;outline:none;font-family:inherit;box-sizing:border-box;color:var(--ink)}
.prof-inp:focus{border-color:var(--ever)}
.prof-login{margin:16px 2px 0;font-size:13px;color:var(--muted)}
.st-edit{margin-top:16px;padding:18px 20px}
.st-edit-h{margin:0 0 6px;font-family:var(--serif);font-size:18px;color:var(--ink)}
.st-edit-hint{margin:0 0 10px;font-size:13px;color:#8a6d34;background:#f3efe4;border-radius:8px;padding:8px 12px}
.st-desc{margin:2px 0 0;font-size:13.5px;color:#2f5a3b}
.st-desc.empty{color:#b0a892;font-style:italic}

/* индикатор заполненности профиля — в шапке (ПК) */
.prof-meter{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line2);background:#fff;border-radius:999px;padding:5px 13px 5px 6px;cursor:pointer;font-family:inherit}
.prof-meter:hover{border-color:var(--ever)}
.prof-meter .pm-ring{width:22px;height:22px;border-radius:50%;-webkit-mask:radial-gradient(circle 6px at 50% 50%,transparent 98%,#000 100%);mask:radial-gradient(circle 6px at 50% 50%,transparent 98%,#000 100%)}
.prof-meter .pm-txt{font-size:13px;color:var(--ever);font-weight:500}
@media(max-width:840px){.prof-meter{display:none}}

/* индикатор заполненности — карточка внутри профиля (моб. и ПК) */
.pm-card{display:flex;align-items:center;gap:16px;background:#eef3ec;border:1px solid #cfe0d4;border-radius:14px;padding:14px 18px;margin:0 0 18px;flex-wrap:wrap}
.pm-bar{flex:1;min-width:160px;max-width:340px;height:10px;background:#dfe7da;border-radius:999px;overflow:hidden}
.pm-bar>i{display:block;height:100%;background:linear-gradient(90deg,#2f4738,#5a8a64);border-radius:999px}
.pm-info{display:flex;flex-direction:column}
.pm-big{font-weight:600;font-size:15px;color:var(--ink)}
.pm-miss{font-size:13px;color:#8a6d34;margin-top:2px}
.pm-ok{font-size:13px;color:#2f5a3b;margin-top:2px}
@media(max-width:560px){.pm-bar{max-width:none;width:100%}}

/* ---------- Главный экран: ближайшие занятия / оплаты / заметка ---------- */
.ov-grid{display:grid;grid-template-columns:1.6fr 1fr;gap:16px;align-items:start;margin-top:4px}
.ov-side{display:flex;flex-direction:column;gap:16px}
.ov-card{background:#fffefb;border:0.5px solid var(--line);border-radius:16px;padding:20px 22px;box-shadow:0 14px 40px -30px rgba(40,38,32,.5)}
.ov-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;gap:10px}
.ov-title{margin:0;font-family:var(--serif);font-size:20px;font-weight:400;color:var(--ink)}
.ov-link{border:none;background:transparent;color:var(--ever);font-size:14px;cursor:pointer;font-family:inherit;white-space:nowrap}
.ov-link:hover{text-decoration:underline}
.ov-les{display:flex;align-items:center;gap:14px;padding:13px 0;border-bottom:0.5px solid var(--line)}
.ov-les:last-child{border-bottom:none}
.ov-time{font-variant-numeric:tabular-nums;font-size:14px;color:#6f6a5c;width:46px;flex-shrink:0}
.ov-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}
.ov-dot.ok{background:#5a8a64}
.ov-dot.wait{background:#c2703f}
.ov-les-main{flex:1;min-width:0}
.ov-les-name{margin:0;font-weight:600;font-size:15px;color:var(--ink)}
.ov-les-sub{margin:2px 0 0;font-size:13px;color:#8a8576}
.ov-les-sub.empty{color:#b0a892;font-style:italic}
.ov-badge{font-size:12px;padding:5px 11px;border-radius:8px;white-space:nowrap}
.ov-badge.ok{color:#2f5a3b;background:#e7efe6}
.ov-badge.wait{color:#9a4a25;background:#f7e7df}
.ov-pay{display:flex;align-items:center;justify-content:space-between;padding:11px 0;border-bottom:0.5px solid var(--line);font-size:15px}
.ov-pay:last-child{border-bottom:none}
.ov-pay-name{color:#403c33}
.ov-pay-amt{font-family:var(--serif);color:#2f5a3b;white-space:nowrap}
.ov-empty{color:var(--muted);font-size:14px;margin:4px 0}
.ov-note-text{margin:0;font-size:14.5px;color:#403c33;line-height:1.5;white-space:pre-wrap}
.ov-note-empty{margin:0;font-size:14px;color:var(--muted)}
.ov-note-ta{width:100%;min-height:90px;border:1.5px solid var(--line2);border-radius:10px;padding:11px 13px;font-family:inherit;font-size:14.5px;outline:none;box-sizing:border-box;resize:vertical}
.ov-note-ta:focus{border-color:var(--ever)}
.ov-note-acts{display:flex;gap:10px;justify-content:flex-end;margin-top:10px}
@media(max-width:840px){.ov-grid{grid-template-columns:1fr}}

/* ---------- Чат ---------- */
.chat-list{display:flex;flex-direction:column;gap:8px;max-width:680px}
.chat-conv{display:flex;align-items:center;gap:13px;text-align:left;width:100%;background:#fffefb;border:0.5px solid var(--line);border-radius:14px;padding:13px 16px;cursor:pointer;font-family:inherit}
.chat-conv:hover{border-color:#d8d3c6}
.chat-av{width:44px;height:44px;border-radius:50%;background:#23382c;color:#f3efe4;display:grid;place-items:center;font-family:var(--serif);font-size:16px;flex-shrink:0}
.chat-conv-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.chat-conv-top{display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.chat-conv-name{font-weight:600;font-size:15px;color:var(--ink)}
.chat-conv-when{font-size:12px;color:var(--muted);white-space:nowrap}
.chat-conv-last{font-size:13.5px;color:#6f6a5c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat-conv-empty{color:#b0a892;font-style:italic}
.chat-unread{background:var(--clay);color:#fff;border-radius:999px;min-width:22px;height:22px;display:grid;place-items:center;font-size:12px;padding:0 6px;flex-shrink:0}
.chat-thread{display:flex;flex-direction:column;gap:10px;background:#fffefb;border:0.5px solid var(--line);border-radius:16px;padding:18px;max-height:60vh;overflow-y:auto;margin-bottom:12px}
.chat-empty{color:var(--muted);text-align:center;margin:30px 0;font-size:14px}
.chat-msg{display:flex;flex-direction:column;max-width:75%}
.chat-msg.mine{align-self:flex-end;align-items:flex-end}
.chat-msg.theirs{align-self:flex-start;align-items:flex-start}
.chat-bubble{padding:10px 14px;border-radius:14px;font-size:14.5px;line-height:1.4;white-space:pre-wrap;word-break:break-word}
.chat-msg.mine .chat-bubble{background:var(--ever);color:#f3efe4;border-bottom-right-radius:4px}
.chat-msg.theirs .chat-bubble{background:#eef3ec;color:#23211c;border-bottom-left-radius:4px}
.chat-time{font-size:11px;color:var(--muted);margin-top:3px}
.chat-compose{display:flex;gap:10px;align-items:flex-end;max-width:680px}
.chat-input{flex:1;border:1.5px solid var(--line2);border-radius:12px;padding:11px 14px;font-family:inherit;font-size:15px;resize:none;outline:none;min-height:46px;max-height:140px;box-sizing:border-box}
.chat-input:focus{border-color:var(--ever)}
.chat-compose .btn-add{height:46px;white-space:nowrap}

/* Заполненность недели (тёмная карточка обзора) */
.wk-bar{height:8px;background:rgba(255,255,255,.18);border-radius:999px;overflow:hidden;margin:10px 0 8px}
.wk-bar>i{display:block;height:100%;background:linear-gradient(90deg,#c9b88f,#e6dcc3);border-radius:999px}

/* Аватар */
.avatar.has-img{background-size:cover;background-position:center;color:transparent}
.prof-ava-card{display:flex;align-items:center;gap:18px;margin-bottom:16px}
.prof-av-big{width:72px;height:72px;border-radius:50%;background:#23382c;color:#f3efe4;display:grid;place-items:center;font-family:var(--serif);font-size:28px;flex-shrink:0;background-size:cover;background-position:center}
.prof-av-big.has-img{color:transparent}
.prof-ava-side{display:flex;flex-direction:column;gap:7px;align-items:flex-start}
.prof-av-name{margin:0;font-weight:600;font-size:16px;color:var(--ink)}
.prof-av-hint{margin:0;font-size:12px;color:var(--muted)}

/* Режим переноса занятия на календаре */
.resch-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;background:#eef3ec;border:1px solid #cfe0d4;border-radius:12px;padding:11px 16px;margin:0 0 12px;font-size:14px;color:#2f5a3b;flex-wrap:wrap}
.cal-grid.resch .cal-cell:not(.resch-target){opacity:.3;pointer-events:none}
.cal-grid.resch .resch-target{cursor:pointer;outline:2px solid var(--ever);outline-offset:-2px;animation:reschpulse 1.4s ease-in-out infinite}
@keyframes reschpulse{0%,100%{box-shadow:inset 0 0 0 0 rgba(35,56,44,0)}50%{box-shadow:inset 0 0 0 4px rgba(35,56,44,.18)}}
@media (prefers-reduced-motion: reduce){.cal-grid.resch .resch-target{animation:none}}

/* Видео урока: компактный плеер со сворачиванием и фуллскрином */
.vidbox{max-width:340px;border:0.5px solid var(--line);border-radius:14px;overflow:hidden;background:#000;box-shadow:0 12px 34px -28px rgba(40,38,32,.6)}
.vidbox:fullscreen{max-width:none;width:100%;height:100%;display:flex;flex-direction:column}
.vidbar{display:flex;align-items:center;gap:8px;padding:8px 10px;background:#2f4738;color:#f3efe4}
.vidbar-t{flex:1;font-size:13px;font-weight:500}
.vidbar-btn{display:grid;place-items:center;width:30px;height:30px;border-radius:8px;border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.1);color:#f3efe4;cursor:pointer}
.vidbar-btn:hover{background:rgba(255,255,255,.2)}
.vidbar-btn svg{width:16px;height:16px}
.vidplayer{display:block;width:100%;max-height:240px;background:#000}
.vidbox:fullscreen .vidplayer{max-height:none;flex:1;height:auto}

/* ============================================================
   Дизайн-система: полировка компонентов + мобильная адаптация
   (этапы 1–2: единый вид по макету и мобильный нижний таб-бар)
   ============================================================ */
.panel-card,.hw-card{box-shadow:var(--card-sh)}
.panel-card:hover,.hw-card:hover{box-shadow:var(--card-sh2)}
.btn-add,.btn-solid,.btn-line,.mat-btn,.slot-act{transition:background .16s,border-color .16s,box-shadow .16s,transform .16s}
.btn-add:active,.btn-solid:active,.mat-btn:active{transform:translateY(1px)}
.section-title{letter-spacing:.2px}

/* плавное появление контента раздела — как в расписании (каскад, медленнее) */
@keyframes ui-fade-up{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
/* анимация только при входе в раздел (класс .anim), не при обновлении после действий */
#dashContent.anim>*{animation:schEnter .8s cubic-bezier(.16,.7,.2,1) both}
#dashContent.anim>*:nth-child(1){animation-delay:.05s}
#dashContent.anim>*:nth-child(2){animation-delay:.17s}
#dashContent.anim>*:nth-child(3){animation-delay:.29s}
#dashContent.anim>*:nth-child(4){animation-delay:.41s}
#dashContent.anim>*:nth-child(5){animation-delay:.53s}
#dashContent.anim>*:nth-child(6){animation-delay:.65s}
#dashContent.anim>*:nth-child(7){animation-delay:.77s}
#dashContent.anim>*:nth-child(8){animation-delay:.89s}
/* обзор: карточки сверху → приветствие → дата → контент — строго по порядку сверху вниз */
#ovTop .ov-mcard{animation:schEnter .8s cubic-bezier(.16,.7,.2,1) both}
#ovTop .ov-mcard:nth-child(1){animation-delay:.05s}
#ovTop .ov-mcard:nth-child(2){animation-delay:.13s}
#dashHello{animation:schEnter .8s cubic-bezier(.16,.7,.2,1) .21s both}
#dashDate{animation:schEnter .8s cubic-bezier(.16,.7,.2,1) .29s both}
#dashContent.anim.ovmode>*:nth-child(1){animation-delay:.37s}
#dashContent.anim.ovmode>*:nth-child(2){animation-delay:.47s}
#dashContent.anim.ovmode>*:nth-child(3){animation-delay:.57s}
#dashContent.anim.ovmode>*:nth-child(4){animation-delay:.67s}

/* ---------- Мобильная адаптация (≤880px) ---------- */
@media (max-width:880px){
  /* контент кабинета (вход/навигация — в блоке «Мобильная адаптация» ниже) */
  .dash-main,.dash-main.wide{max-width:100%;padding:18px 14px 96px}
  .section-title{font-size:21px}
  .grid2,.prof-wrap{grid-template-columns:1fr}

  /* всплывающие окна → шторка снизу */
  .pop{align-items:flex-end;padding:0}
  .pop-box{max-width:100%;width:100%;border-radius:18px 18px 0 0;
    padding:20px 18px calc(20px + env(safe-area-inset-bottom));max-height:90vh;overflow-y:auto}
  /* исключение — окна по центру (создание папки и т.п.) */
  .pop.pop-center{align-items:center;padding:20px;box-sizing:border-box}
  .pop.pop-center .pop-box{max-width:400px;border-radius:18px;padding:22px}
  /* просмотр документа — на весь экран (Dashboard.dc ≤860: без скругления и pop-анимации) */
  .modal{padding:0!important;place-items:stretch!important}
  .modal-box{max-width:100%!important;width:100%!important;max-height:100dvh!important;height:100dvh!important;border-radius:0!important;overflow:hidden!important;display:flex!important;flex-direction:column!important;animation:none!important}
  .modal-head{padding-top:calc(18px + env(safe-area-inset-top))!important}
  .modal-body{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-bottom:calc(24px + env(safe-area-inset-bottom))}

  /* календарь и так прокручивается по горизонтали — оставляем */

  /* Оплаты — мобильная адаптация */
  .py-h1{font-size:27px}
  .py-tabs{width:100%}
  .py-tab{flex:1 1 auto;justify-content:center;padding:11px 12px}
  .py-hero-num{font-size:58px}
  .py-pay{width:100%}
  .py-card-foot{flex-direction:column;align-items:stretch;gap:14px}
  .py-card-foot .py-amt{text-align:left}
  .py-hero-top{flex-direction:column;align-items:stretch}
  .py-renew{width:100%;justify-content:center}
  .py-plan{flex-wrap:wrap}
  .py-plan-right{text-align:left;width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px}
  .py-plan-right .py-ghost{margin-top:0}
}

/* очень узкие экраны */
@media (max-width:420px){
  .brand{font-size:15px}
  .nav a{padding:8px 10px;font-size:12px}
  .section-title{font-size:20px}
}

/* мобильные сетки разделов (обзор и пр.) */
@media (max-width:880px){
  .stats{grid-template-columns:1fr 1fr!important}
  .ov-grid{grid-template-columns:1fr!important}
  .ov-side{grid-template-columns:1fr}
}
@media (max-width:420px){
  .stats{grid-template-columns:1fr!important}
}

/* двухколоночные блоки → одна колонка на мобиле */
@media (max-width:880px){
  .hw-2col,.st-detail{grid-template-columns:1fr}
}

/* ============================================================
   Экран входа — зелёная панель точно по макету
   ============================================================ */
@media (min-width:881px){
  .auth-screen{grid-template-columns:minmax(380px,47%) 1fr}
}
.auth-hero{position:relative;overflow:hidden;background:#16271d;color:#f4efe2;
  display:flex;flex-direction:column;justify-content:space-between;
  padding:clamp(28px,5.5%,64px);min-height:100vh}
.auth-hero .hero-art{display:none}
@keyframes heroFloatA{0%,100%{transform:translate(0,0)}50%{transform:translate(24px,-20px)}}
@keyframes heroFloatB{0%,100%{transform:translate(0,0)}50%{transform:translate(-22px,18px)}}
@keyframes heroRing{from{transform:rotate(0)}to{transform:rotate(360deg)}}
.hero-orb{position:absolute;border-radius:50%;filter:blur(38px);z-index:0;pointer-events:none}
.hero-orb.o1{width:340px;height:340px;top:-60px;right:-80px;
  background:radial-gradient(circle,rgba(201,184,143,.40),transparent 70%);animation:heroFloatA 11s ease-in-out infinite}
.hero-orb.o2{width:300px;height:300px;bottom:-70px;left:-70px;
  background:radial-gradient(circle,rgba(94,128,104,.45),transparent 70%);animation:heroFloatB 13s ease-in-out infinite}
.hero-ring{position:absolute;width:520px;height:520px;left:50%;top:46%;margin:-260px 0 0 -260px;z-index:0;
  border:1px solid rgba(201,184,143,.14);border-radius:50%;animation:heroRing 60s linear infinite;pointer-events:none}
.hero-ring::after{content:"";position:absolute;top:54px;right:54px;bottom:54px;left:54px;border:1px solid rgba(201,184,143,.10);border-radius:50%}
.hero-inner{position:relative;z-index:2;display:flex;flex-direction:column;justify-content:space-between;flex:1;gap:24px}
.hero-logo{display:flex;align-items:center;gap:13px;animation:ui-fade-up .6s .05s both}
.hero-logo-ic{width:58px;height:58px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.hero-logo-ic svg{width:58px;height:58px;display:block}
.hero-logo-tx{display:flex;flex-direction:column;line-height:1.05}
.hero-logo-tx b{font-family:var(--serif);font-weight:600;font-size:23px;color:#f4efe2}
.hero-logo-tx i{font-style:normal;font-weight:600;font-size:11px;color:#c9b88f;letter-spacing:.24em;text-transform:uppercase}
.hero-h{margin:0;font-family:var(--serif);font-weight:600;font-size:clamp(30px,3.2vw,46px);
  line-height:1.12;color:#f4efe2;max-width:560px;animation:ui-fade-up .7s .15s both}
.hero-list{list-style:none;margin:30px 0 0;padding:0;display:flex;flex-direction:column;gap:17px}
.hero-list li{display:flex;align-items:center;gap:14px;font-weight:500;font-size:16.5px;
  color:rgba(244,239,226,.88);animation:ui-fade-up .6s both}
.hero-list li:nth-child(1){animation-delay:.30s}
.hero-list li:nth-child(2){animation-delay:.40s}
.hero-list li:nth-child(3){animation-delay:.50s}
.hero-list .hd{width:8px;height:8px;border-radius:50%;background:#c9b88f;flex-shrink:0;box-shadow:0 0 8px rgba(201,184,143,.6)}
.hero-quote{margin:0;font-weight:500;font-size:14px;line-height:1.6;color:rgba(244,239,226,.55);animation:ui-fade-up .6s .6s both}
.auth-scrollhint{display:none}
.auth-mtop{display:none}
.auth-mhead{display:none;flex-direction:column;align-items:center;gap:9px;margin:0 0 22px;text-align:center}
.auth-mhead-ic{width:54px;height:54px;display:flex;align-items:center;justify-content:center}
.auth-mhead-ic svg{width:54px;height:54px;display:block}
.auth-mhead-tx{display:flex;flex-direction:column;align-items:center;line-height:1.12}
.auth-mhead-tx span{font:600 20px var(--serif);color:#23211c}
.auth-mhead-tx i{font-style:normal;font:600 9.5px var(--sans);color:#a79a76;letter-spacing:.2em;text-transform:uppercase}

/* ============================================================
   Шапка кабинета по макету: логотип + навигация-пилюли
   ============================================================ */
.brand{display:flex;align-items:center;gap:11px;border:none;padding:0;flex-shrink:0}
.brand-ic{width:40px;height:40px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.brand-ic svg{width:40px;height:40px;display:block}
.brand-tx{display:flex;flex-direction:column;line-height:1.06}
.brand-tx b{font-family:var(--serif);font-weight:600;font-size:18px;color:var(--ever)}
.brand-tx i{font-style:normal;font-weight:600;font-size:10px;color:#a79a76;letter-spacing:.18em;text-transform:uppercase}
.nav{gap:6px}
.nav a{padding:8px 14px;border-radius:9px;color:#6b6657;font-weight:500;transition:background .15s,color .15s}
.nav a:hover{background:#f1ede3;color:var(--ever)}
.nav a.active{background:#eef0e9;color:var(--ever);border-bottom:none;padding-bottom:8px;font-weight:600}

/* ============================================================
   Правая часть шапки: чип профиля + пользователь (по макету)
   ============================================================ */
.prof-chip{display:flex;align-items:center;gap:9px;border:1px solid var(--line2);background:var(--panel);border-radius:999px;padding:5px 14px 5px 6px;cursor:pointer;transition:border-color .15s}
.prof-chip:hover{border-color:var(--ever)}
.prof-ring{position:relative;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;flex-shrink:0}
.prof-ring::after{content:"";position:absolute;top:4px;right:4px;bottom:4px;left:4px;background:var(--panel);border-radius:50%}
.prof-ring i{position:relative;z-index:1;font-style:normal;font-size:11px;font-weight:700;color:var(--ever)}
.prof-chip-tx{display:flex;flex-direction:column;line-height:1.18;text-align:left}
.prof-chip-tx b{font-size:12.5px;font-weight:600;color:var(--ink)}
.prof-chip-tx span{font-size:11px;color:var(--muted)}
.user-chip{display:flex;align-items:center;gap:9px}
.user-tx{display:flex;flex-direction:column;line-height:1.18}
.user-tx b{font-size:13.5px;font-weight:600;color:var(--ink)}
.user-tx i{font-style:normal;font-size:11.5px;color:var(--muted)}
@media (max-width:880px){
  .prof-chip,.user-tx{display:none!important}
}

/* ============================================================
   Вход: усиленный «градиентный» фон зелёной панели (как в макете)
   ============================================================ */
.auth-hero{background:#1d3527}
.auth-hero::before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;
  background:
    radial-gradient(38% 46% at 26% 26%, rgba(150,178,140,.55), transparent 68%),
    radial-gradient(42% 52% at 78% 62%, rgba(168,186,128,.42), transparent 70%),
    radial-gradient(46% 56% at 62% 12%, rgba(201,184,143,.30), transparent 70%),
    radial-gradient(60% 70% at 50% 95%, rgba(20,34,25,.65), transparent 70%),
    linear-gradient(135deg,#264531,#142219)}
.hero-orb{filter:blur(48px)}
.hero-orb.o1{width:420px;height:420px;top:-40px;right:-60px;background:radial-gradient(circle,rgba(201,184,143,.50),transparent 70%)}
.hero-orb.o2{width:400px;height:400px;bottom:-60px;left:-40px;background:radial-gradient(circle,rgba(150,182,138,.55),transparent 70%)}
.auth-hero .hero-orb::after{content:"";position:absolute;width:200px;height:200px;border-radius:50%;filter:blur(40px);
  background:radial-gradient(circle,rgba(201,184,143,.35),transparent 70%);top:60%;left:40%}
.hero-ring{width:560px;height:560px;margin:-280px 0 0 -280px;border-color:rgba(201,184,143,.20)}
.hero-ring::after{top:60px;right:60px;bottom:60px;left:60px;border-color:rgba(201,184,143,.14)}
.hero-inner{position:relative;z-index:3}

/* низ формы входа по макету */
.forgot-link{display:block;text-align:right;margin:-4px 0 2px;font-size:12.5px;font-weight:600;color:#3f5a48;border:none}
.forgot-link:hover{color:var(--ever)}
.or-div{display:flex;align-items:center;gap:12px;margin:18px 0}
.or-div span{flex:1;height:1px;background:var(--line)}
.or-div i{font-style:normal;font-size:11.5px;color:#a7a293}
.auth-foot{text-align:center;font-size:11.5px;color:#a7a293;line-height:1.7;margin:14px 0 0}
.auth-foot a{color:#8a8576;border-bottom:none;text-decoration:underline}
.switch a{font-weight:700;color:var(--ever);border-bottom:none}

/* ============================================================
   Точный анимированный фон входа (перенос из PanelBg дизайнера)
   ============================================================ */
.auth-hero{background:#15261c}
.auth-hero::before{display:none!important}        /* убираем мой приблизительный фон */
.hero-orb,.hero-ring{display:none!important}       /* старые приблизительные орбы убраны */
.auth-hero .hero-art{display:block!important;position:absolute;top:0;right:0;bottom:0;left:0;z-index:0}
@keyframes meshOrbit{from{transform:rotate(0)}to{transform:rotate(360deg)}}
@keyframes meshOrbitRev{from{transform:rotate(0)}to{transform:rotate(-360deg)}}
@keyframes ringSpin{from{transform:rotate(0)}to{transform:rotate(360deg)}}
@keyframes ringBreathe{0%,100%{transform:scale(1);opacity:.5}50%{transform:scale(1.07);opacity:.85}}
@keyframes floatA{0%,100%{transform:translate(0,0)}50%{transform:translate(22px,-18px)}}
@keyframes floatB{0%,100%{transform:translate(0,0)}50%{transform:translate(-20px,16px)}}
@keyframes floatC{0%,100%{transform:translate(0,0)}50%{transform:translate(12px,22px)}}
@keyframes orbPulse{0%,100%{transform:scale(.74);opacity:.35}50%{transform:scale(1.36);opacity:1}}
@keyframes heroBob{0%,100%{transform:translateY(0);opacity:.95}50%{transform:translateY(9px);opacity:.45}}
@media (prefers-reduced-motion:reduce){.auth-hero .hero-art *,.auth-scrollhint svg{animation:none!important}}

/* каскад появления полей формы (AnimatedForm.dc) */
@keyframes authField{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:no-preference){
  .auth-form:not(.hidden) .title{animation:authField .55s .04s both}
  .auth-form:not(.hidden) .subtitle{animation:authField .55s .09s both}
  .auth-form:not(.hidden) form>*{animation:authField .55s both}
  .auth-form:not(.hidden) form>*:nth-child(1){animation-delay:.13s}
  .auth-form:not(.hidden) form>*:nth-child(2){animation-delay:.18s}
  .auth-form:not(.hidden) form>*:nth-child(3){animation-delay:.23s}
  .auth-form:not(.hidden) form>*:nth-child(4){animation-delay:.28s}
  .auth-form:not(.hidden) form>*:nth-child(5){animation-delay:.33s}
  .auth-form:not(.hidden) form>*:nth-child(6){animation-delay:.38s}
  .auth-form:not(.hidden) form>*:nth-child(7){animation-delay:.43s}
  .auth-form:not(.hidden) form>*:nth-child(8){animation-delay:.48s}
  .auth-form:not(.hidden) form>*:nth-child(9){animation-delay:.53s}
  .auth-form:not(.hidden) form>*:nth-child(10){animation-delay:.58s}
  .auth-form:not(.hidden) form>*:nth-child(11){animation-delay:.63s}
  .auth-form:not(.hidden) form>*:nth-child(12){animation-delay:.68s}
  .auth-form:not(.hidden) form>*:nth-child(13){animation-delay:.73s}
  .auth-form:not(.hidden) .or-div{animation:authField .55s .78s both}
  .auth-form:not(.hidden) .switch{animation:authField .55s .83s both}
  .auth-form:not(.hidden) .auth-foot{animation:authField .55s .88s both}
}

/* глазик: анимированное зачёркивание (как у дизайнера) */
.pwd-eye .eye-slash{stroke-dasharray:26;stroke-dashoffset:0;transition:stroke-dashoffset .35s ease}
.pwd-eye.shown .eye-slash{stroke-dashoffset:26}
/* точки пароля мельче и с разрядкой (крупные жирные кружки телефона) */
.pwd input[type=password]:not(:placeholder-shown),#rpPwd[type=password]:not(:placeholder-shown){font-size:12px;letter-spacing:.3em}
/* шрифты как в макете: заголовки полужирные, подписи полей без КАПСА */
.title,.section-title,.hero-h,.hero-logo-tx b,.brand-tx b,.prof-chip-tx b{font-weight:600}
.cap{text-transform:none;letter-spacing:0;font-weight:600;font-size:12.5px;color:#3a382f}

/* появление форм — каскадом по полям (см. блок .auth-form ... authField выше) */

/* ============ Восстановление пароля — точный перенос дизайнера ============ */
@keyframes rpStep { from{opacity:0;transform:translateX(18px)} to{opacity:1;transform:none} }
@keyframes rpStepBack { from{opacity:0;transform:translateX(-18px)} to{opacity:1;transform:none} }
@keyframes rpPop { from{opacity:0;transform:scale(.9)} to{opacity:1;transform:none} }
@keyframes rpShake { 10%,90%{transform:translateX(-2px)} 30%,70%{transform:translateX(4px)} 50%{transform:translateX(-7px)} }
@keyframes rpSpin { to{transform:rotate(360deg)} }
@keyframes rpUp { from{opacity:0;transform:translateY(16px)} to{opacity:1;transform:none} }

#form-recover #rpFlow{display:flex;flex-direction:column;gap:18px}
.rp-steps{display:flex;align-items:center;gap:10px;animation:rpUp .5s .04s ease both}
.rp-back{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:10px;border:1px solid #e4dfd3;background:#fffefb;color:#6b6657;flex-shrink:0;padding:0}
.rp-back:hover{color:#23382c;background:#f7f4ec}
.rp-track{flex:1;display:flex;align-items:center;gap:7px}
.rp-dot{width:11px;height:11px;border-radius:50%;background:#fffefb;border:2px solid #d8d2c4;flex-shrink:0;box-sizing:border-box}
.rp-dot.on{background:#23382c;border-color:#23382c}
.rp-bar{flex:1;height:2px;border-radius:2px;background:#e4dfd3;transition:background .35s ease}
#rpFlow.s2 .rp-bar{background:#23382c}
.rp-stepnum{font:600 11.5px var(--sans);color:#a7a293;white-space:nowrap}
.rp-head{animation:rpUp .5s .08s ease both}
.rp-head .title{margin:0;font-size:28px;color:#23211c}
.rp-head .subtitle{margin:5px 0 0;font-size:13.5px;color:#8a8576;line-height:1.5}
.rp-errbox{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;background:#f9ebe1;border:1px solid #e6c2a7;border-radius:12px;animation:rpUp .3s ease both}
.rp-errbox svg{flex-shrink:0;margin-top:1px}
.rp-errbox span{font:500 13px var(--sans);color:#9a4420;line-height:1.45}
.rp-pane{display:flex;flex-direction:column;gap:15px}
.rp-pane.anim-fwd{animation:rpStep .4s cubic-bezier(.2,.8,.3,1) both}
.rp-pane.anim-back{animation:rpStepBack .4s cubic-bezier(.2,.8,.3,1) both}
.rp-pane.anim-err{animation:rpShake .45s ease}
#form-recover .field{margin-bottom:0}
#form-recover .rp-pane .field input,#form-recover .pwd input{width:100%;box-sizing:border-box;padding:13px 15px;font:500 15px var(--sans);color:#23211c;background:#fffefb;border:1px solid #e4dfd3;border-radius:12px;outline:none;transition:border-color .2s,box-shadow .25s,background .2s}
#form-recover .pwd input{padding:13px 46px 13px 15px}
#form-recover .rp-pane .field input:focus,#form-recover .pwd input:focus{border-color:#23382c;box-shadow:0 0 0 4px rgba(35,56,44,.13)}
#form-recover .field input.bad{background:#fdf6f1;border-color:#c2703f}
#form-recover .field input.bad:focus{box-shadow:0 0 0 4px rgba(194,112,63,.18)}
.rp-info{display:flex;align-items:flex-start;gap:9px;padding:11px 13px;background:#f4f1e9;border:1px solid #ece5d6;border-radius:11px}
.rp-info svg{flex-shrink:0;margin-top:1px}
.rp-info span{font:500 12px var(--sans);color:#7a7565;line-height:1.5}
.rp-code{display:flex;gap:8px;justify-content:space-between}
.rp-cell{width:100%;height:56px;text-align:center;box-sizing:border-box;padding:0;font:600 24px var(--serif);color:#23211c;background:#fbfaf5;border:1.5px solid #e4dfd3;border-radius:12px;outline:none;transition:border-color .18s ease,box-shadow .2s ease,background .18s ease}
.rp-cell.filled{background:#fffefb;border-color:#23382c}
.rp-cell:focus{border-color:#23382c;box-shadow:0 0 0 3px rgba(35,56,44,.1)}
.rp-cell.bad{background:#fdf6f1;border-color:#c2703f}
.rp-coderow{display:flex;align-items:center;justify-content:space-between;margin-top:7px}
.rp-masked{font:500 11.5px var(--sans);color:#a7a293}
.rp-resend{font:600 11.5px var(--sans);color:#3f5a48;border-bottom:none;padding:0}
.rp-resend:hover{color:#23382c}
.rp-resend.off{color:#b3ad9e;pointer-events:none}
.rp-hint{display:flex;align-items:center;gap:7px;margin-top:7px}
.rp-hintdot{width:6px;height:6px;border-radius:50%;flex-shrink:0;background:#cfc8b6;transition:background .2s}
.rp-hintdot.ok{background:#3f6b4c}.rp-hintdot.bad{background:#c2703f}
#rpHintTx{font:500 11.5px var(--sans);color:#a7a293}
#rpHintTx.ok{color:#3f6b4c}#rpHintTx.bad{color:#a85f30}
.rp-submit{display:flex;align-items:center;justify-content:center;gap:10px;margin-top:2px}
.rp-spin{width:18px;height:18px;border-radius:50%;border:2.5px solid rgba(244,239,226,.35);border-top-color:#f4efe2;display:inline-block;animation:rpSpin .7s linear infinite}
.rp-foot{text-align:center;margin:0}
.rp-success{display:flex;flex-direction:column;align-items:center;text-align:center;gap:7px;padding:8px 0;animation:rpUp .5s ease both}
.rp-success .title{margin:0;font-size:28px;color:#23211c}
.rp-success .subtitle{margin:4px 0 0;font-size:14px;color:#8a8576;max-width:300px;line-height:1.5}
.rp-okcircle{width:72px;height:72px;border-radius:50%;background:#e7f0e7;display:flex;align-items:center;justify-content:center;margin-bottom:8px;animation:rpPop .5s cubic-bezier(.3,1.4,.5,1) both}
.rp-success .btn-solid{margin-top:18px}

/* hero: бейдж и шаги (для экрана восстановления) */
.hero-badge{display:inline-flex;align-items:center;gap:9px;padding:7px 14px;border-radius:22px;border:1px solid rgba(201,184,143,.4);background:rgba(201,184,143,.1);font:600 12px var(--sans);color:#d8c89c;animation:rpUp .6s .12s ease both}
.hero-steps{margin-top:30px;display:flex;flex-direction:column;gap:16px}
.hero-step{display:flex;align-items:center;gap:14px;animation:rpUp .6s ease both}
.hero-step .n{width:26px;height:26px;border-radius:50%;background:rgba(201,184,143,.16);display:flex;align-items:center;justify-content:center;flex-shrink:0;font:700 12px var(--sans);color:#d8c89c}
.hero-step span:last-child{font:500 15.5px var(--sans);color:rgba(244,239,226,.86)}
/* кнопки восстановления — точный градиент дизайнера */
.rp-submit,.rp-success .btn-solid{background:linear-gradient(120deg,#23382c,#2f4738);border-radius:12px;box-shadow:0 8px 20px rgba(35,56,44,.22);transition:transform .18s ease,box-shadow .18s ease,opacity .2s ease}
.rp-submit:hover,.rp-success .btn-solid:hover{background:linear-gradient(120deg,#23382c,#2f4738);transform:translateY(-2px);box-shadow:0 14px 30px rgba(35,56,44,.3)}
.rp-submit:active,.rp-success .btn-solid:active{transform:translateY(0)}

/* ============ Формы входа/регистрации/восстановления — точно по AnimatedForm дизайнера ============ */
@keyframes fadeUp{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@keyframes authShimmer{0%{transform:translateX(-130%)}60%,100%{transform:translateX(130%)}}

/* заголовки */
.auth-form .title{font:600 30px var(--serif);color:#23211c;margin:0}
.auth-form .subtitle{font:500 13.5px var(--sans);color:#8a8576;margin:4px 0 26px}
.rp-head .title{font-size:28px}
.rp-head .subtitle{margin:5px 0 0}

/* поля */
.auth-form .field{gap:7px;margin-bottom:0}
.auth-form .cap{font:600 12.5px var(--sans);color:#3a382f;letter-spacing:.02em;text-transform:none}
.auth-form .field input,.auth-form .pwd input{height:auto;box-sizing:border-box;padding:13px 15px;font:500 15px var(--sans);color:#23211c;background:#fffefb;border:1px solid #e4dfd3;border-radius:12px;outline:none;transition:border-color .2s,box-shadow .25s,background .2s}
.auth-form .pwd input{padding:13px 46px 13px 15px}
.auth-form .field input::placeholder,.auth-form .pwd input::placeholder{color:#b3ad9e}
.auth-form .field input:focus,.auth-form .pwd input:focus{border-color:#23382c;box-shadow:0 0 0 4px rgba(35,56,44,.13)}

/* формы login/register: одноколоночная стопка с расстоянием 15px */
#form-login form,#form-register form{display:flex;flex-direction:column;gap:15px}
#form-login:not(.hidden),#form-register:not(.hidden){animation:none}

/* ссылка «Забыли пароль» — правее, и кнопка чуть ниже */
#form-login .forgot-link{display:block;text-align:right;margin:-2px 0 0;font:600 12.5px var(--sans);color:#3f5a48;border-bottom:none;padding:0}
#form-login .forgot-link:hover{color:#23382c}
#form-login form .btn-solid{margin-top:7px}

/* кнопка — градиент + блик (sheen) */
.auth-form .btn-solid{position:relative;overflow:hidden;height:auto;padding:14px;border-radius:12px;background:linear-gradient(120deg,#23382c,#2f4738);color:#fdfcf7;font:600 15px var(--sans);letter-spacing:.01em;box-shadow:0 8px 20px rgba(35,56,44,.22);transition:transform .18s ease,box-shadow .18s ease}
.auth-form .btn-solid:hover{background:linear-gradient(120deg,#23382c,#2f4738);transform:translateY(-2px);box-shadow:0 14px 30px rgba(35,56,44,.3)}
.auth-form .btn-solid:active{transform:translateY(0)}
.auth-form .btn-solid::before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(105deg,transparent 38%,rgba(255,255,255,.18) 50%,transparent 62%);transform:translateX(-130%);animation:authShimmer 4s ease-in-out 1.5s infinite}
.auth-form .btn-solid>span{position:relative;z-index:2}

/* чекбоксы согласия — как у дизайнера (скруглённый бокс с галочкой) */
.auth-form .consent{font:500 12.5px var(--sans);color:#6b6657;line-height:1.5;background:transparent;border:none;padding:0;margin:2px 0 0;gap:11px}
.auth-form .consent input{appearance:none;-webkit-appearance:none;width:20px;height:20px;flex:0 0 auto;margin-top:1px;border:1.5px solid #cfc8b6;border-radius:6px;background:#fffefb;cursor:pointer;position:relative;transition:all .15s ease}
.auth-form .consent input:checked{background:#23382c;border-color:#23382c}
.auth-form .consent input:checked::after{content:"";position:absolute;left:6px;top:2px;width:5px;height:10px;border:solid #fff;border-width:0 2.4px 2.4px 0;transform:rotate(45deg)}
.auth-form .consent a{color:#3f5a48;border-bottom:none}

/* разделитель «или» и нижние ссылки */
.auth-form .or-div{display:flex;align-items:center;gap:12px;margin:18px 0}
.auth-form .or-div span{flex:1;height:1px;background:#ece8df}
.auth-form .or-div i{font:500 11.5px var(--sans);color:#a7a293;font-style:normal}
.auth-form .switch{text-align:center;font:500 13.5px var(--sans);color:#6b6657;margin:0}
.auth-form .switch a{color:#23382c;font-weight:700;border-bottom:none}
.auth-form .auth-foot{text-align:center;font:500 11.5px var(--sans);color:#a7a293;line-height:1.7;margin:14px 0 0}
.auth-form .auth-foot a{color:#8a8576;text-decoration:underline;border-bottom:none}

/* анимация всплытия (cascade) — login и register */
#form-login .title,#form-register .title{animation:fadeUp .6s .10s ease both}
#form-login .subtitle,#form-register .subtitle{animation:fadeUp .6s .14s ease both}
#form-login form .field:nth-of-type(1),#form-register form .field:nth-of-type(1){animation:fadeUp .6s .18s ease both}
#form-login form .field:nth-of-type(2),#form-register form .field:nth-of-type(2){animation:fadeUp .6s .24s ease both}
#form-register form .field:nth-of-type(3){animation:fadeUp .6s .30s ease both}
#form-register form .field:nth-of-type(4){animation:fadeUp .6s .36s ease both}
#form-register form .field:nth-of-type(5){animation:fadeUp .6s .42s ease both}
#form-login .forgot-link{animation:fadeUp .6s .34s ease both}
#form-register .consent{animation:fadeUp .6s .46s ease both}
#form-login form .btn-solid{animation:fadeUp .6s .42s ease both}
#form-register form .btn-solid{animation:fadeUp .6s .54s ease both}
.auth-form .or-div{animation:fadeUp .6s .50s ease both}
#form-login .switch,#form-register .switch{animation:fadeUp .6s .56s ease both}
.auth-form .auth-foot{animation:fadeUp .6s .62s ease both}
/* область формы — белая (#fffefb), как у дизайнера (поля выделяются рамкой) */
.auth-panel{background:#fffefb}

/* ============ ИСПРАВЛЕНИЯ: ячейки кода + ошибки точно по дизайнеру ============ */
/* ячейки кода: Spectral 600 24px (перебиваем общее правило .auth-form .field input) */
#form-recover #rpCode .rp-cell{height:56px;box-sizing:border-box;padding:0;text-align:center;font:600 24px var(--serif);color:#23211c;background:#fbfaf5;border:1.5px solid #e4dfd3;border-radius:12px;outline:none;transition:border-color .18s ease,box-shadow .2s ease,background .18s ease}
#form-recover #rpCode .rp-cell.filled{background:#fffefb;border-color:#23382c}
#form-recover #rpCode .rp-cell:focus{border-color:#23382c;box-shadow:0 0 0 3px rgba(35,56,44,.1)}
#form-recover #rpCode .rp-cell.bad{background:#fdf6f1;border-color:#c2703f}

/* блок ошибки (вход/регистрация) — терракотовый, с иконкой, всплытие fadeUp */
.auth-form .alert.err{background:#f9ebe1;border:1px solid #e6c2a7;color:#9a4420;border-radius:12px;padding:12px 14px 12px 42px;font:500 13px var(--sans);line-height:1.45;position:relative;animation:fadeUp .3s ease both}
.auth-form .alert.err::before{content:"";position:absolute;left:14px;top:12px;width:18px;height:18px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%23b1521f' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cline x1='12' y1='8' x2='12' y2='13'/%3E%3Cline x1='12' y1='16.4' x2='12.01' y2='16.4'/%3E%3C/svg%3E") no-repeat center/contain}
.auth-form .alert.ok{background:#e7f0e7;border:1px solid #b9d4bd;color:#2f6b46;border-radius:12px;padding:12px 14px;font:500 13px var(--sans);line-height:1.45;animation:fadeUp .3s ease both}
/* тряска полей при ошибке */
#form-login form.shake,#form-register form.shake{animation:authShake .5s ease}
@keyframes authShake{10%,90%{transform:translateX(-2px)}30%,70%{transform:translateX(4px)}50%{transform:translateX(-7px)}}

/* ============ Просмотр документов — точно по дизайнеру (Договоры.dc) ============ */
@keyframes dcPopV{from{opacity:0;transform:translate(-0%,0) translateY(14px) scale(.98)}to{opacity:1;transform:none}}
.modal{background:rgba(20,30,24,.42);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}
.modal-box{width:680px;max-width:calc(100% - 40px);height:80vh;max-height:760px;background:#fffefb;border-radius:18px;box-shadow:0 36px 90px rgba(18,28,21,.4);overflow:hidden;animation:dcPopV .3s cubic-bezier(.3,1,.45,1) both}
.modal-head{display:flex;align-items:center;gap:14px;justify-content:flex-start;padding:18px 22px;border-bottom:1px solid #ece8df;background:#fffefb}
.modal-ic{width:38px;height:38px;border-radius:11px;background:#eef0e9;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:#2f6b46}
.modal-htx{flex:1;min-width:0}
.modal-title{font:600 17px var(--serif);color:#23211c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.modal-sub{font:500 11px var(--sans);color:#a7a293;margin-top:1px}
.modal-x{width:36px;height:36px;flex-shrink:0;border-radius:10px;border:1px solid #ece8df;background:#fffefb;color:#6b6657;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;transition:background .14s,color .14s}
.modal-x:hover{background:#efece4;color:#3a382f}
.modal-body{padding:26px 30px 34px;overflow-y:auto;white-space:normal;line-height:1.72;color:#46433a}
.modal-body>*:first-child{margin-top:0}
.modal-body h1{font:600 22px var(--serif);color:#23211c;margin:0 0 14px}
.modal-body h2{font:600 18px var(--serif);color:#23211c;margin:22px 0 10px}
.modal-body h3{font:600 15.5px var(--serif);color:#23211c;margin:18px 0 9px}
.modal-body p{font:400 13.5px/1.72 var(--sans);color:#46433a;margin:0 0 11px}
.modal-body ul,.modal-body ol{margin:0 0 12px;padding-left:20px}
.modal-body li{font:400 13.5px/1.7 var(--sans);color:#46433a;margin:0 0 5px}
.modal-body strong{font-weight:600;color:#23211c}
.modal-body em{font-style:italic}

/* подсветка полей красным при ошибке (как у дизайнера) */
.auth-form form.has-error .field input,.auth-form form.has-error .pwd input{border-color:#c2703f;background:#fdf6f1}
.auth-form form.has-error .field input:focus,.auth-form form.has-error .pwd input:focus{border-color:#c2703f;box-shadow:0 0 0 4px rgba(194,112,63,.18)}
/* убрать синий фон автозаполнения браузера */
.auth-form input:-webkit-autofill,.auth-form input:-webkit-autofill:focus{-webkit-text-fill-color:#23211c;-webkit-box-shadow:0 0 0 1000px #fffefb inset;transition:background-color 9999s ease-out 0s}
.auth-form form.has-error input:-webkit-autofill{-webkit-box-shadow:0 0 0 1000px #fdf6f1 inset}

/* ============ Обзор (Сводка) — точно по Dashboard.dc ============ */
@keyframes dashUp{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.dash-hello{font:600 34px var(--serif);color:#23211c;letter-spacing:0;margin:6px 0 0}
.dash-date{font:500 14px var(--sans);color:#8a8576;text-transform:none;margin:6px 0 0}
.stats{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px;margin-top:26px}
.stat{background:#fffefb;border:1px solid #ece8df;border-radius:16px;padding:20px 22px;box-shadow:0 6px 20px rgba(40,35,25,.05)}
.stat.dark{background:#23382c;border:1px solid #23382c;box-shadow:0 10px 26px rgba(35,56,44,.22)}
.stat .scap{font:600 12px var(--sans);color:#8a8576;letter-spacing:.01em;text-transform:none;margin:0}
.stat.dark .scap{color:#c9b88f}
.stat .sbig{font:600 33px var(--serif);color:#23382c;line-height:1.05;margin:10px 0 0}
.stat.dark .sbig{color:#f4efe2}
.stat .ssub{font:500 11.5px var(--sans);color:#a7a293;margin:4px 0 0;line-height:1.4}
.stat.dark .ssub{color:#bfd0c2}
.wk-bar{height:6px;margin:9px 0 0;background:rgba(201,184,143,.2);border-radius:4px;overflow:hidden}
.wk-bar>i{background:#c9b88f;border-radius:4px}
/* двухколоночный блок */
.ov-grid{grid-template-columns:1.55fr 1fr;gap:16px;margin-top:18px}
.ov-card{background:#fffefb;border:1px solid #ece8df;border-radius:16px;padding:22px 24px;box-shadow:0 6px 20px rgba(40,35,25,.05)}
.ov-side{display:flex;flex-direction:column;gap:16px;min-width:0}
.ov-head{display:flex;align-items:center;justify-content:space-between}
.ov-title{font:600 20px var(--serif);color:#23211c;margin:0}
.ov-link{font:600 12.5px var(--sans);color:#3f5a48;background:none;border:none;cursor:pointer;padding:0}
.ov-link:hover{color:#23382c}
.ov-les{display:flex;align-items:center;gap:16px;padding:13px 0;border-bottom:1px solid #f1ede3}
.ov-time{font:600 15px var(--serif);color:#23382c;width:52px;flex-shrink:0;font-variant-numeric:tabular-nums}
.ov-time-dt{width:auto;min-width:74px;display:flex;flex-direction:column;line-height:1.15}
.ov-time-dt b{font:600 14px var(--serif);color:#23382c;white-space:nowrap}
.ov-time-dt i{font:600 12.5px var(--sans);color:#6f6a5c;font-style:normal;margin-top:2px;white-space:nowrap;font-variant-numeric:tabular-nums}
.ov-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.ov-dot.ok{background:#5e8068}.ov-dot.wait{background:#c2703f}
.ov-les-name{font:600 14px var(--sans);color:#23211c;margin:0}
.ov-les-sub{font:500 12px var(--sans);color:#8a8576;margin:2px 0 0}
.ov-les-sub.empty{color:#b0a892;font-style:italic}
.ov-badge{font:600 11px var(--sans);border-radius:20px;padding:5px 11px;white-space:nowrap}
.ov-badge.ok{color:#5e8068;background:#eaf0ea}
.ov-badge.wait{color:#a85f30;background:#f7e9df}
.ov-pay{display:flex;align-items:center;justify-content:space-between;padding:0;border-bottom:none;margin-bottom:12px}
.ov-pay:last-child{margin-bottom:0}
.ov-pay-name{font:500 13.5px var(--sans);color:#23211c}
.ov-pay-amt{font:600 13.5px var(--sans);color:#5e8068;white-space:nowrap}
.ov-note-text{font:500 13.5px/1.6 var(--sans);color:#6b6657;margin:8px 0 0}
.ov-note-empty{font:500 13px var(--sans);color:#a7a293;margin:8px 0 0}
/* каскад появления */
.stats .stat{animation:dashUp .6s ease both}
.stats .stat:nth-child(1){animation-delay:.06s}.stats .stat:nth-child(2){animation-delay:.13s}
.stats .stat:nth-child(3){animation-delay:.2s}.stats .stat:nth-child(4){animation-delay:.27s}.stats .stat:nth-child(5){animation-delay:.34s}
.ov-grid>.ov-up{animation:dashUp .6s .38s ease both}
.ov-grid>.ov-side>.ov-card:nth-child(1){animation:dashUp .6s .44s ease both}
.ov-grid>.ov-side>.ov-card:nth-child(2){animation:dashUp .6s .5s ease both}

/* Обзор: карточки равного размера + левая карточка тянется по высоте правой колонки */
.stats{grid-template-columns:repeat(4,1fr)}
.stats>.stat{align-self:stretch}
.ov-grid{align-items:stretch}
.ov-card.ov-up{display:flex;flex-direction:column}
@media(max-width:900px){.stats{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.stats{grid-template-columns:1fr}}

/* ============ Фон кабинета + ширина контента — как у Dashboard.dc ============ */
.dash{background:repeating-linear-gradient(45deg,rgba(150,134,104,.05) 0 1px,transparent 1px 23px),repeating-linear-gradient(-45deg,rgba(150,134,104,.045) 0 1px,transparent 1px 23px),radial-gradient(120% 80% at 50% 0%,#faf8f2,#f1ede2);background-attachment:fixed}
.dash-main{max-width:1120px;padding:38px 32px 22px}
.ov-empty{font:500 13px var(--sans);color:#a7a293;padding:14px 0}
@media(max-width:880px){.dash-main,.dash-main.wide{max-width:100%;padding:18px 14px 96px}}

/* Обзор ученика: две карточки одного размера (ширина и высота) */
.ov-grid2{grid-template-columns:1fr 1fr}
.ov-grid2 .ov-side{flex:1;justify-content:stretch}
.ov-grid2 .ov-up,.ov-grid2 .ov-side>.ov-card{height:100%;box-sizing:border-box}

/* Футер с документами — компактнее и ниже (как у дизайнера) */
.footer{padding:14px 32px 18px;gap:6px 18px;justify-content:center;background:transparent;border-top:1px solid #ece8df;margin-top:8px}
.footer a{font:500 12px var(--sans);color:#8a8576;border-bottom:none}
.footer a:hover{color:#3f5a48}
/* Обзор: сначала приветствие, ниже дата */
.dash-hello{margin:0}
.dash-date{margin:6px 0 0}

/* вернуть прежний фон футера */
.footer{background:rgba(255,254,251,.75)}

/* ==================== РАСПИСАНИЕ (Schedule.dc) ==================== */
@keyframes schFadeUp{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}
@keyframes schEnter{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:none}}
/* смена недели — плавнее */
.sch-weekfade{animation:schFadeUp .8s cubic-bezier(.16,.7,.2,1) both}
/* вход в раздел — каскад секций (тулбар, легенда, сетка) как в обзоре */
#dashContent>#schBody{animation:none!important}
#schBody.sch-enter>*{animation:schEnter .8s cubic-bezier(.16,.7,.2,1) both}
#schBody.sch-enter>*:nth-child(1){animation-delay:.05s}
#schBody.sch-enter>*:nth-child(2){animation-delay:.17s}
#schBody.sch-enter>*:nth-child(3){animation-delay:.29s}

/* toolbar */
.sch-toolbar{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:16px;margin:0}
.sch-h1{margin:0;font:600 33px var(--serif);color:#23211c}
.sch-weeknav{margin-top:9px;display:flex;align-items:center;gap:8px}
.sch-navbtn{width:34px;height:34px;border-radius:10px;border:1px solid #dcd6c8;background:#fffefb;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#3f5a48;padding:0}
.sch-navbtn:hover{background:#f1ede3}
.sch-weeklabel{font:600 14.5px var(--sans);color:#23211c;min-width:172px;text-align:center;text-transform:capitalize}
.sch-tools-right{display:flex;align-items:center;gap:10px}
.sch-tz{display:flex;align-items:center;gap:7px;padding:8px 12px;border:1px solid #ece8df;border-radius:11px;background:#fffefb}
.sch-tz svg{flex-shrink:0}
.sch-tzlabel{font:500 12.5px var(--sans);color:#6b6657;white-space:nowrap}
.sch-addbtn{display:none;align-items:center;gap:8px;font:600 13.5px var(--sans);color:#fdfcf7;background:linear-gradient(120deg,#23382c,#2f4738);border:none;border-radius:12px;padding:11px 17px;cursor:pointer;box-shadow:0 8px 18px rgba(35,56,44,.2)}
.sch-addbtn:hover{transform:translateY(-1px)}

/* legend */
.sch-legend{margin-top:18px;display:flex;flex-wrap:wrap;gap:9px 18px;align-items:center}
.sch-legend .li{display:flex;align-items:center;gap:8px}
.sch-legend .sw{width:15px;height:15px;border-radius:4px;flex-shrink:0}
.sch-legend .tx{font:500 12px var(--sans);color:#6b6657}
.sw-free{border:1px dashed #cdc7b6;background:#fffefb}
.sw-booked{background:#eef0e9;border-left:3px solid #c2703f}
.sw-paid{background:repeating-linear-gradient(45deg,#cfe4d0 0 4px,#eef5ee 4px 8px);border:1px solid #b9d3bb}
.sw-sub{background:#23382c}
.sw-past{background:#f1efe9;border:1px solid #e8e3d8}

/* grid */
.sch-gridwrap{margin-top:18px;background:#fffefb;border:1px solid #ece8df;border-radius:16px;box-shadow:0 6px 22px rgba(40,35,25,.05);overflow:hidden}
.sch-scrollx{overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none}
.sch-scrollx::-webkit-scrollbar{width:0!important;height:0!important;display:none!important}
.sch-grid{display:grid;min-width:760px}
.sch-corner{border-right:1px solid #ece8df;border-bottom:1px solid #ece8df;background:#fbf9f3}
.sch-dhead{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:9px 0;border-right:1px solid #ece8df;border-bottom:1px solid #ece8df;background:#fbf9f3}
.sch-dhead.today{background:#f6efe7}
.sch-dhead.allpast{background:#f4f1ea}
.sch-dhead .dn{font:600 11px var(--sans);text-transform:uppercase;letter-spacing:.04em;color:#8a8576}
.sch-dhead.allpast .dn{color:#bdb7a6}
.sch-dhead .dd{font:600 18px var(--serif);color:#23211c}
.sch-dhead.today .dd{color:#c2703f}
.sch-dhead.allpast .dd{color:#b0aa99}
.sch-hourcol{border-right:1px solid #ece8df}
.sch-hourcell{height:60px;display:flex;justify-content:flex-end;padding:4px 8px 0 0;box-sizing:border-box}
.sch-hourcell span{font:500 10.5px var(--sans);color:#b0aa99}
.sch-daycol{position:relative;border-right:1px solid #ece8df}
.sch-slot{height:60px;border-bottom:1px solid #f1ede3;box-sizing:border-box;cursor:pointer;transition:background .15s}
.sch-slot[data-new]:hover{background:#f3f6f2}
.sch-slot.na{cursor:default}
.sch-slot.is-past{background:repeating-linear-gradient(45deg,rgba(150,134,104,.06) 0 5px,transparent 5px 10px),#f4f1ea;cursor:default;pointer-events:none}
.sch-ev{position:absolute;left:4px;right:4px;border-radius:9px;padding:6px 9px;box-sizing:border-box;cursor:pointer;overflow:hidden;display:flex;flex-direction:column;gap:1px;z-index:1;box-shadow:0 3px 9px rgba(40,35,25,.07);transition:transform .16s ease,box-shadow .16s ease,filter .16s ease}
.sch-ev:hover{transform:translateY(-2px);box-shadow:0 10px 22px rgba(35,56,44,.16);filter:saturate(1.05);z-index:5}
.sch-ev .et{font:700 10px/1.15 var(--sans);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sch-ev .en{font:600 11.5px/1.2 var(--sans);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sch-ev .es{font:500 10px/1.15 var(--sans);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* короткие окна (<1 ч): не дают тексту вылезать — минимальная высота и компактные отступы */
.sch-ev{min-height:38px;padding:4px 8px;gap:0}
/* компактный вариант для слотов <60 мин: только время, без темы/статуса, без переполнения */
.sch-ev-mini{min-height:0;padding:1px 7px;justify-content:center;border-left-width:3px;border-left-style:solid}
.sch-ev-mini .et{font-size:9.5px;line-height:1.1}
.sch-ev-mini .en,.sch-ev-mini .es{display:none}
.ev-free.sch-ev-mini{border-left-color:#5e8068}
.ev-sub.sch-ev-mini{border-left-color:#c9b88f}
.ev-paid.sch-ev-mini{border-left-color:#5e8068}
.ev-booked.sch-ev-mini{border-left-color:#c2703f}
.ev-past.sch-ev-mini{border-left-color:#b0aa99}
.ev-closed.sch-ev-mini{border-left-color:#c3bba8}
/* event visuals */
.ev-free{background:#fffefb;border:1px dashed #cdc7b6}
.ev-free .et{color:#8a8576}.ev-free .en{color:#3f5a48}.ev-free .es{color:#a7a293}
.ev-sub{background:#23382c;border:none}
.ev-sub .et{color:#c9b88f}.ev-sub .en{color:#f4efe2}.ev-sub .es{color:rgba(244,239,226,.72)}
.ev-paid{background:repeating-linear-gradient(45deg,#d4e8d5 0 7px,#eef5ee 7px 14px);border:1px solid #b9d3bb}
.ev-paid .et{color:#5e8068}.ev-paid .en{color:#23382c}.ev-paid .es{color:#5e7a64}
.ev-booked{background:#eef0e9;border:1px solid #dcd6c8;border-left:3px solid #c2703f}
.ev-booked .et{color:#a85f30}.ev-booked .en{color:#23211c}.ev-booked .es{color:#8a8576}
.ev-past{background:#f1efe9;border:1px solid #e8e3d8;opacity:.72}
.ev-past .et{color:#b0aa99}.ev-past .en{color:#9a9483}.ev-past .es{color:#b0aa99}
.ev-closed{background:#efece4;border:1px dashed #ddd6c6;cursor:not-allowed}
.ev-closed .et{color:#b0a892}.ev-closed .en{color:#b0a892}.ev-closed .es{color:#c3bba8}
/* reschedule mode */
.sch-grid.resch .sch-slot{pointer-events:none}
.sch-ev.resch-off{opacity:.32;pointer-events:none;box-shadow:none}
.sch-ev.resch-target{outline:2px solid #23382c;outline-offset:-2px;animation:reschpulse 1.4s ease-in-out infinite}
/* status badges */
.sch-badge{font:600 11px var(--sans);border-radius:20px;padding:5px 11px;white-space:nowrap;display:inline-block}
.bg-free{background:#eef0e9;color:#5e7a64}
.bg-sub{background:#23382c;color:#f4efe2}
.bg-paid{background:#e7f0e7;color:#3f6b4c}
.bg-booked{background:#f7e9df;color:#a85f30}
.bg-past{background:#efece4;color:#a7a293}

/* mobile day tabs + list */
.sch-mobile{display:none;margin-top:18px;flex-direction:column;gap:14px}
.sch-daytabs{display:flex;gap:5px}
.sch-daytab{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:2px;padding:9px 2px;border-radius:12px;cursor:pointer;border:1px solid #ece8df;background:#fffefb;color:#6b6657;transition:all .2s ease}
.sch-daytab .d{font:600 10px var(--sans);text-transform:uppercase;letter-spacing:.02em}
.sch-daytab .n{font:600 16px var(--serif)}
.sch-daytab.active{border-color:#23382c;background:#23382c;color:#f4efe2}
.sch-daylist{display:flex;flex-direction:column;gap:11px;min-height:120px}
.sch-empty{text-align:center;padding:40px 20px;color:#a7a293;font:500 13.5px var(--sans)}
.sch-mcard{display:flex;align-items:center;gap:13px;background:#fffefb;border:1px solid #ece8df;border-left:4px solid #cdc7b6;border-radius:14px;padding:14px 16px;cursor:pointer;box-shadow:0 4px 14px rgba(40,35,25,.05)}
.sch-mcard.past{background:#f6f4ee}
.sch-mcard.ev-booked{border-left-color:#c2703f}
.sch-mcard.ev-paid{border-left-color:#5e8068}
.sch-mcard.ev-sub{border-left-color:#23382c}
.sch-mcard.ev-past{border-left-color:#cdc7b6}
.sch-mcard .mt{font:700 15px var(--serif);color:#23382c;width:54px;flex-shrink:0}
.sch-mcard.past .mt{color:#b0aa99}
.sch-mcard .mb{flex:1;min-width:0}
.sch-mcard .mn{font:600 14px var(--sans);color:#23211c}
.sch-mcard.past .mn{color:#9a9483}
.sch-mcard .ms{font:500 12px var(--sans);color:#8a8576;margin-top:1px}

/* ==================== ПАНЕЛЬ ДЕТАЛЕЙ ==================== */
.sch-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:120;background:rgba(20,30,24,.32);opacity:0;pointer-events:none;transition:opacity .35s ease}
.sch-backdrop.is-open{opacity:1;pointer-events:auto}
.sch-detail{position:fixed;top:0;right:0;bottom:0;width:380px;max-width:92%;z-index:121;background:#fffefb;box-shadow:-18px 0 50px rgba(20,30,24,.2);display:flex;flex-direction:column;transform:translateX(106%);transition:transform .42s cubic-bezier(.4,0,.2,1)}
.sch-detail.is-open{transform:none}
.sch-detail-head{display:flex;align-items:center;justify-content:space-between;padding:20px 22px;border-bottom:1px solid #ece8df;flex-shrink:0}
.sch-detail-head .t{font:600 18px var(--serif);color:#23211c}
.sch-xbtn{width:34px;height:34px;border-radius:10px;border:1px solid #ece8df;background:#fffefb;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#6b6657;padding:0;flex-shrink:0}
.sch-xbtn:hover{background:#f6f3ec}
.sch-detail-body{padding:22px;display:flex;flex-direction:column;gap:18px;flex:1;overflow-y:auto}
.sch-dperson{display:flex;align-items:center;gap:13px}
.sch-avatar{width:48px;height:48px;border-radius:50%;background:linear-gradient(135deg,#2f4738,#23382c);display:flex;align-items:center;justify-content:center;font:600 16px var(--sans);color:#f4efe2;flex-shrink:0}
.sch-dperson .nm{font:600 17px var(--sans);color:#23211c}
.sch-dperson .sb{font:500 12.5px var(--sans);color:#8a8576}
.sch-hr{height:1px;background:#f1ede3}
.sch-drows{display:flex;flex-direction:column;gap:13px}
.sch-drow{display:flex;align-items:center;gap:11px}
.sch-drow svg{flex-shrink:0}
.sch-drow .v{font:500 13.5px var(--sans);color:#23211c}
.sch-dnote{margin:0;font:500 12.5px/1.5 var(--sans);color:#8a8576}
.sch-detail-foot{margin-top:auto;padding-top:8px;display:flex;gap:10px;flex-wrap:wrap}
.sch-btn-out{flex:1;font:600 13.5px var(--sans);color:#3f5a48;background:#fffefb;border:1px solid #cfc8b6;border-radius:12px;padding:13px;cursor:pointer;transition:background .15s,border-color .15s}
.sch-btn-out:hover{background:#f1ede3;border-color:#c9b88f}
.sch-btn-clay{flex:1;font:600 13.5px var(--sans);color:#fff;background:#c2703f;border:none;border-radius:12px;padding:13px;cursor:pointer;box-shadow:0 6px 16px rgba(194,112,63,.25);transition:background .15s,transform .15s}
.sch-btn-clay:hover{background:#b1521f;transform:translateY(-1px)}
.sch-btn-solid{flex:1;display:flex;align-items:center;justify-content:center;gap:7px;font:600 13.5px var(--sans);color:#fdfcf7;background:linear-gradient(120deg,#23382c,#2f4738);border:none;border-radius:12px;padding:13px;cursor:pointer;box-shadow:0 8px 18px rgba(35,56,44,.22);transition:transform .15s}
.sch-btn-solid:hover{transform:translateY(-1px)}
/* booking extras inside panel */
.sch-bkopts{display:flex;gap:7px;flex-wrap:wrap}
.sch-check{display:flex;align-items:flex-start;gap:9px;font:500 12.5px/1.4 var(--sans);color:#5e5a4e;cursor:pointer}
.sch-check input{margin-top:2px}
.sch-terms .sched-hint{margin:0}

/* ==================== МОДАЛКА «НОВОЕ ОКНО» ==================== */
.sch-addwrap{position:fixed;top:0;right:0;bottom:0;left:0;z-index:130;background:rgba(18,28,21,.42);display:flex;align-items:center;justify-content:center;padding:20px;box-sizing:border-box;opacity:0;pointer-events:none;transition:opacity .3s ease,backdrop-filter .4s ease,-webkit-backdrop-filter .4s ease}
.sch-addwrap.is-open{opacity:1;pointer-events:auto;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}
.sch-addcard{width:444px;max-width:100%;background:#fffefb;border-radius:20px;box-shadow:0 30px 80px rgba(18,28,21,.34);overflow:hidden;transform:translateY(14px) scale(.98);transition:transform .34s cubic-bezier(.3,1,.45,1)}
.sch-addwrap.is-open .sch-addcard{transform:none}
.sch-addhandle{display:none;padding:11px 0 0}
.sch-addhandle>div{width:42px;height:4px;border-radius:3px;background:#e2dccd;margin:0 auto}
.sch-addhead{display:flex;align-items:center;gap:13px;padding:20px 22px 14px}
.sch-addicon{width:44px;height:44px;border-radius:13px;background:linear-gradient(135deg,#eef0e9,#e3eadf);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.sch-addhead .tt{font:600 19px var(--serif);color:#23211c;line-height:1.15}
.sch-addhead .ss{font:500 12px var(--sans);color:#8a8576}
.sch-addbody{padding:6px 22px 4px;display:flex;flex-direction:column;gap:18px}
.sch-daychip{display:flex;align-items:center;gap:11px;padding:13px 15px;background:#f6f3ec;border:1px solid #ece8df;border-radius:13px;font:600 14px var(--sans);color:#23211c}
.sch-times{display:flex;flex-direction:column;gap:14px}
.sch-hm{display:flex;align-items:center;gap:8px}
.sch-hm .sch-selwrap{flex:1}
.sch-colon{font:600 15px var(--sans);color:#8a8576}
.sch-tfield{flex:1;display:flex;flex-direction:column;gap:7px}
.sch-tfield label{font:600 12px var(--sans);color:#3a382f}
.sch-selwrap{position:relative}
.sch-selwrap select{width:100%;box-sizing:border-box;padding:12px 36px 12px 14px;font:500 14px var(--sans);color:#23211c;background:#fffefb;border:1px solid #dcd6c8;border-radius:11px;cursor:pointer;appearance:none;-webkit-appearance:none;-moz-appearance:none;outline:none}
.sch-selwrap select:focus{border-color:#23382c;box-shadow:0 0 0 3px rgba(35,56,44,.1)}
.sch-selwrap .chev{position:absolute;right:12px;top:50%;transform:translateY(-50%);pointer-events:none;display:flex}
.sch-addnote{display:flex;align-items:center;gap:8px;padding:2px 2px 0;font:500 11.5px var(--sans);color:#a7a293}
.sch-addnote svg{flex-shrink:0}
.sch-repwrap{display:flex;flex-direction:column;gap:9px}
.sch-repwrap>label{font:600 12px var(--sans);color:#3a382f}
.sch-repbtns{display:flex;gap:7px;flex-wrap:wrap}
.sch-repbtn{font:500 12px var(--sans);cursor:pointer;padding:9px 13px;border-radius:10px;border:1px solid #dcd6c8;background:#fffefb;color:#6b6657;transition:all .15s ease}
.sch-repbtn:hover{border-color:#c9b88f}
.sch-repbtn.active{font-weight:600;border-color:#23382c;background:#23382c;color:#f4efe2}
.sch-addfoot{display:flex;gap:10px;padding:18px 22px 22px}
.sch-addfoot .sch-btn-solid{flex:1.5}

/* ==================== СИСТЕМНЫЕ УВЕДОМЛЕНИЯ ==================== */
@keyframes sysBar{from{width:100%}to{width:0}}
@keyframes sysIconPop{0%{transform:scale(.6);opacity:0}60%{transform:scale(1.12)}100%{transform:scale(1);opacity:1}}
@keyframes sysModalIn{from{opacity:0;transform:translateY(10px) scale(.97)}to{opacity:1;transform:none}}
@keyframes sysFade{from{opacity:0}to{opacity:1}}
@keyframes sysToastIn{from{opacity:0;transform:translateX(120%)}to{opacity:1;transform:none}}
@keyframes sysToastOut{from{opacity:1;transform:none}to{opacity:0;transform:translateX(120%)}}
@keyframes sysToastInM{from{opacity:0;transform:translateY(-130%)}to{opacity:1;transform:none}}
@keyframes sysToastOutM{from{opacity:1;transform:none}to{opacity:0;transform:translateY(-130%)}}
.sys-toast{position:fixed;top:calc(18px + env(safe-area-inset-top));right:calc(18px + env(safe-area-inset-right));z-index:250;width:330px;max-width:calc(100% - 28px);background:#fffefb;border:1px solid #ece8df;border-radius:14px;box-shadow:0 18px 46px rgba(20,30,24,.2);overflow:hidden;animation:sysToastIn .44s cubic-bezier(.2,.9,.3,1) both}
.sys-toast.out{animation:sysToastOut .38s ease forwards}
.sys-toast .row{display:flex;align-items:flex-start;gap:12px;padding:14px 12px 13px 15px}
.sys-toast .ic{width:38px;height:38px;border-radius:11px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.sys-toast .ic.ok{background:#e7f0e7}
.sys-toast .ic.err{background:#f7e3d8}
.sys-toast .tt{font:600 13.5px var(--sans);color:#23211c}
.sys-toast .ms{font:500 12px/1.4 var(--sans);color:#6b6657;margin-top:2px;word-break:break-word}
.sys-toast .x{width:28px;height:28px;flex-shrink:0;border-radius:8px;border:none;background:transparent;color:#a7a293;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s}
.sys-toast .x:hover{background:#efece4;color:#6b6657}
.sys-toast .bar{height:3px;background:#eef0e9}
.sys-toast .bar>i{display:block;height:100%;background:linear-gradient(90deg,#5e8068,#2f6b46);animation:sysBar 5.2s linear forwards}
.sys-toast.err .bar>i{background:linear-gradient(90deg,#d99a6c,#c2703f)}
.sys-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:145;background:rgba(20,30,24,.34);backdrop-filter:blur(1.5px);-webkit-backdrop-filter:blur(1.5px);animation:sysFade .25s ease both}
.sys-modalwrap{position:fixed;top:0;right:0;bottom:0;left:0;z-index:146;display:flex;align-items:center;justify-content:center;padding:24px;box-sizing:border-box}
.sys-modal{position:relative;width:400px;max-width:calc(100% - 32px);background:#fffefb;border-radius:18px;box-shadow:0 30px 80px rgba(18,28,21,.32);overflow:hidden;animation:sysModalIn .32s cubic-bezier(.3,1,.45,1) both}
.sys-cf{padding:28px 26px 24px}
.sys-cf-top{display:flex;flex-direction:column;align-items:center;text-align:center}
.sys-cf-ic{width:60px;height:60px;border-radius:50%;background:#f7efe3;display:flex;align-items:center;justify-content:center;animation:sysIconPop .4s cubic-bezier(.3,1.3,.5,1) both}
.sys-cf h2{margin:16px 0 0;font:600 21px var(--serif);color:#23211c}
.sys-cf p{margin:8px 0 0;font:500 13.5px/1.55 var(--sans);color:#8a8576;max-width:320px}
.sys-cf-acts{display:flex;gap:10px;margin-top:22px}

/* инфо-плашка (push-banner) в стиле макета */
.push-banner{display:flex;align-items:center;gap:13px;background:#fffefb;border:1px solid #d8e0d2;border-radius:14px;padding:12px 16px;box-shadow:0 6px 20px rgba(40,35,25,.07);margin:0 0 18px}
.push-banner .pb-ic{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:10px;background:#e7f0e7;color:#2f6b46;flex-shrink:0}
.push-banner .pb-t{margin:0;font:600 13.5px var(--sans);color:#23211c}
.push-banner .pb-s{margin:1px 0 0;font:500 11.5px var(--sans);color:#8a8576;line-height:1.45}
.push-banner .pb-on{border:1px solid #cfc8b6;background:#fffefb;color:#3f5a48;border-radius:10px;padding:8px 14px;font:600 12px var(--sans);cursor:pointer}
.push-banner .pb-on:hover{background:#f1ede3;border-color:#c9b88f}

/* ==================== АДАПТИВ РАСПИСАНИЯ ==================== */
/* без горизонтального скролла страницы (clip не ломает sticky-шапку) */
html,body{overflow-x:clip}
/* мобайл: полностью прячем полосы прокрутки */
@media(max-width:900px){
  html,body,.dash,.dash-main,.auth-screen,.sch-scrollx,.modal-body{scrollbar-width:none;-ms-overflow-style:none}
  html::-webkit-scrollbar,body::-webkit-scrollbar,.dash::-webkit-scrollbar,.dash-main::-webkit-scrollbar,.auth-screen::-webkit-scrollbar,.sch-scrollx::-webkit-scrollbar,.modal-body::-webkit-scrollbar{width:0!important;height:0!important;display:none!important}
}
@media(max-width:1040px){.sch-h1{font-size:28px}}
@media(max-width:880px){
  .sch-grid{display:none}
  .sch-mobile{display:flex}
  .sch-tz{display:inline-flex;align-self:flex-start}
  .sch-legend{display:none}
  .sch-tools-right{flex-direction:column;align-items:flex-start;gap:8px}
  .sch-addbtn{display:inline-flex;white-space:nowrap;justify-content:center;align-self:flex-start}
  .sch-h1{font-size:26px}
  .sch-gridwrap{border:none;background:transparent;box-shadow:none;margin-top:0}
  /* компактная шапка: убираем подпись пользователя, чтобы не переполнялась */
  .user-tx{display:none}
  .nav-right{gap:6px}
  /* панель деталей → bottom sheet */
  .sch-detail{top:auto;right:0;left:0;width:100%;max-width:100%;height:auto;max-height:86%;border-radius:22px 22px 0 0;box-shadow:0 -18px 50px rgba(20,30,24,.2);transform:translateY(105%)}
  .sch-detail.is-open{transform:none}
  /* модалка → bottom sheet */
  .sch-addwrap{align-items:flex-end;padding:0}
  .sch-addcard{width:100%;max-width:100%;border-radius:24px 24px 0 0;box-shadow:0 -22px 60px rgba(18,28,21,.28);transform:translateY(100%);transition:transform .5s cubic-bezier(.16,1,.3,1)}
  .sch-addwrap.is-open .sch-addcard{transform:none}
  .sch-addhandle{display:block}
}
@media(max-width:560px){
  .sys-toast{top:calc(14px + env(safe-area-inset-top));right:14px;left:14px;width:auto;animation:sysToastInM .44s cubic-bezier(.2,.9,.3,1) both}
  .sys-toast.out{animation:sysToastOutM .38s ease forwards}
}
@media (prefers-reduced-motion:reduce){
  .sch-ev,.sys-toast,.sys-modal,.sys-cf-ic{animation:none!important}
  .sch-detail,.sch-addcard,.sch-backdrop,.sch-addwrap{transition:none!important}
}

/* ============================================================
   Мобильная адаптация по макетам дизайнера (v44)
   Вход/регистрация/восстановление — «Восстановление пароля.dc» (≤900px)
   Шапка, таб-бар, уведомления, документы — «Dashboard.dc» (860/620)
   ============================================================ */
@keyframes sheetUp{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}

/* ---------- auth: мобильная шапка-бренд ---------- */
.auth-mhead{display:none}
@media (max-width:900px){
  /* ВХОД/РЕГИСТРАЦИЯ: липкий зелёный hero + карточка формы (Login Animated.dc) */
  .auth-screen{display:block;position:relative;height:100dvh;min-height:100dvh;overflow-y:auto;overflow-x:hidden;background:#15261c;scrollbar-width:none;-ms-overflow-style:none}
  .auth-screen::-webkit-scrollbar{width:0;height:0;display:none}
  .auth-hero{display:flex!important;position:sticky;top:0;height:100dvh;min-height:100dvh;margin:0;padding:0;flex-direction:column;align-items:center;justify-content:center;overflow:hidden}
  /* фон без зумирования/движения — всегда в одном положении */
  .auth-hero .hero-art{display:block!important;position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;transform:none!important}
  .hero-inner{position:relative;z-index:2;flex:none;justify-content:center;align-items:center;text-align:center;gap:16px;padding:0 32px;opacity:calc(1 - var(--ahp,0)*1.7)}
  .hero-logo{flex-direction:column;align-items:center;gap:12px}
  .hero-logo-ic{width:66px;height:66px;border-radius:18px}
  .hero-logo-ic svg{width:34px;height:34px}
  .hero-logo-tx{align-items:center;text-align:center;line-height:1.1}
  .hero-logo-tx b{font-size:34px!important}
  .hero-logo-tx i{font-size:13px!important;letter-spacing:.26em}
  .hero-mid{flex:none;margin:0;width:100%;text-align:center}
  .hero-h{font-size:34px!important;line-height:1.22;text-align:center;max-width:340px;margin:12px auto 0}
  .hero-list,.hero-quote{display:none!important}
  /* компактная «шапка» с цитатой, проявляется при скролле (heroCompact) — по центру */
  .auth-mtop{display:flex;position:fixed;top:0;left:0;right:0;z-index:31;flex-direction:column;align-items:center;justify-content:center;gap:11px;height:calc(168px + env(safe-area-inset-top));padding:calc(24px + env(safe-area-inset-top)) 24px 0;box-sizing:border-box;pointer-events:none;text-align:center;background:linear-gradient(to bottom,rgba(17,28,21,.95) 62%,rgba(17,28,21,0));opacity:calc((var(--ahp,0) - 0.12) * 2.6)}
  /* регистрация: убираем цитату, шапка компактнее (не перекрывает поля) */
  .auth-screen.auth-register .auth-mtop{height:calc(118px + env(safe-area-inset-top));gap:0;padding-top:calc(18px + env(safe-area-inset-top))}
  .auth-screen.auth-register .auth-mtop-sub{display:none}
  .auth-mtop-row{justify-content:center}
  .auth-mtop-tx{text-align:center}
  .auth-mtop-row{display:flex;align-items:center;gap:12px}
  .auth-screen.auth-recover .auth-mtop{display:none!important}
  .auth-mtop-ic{width:56px;height:56px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
  .auth-mtop-ic svg{width:56px;height:56px;display:block}
  .auth-mtop-ic svg{width:50px;height:50px}
  .auth-mtop-tx{display:flex;flex-direction:column;line-height:1.08;text-align:center}
  .auth-mtop-tx b{font:600 22px var(--serif);color:#f4efe2}
  .auth-mtop-tx i{font-style:normal;font:600 9px var(--sans);color:#c9b88f;letter-spacing:.24em;text-transform:uppercase}
  .auth-mtop-sub{font:500 15px var(--sans);color:rgba(244,239,226,.88);max-width:320px;line-height:1.3}
  /* вход: крупнее шрифт в компактной шапке при скролле */
  .auth-screen:not(.auth-register):not(.auth-recover) .auth-mtop-tx b{font-size:30px}
  .auth-screen:not(.auth-register):not(.auth-recover) .auth-mtop-sub{font-size:21px}
  .auth-mtop-ic{width:50px;height:50px}
  .auth-mtop-ic svg{width:58px;height:58px}
  .auth-mtop-ic svg{width:22px;height:22px}
  .auth-scrollhint{position:absolute;left:0;right:0;bottom:calc(26px + env(safe-area-inset-bottom));z-index:2;display:flex;flex-direction:column;align-items:center;gap:8px;opacity:calc(1 - var(--ahp,0)*4)}
  .auth-scrollhint span{font:600 11px var(--sans);color:rgba(201,184,143,.85);letter-spacing:.12em;text-transform:uppercase}
  .auth-scrollhint svg{animation:heroBob 1.8s ease-in-out infinite}
  .auth-panel{display:block;position:relative;z-index:20;width:100%;max-width:none;margin:-28px 0 0;background:#fffefb;border-radius:28px 28px 0 0;padding:24px 20px calc(30px + env(safe-area-inset-bottom));box-shadow:0 -16px 44px rgba(9,18,13,.32)}
  .auth-panel::before{content:"";display:block;width:36px;height:4px;border-radius:3px;background:#e4dfd3;margin:2px auto 20px}
  .auth-form{max-width:400px;margin:0 auto}
  .auth-mhead{display:none!important}
  #form-login .title,#form-register .title{margin-top:0}
  /* ВОССТАНОВЛЕНИЕ: полностью белый экран с мини-логотипом (скрины 3–4) */
  .auth-screen.auth-recover{background:#fffefb;height:auto;min-height:100dvh;overflow-y:auto}
  .auth-screen.auth-recover .auth-hero{display:none!important}
  .auth-screen.auth-recover .auth-panel{margin-top:0;border-radius:0;box-shadow:none;padding:calc(28px + env(safe-area-inset-top)) 18px calc(36px + env(safe-area-inset-bottom))}
  .auth-screen.auth-recover .auth-panel::before{display:none}
  .auth-screen.auth-recover .auth-mhead{display:flex!important;flex-direction:column;align-items:center;gap:12px;margin-bottom:8px;animation:rpUp .5s .04s ease both}
  .auth-mhead-ic{width:52px;height:52px;display:flex;align-items:center;justify-content:center}
  .auth-mhead-ic svg{width:52px;height:52px}
  .auth-mhead-tx{display:flex;flex-direction:column;align-items:center;line-height:1.1}
  .auth-mhead-tx span{font:600 18px var(--serif);color:#23382c}
  .auth-mhead-tx i{font-style:normal;font:600 9px var(--sans);color:#a79a76;letter-spacing:.22em;text-transform:uppercase}
}

/* ---------- шапка кабинета (Dashboard.dc ≤860 / ≤620) ---------- */
#navLogout .exit-ic{display:none}
#navLogout .exit-tx{display:inline}
@media (max-width:860px){
  .topnav{padding:10px 18px;gap:12px;position:sticky;top:0;z-index:55}
  .nav{display:none!important}
}
@media (max-width:620px){
  /* иконка профиля (аватар) остаётся видимой, скрыт только текст */
  .user-chip{display:flex!important}
  .user-tx{display:none!important}
  #avatar{width:38px;height:38px}
  #navLogout .exit-tx{display:none}
  #navLogout .exit-ic{display:inline-flex}
  #navLogout{width:40px;height:40px;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:11px}
  /* панель уведомлений → шторка снизу */
  .bell-panel{position:fixed;left:8px;right:8px;bottom:calc(72px + env(safe-area-inset-bottom));top:auto;width:auto;max-width:none;max-height:72vh;border-radius:18px;transform-origin:bottom center;z-index:70}
  .bell-back{position:fixed;top:0;right:0;bottom:0;left:0;z-index:69;background:rgba(20,30,24,.34)}
}
.bell-back{display:none}
@media (max-width:620px){.bell-back{display:block}}

/* ---------- нижний таб-бар (Dashboard.dc) ---------- */
.tabbar{display:none}
@media (max-width:860px){
  .tabbar{position:fixed;left:0;right:0;bottom:0;z-index:65;display:flex;align-items:stretch;height:calc(64px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:#fffefb;border-top:1px solid #ece8df;box-shadow:0 -6px 22px rgba(40,35,25,.07)}
  .dash-main,.dash-main.wide{padding-bottom:18px}
  .footer{padding-top:14px;padding-bottom:calc(72px + env(safe-area-inset-bottom));padding-left:20px;padding-right:20px;gap:6px 16px}
}
.tb-ind{position:absolute;top:0;left:0;height:3px;display:flex;justify-content:center;pointer-events:none;transition:transform .32s cubic-bezier(.5,0,.2,1)}
.tb-ind i{width:30px;height:3px;border-radius:0 0 3px 3px;background:#23382c}
.tb-tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border:none;background:transparent;cursor:pointer;padding:0;color:#a39e8f;transition:color .25s ease;font:600 10px var(--sans)}
.tb-tab.on{color:#23382c}
.tb-tab span{font:600 10px var(--sans)}
.tb-back{position:fixed;left:0;right:0;top:0;bottom:calc(64px + env(safe-area-inset-bottom));z-index:64;background:rgba(20,30,24,.2)}
.tb-sheet{position:fixed;right:10px;bottom:calc(74px + env(safe-area-inset-bottom));z-index:66;background:#fffefb;border:1px solid #ece8df;border-radius:16px;padding:7px;box-shadow:0 16px 44px rgba(20,30,24,.26);display:flex;flex-direction:column;gap:2px;min-width:214px;animation:sheetUp .24s ease both}
.tb-sheet button{display:flex;align-items:center;gap:12px;width:100%;border:none;background:transparent;cursor:pointer;padding:11px 16px 11px 13px;border-radius:11px;color:#3a382f;font:500 13.5px var(--sans);transition:background .2s ease;text-align:left}
.tb-sheet button.on{background:#eef0e9;color:#23382c;font-weight:600}
@media (prefers-reduced-motion:reduce){.tb-sheet{animation:none}.tb-ind{transition:none}}

/* ---------- документы и подвал: в 2 строки (по 2 ссылки) ≤760 ---------- */
@media (max-width:760px){
  .footer{flex-direction:row;flex-wrap:wrap;justify-content:center;align-items:flex-start;gap:12px 16px}
  .footer a{flex:0 0 calc(50% - 10px);text-align:center;font-size:11.5px;line-height:1.35}
}

/* ==================== ЗАГРУЗОЧНЫЙ ЭКРАН (LoadingScreen.dc) ==================== */
@keyframes lsPulse{0%,100%{transform:scale(.78);opacity:.4}50%{transform:scale(1.34);opacity:1}}
@keyframes lsSoft{0%,100%{transform:scale(1);opacity:.92}50%{transform:scale(1.05);opacity:1}}
.ls{position:fixed;top:0;right:0;bottom:0;left:0;z-index:300;display:flex;align-items:center;justify-content:center;overflow:hidden;background:radial-gradient(125% 120% at 50% 38%,#28412f,#13241a);opacity:0;transition:opacity .5s ease}
.ls.in{opacity:1}
.ls.out{opacity:0;transform:scale(1.04);transition:opacity .6s ease,transform .7s ease}
.ls-bg{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden}
.ls-orb{position:absolute;border-radius:50%;filter:blur(46px)}
.ls-orb1{width:420px;height:420px;background:radial-gradient(circle,rgba(214,196,150,.42),transparent 68%);top:6%;left:12%;animation:lsPulse 5s ease-in-out infinite}
.ls-orb2{width:380px;height:380px;background:radial-gradient(circle,#3c5e48,transparent 66%);bottom:4%;right:10%;animation:lsPulse 6.5s ease-in-out infinite}
.ls-orb3{width:280px;height:280px;background:radial-gradient(circle,rgba(202,114,64,.3),transparent 64%);bottom:24%;left:24%;animation:lsPulse 7.5s ease-in-out infinite}
.ls-stack{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;gap:40px}
.ls-brand{display:flex;flex-direction:column;align-items:center;gap:20px;animation:lsSoft 2s ease-in-out infinite}
.ls-iconbox{width:78px;height:78px;display:flex;align-items:center;justify-content:center;filter:drop-shadow(0 0 48px rgba(201,184,143,.28))}
.ls-iconbox svg{width:78px;height:78px;display:block}
.ls-tx{display:flex;flex-direction:column;align-items:center;gap:5px}
.ls-title{font:600 40px var(--serif);color:#f4efe2;margin:0}
.ls-sub{font:600 13px var(--sans);color:#c9b88f;letter-spacing:.28em;text-transform:uppercase}
.ls-text{font:500 16px var(--sans);color:rgba(244,239,226,.66);letter-spacing:.04em}
@media(max-width:460px){
  .ls-iconbox{width:66px;height:66px}
  .ls-iconbox svg{width:66px;height:66px}
  .ls-title{font-size:25px}.ls-sub{font-size:10px}.ls-text{font-size:13px}.ls-stack{gap:30px}
}


/* ==================== ОБЗОР: карточки профиля/уведомлений ==================== */
#ovTop{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px;margin:0 0 18px}
#ovTop:empty{display:none;margin:0}
.ov-mcard{display:flex;align-items:center;gap:13px;background:#fbf9f3;border:1px solid #ece8df;border-radius:16px;padding:15px 17px}
.ov-mprof{cursor:pointer}
/* на ПК карточку «Профиль заполнен на X%» на «Обзоре» не показываем (остаётся на мобильных) */
@media(min-width:861px){.ov-mprof{display:none!important}}
.ov-mprof .ov-mring{width:52px;height:52px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:conic-gradient(#23382c calc(var(--pct,0)*1%),#e7e2d5 0)}
.ov-mprof .ov-mring b{width:40px;height:40px;border-radius:50%;background:#fbf9f3;display:flex;align-items:center;justify-content:center;font:700 13px var(--sans);color:#23382c}
.ov-mtx{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.ov-mtx b{font:600 14px var(--sans);color:#23211c;line-height:1.25}
.ov-mtx span{font:500 12px var(--sans);color:#8a8576;line-height:1.35}
.ov-mbtn{flex-shrink:0;font:600 12.5px var(--sans);color:#5e8068;white-space:nowrap}
.ov-mnotify{background:#fffefb}
.ov-mnic{width:42px;height:42px;border-radius:11px;background:#e7f0e7;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.ov-mnbtn{flex-shrink:0;border:none;cursor:pointer;font:600 12.5px var(--sans);color:#fdfcf7;background:linear-gradient(120deg,#23382c,#2f4738);border-radius:11px;padding:11px 18px;white-space:nowrap;box-shadow:0 8px 18px rgba(35,56,44,.2);transition:transform .15s}
.ov-mnbtn:hover{transform:translateY(-1px)}
.ov-mnx{flex-shrink:0;width:28px;height:28px;border-radius:8px;border:1px solid #ece8df;background:#fffefb;color:#a7a293;font:400 18px/1 var(--sans);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s}
.ov-mnx:hover{background:#f3efe6;color:#3a382f}
@media(max-width:900px){
  #ovTop{grid-template-columns:1fr;gap:12px;margin:0 0 14px}
  .ov-mnotify{flex-wrap:wrap}
  .ov-mnbtn{flex:1 0 100%;margin-top:6px;padding:12px}
}

/* ==================== ПРОФИЛЬ (Профиль.dc) ==================== */
.prof-card,.pm-card{background:#fffefb;border:1.5px solid #5e8068;border-radius:18px;box-shadow:0 6px 20px rgba(40,35,25,.05)}
.prof-card{padding:22px 24px}
.prof-h{font:600 18px var(--serif);color:#23211c;margin:0 0 16px}
.prof-card .cap2{display:block;font:600 12px var(--sans);color:#3a382f;text-transform:none;letter-spacing:0;margin:0 0 7px}
.prof-inp{width:100%;box-sizing:border-box;background:#fbfaf5;border:1px solid #dcd6c8;border-radius:12px;padding:12px 14px;font:600 14px var(--sans);color:#23211c;outline:none;margin:0 0 14px;transition:border-color .16s,background .16s}
.prof-inp:focus{border-color:#7fa07f;background:#fff}
.prof-wrap{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start;margin-top:16px}
.prof-card .btn-add{background:linear-gradient(120deg,#23382c,#2f4738);border-radius:11px;padding:0 22px;height:44px;font:600 13.5px var(--sans);box-shadow:0 6px 16px rgba(35,56,44,.18)}
.prof-card .btn-add:hover{background:linear-gradient(120deg,#23382c,#2f4738);transform:translateY(-1px)}
.prof-login{text-align:center;font:500 12px var(--sans);color:#a7a293;margin:18px 0 0}
/* completeness */
.pm-card{display:flex;align-items:center;gap:22px;padding:22px 26px;margin:0 0 16px}
.pm-ring{position:relative;width:74px;height:74px;flex-shrink:0;border-radius:50%;background:conic-gradient(#5e8068 calc(var(--pct,0)*3.6deg),#eef0e9 0)}
.pm-ring b{position:absolute;top:7px;right:7px;bottom:7px;left:7px;border-radius:50%;background:#fffefb;display:flex;align-items:center;justify-content:center;font:700 18px var(--serif);color:#23382c}
.pm-ring b i{font:700 10px var(--sans);font-style:normal;margin-left:1px}
.pm-info{flex:1;min-width:0}
.pm-big{display:block;font:600 18px var(--serif);color:#23211c}
.pm-miss,.pm-ok{display:block;font:500 12.5px var(--sans);color:#8a8576;margin-top:3px}
.pm-bar{margin-top:13px;height:9px;max-width:none;border-radius:6px;background:#eef0e9;overflow:hidden}
.pm-bar>i{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,#3f6b4c,#5e8068)}
.pr-chips{display:flex;flex-wrap:wrap;gap:7px;margin-top:14px}
.pr-chip{display:inline-flex;align-items:center;gap:5px;font:600 11.5px var(--sans);border-radius:9px;padding:5px 10px}
.pr-chip.on{color:#2f6b46;background:#eef5ec;border:1px solid #cfe0cb}
.pr-chip.off{color:#8a8576;background:#f3f1ea;border:1px solid #e4ddcd}
/* hero avatar */
.prof-ava-card{display:flex;align-items:center;gap:24px;margin:16px 0}
.prof-av-big{width:96px;height:96px;border-radius:50%;background:linear-gradient(135deg,#2f4738,#23382c);display:flex;align-items:center;justify-content:center;font:600 34px var(--serif);color:#f4efe2;box-shadow:0 8px 22px rgba(35,56,44,.22);background-size:cover;background-position:center;flex-shrink:0}
.prof-av-name{font:600 25px var(--serif);color:#23211c;margin:0}
.prof-av-hint{font:500 11px var(--sans);color:#a7a293;margin:8px 0 0}
@media(max-width:880px){.prof-wrap{grid-template-columns:1fr}.prof-ava-card{flex-direction:column;text-align:center}}

/* ==================== ПАНЕЛЬ УВЕДОМЛЕНИЙ (мобайл, шторка снизу) ==================== */
@keyframes bellUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}
@media(max-width:860px){
  .bell-panel{position:fixed;left:0;right:0;bottom:0;top:auto;width:auto;max-width:none;max-height:76vh;min-height:220px;border-radius:22px 22px 0 0;z-index:80;box-shadow:0 -14px 48px rgba(20,30,24,.32);padding-bottom:calc(8px + env(safe-area-inset-bottom));animation:bellUp .32s cubic-bezier(.2,.8,.3,1) both}
  .bell-panel .bell-head{border-radius:22px 22px 0 0;font-size:17px;padding:17px 18px}
  .bell-x{display:inline-flex}
  .bell-back{display:block!important;position:fixed;top:0;right:0;bottom:0;left:0;z-index:79;background:rgba(20,30,24,.4);animation:sysFade .25s ease both}
}
@media (prefers-reduced-motion:reduce){.bell-panel{animation:none!important}}

/* ==================== ПРОФИЛЬ — точно по Профиль.dc (финал) ==================== */
.prof-sub{margin:8px 0 0;font:500 13.5px var(--sans);color:#8a8576}
.prof-card{margin-top:16px}
.prof-cardhead{display:flex;align-items:center;gap:12px;margin:0 0 18px}
.prof-ic{width:42px;height:42px;border-radius:12px;background:#eef0e9;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.prof-h2{margin:0;font:600 18px var(--serif);color:#23211c}
.prof-csub{font:500 11.5px var(--sans);color:#a7a293}
.prof-fields{display:flex;flex-direction:column;gap:15px}
.prof-fg{display:flex;flex-direction:column;gap:7px}
.prof-fg>label{font:600 12px var(--sans);color:#3a382f}
.prof-inp2{box-sizing:border-box;width:100%;background:#fbfaf5;border:1px solid #dcd6c8;border-radius:12px;padding:12px 14px;font:600 14px var(--sans);color:#23211c;outline:none;transition:border-color .16s,background .16s}
.prof-inp2:focus{border-color:#7fa07f;background:#fff}
/* смена пароля: подсветка ошибочного поля + тряска (как на входе) */
.prof-inp2.bad{border-color:#c2703f;background:#fdf6f1}
.prof-inp2.bad:focus{border-color:#c2703f;box-shadow:0 0 0 4px rgba(194,112,63,.18)}
.prof-fg.pf-shake,.prof-inp2.pf-shake{animation:authShake .5s ease}
.prof-ta{resize:vertical;line-height:1.5}
.prof-fhint{font:500 11px var(--sans);color:#a7a293}
.prof-pwd{display:flex;align-items:center;background:#fbfaf5;border:1px solid #dcd6c8;border-radius:12px;padding:0 8px 0 14px;transition:border-color .16s,background .16s}
.prof-pwd:focus-within{border-color:#7fa07f;background:#fff}
.prof-pwd input{flex:1;min-width:0;border:none;outline:none;background:transparent;padding:12px 0;font:600 14px var(--sans);color:#23211c}
.prof-pwd .pwd-eye{position:static;transform:none;width:34px;height:34px;color:#a7a293}
.prof-wrap>.prof-card{margin-top:0}
.prof-card .btn-add{margin-top:4px;align-self:flex-start;background:linear-gradient(120deg,#23382c,#2f4738);border-radius:11px;padding:0 22px;height:44px;font:600 13.5px var(--sans);box-shadow:0 6px 16px rgba(35,56,44,.18)}
.prof-card .btn-add:hover{background:linear-gradient(120deg,#23382c,#2f4738);transform:translateY(-1px)}
/* hero */
.prof-ava-card{display:flex;align-items:center;gap:24px}
.prof-ava-wrap{position:relative;flex-shrink:0}
.prof-cam{position:absolute;right:-2px;bottom:-2px;width:34px;height:34px;border-radius:50%;border:3px solid #fffefb;background:#23382c;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;transition:transform .16s}
.prof-cam:hover{transform:scale(1.06)}
.prof-ava-side{display:flex;flex-direction:column;justify-content:center;gap:6px;min-width:0;min-height:96px}
.prof-av-role{font:500 13px var(--sans);color:#8a8576}
.prof-ava-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:6px}
.prof-ghost{display:inline-flex;align-items:center;gap:8px;font:600 12.5px var(--sans);color:#3f5a48;background:#fffefb;border:1px solid #dcd6c8;border-radius:11px;padding:9px 15px;cursor:pointer;transition:background .16s,border-color .16s}
.prof-ghost:hover{background:#f1ede3;border-color:#c9b88f}
.prof-ghost.hidden{display:none!important}
/* data & security */
.prof-dl{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;background:#fbf9f3;border:1px solid #ece8df;border-radius:13px;padding:15px 17px}
.prof-dl-t{font:600 13.5px var(--sans);color:#23211c}
.prof-dl-s{font:500 12px var(--sans);color:#8a8576;margin-top:2px}
.prof-del{margin-top:14px;background:#fdf3ef;border:1px solid #eccbbd;border-radius:13px;padding:16px 18px}
.prof-del-t{font:600 14px var(--sans);color:#8f3a26}
.prof-del-s{font:500 12px/1.5 var(--sans);color:#a06450;margin-top:3px}
.prof-del-row{margin-top:12px;display:flex;gap:11px;flex-wrap:wrap;align-items:center}
.prof-del-row input{flex:1;min-width:180px}
.prof-danger{border:none;cursor:pointer;padding:0 20px;height:44px;border-radius:11px;background:linear-gradient(120deg,#b04a34,#9a3f2b);color:#fff;font:600 13px var(--sans);box-shadow:0 5px 14px rgba(176,74,52,.2)}
@media(max-width:880px){.prof-ava-card{flex-direction:column;text-align:center}.prof-ava-actions{justify-content:center}.prof-ava-side{align-items:center}.prof-card .btn-add,.prof-danger{width:100%}}
/* кнопка «Удалить фото» — глиняный контур (по макету) */
#pfAvaDel{color:#9a6a45;background:transparent;border:1px solid #e6d3c2;padding:8px 14px}
#pfAvaDel:hover{background:#f9efe8;border-color:#d9b89f}
/* кнопка «Сохранить» → «Сохранено» */
.prof-card .btn-add.saved{background:linear-gradient(120deg,#2f6b46,#3f7d54)!important;box-shadow:0 6px 16px rgba(47,107,70,.22)}

/* ==================== PWA standalone: безопасные зоны (нотч/статус-бар) ==================== */
@media(max-width:900px){
  .topnav{padding-top:calc(env(safe-area-inset-top) + 12px)!important}
}

/* ==================== ЧАТ (Чат.dc) — двухколоночный ==================== */
.ch-cols{display:flex;flex-direction:row;height:calc(100dvh - 200px);min-height:460px;background:#fffefb;border:1px solid #ece8df;border-radius:16px;overflow:hidden;box-shadow:0 6px 20px rgba(40,35,25,.05)}
.ch-listcol{width:470px;flex-shrink:0;border-right:1px solid #ece8df;background:#fbf9f3;display:flex;flex-direction:column;min-height:0}
.ch-search{position:relative;padding:13px 16px 9px;flex-shrink:0}
.ch-search .ch-search-ic{position:absolute;left:28px;top:calc(50% + 2px);transform:translateY(-50%);pointer-events:none}
.ch-search input{width:100%;box-sizing:border-box;padding:9px 12px 9px 36px;font:500 12.5px var(--sans);color:#23211c;background:#fffefb;border:1px solid #e4dfd3;border-radius:11px;outline:none}
.ch-search input:focus{border-color:#7fa07f}
.ch-dialogs{flex:1;min-height:0;overflow-y:auto;padding:4px 8px 10px}
.ch-dlg{display:flex;gap:12px;align-items:center;padding:11px 12px;border-radius:13px;cursor:pointer;transition:background .14s}
.ch-dlg:hover{background:#f4f1e9}
.ch-dlg.on{background:#eef0e9}
.ch-dlg-main{flex:1;min-width:0}
.ch-dlg-top{display:flex;align-items:center;gap:8px}
.ch-dlg-name{flex:1;min-width:0;font:600 13.5px var(--sans);color:#23211c;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ch-dlg-when{font:500 10.5px var(--sans);color:#a7a293;flex-shrink:0}
.ch-dlg-bot{display:flex;align-items:center;gap:8px;margin-top:2px}
.ch-dlg-last{flex:1;min-width:0;font:500 12px var(--sans);color:#8a8576;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ch-dlg-unread{min-width:18px;height:18px;padding:0 5px;box-sizing:border-box;border-radius:9px;background:#2f6b46;color:#fff;font:700 10px var(--sans);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.ch-nores{padding:34px 16px;text-align:center;font:500 12.5px var(--sans);color:#a7a293}
.ch-threadcol{flex:1;min-width:0;display:flex;flex-direction:column;background:#fffefb;min-height:0}
.ch-thead{flex-shrink:0;display:flex;align-items:center;gap:12px;padding:11px 18px;border-bottom:1px solid #ece8df;background:#fffefb}
.ch-back{display:none;width:34px;height:34px;border-radius:10px;border:1px solid #ece8df;background:#fffefb;align-items:center;justify-content:center;cursor:pointer;color:#3f5a48;flex-shrink:0;padding:0}
.ch-back:hover{background:#f1ede3}
.ch-thead-tx{min-width:0}
.ch-thead-name{font:600 14.5px var(--sans);color:#23211c;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ch-thead-status{font:500 11px var(--sans)}
.ch-thead-status .ch-online{color:#2f6b46}
.ch-thead-status .ch-offline{color:#a7a293}
.ch-scroll{flex:1;min-height:0;overflow-y:auto;padding:20px 20px 8px;display:flex;flex-direction:column;gap:11px;background:repeating-linear-gradient(45deg,rgba(150,134,104,.04) 0 1px,transparent 1px 24px),#fdfcf8}
.chat-av{position:relative;width:44px;height:44px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font:600 15px var(--sans);color:#f4efe2;background:linear-gradient(135deg,#2f6b46,#23382c);background-size:cover;background-position:center}
.chat-av.is-online::after{content:"";position:absolute;right:0;bottom:0;width:11px;height:11px;border-radius:50%;background:#3fae6a;border:2px solid #fbf9f3}
.chat-av-sm{width:40px;height:40px;font-size:14px}
.chat-av-sm.is-online::after{border-color:#fffefb}
.chat-msg{display:flex;flex-direction:column;max-width:min(80%,620px)}
.chat-msg.mine{align-self:flex-end;align-items:flex-end}
.chat-msg.theirs{align-self:flex-start;align-items:flex-start}
.chat-bubble{padding:11px 15px;font:500 15px/1.5 var(--sans);border-radius:16px 16px 16px 5px;background:#f1ede3;color:#23211c;border:1px solid #ece8df;overflow-wrap:anywhere}
.chat-msg.mine .chat-bubble{border-radius:16px 16px 5px 16px;background:linear-gradient(135deg,#2f6b46,#23382c);color:#f4efe2;border:none;box-shadow:0 4px 12px rgba(35,56,44,.16)}
.chat-time{font:500 10.5px var(--sans);color:#a7a293;margin:4px 4px 0}
/* индикатор доставки/прочтения под последним своим сообщением (task 7) */
.chat-receipt{display:inline-flex;align-items:center;gap:3px;font:500 10.5px var(--sans);color:#a7a293;margin:3px 4px 0}
.chat-receipt svg{color:#b7b1a2}
.chat-receipt.read{color:#5e8068}
.chat-receipt.read svg{color:#5e8068}
.ch-empty-box{margin:auto;display:flex;flex-direction:column;align-items:center;text-align:center;padding:30px}
.ch-empty-ic{width:58px;height:58px;border-radius:17px;background:#eef0e9;display:flex;align-items:center;justify-content:center;margin-bottom:14px}
.ch-empty-t{font:600 16px var(--serif);color:#23211c}
.ch-empty-s{margin:6px 0 0;font:500 13px var(--sans);color:#a7a293}
.ch-compose{flex-shrink:0;display:flex;align-items:center;gap:10px;padding:12px 16px calc(12px + env(safe-area-inset-bottom));border-top:1px solid #ece8df;background:#fffefb}
.ch-input{flex:1;min-width:0;box-sizing:border-box;padding:12px 15px;font:500 14px var(--sans);color:#23211c;background:#f6f3ec;border:1px solid #e4dfd3;border-radius:13px;outline:none}
.ch-input:focus{border-color:#7fa07f;background:#fff}
.ch-send{width:44px;height:44px;flex-shrink:0;border-radius:13px;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;background:linear-gradient(120deg,#23382c,#2f4738);box-shadow:0 6px 14px rgba(35,56,44,.2);transition:transform .15s}
.ch-send:hover{transform:translateY(-1px)}
/* Чат на весь экран, без футера с документами (нижняя навигация остаётся) */
#view-dashboard[data-section="chat"] .footer,
#view-dashboard[data-section="profile"] .footer{display:none}
/* Чат: во всю ширину области, вписан в экран, переписка листается ВНУТРИ (как мессенджер). */
/* На десктопе ограничиваем высоту .dash одним экраном — тогда тред скроллится внутри, а страница не растёт. */
@media(min-width:861px){#view-dashboard[data-section="chat"].dash{height:100dvh;overflow:hidden}}
#view-dashboard[data-section="chat"] .dash-main{max-width:none;padding:0;display:flex;flex-direction:column;flex:1;min-height:0;background:#f3eee4;overflow-x:clip}
#view-dashboard[data-section="chat"] #dashContent{flex:1;min-height:0;display:flex}
#view-dashboard[data-section="chat"] .ch-cols{flex:1;height:auto;min-height:0;border-radius:0;border-left:none;border-right:none;border-top:none}
/* Профиль: без футера с документами, но с нижней навигацией */
@media(max-width:900px){
  #view-dashboard[data-section="profile"] .footer{display:none}
  #view-dashboard[data-section="profile"] .dash-main{padding-bottom:calc(84px + env(safe-area-inset-bottom))}
}
@media(max-width:820px){
  /* на мобайле оставляем место под нижнюю навигацию */
  #view-dashboard[data-section="chat"] .dash-main{padding-bottom:calc(64px + env(safe-area-inset-bottom))}
  /* Мобайл: сплошной фон чата, список — во всю ширину, светлее фона, до конца списка */
  .ch-cols{display:block;position:relative;height:auto;min-height:0;width:100%;max-width:100%;background:transparent;border:none;border-radius:0;box-shadow:none;overflow-x:clip;overflow-y:visible}
  .ch-threadcol{width:100%;max-width:100%;box-sizing:border-box}
  .ch-listcol{width:auto;margin:0;border:none;border-bottom:1px solid #ece8df;border-radius:0;background:#fffefb;overflow:hidden;box-shadow:none}
  .ch-dialogs{max-height:none;overflow:visible;padding:6px 8px 10px}
  /* крупнее аватары и текст */
  .ch-dlg{gap:14px;padding:13px 13px}
  .chat-av{width:52px;height:52px;font-size:17px}
  .ch-dlg-name{font-size:15px}
  .ch-dlg-last{font-size:13px}
  .ch-dlg-when{font-size:11px}
  .ch-search input{font-size:14px;padding:11px 12px 11px 38px}
  /* тред — на весь экран раздела (под шапкой), выезжает справа */
  .ch-threadcol{position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;background:#fffefb;border-radius:0;overflow:hidden;transform:translateX(100%);transition:transform .32s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column;box-shadow:none}
  .ch-cols.thread-open .ch-threadcol{transform:none}
  .ch-back{display:flex}
  .chat-av-sm{width:44px;height:44px;font-size:15px}
  .ch-thead-name{font-size:16px}
}

/* ==================== УЧЕНИКИ (Ученики.dc) ==================== */
@keyframes ucIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.uc-titlerow{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:16px}
.uc-title{margin:0;font:600 33px var(--serif);color:#23211c}
.uc-sub{margin:8px 0 0;font:500 13.5px var(--sans);color:#8a8576}
.uc-searchwrap{position:relative;width:320px;max-width:100%;flex-shrink:0}
.uc-searchwrap svg{position:absolute;left:14px;top:50%;transform:translateY(-50%);pointer-events:none}
.uc-search{width:100%;box-sizing:border-box;padding:12px 14px 12px 40px;font:500 13.5px var(--sans);color:#23211c;background:#fffefb;border:1px solid #e0dacb;border-radius:13px;outline:none;transition:border-color .18s,box-shadow .18s,background .18s}
.uc-search:focus{border-color:#7fa07f;background:#fff;box-shadow:0 0 0 3px rgba(47,107,70,.14)}
.uc-grid{margin-top:22px;display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:18px;align-items:stretch}
.uc-card{display:flex;flex-direction:column;gap:16px;background:#fffefb;border:1.5px solid #5e8068;border-radius:18px;padding:22px;box-sizing:border-box;transition:transform .2s,box-shadow .2s,border-color .2s}
.uc-card>.uc-actions{margin-top:auto}
.uc-card:hover{transform:translateY(-3px);box-shadow:0 18px 34px rgba(35,56,44,.13);border-color:#9dba98}
.uc-grid.uc-anim .uc-card{animation:ucIn .5s ease both}
.uc-chead{display:flex;align-items:center;gap:13px}
.uc-av{width:54px;height:54px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font:600 17px var(--sans);color:#f4efe2;box-shadow:0 4px 12px rgba(35,56,44,.18);background-size:cover;background-position:center}
.uc-av.eng{background:linear-gradient(135deg,#2f6b46,#23382c)}
.uc-av.phys{background:linear-gradient(135deg,#3f6577,#2b4a57)}
.uc-cname{font:600 16px var(--sans);color:#23211c;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.uc-status{display:inline-flex;align-items:center;gap:6px;margin-top:5px;font:600 11px var(--sans);border-radius:20px;padding:3px 10px 3px 9px}
.uc-status .dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}
.uc-status.ok{color:#3f6b4c;background:#e7f0e7}
.uc-status.ok .dot{background:#3f6b4c}
.uc-status.low{color:#bd6a37;background:#f6ebdf}
.uc-status.low .dot{background:#c2703f}
.uc-fields{display:flex;flex-direction:column;gap:1px;background:#f1ede3;border-radius:13px;overflow:hidden;border:1px solid #ece8df}
.uc-field{background:#fbfaf5;padding:11px 13px}
.uc-flabel{font:600 10px var(--sans);color:#a7a293;letter-spacing:.04em;text-transform:uppercase}
.uc-frow{display:flex;align-items:center;gap:8px;margin-top:4px}
.uc-fval{flex:1;min-width:0;font:600 13.5px var(--sans);color:#23211c;line-height:1.35;word-break:break-word}
.uc-fval.empty{color:#b0aa99}
.uc-pencil{margin-left:auto;width:28px;height:28px;flex-shrink:0;border-radius:8px;border:1px solid #e6e0d1;background:#fff;color:#8a8576;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .16s,color .16s,border-color .16s}
.uc-pencil:hover{background:#eef5ec;color:#2f6b46;border-color:#bcd0b8}
.uc-erow{display:flex;align-items:center;gap:7px;margin-top:6px}
.uc-edit{flex:1;min-width:0;box-sizing:border-box;padding:7px 10px;font:600 13px var(--sans);color:#23211c;background:#fff;border:1px solid #cfdccb;border-radius:9px;outline:none;transition:border-color .16s,box-shadow .16s}
.uc-edit:focus{border-color:#7fa07f;box-shadow:0 0 0 3px rgba(47,107,70,.14)}
.uc-save{width:32px;height:32px;flex-shrink:0;border-radius:9px;border:none;background:#2f6b46;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .16s}
.uc-save:hover{background:#23382c}
.uc-cancel{width:32px;height:32px;flex-shrink:0;border-radius:9px;border:1px solid #e0dacb;background:#fff;color:#8a8576;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .16s}
.uc-cancel:hover{background:#f1ede3}
.uc-actions{display:flex;gap:9px}
.uc-act{transition:transform .16s,box-shadow .16s,background .16s,border-color .16s,color .16s}
.uc-act:hover{transform:translateY(-1px)}
.uc-act-prog{flex:1;display:flex;align-items:center;justify-content:center;gap:7px;font:600 12.5px var(--sans);color:#3f5a48;background:#fffefb;border:1px solid #cfc8b6;border-radius:11px;padding:11px 12px;cursor:pointer}
.uc-act-prog:hover{background:linear-gradient(120deg,#2f6b46,#23382c);color:#fdfcf7;border-color:transparent;box-shadow:0 7px 16px rgba(47,107,70,.22)}
.uc-act-chat{width:44px;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:#fffefb;border:1px solid #cfc8b6;border-radius:11px;cursor:pointer;color:#3f5a48}
.uc-act-chat:hover{background:#eef5ec;border-color:#9dba98;color:#2f6b46}
.uc-empty{margin-top:24px;padding:52px 22px;text-align:center;background:#fcfaf4;border:1px dashed #e3ddcf;border-radius:18px;animation:ucIn .4s ease both}
.uc-empty-ic{width:56px;height:56px;margin:0 auto 14px;border-radius:16px;background:#eef0e9;display:flex;align-items:center;justify-content:center}
.uc-empty-t{font:600 17px var(--serif);color:#23211c}
.uc-empty-s{margin:8px 0 0;font:500 13px var(--sans);color:#a7a293}
/* мобильная шторка редактирования */
.uc-sheetbg{position:fixed;top:0;right:0;bottom:0;left:0;z-index:160;background:rgba(18,28,21,.42);display:flex;align-items:center;justify-content:center;padding:20px;box-sizing:border-box;opacity:0;transition:opacity .3s ease}
.uc-sheetbg.open{opacity:1}
.uc-sheet-card{width:100%;max-width:420px;background:#fffefb;border-radius:20px;padding:20px;box-sizing:border-box;box-shadow:0 30px 80px rgba(18,28,21,.34);transform:translateY(12px) scale(.97);opacity:0;transition:transform .34s cubic-bezier(.3,1,.45,1),opacity .26s ease}
.uc-sheetbg.open .uc-sheet-card{transform:none;opacity:1}
.uc-sheet-grip{display:none}
.uc-sheet-grip{width:40px;height:4px;border-radius:3px;background:#e0dacb;margin:0 auto 16px}
.uc-sheet-lbl{font:600 11px var(--sans);color:#a7a293;letter-spacing:.04em;text-transform:uppercase}
.uc-sheet-name{font:600 17px var(--serif);color:#23211c;margin-top:3px}
.uc-sheet-inp{width:100%;box-sizing:border-box;margin-top:16px;padding:14px 15px;font:600 15px var(--sans);color:#23211c;background:#fbfdfa;border:1px solid #cfdccb;border-radius:13px;outline:none}
.uc-sheet-inp:focus{border-color:#7fa07f;box-shadow:0 0 0 3px rgba(47,107,70,.14)}
.uc-sheet-acts{display:flex;gap:10px;margin-top:16px}
.uc-sheet-cancel{flex:1;font:600 14px var(--sans);color:#3f5a48;background:#f1ede3;border:none;border-radius:13px;padding:15px;cursor:pointer}
.uc-sheet-save{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;font:600 14px var(--sans);color:#fdfcf7;background:linear-gradient(120deg,#2f6b46,#23382c);border:none;border-radius:13px;padding:15px;cursor:pointer;box-shadow:0 8px 18px rgba(47,107,70,.24)}
@media(max-width:880px){.uc-grid{grid-template-columns:1fr}.uc-titlerow{flex-direction:column;align-items:stretch}.uc-searchwrap{width:100%}}

/* ==================== МАТЕРИАЛЫ (Materials.dc) ==================== */
@keyframes matNew{from{opacity:0;transform:translateY(-14px) scale(.98)}to{opacity:1;transform:none}}
.ma-titlerow{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:14px}
.ma-title{margin:0;font:600 33px var(--serif);color:#23211c}
.ma-sub{margin:8px 0 0;font:500 13.5px var(--sans);color:#8a8576}
.ma-foldbtn{display:flex;align-items:center;gap:8px;font:600 12.5px var(--sans);color:#3f5a48;background:#fffefb;border:1px solid #cfc8b6;border-radius:11px;padding:10px 15px;cursor:pointer;transition:background .16s,border-color .16s}
.ma-foldbtn:hover{background:#f1ede3;border-color:#c9b88f}
.ma-add{margin-top:20px;background:#fffefb;border:1px solid #ece8df;border-radius:18px;box-shadow:0 6px 22px rgba(40,35,25,.05);padding:20px 22px}
.ma-seg{display:inline-flex;padding:3px;background:#f1ede3;border-radius:12px;gap:3px}
.ma-seg-b{display:flex;align-items:center;gap:7px;font:500 12.5px var(--sans);cursor:pointer;padding:8px 15px;border-radius:9px;border:none;background:transparent;color:#8a8576;transition:background .18s,color .18s,box-shadow .18s}
.ma-seg-b.on{font-weight:600;background:#fffefb;color:#23382c;box-shadow:0 2px 7px rgba(40,35,25,.1)}
.ma-drop{margin-top:14px;display:flex;flex-direction:column;align-items:center;gap:10px;padding:26px 22px;border:1.6px dashed #cdc7b6;border-radius:14px;background:#fbf9f3;cursor:pointer;text-align:center;transition:border-color .25s,background .25s,transform .3s,box-shadow .3s}
.ma-drop:hover{border-color:#bdb59f;background:#faf8f1}
.ma-drop.is-drag{border-color:#2f6b46;background:#eef5ee;transform:scale(1.01);box-shadow:0 14px 34px rgba(47,107,70,.16)}
#maDropInner{display:flex;flex-direction:column;align-items:center;gap:10px}
.ma-drop-ic{width:48px;height:48px;border-radius:14px;background:linear-gradient(135deg,#eef0e9,#e3eadf);display:flex;align-items:center;justify-content:center}
.ma-drop-t{font:600 14.5px var(--sans);color:#23211c}
.ma-drop-s{font:500 12px var(--sans);color:#8a8576}
.ma-drop-file{display:flex;align-items:center;gap:11px;max-width:100%}
.ma-drop-fic{width:42px;height:42px;border-radius:11px;background:linear-gradient(135deg,#2f4738,#23382c);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.ma-drop-ftx{text-align:left;min-width:0}
.ma-drop-fname{font:600 14px var(--sans);color:#23211c;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:340px}
.ma-drop-fsub{font:500 11.5px var(--sans);color:#8a8576}
.ma-drop-x{width:28px;height:28px;border-radius:8px;border:1px solid #e8e3d8;background:#fffefb;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0}
.ma-addgrid{margin-top:14px;display:grid;grid-template-columns:1.5fr 1fr auto;gap:10px;align-items:end}
.ma-fg{display:flex;flex-direction:column;gap:6px;min-width:0}
.ma-fg label{font:600 11.5px var(--sans);color:#3a382f}
.ma-inp{width:100%;box-sizing:border-box;padding:12px 14px;font:500 13.5px var(--sans);color:#23211c;background:#fffefb;border:1px solid #dcd6c8;border-radius:11px;outline:none;transition:border-color .18s,box-shadow .18s}
.ma-inp:focus{border-color:#9aa790;box-shadow:0 0 0 3px rgba(47,107,70,.1)}
.ma-selwrap{position:relative}
.ma-selwrap svg{position:absolute;right:12px;top:50%;transform:translateY(-50%);pointer-events:none}
.ma-sel{width:100%;box-sizing:border-box;padding:12px 34px 12px 14px;font:500 13.5px var(--sans);color:#23211c;background:#fffefb;border:1px solid #dcd6c8;border-radius:11px;cursor:pointer;appearance:none;-webkit-appearance:none;-moz-appearance:none;outline:none}
.ma-sel:focus{border-color:#9aa790;box-shadow:0 0 0 3px rgba(47,107,70,.1)}
.ma-add-btn{display:flex;align-items:center;gap:7px;font:600 13.5px var(--sans);color:#fdfcf7;background:linear-gradient(120deg,#23382c,#2f4738);border:none;border-radius:11px;padding:13px 20px;cursor:pointer;box-shadow:0 8px 18px rgba(35,56,44,.2);white-space:nowrap;height:fit-content;transition:transform .16s}
.ma-add-btn:hover{transform:translateY(-1px)}
.ma-sections{margin-top:28px;display:flex;flex-direction:column;gap:20px}
.ma-fold-head{display:flex;align-items:center;gap:12px;padding:11px 13px;border-radius:13px;cursor:pointer;user-select:none;transition:background .18s}
.ma-fold-head:hover{background:#f6f3ec}
.ma-chev{display:flex;transition:transform .25s ease;transform:rotate(90deg)}
.ma-sec.collapsed .ma-chev{transform:rotate(0deg)}
.ma-fold-ic{width:34px;height:34px;border-radius:10px;display:flex;align-items:center;justify-content:center;background:#eef0e9;color:#3f5a48;flex-shrink:0}
.ma-fold-ic.none{background:#f1ede3;color:#a39e8f}
.ma-fold-name{font:600 16px var(--serif);color:#23211c}
.ma-fold-count{font:600 11px var(--sans);color:#5e7a64;background:#eef0e9;border-radius:20px;padding:3px 9px}
.ma-folddel{margin-left:auto;flex-shrink:0;width:32px;height:32px;border-radius:9px;border:1px solid var(--line);background:#fffefb;color:#b06a44;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .16s,color .16s,border-color .16s}
.ma-folddel:hover{background:#f7e2d6;border-color:#eccab5;color:#a2431f}
.ma-fold-body{display:grid;grid-template-rows:1fr;transition:grid-template-rows .34s cubic-bezier(.4,0,.2,1)}
.ma-sec.collapsed .ma-fold-body{grid-template-rows:0fr}
.ma-fold-inner{min-height:0}
.ma-sec.collapsed .ma-fold-inner{overflow:hidden}
.ma-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start;padding:14px 2px 4px}
.ma-card{display:flex;flex-direction:column;gap:15px;background:#fffefb;border:1.5px solid #5e8068;border-radius:18px;padding:22px 22px 20px;box-sizing:border-box;min-width:0;transition:transform .2s,box-shadow .2s;animation:matIn .5s ease both}
@keyframes matIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.ma-card:hover{transform:translateY(-3px);box-shadow:0 18px 34px rgba(35,56,44,.13)}
.ma-cardtop{display:flex;align-items:flex-start;gap:13px}
.ma-tile{width:54px;height:54px;border-radius:15px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.ma-tile svg{width:26px;height:26px}
.ma-tile.html{background:linear-gradient(135deg,#2f4738,#23382c);color:#c9b88f}
.ma-tile.pdf{background:#f7e9df;color:#c2703f}
.ma-tile.img{background:#e7f0e7;color:#5e8068}
.ma-tile.word{background:#e5edf5;color:#37638c}
.ma-tile.slides{background:#f5e5da;color:#a75c33}
.ma-tile.sheet{background:#e2efe4;color:#3f704e}
.ma-tile.text{background:#efebe1;color:#665f4d}
.ma-tile.archive{background:#f1e7d7;color:#8a6839}
.ma-tile.link{background:#f1ede3;color:#a7894e}
.ma-tile.doc{background:#eef0e9;color:#3f5a48}
.ma-cardmain{flex:1;min-width:0}
.ma-cname{font:600 16.5px var(--sans);color:#23211c;line-height:1.32;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ma-cmeta{margin-top:7px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ma-metatx{font:500 11.5px var(--sans);color:#a7a293}
.ma-menuwrap{position:relative;flex-shrink:0}
.ma-menu-btn{width:34px;height:34px;border-radius:10px;border:1px solid transparent;background:transparent;color:#a39e8f;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s,color .15s}
.ma-menu-btn:hover{background:#f3efe6;color:#3a382f}
.ma-menu{display:none;position:absolute;right:0;top:39px;z-index:30;min-width:206px;background:#fffefb;border:1px solid #e8e3d8;border-radius:13px;box-shadow:0 18px 40px rgba(20,30,24,.2);padding:7px}
.ma-menu.open{display:block;animation:matPop .2s ease both}
@keyframes matPop{from{opacity:0;transform:translateY(8px) scale(.97)}to{opacity:1;transform:none}}
.ma-menu-h{font:600 10.5px var(--sans);color:#a7a293;letter-spacing:.05em;text-transform:uppercase;padding:7px 9px 6px}
.ma-menu-item{display:flex;align-items:center;gap:9px;width:100%;border:none;background:transparent;cursor:pointer;padding:9px;border-radius:9px;font:500 13px var(--sans);color:#3a382f;text-align:left;transition:background .14s}
.ma-menu-item:hover{background:#f3efe6}
.ma-menu-item svg{color:#3f5a48;flex-shrink:0}
.ma-divider{height:1px;background:#f3efe6}
.ma-actions{display:flex;align-items:center;gap:10px;min-width:0}
.ma-act{display:flex;align-items:center;gap:7px;font:600 12.5px var(--sans);border-radius:12px;padding:11px 18px;cursor:pointer;justify-content:center;white-space:nowrap;flex:1 1 0;min-width:0;overflow:hidden;text-overflow:ellipsis;text-decoration:none;transition:transform .16s,box-shadow .16s,background .16s,border-color .16s}
.ma-act:hover{transform:translateY(-1px)}
.ma-act-lesson{color:#fdfcf7;background:linear-gradient(120deg,#2f6b46,#23382c);border:none;box-shadow:0 7px 16px rgba(47,107,70,.24)}
.ma-act-out{color:#3f5a48;background:#fffefb;border:1px solid #cfc8b6}
.ma-act-out:hover{background:#f1ede3}
.ma-del{width:44px;height:44px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:#a39e8f;background:#fffefb;border:1px solid #ece8df;border-radius:12px;cursor:pointer;transition:background .16s,color .16s}
.ma-del:hover{background:#faece8;color:#b04a34}
.ma-access{border-top:1px solid #f3efe6;padding-top:14px;margin-top:2px}
.ma-access-lbl{font:600 11.5px var(--sans);color:#8a8576;margin-bottom:10px}
.ma-pills{display:flex;flex-wrap:wrap;gap:7px}
.ma-pill{display:inline-flex;align-items:center;gap:5px;border-radius:20px;padding:6px 11px;cursor:pointer;font:600 11.5px var(--sans);line-height:1;background:#fffefb;color:#6b6657;border:1px solid #dcd6c8;transition:transform .15s,background .15s,border-color .15s,color .15s}
.ma-pill:hover{transform:translateY(-1px)}
.ma-pill.on{background:#2f6b46;color:#fff;border-color:#2f6b46;box-shadow:0 4px 11px rgba(47,107,70,.2)}
.ma-noaccess{font:500 12px var(--sans);color:#a7a293}
.ma-foldempty{grid-column:1/-1;padding:22px;text-align:center;color:#a7a293;font:500 12.5px var(--sans);background:#fcfaf4;border:1px dashed #e3ddcf;border-radius:14px}
.ma-grid-solo{grid-template-columns:repeat(auto-fill,minmax(380px,1fr))}
/* модалка создания папки */
.ma-modal{display:flex;flex-direction:column;gap:14px}
.ma-modal-h{display:flex;align-items:center;gap:12px}
.ma-modal-ic{width:40px;height:40px;border-radius:12px;background:linear-gradient(135deg,#eef0e9,#e3eadf);color:#2f4738;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.ma-modal-t{font:600 18px var(--serif);color:#23211c}
@media(max-width:880px){
  .ma-grid,.ma-grid-solo{grid-template-columns:1fr!important}
  .ma-grid{padding:14px 0 4px}
  .ma-addgrid{grid-template-columns:1fr}
  .ma-add-btn{width:100%;justify-content:center}
  /* защита от горизонтального выезда карточек материалов */
  .ma-card{max-width:100%}
  .ma-cardmain,.ma-cmeta{min-width:0}
  .ma-cname{white-space:normal;overflow-wrap:anywhere}
  .ma-actions{flex-wrap:wrap}
  .ma-act{flex:1 1 140px}
}

/* ==================== УРОКИ (Уроки.dc) ==================== */
.lz-toolbar{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:14px}
.lz-h1{margin:0;font:600 33px var(--serif);color:#23211c}
.lz-sub{margin:8px 0 0;font:500 13.5px var(--sans);color:#8a8576}
.lz-btn{display:inline-flex;align-items:center;gap:8px;cursor:pointer;border:none;font:600 13.5px var(--sans);border-radius:12px;transition:transform .16s,box-shadow .16s,background .16s,border-color .16s}
.lz-btn:hover{transform:translateY(-1px)}
.lz-prim{color:#fdfcf7;background:linear-gradient(120deg,#23382c,#2f4738);padding:13px 19px;box-shadow:0 8px 18px rgba(35,56,44,.2)}
.lz-ghost{color:#3f5a48;background:#fffefb;border:1px solid #cfc8b6;padding:10px 15px;font-size:12.5px}
.lz-ghost:hover{background:#f1ede3}
.lz-prim2{color:#fdfcf7;background:linear-gradient(120deg,#2f6b46,#23382c);padding:11px 18px;box-shadow:0 7px 16px rgba(47,107,70,.22);margin-top:4px}
#view-dashboard[data-section="lessons"] .dash-main{max-width:1320px}
.lz-split{margin-top:22px;display:grid;grid-template-columns:minmax(0,460px) minmax(0,1fr);gap:20px;align-items:start}
.lz-list{display:flex;flex-direction:column;gap:12px}
.lz-row{cursor:pointer;display:flex;flex-direction:column;gap:12px;background:#fcfaf5;border:1.5px solid #5e8068;border-radius:16px;padding:17px 17px;transition:background .18s,box-shadow .18s,transform .18s}
.lz-row:hover{background:#fffefb}
.lz-row.on{background:#fffefb;box-shadow:0 8px 20px rgba(47,107,70,.12)}
.lz-rowtop{display:flex;align-items:center;gap:11px}
.lz-date{width:52px;height:52px;flex-shrink:0;border-radius:13px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;background:#f4f1e9;border:1px solid #ece8df}
.lz-row.on .lz-date{background:#eef5ec;border-color:#bcd0b8}
.lz-date b{font:700 19px var(--serif);color:#46604f;line-height:1}
.lz-row.on .lz-date b{color:#2f6b46}
.lz-date span{font:600 9.5px var(--sans);color:#a7a293;text-transform:uppercase;letter-spacing:.04em}
.lz-rowmain{flex:1;min-width:0}
.lz-rowtitle{font:600 15.5px var(--sans);color:#23211c;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lz-rowmeta{font:500 12.5px var(--sans);color:#8a8576;margin-top:3px}
.lz-chev{flex-shrink:0;color:#c4bdaf;display:flex}
.lz-row.on .lz-chev{color:#2f6b46}
.lz-chips{display:flex;gap:6px;flex-wrap:wrap}
.lz-chip{display:inline-flex;align-items:center;gap:5px;font:600 11px var(--sans);border-radius:8px;padding:5px 9px;background:#f1ede3;color:#b3ab9a}
.lz-chip.on{background:#e7f0e7;color:#3f6b4c}
.lz-detailwrap{position:sticky;top:0}
.lz-detail{background:#fffefb;border:1.5px solid #e3ddce;border-radius:18px;overflow:hidden;box-shadow:0 8px 26px rgba(40,53,40,.06)}
.lz-dhead{display:none;align-items:center;gap:13px;padding:14px 16px;background:#fffefb;border-bottom:1px solid #ece8df}
.lz-back{width:40px;height:40px;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:#f0f6ee;border:1px solid #cfe0cb;border-radius:12px;cursor:pointer;color:#2f6b46}
.lz-dhead-title{font:600 15px var(--serif);color:#23211c;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lz-dpad{padding:28px}
.lz-subjtag{display:inline-block;font:600 12px var(--sans);border-radius:20px;padding:5px 12px;margin-bottom:12px}
.lz-subjtag.eng{background:#e7f0e7;color:#3f6b4c}
.lz-subjtag.phys{background:#e4edf1;color:#3f6577}
.lz-titlerow{display:flex;align-items:center;gap:10px}
.lz-titleedit{width:32px;height:32px;flex-shrink:0;border-radius:9px;border:1px solid #e6e0d1;background:#fff;color:#8a8576;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s,color .15s,border-color .15s}
.lz-titleedit:hover{background:#eef5ec;color:#2f6b46;border-color:#bcd0b8}
.lz-dtitle{margin:0;font:600 27px var(--serif);color:#23211c}
.lz-dtitle.empty{color:#b0aa99;font-weight:500}
.lz-dmeta{margin-top:7px;font:500 14px var(--sans);color:#8a8576}
.lz-tabs{margin-top:18px;display:inline-flex;padding:4px;background:#f1ede3;border-radius:13px;gap:3px;flex-wrap:wrap}
.lz-tab{cursor:pointer;border:none;background:transparent;font:500 13.5px var(--sans);color:#8a8576;padding:9px 17px;border-radius:10px;transition:background .18s,color .18s,box-shadow .18s}
.lz-tab.on{font-weight:600;background:#fffefb;color:#23382c;box-shadow:0 2px 7px rgba(40,35,25,.1)}
.lz-tabbody{margin-top:16px}
.lz-player{position:relative;width:100%;aspect-ratio:16/9;background:radial-gradient(120% 120% at 50% 30%,#1c2a20,#0c1410);border-radius:13px;overflow:hidden;display:flex;align-items:center;justify-content:center}
.lz-play{width:62px;height:62px;border-radius:50%;border:none;background:rgba(20,28,22,.55);color:#f4efe2;display:flex;align-items:center;justify-content:center;cursor:pointer;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.lz-expand{position:absolute;bottom:12px;right:12px;width:38px;height:38px;border-radius:10px;border:none;background:rgba(20,28,22,.6);color:#f4efe2;display:flex;align-items:center;justify-content:center;cursor:pointer}
.lz-video{width:100%;aspect-ratio:16/9;display:block;border-radius:13px;background:#000}
.lz-drop{width:100%;aspect-ratio:16/9;background:#f5f9f3;border:1.6px dashed #c4d4bf;border-radius:13px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center;padding:20px;cursor:pointer;box-sizing:border-box}
.lz-drop-ic{width:52px;height:52px;border-radius:14px;background:#eaf2e7;display:flex;align-items:center;justify-content:center}
.lz-drop-t{font:600 14px var(--sans);color:#23211c}
.lz-drop-s{font:500 11.5px var(--sans);color:#8a8576}
.lz-novideo{width:100%;aspect-ratio:16/9;background:#f1ede3;border:1px dashed #d8d0bf;border-radius:13px;display:flex;align-items:center;justify-content:center;text-align:center;padding:20px;box-sizing:border-box}
.lz-acts{display:flex;gap:9px;flex-wrap:wrap;margin-top:14px}
.lz-sum{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:10px}
.lz-sum li{display:flex;gap:10px;align-items:flex-start}
.lz-dot{width:7px;height:7px;margin-top:7px;border-radius:50%;flex-shrink:0;background:#2f6b46}
.lz-dot.phys{background:#3f6577}
.lz-sum li span:last-child{flex:1;min-width:0;font:500 14.5px/1.6 var(--sans);color:#3a382f}
.lz-tr{white-space:pre-wrap;font:500 14.5px/1.75 var(--sans);color:#403c33}
.lz-empty{padding:34px 20px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:6px}
.lz-empty-ic{width:56px;height:56px;border-radius:16px;background:#eef0e9;display:flex;align-items:center;justify-content:center;margin-bottom:6px}
.lz-empty-t{font:600 16px var(--serif);color:#23211c}
.lz-empty-s{margin:0;font:500 12.5px var(--sans);color:#a7a293;max-width:300px}
.lz-nodetail{padding:60px 30px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:12px}
.lz-nodetail-ic{width:56px;height:56px;border-radius:16px;background:#eef0e9;display:flex;align-items:center;justify-content:center}
.lz-nodetail-t{font:600 16px var(--serif);color:#23211c}
.lz-nodetail-s{margin:0;font:500 12.5px var(--sans);color:#a7a293;max-width:260px}
/* панель действий (с иконками) */
.lz-acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.lz-abtn{display:inline-flex;align-items:center;gap:7px;cursor:pointer;font:600 12px var(--sans);color:#3f5a48;background:#fffefb;border:1px solid #cfc8b6;border-radius:10px;padding:9px 13px;transition:transform .16s,background .16s,border-color .16s}
.lz-abtn:hover{transform:translateY(-1px);background:#f1ede3;border-color:#c9b88f}
.lz-vpane{display:flex;flex-direction:column}
.lz-mini{display:inline-flex;align-items:center;gap:7px;margin-top:13px;cursor:pointer;font:600 12.5px var(--sans);color:#2f6b46;background:#fffefb;border:1px solid #bcd0b8;border-radius:11px;padding:10px 15px}
.lz-mini:hover{background:#eef5ec}
.lz-empty2{padding:30px 22px;text-align:center;background:#fcfaf4;border:1px dashed #e3ddcf;border-radius:14px;display:flex;flex-direction:column;align-items:center;gap:6px}
.lz-empty2 .lz-empty-t{font:600 15px var(--serif);color:#23211c}
.lz-empty2 .lz-empty-s{margin:0 auto;max-width:340px}
.lz-proc{display:flex;align-items:center;gap:13px;padding:22px;background:#f5f9f3;border:1px dashed #cdd8c8;border-radius:14px}
.lz-spin{width:26px;height:26px;flex-shrink:0;border-radius:50%;border:3px solid #d4e2cf;border-top-color:#2f6b46;display:inline-block;animation:lzSpin .8s linear infinite}
.lz-proc-t{font:600 13.5px var(--sans);color:#2f6b46}
.lz-proc-s{font:500 12px var(--sans);color:#6e7a68;margin-top:2px}
@keyframes lzSpin{to{transform:rotate(360deg)}}
@keyframes lzFade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes lzSlideIn{from{transform:translateX(100%)}to{transform:translateX(0)}}
@keyframes lzSlideOut{from{transform:translateX(0)}to{transform:translateX(100%)}}
.lz-tabbody{margin-top:16px;animation:lzFade .28s ease both}
/* аккордеоны (мобайл) */
.lz-acc{border:1px solid #e8e2d4;border-radius:14px;overflow:hidden;background:#fffefb}
.lz-acc-head{width:100%;display:flex;align-items:center;gap:10px;padding:14px 15px;background:transparent;border:none;cursor:pointer}
.lz-acc-head span{flex:1;text-align:left;font:600 14px var(--sans);color:#23211c}
.lz-acc-chev{transition:transform .25s ease;transform:rotate(180deg)}
.lz-acc.collapsed .lz-acc-chev{transform:rotate(0deg)}
.lz-acc-body{display:grid;grid-template-rows:1fr;transition:grid-template-rows .32s cubic-bezier(.4,0,.2,1)}
.lz-acc.collapsed .lz-acc-body{grid-template-rows:0fr}
.lz-acc-inner{min-height:0;overflow:hidden}
.lz-acc-inner>*{margin:0 15px 16px}
/* диалог расшифровки */
.lz-dialog{display:flex;flex-direction:column;gap:13px}
.lz-dseg{display:flex;gap:12px}
.lz-dt{font:700 11.5px var(--sans);color:#a7a293;flex-shrink:0;width:44px;padding-top:2px}
.lz-dmain{flex:1;min-width:0}
.lz-dwho{font:700 12px var(--sans);color:#8a6d3f}
.lz-dwho.tut.eng{color:#2f6b46}
.lz-dwho.tut.phys{color:#3f6577}
.lz-dwho.stu{color:#8a6d3f}
.lz-dtx{font:500 14.5px/1.6 var(--sans);color:#3a382f;margin-top:2px}
.lz-dhead-meta{font:500 11.5px var(--sans);color:#8a8576;margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* модалка добавления урока — зелёная шапка */
.lz-amodal{display:flex;flex-direction:column}
.lz-ahead{display:flex;align-items:center;gap:11px;padding:18px 20px;background:linear-gradient(120deg,#23382c,#2f4738)}
.lz-aic{width:38px;height:38px;border-radius:11px;background:rgba(201,224,196,.18);color:#dcebd6;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.lz-atx{flex:1;min-width:0}
.lz-atitle{font:600 16.5px var(--serif);color:#f4efe2}
.lz-asub{font:500 11.5px var(--sans);color:#bcd0b8;margin-top:1px}
.lz-ax{width:34px;height:34px;border-radius:10px;border:1px solid rgba(244,239,226,.25);background:rgba(255,255,255,.07);color:#f4efe2;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s}
.lz-ax:hover{background:rgba(255,255,255,.16)}
.lz-abody{padding:20px;display:flex;flex-direction:column;gap:14px}
.lz-afoot{border-top:1px solid #e7e3d8;background:#fbf9f3;padding:14px 20px;display:flex;gap:11px;justify-content:flex-end}
.lz-fcancel{font:600 13px var(--sans);color:#3f5a48;background:#fff;border:1px solid #cfdccb;border-radius:12px;padding:12px 18px;cursor:pointer;transition:background .15s}
.lz-fcancel:hover{background:#f0f6ee}
.lz-fok{display:inline-flex;align-items:center;gap:8px;font:600 13.5px var(--sans);color:#fdfcf7;background:linear-gradient(120deg,#2f6b46,#23382c);border:none;border-radius:12px;padding:12px 20px;cursor:pointer;box-shadow:0 8px 18px rgba(47,107,70,.24);transition:transform .16s,box-shadow .16s}
.lz-fok:hover{transform:translateY(-1px);box-shadow:0 10px 22px rgba(47,107,70,.3)}
.lz-note{display:flex;align-items:center;gap:11px;padding:13px 15px;border:1px dashed #cdd8c8;border-radius:12px;background:#f5f9f3;font:500 12px var(--sans);color:#6e7a68}
.lz-note svg{color:#5e8068;flex-shrink:0;width:16px;height:16px}
.lz-fg{display:flex;flex-direction:column;gap:6px}
.lz-fg label{font:600 11.5px var(--sans);color:#3a382f}
@media(max-width:980px){
  .lz-titlerow{align-items:flex-start}
  .lz-titlerow .lz-dtitle{flex:1;min-width:0}
  .lz-titleedit{margin-left:auto;flex-shrink:0}
  .lz-split{grid-template-columns:1fr}
  .lz-detailwrap{display:none}
  .lz-detailwrap .lz-detail{background:transparent;border:none;border-radius:0;box-shadow:none;min-height:100%}
  .lz-dhead{display:flex;position:sticky;top:0;z-index:2;padding:16px}
  .lz-dhead-title{font-size:16px}
  .lz-dpad{padding:16px;display:flex;flex-direction:column;gap:14px}
  .lz-row{padding:18px 17px;gap:13px}
  .lz-rowtitle{font-size:16px}
  .lz-rowmeta{font-size:13px}
  .lz-date{width:54px;height:54px}
  .lz-date b{font-size:20px}
  .lz-chip{font-size:11.5px;padding:6px 10px}
  .lz-acc-head span{font-size:15px}
  .lz-toolbar .lz-prim{width:100%;justify-content:center}
}
/* обзор: список материалов ученика + кликабельный стат */
.stat.clickable{cursor:pointer;transition:transform .15s,box-shadow .15s}
.stat.clickable:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(40,53,40,.1)}
.ov-mat{display:flex;align-items:center;gap:10px;padding:9px 0;cursor:pointer;border-top:1px solid #f0ece1}
.ov-mat:first-child{border-top:none}
.ov-mat-ic{width:30px;height:30px;border-radius:9px;background:#eef0e9;color:#3f5a48;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.ov-mat-ic svg{width:16px;height:16px}
.ov-mat-t{font:500 13px var(--sans);color:#23211c;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* выбор предмета при брони */
.sch-fg{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.sch-lbl{font:600 11.5px var(--sans);color:#3a382f}
.sch-selwrap{position:relative}
.sch-selwrap svg{position:absolute;right:12px;top:50%;transform:translateY(-50%);pointer-events:none}
.sch-sel{width:100%;box-sizing:border-box;padding:11px 34px 11px 13px;font:500 13.5px var(--sans);color:#23211c;background:#fffefb;border:1px solid #dcd6c8;border-radius:11px;appearance:none;-webkit-appearance:none;-moz-appearance:none;cursor:pointer;outline:none}
.sch-sel:focus{border-color:#7fa07f}

/* ==================== ЗАДАНИЯ (Задания.dc) ==================== */
@keyframes tkIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes tkTabFade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
/* --- список: заголовок --- */
.tk-titlerow{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:14px}
.tk-h1{margin:0;font:600 33px var(--serif);color:#23211c}
.tk-sub{margin:8px 0 0;font:500 13.5px var(--sans);color:#8a8576}
.tk-create{display:flex;align-items:center;gap:8px;font:600 13.5px var(--sans);color:#fdfcf7;background:linear-gradient(120deg,#23382c,#2f4738);border:none;border-radius:12px;padding:13px 19px;cursor:pointer;box-shadow:0 8px 18px rgba(35,56,44,.2);transition:transform .16s,box-shadow .16s}
.tk-create:hover{transform:translateY(-1px);box-shadow:0 12px 24px rgba(35,56,44,.26)}
.tk-create svg{stroke:#f4efe2}
/* --- вкладки --- */
.tk-tabs{margin-top:22px;display:flex;gap:4px;padding:4px;background:#f1ede3;border-radius:14px;overflow-x:auto;width:fit-content;max-width:100%}
.tk-tab{display:flex;align-items:center;gap:8px;white-space:nowrap;cursor:pointer;border:none;border-radius:10px;padding:9px 15px;font:500 13px var(--sans);color:#8a8576;background:transparent;transition:background .18s,color .18s,box-shadow .18s}
.tk-tab.on{font-weight:600;color:#23382c;background:#fffefb;box-shadow:0 2px 7px rgba(40,35,25,.1)}
.tk-tabc{font:700 10.5px var(--sans);min-width:18px;height:18px;padding:0 5px;box-sizing:border-box;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;background:#e2ddd0;color:#9a937f}
.tk-tabc.on{background:#23382c;color:#f4efe2}
/* --- пустое состояние --- */
.tk-empty{margin-top:22px;padding:46px 22px;text-align:center;background:#fcfaf4;border:1px dashed #e3ddcf;border-radius:18px;animation:tkIn .4s ease both}
.tk-empty-ic{width:54px;height:54px;margin:0 auto 14px;border-radius:16px;background:#eef0e9;display:flex;align-items:center;justify-content:center}
.tk-empty-t{font:600 16px var(--serif);color:#23211c}
.tk-empty-s{margin:7px auto 0;font:500 12.5px var(--sans);color:#a7a293}
/* --- сетка карточек --- */
.tk-tablist{margin-top:22px;display:flex;flex-direction:column;gap:18px;animation:tkTabFade .42s cubic-bezier(.16,.84,.44,1) both}
/* при входе в раздел (каскад .anim) правило #dashContent.anim>* (schEnter) выигрывает
   по специфичности и включает список в общий каскад сверху вниз; на переключении вкладок
   (без .anim) играет собственный tkTabFade — плавно всплывают только карточки. */
.tk-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:stretch}
.tk-card{display:flex;flex-direction:column;gap:13px;background:#fffefb;border:1.5px solid #5e8068;border-radius:16px;padding:17px 18px;box-sizing:border-box;transition:transform .2s,box-shadow .2s,border-color .2s}
.tk-card:hover{transform:translateY(-3px);box-shadow:0 18px 34px rgba(35,56,44,.13);border-color:#9dba98}
.tk-cardtop{display:flex;align-items:flex-start;gap:13px}
.tk-tile{width:46px;height:46px;border-radius:13px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.tk-tile.eng{background:#e7f0e7;color:#3f6b4c}
.tk-tile.phys{background:#e6eef0;color:#3f6577}
.tk-cardmain{flex:1;min-width:0}
.tk-subj{display:inline-block;font:600 10.5px var(--sans);border-radius:7px;padding:3px 9px;letter-spacing:.01em}
.tk-subj.eng{background:#e7f0e7;color:#3f6b4c}
.tk-subj.phys{background:#e9eff1;color:#46697a}
.tk-ctitle{margin-top:7px;font:600 15.5px var(--sans);color:#23211c;line-height:1.34}
.tk-badge{font:600 10.5px var(--sans);border-radius:20px;padding:5px 11px;white-space:nowrap;flex-shrink:0;align-self:flex-start}
.tk-badge.assigned{background:#eef0e9;color:#5e7a64}
.tk-badge.review{background:#f6ebdf;color:#bd6a37}
.tk-badge.done{background:#e7f0e7;color:#3f6b4c}
.tk-cmeta{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding-top:2px}
.tk-cav{width:26px;height:26px;border-radius:50%;background:linear-gradient(135deg,#2f4738,#23382c);display:flex;align-items:center;justify-content:center;font:600 10px var(--sans);color:#f4efe2;flex-shrink:0}
.tk-cstu{font:500 12.5px var(--sans);color:#6b6657;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tk-cdue{display:flex;align-items:center;gap:6px;font:500 12px var(--sans);color:#8a8576}
.tk-cdiv{height:1px;background:#f1ede3;margin-top:auto}
.tk-cfoot{display:flex;align-items:center;gap:11px}
.tk-note{font:500 12px var(--sans);color:#a7a293}
.tk-cscore{display:flex;align-items:center;gap:6px;font:600 13px var(--sans);color:#3f6b4c}
.tk-act{display:flex;align-items:center;gap:7px;cursor:pointer;border-radius:11px;padding:10px 16px;font:600 12.5px var(--sans);white-space:nowrap;margin-left:auto;transition:transform .16s,box-shadow .16s,background .16s,border-color .16s}
.tk-act:hover{transform:translateY(-1px)}
.tk-act.tk-prim{color:#fdfcf7;background:linear-gradient(120deg,#2f6b46,#23382c);border:none;box-shadow:0 7px 16px rgba(47,107,70,.22)}
.tk-act.tk-ghost{color:#3f5a48;background:#fffefb;border:1px solid #cfc8b6}
.tk-act.tk-ghost:hover{background:#f1ede3;border-color:#c9b88f}
/* --- архив: аккордеон по ученику --- */
.tk-sec{display:flex;flex-direction:column}
.tk-fold-head{display:flex;align-items:center;gap:13px;padding:11px 13px;border-radius:14px;user-select:none;cursor:pointer;transition:background .18s}
.tk-fold-head:hover{background:#f3f5ef}
.tk-fold-chev{display:flex;flex-shrink:0;transition:transform .25s ease;transform:rotate(90deg)}
.tk-sec.collapsed .tk-fold-chev{transform:rotate(0deg)}
.tk-fold-av{width:38px;height:38px;border-radius:50%;background:linear-gradient(135deg,#2f4738,#23382c);display:flex;align-items:center;justify-content:center;font:600 12.5px var(--sans);color:#f4efe2;flex-shrink:0}
.tk-fold-tx{flex:1;min-width:0}
.tk-fold-name{font:600 16px var(--serif);color:#23211c}
.tk-fold-sub{font:500 11.5px var(--sans);color:#8a8576}
.tk-fold-avg{font:700 11px var(--sans);color:#a07a3e;background:#f3ece0;border-radius:20px;padding:4px 10px;flex-shrink:0}
.tk-fold-count{font:600 11px var(--sans);color:#5e7a64;background:#eef0e9;border-radius:20px;padding:4px 10px;flex-shrink:0}
/* Анимация сворачивания включается ТОЛЬКО на время самого сворачивания —
   класс is-folding вешается по нажатию. Раньше переход стоял всегда, и папка
   проигрывала его при любой перерисовке списка: карточки успевали показаться
   и тут же уезжали. Это и было «мелькают, а потом появляются». */
.tk-fold-body{display:grid;grid-template-rows:1fr}
.tk-sec.collapsed .tk-fold-body{grid-template-rows:0fr}
.tk-sec.is-folding .tk-fold-body{transition:grid-template-rows .38s cubic-bezier(.4,0,.2,1)}
.tk-fold-inner{min-height:0;overflow:hidden}
/* Содержимое гаснет заодно с высотой: на последних кадрах схлопывания
   карточки иначе видны сплющенными. */
.tk-sec.collapsed .tk-fold-inner{opacity:0}
.tk-sec.is-folding .tk-fold-inner{transition:opacity .2s ease}
.tk-fold-inner .tk-grid{padding-top:14px}
/* --- конструктор --- */
.tk-bhead{display:flex;align-items:center;gap:14px}
.tk-back{width:42px;height:42px;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:#f0f6ee;border:1px solid #cfe0cb;border-radius:13px;cursor:pointer;color:#2f6b46;transition:background .18s,border-color .18s}
.tk-back:hover{background:#e4eee2;border-color:#bcd0b8}
.tk-bh1{margin:0;font:600 27px var(--serif);color:#23211c}
.tk-bsub{margin:5px 0 0;font:500 12.5px var(--sans);color:#6e7a68}
.tk-bmain{max-width:880px;margin:18px auto 0;display:flex;flex-direction:column;gap:20px}
@keyframes tkHolderIn{from{transform:translateX(100%)}to{transform:translateX(0)}}
@keyframes tkHolderOut{from{transform:translateX(0)}to{transform:translateX(100%)}}
/* мятно-зелёный фон всей контентной области, когда открыт конструктор/прохождение (шапки остаются) */
.dash.tk-mint{background:repeating-linear-gradient(45deg,rgba(47,107,70,.05) 0 1px,transparent 1px 24px),repeating-linear-gradient(-45deg,rgba(47,107,70,.04) 0 1px,transparent 1px 24px),linear-gradient(180deg,#eef4ec,#e3ede1);background-attachment:fixed}
.dash.tk-mint #dashContent{overflow-x:clip}
.tk-bwrap{position:relative;padding-bottom:32px}
.tk-bwrap>.tk-bmain{margin-top:16px}
.tk-bwrap.tk-enter{animation:tkHolderIn .42s cubic-bezier(.4,0,.2,1) both}
.tk-bwrap.tk-out{animation:tkHolderOut .3s cubic-bezier(.4,0,.2,1) both}
@media(max-width:760px){.tk-bwrap{padding-bottom:calc(90px + env(safe-area-inset-bottom))}.tk-bh1{font-size:23px}}
@media (prefers-reduced-motion:reduce){.tk-bwrap.tk-enter,.tk-bwrap.tk-out{animation:none!important}}
.tk-bsec{background:#fffefb;border:1px solid #d9e4d4;border-radius:18px;box-shadow:0 6px 22px rgba(40,53,40,.05);padding:20px 22px;transition:border-color .2s,box-shadow .2s}
.tk-bsec.tk-err-ring{border-color:#e6b48f;box-shadow:0 0 0 3px rgba(217,139,95,.12)}
.tk-secrow{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}
.tk-sechead{display:flex;align-items:center;gap:9px}
.tk-step{width:26px;height:26px;border-radius:8px;background:#eef0e9;display:flex;align-items:center;justify-content:center;font:700 12px var(--sans);color:#3f5a48;flex-shrink:0}
.tk-sectitle{font:600 16px var(--serif);color:#23211c}
.tk-selc{font:600 11.5px var(--sans);color:#5e7a64;background:#eef0e9;border-radius:20px;padding:4px 11px}
.tk-stugrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px}
.tk-stu{display:flex;align-items:center;gap:10px;cursor:pointer;text-align:left;border-radius:13px;padding:11px 12px;border:1.5px solid #dce5d7;background:#fbfdfa;transition:transform .16s,border-color .18s,background .18s,box-shadow .18s}
.tk-stu:hover{transform:translateY(-2px);border-color:#9dba98}
.tk-stu.on{border-color:#2f6b46;background:#eef5ec;box-shadow:0 6px 16px rgba(47,107,70,.14)}
.tk-stu-av{width:34px;height:34px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font:600 12px var(--sans);color:#f4efe2;background:linear-gradient(135deg,#7d8a78,#5f6c5b)}
.tk-stu.on .tk-stu-av{background:linear-gradient(135deg,#2f6b46,#23382c)}
.tk-stu-tx{flex:1;min-width:0;text-align:left}
.tk-stu-name{font:600 13px var(--sans);color:#23211c;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tk-stu-subj{font:500 11px var(--sans);color:#8a8576}
.tk-stu-check{width:22px;height:22px;flex-shrink:0;border-radius:7px;display:flex;align-items:center;justify-content:center;border:1.5px solid #cfdccb;background:#fff}
.tk-stu-check.on{border-color:#2f6b46;background:#2f6b46}
.tk-ferr{margin-top:11px;font:600 12px var(--sans);color:#c2703f}
.tk-fg{display:flex;flex-direction:column;gap:6px}
.tk-fg+.tk-fg{margin-top:16px}
.tk-fg>label{font:600 11.5px var(--sans);color:#3a382f}
.tk-input{width:100%;box-sizing:border-box;padding:12px 14px;font:500 14px var(--sans);color:#23211c;background:#fbfdfa;border:1px solid #d3ddcd;border-radius:11px;transition:border-color .18s,box-shadow .18s,background .18s}
.tk-input:focus,.tk-area:focus,.tk-num:focus{outline:none;border-color:#7fa07f;background:#fff;box-shadow:0 0 0 3px rgba(47,107,70,.14)}
.tk-input.tk-err-ring{border-color:#d98b5f;box-shadow:0 0 0 3px rgba(217,139,95,.16)}
/* бейдж «Просрочено» на карточках/в модалках заданий */
.tk-over{display:inline-flex;align-items:center;gap:4px;font:600 11px var(--sans);color:#a2431f;background:#f7e2d6;border:1px solid #eccab5;border-radius:20px;padding:3px 10px;white-space:nowrap;margin-left:6px}
/* проверка: заблокированное поле баллов (после «Неверно») */
.tk-num.locked,.tk-num:disabled{background:#efece4;color:#b0aa99;cursor:not-allowed;opacity:.75}
.tk-area{width:100%;box-sizing:border-box;padding:12px 14px;font:500 13.5px/1.55 var(--sans);color:#23211c;background:#fbfdfa;border:1px solid #d3ddcd;border-radius:11px;resize:vertical;transition:border-color .18s,box-shadow .18s,background .18s}
.tk-fhint{font:500 11px var(--sans);color:#a7a293}
.tk-selwrap{position:relative}
.tk-selwrap svg{position:absolute;right:12px;top:50%;transform:translateY(-50%);pointer-events:none}
.tk-sel{width:100%;box-sizing:border-box;padding:12px 34px 12px 14px;font:500 14px var(--sans);color:#23211c;background:#fbfdfa;border:1px solid #d3ddcd;border-radius:11px;appearance:none;-webkit-appearance:none;-moz-appearance:none;cursor:pointer;outline:none;transition:border-color .18s,box-shadow .18s,background .18s}
.tk-sel:focus{border-color:#7fa07f;background:#fff;box-shadow:0 0 0 3px rgba(47,107,70,.14)}
.tk-drop{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;min-height:170px;border:1.6px dashed #c4d4bf;border-radius:16px;background:#fbfdfa;cursor:pointer;overflow:hidden;text-align:center;transition:border-color .25s,background .25s,transform .3s,box-shadow .3s}
.tk-drop:hover{border-color:#9dba98;background:#f3f8f1}
.tk-cover-empty{display:flex;flex-direction:column;align-items:center;gap:10px}
.tk-cover-ic{width:54px;height:54px;border-radius:15px;background:#eaf2e7;display:flex;align-items:center;justify-content:center}
.tk-cover-t{font:600 14px var(--sans);color:#23211c}
.tk-cover-s{font:500 11.5px var(--sans);color:#8a8576;margin-top:2px}
.tk-cover-has{position:absolute;top:0;right:0;bottom:0;left:0;background-size:cover;background-position:center;border-radius:15px}
.tk-cover-x{position:absolute;top:11px;right:11px;width:32px;height:32px;border-radius:10px;border:none;background:rgba(255,255,255,.92);display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,.2);font:600 13px var(--sans);color:#8a8576}
.tk-2col{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.tk-setbox{background:#fbfdfa;border:1px solid #e3ebdf;border-radius:14px;padding:15px 16px}
.tk-setlbl{display:flex;align-items:center;gap:8px;margin-bottom:12px;font:600 13px var(--sans);color:#23211c}
.tk-stepper{display:flex;align-items:center;gap:10px}
.tk-stepb{width:38px;height:38px;flex-shrink:0;border-radius:11px;border:1px solid #d3ddcd;background:#fff;color:#3f5a48;display:flex;align-items:center;justify-content:center;cursor:pointer;font:600 20px var(--sans);line-height:1;transition:background .16s,border-color .16s,color .16s}
.tk-stepb:hover{background:#e4eee2;border-color:#9dba98;color:#23382c}
.tk-stepb:disabled{opacity:.45;cursor:default}
.tk-stepval{flex:1;text-align:center;font:600 16px var(--sans);color:#23211c}
.tk-stepval2{flex:1;text-align:center}
.tk-stepval2>div:first-child{font:600 16px var(--sans);color:#23211c}
.tk-stepsub{font:500 10.5px var(--sans);color:#8a8576;margin-top:2px}
.tk-check2{display:flex;align-items:center;gap:9px;margin-top:12px;cursor:pointer;font:500 12px var(--sans);color:#5e6b58}
.tk-check2 input{accent-color:#2f6b46;width:16px;height:16px}
.tk-chips{display:flex;gap:6px;margin-top:11px}
.tk-chip{flex:1;cursor:pointer;border-radius:9px;padding:7px 4px;border:1px solid #d8e2d3;background:#fff;color:#7c8678;font:500 11.5px var(--sans);transition:background .16s,color .16s,border-color .16s}
.tk-chip:hover{border-color:#9dba98}
.tk-chip.on{border-color:#2f6b46;background:#eaf2e7;color:#2f6b46;font-weight:600}
.tk-qlist{display:flex;flex-direction:column;gap:14px}
.tk-qcard{background:#fbfdfa;border:1px solid #dde7d8;border-radius:15px;padding:16px 17px;display:flex;flex-direction:column;gap:13px}
.tk-qhead{display:flex;align-items:center;gap:11px}
.tk-qnum{width:28px;height:28px;flex-shrink:0;border-radius:9px;background:linear-gradient(135deg,#2f6b46,#23382c);display:flex;align-items:center;justify-content:center;font:700 12px var(--sans);color:#f4efe2}
.tk-qseg{display:inline-flex;padding:3px;background:#eaf0e7;border-radius:11px;gap:3px;flex-wrap:wrap}
.tk-qtype{cursor:pointer;border:none;border-radius:8px;padding:7px 12px;font:500 12px var(--sans);color:#7c8678;background:transparent;white-space:nowrap;transition:background .18s,color .18s,box-shadow .18s}
.tk-qtype.on{font-weight:600;color:#23382c;background:#fff;box-shadow:0 2px 6px rgba(40,53,40,.1)}
.tk-qright{margin-left:auto;display:flex;align-items:center;gap:8px;flex-shrink:0}
.tk-qpts{display:flex;align-items:center;gap:6px;background:#fff;border:1px solid #d3ddcd;border-radius:10px;padding:4px 6px 4px 11px}
.tk-qpts span{font:500 11px var(--sans);color:#8a8576}
.tk-num{width:38px;border:none;background:transparent;font:700 14px var(--sans);color:#23211c;text-align:center;-moz-appearance:textfield}
.tk-num::-webkit-outer-spin-button,.tk-num::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.tk-del2{width:34px;height:34px;border-radius:10px;border:1px solid #e3ebdf;background:#fff;color:#a39e8f;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .16s,color .16s}
.tk-del2:hover{background:#f4ece6;color:#bd6a37}
.tk-qattachrow{display:flex;align-items:center;gap:10px}
.tk-attach{display:flex;align-items:center;gap:7px;background:#fff;border:1px dashed #c4d4bf;cursor:pointer;font:600 12px var(--sans);color:#5e8068;padding:9px 13px;border-radius:10px;transition:color .16s,border-color .16s}
.tk-attach:hover{border-color:#7fa07f;color:#2f6b46}
.tk-qimg{display:flex;align-items:center;gap:8px;width:100%}
.tk-qimg img{width:64px;height:48px;border-radius:9px;object-fit:cover;flex-shrink:0;background:#eef0e9}
.tk-qimg span{font:500 12px var(--sans);color:#6e7a68}
.tk-qimg .tk-optdel2{margin-left:auto}
.tk-opts{display:flex;flex-direction:column;gap:8px}
.tk-optrow{display:flex;align-items:center;gap:10px}
.tk-mark{width:22px;height:22px;flex-shrink:0;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:7px;border:1.6px solid #c4d0bd;background:#fff;padding:0;transition:background .15s,border-color .15s,transform .12s}
.tk-mark.radio{border-radius:50%}
.tk-mark:hover{transform:scale(1.08)}
.tk-mark.on{border-color:#2f6b46;background:#2f6b46}
.tk-optinput{flex:1;min-width:0;padding:9px 12px;font:500 13px var(--sans);background:#fff;border-color:#dde7d8}
.tk-optdel2{width:30px;height:30px;flex-shrink:0;border-radius:9px;border:1px solid #e3ebdf;background:#fff;color:#b3ab9a;display:flex;align-items:center;justify-content:center;cursor:pointer;font:600 13px var(--sans);transition:background .16s,color .16s}
.tk-optdel2:hover{background:#f4ece6;color:#bd6a37}
.tk-addopt2{align-self:flex-start;display:flex;align-items:center;gap:6px;background:transparent;border:none;cursor:pointer;font:600 12.5px var(--sans);color:#5e8068;padding:4px 2px;transition:color .16s}
.tk-addopt2:hover{color:#2f6b46}
.tk-addopt2 svg{stroke:currentColor}
.tk-markhint{font:500 11px var(--sans);color:#9aa48f}
.tk-opennote{display:flex;align-items:center;gap:11px;padding:13px 15px;border:1px dashed #cdd8c8;border-radius:12px;background:#f5f9f3;font:500 12.5px var(--sans);color:#6e7a68}
.tk-opennote svg{flex-shrink:0}
.tk-take-qtext{flex:1;min-width:0;font:600 15px var(--sans);color:#23211c;line-height:1.4}
.tk-takeopts{display:flex;flex-direction:column;gap:9px}
.tk-takeopt{display:flex;align-items:center;gap:11px;padding:12px 14px;border:1.5px solid #dce5d7;border-radius:12px;cursor:pointer;font:500 14px var(--sans);color:#3a382f;background:#fbfdfa;transition:border-color .15s,background .15s}
.tk-takeopt:hover{border-color:#9dba98}
.tk-takeopt:has(input:checked){border-color:#2f6b46;background:#eef5ec}
.tk-takeopt input{accent-color:#2f6b46;width:18px;height:18px;flex-shrink:0;margin:0}
.tk-attname{font:500 12px var(--sans);color:#6e7a68}
.tk-bhead .take-timer{margin-left:auto;flex-shrink:0;align-self:center;background:#eef5ec;color:#2f6b46;border:1px solid #bcd0b8}
.tk-bhead .take-timer.low{background:#f6ebdf;color:#bd6a37;border-color:#e6c3a3}
.tk-addq{display:flex;align-items:center;justify-content:center;gap:9px;padding:15px;margin-top:14px;width:100%;box-sizing:border-box;border:1.6px dashed #bcd0b8;border-radius:14px;background:#f5f9f3;cursor:pointer;font:600 13.5px var(--sans);color:#2f6b46;transition:background .2s,border-color .2s,transform .16s}
.tk-addq:hover{background:#eef5ec;border-color:#7fa07f;transform:translateY(-1px)}
.tk-addq svg{stroke:currentColor}
/* --- блок сохранения --- */
.tk-savebox{background:linear-gradient(135deg,#2f6b46,#23382c);border-radius:18px;box-shadow:0 14px 30px rgba(35,56,44,.22);padding:22px 24px;display:flex;flex-direction:column;gap:16px}
.tk-savehead{display:flex;align-items:center;gap:13px}
.tk-saveic{width:42px;height:42px;border-radius:13px;background:rgba(201,224,196,.18);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.tk-saveic svg{stroke:#dcebd6}
.tk-savet{font:600 17px var(--serif);color:#f4efe2}
.tk-saves{font:500 12.5px var(--sans);color:#bcd0b8;margin-top:2px}
.tk-savechips{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.tk-savechips span{display:inline-flex;align-items:center;gap:6px;background:rgba(255,255,255,.08);border-radius:9px;padding:6px 11px;font:500 11.5px var(--sans);color:#cfe0cb}
.tk-saverow{display:flex;align-items:center;gap:12px;border-top:1px solid rgba(255,255,255,.12);padding-top:16px}
.tk-cancel2{font:600 13px var(--sans);color:#eaf2e7;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18);border-radius:12px;padding:13px 18px;cursor:pointer;transition:background .16s}
.tk-cancel2:hover{background:rgba(255,255,255,.16)}
.tk-save2{margin-left:auto;display:flex;align-items:center;gap:8px;font:600 13.5px var(--sans);color:#23382c;background:#f4efe2;border:none;border-radius:12px;padding:14px 24px;cursor:pointer;box-shadow:0 8px 18px rgba(0,0,0,.18);white-space:nowrap;transition:transform .16s,box-shadow .16s}
.tk-save2:hover{transform:translateY(-1px)}
.tk-save2 svg{stroke:#23382c}
.tk-save2:disabled{opacity:.6;cursor:default}
/* --- модалка проверки/результата --- */
.tk-modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;background:rgba(18,28,21,.45);display:flex;align-items:center;justify-content:center;padding:24px;box-sizing:border-box;opacity:0;transition:opacity .3s ease,backdrop-filter .35s ease}
.tk-modal-bg.is-open{opacity:1;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}
.tk-modal-card{width:620px;max-width:100%;max-height:90%;background:#fffefb;border-radius:20px;box-shadow:0 34px 90px rgba(18,28,21,.4);overflow:hidden;display:flex;flex-direction:column;transform:translateY(20px) scale(.97);opacity:0;transition:transform .38s cubic-bezier(.3,1,.45,1),opacity .3s ease}
.tk-modal-bg.is-open .tk-modal-card{transform:none;opacity:1}
.tk-mhead{display:flex;align-items:center;gap:13px;padding:18px 20px;background:linear-gradient(120deg,#23382c,#2f4738);flex-shrink:0}
.tk-mav{width:40px;height:40px;border-radius:50%;background:rgba(201,224,196,.18);display:flex;align-items:center;justify-content:center;flex-shrink:0;font:600 13px var(--sans);color:#dcebd6}
.tk-mtx{flex:1;min-width:0}
.tk-mkick{font:600 11px var(--sans);color:#a9c2a3;letter-spacing:.1em;text-transform:uppercase}
.tk-mtitle{font:600 16.5px var(--serif);color:#f4efe2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tk-msub{font:500 11.5px var(--sans);color:#bcd0b8;margin-top:1px}
.tk-mx{width:34px;height:34px;border-radius:10px;border:1px solid rgba(244,239,226,.25);background:rgba(255,255,255,.07);display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s}
.tk-mx:hover{background:rgba(255,255,255,.14)}
.tk-mbody{padding:20px 22px;display:flex;flex-direction:column;gap:16px;overflow-y:auto}
.tk-gbanner{display:flex;align-items:center;gap:14px;background:#f0f6ee;border:1px solid #d4e4cf;border-radius:15px;padding:15px 18px}
.tk-gkick{font:600 11.5px var(--sans);color:#6e7a68;text-transform:uppercase;letter-spacing:.06em}
.tk-gbig{display:flex;align-items:baseline;gap:4px;margin-top:3px;font:700 30px var(--serif);color:#23382c}
.tk-gbig span{font:600 15px var(--sans);color:#7c8678}
.tk-gbig.sm{font-size:26px;margin-top:2px}
.tk-gright{margin-left:auto;font:500 11.5px var(--sans);color:#6e7a68;text-align:right}
.tk-gright b{font:700 14px var(--sans);color:#3f6b4c}
.tk-rqlist{display:flex;flex-direction:column;gap:12px}
.tk-rq{background:#fbfdfa;border:1px solid #e3ebdf;border-radius:14px;padding:15px 16px;display:flex;flex-direction:column;gap:11px}
.tk-rqhead{display:flex;align-items:flex-start;gap:10px}
.tk-rqnum{width:24px;height:24px;flex-shrink:0;border-radius:8px;background:#eef0e9;display:flex;align-items:center;justify-content:center;font:700 11px var(--sans);color:#3f5a48}
.tk-rqmain{flex:1;min-width:0}
.tk-rqtext{font:600 14px var(--sans);color:#23211c;line-height:1.4}
.tk-rqmeta{font:500 10.5px var(--sans);color:#9aa48f;margin-top:3px}
.tk-rqtags{display:flex;flex-direction:column;align-items:flex-end;gap:5px;flex-shrink:0}
.tk-vbadge{font:600 10px var(--sans);border-radius:7px;padding:4px 8px;flex-shrink:0}
.tk-vbadge.ok{background:#e7f0e7;color:#3f6b4c}
.tk-vbadge.err{background:#f6e6dc;color:#bd6a37}
.tk-auto{font:600 10px var(--sans);border-radius:7px;padding:4px 8px;flex-shrink:0;background:#eef0e9;color:#7c8678}
.tk-need{font:600 10px var(--sans);border-radius:7px;padding:4px 8px;flex-shrink:0;background:#f3ece0;color:#a07a3e}
.tk-rqimg{margin-left:34px;max-width:280px;border-radius:10px;overflow:hidden;border:1px solid #e3ebdf}
.tk-rqimg img{max-width:100%;max-height:300px;width:auto;display:block}
.tk-rqfile{padding-left:34px;display:flex;flex-direction:column;gap:7px;align-items:flex-start}
.tk-rqfile .att-view{margin:0}
.tk-rqfile .att-img{max-width:220px;max-height:280px;width:auto;border-radius:10px;border:1px solid #e3ebdf;display:block}
.tk-rqfile .att-dl{display:inline-flex;align-items:center;gap:6px;border:1px solid #cfdccb;border-radius:10px;padding:9px 14px;color:#2f6b46;font:600 12.5px var(--sans);text-decoration:none}
.tk-rqans{display:flex;flex-direction:column;gap:5px;padding-left:34px}
.tk-ansrow{display:flex;align-items:baseline;gap:7px;flex-wrap:wrap}
.tk-anslbl{font:600 12px var(--sans);color:#8a8576;flex-shrink:0;white-space:nowrap}
.tk-ansval{font:600 15px var(--sans);color:#23211c;line-height:1.4}
.tk-ansval.ok{color:#23211c}
.tk-ansval.err{color:#bd6a37}
.tk-anscor{font:600 15px var(--sans);color:#3f6b4c;line-height:1.4}
.tk-rqnote{margin-left:34px;font:500 12.5px/1.5 var(--sans);color:#5e5a4e;background:#f5f6f1;border:1px solid #e7e3d8;border-radius:11px;padding:10px 13px}
.tk-rqnote b{color:#3a382f;font-weight:600}
.tk-graderow{display:flex;align-items:center;gap:8px;padding-left:34px;flex-wrap:wrap}
.tk-gbtn{display:inline-flex;align-items:center;gap:5px;cursor:pointer;border-radius:9px;padding:7px 12px;font:600 11.5px var(--sans);border:1px solid #d8e2d3;background:#fff;color:#7c8678;transition:background .15s,border-color .15s,color .15s}
.tk-gbtn.ok{border-color:#2f6b46;background:#2f6b46;color:#fff}
.tk-gbtn.err{border-color:#c2703f;background:#c2703f;color:#fff}
.tk-gpts{display:flex;align-items:center;gap:6px;margin-left:auto;background:#fff;border:1px solid #cfdccb;border-radius:9px;padding:5px 11px}
.tk-gpts .tk-num{color:#23382c}
.tk-gpts span{font:600 11px var(--sans);color:#8a8576}
.tk-commview{font:500 13px/1.55 var(--sans);color:#4a4a40;background:#f5f6f1;border:1px solid #e7e3d8;border-radius:11px;padding:12px 14px}
.tk-mfoot{flex-shrink:0;border-top:1px solid #e7e3d8;background:#fbf9f3;padding:14px 20px;display:flex;align-items:center;gap:14px}
.tk-mfoot>div{flex:1;min-width:0}
.tk-finish{display:flex;align-items:center;gap:8px;font:600 13.5px var(--sans);color:#fdfcf7;background:linear-gradient(120deg,#2f6b46,#23382c);border:none;border-radius:12px;padding:13px 22px;cursor:pointer;box-shadow:0 8px 18px rgba(47,107,70,.24);white-space:nowrap;transition:transform .16s,box-shadow .16s}
.tk-finish:hover{transform:translateY(-1px)}
.tk-finish:disabled{opacity:.6;cursor:default}
.tk-finish svg{stroke:#f4efe2}
/* --- адаптив --- */
@media(max-width:900px){.tk-grid{grid-template-columns:1fr;align-items:stretch}.tk-stugrid{grid-template-columns:1fr 1fr}.tk-2col{grid-template-columns:1fr}
  /* карточки ДЗ — ровные, во всю ширину, без горизонтального сдвига */
  .tk-tablist{margin-top:18px}
  .tk-card{width:100%;margin:0}
  .tk-cardtop{align-items:flex-start}
  .tk-cardmain{min-width:0}
  .tk-cmeta{min-width:0}
  .tk-cstu{min-width:0;flex:1 1 auto}
  .tk-cdue{flex-shrink:0}
}
@media(max-width:760px){
  .tk-titlerow{flex-direction:column;align-items:stretch}
  .tk-titlerow .tk-create{width:100%;justify-content:center;padding:15px 19px;font-size:15px}
  .tk-h1{font-size:28px}
  .tk-sub{font-size:14px}
  .tk-tab{padding:11px 17px;font-size:14px}
  .tk-tabc{min-width:20px;height:20px;font-size:11.5px}
  .tk-card{gap:15px;padding:20px 19px;border-radius:18px}
  .tk-tile{width:52px;height:52px;border-radius:15px}
  .tk-subj{font-size:12px;padding:4px 11px}
  .tk-ctitle{font-size:17.5px;margin-top:8px}
  .tk-badge{font-size:11.5px;padding:6px 12px}
  .tk-cav{width:30px;height:30px;font-size:11px}
  .tk-cstu{font-size:14px}
  .tk-cdue{font-size:13px}
  .tk-note{font-size:13px}
  .tk-cscore{font-size:14.5px}
  .tk-act{padding:12px 18px;font-size:13.5px}
  .tk-fold-head{padding:13px 14px}
  .tk-fold-av{width:42px;height:42px;font-size:13.5px}
  .tk-fold-name{font-size:17px}
  .tk-fold-sub{font-size:12.5px}
  .tk-stugrid{grid-template-columns:1fr}
  .tk-qhead{flex-wrap:wrap}
  .tk-qright{margin-left:0;width:100%;justify-content:flex-end}
  .tk-saverow{flex-direction:column-reverse}
  .tk-saverow .tk-save2,.tk-saverow .tk-cancel2{width:100%;justify-content:center;margin-left:0}
  .tk-modal-bg{padding:0;align-items:stretch}
  .tk-modal-card{width:100%;max-width:100%;height:100%;max-height:100%;border-radius:0}
  .tk-mfoot{flex-wrap:wrap;gap:10px}
  .tk-finish{width:100%;justify-content:center}
}
@media (prefers-reduced-motion:reduce){.tk-card,.tk-modal-card,.tk-fold-body,.tk-bmain>section,.tk-titlerow{animation:none!important;transition:none!important}}

/* Связный конспект урока (пересказ прозой) */
.lz-sumtext{font-size:15px;line-height:1.62;color:#3a4139}
.lz-sumtext p{margin:0 0 10px}
.lz-sumtext p:last-child{margin-bottom:0}

/* Кнопка «поменять роли» в расшифровке */
.lz-swap{margin:0 0 12px}
.lz-swap-b{border:1.4px solid rgba(94,128,104,.5);background:transparent;color:#3d5a46;font-weight:600;font-size:13px;border-radius:10px;padding:7px 13px;cursor:pointer;transition:background .12s,border-color .12s}
.lz-swap-b:hover{background:rgba(94,128,104,.1);border-color:rgba(94,128,104,.7)}
@media(max-width:860px){.lz-swap{display:flex;justify-content:center}}

/* Подсветка зоны при перетаскивании видео */
.lz-drop.is-drag,.les-drop.is-drag{border-color:#5e8068 !important;background:rgba(94,128,104,.1)}

/* Блок родителя в форме регистрации — плавно сворачивается, без рывка */
.parent-block{display:grid;grid-template-rows:1fr;margin:0 0 22px;
  transition:grid-template-rows .38s cubic-bezier(.4,0,.2,1),opacity .26s ease,margin-bottom .38s ease}
.parent-block>.pb-in{overflow:hidden;min-height:0}
.parent-block.is-collapsed{grid-template-rows:0fr;opacity:0;margin-bottom:0}
.pb-card{border:1px solid rgba(94,128,104,.3);border-radius:14px;background:rgba(94,128,104,.06);padding:16px 16px 2px}
.pb-title{font:600 14px var(--sans,inherit);color:#3d5a46;margin:0 0 6px}
.parent-hint{font-size:12.5px;color:#6a7a6f;line-height:1.5;margin:0 0 14px}
.pb-card .field{margin-bottom:14px}
.pb-card .cap{color:#6a7a6f}

/* Родитель и документы в карточке ученика */
.uc-parent{margin:0 0 12px;border-top:1px solid #f0ece1;padding-top:10px}
.uc-parent>summary{cursor:pointer;font-size:13px;color:#6a7a6f;list-style:none;user-select:none}
.uc-parent>summary::-webkit-details-marker{display:none}
.uc-parent>summary::before{content:"▸ ";color:#93a099}
.uc-parent[open]>summary::before{content:"▾ "}
.uc-pbody{padding:8px 0 2px}
.uc-prow{display:flex;justify-content:space-between;gap:10px;font-size:13px;padding:4px 0;color:#6a7a6f}
.uc-prow b{color:#26332b;font-weight:600;text-align:right;word-break:break-word}
.uc-pempty{font-size:12.5px;color:#93a099;margin:6px 0 2px;line-height:1.5}

/* Подсказка про остаток лимитов — не прилипает к строке выше */
.sch-terms .sched-hint+.sched-hint{margin-top:8px!important}
/* Пустое меню папок в материалах */
.ma-menu-empty{font-size:12.5px;color:#8a8576;line-height:1.5;padding:8px 12px}

/* ---------- Группы ---------- */
.grp-titlerow{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:26px 0 12px}
.grp-titlerow>span{font:600 15px var(--sans,inherit);color:#3d5a46;text-transform:uppercase;letter-spacing:.04em;font-size:13px}
.grp-list{display:flex;flex-direction:column;gap:14px}
.grp-card{background:#fffefb;border:1.5px solid #5e8068;border-radius:18px;padding:18px 20px;
  box-shadow:0 10px 26px -20px rgba(40,53,40,.35);transition:transform .2s,box-shadow .2s,border-color .2s}
.grp-card:hover{transform:translateY(-3px);box-shadow:0 18px 34px rgba(35,56,44,.13);border-color:#9dba98}
.grp-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;flex-wrap:wrap}
.grp-name{font-family:var(--serif,Georgia,serif);font-size:18px;color:#23382c;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.grp-sub{font-size:13.5px;color:#6a7a6f;margin-top:4px}
.grp-badge{font-size:11.5px;font-weight:600;border-radius:20px;padding:3px 10px}
.grp-badge.warn{background:rgba(200,140,60,.16);color:#8a5a1e}
.grp-badge.ok{background:rgba(94,128,104,.16);color:#3d5a46}
.grp-badge.gray{background:rgba(120,120,110,.14);color:#6a6a62}
.grp-acts{display:flex;gap:8px;flex-wrap:wrap}
.grp-btn{border:1.4px solid rgba(94,128,104,.45);background:transparent;color:#3d5a46;font-weight:600;font-size:13.5px;
  border-radius:11px;padding:8px 14px;cursor:pointer;transition:background .12s,border-color .12s}
.grp-btn:hover:not(:disabled){background:rgba(94,128,104,.1)}
.grp-btn.solid{background:#2f4738;color:#f4efe2;border-color:#2f4738}
.grp-btn.solid:hover{background:#3a5745}
.grp-btn:disabled{opacity:.45;cursor:default}
.grp-mem{display:flex;flex-wrap:wrap;gap:7px;margin-top:14px;padding-top:12px;border-top:1px solid #f0ece1}
.grp-chip{font-size:12.5px;background:rgba(94,128,104,.12);color:#3d5a46;border-radius:20px;padding:4px 11px}
.grp-empty,.grp-note{font-size:13px;color:#93a099}
.grp-note{margin-top:12px;padding-top:10px;border-top:1px solid #f0ece1}
.grp-none{font-size:14px;color:#8a8576;line-height:1.55;margin:0}
/* Заголовок списка и поиск в одной строке. */
.uc-indhead{margin:26px 0 12px;display:flex;align-items:center;justify-content:space-between;
  gap:16px;flex-wrap:wrap;font:600 13px var(--sans,inherit);color:#3d5a46;
  text-transform:uppercase;letter-spacing:.04em}
.uc-indhead .uc-searchwrap{text-transform:none;letter-spacing:0;flex:0 1 320px}
@media(max-width:640px){.uc-indhead .uc-searchwrap{flex:1 1 100%}}

/* Статусы участников группы */
.grp-chip{display:inline-flex;align-items:center;gap:6px}
.grp-chip i{font-style:normal;font-size:11px;color:#93a099}
.grp-chip.ok{background:rgba(94,128,104,.18)}
.grp-chip.wait{background:rgba(200,140,60,.14);color:#8a5a1e}
.grp-chip.wait i{color:#a8763c}
.grp-x{border:none;background:transparent;color:#93a099;font-size:15px;line-height:1;cursor:pointer;padding:0 0 0 2px}
.grp-x:hover{color:#c9773f}
.grp-goal{font-style:normal;font-size:12px;color:#93a099}

/* Кто ещё не подтвердил участие в группе */
.grp-wait{margin-top:12px;padding:9px 12px;background:rgba(200,140,60,.12);border-radius:10px;
  font-size:13px;color:#8a5a1e;line-height:1.5}
.grp-chip.pending{outline:1.5px solid rgba(200,140,60,.45)}
.grp-ping{border:none;background:transparent;color:#8a5a1e;cursor:pointer;padding:0 2px;display:inline-flex;align-items:center}
.grp-ping:hover{color:#c9773f}

/* Групповое занятие в расписании */
.sch-ev.ev-group{background:rgba(94,128,104,.16);border-left:3px solid #5e8068;color:#2f4738}
.sch-badge.bg-group{background:rgba(94,128,104,.18);color:#3d5a46}

/* Сетка «когда удобно» для групп */
.gav{margin:10px 0 14px;font-size:12px}
.gav-row{display:grid;grid-template-columns:46px repeat(7,1fr);gap:3px;margin-bottom:3px}
.gav-head .gav-d{text-align:center;color:#6a7a6f;font-weight:600;padding:2px 0}
.gav-t{color:#93a099;display:flex;align-items:center}
.gav-c{height:26px;border:1px solid rgba(94,128,104,.22);background:#fffefb;border-radius:7px;
  cursor:pointer;font-size:11px;color:#3d5a46;padding:0;transition:background .12s,border-color .12s}
.gav-c:hover{border-color:rgba(94,128,104,.5)}
.gav-c.on{background:#5e8068;border-color:#5e8068}
.gav-c.some{background:rgba(200,140,60,.18);border-color:rgba(200,140,60,.4);color:#8a5a1e}
.gav-c.all{background:rgba(94,128,104,.28);border-color:#5e8068;font-weight:600}
.gav-best{font-size:13px;color:#3d5a46;background:rgba(94,128,104,.1);border-radius:10px;padding:9px 12px;margin:0 0 6px}


/* ---------- Модальные формы групп (перенесено вместе с функционалом групп) ---------- */
.tt-name{font-family:var(--serif,Georgia,serif);font-size:19px;font-weight:600;color:#23382c;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.tt-view{flex:0 0 auto;align-self:center;border:1.4px solid rgba(94,128,104,.5);background:transparent;color:#3d5a46;
  font-weight:600;font-size:14px;border-radius:12px;padding:10px 16px;cursor:pointer;transition:background .12s,border-color .12s}
.tt-view:hover{background:rgba(94,128,104,.1);border-color:rgba(94,128,104,.7)}
.tt-ov{position:fixed;top:0;right:0;bottom:0;left:0;background:rgba(30,40,34,.44);display:flex;align-items:center;justify-content:center;z-index:1000;padding:18px}
.tt-modal{background:#fbf8f0;border-radius:20px;padding:24px;width:min(460px,100%);max-height:88vh;overflow:auto;box-shadow:0 24px 60px rgba(0,0,0,.22)}
.tt-mt{margin:0 0 12px;color:#23382c;font-family:var(--serif,Georgia,serif);font-size:21px}
.tt-l{display:block;font-size:13px;color:#6a7a6f;margin:10px 0 4px}
.tt-hint{font-size:13px;color:#6a7a6f;margin:0 0 12px;line-height:1.5}
.tt-slist{display:flex;flex-direction:column;gap:4px;max-height:48vh;overflow:auto;margin-bottom:14px}
.tt-srow{display:flex;align-items:center;gap:12px;padding:10px 8px;border-radius:12px;font-size:15px;color:#26332b}
.tt-srow:hover{background:rgba(94,128,104,.07)}
label.tt-srow{cursor:pointer}
.tt-srow input{width:18px;height:18px;accent-color:#5e8068;flex:0 0 auto}
.tt-sav{width:34px;height:34px;border-radius:50%;background:rgba(94,128,104,.16);color:#3d5a46;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;flex:0 0 auto}
.tt-macts{display:flex;justify-content:flex-end;gap:10px;margin-top:8px}

/* ============================================================
   Оживление кабинета: фон, наведение, счётчики.
   Всё выключается при prefers-reduced-motion (в конце файла).
   ============================================================ */

/* --- Карточки-показатели: мягкий подъём и «дыхание» цифры --- */
.stat{transition:transform .32s cubic-bezier(.2,.8,.2,1),box-shadow .32s,border-color .32s}
.stat .sbig{display:inline-block;transition:transform .32s cubic-bezier(.2,.8,.2,1)}
.stat:hover{transform:translateY(-4px);box-shadow:0 18px 38px -24px rgba(40,53,40,.32);border-color:#dcd6c7}
.stat:hover .sbig{transform:scale(1.05)}
/* по краю карточки при наведении проходит светлая полоса */
.stat{position:relative;overflow:hidden}
.stat::after{content:"";position:absolute;top:0;bottom:0;left:-60%;width:45%;pointer-events:none;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.42),transparent);
  transform:skewX(-12deg);opacity:0;transition:opacity .2s}
.stat:hover::after{opacity:1;animation:statSweep .85s cubic-bezier(.3,.7,.4,1)}
@keyframes statSweep{from{left:-60%}to{left:130%}}
.stat.dark::after{background:linear-gradient(100deg,transparent,rgba(201,184,143,.22),transparent)}

/* --- Карточки сводки --- */
.ov-card{transition:transform .32s cubic-bezier(.2,.8,.2,1),box-shadow .32s,border-color .32s}
.ov-card:hover{transform:translateY(-3px);box-shadow:0 22px 46px -30px rgba(40,38,32,.6);border-color:#dcd6c7}
/* строки занятий подсвечиваются по одной */

/* --- Кольцо заполненности профиля --- */
.ov-mring{position:relative;transition:transform .32s cubic-bezier(.2,.8,.2,1)}
.ov-mprof:hover .ov-mring{transform:scale(1.08) rotate(-6deg)}
.ov-mring::before{content:"";position:absolute;top:-5px;right:-5px;bottom:-5px;left:-5px;border-radius:50%;
  border:1.5px solid rgba(94,128,104,.35);opacity:0;transform:scale(.9);
  transition:opacity .3s,transform .3s}
.ov-mprof:hover .ov-mring::before{opacity:1;transform:scale(1);animation:ringPulse 2.4s ease-out infinite}
@keyframes ringPulse{0%{transform:scale(.94);opacity:.9}70%,100%{transform:scale(1.18);opacity:0}}
.ov-mcard{transition:transform .3s cubic-bezier(.2,.8,.2,1),box-shadow .3s,background .3s}
.ov-mcard.clickable:hover{transform:translateY(-3px);background:#fffefb;
  box-shadow:0 18px 38px -26px rgba(40,38,32,.5)}
.ov-mbtn{transition:transform .3s}
.ov-mcard.clickable:hover .ov-mbtn{transform:translateX(4px)}

/* --- Колокольчик и чат в шапке --- */
.bell{transition:transform .25s cubic-bezier(.2,.8,.2,1),color .25s}
.bell:hover{transform:translateY(-2px)}
.bell:hover svg{animation:bellSwing .7s ease-in-out}
@keyframes bellSwing{0%,100%{transform:rotate(0)}20%{transform:rotate(-11deg)}45%{transform:rotate(9deg)}70%{transform:rotate(-5deg)}}
/* счётчик непрочитанного пульсирует, пока он не ноль */
.bell-count:not(.hidden){animation:cntPop .5s cubic-bezier(.2,1.4,.4,1) both,cntGlow 2.6s 1s ease-in-out infinite}
@keyframes cntPop{from{transform:scale(.3);opacity:0}to{transform:scale(1);opacity:1}}
@keyframes cntGlow{0%,100%{box-shadow:0 0 0 0 rgba(201,119,63,.5)}55%{box-shadow:0 0 0 6px rgba(201,119,63,0)}}
#chatBtn:hover svg{animation:chatNudge .6s ease-in-out}
@keyframes chatNudge{0%,100%{transform:translateY(0)}35%{transform:translateY(-3px) rotate(-6deg)}70%{transform:translateY(0) rotate(3deg)}}

/* --- Аватар и чип пользователя --- */
.user-chip{transition:transform .28s cubic-bezier(.2,.8,.2,1)}
.user-chip:hover{transform:translateY(-2px)}
.avatar{transition:transform .35s cubic-bezier(.2,.8,.2,1),box-shadow .35s}
.user-chip:hover .avatar{transform:rotate(-8deg) scale(1.06);box-shadow:0 8px 20px -10px rgba(40,53,40,.5)}

/* --- Клевер, который распускается при наведении на логотип --- */
.brand-ic svg g > g{transform-box:fill-box;transform-origin:50% 100%;
  transition:transform .45s cubic-bezier(.2,1.3,.4,1)}
.brand:hover .brand-ic svg g > g:nth-child(1){transform:rotate(45deg) translateY(-1.5px) scale(1.1)}
.brand:hover .brand-ic svg g > g:nth-child(2){transform:rotate(135deg) translateY(-1.5px) scale(1.1)}
.brand:hover .brand-ic svg g > g:nth-child(3){transform:rotate(225deg) translateY(-1.5px) scale(1.1)}
.brand:hover .brand-ic svg g > g:nth-child(4){transform:rotate(315deg) translateY(-1.5px) scale(1.1)}

@media (prefers-reduced-motion:reduce){
  .stat,.stat .sbig,.ov-card,.ov-les,.ov-mring,.ov-mcard,.bell,.avatar,.user-chip{transition:none!important}
  .stat::after,.bell-count:not(.hidden),.ov-mprof:hover .ov-mring::before{animation:none!important}
}


/* ============================================================
   Кнопка выхода на телефоне. Значка двери мало: при нажатии
   стрелка выезжает наружу, а сама кнопка коротко подаётся вбок —
   движение читается как «выхожу», а не просто подсветка.
   ============================================================ */
@media (max-width:860px){
  #navLogout{position:relative;overflow:hidden;
    transition:background .25s,border-color .25s,transform .2s}
  #navLogout .exit-ic{transition:transform .32s cubic-bezier(.2,.8,.2,1)}
  #navLogout:active{transform:translateX(3px)}
  #navLogout:active .exit-ic{transform:translateX(5px)}
  #navLogout::after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;
    background:radial-gradient(circle at 78% 50%,rgba(94,128,104,.22),transparent 62%);
    opacity:0;transition:opacity .3s}
  #navLogout:active::after{opacity:1}
}
@media (prefers-reduced-motion:reduce){
  #navLogout,#navLogout .exit-ic,#navLogout::after{transition:none!important;transform:none!important}
}

/* ============================================================
   Размеры клевера — все в одном месте.
   Рисунок обрезан ровно по своим краям (viewBox -15 -15 30 34),
   поэтому число ниже и есть его настоящий размер на экране.
   Раньше размеры лежали в пяти разных местах и спорили друг с
   другом, оттого клевер и был везде разным.
   ============================================================ */
.brand-ic,.brand-ic svg{width:46px;height:46px}
.hero-logo-ic,.hero-logo-ic svg{width:52px;height:52px}
.auth-mhead-ic,.auth-mhead-ic svg{width:50px;height:50px}
.auth-mtop-ic,.auth-mtop-ic svg{width:48px;height:48px}
.ls-iconbox,.ls-iconbox svg{width:72px;height:72px}
@media (max-width:860px){
  .brand-ic,.brand-ic svg{width:41px;height:41px}
  .auth-mtop-ic,.auth-mtop-ic svg{width:52px;height:52px}
  .auth-mhead-ic,.auth-mhead-ic svg{width:52px;height:52px}
  .ls-iconbox,.ls-iconbox svg{width:64px;height:64px}
}
@media (max-width:460px){
  .auth-mtop-ic,.auth-mtop-ic svg{width:46px;height:46px}
  .ls-iconbox,.ls-iconbox svg{width:58px;height:58px}
}

/* ============================================================
   Защита от горизонтального съезда на телефоне.
   Ячейка сетки по умолчанию не даёт себя сжать уже содержимого
   (min-width:auto) — длинное имя, ссылка или число распирают
   колонку, и карточки уезжают за правый край экрана.
   ============================================================ */
@media (max-width:880px){
  html,body{overflow-x:hidden}
  .dash,.dash-main{max-width:100vw;overflow-x:clip}
  .ov-grid,.ov-grid2,.stats,#ovTop{grid-template-columns:1fr!important}
  .ov-grid>*,.ov-grid2>*,.ov-side>*,.stats>*,#ovTop>*,
  .ov-card,.ov-up,.stat,.ov-mcard{min-width:0;max-width:100%}
  .ov-card *,.ov-mcard *{min-width:0}
  .ov-les,.ov-pay{flex-wrap:wrap}
  .ov-card b,.ov-card span,.ov-les em{overflow-wrap:anywhere}
}

/* ============================================================
   Экран входа и загрузки на телефоне.
   Подписи рядом с клевером убраны: знак говорит сам за себя.
   ============================================================ */
@media (max-width:860px){
  .auth-screen:not(.auth-recover) .auth-mtop-tx,
  .auth-screen:not(.auth-recover) .auth-mhead-tx,
  .auth-screen:not(.auth-recover) .hero-logo-tx{display:none!important}
  .auth-mtop-row,.auth-mhead,.hero-logo{justify-content:center}
}

.ls-iconbox svg{overflow:visible}

/* Знак в шапке при наведении распускается — рамке нельзя его срезать */
.brand-ic,.brand-ic svg,.hero-logo-ic svg,.auth-mtop-ic svg,.auth-mhead-ic svg{overflow:visible}

/* ============================================================
   Индикатор загрузки — кольцо зелёных кружков, «дышат» по очереди.
   ============================================================ */
.ls-anim{display:block}
.ls-ring{transform-origin:32px 32px;animation:lsRing 9s linear infinite}
.ls-ring circle{transform-origin:32px 32px;animation:lsPop 1.45s ease-in-out infinite}
@keyframes lsRing{to{transform:rotate(360deg)}}
@keyframes lsPop{0%,100%{opacity:.28;transform:scale(.62)}45%{opacity:1;transform:scale(1)}}
@media (prefers-reduced-motion:reduce){.ls-ring,.ls-ring circle{animation:none}.ls-ring circle{opacity:.8}}
/* ============================================================
   Состав группы строками. Раньше участники были чипами с крестиком —
   крестик читался как «скрыть плашку», а убирал ученика из группы.
   Теперь это обычные строки: имя, состояние, действие иконкой.
   ============================================================ */
.grp-rows{margin:12px 0 0}
.grp-row{display:flex;align-items:center;gap:10px;padding:9px 0;
  border-bottom:0.5px solid var(--line);font-size:14px;color:#26332b}
.grp-row:last-child{border-bottom:none}
.grp-av{width:30px;height:30px;border-radius:50%;background:rgba(94,128,104,.16);color:#3d5a46;
  display:flex;align-items:center;justify-content:center;font:600 11.5px var(--sans);flex:none}
.grp-rname{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.grp-rst{margin-left:auto;display:flex;align-items:center;gap:6px;font-size:12.5px;
  color:#6a7a6f;white-space:nowrap}
.grp-rst i{width:7px;height:7px;border-radius:50%;flex:none}
.grp-ic{width:28px;height:28px;border-radius:8px;flex:none;cursor:pointer;
  border:0.5px solid var(--line2,#d9d4c6);background:transparent;color:#5e7062;
  display:grid;place-items:center;transition:background .2s,color .2s,border-color .2s}
.grp-ic:hover{background:#f1ede3;color:#2f4738}
.grp-money{font-size:12.5px;color:#8a8576;margin-top:3px}
.grp-acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px;padding-top:13px;
  border-top:0.5px solid var(--line)}
.grp-btn.wide{width:100%;justify-content:center;display:inline-flex;align-items:center;gap:7px;margin-top:12px}
.grp-menu{display:flex;flex-direction:column;gap:2px;margin:4px 0 8px}
.grp-mitem{text-align:left;font:500 15px var(--sans);color:#26332b;background:none;border:none;
  padding:12px 10px;border-radius:10px;cursor:pointer}
.grp-mitem:hover{background:rgba(94,128,104,.09)}
.grp-mitem.danger{color:#b4512c}
.grp-mitem.danger:hover{background:rgba(180,81,44,.08)}
.tt-hint.small{font-size:12px;margin-top:-6px}
@media(max-width:620px){
  .grp-rst{font-size:11.5px}
  .grp-rname{font-size:13.5px}
  .grp-acts .grp-btn{flex:1;text-align:center}
}

/* Пометка «для групп» у абонемента */
.tf-grp{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;color:#6a7a6f;
  cursor:pointer;margin-top:6px}
.tf-grp input{width:16px;height:16px;accent-color:#5e8068;flex:none}

/* ============================================================
   Окна групп: крестик вместо кнопки, аккуратные поля и меню.
   ============================================================ */
.tt-modal{position:relative}
.tt-x{position:absolute;top:12px;right:12px;width:32px;height:32px;border-radius:10px;
  border:none;background:transparent;color:#8a8576;font-size:22px;line-height:1;cursor:pointer;
  display:grid;place-items:center;transition:background .2s,color .2s}
.tt-x:hover{background:rgba(94,128,104,.12);color:#2f4738}
.tt-modal .tt-mt{padding-right:38px}

/* поля в окне «Изменить группу» */
.tt-modal .prof-inp2{width:100%;box-sizing:border-box;font:400 15px var(--sans);color:#26332b;
  background:#fffefb;border:1px solid rgba(94,128,104,.28);border-radius:12px;padding:11px 13px;
  margin:0 0 4px;transition:border-color .2s,box-shadow .2s}
.tt-modal .prof-inp2:focus{outline:none;border-color:#5e8068;box-shadow:0 0 0 3px rgba(94,128,104,.14)}
.tt-modal select.prof-inp2{appearance:none;-webkit-appearance:none;cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%238a8576' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 12px center;padding-right:38px}
.tt-modal .tt-l{display:block;font-size:12.5px;color:#6a7a6f;margin:12px 0 5px}
.tt-modal .prof-ta{resize:vertical;min-height:64px;line-height:1.45}

/* кнопка «Добавить учеников» */
.grp-btn.wide{width:100%;box-sizing:border-box;display:inline-flex;align-items:center;
  justify-content:center;gap:8px;margin-top:14px;padding:11px 16px;font-size:14px}
.grp-btn.wide svg{flex:none}

/* строка состава в режиме вопроса */
.grp-row.ask{background:rgba(201,119,63,.08);border-radius:10px;padding-left:10px;padding-right:8px}
.grp-mini{font:500 13px var(--sans);border-radius:8px;padding:6px 12px;cursor:pointer;flex:none;
  border:1px solid rgba(94,128,104,.3);background:#fffefb;color:#3d5a46}
.grp-mini.yes{background:#b4512c;border-color:#b4512c;color:#faf8f2}
.grp-mini:hover{filter:brightness(.97)}
.grp-row.ask .grp-rname{flex:1;white-space:normal;font-size:13.5px;color:#8a5a1e}
.btn-add.wide{width:100%;box-sizing:border-box;justify-content:center;margin-top:14px}

/* ============================================================
   Правки 02.09.2026 — группы, тарифы, материалы.
   Блок идёт в конце файла, поэтому перебивает более ранние правила.
   ============================================================ */

/* 1. Подпись под «Абонементом для счёта» наезжала на поле: у неё стоял
   отрицательный верхний отступ. */
.tt-modal .tt-hint.small{font-size:12px;margin:6px 0 2px;line-height:1.45;color:#8a8576}

/* 2. Меню группы. Было окно во весь экран с тремя строчками текста —
   стало небольшое меню у самой кнопки «три точки». */
.grp-pop{position:fixed;z-index:1200;min-width:214px;padding:6px;
  background:#fffefb;border:1px solid var(--line2,#e3e0d8);border-radius:14px;
  box-shadow:0 18px 44px -18px rgba(40,53,40,.42);
  opacity:0;transform:translateY(-6px) scale(.98);transform-origin:top right;
  transition:opacity .14s ease,transform .14s cubic-bezier(.16,.7,.2,1)}
.grp-pop.is-open{opacity:1;transform:none}
.grp-pop-h{font:600 11px var(--sans,inherit);letter-spacing:.05em;text-transform:uppercase;
  color:#a7a293;padding:8px 10px 6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.grp-pitem{width:100%;display:flex;align-items:center;gap:10px;text-align:left;
  font:500 14px var(--sans,inherit);color:#26332b;background:none;border:none;
  padding:10px 10px;border-radius:10px;cursor:pointer;transition:background .14s,color .14s}
.grp-pitem svg{flex:none;color:#7d8f80;transition:color .14s}
.grp-pitem:hover{background:rgba(94,128,104,.1)}
.grp-pitem:hover svg{color:#3d5a46}
.grp-pitem.danger{color:#b4512c;margin-top:4px;border-top:1px solid var(--line,#ece8df);
  border-radius:0 0 10px 10px;padding-top:12px}
.grp-pitem.danger svg{color:#c2703f}
.grp-pitem.danger:hover{background:rgba(180,81,44,.08)}

/* 3. Пометка «для групп» у абонемента: была голая системная галочка,
   зажатая между полями. Стала фишка в стиле остальных полей. */
.tf-grp{display:inline-flex;align-items:center;gap:10px;cursor:pointer;user-select:none;
  box-sizing:border-box;margin:2px 0 0;padding:9px 13px 9px 11px;
  background:#fbfaf5;border:1px solid #dcd6c8;border-radius:11px;
  font:600 12.5px var(--sans,inherit);color:#6a7a6f;
  transition:border-color .16s,background .16s,color .16s}
.tf-grp:hover{border-color:#a9bfa9}
.tf-grp input{position:absolute;opacity:0;width:0;height:0;margin:0}
.tf-grp-box{width:19px;height:19px;flex:none;border-radius:6px;background:#fff;
  border:1.5px solid #cdc7b8;display:grid;place-items:center;color:transparent;
  transition:background .16s,border-color .16s,color .16s}
.tf-grp:has(input:checked){border-color:var(--sage,#5e8068);background:#eef3ec;color:#2f4738}
.tf-grp:has(input:checked) .tf-grp-box{background:var(--sage,#5e8068);border-color:var(--sage,#5e8068);color:#f4efe2}
.tf-grp input:focus-visible+.tf-grp-box{box-shadow:0 0 0 3px rgba(94,128,104,.22)}
.tf-grp-tx{display:block}
/* строка абонемента: фишка становится отдельной строкой под полями */
.tf-subrow>.tf-grp{flex-basis:auto;max-width:max-content;align-self:flex-end;margin-bottom:1px}
.tf-grp.wide{display:flex;width:100%;align-items:flex-start;padding:12px 14px;margin-top:2px}
.tf-grp.wide .tf-grp-box{margin-top:1px}
.tf-grp.wide .tf-grp-tx b{display:block;font:600 13px var(--sans,inherit);color:#3a382f}
.tf-grp.wide:has(input:checked) .tf-grp-tx b{color:#2f4738}
.tf-grp.wide .tf-grp-tx i{display:block;margin-top:3px;font:400 12px var(--sans,inherit);
  font-style:normal;color:#8a8576;line-height:1.45}
@media(max-width:760px){
  .tf-subrow>.tf-grp{align-self:flex-start;margin-left:68px}
}

/* 4. Иконка документа в пустых блоках рисовалась во всю плитку (у неё нет
   собственных размеров) — отсюда толстая обводка. Приводим к 27px, как в
   остальных разделах. */
.uc-empty-ic{color:#5e8068}
.uc-empty-ic svg{width:27px;height:27px;flex:none}

/* 5. Карточка группы у ученика: шаги, состав, абонемент. */
.gs-card .grp-sub{color:#8a8576}
.gs-steps{display:flex;flex-wrap:wrap;gap:6px 18px;margin:14px 0 2px;padding:11px 13px;
  background:#f7f5ee;border-radius:12px}
.gs-step{display:inline-flex;align-items:center;gap:7px;font:500 12.5px var(--sans,inherit);color:#a7a293}
.gs-step i{width:8px;height:8px;border-radius:50%;background:#d9d4c6;flex:none;transition:background .2s}
.gs-step.done{color:#3d5a46}
.gs-step.done i{background:var(--sage,#5e8068)}
.gs-step.now{color:#8a5a1e;font-weight:600}
.gs-step.now i{background:#d2864c;box-shadow:0 0 0 3px rgba(210,134,76,.2)}
.gs-facts{margin-top:12px;display:flex;flex-direction:column;gap:1px}
.gs-fact{display:flex;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid #f2efe6}
.gs-fact:last-child{border-bottom:none}
.gs-fk{flex:none;min-width:96px;font:600 11px var(--sans,inherit);letter-spacing:.04em;
  text-transform:uppercase;color:#a7a293}
.gs-fv{display:flex;align-items:center;gap:9px;flex-wrap:wrap;font-size:13.5px;color:#3a382f}
.gs-avs{display:inline-flex}
.gs-av{width:26px;height:26px;border-radius:50%;margin-right:-8px;flex:none;
  background:rgba(94,128,104,.16);color:#3d5a46;border:2px solid #fffefb;
  display:inline-flex;align-items:center;justify-content:center;font:600 10px var(--sans,inherit)}
.gs-av.conf{background:rgba(210,134,76,.2);color:#8a5a1e}
.gs-av.paid{background:var(--sage,#5e8068);color:#f4efe2}
.gs-avs .gs-av:last-child{margin-right:8px}
.grp-note.ok{color:#3d5a46}
.grp-note.warn{color:#8a5a1e}
@media(max-width:620px){
  .gs-fact{flex-direction:column;align-items:flex-start;gap:5px}
  .gs-fk{min-width:0}
  .gs-steps{gap:6px 12px}
}

/* ============================================================
   Правки 02.09.2026, часть 2 — тарифы, группы, сводка.
   ============================================================ */

/* Тарифы. Кнопки «Сохранить» и «Создать абонемент» стояли на разной высоте:
   карточки одинаковой высоты, а содержимое разное. Прижимаем кнопку к низу. */
.tf-card{display:flex;flex-direction:column}
.tf-card-body{flex:1}
.tf-card-body>.tf-save,.tf-card-body>.tf-create{margin-top:auto}

/* Переключатель «Активен» и кнопки строки абонемента выравниваем по нижнему
   краю полей — раньше они висели выше из-за подписей над полями. */
.tf-subact{align-self:flex-end;padding-bottom:1px}
@media(max-width:760px){
  .tf-subact{align-self:flex-start;padding-bottom:0;margin-top:4px}
}

/* Описание группы («для кого и что разбираем») — раньше сохранялось, но
   нигде не показывалось. */
.grp-desc{margin:8px 0 0;font-size:13px;line-height:1.5;color:#6a7a6f;
  padding-left:11px;border-left:2px solid rgba(94,128,104,.3);max-width:62ch}

/* Групповое занятие в «Ближайших занятиях» */
.ov-dot.grp{background:#a7894e}
.ov-badge.grp{color:#7a6023;background:#f3ecd9}
.ov-tag{display:inline-block;vertical-align:2px;margin-left:6px;padding:2px 7px;border-radius:7px;
  font:600 10.5px var(--sans,inherit);letter-spacing:.03em;color:#7a6023;background:#f3ecd9}

/* Раздел «Группы» у ученика: карточки стояли вплотную к заголовку */
#dashContent .uc-titlerow+.grp-list{margin-top:34px}
.grp-list{display:flex;flex-direction:column;gap:16px}

/* Кнопки в шапке карточки группы у ученика не должны наследовать разделитель
   от блока действий карточки репетитора — иначе над ними висит лишняя черта. */
.gs-card .grp-head .grp-acts{margin-top:0;padding-top:0;border-top:none}

/* ============================================================
   Правки 02.09.2026, часть 3 — телефон и выравнивание сводки.
   ============================================================ */

/* Строка «Ближайших занятий»: дата, точка и название должны стоять
   колонками друг под другом. При выравнивании по центру точка уезжала
   между двумя строками текста. */
.ov-les{align-items:flex-start}
.ov-les>.ov-dot{margin-top:6px}
.ov-les>.ov-badge{align-self:center;margin-left:auto}
.ov-les-main{flex:1;min-width:0}

/* У ученика в сводке три карточки, а не четыре */
.stats.stats-3{grid-template-columns:repeat(3,1fr)}
@media(max-width:900px){.stats.stats-3{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.stats.stats-3{grid-template-columns:1fr}}

/* Телефон: строка абонемента складывается в столбик, и пометка «для групп»
   должна складываться вместе с полями, а не прижиматься к правому краю. */
@media(max-width:880px){
  .tf-subrow>.tf-grp{align-self:stretch;width:100%;max-width:none;margin:0;
    padding:12px 14px;justify-content:flex-start}
  .tf-subact{align-self:stretch;padding-bottom:0;margin-top:2px}
}

/* Кнопка «три точки» в карточке группы не должна переноситься под название */
.grp-card .grp-head{flex-wrap:nowrap}
.grp-card .grp-head>div:first-child{flex:1;min-width:0}
.grp-card .grp-head>.grp-ic{margin-top:3px}
.gs-card .grp-head{flex-wrap:wrap}
@media(max-width:620px){
  .gs-card .grp-head>div:first-child{flex:1 1 100%}
  .gs-card .grp-head .grp-acts{width:100%;margin-top:10px}
  .gs-card .grp-head .grp-btn{flex:1;justify-content:center;text-align:center}
}
.sch-hint-sm{margin:7px 0 0;font-size:12px;line-height:1.45;color:#8a8576}

/* ============================================================
   Проведение группового занятия: посещаемость и списание.
   ============================================================ */
.gc-list{display:flex;flex-direction:column;gap:2px;margin:6px 0 14px}
.gc-row{display:flex;align-items:center;gap:11px;padding:10px 2px;
  border-bottom:1px solid var(--line,#ece8df)}
.gc-row:last-child{border-bottom:none}
.gc-name{flex:1;min-width:0;font-size:14px;color:#26332b;display:flex;flex-direction:column;gap:2px}
.gc-left{font-style:normal;font-size:12px;color:#8a8576}
.gc-warn{font-style:normal;font-size:12px;color:#b4512c}
.gc-was{flex:none;min-width:74px;border:1.4px solid rgba(94,128,104,.4);background:transparent;
  color:#8a8576;font:600 12.5px var(--sans,inherit);border-radius:10px;padding:7px 12px;
  cursor:pointer;transition:background .14s,color .14s,border-color .14s}
.gc-was.on{background:rgba(94,128,104,.14);border-color:var(--sage,#5e8068);color:#2f4738}
.gc-chg{flex:none;display:inline-flex;align-items:center;gap:7px;font-size:12.5px;color:#6a7a6f;
  cursor:pointer;user-select:none}
.gc-chg input{width:16px;height:16px;accent-color:#5e8068;flex:none;cursor:pointer}
.gc-chg input:disabled{cursor:default;opacity:.4}
@media(max-width:560px){
  .gc-row{flex-wrap:wrap}
  .gc-name{flex:1 1 100%;order:-1}
  .gc-was{min-width:0;flex:1}
}

/* Посещаемость в карточке группового урока */
.tt-hint.small2{font-size:12.5px;line-height:1.5;color:#8a8576;margin:-4px 0 14px}
.lz-att{margin-top:16px;padding:14px 16px;background:#fbf8f0;border:1px solid var(--line,#ece8df);
  border-radius:14px}
.lz-att-h{font:600 11px var(--sans,inherit);letter-spacing:.06em;text-transform:uppercase;
  color:#a7a293;margin-bottom:8px}
.lz-att-row{display:flex;align-items:center;gap:10px;padding:8px 0;
  border-bottom:1px solid #f0ece1;font-size:13.5px}
.lz-att-row:last-child{border-bottom:none}
.lz-att-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#26332b}
.lz-att-st{flex:none;font:600 11.5px var(--sans,inherit);padding:3px 9px;border-radius:20px}
.lz-att-st.was{color:#3d5a46;background:rgba(94,128,104,.15)}
.lz-att-st.no{color:#9a4a25;background:#f7e7df}
.lz-att-ch{flex:none;font-size:12px;color:#8a8576;white-space:nowrap}
@media(max-width:560px){.lz-att-ch{display:none}}

/* Задание на группу */
.tk-whom{margin:16px 0 9px;font:600 11px var(--sans,inherit);letter-spacing:.06em;
  text-transform:uppercase;color:#a7a293;display:flex;align-items:baseline;gap:9px}
.tk-whom i{font-style:normal;font-size:11px;letter-spacing:0;text-transform:none;color:#b9b4a4}
.tk-stu-av.grp{background:#2f4738;color:#f4efe2}
.tk-stu-grp.on{border-color:var(--sage,#5e8068)}
.tk-grp-chip{display:inline-block;margin-left:7px;padding:2px 8px;border-radius:7px;
  font:600 10.5px var(--sans,inherit);color:#7a6023;background:#f3ecd9;vertical-align:1px}
.lz-att-todo{border-style:dashed}
.lz-att-empty{margin:0 0 12px;font-size:13px;line-height:1.5;color:#8a8576}
.lz-att .btn-add{width:100%;justify-content:center}
.ma-access-lbl.second{margin-top:12px}
.ma-pill-grp{border-style:dashed}
.ma-pill-grp.on{border-style:solid}

/* ============ «Идёт сейчас»: занятие началось, но ещё не закончилось ============ */
/* Прошедшая часть занятия заливается сверху — видно, сколько уже прошло.
   Без анимаций и мигания: спокойная метка состояния, как «Прошедшее». */
.sch-ev.is-live{box-shadow:inset 3px 0 0 #c2703f,0 3px 9px rgba(40,35,25,.07);z-index:3}
.sch-ev.is-live::before{content:"";position:absolute;left:0;right:0;top:0;height:var(--prog,0%);
  background:rgba(35,56,44,.13);pointer-events:none;transition:height .6s linear}
.sch-ev.is-live>*{position:relative;z-index:1}
.bg-live{background:#f7e2d3;color:#a85f30}
.sw-live{background:linear-gradient(180deg,rgba(35,56,44,.22) 0 50%,#eef0e9 50% 100%);border-left:3px solid #c2703f}
.sch-mcard[data-live]{border-left-color:#c2703f;position:relative;overflow:hidden}
.sch-mcard[data-live]::before{content:"";position:absolute;left:0;top:0;bottom:0;width:var(--prog,0%);
  background:rgba(194,112,63,.09);pointer-events:none;transition:width .6s linear}
.sch-mcard[data-live]>*{position:relative;z-index:1}

/* ============ Групповое ДЗ: папка группы у репетитора ============ */
.tk-sec-grp .tk-fold-av.grp{background:linear-gradient(135deg,#5e8068,#3f6b4c);color:#f4efe2}
.tk-sec-grp .tk-fold-head{background:linear-gradient(90deg,rgba(94,128,104,.09),rgba(94,128,104,0) 60%)}
.tk-fold-tag{display:inline-block;margin-right:8px;padding:2px 8px;border-radius:7px;
  background:#e7f0e7;color:#3f6b4c;font:600 10.5px var(--sans);letter-spacing:.01em;vertical-align:1px}
/* пометка группы на карточке ученика */
.tk-cgrp{display:inline-flex;align-items:center;gap:5px;padding:3px 9px 3px 7px;border-radius:20px;
  background:#e7f0e7;color:#3f6b4c;font:600 11px var(--sans)}
.tk-cgrp svg{width:13px;height:13px;flex-shrink:0}

/* ============ Выбор группы в конструкторе ДЗ ============ */
.tk-whomlbl{font:600 11px var(--sans);letter-spacing:.05em;text-transform:uppercase;color:#a7a293;margin:2px 0 9px}
.tk-whomlbl.second{margin-top:18px}
.tk-stu-av.grp{background:linear-gradient(135deg,#5e8068,#3f6b4c);color:#f4efe2}
.tk-stu-av.grp svg{width:18px;height:18px}
.tk-grpcard{border-color:#dfe7df}
.tk-grpcard.on{border-color:#3f6b4c;background:#f2f7f2}

/* кнопка «Изменить» рядом с заголовком посещаемости */
.lz-att-h{display:flex;align-items:center;gap:10px}
.lz-att-edit{margin-left:auto;border:1px solid #dfe3d8;background:#fffefb;color:#3f6b4c;
  font:600 11.5px var(--sans);border-radius:20px;padding:5px 12px;cursor:pointer;transition:background .18s,border-color .18s}
.lz-att-edit:hover{background:#f2f7f2;border-color:#b9d3bb}
/* картинка вопроса в конструкторе — видно, что прикрепил */
.tk-qimg img{width:110px;height:78px}

/* предупреждение о пропуске в окне посещаемости */
.gc-warned{display:block;font:500 11px var(--sans);font-style:normal;color:#a85f30;margin-top:2px}
.gc-warned.ok{color:#3f6b4c}
.lz-proc-retry{margin-left:auto;flex-shrink:0}
.lz-proc{display:flex;align-items:center;gap:12px}

/* обложка задания на карточке */
.tk-card.has-cover{padding-top:0;overflow:hidden}
.tk-cardcover{height:104px;margin:0 -18px 2px;background:#eef0e9 center/cover no-repeat;
  border-bottom:1px solid #e7ece5}
@media (max-width:820px){.tk-cardcover{height:88px}}

/* внутри папки группы — задания, в каждом карточки учеников */
.tk-batch{margin-bottom:18px}
.tk-batch:last-child{margin-bottom:0}
.tk-batch-h{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin:0 0 10px;
  padding-bottom:8px;border-bottom:1px solid #ece8df}
.tk-batch-t{font:600 14px var(--sans);color:#2f4738}
.tk-batch-s{font:500 11.5px var(--sans);color:#a7a293}

/* пояснение про число голосов в расшифровке */
.lz-spk-note{font:500 12px/1.5 var(--sans);color:#8a8576;background:#f6f4ee;
  border:1px solid #ece8df;border-radius:11px;padding:10px 13px;margin-bottom:12px}
.lz-linkbtn{border:0;background:none;padding:0;cursor:pointer;color:#3f6b4c;
  font:600 12px var(--sans);text-decoration:underline;text-underline-offset:2px}
.lz-linkbtn:hover{color:#23382c}

/* ============ Экранная клавиатура на мобайле ============ */
/* Клавиатура накрывает страницу (interactive-widget=overlays-content) и ничего
   не двигает. В --kbd лежит её высота: по ней поднимаем поле ввода в чате,
   как в мессенджерах, и убираем нижнюю навигацию, чтобы не мешала. */
:root{--kbd:0px}
@media (max-width:860px){
  .tabbar{transition:transform .2s ease}
  body.kbd-open .tabbar{transform:translateY(130%)}
  /* Клавиатура открыта: страница целиком перестаёт прокручиваться, иначе
     браузер сам подкручивает её к полю ввода — и уезжает шапка. Всё, что
     должно быть видно, кладём в фиксированный слой ровно по видимой области. */
  body.kbd-open{overflow:hidden}
  /* Страница физически заморожена: браузеру нечего подкручивать, поэтому
     ни шапка кабинета, ни заголовок диалога, ни само окно никуда не едут. */
  body.kbd-lock{position:fixed;left:0;right:0;width:100%;overflow:hidden}
  /* Чат: шапка «с кем» остаётся на месте, двигаются только переписка и поле. */
  body.kbd-open .ch-threadcol{position:fixed;left:0;right:0;
    top:var(--vvtop,0px);bottom:var(--kbd);z-index:80;transform:none;height:auto}
  body.kbd-open .ch-compose{padding-bottom:12px}
  body.kbd-open .ch-thread,body.kbd-open #chatThread{flex:1;min-height:0;overflow-y:auto}
  /* Окна (новая группа, задание, детали занятия) ужимаются до видимой части,
     а не съезжают вверх вместе со страницей. */
  body.kbd-open .tt-ov,body.kbd-open .pop,body.kbd-open .tk-modal-bg,
  body.kbd-open .les-ov,body.kbd-open .sch-detail,body.kbd-open .uc-sheet{
    top:var(--vvtop,0px);bottom:var(--kbd);height:auto}
  /* урок и задание открываются на весь экран: под шапкой был зазор,
     в который просвечивал и листался сам сайт */
  .les-ov.les-ov-mob{top:0;right:0;bottom:0;left:0;padding:0}
  .les-ov.les-ov-mob .les-modal{width:100%;height:100%;max-height:none;border-radius:0}
  .les-ov.les-ov-mob .les-bar{padding-top:calc(16px + env(safe-area-inset-top))}
  body.les-open .tabbar{display:none}
}

/* ============ Мобайл: длинное ФИО и метка занятия ============ */
/* Раньше при длинном ФИО имя и метка «Подтверждено / Группа» налезали друг
   на друга. Раскладываем строку сеткой: время и точка слева на всю высоту,
   имя сверху, метка — отдельной строкой под ним. */
@media (max-width:820px){
  /* День недели переехал вниз к времени — строка стала уже, и метке снова
     хватает места рядом с именем. Длинное ФИО переносится, а не налезает. */
  .ov-les{display:flex;flex-wrap:nowrap;align-items:center;gap:11px}
  .ov-les>.ov-time-dt{min-width:0;flex:0 0 auto}
  .ov-les>.ov-les-main{flex:1;min-width:0}
  .ov-les-name{overflow-wrap:anywhere;line-height:1.3}
  .ov-les-sub{overflow-wrap:anywhere}
  .ov-les>.ov-badge{flex:0 0 auto;align-self:center}
}

/* ============ Свой выпадающий список ============ */
.xsel{position:relative;display:block;width:100%}
.xsel-native{position:absolute!important;opacity:0;pointer-events:none;width:1px;height:1px;
  margin:0;padding:0;border:0;clip:rect(0 0 0 0);overflow:hidden}
.xsel-btn{display:flex;align-items:center;gap:10px;width:100%;box-sizing:border-box;overflow:hidden;
  padding:13px 14px;border:1px solid #e3ded2;border-radius:12px;background:#fffefb;
  font:500 14px var(--sans);color:#23211c;text-align:left;cursor:pointer;
  transition:border-color .16s,box-shadow .16s,background .16s}
.xsel-btn:hover{border-color:#c9d3c4}
.xsel-btn:focus-visible{outline:none;border-color:#5e8068;box-shadow:0 0 0 3px rgba(94,128,104,.18)}
.xsel.open .xsel-btn{border-color:#5e8068;box-shadow:0 0 0 3px rgba(94,128,104,.14)}
.xsel-lbl{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.xsel-lbl.is-empty{color:#a7a293}
.xsel-chev{position:relative;flex:0 0 16px;width:16px;height:16px;box-sizing:border-box;
  color:#8a8576;pointer-events:none}
/* Стрелка рисуется рамками, а не svg: у старых обёрток были свои правила
   для вложенных svg (position:absolute), и они выбрасывали стрелку из поля. */
.xsel-chev svg{display:none!important}
.xsel-chev::before{content:"";position:absolute;left:3px;top:2px;width:8px;height:8px;
  border-right:1.8px solid currentColor;border-bottom:1.8px solid currentColor;
  border-radius:0 0 2px 0;transform:rotate(45deg);transform-origin:50% 50%;
  transition:transform .18s ease,top .18s ease}
.xsel.open .xsel-chev::before{top:6px;transform:rotate(225deg)}
.xsel.is-off .xsel-btn{background:#f6f4ee;color:#a7a293;cursor:not-allowed}
.xsel-pop{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:120;
  max-height:260px;overflow-y:auto;padding:6px;background:#fffefb;
  border:1px solid #e3ded2;border-radius:13px;box-shadow:0 16px 40px rgba(40,35,25,.16)}
.xsel-pop.up{top:auto;bottom:calc(100% + 6px)}
/* Заголовок группы в раскрытом списке. Нужен длинным спискам — например
   номерам заданий ЕГЭ и ОГЭ: без него шестьдесят пунктов идут подряд, и
   непонятно, где кончается один экзамен и начинается другой. */
.xsel-group{position:sticky;top:-6px;z-index:1;margin:6px 0 2px;padding:6px 12px 5px;
  background:#fffefb;font:600 10.5px var(--sans);color:#a7a293;
  letter-spacing:.05em;text-transform:uppercase}
.xsel-group:first-child{margin-top:0}
.xsel-opt{display:flex;align-items:center;gap:8px;width:100%;box-sizing:border-box;
  text-align:left;border:0;background:none;padding:11px 12px;border-radius:9px;
  font:500 14px var(--sans);color:#23211c;cursor:pointer}
/* Выбранный пункт помечается галочкой, а НЕ заливкой. Раньше он был залит
   тёмно-зелёным всегда, и казалось, что подсветка «залипла» на первом пункте.
   Теперь зелёный фон бывает только под курсором. */
.xsel-opt::after{content:"\2713";margin-left:auto;flex:0 0 auto;font-size:13px;
  line-height:1;color:#5e8068;opacity:0}
.xsel-opt.on{color:#23382c;font-weight:600}
.xsel-opt.on::after{opacity:1}
.xsel-pop .xsel-opt:not(.off):hover,
.xsel-pop .xsel-opt:not(.off).hot,
.xsel-pop .xsel-opt:not(.off):focus-visible{background:#cfe0cf;color:#23211c;outline:none}
.xsel-pop .xsel-opt:not(.off):hover::after,
.xsel-pop .xsel-opt:not(.off).hot::after{color:#23382c}
.xsel-opt.off{color:#b9b3a4;cursor:not-allowed}
@media (max-width:820px){
  .xsel-btn{padding:14px 14px;font-size:15px}
  .xsel-opt{padding:13px 12px;font-size:15px}
  .xsel-pop{max-height:min(320px,50vh)}
}
/* старые декоративные стрелки и рамки обёрток больше не нужны */
.xsel ~ svg,.xsel ~ .chev{display:none}
.sch-selwrap:has(.xsel),.ma-selwrap:has(.xsel),.tk-selwrap:has(.xsel),
.tt-selwrap:has(.xsel),.sch-hm .sch-selwrap:has(.xsel){border:0;background:none;padding:0;box-shadow:none}

/* ============ Линия текущего времени ============ */
/* Показывает, что время идёт, даже когда на этот час окна нет. */
.sch-daycol{position:relative}
.sch-now{position:absolute;left:0;right:0;height:0;border-top:1.5px solid #c2703f;z-index:4;pointer-events:none}
.sch-now::before{content:"";position:absolute;left:-4px;top:-4px;width:8px;height:8px;
  border-radius:50%;background:#c2703f}
.sch-now-t{position:absolute;right:2px;top:-9px;background:#c2703f;color:#fff;
  font:700 9.5px var(--sans);line-height:1;padding:3px 5px;border-radius:5px;
  font-variant-numeric:tabular-nums}

/* внутри папки группы задания идут подряд, без подписей-повторов */
.tk-batch{margin-bottom:14px}
.tk-batch:last-child{margin-bottom:0}
/* день недели рядом со временем */
.ov-time-dt i{white-space:nowrap}

/* ============ Задание на весь экран (телефон) ============ */
/* И у ученика при прохождении, и при просмотре результата: шапка кабинета
   и нижняя навигация только отвлекают, а при прокрутке в зазор просвечивал
   сам сайт. Выход — стрелка «назад» в самом задании. */
@media (max-width:820px){
  body.hw-full .topnav,body.hw-full .tabbar{display:none}
  body.hw-full .dash-main,body.hw-full .dash-main.wide{padding-bottom:18px}
  body.hw-full .footer{display:none}
  body.hw-full .tk-modal-bg{top:0;bottom:0;padding:0;align-items:stretch}
  body.hw-full .tk-modal-card{width:100%;max-width:100%;height:100%;max-height:100%;border-radius:0}
}

/* ====== Проверка ДЗ на весь экран: помещаемся в экран ======
   Без min-height:0 колонка не даёт телу сжаться: карточка вылезает
   за нижний край, и прокрутки внутри неё не возникает. */
@media (max-width:820px){
  .tk-modal-card{height:100%;max-height:100%;overflow:hidden}
  .tk-mhead{padding:13px 14px;padding-top:calc(13px + env(safe-area-inset-top))}
  .tk-mbody{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;
    padding:16px 14px calc(22px + env(safe-area-inset-bottom));
    -webkit-overflow-scrolling:touch;overscroll-behavior:contain}
  .tk-mbody img,.tk-mbody video,.tk-mbody canvas,.tk-mbody iframe,.tk-mbody table{
    max-width:100%;height:auto}
  .tk-mbody pre,.tk-mbody code{white-space:pre-wrap;word-break:break-word}
  .tk-mbody p,.tk-mbody li,.tk-qtext,.tk-mtitle{overflow-wrap:anywhere}
  .tk-mfoot{padding:14px 0 0}
}

/* Метка демо-стенда: маленькая плашка внизу слева, ничего не перекрывает */
#demoMark{position:fixed;left:14px;bottom:14px;z-index:400;
  background:rgba(35,56,44,.94);color:#f4efe2;border-radius:12px;
  padding:9px 14px;box-shadow:0 8px 24px rgba(18,28,21,.28);
  font:500 12px/1.35 var(--sans);max-width:min(76vw,300px);
  pointer-events:none;display:flex;flex-direction:column;gap:2px}
#demoMark b{font-weight:700;font-size:12.5px;letter-spacing:.2px}
#demoMark span{color:#c3cfc0}
@media (max-width:820px){
  #demoMark{bottom:calc(72px + env(safe-area-inset-bottom));left:10px;
    padding:8px 12px;font-size:11.5px}
  body.kbd-open #demoMark,body.hw-full #demoMark,body.les-open #demoMark{display:none}
}

/* Знак кабинета — тот же, что на значке приложения: тёмная плашка, белая
   шапочка, золотистая кисточка. Он несёт свой фон, поэтому одинаково виден
   и на светлом экране входа, и на зелёном экране загрузки. */
svg.brandmark{border-radius:22%}
img.brandmark{border-radius:22%}

/* Загрузка логотипа: квадратная рамка с тем, что сейчас стоит, и кнопки
   рядом. Раньше здесь была кнопка во всю ширину — она читалась как ещё
   одно текстовое поле. */
.org-logo{display:flex;align-items:center;gap:14px;margin-top:6px}
.org-logo-box{width:72px;height:72px;flex:0 0 72px;border-radius:18px;
  border:1px dashed #d8d2c2;background:#fffdf7;overflow:hidden;
  display:flex;align-items:center;justify-content:center}
.org-logo-box img,.org-logo-box svg{width:100%;height:100%;object-fit:cover;display:block}
.org-logo-empty{width:100%;height:100%;display:block;opacity:.55}
.org-logo-side{display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-width:0}
.org-logo-btn{width:auto;padding:7px 14px;white-space:nowrap}

/* ---------- Разделы профиля ---------- */
/* Профиль перестал быть одной длинной страницей: показывается один раздел,
   выбранный в меню по значку профиля. Появление — короткое, чтобы переход
   читался как переход, а не как подмена страницы. */
.pf-sec{display:none}
.pf-sec.on{display:block;animation:pfSecIn .24s cubic-bezier(.22,.61,.36,1) both}
@keyframes pfSecIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.pf-sec.on{animation:none}}

/* ---------- Меню профиля ---------- */
.pfm-bg{position:fixed;top:0;right:0;bottom:0;left:0;z-index:520;background:rgba(20,32,25,0);
  transition:background .22s ease;display:flex;align-items:flex-end;justify-content:center}
.pfm-bg.is-open{background:rgba(20,32,25,.34)}
.pfm{width:min(360px,calc(100vw - 24px));background:var(--card,#fffdf7);
  border:1px solid #e3ded2;border-radius:18px;padding:10px;
  box-shadow:0 20px 60px rgba(18,28,21,.26);
  opacity:0;transform:translateY(10px) scale(.98);
  transition:opacity .2s ease,transform .22s cubic-bezier(.22,.61,.36,1)}
.pfm-bg.is-open .pfm{opacity:1;transform:none}
.pfm-grip{display:none}
.pfm-head{display:flex;align-items:center;gap:11px;padding:8px 10px 12px;border-bottom:1px solid #efeade;margin-bottom:6px}
.pfm-av{width:38px;height:38px;flex:0 0 38px;border-radius:50%;background:#23382c;color:#f4efe2;
  display:flex;align-items:center;justify-content:center;font:600 14px var(--sans)}
.pfm-head b{display:block;font:600 15px var(--sans);color:#23382c}
.pfm-head i{font-style:normal;font:500 12px var(--sans);color:#8a8576}
.pfm-item{display:flex;align-items:center;gap:11px;width:100%;text-align:left;
  background:none;border:0;border-radius:12px;padding:10px;cursor:pointer;font-family:inherit;
  transition:background .15s ease}
.pfm-item:hover,.pfm-item:focus-visible{background:#f3f0e7}
.pfm-item.on{background:#eef3ee}
.pfm-ic{width:34px;height:34px;flex:0 0 34px;border-radius:10px;background:#eef3ee;color:#2f6b46;
  display:flex;align-items:center;justify-content:center}
.pfm-ic svg{width:19px;height:19px}
.pfm-tx{flex:1;min-width:0}
.pfm-tx b{display:block;font:600 14.5px var(--sans);color:#23382c}
.pfm-tx i{font-style:normal;font:500 12px var(--sans);color:#8a8576;
  display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pfm-go{color:#b9b3a3;font-size:15px;flex:0 0 auto}

@media (max-width:820px){
  /* На телефоне — панель снизу: до неё дотягивается большой палец. */
  .pfm{width:100%;max-width:none;border-radius:22px 22px 0 0;padding:8px 12px
    calc(16px + env(safe-area-inset-bottom));border-left:0;border-right:0;border-bottom:0;
    transform:translateY(100%);transition:transform .28s cubic-bezier(.22,.61,.36,1),opacity .2s ease}
  .pfm-bg.is-open .pfm{transform:none}
  .pfm-grip{display:block;width:38px;height:4px;border-radius:2px;background:#ded8c8;margin:6px auto 10px}
  .pfm-item{padding:12px 10px}
  .pfm-tx b{font-size:15.5px}
}
@media (prefers-reduced-motion:reduce){
  .pfm,.pfm-bg{transition:none}
}

/* ---------- Карточки внутри разделов профиля ----------
   Пока профиль был одной длинной страницей, две карточки стояли в два
   столбца и уравновешивали друг друга. После разделения в разделе остаётся
   одна-две карточки: одна оказывалась узкой и высокой, другая — во всю
   ширину и низкой, и вместе они выглядели случайно.
   Внутри раздела всё выстраивается в один столбец одинаковой ширины,
   с одинаковыми отступами и одинаковым внутренним полем. */
.pf-sec .prof-wrap{grid-template-columns:1fr;gap:16px;margin-top:16px}
.pf-sec > .prof-card,
.pf-sec .prof-wrap > .prof-card{margin-top:0}
.pf-sec > .prof-card + .prof-card,
.pf-sec > .prof-wrap + .prof-card,
.pf-sec > .prof-card + .prof-wrap{margin-top:16px}
/* Ряд «описание слева — кнопка справа»: на узком экране кнопка уходит вниз
   и растягивается, чтобы не висела огрызком у края. */
.pf-sec .prof-dl{gap:14px}
@media (max-width:560px){
  .pf-sec .prof-dl{flex-direction:column;align-items:stretch}
  .pf-sec .prof-dl .prof-ghost{width:100%;justify-content:center}
}


/* ---------- Список документов ----------
   Раньше это были четыре одинаковые кнопки в ряд: по ним нельзя было понять,
   что за чем скрывается. Теперь строка на документ — название, пояснение
   и стрелка, как в списке разделов. */
.doclist{display:flex;flex-direction:column;gap:10px;margin-top:10px}
.docrow{display:flex;align-items:center;gap:14px;width:100%;text-align:left;
  background:#fff;border:1px solid #e7e2d5;border-radius:16px;padding:12px 14px 12px 12px;
  cursor:pointer;font-family:inherit;box-shadow:0 2px 10px rgba(40,35,25,.04);
  transition:border-color .18s ease,box-shadow .18s ease,transform .14s ease}
.docrow:hover{border-color:#c4d3c4;box-shadow:0 8px 22px rgba(40,35,25,.09);transform:translateY(-1px)}
.docrow:active{transform:translateY(0)}

/* Картинка документа: тонированная подложка, белый лист внутри.
   Карточка при этом остаётся белой — цвет живёт только в картинке. */
.docrow-pic{width:60px;height:60px;flex:0 0 60px;border-radius:13px;
  display:flex;align-items:center;justify-content:center;
  background:#eef2ec;color:#3f6b4c}
.docrow-pic svg{width:42px;height:42px}
.docrow[data-tone="offer"]      .docrow-pic{background:#e9f1ea;color:#33684a}
.docrow[data-tone="privacy"]    .docrow-pic{background:#eaeef6;color:#3d5480}
.docrow[data-tone="rules"]      .docrow-pic{background:#f6efe4;color:#8a6430}
.docrow[data-tone="pd_consent"] .docrow-pic{background:#f4ecf1;color:#7a4a68}
.docrow[data-tone="service"]    .docrow-pic{background:#eaf0f1;color:#3a6169}

.docrow-tx{flex:1;min-width:0}
.docrow-tx b{display:block;font:600 14.5px/1.3 var(--sans);color:#23382c}
.docrow-tx i{font-style:normal;font:500 12.5px/1.45 var(--sans);color:#8a8576;display:block;margin-top:3px}
.docrow-go{color:#c3bdad;flex:0 0 auto;display:flex;transition:color .18s ease,transform .18s ease}
.docrow-go svg{width:18px;height:18px}
.docrow:hover .docrow-go{color:#3f6b4c;transform:translateX(3px)}

/* ---------- Две колонки в разделах профиля ----------
   Раньше каждый новый блок вставал под предыдущим, и правая половина
   широкого экрана пустовала. Теперь длинный блок слева, короткие справа. */
.pf-cols{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);
  gap:20px;align-items:stretch}
.pf-col{display:flex;flex-direction:column;gap:20px;min-width:0}
/* Колонки одной высоты: нижняя карточка правой колонки дотягивается до низа
   левой, и блоки заканчиваются на одном уровне, а не уезжают вниз. */
.pf-col > .prof-card:last-child{flex:1}
/* Отступ между карточками задаёт только gap сетки. Раньше сюда добавлялся
   ещё margin от общего правила, и между блоками зияла двойная щель. */
.pf-cols > .prof-card,
.pf-col > .prof-card,
.pf-sec .pf-cols > .prof-card + .prof-card,
.pf-sec .pf-col > .prof-card + .prof-card{margin-top:0}
/* Раздел «Правила»: документы стоят по центру высоты блока правил. */
.pf-cols.mid{align-items:center}
/* Карточка во всю ширину под сеткой (например «Пригласить коллегу»). */
.pf-sec .pf-cols + .prof-card{margin-top:20px}

/* Верхний ряд «Моего профиля»: фото и заполненность рядом. */
.pf-toprow{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:20px;align-items:stretch}
.pf-toprow > *{margin:0!important}
.pf-toprow .prof-ava-card{padding:20px 22px}
.pf-toprow .pm-card{margin:0}
@media(max-width:900px){.pf-toprow{grid-template-columns:1fr;gap:16px}}

/* Раздел «Безопасность»: блоки друг под другом и заметно уже — читать
   форму на всю ширину экрана неудобно. */
.pf-sec[data-pf="security"] .prof-wrap{grid-template-columns:1fr}

.pf-btnrow{display:flex;gap:8px;flex-wrap:wrap}
/* Кнопки в ряду — по содержимому, а не во всю ширину: растянутая кнопка
   читается как полоса, а не как кнопка. */
.pf-btnrow .prof-ghost{flex:0 0 auto}
.prof-check{display:inline-flex;gap:9px;align-items:center;cursor:pointer;
  font:500 12.5px var(--sans);color:#8a8576}
@media(max-width:1000px){
  .pf-cols{grid-template-columns:1fr;gap:20px}
  .pf-col{gap:20px}
}

/* ---------- Кнопка «Сохранить» без изменений ----------
   Тёмная, пока есть что сохранять; после сохранения гаснет. Так видно,
   осталось ли несохранённое. */
.prof-card .btn-add.is-off{background:#e6e2d6;color:#a49e8e;box-shadow:none;cursor:default}
.prof-card .btn-add.is-off:hover{background:#e6e2d6;transform:none}

/* ---------- Флажки ----------
   Системный квадратик мелкий и выпадает из оформления. Рисуем свой:
   того же зелёного цвета, что и остальные действия, с галочкой. */
.pf-sec input[type="checkbox"],
.prof-card input[type="checkbox"]{
  appearance:none;-webkit-appearance:none;
  width:20px;height:20px;flex:0 0 20px;margin:0;border-radius:6px;
  border:1.6px solid #cfc9b8;background:#fffdf7;cursor:pointer;position:relative;
  transition:border-color .15s ease,background .15s ease}
.pf-sec input[type="checkbox"]:hover,
.prof-card input[type="checkbox"]:hover{border-color:#7fa07f}
.pf-sec input[type="checkbox"]:checked,
.prof-card input[type="checkbox"]:checked{background:#2f4738;border-color:#2f4738}
.pf-sec input[type="checkbox"]:checked::after,
.prof-card input[type="checkbox"]:checked::after{
  content:"";position:absolute;left:6px;top:2.5px;width:5px;height:10px;
  border:solid #f4efe2;border-width:0 2px 2px 0;transform:rotate(45deg)}
.pf-sec input[type="checkbox"]:focus-visible,
.prof-card input[type="checkbox"]:focus-visible{outline:2px solid #7fa07f;outline-offset:2px}
/* подпись рядом с флажком — крупнее и кликабельная целиком */
.pf-sec label:has(input[type="checkbox"]),
.prof-card label:has(input[type="checkbox"]){
  display:flex;align-items:center;gap:10px;cursor:pointer;
  font:500 13.5px var(--sans);color:#3a382f}

/* ---------- Поля в разделах профиля ----------
   Подпись была мелкой (12px) и почти прилипала к полю — читалась как часть
   рамки, а не как название. Делаем подпись крупнее и отодвигаем, между
   полями добавляем воздух. */
.pf-sec .prof-fields{gap:20px}
.pf-sec .prof-fg{gap:9px}
.pf-sec .prof-fg>label{font:600 13.5px/1.3 var(--sans);color:#2c3a30;letter-spacing:.1px}
.pf-sec .prof-inp2{padding:13px 15px;font:500 15px var(--sans)}
.pf-sec .prof-fhint,
.pf-sec .prof-av-hint{font:500 12.5px/1.45 var(--sans);color:#8a8576;margin:0}
.pf-sec .prof-ta{min-height:96px;line-height:1.5}

/* Два столбца для коротких полей — на широком экране. Подписи и поля
   выравниваются по общей сетке, а длинные блоки занимают всю ширину. */
@media (min-width:760px){
  .pf-sec .prof-fields{display:grid;grid-template-columns:1fr 1fr;gap:20px 22px;align-items:start}
  .pf-sec .prof-fields > .alert,
  .pf-sec .prof-fields > .btn-add,
  .pf-sec .prof-fields > .prof-fg:has(textarea){grid-column:1 / -1}
}

/* ---------- Кнопка сохранения ----------
   Была во всю ширину карточки — из-за этого выглядела как полоса, а не как
   кнопка. Ширина по содержимому, отступ сверху, погашенное состояние. */
.pf-sec .btn-add{width:auto;min-width:150px;padding:0 26px;height:46px}
.pf-sec .prof-fields > .btn-add{justify-self:start;margin-top:2px}
.prof-card .btn-add.is-off{background:#eae6da;color:#a49e8e;box-shadow:none;
  cursor:default;pointer-events:none}
.prof-card .btn-add.is-off:hover{background:#eae6da;transform:none}

/* ---------- Ритм внутри карточки ----------
   Заголовок раздела прижимался к первому полю, и блок читался как каша.
   Разводим по трём уровням: между карточками больше всего воздуха, между
   блоками внутри карточки — меньше, между подписью и полем — меньше всего. */
.pf-sec .prof-card{padding:26px 26px 24px}
.pf-sec .prof-cardhead{align-items:flex-start;gap:13px;margin:0 0 20px}
.pf-sec .prof-h2{font:600 17px/1.25 var(--serif);color:#23382c;margin:0 0 3px}
.pf-sec .prof-csub{display:block;font:500 12.5px/1.45 var(--sans);color:#8a8576}
.pf-sec .prof-ic{width:38px;height:38px;border-radius:11px;margin-top:1px}

/* Второй и последующие заголовки внутри одной карточки: перед ними —
   отбивка и тонкая линия, чтобы блоки не сливались в один поток. */
.pf-sec .prof-card > .prof-cardhead ~ .prof-cardhead{
  margin-top:28px;padding-top:22px;border-top:1px solid #efeade}

/* Ряды полей и блоки «описание — кнопка». */
.pf-sec .prof-fields{gap:22px 24px}
.pf-sec .prof-card > .prof-dl{margin-top:16px}
.pf-sec .prof-card > .prof-fg{margin-top:16px}
.pf-sec .doclist{margin-top:14px}

/* ---------- Отбивка под названием раздела ----------
   Подпись раздела («Оформление, ссылка для учеников…») стояла вплотную к
   первой карточке — карточка выглядела приклеенной к тексту. */
.prof-sub{margin:10px 0 22px}
.pf-sec > .prof-card:first-child,
.pf-sec > .prof-wrap:first-child > .prof-card:first-child{margin-top:0}
.pf-sec .prof-card + .prof-card{margin-top:20px}

/* ==================== Раскладка «Оплаты» в две колонки ====================
   Непробитые чеки — это работа, которую надо сделать сегодня. Раньше список
   висел в самом низу страницы, под историей: чтобы его увидеть, надо было
   пролистать всё. Теперь он стоит справа и виден сразу, а когда чеков нет —
   страница возвращается в одну колонку по центру. */
.py-wrap{display:block}
.py-wrap.two{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,440px);
  gap:24px;align-items:start}
.py-col{min-width:0}
.py-side{min-width:0;position:sticky;top:84px}
#view-dashboard[data-section="payments"] .dash-main.pay-wide{max-width:1300px}
@media(max-width:1000px){
  .py-wrap.two{grid-template-columns:1fr;gap:20px}
  .py-side{position:static}
}

.rcp-card{background:#fff;border:1px solid #e7e2d5;border-radius:18px;padding:18px;
  box-shadow:0 6px 22px rgba(40,35,25,.06)}
/* Шапка блока чеков — она же кнопка сворачивания. */
.rcp-head{display:flex;gap:12px;align-items:flex-start;margin:0 0 16px;width:100%;
  background:none;border:none;padding:0;text-align:left;font-family:inherit;cursor:pointer}
.rcp-chev{margin-left:auto;color:#b3ada0;flex:0 0 auto;transition:transform .2s ease}
.rcp-chev svg{display:block}
.rcp-card.folded .rcp-chev{transform:rotate(-90deg)}
.rcp-card.folded .rcp-head{margin-bottom:0}
.rcp-card.folded .rcp-body{display:none}
@media(min-width:1000px){.rcp-head{cursor:default}.rcp-chev{display:none}}
.rcp-badge{flex:0 0 34px;width:34px;height:34px;border-radius:11px;background:#f6ece0;
  color:#a8622a;display:flex;align-items:center;justify-content:center;
  font:700 15px var(--sans)}
.rcp-t{font:600 15.5px var(--serif);color:#23382c}
.rcp-s{font:500 12.5px/1.5 var(--sans);color:#8a8576;margin-top:4px}
.rcp-item{border-top:1px solid #f0ebdf;padding-top:14px;margin-top:14px;
  display:flex;flex-direction:column;gap:8px}
.rcp-item:first-of-type{border-top:none;padding-top:0;margin-top:0}
.rcp-item-t{font:600 14px var(--sans);color:#23382c}
.rcp-item-s{font:500 12px var(--sans);color:#8a8576;margin-top:-4px}
.rcp-item .prof-ghost{align-self:flex-start}

/* Чеков нет — тихая строка внизу вместо целой пустой карточки. */
.py-allclear{display:flex;align-items:center;gap:9px;margin-top:22px;
  font:500 13px var(--sans);color:#9a958a}
.py-allclear svg{width:16px;height:16px;color:#5d8a6a}

/* Профилю нужна ширина под две колонки. */
#view-dashboard[data-section="profile"] .dash-main{max-width:1240px}

/* «Безопасность»: поля пароля идут одно под другим. В две колонки они
   читались как две разные формы — «текущий» слева, «новый» справа. */
/* align-items:start достаётся от общего правила и в колонке сжимает поля
   по содержимому — поле пароля выходило шириной в пол-ладони. */
.pf-sec[data-pf="security"] .prof-fields{display:flex;flex-direction:column;gap:18px;
  align-items:stretch}


/* ==================== Правки раскладки ==================== */

/* Три блока в одну строку (раздел «Рост»). */
.pf-cols3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;align-items:stretch}
.pf-cols3 > .prof-card{margin-top:0}
.pf-sec .pf-cols3 > .prof-card + .prof-card{margin-top:0}
@media(max-width:1100px){.pf-cols3{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.pf-cols3{grid-template-columns:1fr;gap:16px}}

/* «Как идут дела» — сетка цифр. Раньше это был флекс-ряд, и на телефоне,
   когда он вставал в столбик, каждая ячейка растягивалась до 120px:
   между четырьмя цифрами получалось пол-экрана пустоты. */
.org-act{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;
  background:#fbf9f3;border:1px solid #ece8df;border-radius:13px;padding:15px 17px;margin-top:16px}
.oa-cell{min-width:0}
.oa-v{font:600 20px/1.2 var(--sans);color:#23382c}
.oa-t{font:500 12px/1.35 var(--sans);color:#8a8576;margin-top:3px}

/* Ни один элемент внутри .prof-dl не должен тянуться по высоте, когда блок
   переворачивается в столбик: из-за flex-basis поле с кодом вырастало
   до высоты в четверть экрана. */
.pf-sec .prof-dl > *{flex:0 0 auto}
.pf-sec .prof-dl .prof-inp2{width:100%}

/* Узкие блоки стоят по центру, а не жмутся к левому краю. */
/* Узкая карточка внутри сетки: одних авто-полей мало — элемент сетки с
   ними сжимается по содержимому. Ширину задаём явно. */


/* Чеки — ещё шире: в поле должна помещаться ссылка целиком. */
.py-wrap.two{grid-template-columns:minmax(0,1fr) minmax(0,500px)}
#view-dashboard[data-section="payments"] .dash-main.pay-wide{max-width:1360px}
@media(max-width:1080px){.py-wrap.two{grid-template-columns:1fr}}

/* На телефоне поля карточек были рассчитаны на большой экран: 26px по краям
   съедали седьмую часть ширины, и текст выглядел разреженным. */
@media(max-width:760px){
  .pf-sec .prof-card{padding:18px 16px 16px}
  .pf-sec .prof-cardhead{margin:0 0 14px;gap:11px}
  .pf-sec .prof-fields{gap:16px}
  .pf-sec .prof-card > .prof-dl,
  .pf-sec .prof-card > .prof-fg{margin-top:12px}
  .org-act{padding:13px 14px;gap:10px;margin-top:12px}
  .prof-sub{margin:8px 0 16px}
  .pf-sec .prof-card > .prof-cardhead ~ .prof-cardhead{margin-top:20px;padding-top:16px}
}

/* Раздел «Безопасность» узкий и стоит по центру — значит и заголовок с
   подписью центрируем, иначе они висят у левого края сами по себе. */


/* Урок на телефоне — отдельное окно во весь экран. Шапка панели берёт на
   себя роль шапки сайта: в ней кнопка «назад» и название урока. */
@media(max-width:980px){
  .lz-detailwrap .lz-dhead{
    padding-top:calc(14px + env(safe-area-inset-top));
    background:#fffefb;border-bottom:1px solid #ece7da;
    box-shadow:0 2px 14px rgba(40,53,40,.05)}
  .lz-detailwrap .lz-dpad{padding-bottom:calc(28px + env(safe-area-inset-bottom))}
}

/* Поле и кнопка в одну строку: кнопка под полем растягивала карточку
   вдвое и читалась как отдельный блок. */
.rcp-row{display:flex;gap:8px;align-items:center}
.rcp-row .prof-inp2{flex:1 1 auto;min-width:0}
.rcp-row .prof-ghost{flex:0 0 auto;white-space:nowrap}
.rcp-item .prof-ghost{align-self:auto}
.py-wrap.two{grid-template-columns:minmax(0,1fr) minmax(0,560px)}
#view-dashboard[data-section="payments"] .dash-main.pay-wide{max-width:1440px}

/* Заголовок раздела «Безопасность» — слева, как во всех разделах;
   по центру стоят только сами блоки. */


/* Один столбик по центру — для разделов, где блоки короткие и не стоит
   растаскивать их по ширине экрана. */
.pf-stack{display:flex;flex-direction:column;gap:20px}
.pf-stack > .prof-card{margin-top:0}
.pf-sec .pf-stack > .prof-card + .prof-card{margin-top:0}

/* Погашенное состояние для светлых кнопок (Приложить, Скачать архив). */
.prof-ghost.is-off{background:#f2efe6;color:#b3ada0;border-color:#e8e3d6;
  box-shadow:none;cursor:default;pointer-events:none}

/* ---------- Узкие разделы профиля ----------
   Раздел стоит по центру целиком — вместе с заголовком и подписью.
   Раньше центровались только карточки, а заголовок оставался у левого
   края страницы и висел сам по себе. */
#dashContent[data-pftab="security"] .section-head,
#dashContent[data-pftab="security"] .prof-sub,
#dashContent[data-pftab="security"] .pf-sec .prof-card,
#dashContent[data-pftab="security"] .pf-sec .prof-wrap{
  width:100%;max-width:860px;margin-left:auto;margin-right:auto}
#dashContent[data-pftab="security"] .section-head{justify-content:flex-start}
#dashContent[data-pftab="security"] .prof-sub{margin-top:10px}

#dashContent[data-pftab="growth"] .section-head,
#dashContent[data-pftab="growth"] .prof-sub,
#dashContent[data-pftab="growth"] .pf-stack{
  width:100%;max-width:920px;margin-left:auto;margin-right:auto}
#dashContent[data-pftab="growth"] .section-head{justify-content:flex-start}
#dashContent[data-pftab="growth"] .prof-sub{margin-top:10px}

/* ВАЖНО: правило ширины колонки чеков объявлено выше по файлу и без медиа —
   оно перебивало мобильную раскладку, и блок чеков ложился поверх статистики.
   Держим переопределение последним. */
@media(max-width:1080px){
  .py-wrap.two{display:block}
  .py-side{position:static;margin-top:20px}
}

/* ==================== Рисунок у заголовка раздела ====================
   Не плашка во всю ширину, а просто предмет справа от названия: без фона,
   без рамки, без карточки. Заголовок читается как заголовок. */
/* Рисунок вынут из потока: иначе он был выше текста, строка заголовка
   растягивалась под него, и заголовок съезжал к середине. Теперь высоту
   строки задаёт только текст, а картинка висит справа по центру. */
/* z-index выше соседних карточек: рисунок выступает за строку заголовка,
   и без этого нижний блок местами наезжал на него краем. */
.sec-art{position:absolute;right:0;top:50%;transform:translateY(-50%);
  width:190px;pointer-events:none;z-index:5}
.sec-art svg{width:100%;height:auto;display:block}
/* Готовая иллюстрация раздела: прозрачный webp 768×512. */
.sec-art .section-illustration{width:100%;height:auto;display:block;object-fit:contain}
/* Выравнивание строки не трогаем — поиск и часовой пояс должны стоять
   на нижней линии заголовка, как раньше. Рисунок центрируется сам
   (align-self у .sec-art). */
.ma-titlerow.has-art,.tk-titlerow.has-art{gap:16px;position:relative;padding-right:210px}
/* z-index на самой строке: без него слой рисунка считался наравне с
   карточками ниже, и в «Прогрессе» блок статистики закрывал картинку. */
.uc-titlerow.has-art,.lz-toolbar.has-art,.py-titlerow.has-art,
.tf-titlerow.has-art,.section-head.has-art,.sch-toolbar.has-art,
.ma-titlerow.has-art,.tk-titlerow.has-art{position:relative;z-index:5}
.uc-titlerow.has-art,.lz-toolbar.has-art,.py-titlerow.has-art,
.tf-titlerow.has-art,.section-head.has-art,.sch-toolbar.has-art{padding-right:210px}
@media(max-width:1000px){
  .ma-titlerow.has-art,.tk-titlerow.has-art,.uc-titlerow.has-art,.lz-toolbar.has-art,
  .py-titlerow.has-art,.tf-titlerow.has-art,.section-head.has-art,
  .sch-toolbar.has-art{padding-right:168px}
}
@media(max-width:560px){
  .ma-titlerow.has-art,.tk-titlerow.has-art,.uc-titlerow.has-art,.lz-toolbar.has-art,
  .py-titlerow.has-art,.tf-titlerow.has-art,.section-head.has-art,
  .sch-toolbar.has-art{padding-right:0}
}
/* У расписания рисунок вставлен перед панелью — уводим его вправо. */
.sch-mobile ~ .sec-art{display:none}
@media(max-width:1000px){.sec-art{width:150px}}
@media(max-width:820px){.sec-art{width:118px}}
@media(max-width:560px){.sec-art{display:none}}

/* Приветствие на сводке — с рисунком справа. */
.ov-hero{position:relative;padding-right:270px;z-index:5}
.ov-hero-tx{flex:1;min-width:0}
/* Без подложки: рисунок стоит сам по себе, а не в плашке. */
.ov-hero-pic{position:absolute;right:0;top:50%;transform:translateY(-50%);
  width:250px;display:flex;align-items:center;justify-content:center;
  pointer-events:none;z-index:5}
.ov-hero-pic:empty{display:none}
.ov-hero-pic svg,.ov-hero-pic img{width:100%;height:auto;max-height:150px;display:block;object-fit:contain}
@media(max-width:820px){
  .ov-hero{padding-right:150px}
  .ov-hero-pic{width:130px}
  .ov-hero-pic svg,.ov-hero-pic img{max-height:92px}
}
@media(max-width:480px){.ov-hero-pic{display:none}.ov-hero{padding-right:0}}

/* Рисунок в шапке любого раздела. */
.uc-titlerow.has-art,.lz-toolbar.has-art,.py-titlerow.has-art,
.tf-titlerow.has-art,.section-head.has-art{gap:16px;flex-wrap:wrap}

/* Кнопка «Создать задание» — в строке вкладок. */
.tk-tabrow{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:18px}
.tk-tabrow .tk-tabs{margin-top:0;flex:1 1 auto;min-width:0}
.tk-tabrow .tk-create{flex:0 0 auto;margin:0}
@media(max-width:560px){.tk-tabrow .tk-create{width:100%;justify-content:center}}

/* ---------- Оживление рисунков ----------
   Рисунок «въезжает» при открытии раздела, а не появляется рывком.
   Пар над чашкой и свет лампы едва заметно живут своей жизнью. */
@keyframes artIn{from{opacity:0;transform:translateY(10px) scale(.97)}to{opacity:1;transform:none}}
/* Отдельная анимация для рисунка: он центрирован через translateY(-50%),
   и обычная artIn сбивала бы это центрирование. */
@keyframes artInPic{
  from{opacity:0;transform:translateY(calc(-50% + 12px)) scale(.96)}
  to{opacity:1;transform:translateY(-50%) scale(1)}}
/* Анимация только при входе в раздел: класс art-in ставится один раз.
   Иначе рисунок дёргался на каждое переключение вкладок внутри раздела. */
/* fill-mode backwards, а не both: «both» оставляет элемент в начальном
   состоянии (прозрачным), если анимация по какой-то причине не запустилась —
   и картинка просто не появляется. С backwards обычное состояние всегда
   видимое, анимация только показывает появление. */
.sec-art.art-in{animation:artInPic .55s cubic-bezier(.2,.8,.3,1) .06s backwards}
.ov-hero.art-in .dash-hello{animation:artIn .5s cubic-bezier(.2,.8,.3,1) backwards}
.ov-hero.art-in .dash-date{animation:artIn .5s cubic-bezier(.2,.8,.3,1) .07s backwards}
.ov-hero.art-in .ov-hero-pic{animation:artInPic .6s cubic-bezier(.2,.8,.3,1) .12s backwards}

@media (prefers-reduced-motion:reduce){
  .sec-art,.ov-hero,.ov-hero *{animation:none!important}
}

/* Вкладки заданий не растягиваются на всю строку: серая подложка во всю
   ширину читалась как пустая полоса. */
.tk-tabrow .tk-tabs{flex:0 0 auto;width:fit-content;max-width:100%}
.tk-tabrow{justify-content:space-between}

/* Строка над папками материалов. */
.ma-foldbar{display:flex;align-items:center;justify-content:space-between;gap:14px;
  margin:26px 0 12px;flex-wrap:wrap}
.ma-foldbar-t{font:700 11.5px var(--sans);letter-spacing:.09em;text-transform:uppercase;color:#a7a293}

/* Заполненность профиля — кликабельна. */
.pm-card{cursor:pointer;transition:transform .14s ease,box-shadow .14s ease}
.pm-card:hover{transform:translateY(-2px);box-shadow:0 10px 26px rgba(40,35,25,.09)}

/* ===== Правки 30 сентября: запуск ===== */
/* Предупреждение (не ошибка и не «Готово»): «оплата не завершена» и т.п. */
.sys-toast .ic.warn{background:#fbf0d6;color:#9a6b12}
.sys-toast.warn .bar>i{background:linear-gradient(90deg,#e6c46e,#c99a2e)}
/* Возвраты ученикам у репетитора */
.py-refunds{border:1px solid #efd9b4;background:#fffaf0;margin-bottom:14px}
.py-refunds-h{font:700 14px var(--sans);color:#8a5a12;margin-bottom:8px}
.py-refund-row{display:flex;gap:12px;align-items:center;justify-content:space-between;padding:10px 0;border-top:1px solid #f1e3c6;flex-wrap:wrap}
.py-refund-row:first-of-type{border-top:none}
.py-refund-main{min-width:0;flex:1 1 240px;font:500 14px var(--sans);color:var(--ink)}
.py-refund-why{font:500 12.5px var(--sans);color:#7d7868;margin-top:3px}
.py-refund-acts{display:flex;gap:8px;flex-wrap:wrap}
.py-paid.py-refunded{color:#8a5a12}
.py-paid.py-refunding{color:#9a6b12}
.py-rcpt{color:var(--ever,#3f5a48);font-weight:600;text-decoration:none}
.py-rcpt:hover{text-decoration:underline}
/* Подсказка про «Спам» в восстановлении пароля */
.rp-spam{margin:8px 0 0;font:500 12.5px var(--sans);color:#7d7868;line-height:1.4}
/* Распознавание речи выключено на сервере — кнопки «Расшифровать» не показываем */
.no-stt [data-lztr],.no-stt #leTranscribe{display:none!important}
/* Контраст мелких серых подписей: было ≈2.5:1, стало ≥4.5:1 */
.py-statnote,.prog-stat-cap,.stat .ssub{color:#77725f}

/* Полоса прокрутки — тёмно-зелёная, хорошо видна на светлом фоне. */
html,*{scrollbar-color:#4f6e57 transparent}
*::-webkit-scrollbar-thumb{background:#4f6e57;background-clip:content-box}
*::-webkit-scrollbar-thumb:hover{background:#3a5442;background-clip:content-box}
/* Комментарий к работе: кнопки под полем и общий блок у ученика */
.tk-commacts{display:flex;justify-content:flex-end;margin-top:8px}
.tk-gcomment{margin:0 0 14px}.tk-gcomment p{margin:4px 0 0;white-space:pre-wrap;overflow-wrap:anywhere}
/* Оплата → Абонемент: карточка абонемента по ширине ряда тарифов под ней
   (ширину и сдвиг ставит pyAlignHeros в app.js). */
.py-heros{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;margin-bottom:18px}
.py-heros .py-hero{margin:0}
/* Оплаты (ученик и репетитор): карточки уже — не во всю ширину страницы.
   Размеры шрифтов и отступы внутри карточек прежние. */
.py-stats,.py-pane>.py-card,.py-pane>.py-banner,.py-pane>.py-hrow,.py-pane>.py-empty,
.py-pane>.py-refunds{max-width:640px;width:100%;box-sizing:border-box}
/* Чеки: первые три, остальные по кнопке */
.rcp-card:not(.rcp-all) .rcp-extra{display:none}
.rcp-more{display:block;width:100%;margin-top:10px;padding:9px;border:1px dashed #cfd8c9;border-radius:10px;background:transparent;font:600 12.5px var(--sans);color:#3f5a48;cursor:pointer}
.rcp-more:hover{background:#f0f4eb}
.rcp-card.folded .rcp-more{display:none}
/* Окно «Онлайн-оплата пока недоступна» */
.nfy-title{margin:0 0 8px;font:600 19px/1.3 var(--serif);color:var(--ink)}
.pay-off .nfy-msg{max-width:360px;margin:0 auto 18px;line-height:1.6}
.pay-off .nfy-ic svg{width:24px;height:24px;stroke:#8a6d34}
/* Фото репетитора в карточке записи */
.sch-avatar .sch-ava-in{width:100%;height:100%;border-radius:50%;display:flex;align-items:center;justify-content:center;background-size:cover;background-position:center}
/* Подсказка режима переноса: тёмно-зелёная и с отступом от легенды сверху */
.resch-bar{margin:16px 0 14px;background:#2f4738;border-color:#2f4738;color:#f1efe6;box-shadow:0 6px 16px rgba(35,56,44,.16)}
.resch-bar .slot-act{background:#f4efe2;border-color:#f4efe2;color:#23382c}
.resch-bar .slot-act:hover{background:#fff}
/* Условие задания — книжным шрифтом, как в печатных вариантах ФИПИ:
   длинный текст из банка заданий жирным рубленым шрифтом читался тяжело. */
.tk-take-qtext,.tk-rqtext,.tb-condition{font:400 17px/1.6 var(--serif);color:#24231e}
body .hw-math-preview{font-family:var(--serif);font-size:16px;line-height:1.6}
body .hw-math-preview .hw-math-cap{font-family:var(--sans)}
.tk-take-qtext .qtbl,.tk-rqtext .qtbl,.tb-condition .qtbl,.hw-math-preview .qtbl{font-size:14px}
.tk-qhead,.tk-rqhead{align-items:flex-start}
.tk-qhead .tk-qnum{margin-top:2px}
@media(max-width:560px){.tk-take-qtext,.tk-rqtext{font-size:16px;line-height:1.55}}
/* Карточка абонемента: крупно — цена, под ней цена занятия и выгода;
   под чертой — срок действия и откуда выгода */
.cm-pricebox{margin:0 0 14px}
.cm-quantity.cm-q-price{min-height:60px;margin:0 0 6px}
.cm-quantity.cm-q-price strong{font:400 52px/1 var(--serif);letter-spacing:-.03em;white-space:nowrap}
.cm-quantity.cm-q-price strong small{font-size:28px;letter-spacing:0}
.cm-price-sub{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;font:500 12.5px var(--sans);color:var(--muted)}
.cm-gain{display:inline-flex;align-items:center;padding:3px 9px;border-radius:20px;background:#e6efe1;color:#2f6b46;font:600 11.5px var(--sans)}
.cm-terms b{display:block;font:600 13px/1.4 var(--sans);color:var(--ever)}
@media(max-width:640px){.cm-quantity.cm-q-price strong{font-size:42px}.cm-quantity.cm-q-price strong small{font-size:23px}}
/* Оплаты репетитора с колонкой чеков: левая колонка по ширине карточек
   (640px), чеки — сразу рядом, без пустого промежутка. */
@media(min-width:1081px){.py-wrap.two{grid-template-columns:minmax(0,640px) minmax(0,1fr)}}
/* История оплат: месяцы, карточки с видом оплаты, статусом и кнопкой чека */
.py-pane>.py-hgroup{max-width:640px;width:100%}
.py-hgroup+.py-hgroup{margin-top:10px}
.py-hgroup-h{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:2px 4px 8px;
  font:600 11.5px var(--sans);letter-spacing:.06em;text-transform:uppercase;color:#8a8576}
.py-hgroup-h span:last-child{letter-spacing:0;text-transform:none;font-weight:500}
.py-hcard{display:flex;align-items:center;gap:14px;background:#fffefb;border:1px solid var(--line);border-left:3px solid #5e8068;
  border-radius:14px;padding:13px 16px;box-shadow:0 4px 14px rgba(40,35,25,.04);margin-bottom:8px;transition:box-shadow .18s,transform .18s}
.py-hcard:hover{box-shadow:0 8px 22px rgba(40,35,25,.08);transform:translateY(-1px)}
.py-hcard.refunded{border-left-color:#c79a52;background:#fffcf6}
.py-hico{width:40px;height:40px;border-radius:12px;flex-shrink:0;display:flex;align-items:center;justify-content:center}
.py-hico.subscription{background:#e7f0e7;color:#2f6b46}
.py-hico.lesson{background:#eef0e9;color:#4e6b49}
.py-hico.remainder{background:#f6ece0;color:#a8672f}
.py-hbody{flex:1;min-width:0}
.py-htop{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.py-hname{font:600 14.5px var(--sans);color:#23211c;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.py-htop .py-paid{display:inline-flex;align-items:center;padding:2px 8px;border-radius:20px;background:#e6efe1;font:600 10.5px var(--sans)!important;color:#3f6b4c!important}
.py-htop .py-paid.py-refunded{background:#f6ead6;color:#8a5a12!important}
.py-htop .py-paid.py-refunding{background:#f8efd9;color:#9a6b12!important}
.py-hsub{margin-top:3px;font:500 12px var(--sans);color:#8a8576;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.py-hright{display:flex;flex-direction:column;align-items:flex-end;gap:5px;flex-shrink:0}
.py-hsum{font:700 17px var(--serif);color:#23382c;white-space:nowrap}
.py-hcard.refunded .py-hsum{color:#8a7a5a;text-decoration:line-through;text-decoration-thickness:1px}
.py-hrc{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:20px;border:1px solid #cfdccb;
  background:#f4f8f2;color:#2f5a3b;font:600 11px var(--sans);text-decoration:none;white-space:nowrap}
.py-hrc:hover{background:#e7f0e3;border-color:#b7cbb1}
.py-hrc.off{border-style:dashed;border-color:#ddd7c8;background:transparent;color:#a7a293;font-weight:500}
@media(max-width:560px){.py-hcard{padding:11px 12px;gap:11px}.py-hico{width:34px;height:34px}.py-hsub{white-space:normal}}
/* Карточки абонементов — шрифты чуть меньше (с .cm-pass: mobile-final.css
   подключается позже и иначе перебивает размеры) */
.cm-pass .cm-pass-title{font-size:21px;min-height:52px;margin:12px 0 10px}
.cm-pass .cm-quantity.cm-q-price{min-height:50px;margin:0 0 6px}
.cm-pass .cm-quantity.cm-q-price strong{font:400 44px/1 var(--serif);letter-spacing:-.03em}
.cm-pass .cm-quantity.cm-q-price strong small{font-size:23px;letter-spacing:0}
.cm-pass .cm-quantity .tf-subicon svg{width:28px;height:28px}
.cm-pass .cm-price-sub{font-size:12px}
.cm-pass .cm-gain{font-size:11px;padding:2px 8px}
.cm-pass .cm-terms b{font-size:12.5px}
@media(max-width:640px){.cm-pass .cm-pass-title{font-size:19px;min-height:46px}.cm-pass .cm-quantity.cm-q-price strong{font-size:38px}.cm-pass .cm-quantity.cm-q-price strong small{font-size:20px}}

/* История оплат: года — переключатель, месяцы — аккуратные сворачиваемые строки */
.py-hist{max-width:640px;width:100%}
.py-hyears{display:inline-flex;gap:4px;padding:4px;margin:0 0 12px;border-radius:12px;background:#efece3}
.py-hyears button{border:0;background:transparent;padding:7px 14px;border-radius:9px;font:600 13px var(--sans);color:#7a7566;cursor:pointer}
.py-hyears button small{font-weight:500;color:#a7a293;margin-left:4px}
.py-hyears button.on{background:#fffefb;color:#23382c;box-shadow:0 2px 8px rgba(40,35,25,.08)}
.py-hyear-panel[hidden]{display:none}
.py-hm{border-bottom:1px solid #e9e4d6}
.py-hm:first-child{border-top:1px solid #e9e4d6}
.py-hm>summary{list-style:none;display:flex;align-items:center;gap:12px;padding:14px 4px;cursor:pointer;user-select:none}
.py-hm>summary::-webkit-details-marker{display:none}
.py-hm-name{font:500 18px var(--serif);color:#23211c}
.py-hm-name small{font:500 12px var(--sans);color:#a7a293;margin-left:6px}
.py-hm-meta{flex:1;font:500 12px var(--sans);color:#a7a293}
.py-hm-sum{font:600 15px var(--serif);color:#23382c;white-space:nowrap}
.py-hm-chev{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#f1efe6;color:#6f7a68;transition:transform .2s,background .2s}
.py-hm>summary:hover .py-hm-chev{background:#e7ece2}
.py-hm[open]>summary .py-hm-chev{transform:rotate(180deg);background:#2f4738;color:#f4efe2}
.py-hm[open]>summary .py-hm-name{color:#2f5a3b}
.py-hm-body{padding:2px 0 12px}
.py-hm-body .py-hcard:last-child{margin-bottom:0}
/* Карточки тарифов не шире экрана, даже если внутри длинная строка */
.tf-top>.tf-card{min-width:0}
