/* Dostyk Hub — light and dark themes, one accent taken from the brand (settings → accent). */
:root{
  --acc:#1b6f86; --brand:#123f52; --acc-ink:#fff; --acc-soft:color-mix(in srgb,var(--acc) 12%,transparent); --acc-line:color-mix(in srgb,var(--acc) 35%,transparent);
  --bg:#f2f6f7; --surface:#ffffff; --sunk:#eaf0f2; --hover:#edf3f5; --ink:#10212b; --ink2:#33454f; --muted:#62737d; --faint:#97a6ae; --line:#dfe7ea; --line2:#cfdadf;
  --rail:#ffffff; --rail-line:#e3eaed;
  --good:#16a34a; --good-soft:#e3f6ea; --warn:#c2710c; --warn-soft:#fdf1dc; --crit:#dc3a3f; --crit-soft:#fde6e6; --info:#2563eb; --info-soft:#e5edfd;
  --p1:#d1453b; --p2:#eb8909; --p3:#246fe0; --p4:#9aa1ac;
  --shadow:0 1px 2px rgba(20,22,28,.05),0 6px 20px rgba(20,22,28,.05); --shadow-lg:0 20px 60px rgba(20,22,28,.22);
  --r:14px; --r-sm:10px;
  --f-ui:"Golos Text",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif; --f-num:"Unbounded","Golos Text",system-ui,sans-serif;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --acc:#3fa9bb; --acc-ink:#04161d; --bg:#0a151b; --surface:#102029; --sunk:#132631; --hover:#162b37; --ink:#e8f1f4; --ink2:#c4d3d9; --muted:#8ea3ad; --faint:#627781; --line:#1d3340; --line2:#27404e;
  --rail:#0c1a22; --rail-line:#1a2e3a;
  --good:#3ccb73; --good-soft:#12301f; --warn:#f0a83a; --warn-soft:#352612; --crit:#ff6b6f; --crit-soft:#3a1719; --info:#6b9cff; --info-soft:#16233d;
  --shadow:0 1px 2px rgba(0,0,0,.4); --shadow-lg:0 20px 60px rgba(0,0,0,.6); color-scheme:dark}}
:root[data-theme="dark"]{
  --acc:#3fa9bb; --acc-ink:#04161d; --bg:#0a151b; --surface:#102029; --sunk:#132631; --hover:#162b37; --ink:#e8f1f4; --ink2:#c4d3d9; --muted:#8ea3ad; --faint:#627781; --line:#1d3340; --line2:#27404e;
  --rail:#0c1a22; --rail-line:#1a2e3a;
  --good:#3ccb73; --good-soft:#12301f; --warn:#f0a83a; --warn-soft:#352612; --crit:#ff6b6f; --crit-soft:#3a1719; --info:#6b9cff; --info-soft:#16233d;
  --shadow:0 1px 2px rgba(0,0,0,.4); --shadow-lg:0 20px 60px rgba(0,0,0,.6); color-scheme:dark}

*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.45 var(--f-ui);-webkit-font-smoothing:antialiased}
[hidden]{display:none!important}
button,input,select,textarea{font:inherit;color:inherit}
a{color:inherit}
img{max-width:100%}
svg{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
h1,h2,h3{margin:0;font-weight:600;letter-spacing:-.01em}
h1{font:600 24px/1.2 var(--f-num)}
h2{font-size:16px}
.mut{color:var(--muted)} .faint{color:var(--faint)} .sm{font-size:13px} .xs{font-size:12px} .b{font-weight:600}
.good-t{color:var(--good)} .crit-t{color:var(--crit)} .warn-t{color:var(--warn)} .acc-t{color:var(--acc)}
.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.row.sp{justify-content:space-between}
.row.end{justify-content:flex-end}
.row.nowrap{flex-wrap:nowrap}
.grow{flex:1;min-width:0}
.stack{display:flex;flex-direction:column;gap:14px}
.g2{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:16px;align-items:start}
.g2e{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}
.g3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.ell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cap{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:600}
.divider{height:1px;background:var(--line);margin:4px 0}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:9px 14px;border-radius:var(--r-sm);border:1px solid var(--line2);background:var(--surface);cursor:pointer;font-weight:500;text-decoration:none;white-space:nowrap;transition:background .12s,border-color .12s,transform .05s;min-height:38px}
.btn:hover{background:var(--hover)}
.btn:active{transform:translateY(1px)}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn.pri{background:var(--acc);border-color:var(--acc);color:var(--acc-ink)}
.btn.pri:hover{filter:brightness(1.06)}
.btn.dark{background:var(--ink);border-color:var(--ink);color:var(--bg)}
.btn.ghost{background:transparent;border-color:transparent}
.btn.ghost:hover{background:var(--hover)}
.btn.danger{color:var(--crit);border-color:color-mix(in srgb,var(--crit) 40%,transparent)}
.btn.good{background:var(--good);border-color:var(--good);color:#fff}
.btn.s{padding:5px 10px;min-height:30px;font-size:13px;border-radius:8px}
.btn.xs{padding:3px 8px;min-height:24px;font-size:12px;border-radius:7px}
.btn.icon{padding:0;width:38px}
.btn.s.icon{width:30px}
.btn.wide{width:100%}
.btn.lg{min-height:52px;font-size:16px;padding:12px 22px;border-radius:14px}
.linkbtn{background:none;border:0;padding:0;color:var(--acc);cursor:pointer;font-weight:500}

/* forms */
input[type=text],input[type=tel],input[type=number],input[type=date],input[type=time],input[type=month],input[type=search],input[type=password],input[type=url],input[type=email],select,textarea{
  width:100%;padding:9px 11px;border:1px solid var(--line2);border-radius:var(--r-sm);background:var(--surface);min-height:40px;outline:none;transition:border-color .12s,box-shadow .12s}
input:focus,select:focus,textarea:focus{border-color:var(--acc);box-shadow:0 0 0 3px var(--acc-soft)}
textarea{min-height:90px;resize:vertical;line-height:1.45}
input[type=checkbox],input[type=radio]{accent-color:var(--acc);width:17px;height:17px;margin:0;flex:none}
.form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.form.c3{grid-template-columns:repeat(3,minmax(0,1fr))}
.fld{display:flex;flex-direction:column;gap:5px;min-width:0}
.fld>span,.lbl{font-size:12.5px;color:var(--muted);font-weight:500}
.fld.full,.full{grid-column:1/-1}
.checks{display:flex;flex-wrap:wrap;gap:8px 16px}
.checks label{display:inline-flex;gap:7px;align-items:center;cursor:pointer}
.checks.col{flex-direction:column}
.choice{display:flex;flex-wrap:wrap;gap:6px}
.choice label{position:relative;cursor:pointer}
.choice input{position:absolute;opacity:0;pointer-events:none}
.choice span{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border:1px solid var(--line2);border-radius:99px;font-size:13.5px;background:var(--surface)}
.choice input:checked+span{background:var(--acc-soft);border-color:var(--acc);color:var(--ink);font-weight:600}
.hint{font-size:12.5px;color:var(--muted)}

/* segmented tabs */
.seg{display:inline-flex;gap:2px;padding:3px;background:var(--sunk);border-radius:12px;flex-wrap:wrap}
.seg button{border:0;background:transparent;padding:6px 12px;border-radius:9px;cursor:pointer;font-weight:500;color:var(--muted);font-size:14px;display:inline-flex;gap:6px;align-items:center}
.seg button.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.08)}
.seg button .n{font-size:11px;background:var(--line);border-radius:99px;padding:0 6px}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);overflow-x:auto}
.tabs button{border:0;background:none;padding:10px 12px;cursor:pointer;color:var(--muted);font-weight:500;border-bottom:2px solid transparent;white-space:nowrap}
.tabs button.on{color:var(--ink);border-color:var(--acc)}

/* pills & chips */
.pill{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:99px;font-size:12px;font-weight:600;background:var(--sunk);color:var(--muted);white-space:nowrap;line-height:1.6}
.pill.good{background:var(--good-soft);color:var(--good)} .pill.warn{background:var(--warn-soft);color:var(--warn)} .pill.crit{background:var(--crit-soft);color:var(--crit)}
.pill.info{background:var(--info-soft);color:var(--info)} .pill.acc{background:var(--acc-soft);color:var(--acc)} .pill.mut{background:var(--sunk);color:var(--muted)}
.chip{display:inline-flex;align-items:center;gap:6px;font-weight:600;font-size:13px;white-space:nowrap}
.chip i{width:10px;height:10px;border-radius:3px;background:var(--c)}
.dot{width:8px;height:8px;border-radius:50%;background:var(--good);display:inline-block}

/* cards & lists */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px;display:flex;flex-direction:column;gap:12px;box-shadow:var(--shadow);min-width:0}
.card>header{display:flex;justify-content:space-between;align-items:center;gap:10px}
.card.flat{box-shadow:none}
.card.tight{padding:6px 8px}
.list{display:flex;flex-direction:column}
.li{display:flex;align-items:center;gap:12px;padding:10px 4px;border-bottom:1px solid var(--line);min-width:0}
.li:last-child{border-bottom:0}
.li .t{font-weight:600}
.li .s{font-size:13px;color:var(--muted)}
.li.click{cursor:pointer;border-radius:10px;padding:10px 8px}
.li.click:hover{background:var(--hover)}
.tm{font-variant-numeric:tabular-nums;font-weight:600;font-size:13px;min-width:52px;color:var(--ink2)}
.empty{color:var(--muted);text-align:center;padding:22px 10px;font-size:14px}
.empty.big{padding:46px 10px}
.empty.big b{display:block;color:var(--ink);font-size:16px;margin-bottom:4px}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;box-shadow:var(--shadow)}
.kpi .l{font-size:12.5px;color:var(--muted)} .kpi .v{font:600 21px/1.25 var(--f-num);margin-top:6px} .kpi .d{font-size:12.5px;color:var(--muted);margin-top:4px}
.kpi.crit .v{color:var(--crit)} .kpi.good .v{color:var(--good)} .kpi.warn .v{color:var(--warn)}
.banner{display:flex;gap:12px;align-items:center;justify-content:space-between;padding:12px 14px;border-radius:var(--r);border:1px solid var(--line);background:var(--surface)}
.banner.acc{background:var(--acc-soft);border-color:var(--acc-line)} .banner.warn{background:var(--warn-soft);border-color:transparent} .banner.info{background:var(--info-soft);border-color:transparent} .banner.crit{background:var(--crit-soft);border-color:transparent} .banner.good{background:var(--good-soft);border-color:transparent}
.ok{color:var(--good);font-weight:500}.bad{color:var(--crit);font-weight:500}
.calc{background:var(--sunk);border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;gap:5px}
.calc .tot{font:600 24px var(--f-num)}
dl.dl{display:grid;grid-template-columns:auto 1fr;gap:6px 16px;margin:0}
dl.dl dt{color:var(--muted)} dl.dl dd{margin:0;text-align:right}

/* tables */
.tw{overflow-x:auto}
table{width:100%;border-collapse:collapse;min-width:560px}
th{text-align:left;font-size:12px;color:var(--muted);font-weight:600;padding:9px 10px;border-bottom:1px solid var(--line);white-space:nowrap;position:sticky;top:0;background:var(--surface)}
td{padding:10px;border-bottom:1px solid var(--line);vertical-align:middle}
tr.click{cursor:pointer} tr.click:hover td{background:var(--hover)}
th.sort{cursor:pointer;user-select:none} th.sort.on{color:var(--ink)}

