:root{--bg:#f6f2f0;--card:#fff;--ink:#2b2523;--mut:#7d716d;--ac:#dccdc9;--ac2:#cdb8b2;--line:#e9e0dd;--ok:#cfe3d3;--no:#ecc9c5;--warn:#f6e7c8;--err:#b0574f;--sh:0 4px 20px rgba(60,40,35,.08)}
@media(prefers-color-scheme:dark){:root{--bg:#1f1b1a;--card:#2a2523;--ink:#efe6e3;--mut:#a29692;--line:#3a3331;--ok:#3d5444;--no:#5a3a36;--warn:#514326;--sh:0 4px 20px rgba(0,0,0,.4)}}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:400 15px/1.45 Roboto,-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif}
.wrap{max-width:980px;margin:0 auto;padding:12px max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}
header{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:12px 0;border-bottom:1px solid var(--line);margin-bottom:16px}
h1{font-size:21px;font-weight:500;letter-spacing:.4px;margin:0}h2{font-size:16px;font-weight:500;margin:0}
.role,small,.mut{color:var(--mut);font-size:13px}small{display:block}
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 16px;margin-bottom:14px;box-shadow:var(--sh);animation:up .4s ease both}
.card.warn{background:var(--warn)}
@keyframes up{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.ch{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}.cnt{margin-left:8px;font-size:12px;background:var(--ac);color:#3b2f2c;border-radius:20px;padding:1px 9px}
button{font:inherit;font-weight:500;background:var(--ac);color:#3b2f2c;border:0;border-radius:10px;padding:9px 16px;cursor:pointer;transition:transform .15s,background .2s,box-shadow .2s}
button:hover{background:var(--ac2);transform:translateY(-1px);box-shadow:0 3px 10px rgba(80,55,50,.18)}button:active{transform:scale(.95)}
button.ghost{background:transparent;border:1px solid var(--ac2);color:var(--ink)}button.ghost:hover{background:var(--ac);color:#3b2f2c}
button.sm{padding:5px 11px;font-size:13px}button.wide{width:100%;margin-top:10px}
.ic{width:34px;height:34px;padding:0;display:inline-grid;place-items:center;border-radius:10px;background:transparent;border:1px solid var(--line);color:var(--ink);flex:none}
.ic svg{width:18px;height:18px}.ic:hover{background:var(--ac);color:#3b2f2c}.ic.ok{background:var(--ok);border-color:transparent;color:inherit}.ic.pri{background:var(--ac);border-color:transparent;color:#3b2f2c;width:44px;height:44px}.ic.pri svg{width:22px;height:22px}
input,select{font:inherit;font-size:16px;background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:10px;padding:9px 11px;min-width:0;max-width:100%;transition:border .2s,box-shadow .2s}
input:focus,select:focus,button:focus-visible{outline:0;border-color:var(--ac2);box-shadow:0 0 0 3px var(--ac)}
select{width:100%;margin:4px 0}.w90{max-width:90px}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:8px}.row>*{flex:1 1 140px}.row>button,.row>.ic{flex:0 0 auto}
.chk{display:flex;gap:8px;align-items:center;font-size:14px;flex-basis:100%}.chk input{flex:none}
.tabs{display:flex;gap:6px;overflow-x:auto;margin:0 -16px 14px;padding:0 16px 4px;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}
.tabs button{flex:0 0 auto;white-space:nowrap;background:transparent;border:1px solid var(--line);color:var(--ink)}.tabs button.on{background:var(--ac);color:#3b2f2c;border-color:var(--ac2)}
/* единый список */
.sub{margin:12px 0 2px;font-size:12px;letter-spacing:.8px;text-transform:uppercase;color:var(--mut);font-weight:500}
.li{display:flex;align-items:flex-start;gap:10px;padding:9px 0;border-top:1px solid var(--line)}.sub+.li,.ch+.li,h2+.li{border-top:0}
.li .n{flex:0 0 26px;text-align:right;color:var(--mut)}.li .tx{flex:1;min-width:0;overflow-wrap:anywhere}.li .tx b{font-weight:500}
.ia{display:flex;gap:4px;flex:none}
.badge{font-size:11px;padding:2px 9px;border-radius:20px;background:var(--ac);color:#3b2f2c;margin-left:8px;white-space:nowrap;vertical-align:1px}.badge.ok{background:var(--ok);color:inherit}.badge.no{background:var(--no);color:inherit}
.empty{color:var(--mut);padding:8px 0}.login{max-width:380px;margin:12vh auto}.login form{display:grid;gap:10px;margin-top:12px}
.dot{background:var(--err);color:#fff;border-radius:20px;font-size:11px;padding:1px 7px;margin-left:6px}.err{color:var(--err);font-size:13px;min-height:18px}
.ov{position:fixed;inset:0;background:rgba(30,20,18,.45);display:grid;place-items:center;padding:16px;animation:fade .2s;z-index:10}.ov .card{width:100%;max-width:440px;margin:0;max-height:90vh;overflow:auto}
@keyframes fade{from{opacity:0}}
#toast{position:fixed;left:50%;bottom:max(24px,env(safe-area-inset-bottom));transform:translateX(-50%);display:grid;gap:8px;z-index:20;width:max-content;max-width:calc(100% - 32px)}
#toast div{background:var(--ink);color:var(--bg);padding:10px 18px;border-radius:10px;animation:up .3s ease;box-shadow:var(--sh)}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}.chip{color:#2b2523;border:1px solid rgba(0,0,0,.08)}.chip.ghost{color:var(--ink);background:transparent}
.sw{width:18px;height:18px;border-radius:5px;border:1px solid rgba(0,0,0,.15);flex:none;margin-top:3px}
/* график */
.mn{display:flex;align-items:center;justify-content:space-between;gap:8px}.mn h2{text-transform:capitalize}
.hint{display:flex;align-items:center;justify-content:space-between;gap:8px;background:var(--warn);border-radius:10px;padding:8px 12px;margin-bottom:10px;font-size:14px}
.gw{overflow:auto;max-height:75vh;border:1px solid var(--line);border-radius:12px;background:var(--card);-webkit-overflow-scrolling:touch}
table.sch{border-collapse:separate;border-spacing:0;font-size:12px;min-width:max-content}
.sch th,.sch td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);min-width:30px;height:34px;text-align:center;padding:0}
.sch th{background:var(--ac);color:#3b2f2c;font-weight:500;line-height:1.1;position:sticky;top:0;z-index:1}.sch th i{display:block;font-style:normal;font-size:10px;opacity:.7}
.sch .nm{position:sticky;left:0;z-index:2;background:var(--card);text-align:left;padding:0 8px;min-width:150px;max-width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sch th.nm{background:var(--ac);z-index:3}.sch th.tdy{box-shadow:inset 0 -3px 0 #c9a227}
.sch td.we{background:rgba(205,184,178,.32)}.sch td.fl{color:#2b2523;font-weight:500}.sch td.bar{letter-spacing:1px;text-transform:uppercase;font-size:11px}
.sch td.cl{cursor:pointer}.sch td.cl:hover{filter:brightness(.94)}.sch td.sel{outline:2px solid #3b2f2c;outline-offset:-2px}
.sch tr.sec td{background:var(--ac);color:#3b2f2c;font-weight:500;text-align:left;padding:0 8px}
@media(max-width:480px){.li{flex-wrap:wrap}.li .tx{flex:1 1 calc(100% - 40px)}.ia.many{flex-basis:100%;justify-content:flex-end;padding-left:36px}}
@media(max-width:640px){header .acts{width:100%;display:flex;gap:8px}header .acts button{flex:1}.card{padding:12px 14px}.row>*{flex:1 1 100%}.row>button,.row>.ic.pri{flex:0 0 auto}.ov{align-items:end;padding:0}.ov .card{max-width:none;border-radius:16px 16px 0 0;padding-bottom:max(16px,env(safe-area-inset-bottom))}.sch .nm{min-width:120px;max-width:120px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

.fld{display:flex;gap:6px;align-items:center;flex:1 1 100%}.fld select,.fld input{flex:1;margin:0;width:auto}.lbl{flex:1 1 100%;font-size:12px;letter-spacing:.8px;text-transform:uppercase;color:var(--mut);font-weight:500;margin-top:6px}
details.more{flex:1 1 100%;border:1px dashed var(--ac2);border-radius:10px;padding:8px 10px}details.more summary{cursor:pointer;color:var(--mut);font-size:14px}details.more .row{margin-top:8px}

/* v3: выбор людей, скрытые элементы, время в строках */
[hidden]{display:none!important}
.plist{max-height:260px;overflow:auto;margin-top:8px;display:grid;gap:0}
.plist .chk{padding:7px 2px;border-top:1px solid var(--line);align-items:flex-start}.plist .chk small{display:block}
details.pp input[type=search]{width:100%;margin-top:8px}
header .acts button.ic{flex:0 0 auto}
.li input[type=time]{flex:0 0 120px}

.cbx{flex:0 0 26px;padding-top:2px}.cbx input{width:22px;height:22px;accent-color:#8a7069}

/* расписание занятий */
.ls{display:flex;gap:12px;padding:10px 0;border-top:1px solid var(--line)}.ch+.ls,.empty+.ls{border-top:0}
.ls .tm{flex:0 0 92px}.ls .tm b{font-weight:500}.ls .tx{flex:1;min-width:0;overflow-wrap:anywhere}.ls .tx b{font-weight:500}

/* v4: шапка с иконками, закреплённая вкладка, раздел «Админ» */
header .acts{display:flex;flex-direction:column;align-items:flex-end;gap:8px}
.hic{display:flex;gap:8px}.hbt{display:flex;gap:8px}
.bw{position:relative;display:inline-flex}.bw .dot{position:absolute;top:-7px;right:-7px;margin:0;font-size:10px;padding:1px 6px}
.ic.on{background:var(--ac);color:#3b2f2c;border-color:var(--ac2)}
.tabs{position:relative}
.seg{display:flex;gap:6px;margin-bottom:14px}.seg button{flex:1;background:transparent;border:1px solid var(--line);color:var(--ink)}.seg button.on{background:var(--ac);color:#3b2f2c;border-color:var(--ac2)}
@media(max-width:640px){header .acts{width:100%;align-items:stretch}.hic{justify-content:flex-end}.hbt button{flex:1}}

/* v5: шапка — название по центру, строка пользователя на одной линии с крупными иконками */
header.top{display:flex;flex-direction:column;gap:12px;align-items:stretch}
.brand{display:flex;justify-content:center}
.logo{height:40px;width:auto;color:var(--ink);display:block}.logo.big{height:50px;margin-bottom:6px}
.hrow{display:flex;align-items:center;justify-content:space-between;gap:10px}
.who{color:var(--mut);font-size:14px;min-width:0;overflow-wrap:anywhere}
.hic{display:flex;gap:10px;flex:none}
.hic .ic{width:46px;height:46px;border-radius:12px}.hic .ic svg{width:24px;height:24px}
.hbt{display:flex;gap:8px}.hbt button{flex:1}
.bw .dot{top:-8px;right:-8px}

/* события расписания */
.evb{display:inline-block;font-size:11px;padding:2px 8px;border-radius:20px;margin:3px 6px 0 0;white-space:nowrap;color:#3b2f2c}
.evl{display:flex;flex-wrap:wrap}
.ev-zso{background:#f3d9b8}.ev-zach{background:#cfe3d3}.ev-kp{background:#d5cdea}.ev-exam{background:#ecc9c5}.ev-kr{background:#cfdcea}.ev-ktz{background:#e3e3c4}
.ls.ev-row{border-left:3px solid transparent;padding-left:8px}
.ls.ev-zso{border-left-color:#e3b784}.ls.ev-zach{border-left-color:#8fbf9a}.ls.ev-kp{border-left-color:#a99bd3}.ls.ev-exam{border-left-color:#d98a82}.ls.ev-kr{border-left-color:#8fb0d3}.ls.ev-ktz{border-left-color:#c2c28a}
@media(prefers-color-scheme:dark){.evb{color:#2b2523}}

/* v6 */
ol.steps{margin:6px 0 4px;padding-left:20px}ol.steps li{margin:8px 0}

/* v7: расход */
.rp{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin:8px 0;font:14px/1.55 ui-monospace,Menlo,Consolas,monospace;white-space:pre-wrap;overflow-wrap:anywhere}

.login button.ghost{display:block;width:100%;margin-top:18px}
.login .err{margin-top:12px}
.ph{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:10px 0}.ph .pt{position:relative}.ph img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:8px;display:block}.ph .pt .ic{position:absolute;top:4px;right:4px;background:rgba(255,255,255,.88);color:#3b2f2c}.ph .empty{grid-column:1/-1}

/* подменю админки: не шире экрана, при нехватке места прокручивается пальцем */
.seg{overflow-x:auto;max-width:100%;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.seg::-webkit-scrollbar{display:none}
.seg button{flex:1 0 auto;white-space:nowrap;padding-left:12px;padding-right:12px}
html,body{overflow-x:hidden}