/* ===== app shell ===== */
.app{display:grid;grid-template-columns:248px minmax(0,1fr);min-height:100vh}
.rail{position:sticky;top:0;height:100vh;overflow-y:auto;background:var(--rail);border-right:1px solid var(--rail-line);padding:14px 12px;display:flex;flex-direction:column;gap:3px}
.brand{display:flex;align-items:center;gap:10px;padding:4px 6px 12px}
.brand .mk{width:36px;height:36px;border-radius:11px;background:var(--brand,#123f52);color:#fff;display:grid;place-items:center;font:700 13px var(--f-num);flex:none;overflow:hidden}
.brand .mk img{width:100%;height:100%;object-fit:contain}
.brand .mk img.lg{width:78%;height:78%}
.brand b{font:700 14px var(--f-num);letter-spacing:.03em;display:block}
.brand small{color:var(--muted);font-size:12px}
.cta{margin:2px 0 10px;width:100%;justify-content:flex-start;padding:10px 14px}
.shiftcard{display:flex;align-items:center;gap:8px;padding:8px 8px 8px 12px;border-radius:12px;background:var(--good-soft);color:var(--good);font-weight:600;font-size:13px;margin-bottom:4px}
.shiftcard.off{background:var(--sunk);color:var(--muted)}
.mshift{display:none}
.nav-sec{font-size:11px;text-transform:uppercase;letter-spacing:.09em;color:var(--faint);padding:12px 10px 4px;font-weight:600}
.nv{display:flex;align-items:center;gap:10px;width:100%;padding:8px 10px;border:0;background:none;border-radius:9px;cursor:pointer;color:var(--ink2);font-weight:500;text-align:left}
.nv:hover{background:var(--hover)}
.nv.on{background:var(--acc-soft);color:var(--ink)}
.nv.on svg{color:var(--acc)}
.nv .cnt{margin-left:auto;font-size:11.5px;font-weight:700;background:var(--acc);color:#fff;border-radius:99px;padding:0 7px;line-height:19px}
.nv .cnt.mut{background:var(--line2);color:var(--ink2)}
.nv.locked{opacity:.38;pointer-events:none}
.me{margin-top:auto;padding-top:12px;border-top:1px solid var(--rail-line);display:flex;flex-direction:column;gap:8px}
.me .who{display:flex;gap:10px;align-items:center}
.av{width:34px;height:34px;border-radius:50%;background:var(--acc-soft);color:var(--acc);display:grid;place-items:center;font-weight:700;flex:none}
.main{padding:22px 28px 60px;display:flex;flex-direction:column;gap:16px;min-width:0;max-width:1440px}
.head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap}
.head .sub{color:var(--muted);margin-top:4px;font-size:14px}
.topbar{display:flex;gap:8px;align-items:center;justify-content:flex-end;flex-wrap:wrap}
.mtop{display:none}
.tabbar{display:none}
.shiftpill{display:inline-flex;align-items:center;gap:8px;padding:6px 6px 6px 12px;border-radius:99px;background:var(--good-soft);color:var(--good);font-weight:600;font-size:13px}
.shiftpill .btn{min-height:28px}
.offline{position:fixed;top:10px;left:50%;transform:translateX(-50%);z-index:60;background:var(--warn);color:#fff;padding:6px 14px;border-radius:99px;font-size:13px;font-weight:600}

/* gate: manager without an open shift */
.gate{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:16px;min-height:62vh;padding:20px}
.gate .big{width:96px;height:96px;border-radius:30px;background:var(--acc-soft);color:var(--acc);display:grid;place-items:center}
.gate .big svg{width:46px;height:46px}
.gate h1{font-size:28px}
.gate .btn.lg{min-width:260px}

/* modal */
.scrim{position:fixed;inset:0;background:rgba(10,12,16,.45);z-index:50;display:flex;align-items:flex-start;justify-content:center;padding:5vh 16px;overflow-y:auto;backdrop-filter:blur(2px)}
.modal{background:var(--surface);border-radius:20px;width:min(560px,100%);padding:20px;display:flex;flex-direction:column;gap:14px;box-shadow:var(--shadow-lg);margin-bottom:5vh}
.modal.wide{width:min(940px,100%)}
.modal.xl{width:min(1180px,100%)}
.modal>header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.modal>header h2{font:600 19px var(--f-num)}
.modal .foot{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;align-items:center;padding-top:4px}
.toasts{position:fixed;bottom:18px;right:18px;display:flex;flex-direction:column;gap:8px;z-index:70;max-width:min(380px,calc(100vw - 36px))}
.toast{background:var(--ink);color:var(--bg);padding:11px 15px;border-radius:12px;box-shadow:var(--shadow-lg);font-weight:500;animation:tin .18s ease-out}
.toast.crit{background:var(--crit);color:#fff}.toast.warn{background:var(--warn);color:#fff}.toast.good{background:var(--good);color:#fff}.toast.acc{background:var(--acc);color:#fff}
@keyframes tin{from{transform:translateY(8px);opacity:0}}

/* ===== bookings ===== */
.bkrow{display:flex;gap:12px;align-items:center;padding:11px 8px;border-bottom:1px solid var(--line);cursor:pointer;border-radius:10px}
.bkrow:hover{background:var(--hover)}
.bkrow .bar{width:4px;align-self:stretch;border-radius:4px;background:var(--c)}
.bkrow .when{min-width:96px;font-variant-numeric:tabular-nums}
.bkrow .when b{display:block;font-size:14px}
.bkrow .when span{font-size:12.5px;color:var(--muted)}
.dayhead{font-weight:700;font-size:13px;color:var(--muted);padding:14px 8px 4px;display:flex;gap:8px;align-items:center}
.dayhead.today{color:var(--acc)}

/* google-calendar-like month */
.calbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.calbar .title{font:600 20px var(--f-num);min-width:200px}
.month{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:var(--surface)}
.month .wd{padding:8px;font-size:11.5px;font-weight:700;color:var(--muted);text-transform:uppercase;text-align:center;border-bottom:1px solid var(--line)}
.month .day{min-height:122px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:4px;display:flex;flex-direction:column;gap:2px;cursor:pointer;min-width:0}
.month .day:nth-child(7n){border-right:0}
.month .day.out{background:var(--sunk)}
.month .day.out .dn{color:var(--faint)}
.month .day:hover{background:var(--hover)}
.month .dn{font-size:12.5px;font-weight:600;align-self:center;width:26px;height:26px;display:grid;place-items:center;border-radius:50%;margin-bottom:2px}
.month .day.today .dn{background:var(--acc);color:#fff}
.ev{display:flex;gap:4px;align-items:center;font-size:12px;line-height:1.25;padding:2px 6px;border-radius:5px;background:var(--c);color:#fff;font-weight:600;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;min-width:0}
.ev.soft{background:color-mix(in srgb,var(--c) 18%,var(--surface));color:var(--ink);border-left:3px solid var(--c)}
.ev.tent{background:repeating-linear-gradient(135deg,var(--c) 0 6px,color-mix(in srgb,var(--c) 78%,#fff) 6px 12px);color:#fff;border:1px dashed color-mix(in srgb,var(--c) 70%,#000)}
.ev .t{font-variant-numeric:tabular-nums;opacity:.9;flex:none}
.ev .n{overflow:hidden;text-overflow:ellipsis}
.more{font-size:12px;color:var(--muted);padding:0 6px;font-weight:600}
.legend{display:flex;flex-wrap:wrap;gap:6px 14px}
.legend button{background:none;border:0;cursor:pointer;padding:3px 0;color:var(--ink2)}
.legend button.off{opacity:.35}
/* week & day timeline */
.tl{border:1px solid var(--line);border-radius:var(--r);overflow:auto;background:var(--surface);max-height:72vh}
.tl-in{display:grid;min-width:720px;position:relative}
.tl .hcol{border-right:1px solid var(--line);position:sticky;left:0;background:var(--surface);z-index:2}
.tl .hcell{height:44px;font-size:11px;color:var(--muted);text-align:right;padding:2px 6px 0 0;border-bottom:1px solid var(--line)}
.tl .col{position:relative;border-right:1px solid var(--line)}
.tl .col:last-child{border-right:0}
.tl .slot{height:44px;border-bottom:1px solid var(--line)}
.tl .slot.n{background:var(--sunk)}
.tl .slot:hover{background:var(--acc-soft);cursor:pointer}
.tl .colh{position:sticky;top:0;background:var(--surface);z-index:3;height:48px;border-bottom:1px solid var(--line);display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:12.5px;font-weight:600;text-align:center;padding:0 4px}
.tl .colh small{color:var(--muted);font-weight:500}
.tl .colh.today{color:var(--acc)}
.tl .blk{position:absolute;left:3px;right:3px;border-radius:8px;padding:4px 7px;font-size:12px;line-height:1.3;color:#fff;background:var(--c);overflow:hidden;cursor:pointer;box-shadow:0 1px 3px rgba(0,0,0,.15)}
.tl .blk b{display:block;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tl .blk.tent{background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--c) 75%,#fff) 0 7px,var(--c) 7px 14px)}
.tl .blk.debt{box-shadow:inset 0 0 0 2px #fff,0 0 0 2px var(--crit)}
.tl .now{position:absolute;left:0;right:0;height:2px;background:var(--crit);z-index:2}
.tl .now:before{content:"";position:absolute;left:-5px;top:-4px;width:10px;height:10px;border-radius:50%;background:var(--crit)}

/* booking card */
.bkhead{display:flex;flex-direction:column;gap:6px}
.chg{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.chgb{display:flex;flex-direction:column;gap:3px;align-items:flex-start;text-align:left;padding:11px 12px;border:1px solid var(--line);border-radius:12px;background:var(--surface);cursor:pointer}
.chgb:hover{border-color:var(--acc);background:var(--acc-soft)}
.chgb b{font-size:13.5px} .chgb span{font-size:12px;color:var(--muted)} .chgb svg{color:var(--acc)}
.chgb.dang svg{color:var(--crit)}
.docbtns{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.docb{display:flex;flex-direction:column;gap:2px;align-items:flex-start;padding:12px;border-radius:12px;border:1px solid var(--line);background:var(--sunk);cursor:pointer;text-align:left}
.docb:hover{border-color:var(--acc)}
.docb b{font-size:14px}.docb span{font-size:12px;color:var(--muted)}
.docb.on{background:var(--good-soft);border-color:transparent}
.settle{border:1px dashed var(--line2);border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:10px}
.surprise{display:flex;gap:12px;align-items:center;padding:12px 14px;border-radius:14px;background:linear-gradient(135deg,#ffe8d6,#ffd6e7);color:#5b2333}
:root[data-theme="dark"] .surprise{background:linear-gradient(135deg,#3b2414,#3a1630);color:#ffd9e6}
.surprise .ic{font-size:26px}

/* client picker */
.cpick{position:relative}
.cp-dd{position:absolute;left:0;right:0;top:calc(100% + 4px);background:var(--surface);border:1px solid var(--line2);border-radius:12px;box-shadow:var(--shadow-lg);z-index:20;max-height:320px;overflow-y:auto;padding:4px}
.cp-o{display:flex;gap:10px;align-items:center;width:100%;padding:8px 10px;border:0;background:none;border-radius:9px;cursor:pointer;text-align:left}
.cp-o:hover,.cp-o:focus{background:var(--hover);outline:none}
.cp-o small{display:block;color:var(--muted);font-size:12px}
.cp-o .av{width:30px;height:30px;font-size:13px}
.cp-new{color:var(--acc);font-weight:600}

/* CRM board */
.board{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(178px,1fr);gap:12px;overflow-x:auto;padding-bottom:10px;align-items:start}
.lane{background:var(--sunk);border-radius:var(--r);padding:10px;display:flex;flex-direction:column;gap:8px;min-height:200px}
.lane.drop{outline:2px dashed var(--acc);outline-offset:-2px}
.lane h3{font-size:13.5px;display:flex;align-items:center;gap:8px;padding:2px 4px}
.lane h3 i{width:9px;height:9px;border-radius:50%;background:var(--c)}
.lane h3 .n{margin-left:auto;color:var(--muted);font-weight:600}
.deal{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:10px 11px;cursor:grab;display:flex;flex-direction:column;gap:5px;box-shadow:var(--shadow)}
.deal:active{cursor:grabbing}
.deal.dragging{opacity:.5}
.deal .t{font-weight:600}
.deal .s{font-size:12.5px;color:var(--muted)}
.deal .row{gap:5px}
.lane .sum{font-size:12px;color:var(--muted);padding:0 4px}

/* POS & products */
.pos{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:16px;align-items:start}
.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px}
.pc{background:var(--surface);border:1px solid var(--line);border-radius:16px;overflow:hidden;display:flex;flex-direction:column;box-shadow:var(--shadow)}
.pc .pi{aspect-ratio:4/3;background:var(--sunk);display:grid;place-items:center;color:var(--faint)}
.pc .pi img{width:100%;height:100%;object-fit:cover}
.pc .pi svg{width:40px;height:40px}
.pc .pb{padding:10px 11px 11px;display:flex;flex-direction:column;gap:4px;flex:1}
.pc .pn{font-weight:600;font-size:14px;line-height:1.3}
.pc .pd{font-size:12px;color:var(--muted);line-height:1.35}
.pc .pf{display:flex;justify-content:space-between;align-items:center;margin-top:auto;padding-top:6px;gap:6px}
.pc .pp{font:600 15px var(--f-num)}
.pc.in{border-color:var(--acc);box-shadow:0 0 0 2px var(--acc-soft)}
.pc .st{font-size:11.5px;color:var(--muted)}
.pc .st.low{color:var(--crit);font-weight:600}
.qty{display:inline-flex;align-items:center;gap:2px;background:var(--sunk);border-radius:99px;padding:2px}
.qty button{width:30px;height:30px;border-radius:50%;border:0;background:var(--surface);cursor:pointer;font-size:17px;font-weight:600;display:grid;place-items:center;box-shadow:0 1px 2px rgba(0,0,0,.08)}
.qty button.add1{background:var(--acc);color:#fff}
.qty b{min-width:24px;text-align:center;font-variant-numeric:tabular-nums}
.add{width:34px;height:34px;border-radius:50%;border:0;background:var(--acc);color:#fff;font-size:20px;cursor:pointer;display:grid;place-items:center}
.cart{position:sticky;top:16px}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(980px,100%);background:var(--bg);z-index:45;box-shadow:var(--shadow-lg);display:flex;flex-direction:column}
.drawer.anim{animation:din .2s ease-out}
.drawer>header{display:flex;justify-content:space-between;align-items:center;padding:14px 20px;border-bottom:1px solid var(--line);background:var(--surface)}
.drawer .body{overflow-y:auto;padding:16px 20px;flex:1}
@keyframes din{from{transform:translateX(30px);opacity:0}}
.ordcard{border:1px solid var(--acc-line);background:var(--acc-soft);border-radius:14px;padding:12px;display:flex;flex-direction:column;gap:6px}

/* rooms catalog */
.rcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:16px}
.rc{background:var(--surface);border:1px solid var(--line);border-radius:18px;overflow:hidden;display:flex;flex-direction:column;box-shadow:var(--shadow)}
.gal{position:relative;aspect-ratio:16/10;background:var(--sunk);overflow:hidden}
.gal .strip{display:flex;height:100%;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none}
.gal .strip::-webkit-scrollbar{display:none}
.gal img{width:100%;height:100%;object-fit:cover;flex:none;scroll-snap-align:start}
.gal .cnt{position:absolute;right:10px;bottom:10px;background:rgba(0,0,0,.6);color:#fff;font-size:12px;padding:2px 9px;border-radius:99px;font-weight:600}
.gal .tag{position:absolute;left:10px;top:10px;background:rgba(255,255,255,.94);color:#111;font-size:12px;padding:3px 10px;border-radius:99px;font-weight:600}
.gal .nophoto{height:100%;display:grid;place-items:center;color:var(--muted);font-size:13px;text-align:center;padding:10px}
.rc .rb{padding:14px 16px 16px;display:flex;flex-direction:column;gap:8px;flex:1}
.rc h3{font:600 19px var(--f-num)}
.inc{display:flex;flex-wrap:wrap;gap:5px}
.inc span{font-size:12px;background:var(--sunk);border-radius:99px;padding:3px 9px}
.price b{font:600 18px var(--f-num)}
.phgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px}
.ph{position:relative;aspect-ratio:4/3;border-radius:12px;overflow:hidden;background:var(--sunk)}
.ph img{width:100%;height:100%;object-fit:cover;display:block}
.ph .x{position:absolute;top:6px;right:6px;display:flex;gap:4px}
.ph .x button{width:28px;height:28px;border-radius:8px;border:0;background:rgba(0,0,0,.6);color:#fff;cursor:pointer;display:grid;place-items:center}
.ph .cover{position:absolute;left:6px;bottom:6px;background:var(--acc);color:#fff;font-size:11px;font-weight:700;padding:2px 8px;border-radius:99px}
.ph.sel{outline:3px solid var(--acc)}
.drop-zone{border:2px dashed var(--line2);border-radius:14px;padding:22px;text-align:center;color:var(--muted);cursor:pointer}
.drop-zone.on{border-color:var(--acc);background:var(--acc-soft)}

/* ===== tasks (Todoist-like) ===== */
.todo{display:grid;grid-template-columns:250px minmax(0,1fr);gap:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);min-height:70vh;overflow:hidden;box-shadow:var(--shadow)}
.todo-side{background:var(--rail);border-right:1px solid var(--line);padding:12px 8px;display:flex;flex-direction:column;gap:2px}
.todo-side .nv{font-size:14px}
.todo-side .nv .c{margin-left:auto;font-size:12px;color:var(--muted);font-weight:500}
.todo-side .hash{width:18px;text-align:center;font-weight:700}
.todo-main{padding:22px 34px 40px;min-width:0}
.todo-main h1{font:700 22px var(--f-ui);margin-bottom:4px}
.todo-main .tsub{color:var(--muted);font-size:13px;margin-bottom:12px;display:flex;gap:8px;align-items:center}
.tsec{font-size:14px;font-weight:700;padding:16px 0 6px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}
.tsec.over{color:var(--crit)}
.titem{display:flex;gap:10px;align-items:flex-start;padding:9px 0 9px;border-bottom:1px solid var(--line);cursor:pointer;position:relative}
.titem:hover .tact{opacity:1}
.tcheck{width:20px;height:20px;border-radius:50%;border:2px solid var(--pc,var(--p4));background:color-mix(in srgb,var(--pc,var(--p4)) 10%,transparent);flex:none;margin-top:1px;cursor:pointer;display:grid;place-items:center;padding:0;color:transparent}
.tcheck:hover{color:var(--pc,var(--p4))}
.tcheck svg{width:12px;height:12px;stroke-width:3}
.tcheck.done{background:var(--pc,var(--p4));color:#fff}
.titem .tt{font-size:14.5px;line-height:1.35}
.titem.done .tt{text-decoration:line-through;color:var(--muted)}
.titem .td{font-size:12.5px;color:var(--muted);margin-top:2px}
.titem .tmeta{display:flex;gap:10px;flex-wrap:wrap;font-size:12px;margin-top:4px;color:var(--muted);align-items:center}
.titem .tmeta .due{display:inline-flex;gap:4px;align-items:center}
.titem .tmeta svg{width:13px;height:13px}
.due.today{color:#058527}.due.over{color:var(--crit)}.due.tom{color:#ad6200}.due.week{color:#692ec2}
:root[data-theme="dark"] .due.today{color:#3ccb73}
.tproj{margin-left:auto;font-size:12px;color:var(--muted);white-space:nowrap;display:flex;gap:5px;align-items:center}
.tproj i{width:8px;height:8px;border-radius:50%;background:var(--c)}
.tact{opacity:0;display:flex;gap:2px;position:absolute;right:0;top:6px;background:var(--surface)}
.tadd{display:flex;gap:9px;align-items:center;color:var(--muted);padding:10px 0;cursor:pointer;border:0;background:none;width:100%;text-align:left}
.tadd:hover{color:var(--acc)}
.tadd .pl{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;color:var(--acc);font-size:18px}
.tadd:hover .pl{background:var(--acc);color:#fff}
.qadd{border:1px solid var(--line2);border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;gap:8px;margin:8px 0}
.qadd input.tt{border:0;padding:0;min-height:0;font-weight:600;box-shadow:none}
.qadd input.td{border:0;padding:0;min-height:0;font-size:13px;box-shadow:none}
.qadd .opts{display:flex;gap:6px;flex-wrap:wrap}
.qadd .opts select,.qadd .opts input{width:auto;min-height:30px;padding:3px 8px;font-size:13px;border-radius:8px}
.prio{display:inline-flex;gap:3px}
.prio button{width:30px;height:30px;border-radius:8px;border:1px solid var(--line2);background:var(--surface);cursor:pointer;color:var(--pc);font-weight:700;font-size:12px}
.prio button.on{background:var(--pc);color:#fff;border-color:var(--pc)}
.week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;margin:6px 0 10px}
.week button{border:0;background:none;border-radius:10px;padding:6px 0;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:2px;color:var(--muted)}
.week button b{font-size:15px;color:var(--ink)}
.week button.on{background:var(--acc-soft)} .week button.on b{color:var(--acc)}
.week button i{width:5px;height:5px;border-radius:50%;background:var(--acc)}

/* team */
.sched{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}
.sday{border:1px solid var(--line);border-radius:12px;padding:10px;background:var(--surface);display:flex;flex-direction:column;gap:6px;min-height:96px;cursor:pointer}
.sday.past{opacity:.55;cursor:default}
.sday.me{border-color:var(--acc);background:var(--acc-soft)}
.sday.empty{border-style:dashed}
.sday .d{font-size:12px;color:var(--muted);font-weight:600}
.sday .who{font-weight:700}
.sday.locked .d:after{content:" 🔒"}
.photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.selfie{width:34px;height:34px;border-radius:8px;object-fit:cover;vertical-align:middle}
.steps{display:flex;gap:6px;flex-wrap:wrap}
.steps span{font-size:12px;padding:4px 10px;border-radius:99px;background:var(--sunk);color:var(--muted);font-weight:600}
.steps span.on{background:var(--acc);color:#fff}.steps span.done{background:var(--good-soft);color:var(--good)}
.codein{font:600 26px var(--f-num)!important;letter-spacing:.3em;text-align:center}
.codebar{display:flex;align-items:center;gap:16px;justify-content:space-between;padding:12px 16px;border-radius:var(--r);background:var(--ink);color:var(--bg)}
.codebar b{font:700 34px var(--f-num);letter-spacing:.15em}
.codebar.big{padding:22px}
.codebar.big b{font-size:60px}
.codepill{align-self:flex-end;display:inline-flex;gap:6px;align-items:center;border:1px solid var(--line2);background:var(--surface);padding:5px 12px;border-radius:99px;cursor:pointer;font-size:13px;font-weight:600}

/* learning */
.lessons{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.lesson{border:1px solid var(--line);border-radius:16px;padding:16px;background:var(--surface);cursor:pointer;display:flex;flex-direction:column;gap:8px;box-shadow:var(--shadow)}
.lesson:hover{border-color:var(--acc)}
.lesson .n{font:600 13px var(--f-num);color:var(--acc)}
.lesson h3{font-size:16px}
.lesson .bar{height:6px;border-radius:9px;background:var(--sunk);overflow:hidden}
.lesson .bar i{display:block;height:100%;background:var(--good)}
.reader{max-width:760px;margin:0 auto;width:100%;display:flex;flex-direction:column;gap:16px}
.reader .slide{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:28px 30px;box-shadow:var(--shadow);font-size:16.5px;line-height:1.6}
.reader .slide h2{font:600 22px var(--f-num);margin-bottom:12px}
.reader .slide ul{padding-left:20px;margin:8px 0}
.reader .slide li{margin:5px 0}
.reader .slide .note{background:var(--acc-soft);border-radius:12px;padding:12px 14px;margin-top:12px;font-size:15px}
.reader .slide p{margin:0 0 10px}
.speaking{animation:pulse 1.2s infinite}
@keyframes pulse{50%{box-shadow:0 0 0 6px var(--acc-soft)}}
.progress{height:6px;border-radius:9px;background:var(--sunk);overflow:hidden}
.progress i{display:block;height:100%;background:var(--acc);transition:width .3s}
.quiz{display:flex;flex-direction:column;gap:8px}
.quiz .opt{display:flex;gap:10px;align-items:center;padding:12px 14px;border:1px solid var(--line2);border-radius:12px;cursor:pointer;background:var(--surface);text-align:left}
.quiz .opt:hover{border-color:var(--acc)}
.quiz .opt.right{border-color:var(--good);background:var(--good-soft)}
.quiz .opt.wrong{border-color:var(--crit);background:var(--crit-soft)}

/* finance — Google-Sheets-like */
.gsh{overflow:auto;border:1px solid var(--line);border-radius:12px;background:var(--surface);max-height:74vh}
.gsh table{border-collapse:separate;border-spacing:0;min-width:1100px;font-size:13px}
.gsh th,.gsh td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:6px 9px;white-space:nowrap}
.gsh th{background:var(--sunk);position:sticky;top:0;z-index:2;text-align:center}
.gsh td:first-child,.gsh th:first-child{position:sticky;left:0;background:var(--surface);z-index:1;min-width:250px;max-width:320px;overflow:hidden;text-overflow:ellipsis}
.gsh th:first-child{z-index:3;background:var(--sunk);text-align:left}
.gsh tr.grp td{background:var(--sunk);font-weight:700}
.gsh tr.tot td{font-weight:700;background:color-mix(in srgb,var(--acc) 8%,var(--surface))}
.gsh tr.sub td:first-child{padding-left:24px;color:var(--ink2)}
.gsh td.fneg{color:var(--crit)} .gsh td.fpos{color:var(--good)}
.gsh td.z{color:var(--faint)}
.recon{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.recon .c{padding:12px 14px}
.recon .c+.c{border-left:1px solid var(--line)}
.recon h3{font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.map{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px}

/* stars */
.stars{display:inline-flex;gap:4px}
.stars button{border:0;background:none;font-size:36px;cursor:pointer;color:var(--line2);padding:0;line-height:1}
.stars button.on{color:#f5b301}
.stars.sm{font-size:14px;color:#f5b301;letter-spacing:1px}

/* guest (public phone layout) */
.guest{max-width:560px;margin:0 auto;padding:16px 16px 120px;display:flex;flex-direction:column;gap:14px}
.ghero{position:relative;border-radius:22px;overflow:hidden;min-height:210px;color:#fff;display:flex;align-items:flex-end;background:#222}
.ghero img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ghero:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.05),rgba(0,0,0,.72))}
.ghero>div{position:relative;z-index:1;padding:18px}
.ghero h1{color:#fff;font-size:26px}
.gtiles{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.gt{display:flex;flex-direction:column;gap:6px;align-items:flex-start;text-align:left;padding:14px;border-radius:16px;border:1px solid var(--line);background:var(--surface);cursor:pointer;min-height:104px}
.gt .ic{width:38px;height:38px;border-radius:12px;background:var(--acc-soft);color:var(--acc);display:grid;place-items:center}
.gt b{font-size:15px}.gt span{font-size:12.5px;color:var(--muted)}
.gcats{position:sticky;top:0;z-index:5;background:var(--bg);padding:6px 0;display:flex;gap:6px;overflow-x:auto}
.gcats button{border:1px solid var(--line2);background:var(--surface);border-radius:99px;padding:7px 14px;font-weight:600;white-space:nowrap;cursor:pointer}
.gcats button.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.gcart{position:fixed;left:50%;transform:translateX(-50%);bottom:14px;width:min(528px,calc(100% - 32px));background:var(--ink);color:var(--bg);border-radius:18px;padding:12px 14px;display:flex;align-items:center;gap:12px;z-index:30;box-shadow:var(--shadow-lg)}
.gcart b{font:600 18px var(--f-num)}
.glist .gi{display:flex;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}
.glist .gi img,.glist .gi .ph0{width:76px;height:76px;border-radius:14px;object-fit:cover;flex:none;background:var(--sunk)}

/* stories */
.story-wrap{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:16px;align-items:start}
#story{width:100%;max-width:340px;aspect-ratio:9/16;border-radius:18px;background:#111;box-shadow:var(--shadow-lg)}
.rooms-pick{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px}
.rp{border:2px solid transparent;border-radius:12px;overflow:hidden;padding:0;background:var(--sunk);cursor:pointer;text-align:left}
.rp img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block}
.rp span{display:block;padding:5px 8px;font-size:12.5px;font-weight:600}
.rp.on{border-color:var(--acc)}

/* login */
.auth{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr}
.auth .art{position:relative;overflow:hidden;background:#111;color:#fff;display:flex;align-items:flex-end;padding:40px}
.auth .art img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.85}
.auth .art:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.1),rgba(0,0,0,.75))}
.auth .art div{position:relative;z-index:1}
.auth .art h1{color:#fff;font-size:42px;line-height:1.05}
.auth .box{display:flex;align-items:center;justify-content:center;padding:30px}
.auth form{width:min(380px,100%);display:flex;flex-direction:column;gap:14px}

/* misc */
.howto{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}
.hw{border:1px solid var(--line);border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:4px}
.hw svg{color:var(--acc)}
.hw span{font-size:13px;color:var(--muted)}
.doc-link{display:flex;gap:10px;align-items:center;padding:9px 6px;border-radius:9px;text-decoration:none}
.doc-link:hover{background:var(--hover)}
.doc-link .ic{font-size:10px;font-weight:700;color:#fff;border-radius:6px;padding:3px 5px;min-width:38px;text-align:center}
.barline{height:8px;border-radius:9px;background:var(--sunk);overflow:hidden}
.barline i{display:block;height:100%;border-radius:9px}
.feedline{display:flex;gap:10px;padding:8px 0;border-bottom:1px solid var(--line);font-size:13.5px}
.feedline:last-child{border-bottom:0}
.now-card{display:flex;gap:12px;align-items:center;padding:12px;border-radius:14px;background:var(--sunk)}
.now-card .bar{width:5px;align-self:stretch;border-radius:5px;background:var(--c)}
.timeline{display:flex;flex-direction:column;gap:0;position:relative}
.timeline .ti{display:flex;gap:12px;padding:8px 6px;border-radius:10px;cursor:pointer;align-items:center}
.timeline .ti:hover{background:var(--hover)}
.timeline .ti.past{opacity:.5}
.timeline .ti.nowon{background:var(--acc-soft)}
.timeline .ti .bar{width:4px;align-self:stretch;border-radius:4px;background:var(--c)}
.qa-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.qa{display:flex;gap:10px;align-items:center;padding:12px 14px;border-radius:14px;border:1px solid var(--line);background:var(--surface);cursor:pointer;font-weight:600;box-shadow:var(--shadow);text-align:left}
.qa:hover{border-color:var(--acc)}
.qa .ic{width:36px;height:36px;border-radius:11px;background:var(--acc-soft);color:var(--acc);display:grid;place-items:center;flex:none}
.qa.hot{background:var(--acc);color:#fff;border-color:var(--acc)}
.qa.hot .ic{background:rgba(255,255,255,.2);color:#fff}
.qa small{display:block;font-weight:500;font-size:12px;opacity:.75}

@media (max-width:1100px){
  .g2,.g2e,.pos,.story-wrap{grid-template-columns:minmax(0,1fr)}
  .qa-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .g3{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
}
@media (max-width:860px){
  .app{grid-template-columns:minmax(0,1fr)}
  .rail{display:none}
  .main{padding:12px 14px 92px}
  .mtop{display:flex;justify-content:space-between;align-items:center;gap:8px;position:sticky;top:0;z-index:20;background:var(--bg);padding:10px 14px;margin:-12px -14px 0;border-bottom:1px solid var(--line)}
  .mtop .brand{padding:0}
  .mshift{display:flex;justify-content:flex-end}
  .tabbar{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;bottom:0;left:0;right:0;background:var(--surface);border-top:1px solid var(--line);z-index:40;padding:4px 4px calc(4px + env(safe-area-inset-bottom))}
  .tabbar button{border:0;background:none;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:11px;color:var(--muted);padding:6px 0;position:relative;cursor:pointer}
  .tabbar button.on{color:var(--acc)}
  .tabbar .cnt{position:absolute;top:2px;right:calc(50% - 20px);background:var(--acc);color:#fff;font-size:10px;border-radius:99px;padding:0 5px;font-weight:700}
  .tabbar button.locked{opacity:.35;pointer-events:none}
  .form,.form.c3{grid-template-columns:minmax(0,1fr)}
  h1{font-size:20px}
  .modal{padding:16px;border-radius:18px}
  .scrim{padding:0;align-items:flex-end}
  .modal{border-radius:20px 20px 0 0;margin-bottom:0;max-height:94vh;overflow-y:auto}
  .todo{grid-template-columns:minmax(0,1fr)}
  .todo-side{flex-direction:row;overflow-x:auto;border-right:0;border-bottom:1px solid var(--line);padding:6px}
  .todo-side .nv{white-space:nowrap;width:auto}
  .todo-side .nav-sec{display:none}
  .todo-main{padding:14px}
  .month .day{min-height:76px}
  .month .ev .t{display:none}
  .sched{grid-template-columns:repeat(2,1fr)}
  .docbtns{grid-template-columns:minmax(0,1fr)}
  .auth{grid-template-columns:minmax(0,1fr)}
  .auth .art{min-height:220px;padding:22px}
  .auth .art h1{font-size:30px}
  .kpis{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .recon{grid-template-columns:minmax(0,1fr)}.recon .c+.c{border-left:0;border-top:1px solid var(--line)}
}
@media print{.rail,.tabbar,.mtop,.topbar,.toasts{display:none!important}.app{display:block}}

/* manager colours in schedule */
.sday.has{background:color-mix(in srgb,var(--mc) 14%,var(--surface));border-color:color-mix(in srgb,var(--mc) 45%,transparent);box-shadow:inset 4px 0 0 var(--mc)}
.sday.has .who{color:var(--mc);font-weight:700}
.pill.mpill{background:color-mix(in srgb,var(--mc) 15%,transparent);color:var(--mc);font-weight:600}

.supcard{border-color:var(--acc-line);background:linear-gradient(90deg,var(--acc-soft),transparent 70%)}
.ic.big{width:42px;height:42px;border-radius:12px;background:var(--acc);color:var(--acc-ink);display:grid;place-items:center}
.qty input.so-n{width:46px;text-align:center;border:0;background:transparent;font-weight:700;-moz-appearance:textfield}
.qty input.so-n::-webkit-inner-spin-button{-webkit-appearance:none}

.modesw{display:flex;background:var(--sunk);border-radius:10px;padding:3px;gap:2px;margin:0 0 10px}
.modesw button{flex:1;border:0;background:transparent;border-radius:8px;padding:6px 4px;font-size:12.5px;font-weight:600;color:var(--muted);cursor:pointer}
.modesw button.on{background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}
.pvbar{border-color:var(--acc-line);background:var(--acc-soft);margin-bottom:14px}
.rdot{width:12px;height:12px;border-radius:4px;flex:none}

.dcard{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}
.dcard.on{border-color:var(--acc-line);background:linear-gradient(90deg,var(--acc-soft),var(--surface) 60%)}
.dcard .dic{width:40px;height:40px;border-radius:11px;display:grid;place-items:center;background:var(--sunk);color:var(--muted);flex:none}
.dcard.on .dic{background:var(--acc);color:var(--acc-ink)}
@media (max-width:640px){.dcard{flex-wrap:wrap}}
a.li{text-decoration:none;color:inherit}
input[data-money]{font-variant-numeric:tabular-nums}
select.need{border-color:var(--warn);background:var(--warn-soft)}

/* task drag & drop */
.titem{position:relative}
.tdrag{position:absolute;left:-22px;top:10px;width:20px;height:24px;display:grid;place-items:center;color:var(--faint);cursor:grab;opacity:0;touch-action:none;border-radius:6px}
.tdrag svg{width:16px;height:16px;fill:currentColor;stroke:none}
.titem:hover .tdrag,.tdrag:focus{opacity:1}.tdrag:hover{background:var(--hover);color:var(--ink)}
@media (hover:none){.tdrag{opacity:.7;left:-24px;top:4px;width:26px;height:34px}}
.todo-main{padding-left:30px}
.titem.dragging{opacity:.35}
.tghost{position:fixed;left:0;top:0;z-index:999;pointer-events:none;background:var(--surface);box-shadow:var(--shadow-lg);border-radius:10px;opacity:.95;padding-left:8px}
.tdrop-line{height:2px;background:var(--p1);border-radius:2px;margin:-1px 0;position:relative}
.tdrop-line:before{content:"";position:absolute;left:-4px;top:-3px;width:8px;height:8px;border-radius:50%;border:2px solid var(--p1);background:var(--surface)}
.drop-hl{outline:2px solid var(--p1)!important;outline-offset:-2px;background:color-mix(in srgb,var(--p1) 10%,transparent)!important}
.tempty{padding:10px 0;color:var(--faint);font-size:13px;border-bottom:1px solid var(--line)}

/* owner dashboard */
.occgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.occ{border:1px solid var(--line);border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;gap:4px;cursor:pointer;box-shadow:inset 3px 0 0 var(--c);background:var(--surface)}
.occ.busy{background:color-mix(in srgb,var(--c) 12%,var(--surface))}
.obar{height:5px;border-radius:5px;background:var(--sunk);overflow:hidden}.obar i{display:block;height:100%;background:var(--acc);border-radius:5px}
.occ .obar i{background:var(--c)}
.heat{display:grid;grid-template-columns:90px repeat(7,minmax(0,1fr));gap:4px;font-size:12px}
.heat .hd{color:var(--muted);text-align:center;font-weight:600}.heat .hr{font-weight:600;align-self:center}
.heat .hc{height:30px;border-radius:7px;display:grid;place-items:center;font-weight:600;font-size:11.5px;background:color-mix(in srgb,var(--acc) calc(var(--v) * 85%),var(--sunk));color:var(--ink)}
.kpis.k3{grid-template-columns:repeat(3,minmax(0,1fr))}
.fbars{display:flex;gap:14px;align-items:flex-end;margin-top:14px;flex-wrap:wrap}
.fb{display:flex;flex-direction:column;align-items:center;gap:4px;flex:1;min-width:34px}
.fb .cols{height:110px;display:flex;gap:3px;align-items:flex-end;width:100%;justify-content:center}
.fb .cols i{width:40%;max-width:18px;border-radius:4px 4px 0 0;display:block}
i.in{background:var(--good)} i.out{background:var(--crit);opacity:.75}
.fb span{font-size:11px;color:var(--muted)}
.leg{display:flex;gap:12px;font-size:12px;color:var(--muted);width:100%}.leg i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:4px;vertical-align:-1px}
.linkcard{display:flex;justify-content:space-between;align-items:center;cursor:pointer;text-align:left;font:inherit;color:inherit;width:100%}
.qa-row.q3{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:640px){.kpis.k3{grid-template-columns:minmax(0,1fr)}.qa-row.q3{grid-template-columns:minmax(0,1fr)}.heat{grid-template-columns:60px repeat(7,minmax(0,1fr))}}

/* learning */
.lhero{display:flex;gap:18px;align-items:stretch;background:linear-gradient(120deg,var(--brand,#123f52),#1b6f86 70%,#2f8fa3);color:#fff;border-radius:22px;padding:24px 26px;margin-bottom:16px;box-shadow:var(--shadow)}
.lhero h1{color:#fff;margin:4px 0}.lhero .sub{opacity:.85}
.lprog{display:flex;gap:10px;align-items:center;margin-top:12px;max-width:420px}.lprog .progress{flex:1;background:rgba(255,255,255,.2)}.lprog .progress i{background:#5cc7bd}.lprog span{font-size:13px;opacity:.9}
.btn.light{background:#fff;color:#123f52;border-color:#fff}.btn.light2{color:#fff}.btn.light2:hover{background:rgba(255,255,255,.12)}
.lexam{min-width:150px;border-radius:16px;background:rgba(255,255,255,.12);padding:14px;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:2px}
.lexam b{font:700 30px var(--f-num)}.lexam.ok{background:rgba(92,199,189,.28)}.lexam.bad{background:rgba(229,72,77,.25)}
.lesson{position:relative;overflow:hidden;border-top:4px solid var(--lc,var(--acc))}
.lesson .lic{width:44px;height:44px;border-radius:13px;display:grid;place-items:center;font-size:22px;background:color-mix(in srgb,var(--lc,var(--acc)) 14%,transparent)}
.lesson .n{color:var(--lc,var(--acc))}
.lesson .bar i{background:var(--lc,var(--good))}
.lesson.done{background:color-mix(in srgb,var(--lc) 5%,var(--surface))}
.lesson.exam{background:linear-gradient(135deg,#0b2a38,#123f52);color:#fff;border-color:#0b2a38}.lesson.exam .n{color:#5cc7bd}.lesson.exam .lic{background:rgba(255,255,255,.12)}
.lread{display:grid;grid-template-columns:260px minmax(0,1fr);gap:20px;align-items:start}
.lout{position:sticky;top:16px;display:flex;flex-direction:column;gap:4px;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:12px}
.lout-h{display:flex;gap:10px;align-items:center;padding:8px 4px 10px}.lout-h .lic{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;font-size:19px;background:color-mix(in srgb,var(--lc) 14%,transparent);flex:none}
.lstep{display:flex;gap:9px;align-items:flex-start;text-align:left;border:0;background:transparent;padding:7px 8px;border-radius:9px;cursor:pointer;font-size:13px;color:var(--muted)}
.lstep span{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-size:11px;font-weight:700;background:var(--sunk);flex:none}
.lstep.on{background:color-mix(in srgb,var(--lc) 10%,transparent);color:var(--ink);font-weight:600}.lstep.on span{background:var(--lc);color:#fff}
.lstep.seen span{background:color-mix(in srgb,var(--lc) 22%,transparent);color:var(--lc)}
.lread .reader{max-width:none}
.lread .slide{border-top:5px solid var(--lc)}
.slide .kick{font:600 12px var(--f-num);color:var(--lc,var(--acc));letter-spacing:.04em}
.lread .progress i{background:var(--lc)}
@media (max-width:860px){.lread{grid-template-columns:minmax(0,1fr)}.lout{position:static}.lout .lstep{display:none}.lhero{flex-direction:column}}

/* new booking form */
.bkf{display:flex;flex-direction:column;gap:14px}
.bks{border:1px solid var(--line);border-radius:16px;padding:14px 16px;display:flex;flex-direction:column;gap:10px;background:var(--surface)}
.bks-h{display:flex;align-items:center;gap:8px;font-weight:700}
.bks-h .num{width:22px;height:22px;border-radius:50%;background:var(--acc);color:var(--acc-ink);display:grid;place-items:center;font-size:12px}
.cl-sum{background:var(--sunk);border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;gap:4px}
.seg.ctype button{font-weight:600}
.reqbox{border:1px dashed var(--acc-line);border-radius:12px;padding:12px;background:var(--acc-soft)}
.rchips{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:8px}
.rchip{border:1px solid var(--line2);border-radius:12px;padding:8px 10px;background:var(--surface);cursor:pointer;text-align:left;display:flex;flex-direction:column;box-shadow:inset 3px 0 0 var(--c)}
.rchip small{color:var(--muted);font-size:11.5px}
.rchip.on{background:color-mix(in srgb,var(--c) 16%,var(--surface));border-color:var(--c)}
.dchips{gap:6px;overflow-x:auto;padding-bottom:2px}
.dchip{border:1px solid var(--line2);border-radius:12px;padding:5px 10px;background:var(--surface);cursor:pointer;display:flex;flex-direction:column;align-items:center;min-width:52px}
.dchip small{font-size:10.5px;color:var(--muted)}.dchip b{font-size:15px}
.dchip.on{background:var(--acc);border-color:var(--acc);color:var(--acc-ink)}.dchip.on small{color:inherit;opacity:.85}
.dchips input[type=date]{width:auto;min-width:140px}
.slots{display:grid;grid-template-columns:repeat(32,minmax(0,1fr));gap:2px;margin-top:2px}
.sl{height:34px;border:0;border-radius:4px;background:var(--good-soft);cursor:pointer;position:relative;padding:0}
.sl.night{background:color-mix(in srgb,var(--good-soft) 60%,var(--sunk))}
.sl span{position:absolute;top:-15px;left:0;font-size:10px;color:var(--muted)}
.slots{padding-top:14px}
.sl:hover:not(:disabled){outline:2px solid var(--acc)}
.sl.busy{background:repeating-linear-gradient(45deg,var(--line2),var(--line2) 4px,var(--sunk) 4px,var(--sunk) 8px);cursor:not-allowed}
.sl.past{opacity:.35;cursor:not-allowed}
.sl.sel{background:var(--acc)}.sl.clash{background:var(--crit)}
.slot-leg{display:flex;gap:12px;flex-wrap:wrap;font-size:11.5px;color:var(--muted)}.slot-leg i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:4px;vertical-align:-1px}
.slot-leg i.f{background:var(--good-soft);border:1px solid var(--good)}.slot-leg i.b{background:var(--line2)}.slot-leg i.s{background:var(--acc)}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chips button{border:1px solid var(--line2);background:var(--surface);border-radius:99px;padding:6px 12px;cursor:pointer;font-size:13px}
.chips button.on{background:var(--acc);border-color:var(--acc);color:var(--acc-ink)}
.chips.need{outline:2px solid var(--warn);outline-offset:4px;border-radius:12px}
.prepay summary{cursor:pointer;color:var(--muted)}
@media (max-width:640px){.slots{grid-template-columns:repeat(16,minmax(0,1fr));row-gap:16px}}
.deal.hl{outline:2px solid var(--acc);animation:hlpulse 1.6s ease 2}
@keyframes hlpulse{50%{box-shadow:0 0 0 6px var(--acc-soft)}}
.deal .dact{display:flex;gap:6px;margin-top:6px}
.btn.xs{min-height:26px;padding:3px 8px;font-size:12px}
/* learning focus player (like a video) */
.lplayer{position:fixed;inset:0;z-index:60;background:radial-gradient(1200px 600px at 50% 30%,color-mix(in srgb,var(--lc) 35%,#05121a),#03090d 70%);color:#eaf4f6;display:flex;flex-direction:column;animation:lpin .25s ease;overflow:auto}
@keyframes lpin{from{opacity:0;transform:scale(.985)}}
.lp-top{display:flex;justify-content:space-between;align-items:center;padding:16px 24px}
.lp-ic{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;font-size:20px;background:rgba(255,255,255,.1);margin-right:10px}
.lp-x{width:40px;height:40px;border-radius:50%;border:0;background:rgba(255,255,255,.1);color:#fff;font-size:16px;cursor:pointer}.lp-x:hover{background:rgba(255,255,255,.2)}
.lp-body{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0 20px 24px;gap:18px}
.lp-stage{width:100%;max-width:1000px}
.lp-frame{position:relative;aspect-ratio:16/9;max-height:62vh;width:100%;border-radius:22px;padding:clamp(22px,5vw,56px);background:linear-gradient(135deg,color-mix(in srgb,var(--lc) 55%,#0b2a38),#0b1d26);box-shadow:0 30px 80px rgba(0,0,0,.55),inset 0 0 0 1px rgba(255,255,255,.08);overflow:auto;display:flex;flex-direction:column;justify-content:center}
.lp-frame h2{font:700 clamp(22px,3.2vw,36px)/1.15 var(--f-num);color:#fff;margin:0 0 16px}
.lp-frame p,.lp-frame li{font-size:clamp(15px,1.7vw,20px);line-height:1.55;color:#dcebef}
.lp-frame ul{padding-left:22px;margin:6px 0}.lp-frame li{margin:6px 0}
.lp-frame .note{background:rgba(255,255,255,.1);border-radius:14px;padding:12px 16px;margin-top:14px;font-size:clamp(14px,1.5vw,17px)}
.lp-kick{position:absolute;top:18px;right:22px;font:600 12px var(--f-num);opacity:.6}
.eq{position:absolute;left:24px;bottom:20px;display:flex;gap:3px;align-items:flex-end;height:18px}.eq i{width:3px;background:#5cc7bd;border-radius:2px;animation:eq 0.9s ease-in-out infinite}.eq i:nth-child(2){animation-delay:.15s}.eq i:nth-child(3){animation-delay:.3s}.eq i:nth-child(4){animation-delay:.45s}.eq i:nth-child(5){animation-delay:.6s}
@keyframes eq{0%,100%{height:4px}50%{height:18px}}
.lp-ctrl{width:100%;max-width:1000px;display:flex;flex-direction:column;gap:12px}
.lp-dots{display:flex;gap:5px}.lp-dots button{flex:1;height:5px;border:0;border-radius:4px;background:rgba(255,255,255,.18);cursor:pointer;padding:0}.lp-dots button.seen{background:color-mix(in srgb,var(--lc) 70%,#fff)}.lp-dots button.on{background:#fff}.lp-dots .q{flex:0 0 22px;height:22px;margin-top:-8px;border-radius:50%;font-size:11px;font-weight:700;color:#fff;background:rgba(255,255,255,.18)}
.lp-btns{display:flex;justify-content:center;align-items:center;gap:22px}
.lp-b{width:46px;height:46px;border-radius:50%;border:0;background:rgba(255,255,255,.1);color:#fff;font-size:16px;cursor:pointer}.lp-b:disabled{opacity:.3}
.lp-play{width:68px;height:68px;border-radius:50%;border:0;background:#fff;color:#0b2a38;font-size:22px;cursor:pointer;box-shadow:0 10px 30px rgba(0,0,0,.4)}.lp-play:hover{transform:scale(1.05)}
.lp-opts{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;opacity:.9}.lp-opts select{width:auto;min-height:30px;font-size:12px;background:rgba(255,255,255,.1);color:#fff;border-color:rgba(255,255,255,.2)}
.lp-next{background:#fff;color:#0b2a38;border-color:#fff}
.lplayer .reader{max-width:820px;width:100%}
.lplayer .reader .slide{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.1);color:#eaf4f6}
.lplayer .reader .slide h2{color:#fff}
.lplayer .quiz .opt{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.15);color:#fff}
.lplayer .quiz .opt.right{background:rgba(60,203,115,.25);border-color:#3ccb73}.lplayer .quiz .opt.wrong{background:rgba(229,72,77,.25);border-color:#e5484d}
.lplayer .reader .btn{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.2);color:#fff}.lplayer .reader .btn.pri{background:#fff;color:#0b2a38}
.lplayer .reader .btn.ghost[data-act=learn-back]{display:none}
.lplayer .reader .mut,.lplayer .reader .cap{color:rgba(255,255,255,.65)}
.lplayer .card{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.1);color:#eaf4f6}
@media (max-width:640px){.lp-frame{aspect-ratio:auto;min-height:56vh;max-height:none}.lp-top{padding:12px 14px}}
.lane-add{width:100%;border:1.5px dashed var(--line2);background:transparent;border-radius:12px;padding:10px;color:var(--muted);font-weight:600;cursor:pointer;margin-bottom:8px}.lane-add:hover{border-color:var(--acc);color:var(--acc)}

.legal-tg{display:flex;gap:12px;align-items:center;padding:12px 14px;border:1.5px solid var(--line2);border-radius:12px;cursor:pointer;background:var(--surface)}
.legal-tg input{width:22px;height:22px;accent-color:var(--acc);flex:none}
.legal-tg span{display:flex;flex-direction:column}.legal-tg small{color:var(--muted);font-size:12.5px}
.legal-tg:has(input:checked){border-color:var(--acc);background:var(--acc-soft)}
.accm{border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--sunk)}
/* marketing: content, promos, rivals */
.tick{width:24px;height:24px;border-radius:50%;border:2px solid var(--line2);display:grid;place-items:center;flex:none;font-weight:700;font-size:13px;color:#fff}
.tick.on{background:var(--good);border-color:var(--good)}
table.wk th,table.wk td{text-align:center;padding:6px 4px}table.wk td:first-child{text-align:left;white-space:nowrap}
.dotok{color:var(--good);font-weight:700}.dotno{color:var(--faint)}
.cboard{display:grid;grid-template-columns:repeat(5,minmax(190px,1fr));gap:10px;overflow-x:auto}
.clane{background:var(--sunk);border-radius:var(--r);padding:10px;display:flex;flex-direction:column;gap:8px}
.clane h3{font-size:13px;padding:2px 4px}
.cidea{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:10px;display:flex;flex-direction:column;gap:4px}
.cidea .s{font-size:12.5px;color:var(--muted)}
.promos{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.promo{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px;display:flex;flex-direction:column;gap:8px;box-shadow:var(--shadow)}
.promo.on{border-color:color-mix(in srgb,var(--good) 45%,var(--line))}.promo.done{opacity:.6}
.promo h3{font-size:16px;margin:0}.promo .s{font-size:13px;color:var(--muted)}
.say{background:var(--sunk);border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:6px;align-items:flex-start}
.pcmp{display:flex;flex-direction:column;gap:6px;padding-bottom:12px;border-bottom:1px solid var(--line)}.pcmp:last-child{border:0}
.pbar{position:relative;height:22px;background:linear-gradient(90deg,var(--good-soft),var(--sunk) 40%,var(--crit-soft));border-radius:99px;margin:4px 8px}
.pbar .pt{position:absolute;top:50%;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;background:var(--muted);border:2px solid var(--surface)}
.pbar .pt.us{width:18px;height:18px;margin:-9px 0 0 -9px;background:var(--good);box-shadow:0 0 0 3px var(--good-soft);z-index:2}
.rgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px}
.rival{border:1px solid var(--line);border-radius:12px;padding:12px;background:var(--surface)}
.rival summary{cursor:pointer;list-style:none;display:flex;flex-direction:column;gap:3px}.rival summary::-webkit-details-marker{display:none}
.rival .cap{margin-top:10px}.rival .s{font-size:13px;color:var(--ink2)}
.ul{margin:4px 0 0;padding-left:18px;font-size:13.5px;display:flex;flex-direction:column;gap:3px}
/* CRM v2 */
.crm-top{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin:4px 0 12px}
.crmf button b{margin-left:4px;font-weight:700}
.crm-kpi{display:flex;gap:16px;font-size:13px;color:var(--muted);flex-wrap:wrap}.crm-kpi b{color:var(--ink)}
.board{display:flex;align-items:flex-start}
.board>.lane{flex:1 1 232px;min-width:232px}
.board>.lane.mini{flex:none;min-width:0}
.lane.mini{width:64px;min-height:200px;align-items:center;justify-content:flex-start;gap:10px;border:0;cursor:pointer;padding:14px 6px;color:var(--ink);font:inherit;writing-mode:vertical-rl;transform:rotate(180deg)}
.lane.mini i{width:9px;height:9px;border-radius:50%;background:var(--c)}
.lane.mini b{font-size:13px}.lane.mini .n{font-weight:700}.lane.mini .sum{font-size:12px;color:var(--muted)}
.lane.mini:hover{background:var(--hover)}
.lnk{border:0;background:none;color:var(--acc);font:inherit;font-size:12px;cursor:pointer;padding:0;margin-left:6px}
.deal .dact{display:flex;gap:6px;margin-top:6px;align-items:center}
.deal .dact .grow{flex:1;min-width:0;justify-content:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.deal .dact .btn.icon{flex:none;width:28px;padding:0;justify-content:center}
.deal.stale{border-left:3px solid var(--warn)}
.deal.req{border-color:var(--acc-line);background:color-mix(in srgb,var(--acc) 5%,var(--surface))}
.deal.req.late{border-color:var(--crit);box-shadow:0 0 0 2px var(--crit-soft)}
.deal .soonx{color:var(--acc)}
.deal .docsline{display:flex;align-items:center;gap:2px}
/* tasks v3: chips, popovers, menus */
.tcheck{--pc:var(--muted)}
.qchips{display:flex;gap:6px;flex-wrap:wrap}
.qchip{display:inline-flex;align-items:center;border:1px solid var(--line2);border-radius:8px;background:var(--surface);overflow:hidden}
.qchip>button{display:inline-flex;align-items:center;gap:6px;border:0;background:none;padding:6px 10px;font:inherit;font-size:13px;color:var(--ink2);cursor:pointer;min-height:32px}
.qchip>button:hover{background:var(--hover)}
.qchip.set{border-color:var(--acc-line);background:var(--acc-soft)}.qchip.set>button{color:var(--acc);font-weight:600}
.qchip .qx{padding:6px 8px 6px 2px;color:var(--muted);font-size:15px}
#tk-chips .qchips{padding:4px 0 2px}
.pop{position:fixed;z-index:1000;min-width:240px;max-width:min(320px,calc(100vw - 16px));max-height:min(520px,calc(100vh - 16px));overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow-lg);padding:6px;display:flex;flex-direction:column;gap:1px;animation:popin .12s ease}
@keyframes popin{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.pop-h{font-size:12px;font-weight:700;color:var(--muted);padding:8px 10px 6px;text-transform:uppercase;letter-spacing:.04em}
.pm{display:flex;align-items:center;gap:10px;width:100%;border:0;background:none;padding:9px 10px;border-radius:9px;font:inherit;font-size:14px;color:var(--ink);cursor:pointer;text-align:left;min-height:38px}
.pm:hover{background:var(--hover)}.pm.on{color:var(--acc);font-weight:600}.pm.danger{color:var(--crit)}.pm.mut{color:var(--muted)}.pm[disabled]{opacity:.4;pointer-events:none}
.pm .pi{width:20px;text-align:center;flex:none;display:inline-grid;place-items:center}.pm .pi svg{width:16px;height:16px}
.pm input[type=checkbox]{width:18px;height:18px;margin:0}
.pop-sep{height:1px;background:var(--line);margin:4px 6px}
.pop-row{display:flex;gap:8px;padding:6px 10px}.pop-row label{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--muted);flex:1}.pop-row input,.pop-row select{min-height:36px}
.pop-f{display:flex;justify-content:flex-end;padding:6px 10px 4px}
.pop-quick{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;padding:2px 4px 6px}
.pop-quick button{border:1px solid var(--line);background:var(--sunk);border-radius:10px;padding:8px 2px;display:flex;flex-direction:column;align-items:center;gap:2px;cursor:pointer;font-size:16px}
.pop-quick button span{font-size:11px;color:var(--muted)}.pop-quick button:hover{border-color:var(--acc)}
.whoc{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--ink2)}
.whoc::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--mc)}
.due.dl{color:var(--warn)}.due.dl.over{color:var(--crit);font-weight:600}
.tmore{border:0;background:none;color:var(--muted);font-size:18px;line-height:1;padding:2px 6px;border-radius:6px;cursor:pointer;opacity:.35;align-self:center}
.titem:hover .tmore,.tmore:focus{opacity:1}.tmore:hover{background:var(--hover);color:var(--ink)}
@media (hover:none){.tmore{opacity:.8}}
.nvw{position:relative;display:flex;align-items:center}
.nvw .nv{flex:1;min-width:0}
.nvw .nmore{position:absolute;right:4px;border:0;background:var(--surface);color:var(--muted);border-radius:6px;padding:2px 6px;cursor:pointer;opacity:0;font-size:16px}
.nvw:hover .nmore{opacity:1}.nvw:hover .nv .c{visibility:hidden}
@media (hover:none){.nvw .nmore{opacity:.8;background:transparent}.nvw .nv .c{margin-right:22px}}
.nvw.dragging{opacity:.4}.nvw.drop-top{box-shadow:inset 0 2px 0 var(--acc)}.nvw.drop-bot{box-shadow:inset 0 -2px 0 var(--acc)}
.btn.acc{background:var(--acc-soft);color:var(--acc);border-color:var(--acc-line)}
.li.mutd{opacity:.55}
td.neg,.num.neg{color:var(--crit);font-weight:600}
/* hover quick actions on a task, like Todoist */
.titem .tact{display:flex;gap:2px;align-items:center;opacity:0;transition:opacity .12s;position:absolute;right:0;top:50%;transform:translateY(-50%);background:var(--surface);padding-left:8px;box-shadow:-12px 0 12px var(--surface)}
.titem:hover .tact,.titem:focus-within .tact{opacity:1}
.titem .tact button{border:0;background:none;width:30px;height:30px;border-radius:7px;display:grid;place-items:center;color:var(--muted);cursor:pointer;font-size:15px;padding:0}
.titem .tact button:hover{background:var(--hover);color:var(--ink)}
.titem .tact svg{width:16px;height:16px}
.titem .tact .tmore{opacity:1;font-size:18px}
@media (hover:none){.titem .tact{opacity:1;position:static;transform:none;box-shadow:none;padding:0}.titem .tact button:not(.tmore){display:none}}
.toast.act{display:flex;align-items:center;gap:14px}.toast .tbtn{border:0;background:rgba(255,255,255,.18);color:inherit;font:inherit;font-weight:700;border-radius:7px;padding:4px 10px;cursor:pointer}
/* task description: two lines in the list, whole text in the card */
.titem .td{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;white-space:pre-line;word-break:break-word}
#tk-desc{white-space:pre-wrap;line-height:1.5;font-size:14.5px}
.locsw{display:flex;align-items:center;gap:8px;margin:0 0 10px;padding:6px 10px;border:1px solid var(--line2);border-radius:10px;background:var(--surface);font-weight:600;font-size:13.5px}
.locsw select{border:0;background:transparent;font:inherit;font-weight:600;padding:2px 0;min-height:0;box-shadow:none;flex:1;cursor:pointer}
.locsw.one{color:var(--ink2)}
.locs-tag{color:var(--muted);font-weight:500}
/* several times a day */
.multi{border-top:1px solid var(--line);margin-top:4px;padding-top:4px}
.ptimes{display:flex;flex-wrap:wrap;gap:6px;padding:4px 10px}
.ptime{display:inline-flex;align-items:center;border:1px solid var(--line2);border-radius:8px;padding-right:2px}.ptime input{border:0;min-height:32px;box-shadow:none;width:92px;padding:2px 6px}
.ptime button{border:0;background:none;color:var(--muted);cursor:pointer;font-size:15px;padding:0 4px}
.tslots{display:inline-flex;gap:3px;align-items:center;flex-wrap:wrap}
.tslots i{font-style:normal;font-size:11.5px;padding:1px 6px;border-radius:6px;background:var(--sunk);color:var(--muted)}
.tslots i.ok{background:var(--good-soft);color:var(--good)}.tslots i.nx{background:var(--acc-soft);color:var(--acc);font-weight:600}.tslots i.late{background:var(--crit-soft);color:var(--crit)}
.tslots b{font-size:11.5px;color:var(--muted);margin-left:2px}
#pp-every label:first-child{flex:0 0 96px}#pp-every select{min-width:90px}
/* subtasks inline */
.tsubs{margin-left:30px;border-left:2px solid var(--line);padding-left:10px}
.tsubs .titem{padding:6px 0;border-bottom:1px dashed var(--line)}.tsubs .titem:last-child{border-bottom:0}
.tsubs .titem .tt{font-size:14px}
.tsubs .tcheck{width:17px;height:17px}


@media (max-width:700px){.tsubs{margin-left:22px;padding-left:8px}}

@media (max-width:600px){.titem .tproj{max-width:28%;overflow:hidden;font-size:11px}.titem .tproj>span,.titem .tproj{text-overflow:ellipsis}.titem .tproj{display:block;white-space:nowrap}.titem .tproj i{display:inline-block;margin-right:4px;vertical-align:middle}}
.todo .tlist .titem:not(.done),#tk-subs .titem{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
.titem.tholding{background:color-mix(in srgb,var(--p1) 8%,transparent);transform:scale(.99);transition:transform .15s}
body.tdragging,body.tdragging *{cursor:grabbing!important}
.tdrop-line.sub{margin-left:34px}
.tsubs .tdrop-line{margin-left:0}
.tsec-t{cursor:pointer;display:inline-flex;align-items:center;gap:2px;user-select:none}

.tlist.sfolded .tsec{opacity:.85}


.nsub{margin:0 0 6px 18px;border-left:2px solid var(--line);padding-left:4px}
.nst{display:flex;align-items:center;gap:7px;width:100%;border:0;background:none;padding:4px 6px;font-size:12.5px;color:var(--ink2);text-align:left;cursor:pointer;border-radius:6px;min-width:0}
.nst:hover{background:var(--hover);color:var(--ink)}
.nst i{width:10px;height:10px;border-radius:50%;border:1.5px solid var(--muted);flex:none}
@media (max-width:900px){.todo-side .nexp,.todo-side .nsub{display:none!important}}
@media (max-width:600px){.todo-main .tsub{flex-wrap:wrap;row-gap:8px}.todo-main .tsub .grow{flex-basis:100%;height:0}.todo-main .tsub .btn{width:auto;flex:none;padding-left:8px;padding-right:8px}.todo-main .tsub .btn svg{display:none}}

/* стрелочки как в Todoist: тонкий шеврон, вниз — открыто, вправо — свёрнуто */
.tfold,.sfold,.nexp{display:inline-grid;place-items:center;width:24px;height:24px;padding:0;border:0;background:none;color:#808080;border-radius:5px;cursor:pointer;flex:none}
.tfold svg,.sfold svg,.nexp svg{transition:transform .15s ease}
.tfold:not(.open) svg,.sfold:not(.open) svg,.nexp:not(.open) svg{transform:rotate(-90deg)}
.tfold:hover,.tsec-t:hover .sfold,.nexp:hover{background:var(--hover);color:var(--ink)}
.tsec{position:relative}
.tsec-t{position:relative}
.sfold{position:absolute;left:-28px;top:50%;margin-top:-12px}
.titem>.tfold{position:absolute;left:-28px;top:8px;margin:0}
.tsubs .titem>.tfold{display:none}
.todo-main{padding-left:52px}
.tdrag{left:-50px}
@media (hover:none){.tdrag{display:none}}
@media (max-width:700px){.todo-main{padding-left:34px}.sfold{left:-28px}.titem>.tfold{left:-28px}}
/* боковое меню: стрелочка справа, при наведении — как в Todoist */
.nvw .nexp{position:absolute;right:4px;opacity:0}
.nvw .nmore{right:30px}
.nvw:hover .nexp,.nvw .nexp.open{opacity:1}
.nvw .nexp.open~.nv .c,.nvw:has(.nexp.open) .nv .c{visibility:hidden}
.nsec-h .nexp{width:22px;height:22px;opacity:0}.nsec-h:hover .nexp,.nsec-h .nexp:not(.open){opacity:1}

/* вкладки внутри «Бронирования» */
.subnav{display:flex;gap:4px;padding:3px;background:var(--sunk);border:1px solid var(--line);border-radius:12px;margin:0 0 14px;overflow-x:auto;width:max-content;max-width:100%}
.subnav button{border:0;background:none;padding:7px 14px;border-radius:9px;cursor:pointer;color:var(--muted);font-weight:600;font-size:13.5px;white-space:nowrap}
.subnav button.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.08)}
.subnav button:hover:not(.on){color:var(--ink)}
/* инвентаризация */
.invrow .qty input{width:64px;text-align:center}
.invrow.ok .t::before{content:"✓ ";color:var(--good);font-weight:700}
.invrow{padding-left:14px;padding-right:14px}
.paydue{border:1px dashed var(--line2);border-radius:12px;padding:10px 12px;margin-top:8px}
.rchip.rc-add{border-style:dashed;--c:var(--muted);color:var(--muted)}
button.kpi{border:1px solid var(--line);font:inherit;color:inherit}
button.kpi:hover{border-color:var(--acc)}button.kpi.on{border-color:var(--acc);box-shadow:inset 0 0 0 1px var(--acc)}
/* боковое меню задач на планшете/телефоне: счётчик, ⋯ и стрелка — в ряд, ничего не перекрывает */
@media (hover:none){.nvw .nmore,.nvw .nexp{position:static;opacity:1}.nvw .nmore{padding:2px 4px;font-size:14px}.nvw .nv .c{margin-right:2px;visibility:visible!important}.nvw:has(.nexp.open) .nv .c{visibility:visible}}
.pthumb{display:inline-grid;place-items:center;width:44px;height:44px;border-radius:10px;overflow:hidden;background:var(--sunk);border:1px dashed var(--line2);cursor:pointer;color:var(--muted)}
.pthumb img{width:100%;height:100%;object-fit:cover}.pthumb:hover{border-color:var(--acc);color:var(--acc)}
.cpick{position:relative}.cpick .cp-paste{position:absolute;right:6px;top:50%;transform:translateY(-50%);z-index:2}
.cpick .cp-in{padding-right:110px}
.chips .addsrc{border-style:dashed;min-width:38px}
/* поиск позиции в «Закуп» / «Списание» */
.mvlist{max-height:260px;overflow:auto;border:1px solid var(--line);border-radius:12px;margin-top:6px;padding:4px;-webkit-overflow-scrolling:touch}
.mvg{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:8px 8px 4px}
.mvo{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:7px 8px;border-radius:9px;background:none;border:0;font:inherit;color:inherit;cursor:pointer}
.mvo:hover{background:var(--sunk)}
.mvo.on{background:var(--acc-soft);font-weight:600}
.mvo img,.mvo i{width:30px;height:30px;border-radius:7px;object-fit:cover;flex:none;display:grid;place-items:center;background:var(--sunk)}
.mvo i svg{width:16px;height:16px}
/* время брони: часы и минуты как в будильнике */
.tpick{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-top:10px}
.tp-grp{display:flex;align-items:center;gap:4px;position:relative;padding-top:18px}
.tp-l{position:absolute;top:0;left:2px;font-size:11.5px;color:var(--muted)}
.tp-grp select{width:auto;min-width:64px;font:600 20px var(--f-num,inherit);text-align:center;padding:8px 10px}
.tp-c{font:600 20px var(--f-num,inherit)}
.tp-dash{padding-bottom:10px;color:var(--muted)}
.tp-len{padding-bottom:12px}
.durs{margin-top:10px;gap:6px;flex-wrap:wrap}
.busy-l{margin-top:10px;display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.multi{margin-top:8px;gap:8px}
.auto-v{padding:9px 2px;font-weight:600}
.note-hl{color:var(--warn,#b45309);font-weight:600}
.oq{width:58px;padding:4px 6px;text-align:center}
.drg{cursor:grab;touch-action:none;user-select:none;font-size:18px;color:var(--muted);padding:2px 8px 2px 0;line-height:1}
.crop{position:relative;aspect-ratio:4/3;overflow:hidden;border-radius:12px;background:var(--sunk);touch-action:none;cursor:grab}
.crop img{position:absolute;left:0;top:0;max-width:none;user-select:none;-webkit-user-drag:none}
/* комментарии в задачах */
.cm{padding:8px 10px;border:1px solid var(--line);border-radius:10px;margin-top:6px;background:var(--card,#fff)}
.cm-files{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.cm-files img{width:96px;height:96px;object-fit:cover;border-radius:8px;border:1px solid var(--line)}
.cm-pdf{display:inline-flex;align-items:center;padding:6px 10px;border:1px solid var(--line);border-radius:8px;font-size:13px}
.cm-new{margin-top:8px}
.tcm{font-size:12px;color:var(--muted)}
/* вкладки сверху уже называют раздел — второй заголовок не нужен */
.subnav + .head h1, .subnav + div > .head:first-child h1{display:none}
.lostbox{margin-top:10px;padding:10px 12px;border-radius:10px;background:var(--sunk)}.lostbox.has{background:var(--warn-soft)}.lostbox .sm{margin-top:3px}
/* главная руководителя: свои блоки */
.hgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:start}
.hgrid .hw.full{grid-column:1/-1}
.hgrid .hw>.card,.hgrid .hw>.kpis,.hgrid .hw>.qa-row{margin:0}
.hw.edit{outline:2px dashed var(--acc-line);outline-offset:4px;border-radius:14px}
.hw-bar{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.hw-bar b{flex:1}
@media (max-width:900px){.hgrid{grid-template-columns:1fr}}
input.oq{width:64px!important;flex:none;min-width:0}
.subnav-row{margin:0 0 14px;gap:6px;align-items:center}.subnav-row .subnav{margin:0}
.subnav-row + .head h1{display:none}
.srt-i{background:var(--card,#fff)}
.te-n{flex:1}
.sup-chev{display:inline-block;transition:transform .15s;color:var(--muted)}.sup-chev.on{transform:rotate(90deg)}
.cd-ans{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}

.lesson{position:relative}.ln-tools{position:absolute;top:8px;right:8px;display:flex;gap:4px;z-index:2}
.lesson.add{border:2px dashed var(--line);background:transparent;cursor:pointer}
.le-step{border:1px solid var(--line);border-radius:var(--r);padding:10px;display:flex;flex-direction:column;gap:6px;margin:8px 0}
.lp-vid{width:100%;aspect-ratio:16/9;border:0;border-radius:12px;margin:10px 0;background:#000}

.bimp{max-height:300px;overflow:auto;margin-top:8px;display:flex;flex-direction:column;gap:2px}.bimp label{padding:4px 2px;border-bottom:1px solid var(--line);cursor:pointer}
.rf-g{border-top:1px solid var(--line);padding:8px 0}.rf-i{padding:3px 0 3px 14px;font-size:13px}
.fdash{display:grid;grid-template-columns:repeat(12,1fr);gap:6px;align-items:end;height:200px;padding-top:6px}.fd-col{display:flex;flex-direction:column;align-items:center;gap:3px;height:100%;justify-content:flex-end}.fd-col.on{background:var(--sunk);border-radius:8px}
.fd-bars{flex:1;width:100%;display:flex;gap:2px;align-items:flex-end;justify-content:center}.fd-bars i{display:block;width:40%;max-width:18px;border-radius:4px 4px 0 0;min-height:1px}
.lg-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin:0 3px 0 8px}

.xtab th{padding:0}.xtab .xh{all:unset;cursor:pointer;display:block;padding:8px 10px;white-space:nowrap;font:inherit;color:inherit}.xtab th.xon{background:var(--soft,#e6f1f4)}.xtab th.xon .xh{color:var(--acc);font-weight:700}.xtab td{white-space:nowrap}.xtab td.sm{white-space:normal;min-width:180px}
.xvals{max-height:340px;overflow:auto;display:flex;flex-direction:column;gap:2px}.xvals label{padding:5px 2px;border-bottom:1px solid var(--line);cursor:pointer;gap:8px}

.qrbox{display:flex;gap:14px;align-items:center;background:var(--sunk);border-radius:var(--r);padding:12px;margin-top:8px}.qrimg{width:170px;height:170px;background:#fff;border-radius:10px;padding:4px;flex:none}.qrimg svg{width:100%;height:100%;display:block}

.fb-fab{position:fixed;right:16px;bottom:16px;z-index:40;border:0;border-radius:999px;padding:10px 16px;background:var(--acc);color:#fff;font:600 14px var(--f-body,inherit);box-shadow:0 6px 20px rgba(0,0,0,.18);cursor:pointer}.fb-fab:focus-visible{outline:3px solid var(--ink)}
@media (max-width:760px){.fb-fab{bottom:76px;padding:8px 12px;font-size:13px}}

.bell{position:relative;border:0;background:transparent;font-size:18px;cursor:pointer;padding:4px 6px;border-radius:8px;line-height:1}.bell:hover{background:var(--sunk)}.bell span{position:absolute;top:-2px;right:-4px;background:var(--crit,#d33);color:#fff;border-radius:999px;font:700 10px/16px var(--f-body,inherit);min-width:16px;padding:0 4px;text-align:center}
.mtop .brand .bell{margin-left:6px}
.nt-pops{position:fixed;right:16px;bottom:16px;z-index:60;display:flex;flex-direction:column;gap:8px;width:min(340px,calc(100vw - 32px))}
.nt-pop{background:var(--surface,#fff);border:1px solid var(--line);border-left:4px solid var(--acc);border-radius:12px;padding:10px 12px;box-shadow:0 10px 30px rgba(0,0,0,.18);display:flex;flex-direction:column;gap:6px}
.nt-ph{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}.nt-ph img{width:64px;height:64px;object-fit:cover;border-radius:8px;cursor:pointer}
.nt-li.new{background:var(--soft,#e6f1f4);border-radius:10px}
.nt-view{display:flex;justify-content:center;background:#000;border-radius:12px}.nt-view img{max-width:100%;max-height:70vh;object-fit:contain}

.secset-bar{display:flex;justify-content:flex-end;margin-bottom:-6px}.head .secset{align-self:flex-start;margin-left:auto}

.ev.hold{background:var(--surface);color:var(--ink);border:2px dotted var(--c)}
.calf{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0}.calf label{display:flex;gap:5px;align-items:center;font-size:13px;padding:3px 8px;border:1px solid var(--line);border-radius:999px;cursor:pointer}.calf i{width:10px;height:10px;border-radius:3px;background:var(--c)}

.hours{display:flex;gap:3px;align-items:flex-end;height:160px}.hcol{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;height:100%}.hbar{flex:1;width:100%;display:flex;align-items:flex-end}.hbar i{display:block;width:100%;background:var(--acc);border-radius:4px 4px 0 0;min-height:1px}
