:root{
  /* Две темы лежат в /themes.css: «Светлый воздух» (air, по умолчанию) и «Тёмное чайное» (tea). Здесь значения «воздуха»: страница без themes.css выглядит так же.
     Цвета в этом файле только через переменные: поверхности, текст, линии, оттенки. Новые цвета заводим в обеих темах. */
  --dark:#3A2416; --on-dark:#FBF6EA; --cream:#F4EFE4; --white:#FFFDF8; --surface-2:#F8F3E8;
  --sand:#EFE5CF; --sand-2:#EFE4CC; --line:rgba(58,36,22,.14); --muted:#6B5645; --text:#2E1D12;
  --gold:#B8893B; --gold-ink:#86601C; --green:#4F6B3A; --green-ink:#4F6B3A; --green-bg:#E8EFDD; --green-line:#B9C9A3;
  --red:#A63A2B; --red-ink:#A63A2B; --red-bg:#F6DAD3;
  --pre:#F1D9A0; --tint-soft:#FFFBF0; --tint-gold:#FFF3D4;
  --ink-brown:#5B3F2B; --green-deep:#2F3D22; --red-deep:#7A2A1D; --gold-deep:#5B3F12; --on-gold:#2A1A0E;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
:root{--gut:12px}   /* боковое поле экранов (выпуск 238: было 16px); на широком экране компьютера снова 16px */
html.wide{--gut:16px}
html,body{touch-action:manipulation;-webkit-text-size-adjust:100%}
button,a,label,select,summary,[role=button],.stepper *{touch-action:manipulation;-webkit-user-select:none;user-select:none}
input,textarea{-webkit-user-select:text;user-select:text}
html,body{margin:0;background:var(--cream);color:var(--text);font-family:'Manrope',system-ui,sans-serif;font-size:16px}
body{min-height:100dvh}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
a{color:inherit}
#app{max-width:520px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column;position:relative}
.serif{font-family:'Cormorant Garamond',Georgia,serif}

/* шапка */
.top{background:var(--dark);color:var(--on-dark);padding:calc(14px + env(safe-area-inset-top)) var(--gut) 14px;display:flex;flex-direction:column;gap:10px}
.top .row{display:flex;align-items:center;gap:12px}
.top h1{margin:0;font-family:'Cormorant Garamond',Georgia,serif;font-size:28px;line-height:1.1;font-weight:700;flex:1}
.top .sub{font-size:14px;color:#D9C7A8}
.top .time{text-align:right}
.top .time b{display:block;font-family:'Cormorant Garamond',serif;font-size:30px;line-height:1}
.top .time small{font-size:13px;color:#D9C7A8}
.iconbtn{width:44px;height:44px;border-radius:12px;border:1px solid #6B4A33;background:transparent;color:#F7EEDC;font-size:20px;display:flex;align-items:center;justify-content:center}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chip{min-height:40px;padding:0 14px;border-radius:20px;border:1px solid var(--line);background:var(--white);color:var(--text);font-size:14px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;text-decoration:none}
.chip.on{background:var(--dark);border-color:var(--dark);color:var(--on-dark)}
.top .chip{background:transparent;border-color:#6B4A33;color:#F7EEDC}
.top .chip.on{background:#F7EEDC;border-color:#F7EEDC;color:var(--text)}

.page{flex:1;padding:14px var(--gut) 24px;display:flex;flex-direction:column;gap:14px}
.page.pad-bottom{padding-bottom:150px}
.h{font-size:14px;font-weight:700;letter-spacing:.04em;color:var(--muted);text-transform:uppercase;margin:0}
.card{background:var(--white);border:1px solid var(--line);border-radius:14px;padding:12px 14px;display:flex;flex-direction:column;gap:6px}
.card.pre{border-color:var(--gold);background:var(--tint-soft)}
.card.urgent{border:2px solid var(--red)}
.card.cancelled{opacity:.6}
.muted{color:var(--muted)}
.small{font-size:14px}
.row{display:flex;gap:10px;align-items:center}
.grow{flex:1;min-width:0}
.tag{font-size:11px;font-weight:700;border-radius:8px;padding:4px 8px;white-space:nowrap}
.tag.pre{background:var(--pre);color:var(--ink-brown)}
.tag.conf{background:var(--dark);color:var(--on-dark)}
.tag.urgent{background:var(--red);color:#fff}
.tag.green{background:var(--green);color:#fff}
.tag.gold{background:#E0A23A;color:#2A1A0E}
.tag.gray{background:var(--sand-2);color:var(--ink-brown)}
.notice{border-radius:12px;padding:10px 12px;font-size:14px;line-height:1.4;background:var(--sand);color:var(--ink-brown);white-space:pre-line}
.notice.ok{background:var(--green-bg);color:var(--green-deep)}
.notice.bad{background:var(--red-bg);color:var(--red-deep)}
.notice .standing{border-left:4px solid #5B7F2B;padding-left:8px;display:grid;gap:3px}
.notice.gold{background:var(--tint-gold);color:var(--gold-deep);font-weight:600}
.notice b{display:block}

/* статистика */
.stats{display:flex;gap:8px}
.stat{flex:1;background:var(--white);border:1px solid var(--line);border-radius:12px;padding:8px 10px}
.stat small{display:block;font-size:13px;color:var(--muted)}
.stat b{font-size:22px}
.stat.green{background:var(--green-bg);border-color:var(--green-line)}
.stat.sand{background:var(--sand)}

/* формы */
label.f{display:flex;flex-direction:column;gap:6px;font-size:14px;font-weight:600;color:var(--muted)}
input[type=text],input[type=tel],input[type=email],input[type=url],input[type=search],input[type=date],input[type=time],input[type=number],input[type=password],select,textarea{
  width:100%;min-height:48px;border:1px solid var(--line);border-radius:12px;background:var(--white);padding:10px 12px;font-size:16px;color:var(--text)}
textarea{min-height:76px}
/* iPhone: поля даты и времени не должны вылезать за края окна (у Safari у них своя ширина) */
input[type=date],input[type=time]{-webkit-appearance:none;appearance:none;display:block;min-width:0;max-width:100%;text-align:left}
input[type=date]::-webkit-date-and-time-value,input[type=time]::-webkit-date-and-time-value{text-align:left;min-height:1.2em}
.bigbtn{min-height:56px;border-radius:14px;border:none;background:var(--dark);color:var(--on-dark);font-size:17px;font-weight:700;padding:0 18px;display:flex;align-items:center;justify-content:center;text-decoration:none}
.bigbtn.ghost{background:transparent;border:1px solid var(--dark);color:var(--text)}
.bigbtn.gold{background:var(--gold);color:#2A1A0E}
.bigbtn.red{background:var(--red);color:#fff}
.bigbtn:disabled{background:#C9B79A;color:#6B5744}
.contactbar{display:grid;gap:6px;padding:8px 10px;border-radius:12px;background:rgba(184,137,59,.12)}
.contactbar.flat{padding:0;background:none}
.callbtn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;color:inherit}
.smallbtn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;min-height:44px;border-radius:12px;border:1px solid var(--dark);background:transparent;padding:0 14px;font-weight:600;font-size:14px}
.smallbtn.danger{border-color:var(--red);color:var(--red-ink)}
.smallbtn.gold{background:var(--gold);border-color:var(--gold);color:#2A1A0E}
.smallbtn.done{background:var(--green-bg);border-color:var(--green-line);color:var(--green-deep)}
.stepper{display:flex;align-items:center;gap:0}
.stepper button{width:52px;height:52px;border:1px solid var(--line);background:var(--white);font-size:22px;font-weight:700}
.stepper button:first-child{border-radius:12px 0 0 12px}
.stepper button:last-child{border-radius:0 12px 12px 0}
.stepper output{min-width:56px;height:52px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--white);display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:700}
.switch{display:flex;align-items:center;gap:12px;min-height:48px}
.switch input{width:24px;height:24px}

/* нижняя панель */
/* нижняя панель вкладок закреплена (fixed), а не липкая: на iPhone липкая во время прокрутки «съезжала» вверх. Её высоту main.js кладёт в --navh */
:root{--navh:calc(58px + env(safe-area-inset-bottom))}
#app.has-nav{padding-bottom:var(--navh)}
.bar{position:sticky;bottom:var(--navh);background:var(--cream);border-top:1px solid var(--line);padding:12px 16px calc(12px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:10px;z-index:5}
#app.has-nav .bar{padding-bottom:12px}
.bar .row>*{flex:1}
.nav{position:fixed;left:0;right:0;bottom:0;max-width:520px;margin:0 auto;background:var(--white);border-top:1px solid var(--line);display:flex;padding-bottom:env(safe-area-inset-bottom);z-index:6;transform:translateZ(0)}
/* пока человек печатает, панель вкладок спрятана, нижние кнопки встают к самому краю */
html.kb .nav{display:none}
html.kb .bar{bottom:0}
.nav a{flex:1;text-align:center;text-decoration:none;padding:10px 4px 8px;font-size:11px;font-weight:700;color:var(--muted);position:relative}
.nav a .i{display:block;font-size:20px;line-height:1.2}
.nav a.on{color:var(--text)}
.nav a.on::before{content:'';position:absolute;top:0;left:25%;right:25%;height:3px;border-radius:0 0 3px 3px;background:var(--dark)}
.badge{position:absolute;top:4px;left:calc(50% + 8px);background:var(--red);color:#fff;font-size:10px;border-radius:10px;min-width:18px;padding:1px 5px}

/* схема столов */
.scheme-wrap{width:100%;overflow:hidden}
.scheme{position:relative;width:358px;height:390px;background:var(--white);border:1px solid var(--line);border-radius:14px;overflow:hidden;transform-origin:0 0}
.scheme .lbl{position:absolute;font-size:11px;font-weight:700;letter-spacing:.05em;color:var(--muted)}
.tbl{position:absolute;padding:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;border:1px solid #8B6B50;background:linear-gradient(135deg,var(--tint-soft),#F1E3C6);box-shadow:inset 0 0 0 1px rgba(255,255,255,.75),0 1px 2px rgba(58,36,22,.28);color:var(--text);border-radius:10px;overflow:hidden}
/* стулья вокруг столов: отдельный слой под столами, цвет по состоянию стола */
.chairlayer{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none}
.chairlayer svg{display:block}
.ch .seat{fill:#DCC299;stroke:#8B6B50;stroke-width:.7}
.ch .back{fill:#A9825A}
.ch.pre .seat{fill:#EACB7E;stroke:#B8893B}.ch.pre .back{fill:#B8893B}
.ch.conf .seat{fill:#74503A;stroke:#3A2416}.ch.conf .back{fill:#3A2416}
.ch.sel .seat{fill:#9DB884;stroke:#2F3D22}.ch.sel .back{fill:#4F6B3A}
/* в редакторе схемы стулья выбранного стола: кружки-ручки, за них стул тянут вокруг стола */
.chh{position:absolute;width:26px;height:26px;margin:-13px 0 0 -13px;border-radius:50%;border:2px dashed rgba(184,137,59,.85);background:rgba(184,137,59,.10);cursor:grab;touch-action:none;box-sizing:border-box}
.chh.on{border-style:solid;border-color:#B8893B;background:rgba(184,137,59,.38)}
.chairrow{display:grid;gap:6px;padding:8px;border-radius:12px;background:#FBF3E0}
.tbl b{font-size:14px}
.tbl small{font-size:10px;color:var(--muted)}
.tbl.round{border-radius:50%}
.tbl.pre{background:var(--pre);border-color:var(--gold)}
.tbl.conf{background:var(--dark);border-color:var(--dark);color:var(--on-dark)}
.tbl.conf small{color:#D9C7A8}
.tbl.sel{background:#5C7A45;border:2px solid #2F3D22;color:#fff}
.tbl.sel small{color:#E8EFDD}
.tbl.room{border-radius:14px;background:var(--tint-soft)}
.tbl.disabled{cursor:not-allowed}
.legend{display:flex;gap:10px;flex-wrap:wrap;font-size:12px;color:var(--ink-brown);align-items:center}
.legend i{display:inline-block;width:14px;height:14px;border-radius:4px;vertical-align:-2px;margin-right:5px;border:1px solid #8B6B50}

/* задания */
.task{display:flex;align-items:center;gap:12px;width:100%;text-align:left;border-radius:12px;padding:10px 12px;min-height:60px;border:1px solid var(--line);background:var(--white)}
.task.special{border:2px solid var(--dark);background:var(--sand)}
.task.done{border:1px solid var(--green-line);background:var(--green-bg)}
.task .box{width:32px;height:32px;border-radius:8px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:700;color:#fff;border:2px solid #8B6B50;background:var(--white)}
.task.done .box{background:var(--green);border-color:var(--green)}
.task b{display:block;font-size:15px}
.task small{display:block;font-size:13px;color:var(--ink-brown)}

.countdown{display:flex;align-items:center;gap:12px;background:#F7EEDC;color:var(--text);border-radius:14px;padding:12px 14px}
.countdown b{font-family:'Cormorant Garamond',serif;font-size:40px;line-height:1}
.countdown span{font-size:14px;line-height:1.35}

.totals{display:flex;gap:8px;flex-wrap:wrap}
.total{flex:1;min-width:96px;background:var(--white);border:1px solid var(--line);border-radius:14px;padding:10px 12px}
.total small{display:block;font-size:14px;color:var(--ink-brown)}
.total b{font-family:'Cormorant Garamond',serif;font-size:44px;line-height:1}

/* вход: тот же тёмный фон, золото и шрифты, что у заставки при запуске, чтобы одно плавно переходило в другое */
.login{flex:1;width:100%;padding:calc(max(15vh,28px) + env(safe-area-inset-top)) 24px calc(28px + env(safe-area-inset-bottom));display:flex;flex-direction:column;justify-content:flex-start;gap:14px;text-align:center;color:#F1E4C8;background:radial-gradient(120% 90% at 50% 36%,#5A3821 0%,var(--dark) 54%,#24150C 100%)}
.login img.brand{display:block;width:min(80vw,340px);max-width:100%;height:auto;margin:0 auto;border-radius:0;padding:0;background:none;filter:drop-shadow(0 0 26px rgba(188,124,57,.28))}
.login .lg-orn{display:flex;align-items:center;justify-content:center;gap:10px;margin:14px 0 2px}
.login .lg-orn i{display:block;height:1px;width:64px;background:linear-gradient(90deg,transparent,#BC7C39)}
.login .lg-orn i:last-child{transform:scaleX(-1)}
.login .lg-orn b{display:block;width:7px;height:7px;background:#BC7C39;transform:rotate(45deg)}
.login h1{font-family:'Cormorant Garamond',Georgia,serif;font-size:34px;line-height:1.1;font-weight:700;letter-spacing:.02em;color:#E8CFA3;margin:0}
.login .lg-sub{font-size:15px;line-height:1.4;color:rgba(241,228,200,.78);margin-top:-6px}
.login input{text-align:center;font-size:24px;letter-spacing:.3em;min-height:58px;border:1.5px solid rgba(188,124,57,.65);border-radius:14px;background:rgba(247,238,220,.08);color:#F7EEDC;caret-color:#E8CFA3;outline:none;margin-top:6px}
.login input::placeholder{color:rgba(241,228,200,.42)}
.login input::selection{background:rgba(188,124,57,.55);color:#F7EEDC}
.login input:focus{border-color:#E8CFA3;background:rgba(247,238,220,.12);box-shadow:0 0 0 3px rgba(188,124,57,.28)}
.login .bigbtn{margin-top:4px}
.login .small.muted,.login a.muted{color:rgba(241,228,200,.72)}
.login .notice{text-align:left}
@supports selector(:has(*)){
  html:has(.login){background:#24150C}
  body:has(.login){background:radial-gradient(120% 90% at 50% 36%,#5A3821 0%,var(--dark) 54%,#24150C 100%) fixed}
  body:has(.login) .login{background:none}
}

.sheet-bg{position:fixed;inset:0;background:rgba(40,24,12,.5);z-index:20;display:flex;align-items:flex-end;justify-content:center}
.sheet{background:var(--cream);width:100%;max-width:520px;max-height:92dvh;overflow:auto;border-radius:20px 20px 0 0;padding:16px 16px calc(16px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:12px}
.sheet>*{flex-shrink:0}
.sheet h2{margin:0;font-family:'Cormorant Garamond',serif;font-size:26px}
/* крестик в шапке окна: закрыть можно всегда, даже если внизу нет кнопки */
.sheet-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;position:sticky;top:-16px;z-index:2;margin:-16px -16px 0;padding:16px 16px 6px;background:var(--cream)}   /* top:-16px: липнет к самому краю окна, а не к краю внутри отступа (иначе шапка наезжала на первую строку) */
.sheet-x{flex:none;width:40px;height:40px;border-radius:12px;border:1px solid var(--line);background:var(--white);font-size:18px;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text)}

#toast{position:fixed;left:50%;bottom:calc(var(--navh) + 30px);transform:translateX(-50%) translateY(20px);background:var(--dark);color:var(--on-dark);padding:12px 18px;border-radius:14px;font-size:14px;opacity:0;pointer-events:none;transition:.25s;z-index:50;width:max-content;max-width:90%;text-align:center}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
#toast.bad{background:var(--red)}
#toast.act{pointer-events:auto}
.toast-act{margin-left:8px;min-height:36px;padding:0 14px;border:1.5px solid #F7EEDC;border-radius:10px;background:transparent;color:#F7EEDC;font:700 14px inherit;font-family:inherit}
.empty{text-align:center;color:var(--muted);padding:24px 0}
hr.sep{border:none;border-top:1px solid var(--line);width:100%;margin:0}
details>summary{min-height:44px;display:flex;align-items:center;font-weight:700;cursor:pointer}
.setrow{display:flex;align-items:center;gap:10px;background:var(--white);border:1px solid var(--line);border-radius:12px;padding:8px 10px}
.setrow.dis{opacity:.45}

.setrow .smallbtn{padding:0 10px;font-size:14px;white-space:nowrap}
.setrow .grow{overflow:hidden;text-overflow:ellipsis}

.busy{opacity:.55;pointer-events:none;position:relative}
.busy::after{content:' …';white-space:pre}
.scheme.edit .tbl{user-select:none}.scheme.edit .tbl.sel{outline:3px solid #B8893B}
.floors{display:flex;gap:8px;margin:8px 0}
html,body{overscroll-behavior-y:none}
.ptr{position:fixed;top:0;left:50%;z-index:60;background:var(--dark);color:var(--on-dark);padding:8px 16px;border-radius:999px;font-size:14px;font-weight:700;pointer-events:none;white-space:nowrap;transition:opacity .15s}
.top{position:relative}
.helpbtn{position:absolute;top:calc(9px + env(safe-area-inset-top));right:14px;width:28px;height:28px;padding:0;border-radius:50%;border:1px solid rgba(247,238,220,.32);background:rgba(247,238,220,.08);color:rgba(247,238,220,.72);font:700 14px/1 'Manrope',system-ui,sans-serif;cursor:pointer;z-index:2;display:flex;align-items:center;justify-content:center}
.helpbtn:active{background:rgba(247,238,220,.2);color:#F7EEDC}
@media (display-mode: standalone){.helpbtn{top:max(calc(9px + env(safe-area-inset-top)),56px)}}
body.viewing .helpbtn{top:9px}
.help-list{margin:0;padding-left:20px;display:grid;gap:10px;font-size:16px}
.top::before{content:'';display:block;height:36px;margin-bottom:2px;background:url(/icons/logo.png) center center/contain no-repeat;opacity:.95}
/* запас под строку состояния: на некоторых iPhone env() иногда отдаёт 0 и логотип уезжает под часы */
@media (display-mode: standalone){.top{padding-top:max(calc(14px + env(safe-area-inset-top)),62px)}}

.deco{position:absolute;display:grid;place-items:center;font-size:8px;font-weight:700;letter-spacing:.08em;color:#8A7B66;pointer-events:none;overflow:hidden;white-space:nowrap}
.deco.sofa{background:#E8DCC2;border-radius:4px;writing-mode:vertical-rl}
.deco.window{background:#BFD6E4;border-radius:2px}
.deco.oval{border-radius:15px;border:1px dashed #B8A98C;background:var(--tint-soft);transform:rotate(-20deg)}

/* масштаб зала: линейка и подпись на схеме */
.scalebar{position:absolute;left:8px;bottom:10px;height:0;border-top:3px solid #6B4A33;pointer-events:none}
.scalebar::before,.scalebar::after{content:'';position:absolute;top:-7px;width:0;height:11px;border-left:2px solid #6B4A33}
.scalebar::before{left:0}.scalebar::after{right:0}
.scaletxt{position:absolute;left:8px;bottom:14px;font-size:10px;font-weight:700;color:#6B4A33;pointer-events:none;margin-left:2px;transform:translateY(-4px)}
/* рисунок зала (стены, двери, окна, диваны, чайный стол, телевизор): слой под столами. Для показа он прозрачен для нажатий; в редакторе поверх лежат «ловушки» нажатий (.px) */
.planlayer{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none}
.planlayer .plansvgbox{position:absolute;left:0;top:0;pointer-events:none}
.planlayer .planproxies{position:absolute;left:0;top:0;width:100%;height:100%;display:none}
.planlayer.active .planproxies{display:block}
.planlayer .px{position:absolute;box-sizing:border-box;pointer-events:auto;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}
.planlayer .pxbg{left:0;top:0;width:100%;height:100%;touch-action:pan-y pinch-zoom}
.planlayer .pxhall{touch-action:pan-y pinch-zoom;cursor:pointer}
.planlayer .pxroom,.planlayer .pxi,.planlayer .pxo,.planlayer .pxc{touch-action:none;cursor:grab}
.planlayer .pxc{width:36px;height:36px;margin:-18px 0 0 -18px;border-radius:50%}
.planlayer .pxm{width:26px;height:26px;margin:-13px 0 0 -13px;padding:0;border-radius:50%;border:2px solid #B8893B;background:var(--white);color:#8A6420;font-size:17px;font-weight:800;line-height:1;display:grid;place-items:center;touch-action:manipulation;box-shadow:0 1px 3px rgba(0,0,0,.25)}
.scheme.hasplan{border-radius:5px}
.scheme.edit.planmode .tbl{pointer-events:none;opacity:.38}
.scheme.edit.planmode .tbl.sel{outline:none}
.tbl.tiny b{font-size:11px}.tbl.tiny small{font-size:8px}
.tbl.micro b{font-size:9px}.tbl.micro small{display:none}.tbl.micro:not(.round){border-radius:4px}
.modechips{display:flex;gap:8px;margin:0 0 8px}.modechips .chip{flex:1 1 0;padding:0 8px;font-size:14px;white-space:nowrap}.modechips .chip.off{opacity:.5}
.hall-tabs{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px}
.hall-tabs .chip{white-space:nowrap}
.step-h{display:flex;align-items:center;gap:10px;margin:18px 0 8px;font-weight:800;font-size:17px;color:var(--text)}
.step-h i{font-style:normal;display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--dark);color:var(--on-dark);font-size:14px}

details.addbox{border:1px solid var(--line);border-radius:14px;background:var(--white);padding:0 12px}
details.addbox>summary{min-height:50px;display:flex;align-items:center;font-weight:800;font-size:16px;color:var(--text);cursor:pointer;list-style:none}
details.addbox>summary::-webkit-details-marker{display:none}
details.addbox[open]>summary{border-bottom:1px solid var(--line);margin-bottom:10px}
details.addbox>.card{border:none;padding:0 0 12px;background:transparent;box-shadow:none}

.stepbtn{min-width:48px;padding:0;font-size:22px;line-height:1}
.hall-tabs .chip{padding:0 11px;font-size:14px}

/* Настройки: сворачиваемые разделы */
details.sect{background:var(--white);border:1px solid var(--line);border-radius:14px;margin:10px 0;overflow:hidden}
details.sect>summary{min-height:56px;display:flex;align-items:center;padding:0 12px;font-weight:800;font-size:17px;color:var(--text);cursor:pointer;list-style:none}
details.sect>summary::-webkit-details-marker{display:none}
details.sect>summary .sect-head{display:flex;flex-direction:column;gap:2px;padding:8px 0;min-width:0}
details.sect>summary .sect-hint{font-size:13px;font-weight:600;color:var(--muted)}
details.sect>summary::after{flex:none}
.kgroup{display:grid;gap:0;margin-top:6px}
.kgroup>.h{margin:6px 0 0}
details.sect>summary::after{content:'›';margin-left:auto;padding-left:8px;font-size:26px;color:var(--muted);transform:rotate(90deg);transition:transform .15s}
details.sect[open]>summary::after{transform:rotate(-90deg)}
details.sect[open]>summary{border-bottom:1px solid var(--line)}
details.sect>.sect-body{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;padding:8px;background:var(--cream)}
details.sect>.sect-body>.h:first-child{margin-top:0}
/* Экран «Ещё»: все строки одного вида и через одинаковый промежуток. › открывает экран, ⌄ раскрывает раздел на месте */
.page.menu{gap:8px}
.page.menu details.sect{margin:0}
.page.menu>.h{margin:12px 2px 0}
.mrow{display:flex;align-items:center;width:100%;min-height:56px;padding:0 12px;background:var(--white);border:1px solid var(--line);border-radius:14px;color:var(--text);font:inherit;font-weight:800;font-size:17px;text-align:left;text-decoration:none;cursor:pointer}
.mrow .sect-head{display:flex;flex-direction:column;gap:2px;padding:8px 0;min-width:0}
.mrow .sect-hint{font-size:13px;font-weight:600;color:var(--muted)}
.mrow::after{content:'›';flex:none;margin-left:auto;padding-left:8px;font-size:26px;color:var(--muted)}
details.sect>.sect-body>.mrow,details.sect>.sect-body>div>.mrow{background:var(--white)}
.sect-hint.ell{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mm,.mm-list{display:grid;gap:8px}
.mm-search{width:100%;min-height:48px;padding:0 14px;border:1px solid var(--line);border-radius:14px;background:var(--white);font:inherit;font-size:16px;color:var(--text)}
.mm-search:focus{outline:2px solid var(--gold);outline-offset:1px}
@keyframes sxflash{0%,70%{box-shadow:0 0 0 3px var(--gold),0 0 20px rgba(184,137,59,.6)}100%{box-shadow:0 0 0 0 transparent,0 0 0 transparent}}
.sx-hit{animation:sxflash 2.8s ease-out;border-radius:10px}
.mm-h{margin:6px 2px 0;font-size:13px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}

details.morewarn>summary{min-height:44px;display:flex;align-items:center;padding:0 12px;border-radius:12px;background:var(--sand);color:var(--ink-brown);font-weight:700;font-size:14px;cursor:pointer;list-style:none}
details.morewarn>summary::-webkit-details-marker{display:none}
details.morewarn>summary::after{content:'▾';margin-left:auto}
details.morewarn[open]>summary::after{content:'▴'}

/* при прокрутке в приложении на экране «Домой» текст не должен наезжать на часы и батарею: под строкой состояния появляется полоска цвета фона */
@media (display-mode: standalone){html.scrolled body::before{content:'';position:fixed;top:0;left:0;right:0;height:max(env(safe-area-inset-top),47px);background:var(--cream);z-index:55;pointer-events:none}}

/* блок «Сумма» в брони: все цифры рядом, итог крупно */
.sum{background:var(--white);border:2px solid var(--dark);border-radius:14px;padding:12px 14px;display:flex;flex-direction:column;gap:8px}
.sum .ln{display:flex;justify-content:space-between;align-items:baseline;gap:10px;font-size:15px}
.sum .ln.big{font-size:24px;font-weight:800;border-top:1px solid var(--line);padding-top:8px;margin-top:2px}
.sum .ln.avg{color:var(--ink-brown)}
.sum .rest{background:var(--green-bg);color:var(--green-deep);border-radius:12px;padding:10px 12px;display:flex;justify-content:space-between;align-items:baseline;gap:10px;font-size:18px;font-weight:800}
.sum .rest.bad{background:var(--red-bg);color:var(--red-deep)}
/* обслуживание и скидка: число и переключатель «% | ₽» (public/js/feefield.js) */
.fees{display:flex;flex-direction:column;gap:10px}
.fee{display:flex;flex-direction:column;gap:6px;min-width:0}
.fee .fh{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:14px;font-weight:600;color:var(--muted)}
.unitseg{display:inline-flex;flex:none;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--white)}
.unitseg button{border:0;background:transparent;min-width:44px;min-height:36px;padding:0 10px;font-size:15px;font-weight:700;color:var(--text)}
.unitseg button+button{border-left:1px solid var(--line)}
.unitseg button.on{background:var(--dark);color:var(--on-dark)}
.barsum{display:flex;justify-content:space-between;gap:10px;font-weight:700;font-size:15px}

/* строки-действия на карточке брони: значок, название, пояснение */
.acts{display:flex;flex-direction:column;gap:8px}
.act{display:flex;align-items:center;gap:12px;width:100%;min-height:56px;padding:8px 12px;border:1px solid var(--line);border-radius:12px;background:var(--white);color:var(--text);text-decoration:none;text-align:left;font:inherit;cursor:pointer}
.act .ic{font-size:22px;width:28px;text-align:center;flex:none}
.act.primary{background:var(--dark);border-color:var(--dark);color:var(--on-dark);min-height:64px;box-shadow:0 2px 0 rgba(0,0,0,.18)}
.act.primary small{color:#E3D3B5}
.act .go{margin-left:auto;font-size:30px;line-height:1;opacity:.85;flex:none}
.act b{display:block;font-size:16px}
.act small{display:block;color:var(--muted);font-size:14px;line-height:1.25;font-weight:400}

/* чаты: панель выезжает слева поверх любого экрана (вне #app, поэтому набранное в брони не теряется) */
.chatbg{position:fixed;inset:0;z-index:15;background:rgba(40,24,12,0);pointer-events:none;transition:background .2s}
.chatbg.on{background:rgba(40,24,12,.5);pointer-events:auto}
.chatpanel{position:absolute;top:0;left:0;bottom:0;width:min(560px,100vw);background:var(--cream);display:flex;flex-direction:column;transform:translateX(-102%);transition:transform .22s ease;box-shadow:4px 0 24px rgba(0,0,0,.25);overflow:hidden}
.chatbg.on .chatpanel{transform:none}
@media (prefers-reduced-motion:reduce){.chatpanel,.chatbg{transition:none}}
.chead{background:var(--dark);color:var(--on-dark);padding:calc(10px + env(safe-area-inset-top)) 10px 10px 12px;display:flex;align-items:center;gap:8px;flex:none}
.chead .ctitlebox{flex:1;min-width:0;display:flex;flex-direction:column}
.chead .chtitle{font-family:'Cormorant Garamond',Georgia,serif;font-size:24px;line-height:1.1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chead .chsub{font-size:13px;color:#D9C7A8;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chead .cbtn{width:40px;height:40px;font-size:18px;flex:none}
.chead .cnew{background:transparent;border-color:#6B4A33;color:#F7EEDC;min-height:40px}
.csearchbox{padding:10px 12px 0;flex:none}
.csearch{width:100%}
.cfilters{padding:10px 12px;flex:none}
.cfilters .chip{flex:none;min-height:36px}
.clist{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:0 0 calc(12px + env(safe-area-inset-bottom));display:flex;flex-direction:column}
.clist>.notice{margin:0 12px 8px}
.crow{display:flex;align-items:center;gap:12px;width:100%;padding:12px;border:none;border-bottom:1px solid var(--line);background:transparent;text-align:left;min-height:68px}
.crow:active{background:var(--sand)}
.crow .cbody{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.crow .ctop{display:flex;gap:8px;align-items:baseline}
.crow .ctitle{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:16px}
.crow .ctime{color:var(--muted);font-size:13px;flex:none}
.crow .cprev{color:var(--muted);font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cbadge{min-width:22px;height:22px;border-radius:11px;background:var(--red);color:#fff;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;padding:0 6px;flex:none}
.cbadge.mute{background:#B9A68A}
.av{width:44px;height:44px;border-radius:50%;background:var(--sand);color:var(--text);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:15px;flex:none}
.av.topic{background:var(--dark);color:var(--on-dark);font-size:20px}
.av.order{background:var(--gold);color:#2A1A0E;font-size:20px}
.clist .empty{padding:32px 24px}

.cbanner{display:block;padding:10px 14px;background:var(--sand);color:var(--text);font-weight:700;font-size:14px;text-decoration:none;border-bottom:1px solid var(--line);flex:none}
.cev{display:flex;align-items:center;gap:10px;width:100%;padding:10px 14px;border:0;border-bottom:1px solid var(--line);background:var(--sand);color:var(--text);text-decoration:none;text-align:left;font:inherit;cursor:pointer;flex:none}
.cev.static{cursor:default}
.cev .evi{font-size:22px;flex:none}
.cev .evt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.cev .evt b{font-size:15.5px;line-height:1.25;overflow-wrap:anywhere}
.cev .evt small{font-size:13.5px;line-height:1.3;color:#6b5240;overflow-wrap:anywhere}
.cev .evgo{flex:none;font-weight:800;font-size:13px;white-space:nowrap}
.cev.gone .evt b{text-decoration:line-through}
.cev-link{background:var(--white);border-bottom-style:dashed}
.cmsgs{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:10px 8px 14px;display:flex;flex-direction:column;gap:10px}   /* выпуск 238: поля 8px вместо 12, чат на всю ширину экрана (как в Telegram и WhatsApp) */
.cmore{align-self:center;min-height:36px}
.cday{align-self:center;font-size:13px;font-weight:700;color:var(--muted);background:var(--sand);border-radius:10px;padding:2px 10px;margin:6px 0 2px}
.cev{align-self:stretch;font-size:14px;color:var(--ink-brown);background:var(--sand);border-radius:10px;padding:6px 10px;line-height:1.35}
.cev b{display:block}
.cev small{color:var(--muted)}
.cmsg{display:flex;flex-direction:column;align-items:flex-start;max-width:92%;gap:3px}
.cmsg.mine{align-self:flex-end;align-items:flex-end}
.cmsg .cwho{background:none;border:none;padding:2px 0;font-weight:700;font-size:14px;color:var(--text);min-height:28px;text-align:left}
.cmsg .cwho small{font-weight:400;color:var(--muted)}
.cmsg .cment{font-size:13px;font-weight:700;color:var(--red-ink)}
.cmsg .cbub{background:var(--white);border:1px solid var(--line);border-radius:4px 18px 18px 18px;padding:8px 12px 6px;font-size:17px;line-height:1.38;white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere;-webkit-user-select:text;user-select:text}
.cmsg.mine .cbub{background:var(--dark);border-color:var(--dark);color:var(--on-dark);border-radius:18px 4px 18px 18px}
.cmsg .cat{font-size:12px;color:var(--muted)}
.ccomp{flex:none;border-top:1px solid var(--line);background:var(--white);padding:8px 8px calc(8px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:6px}
.cmentions{display:flex;gap:6px;flex-wrap:wrap}
.cmentions:empty{display:none}
.cquick{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none}
.cquick::-webkit-scrollbar{display:none}
.cquick .chip{flex:none;min-height:38px;font-size:14px;padding:0 13px}
.crow2{display:flex;gap:8px;align-items:flex-end}
.cinput{flex:1;min-height:44px;max-height:120px;resize:none;border-radius:22px!important;padding:10px 14px!important;line-height:1.3}
.csend{width:46px;height:46px;border-radius:50%;border:none;background:var(--dark);color:var(--on-dark);font-size:18px;flex:none}
.cro{flex:none;border-top:1px solid var(--line);background:var(--sand);padding:10px 12px calc(10px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:8px}
.pplist{display:flex;flex-direction:column;max-height:48dvh;overflow-y:auto}
.prow{display:flex;align-items:center;gap:10px;padding:8px 4px;border:none;border-bottom:1px solid var(--line);background:transparent;text-align:left;width:100%;min-height:52px}
.prow.on{background:var(--green-bg)}
.prow .tick{width:24px;color:var(--green-ink);font-weight:800;text-align:center}
.prow .av{width:36px;height:36px;font-size:14px}
@media (min-width:700px){.chatpanel{border-radius:0 16px 16px 0}}

/* чаты, этап 2: вложения, голосовые, согласование */
.cmsg .cbub .ctext{white-space:pre-wrap}
.cmsg .cbub.media{padding:6px}
.cbub .cfiles{display:flex;flex-direction:column;gap:6px;min-width:0;white-space:normal}
.cbub .ctext + .cfiles{margin-top:6px}
.cmore{align-self:center}
.cimg{display:block;width:240px;max-width:100%;padding:0;border:none;border-radius:10px;overflow:hidden;background:var(--sand);aspect-ratio:4/3}
.cimg img{display:block;width:100%;height:100%;object-fit:cover}
.cvid{display:flex;flex-direction:column;gap:4px;width:240px;max-width:100%}
.cvid video{width:100%;max-height:340px;border-radius:10px;background:#000}
.cdl{font-size:13px;color:inherit;opacity:.8;word-break:break-all}
/* голосовое сообщение (выпуск 187, public/js/voiceplay.js): кнопка, дорожка с бегунком, «прошло / всего», скорость.
   Цвета заданы переменными: в светлом пузыре тёмная кнопка, в тёмном пузыре «своих» сообщений светлая, поэтому дорожка и время видны везде */
.vplay{--vp-ink:var(--dark);--vp-on:#F7EEDC;--vp-rail:rgba(58,36,22,.28);--vp-fill:var(--gold);--vp-text:var(--muted);--vp-bad:var(--red);
  display:grid;grid-template-columns:44px minmax(0,1fr);grid-template-areas:"btn track" "btn meta" "fail fail";column-gap:10px;align-items:center;
  width:250px;max-width:100%;min-width:0;white-space:normal;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.cmsg.mine .vplay{--vp-ink:#F7EEDC;--vp-on:var(--dark);--vp-rail:rgba(247,238,220,.42);--vp-fill:#E9C46A;--vp-text:#E6D6B8;--vp-bad:#F6BDB0}
.vp-btn{grid-area:btn;align-self:center;position:relative;display:block;width:44px;height:44px;padding:0;border:none;border-radius:50%;background:var(--vp-ink);color:var(--vp-on)}
.vp-btn::before{content:"";position:absolute;left:50%;top:50%;width:16px;height:18px;margin:-9px 0 0 -6px;background:currentColor;clip-path:polygon(0 0,100% 50%,0 100%)}
.vplay.on .vp-btn::before{width:14px;height:16px;margin:-8px 0 0 -7px;clip-path:none;background:linear-gradient(90deg,currentColor 0 36%,transparent 36% 64%,currentColor 64% 100%)}
.vplay.bad .vp-btn::before{width:18px;height:18px;margin:-9px 0 0 -9px;clip-path:none;background:none;border:2.5px solid currentColor;border-right-color:transparent;border-radius:50%}
@media (prefers-reduced-motion:no-preference){.vplay.load .vp-btn{animation:vp-pulse 1s ease-in-out infinite}}
@keyframes vp-pulse{50%{opacity:.55}}
.vp-track{grid-area:track;display:flex;align-items:center;height:32px;min-width:0;padding:0 9px;touch-action:pan-y;cursor:pointer}
.vp-rail{position:relative;flex:1;height:5px;border-radius:3px;background:var(--vp-rail)}
.vp-fill{position:absolute;left:0;top:0;bottom:0;width:0;border-radius:3px;background:var(--vp-fill)}
.vp-knob{position:absolute;top:50%;left:0;width:16px;height:16px;margin:-8px 0 0 -8px;border-radius:50%;background:var(--vp-fill);box-shadow:0 1px 3px rgba(0,0,0,.4)}
.vplay.bad .vp-track{opacity:.45}
.vp-meta{grid-area:meta;display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0;padding-left:9px}
.vp-time{font-size:14px;line-height:1;font-variant-numeric:tabular-nums;color:var(--vp-text);white-space:nowrap}
.vp-rate{position:relative;flex:none;min-width:46px;height:26px;padding:0 8px;border:1.5px solid var(--vp-text);border-radius:13px;background:transparent;color:var(--vp-text);font-size:14px;font-weight:700;line-height:1;white-space:nowrap}
.vp-rate::after{content:"";position:absolute;top:-5px;bottom:-5px;left:-4px;right:-4px}
.vp-rate.fast{background:var(--vp-ink);border-color:var(--vp-ink);color:var(--vp-on)}
.vp-fail{grid-area:fail;padding:6px 2px 0;font-size:14px;line-height:1.3;color:var(--vp-bad)}
.vp-fail[hidden]{display:none}
.vp-fail a{color:inherit;font-weight:700;text-decoration:underline}
.vp-btn:focus-visible,.vp-rate:focus-visible,.vp-track:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.cfile{display:flex;align-items:center;gap:10px;min-width:180px;text-decoration:none;color:inherit;padding:4px 2px}
.cfile-ic{font-size:24px;flex:none}
.cfile b{display:block;font-size:14px;word-break:break-all}
.cfile small{display:block;opacity:.7;font-size:13px}
.cdec{font-weight:800;font-size:14px;margin-bottom:4px}
.cdec.approved{color:var(--green-ink)}
.cdec.rework{color:var(--red-ink)}
.cmsg.mine .cdec.approved{color:#C9E5AC}
.cmsg.mine .cdec.rework{color:#F6BDB0}

.capp{border:1px solid var(--line);border-radius:14px;padding:10px 12px;background:var(--white);display:flex;flex-direction:column;gap:8px;margin-top:4px;min-width:min(290px,100%);max-width:100%}
.capp.ok{background:var(--green-bg);border-color:var(--green-line)}
.capp.bad{background:var(--red-bg);border-color:#E3B2A8}
.capp.off{opacity:.65}
.capph{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:2px 10px}
.capph b{font-size:14px;white-space:nowrap}
.capps{font-size:14px;font-weight:700;text-align:right}
.capv{display:flex;flex-wrap:wrap;gap:6px}
.capvote{font-size:14px;padding:3px 9px;border-radius:10px;background:var(--cream);border:1px solid var(--line)}
.capvote.approved{background:var(--green-bg);border-color:var(--green-line)}
.capvote.rework{background:var(--red-bg);border-color:#E3B2A8}
.capbtns{display:flex;gap:8px;flex-wrap:wrap}
.capbtns .chip,.capp>.chip{min-height:42px;white-space:nowrap}
.capbtns .chip{flex:1 1 auto;padding:0 10px;font-size:14px}
.chip.okc{background:var(--green);border-color:var(--green);color:#fff}
.chip.badc{border-color:var(--red);color:var(--red-ink)}
.linkbtn{background:none;border:none;color:var(--muted);text-decoration:underline;font-size:14px;padding:6px 0;align-self:flex-start;min-height:32px}

.cicon{width:44px;height:44px;border-radius:50%;border:1px solid var(--line);background:var(--white);font-size:20px;flex:none;display:flex;align-items:center;justify-content:center;padding:0}
.cicon.attach{border:none;background:var(--sand)}
.csend.mic{background:var(--sand);color:var(--text);border:1px solid var(--line)}
.csend:disabled{opacity:.4}
.csend.busy{opacity:.6}
.cstage{display:flex;flex-direction:column;gap:6px}
.cstage:empty{display:none}
.cst{position:relative;display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:12px;padding:6px 6px 6px 8px;background:var(--cream);overflow:hidden}
.cst img{width:44px;height:44px;border-radius:8px;object-fit:cover;flex:none}
.cst-ic{width:44px;height:44px;display:grid;place-items:center;font-size:24px;background:var(--sand);border-radius:8px;flex:none}
.cst-body{flex:1;min-width:0;display:flex;flex-direction:column}
.cst-name{font-weight:700;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cst-st{color:var(--muted);font-size:13px}
.cst.err{border-color:var(--red);background:var(--red-bg)}
.cst-bar{position:absolute;left:0;bottom:0;height:3px;background:var(--gold);display:block}
.cst .cicon{width:36px;height:36px;font-size:16px;border:none;background:transparent}

.crdot{width:12px;height:12px;border-radius:50%;background:var(--red);animation:crp 1s ease-in-out infinite;flex:none}
@keyframes crp{50%{opacity:.25}}
/* запись голоса (выпуск 184): яркая полоса вместо поля ввода. Красная и с бегущей шкалой, значит звук идёт; серая, значит ещё нет; жёлтая, значит что-то не так */
.crec{flex:1;min-width:0;display:flex;flex-direction:column;gap:10px;padding:12px 14px;border-radius:18px;background:var(--dark);color:var(--on-dark);transition:background .2s}
.crec [hidden]{display:none!important}
.crec[data-state=rec],.crec[data-state=saving]{background:#B3261E;color:#fff}
.crec[data-state=check],.crec[data-state=failed],.crec[data-state=saved],.crec[data-state=error]{background:#FFF1CF;color:#4A3208;box-shadow:inset 0 0 0 1.5px #E0B34A}
.crec .crtop{display:flex;align-items:center;gap:16px;min-width:0;padding-left:4px}
.crec .crlabel{flex:1;min-width:0;font-size:17px;line-height:1.2}
.crec .crtm{flex:none;font-size:24px;font-weight:800;line-height:1;font-variant-numeric:tabular-nums;letter-spacing:.5px}
.crec .crdot{width:14px;height:14px;background:#C9B68F;animation:none}
.crec[data-state=rec] .crdot{background:var(--white);animation:crpulse 1.1s ease-out infinite}
.crec[data-state=saving] .crdot{background:var(--white);animation:none}
.crec[data-state=check] .crdot,.crec[data-state=failed] .crdot,.crec[data-state=saved] .crdot,.crec[data-state=error] .crdot{background:#C58A00}
@keyframes crpulse{0%{box-shadow:0 0 0 0 rgba(255,255,255,.8)}100%{box-shadow:0 0 0 9px rgba(255,255,255,0)}}
.crec .crslot{display:flex;align-items:center;height:40px}
.crec .crbars{flex:1;display:flex;align-items:center;justify-content:space-between;gap:3px;height:100%}
.crec .crbars i{flex:1 1 0;min-width:2px;max-width:7px;height:100%;border-radius:4px;background:currentColor;opacity:.95;transform:scaleY(.08);transition:transform .09s linear}
.crec[data-state=wait] .crbars i,.crec[data-state=tap] .crbars i{opacity:.35}
.crec .crprog{flex:1;height:8px;border-radius:4px;background:rgba(255,255,255,.22);overflow:hidden}
.crec .crprog i{display:block;height:100%;width:0;background:var(--pre);transition:width .15s linear}
.crec .crhint{font-size:14.5px;line-height:1.35;min-height:18px}
.crec[data-warn] .crhint{font-weight:800}
.crec .crbtns{display:flex;gap:8px;flex-wrap:wrap}
.crec .crbtn{flex:1 1 auto;min-height:48px;padding:0 16px;border-radius:24px;border:1.5px solid rgba(255,255,255,.6);background:transparent;color:inherit;font-weight:800;font-size:16px}
.crec .crbtn.go{flex:2 1 auto;background:var(--white);border-color:#fff;color:var(--text)}
.crec[data-state=rec] .crbtn.go{color:#B3261E}
.crec[data-state=check] .crbtn,.crec[data-state=failed] .crbtn,.crec[data-state=saved] .crbtn,.crec[data-state=error] .crbtn{border-color:#C9A24A;color:#4A3208}
.crec[data-state=check] .crbtn.go,.crec[data-state=failed] .crbtn.go,.crec[data-state=saved] .crbtn.go,.crec[data-state=error] .crbtn.go{background:var(--dark);border-color:var(--dark);color:var(--on-dark)}
.crec .crkeep{display:flex;flex-direction:column;gap:6px;min-width:0}
.crec .crplay{width:100%;height:40px;min-width:0}
.crec .crtech{font-size:12.5px;line-height:1.3;opacity:.75;overflow-wrap:anywhere}
.crec .crmore{display:flex;flex-wrap:wrap;gap:4px 16px}
.crec .crlink{background:none;border:0;padding:6px 0;font:inherit;font-size:14.5px;font-weight:700;color:inherit;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.crec .crbtn.busy{opacity:.6}
.ccomp.rec .cquick{display:none}
@media (prefers-reduced-motion:reduce){.crec[data-state=rec] .crdot{animation:none}.crec .crbars i{transition:none}}
.cvoice{display:flex;flex-direction:column;gap:8px}
.cvoice-ready{display:flex;align-items:center;gap:8px}
.cvoice-ready audio{flex:1;min-width:0}

.lbx{position:fixed;inset:0;z-index:70;background:rgba(0,0,0,.97);display:flex;align-items:center;justify-content:center;touch-action:none;overflow:hidden;overscroll-behavior:contain}   /* жесты (листание, щипок, двойное касание) обрабатывает сам просмотр, public/js/viewer.js: браузеру их не отдаём */
.lbx-bar{position:absolute;z-index:3;top:0;left:0;right:0;display:flex;align-items:center;gap:8px;padding:calc(10px + env(safe-area-inset-top)) 12px 10px;color:#fff;background:rgba(0,0,0,.72)}   /* тёмная полоса под кнопками: увеличенный светлый снимок не должен съедать белые «Скачать» и «Закрыть» */
.lbx-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}
.lbx-btn{min-height:40px;padding:0 14px;border-radius:12px;border:1px solid rgba(255,255,255,.4);background:transparent;color:#fff;font-weight:600;font-size:14px;text-decoration:none;display:flex;align-items:center}
.lbx-x{min-height:44px;padding:0 16px;font-size:16px;font-weight:700;white-space:nowrap;border-color:rgba(255,255,255,.75);background:rgba(255,255,255,.16)}   /* крестик с подписью: виден и на светлом снимке, и под большим пальцем */

.lbx img{max-width:100%;max-height:calc(100dvh - 110px);object-fit:contain;margin-top:40px;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-user-drag:none;transform-origin:center;will-change:transform}
.lbx img.zoomed{cursor:grab}
/* кнопки увеличения внизу по центру (выпуск 255): над снимком и под большим пальцем; «Целиком» видна, только когда снимок увеличен */
.lbx-zoom{position:absolute;z-index:3;left:0;right:0;bottom:calc(12px + env(safe-area-inset-bottom));display:flex;justify-content:center;gap:10px;pointer-events:none}
.lbx-zoom .lbx-btn{pointer-events:auto;min-width:52px;min-height:48px;justify-content:center;font-size:22px;background:rgba(0,0,0,.6);border-color:rgba(255,255,255,.6)}
.lbx-zoom .lbx-fit{font-size:15px;padding:0 16px}
/* Бухгалтер (выпуск 255): отменённое мероприятие приглушено, чтобы не путать с живыми */
.acc-off{opacity:.62}
/* Просмотр страницы поверх приложения (public/js/viewer.js, выпуск 237): сверху полоска с большой кнопкой «✕ Закрыть», ниже сама страница. Цвета свои, не от стиля приложения: это чужое окно */
.pv{position:fixed;inset:0;z-index:72;display:flex;flex-direction:column;background:#24150C;overscroll-behavior:contain}
.pv-bar{flex:none;display:flex;align-items:center;gap:12px;padding:calc(8px + env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) 8px max(12px,env(safe-area-inset-left));background:#24150C;color:#F7EEDC;border-bottom:1px solid rgba(188,124,57,.5)}
.pv-x{flex:none;min-height:44px;padding:0 18px;border-radius:12px;border:1px solid rgba(255,255,255,.75);background:rgba(255,255,255,.16);color:#fff;font-weight:700;font-size:16px;white-space:nowrap}
.pv-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;opacity:.9}
.pv-frame{flex:1;min-height:0;width:100%;border:0;background:#24150C}
html.frame .pv-bar{padding-top:58px}

/* месяц одним взглядом */
.datebtn{background:none;border:none;padding:0;text-align:left;color:inherit;min-width:0}
.datebtn h1{margin:0}
.caret{font-size:16px;opacity:.7}
.month{display:flex;flex-direction:column;gap:8px}
.mnav{display:flex;align-items:center;justify-content:space-between;gap:8px}
.mnav .iconbtn{background:var(--white);border-color:var(--line);color:var(--text)}
.mtitle{font-family:'Cormorant Garamond',Georgia,serif;font-size:24px}
.mgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.mwd{text-align:center;font-size:13px;font-weight:700;color:var(--muted);padding:2px 0}
.mcell{position:relative;aspect-ratio:1/.9;min-height:42px;border-radius:10px;border:1px solid transparent;background:var(--white);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:0;color:var(--text)}
.mcell.empty{background:none;border:none;pointer-events:none}
.mnum{font-size:15px;font-weight:700;line-height:1;min-width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%}
.mcnt{font-size:13px;font-weight:800;line-height:1}
.mcell.l0{background:var(--white);color:var(--muted)}
.mcell.l1{background:var(--pre)}
.mcell.l2{background:#EBCB7E}
.mcell.l3{background:#DDA94A}
.mcell.l4{background:#C28228}
.mcell.today .mnum{background:var(--dark);color:var(--on-dark)}
.mcell.sel{border-color:var(--dark);box-shadow:inset 0 0 0 2px var(--dark)}
.mcell.flag::after{content:'';position:absolute;top:4px;right:4px;width:9px;height:9px;border-radius:50%;background:var(--red);border:1.5px solid #fff}
.mlegend{display:flex;flex-direction:column;gap:4px;margin-top:6px;padding-top:8px;border-top:1px solid var(--line);line-height:1.3;font-size:13px}
.mscale{display:inline-flex;align-items:center;gap:4px}
.mscale i{display:inline-block;width:16px;height:16px;border-radius:5px;border:1px solid var(--line)}
.mscale i.l1{background:var(--pre)}.mscale i.l2{background:#EBCB7E}.mscale i.l3{background:#DDA94A}.mscale i.l4{background:#C28228}
.mdot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--red);vertical-align:middle}
.mday{display:flex;flex-direction:column;gap:8px;border-top:1px solid var(--line);padding-top:10px}
.mdayh{display:flex;align-items:center;gap:8px}
.mdayh b{font-size:18px}
.morder{display:flex;align-items:center;gap:10px;background:var(--white);border:1px solid var(--line);border-radius:12px;padding:8px 10px;text-decoration:none;color:inherit;min-height:52px}
.morder.flag{border-color:var(--red)}
.morder{flex-wrap:wrap}
.mo-why{flex:1 1 100%;color:var(--red-ink);font-size:14px;font-weight:600;line-height:1.3;padding-left:60px}
.mo-time{font-size:18px;min-width:50px}
.mo-main{flex:1;min-width:0;display:flex;flex-direction:column}
.mo-main>b,.mo-l1>b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mo-main small{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mo-main small.mo-sum{color:var(--text);font-weight:700}
.mact{gap:8px}
.mact .bigbtn{flex:1}

/* официант в форме брони */
.wsel{display:flex;flex-direction:column;gap:6px;padding-top:8px;border-top:1px solid var(--line)}
.pricediff{display:flex;flex-direction:column;gap:3px;background:var(--white);border:1px solid var(--green-line);border-radius:10px;padding:6px 10px}
.pricediff .up{color:var(--red-ink)}.pricediff .down{color:var(--green-ink)}
.pricediff .pd{display:flex;flex-direction:column}
/* что мешает сохранить: строка над кнопкой «Сохранить» */
.barwhy{display:block;width:100%;text-align:left;background:none;border:none;padding:0;font-size:14px;font-weight:700;line-height:1.35;color:var(--red-ink)}
/* значки связи рядом с именем: позвонить, написать */
.callic{display:inline-flex;align-items:center;justify-content:center;min-width:34px;height:34px;border-radius:17px;border:1px solid var(--line);background:var(--white);text-decoration:none;font-size:16px;line-height:1;padding:0;margin-left:6px;color:var(--text);flex:none}
.callic:active{background:var(--cream)}
.cmsg .cwhorow{display:flex;align-items:center;gap:2px;max-width:100%}
.cmsg .cmeta{display:flex;align-items:center;gap:10px}
.cmsg .creplybtn{background:none;border:none;padding:4px 2px;min-height:30px;font-size:12px;font-weight:700;color:var(--muted);cursor:pointer}
.cmsg .cquote{display:block;width:100%;text-align:left;background:rgba(184,137,59,.14);border:none;border-left:3px solid var(--gold);border-radius:6px;padding:4px 8px;margin:0 0 6px;font-size:14px;line-height:1.3;color:inherit;cursor:pointer;white-space:normal}
/* удаление сообщений: серая строка вместо удалённого у всех, кнопка «🗑», вопрос в окне выбора */
.cmsg.gone{max-width:92%}
.cmsg .cgone{border:1px dashed var(--line);border-radius:14px;padding:6px 12px;font-size:13px;color:var(--muted);font-style:italic;background:transparent}
.cmsg .cgone small{font-style:normal;font-size:11px}
.cmsg .cquote.gone{opacity:.65;font-style:italic}
.cmsg .creplybtn.del{padding:4px 8px;opacity:.8}
.cdelq{background:var(--white);border:1px solid var(--line);border-left:3px solid var(--gold);border-radius:8px;padding:8px 10px;font-size:14px;color:var(--text);word-break:break-word;margin-bottom:4px}
.cmsg .cquote b{display:block;font-size:13px}
.cmsg .cquote span{display:block;opacity:.8;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.cmsg.mine .cquote{background:rgba(255,255,255,.14);border-left-color:#E0B565}
.cmsg.flash .cbub{outline:3px solid var(--gold);outline-offset:1px}
.creply{max-width:100%;justify-content:flex-start;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;text-align:left}

/* когда приняли заявку (мелко, справа вверху карточки) и интервал времени */
/* одна подпись «принята … · имя» на всех карточках: очень мелко и бледно, чтобы не путать имя администратора с именем заказчика */
.stamp{display:inline-block;font-size:12px;line-height:1.3;color:var(--muted);opacity:.55;text-align:right;font-weight:400;font-style:normal}
.stamp.line{display:block;text-align:left;margin-top:2px}
.cside{display:flex;flex-direction:column;align-items:flex-end;gap:3px;min-width:0;max-width:44%}
.cside .tags{gap:6px;flex-wrap:wrap;justify-content:flex-end}
.tcell{display:flex;flex-direction:column;line-height:1.1;flex:0 0 auto}
.tcell.big .tc-from{font-size:20px}
.tcell.mo-time .tc-from{font-size:18px}
.tc-to{font-size:12px;font-weight:500;color:var(--muted);white-space:nowrap;margin-top:2px}
.mo-l1{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;min-width:0}
.mo-l1>b{flex:1 1 auto;min-width:0}
.mo-side{flex:0 1 auto;display:flex;flex-direction:column;align-items:flex-end;gap:3px;max-width:52%;min-width:0}
/* аренда зала: расчёт цены в форме брони */
.rentcard .ln{display:flex;justify-content:space-between;align-items:baseline;gap:10px;font-size:15px}
.rentcard .ln.big{font-size:22px;font-weight:800;border-top:1px solid var(--line);padding-top:8px;margin-top:2px}
.rentcard details{margin-top:4px}
/* результат расчёта аренды: рядом с полем «До скольки» и в карточке мероприятия */
.rentline{display:grid;gap:2px;padding:10px 12px;border-radius:12px;border:1px solid var(--line);background:var(--sand);color:var(--text)}
.rentline:empty{display:none}
.rentline.ok{background:#E8F3EA;border-color:#9CC9A6;color:#1F4D2B}
.rentline.warn{background:var(--tint-gold);border-color:#E5C275;color:#6B4A12}
.rentline .rl-h{font-weight:700;font-size:14px}
.rentline .rl-sum{font-size:26px;font-weight:800;line-height:1.1}
.rentline small{font-size:13.5px;line-height:1.35;opacity:.9}
.rentline .smallbtn{justify-self:start;margin-top:4px}
@keyframes rentflash{0%{box-shadow:0 0 0 0 rgba(47,140,80,.6)}70%{box-shadow:0 0 0 12px rgba(47,140,80,0)}100%{box-shadow:0 0 0 0 rgba(47,140,80,0)}}
@keyframes fieldflash{0%,35%{background:#d6eddc}100%{background:transparent}}
.rentline.flash{animation:rentflash .9s ease-out 2}
label.f.flash{animation:fieldflash 1.6s ease-out;border-radius:12px}
@media (prefers-reduced-motion:reduce){.rentline.flash,label.f.flash{animation:none}}

/* строки прайса аренды: «до N персон · цена ₽/ч · ×» помещаются в узкий экран */
.tierrow{display:flex;align-items:center;gap:8px;background:var(--white);border:1px solid var(--line);border-radius:12px;padding:8px 10px;min-width:0}
.tierrow .tl{flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:6px;white-space:nowrap}
.tierrow input{min-width:0;padding:0 8px}
.tierrow .tl input{width:62px;text-align:right}
.tierrow .tp{flex:none;display:flex;align-items:center;gap:4px}
.tierrow .tp input{width:84px;text-align:right}
.tierrow .xbtn{flex:none;width:36px;height:36px;padding:0;font-size:20px;line-height:1;color:var(--text)}

/* «@» в чатах: красное «вас зовут, ждут ответа» на всех уровнях */
.badge.hot,.cbadge.hot{background:#D3262F;box-shadow:0 0 0 2px rgba(211,38,47,.25);animation:hotpulse 1.8s ease-in-out infinite}
.cbadge.hot{min-width:30px}
@keyframes hotpulse{0%,100%{box-shadow:0 0 0 2px rgba(211,38,47,.25)}50%{box-shadow:0 0 0 6px rgba(211,38,47,.12)}}
@media (prefers-reduced-motion:reduce){.badge.hot,.cbadge.hot{animation:none}}
.crow.hot{background:#FDECEA;box-shadow:inset 4px 0 0 #D3262F}
.crow .cmention{color:#B3151D;font-weight:800;font-size:13px}
.cmsg .cment.me{color:#B3151D;font-size:14px}
.cmsg .cbub.tome{border-color:#D3262F;box-shadow:0 0 0 2px rgba(211,38,47,.18);background:#FFF4F2}
.cmsg .creplybtn.hot{color:#B3151D}
.atm{font-weight:800;color:#8A4B00;background:rgba(184,137,59,.22);border-radius:6px;padding:0 3px}
.cmsg.mine .atm{color:#FFE2A8;background:rgba(255,255,255,.16)}
.ccomp{position:relative}
.atpop{display:none;position:absolute;left:8px;right:8px;bottom:calc(100% + 4px);background:var(--white);border:1px solid var(--line);border-radius:14px;box-shadow:0 8px 28px rgba(40,24,12,.28);max-height:min(46vh,300px);overflow-y:auto;z-index:5;padding:4px}
.atpop.on{display:block}
.atitem{display:flex;align-items:center;gap:10px;width:100%;min-height:48px;padding:6px 10px;border:none;border-radius:10px;background:transparent;text-align:left}
.atitem.on,.atitem:active{background:var(--sand)}
.atitem .grow{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cquick .chip.hotchip{border-color:#D3262F;color:#B3151D;font-weight:800}
#mbanner{position:fixed;left:8px;right:8px;top:calc(8px + env(safe-area-inset-top));max-width:504px;margin:0 auto;z-index:58;display:none;align-items:stretch;background:#D3262F;color:#fff;border-radius:14px;box-shadow:0 8px 24px rgba(120,10,16,.45);overflow:hidden}
#mbanner.on{display:flex;animation:mbin .25s ease-out}
@keyframes mbin{from{transform:translateY(-14px);opacity:0}to{transform:none;opacity:1}}
#mbanner .mb-main{flex:1;min-width:0;text-align:left;background:transparent;border:none;color:#fff;padding:10px 4px 10px 14px;display:flex;flex-direction:column;gap:1px}
#mbanner .mb-main b{font-size:15px}
#mbanner .mb-main span{font-size:14px;opacity:.95;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#mbanner .mb-x{flex:none;width:44px;background:rgba(0,0,0,.16);border:none;color:#fff;font-size:16px}

/* «Идёт сейчас» / «начало через …» на карточке брони */
.live{font-weight:700}
.live.now{color:var(--green-ink)}
.live.soon{color:var(--gold-deep)}
.daysum{font-size:14px;color:var(--muted);padding:2px 2px 0}
.daysum b{color:var(--text)}
.daysum .warn{color:var(--gold-deep);font-weight:700}
.daysum .ok{color:var(--green-ink)}

/* «Следующий шаг» на экране брони */
.nextstep{display:grid;gap:6px;background:var(--white);border:1px solid var(--line);border-left:5px solid var(--gold);border-radius:14px;padding:12px 14px}
.nextstep .ns-h{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.nextstep .ns-t{display:flex;align-items:center;gap:8px;font-size:17px;line-height:1.25}
.nextstep .ns-i{font-size:22px}
.nextstep .bigbtn{margin-top:4px}
.nextstep.ok{border-color:var(--green-line);border-left-color:var(--green);background:var(--green-bg);gap:2px;padding:8px 14px}
.nextstep.ok .ns-t{font-size:15px}
.nextstep.ok .ns-i{font-size:18px}

/* чаты: «кто прочитал» и быстрые реакции */
.cmsg .cread{background:none;border:none;padding:2px 0;min-height:28px;font-size:13px;line-height:1.25;color:var(--muted);text-align:right;cursor:pointer;max-width:100%}
.cmsg .cread.some{color:#7A5A1E}
.cmsg .cread.all{color:#2F7A3E;font-weight:700}
.cmsg .creacts{display:flex;flex-wrap:wrap;gap:4px;margin-top:2px;align-items:center}
.cmsg .creact{border:1px solid var(--line);background:var(--white);border-radius:999px;padding:0 11px;min-height:32px;font-size:13px;color:var(--text);cursor:pointer}
.cmsg .creact.mine{background:rgba(184,137,59,.2);border-color:var(--gold);font-weight:700}
.cmsg .creactpick{display:flex;flex-wrap:wrap;gap:5px;margin-top:2px}
.cmsg .creactpick button{min-height:42px;padding:0 11px;border-radius:999px;border:1px solid var(--dark);background:var(--white);color:var(--text);font-weight:700;font-size:14px;cursor:pointer;white-space:nowrap}
.cmsg .creactpick button.on{background:var(--dark);color:var(--on-dark)}
.cmsg.toMe .creactpick button{border-color:#B3151D;color:#B3151D}

/* чаты: закреплённые сообщения и поиск */
.cpins{display:flex;align-items:center;gap:6px;padding:2px 10px;background:#FFF3D1;border-bottom:1px solid var(--line);flex:none}
.cpins .cpin{flex:1;min-width:0;display:flex;gap:6px;align-items:center;text-align:left;background:none;border:none;padding:0;font:inherit;font-size:14px;color:var(--text);min-height:44px;cursor:pointer}
.cpins .cpin-t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.cpins .cpin-more{flex:none;min-width:44px;min-height:40px;border:1px solid var(--line);border-radius:10px;background:var(--white);font:inherit;font-size:14px;font-weight:700;color:var(--text);cursor:pointer}
.cmsg .creplybtn{white-space:nowrap}
.cmsg .creplybtn.pin.on{background:#FFE7A6;border-radius:8px;padding:4px 8px}

/* «Что сейчас» (официант, кухня) */
.nowcard{gap:10px;padding:16px;border:2px solid var(--dark);background:var(--white)}
.nowcard.soon{border-color:#E0A23A}
.now-time{font-family:'Cormorant Garamond',serif;font-size:44px;line-height:1;color:var(--text)}
.now-title{font-size:22px;line-height:1.2}
.now-sub{font-size:16px;color:var(--ink-brown)}
.now-notes{display:grid;gap:6px}
.now-notes .notice{font-size:16px}
.now-items{display:grid;gap:3px;font-size:17px;font-weight:600;padding:8px 10px;background:#FAF6EC;border-radius:12px}
.now-empty{font-size:18px;font-weight:700;padding:6px 0}
.now-next{display:grid;gap:6px}

/* «Гости» */
.guestrow{width:100%;font:inherit;color:inherit}
.gstats{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.gstat{display:grid;gap:2px;padding:10px 12px;border-radius:12px;background:var(--white);border:1px solid var(--line)}
.gstat small{font-size:13px;color:var(--muted)}
.gstat b{font-size:19px}

/* «Что готовить» у шефа и поваров. Только div: класс kb ставится ещё и на html, пока человек печатает (viewport.js), и правило без тега превращало страницу в сетку */
div.kb{display:grid;gap:10px}
.kb-head{display:grid;gap:2px}.kb-head b{font-size:16px}
.kb-card{gap:8px;border:2px solid #E0A23A;background:var(--white)}.kb-card.lv-ok{border-color:#B9C9A3;background:var(--green-bg)}.kb-card.lv-bad{border-color:#A63A2B}.kb-card.focus{box-shadow:0 0 0 3px rgba(184,137,59,.45)}
.kb-title{font-size:17px}.kb-title b{font-size:24px;margin-right:2px}
.kb-when{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.kb-when span{background:#F7EFDD;border-radius:10px;padding:6px 8px;display:flex;flex-direction:column;min-width:0}.kb-when small{font-size:12px;letter-spacing:.05em;color:var(--muted)}.kb-when b{font-size:20px;line-height:1.1}.kb-when b.kb-in{font-size:14px;line-height:1.25}
.kb-bar{height:8px;background:#DDE6CF;border-radius:6px;overflow:hidden}.kb-bar i{display:block;height:100%;background:#3E6F4A}
.kb-sec{display:grid;gap:6px}
.kb-cat{font-size:13px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#7a5a1d;background:#F1ECE0;border-radius:6px;padding:4px 8px;margin:8px 0 2px}
.kb-dish{display:flex;align-items:center;gap:10px;padding:6px 0;border-bottom:1px solid #EDE7D8;font-size:16px}.kb-dish.done .grow{color:#7a7a7a}
.kb-q{font-size:20px;white-space:nowrap}
.kb-warn{font-size:14px;color:var(--red-ink);font-weight:700}
.kb-comp{margin:3px 0 0;padding:0;list-style:none;font-size:14px;font-weight:400;color:var(--muted)}.kb-comp li{padding-left:12px;position:relative;line-height:1.3}.kb-comp li::before{content:'•';position:absolute;left:0}
.kb-chk{flex:none;width:44px;height:44px;border:2px solid #3b3b3b;border-radius:10px;background:var(--white);font-size:24px;line-height:1;color:#fff;cursor:pointer;padding:0}.kb-chk.on{background:#3E6F4A;border-color:#3E6F4A}
.kb-task{display:flex;align-items:center;gap:10px;padding:4px 0}.kb-task.done .kb-tt{color:#7a7a7a}.kb-tt{font-weight:600}
.kb-acts{display:grid;gap:8px;margin-top:4px}
.kb-tot{display:grid;gap:0}.kb-tot div{display:flex;justify-content:space-between;gap:8px;padding:4px 0;border-bottom:1px dotted #CFC7B4}.kb-tot b{white-space:nowrap}
.kb-prev div{margin-top:2px}
.kb-ways{display:grid;gap:8px;margin-top:6px}.kb-ways-h{font-size:16px}
.kb-way{display:flex;align-items:center;gap:12px;width:100%;min-height:56px;padding:8px 12px;border:2px solid #D8CFB8;border-radius:14px;background:var(--white);color:inherit;font:inherit;text-align:left;cursor:pointer}
.kb-way b{font-size:16px}.kb-way .small{line-height:1.25}.kb-way-i{font-size:26px;flex:none;width:34px;text-align:center}.kb-way-ok{flex:none;font-size:22px;color:#2f6b3c;font-weight:700;min-width:20px}
.kb-way.main{border-color:#3E6F4A;background:var(--green-bg)}.kb-way.ok{border-color:#9DBB8C;background:var(--green-bg)}.kb-way:disabled{opacity:.6}
.gd-pre{white-space:pre-wrap;word-break:break-word;background:var(--tint-soft);border:1px solid #E1D9C4;border-radius:12px;padding:10px 12px;font-family:inherit;font-size:14px;line-height:1.4;margin:0 0 8px}
.kb-urg{padding:2px 6px}.chips.locked{opacity:.55;pointer-events:none}
.kp-row{display:flex;align-items:center;gap:10px;min-height:48px}.kp-row input[type=time]{width:120px}
.feed-more{display:block;margin-top:4px;font-weight:700;color:#8A6422;font-size:14px}

/* «Что изменилось»: одно изменение в строке, меню под заголовком, только изменённое */
.chg{display:grid;gap:5px}
.chg .chg-t{display:block;margin-bottom:1px}
.chg .chg-r{line-height:1.4}
.chg .chg-r>b{display:inline}
.chg .chg-g>b{display:block}
.chg .chg-l{margin:2px 0 0 2px;padding-left:9px;border-left:2px solid rgba(91,63,43,.22);display:grid;gap:2px}
.notice.bad.chg .chg-l{border-left-color:rgba(122,42,29,.3)}
.cev .chg{margin-top:3px;font-size:13px}

/* единая карточка брони (docs/design.md): шапка «время · название · метка», серая строка, плашки, бледная подпись */
.ohead{align-items:flex-start;gap:10px}
.ohead .ot{min-width:0;font-size:17px;line-height:1.25;overflow-wrap:anywhere}
.ohead .oside{display:flex;flex-direction:column;align-items:flex-end;gap:3px;min-width:0;max-width:46%;margin-left:auto}
.ohead .oside .tags{gap:6px;flex-wrap:wrap;justify-content:flex-end}
.ohead .tcell.big .tc-from{font-size:20px}
.ometa{line-height:1.35}

/* «Посмотреть глазами сотрудника»: синяя полоса сверху на всех экранах, пока владелец в чужой роли (docs/viewas.md) */
#viewbar{position:fixed;top:0;left:0;right:0;max-width:520px;margin:0 auto;z-index:14;background:#1F4E79;color:#fff;display:flex;align-items:center;gap:8px;padding:calc(6px + env(safe-area-inset-top)) 10px 6px 12px;font-size:14px;line-height:1.25;box-shadow:0 2px 10px rgba(0,0,0,.3)}
#viewbar .vb-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
#viewbar .vb-t>*{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#viewbar .vb-t b{font-size:14px}
#viewbar .vb-t small{font-size:12px;opacity:.85}
#viewbar .vb-b{flex:none;border:1px solid rgba(255,255,255,.65);background:transparent;color:#fff;border-radius:999px;padding:0 12px;min-height:32px;font-size:14px;font-weight:600;cursor:pointer}
#viewbar .vb-exit{background:var(--white);color:#1F4E79;border-color:#fff}
body.viewing{padding-top:calc(50px + env(safe-area-inset-top))}
body.viewing .top{padding-top:14px}
@media (display-mode: standalone){body.viewing .top{padding-top:14px}}
.viewcard{flex-direction:row;align-items:center;gap:12px;text-align:left;cursor:pointer;border-color:#1F4E79;background:#EEF4FA}
.viewcard .vc-i{font-size:28px;line-height:1}
.vr-s{display:block;margin-top:2px}
.vlist{display:grid;gap:8px;margin:10px 0}
.vrow{display:flex;align-items:center;gap:10px;text-align:left;background:var(--white);border:1px solid var(--line);border-radius:12px;padding:12px;min-height:56px;cursor:pointer;width:100%}
.vrow.on{border-color:#1F4E79;background:#EEF4FA}
.vrow .vr-go{font-size:22px;color:var(--muted)}

/* «Бронь»: живая карточка-превью вверху формы и плашка «что изменится» над кнопкой сохранения */
.livecard{border-style:dashed;gap:6px}
.livecard .livecap{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);opacity:.8}
.livecard .livewhy{text-align:left;width:100%;border:0;font:inherit;font-size:14px;cursor:pointer}
.bar .barchg{max-height:26vh;overflow:auto;font-size:14px;padding:8px 10px}

/* Ближайшие дни официанта */
.updays{display:grid;gap:6px}.uphead{display:flex;align-items:center;gap:8px;margin-top:8px}.uphead a{font-weight:700;color:var(--text);text-decoration:none;font-size:15px}
.uprow{display:flex;align-items:center;gap:10px;padding:8px 12px;border:1px dashed var(--line);border-radius:12px;font-size:14px;color:var(--muted);text-decoration:none}.uprow b{font-size:15px;color:var(--text)}

/* ---------- Финансы: дашборд ЧИНАЯКЪ (перенос из Claude) ----------
   Карточки и шрифты как во всём приложении, цвета рядов графиков — как в исходном дашборде, чтобы категории узнавались. Классы только с префиксом f-. */
.fin{--surface-1:#fff;--text-primary:#3A2416;--text-secondary:#6B5440;--muted:#8A7A66;--grid:#EDE3CD;--baseline:#CDBB9C;--border:rgba(58,36,22,.14);
  --delta-up:#1F7A1F;--delta-down:#C23A3A;--warn:#A86A00;
  --series-1:#2A78D6;--series-2:#EB6834;--series-3:#1BAF7A;--series-4:#EDA100;--series-5:#E87BA4;--series-6:#008300;--series-7:#4A3AA7;--series-8:#E34948}
.fin-page{padding-top:8px}
/* «Финансы»: два ряда вкладок — группы и разделы выбранной группы; ряды липнут к верху экрана */
.f-nav{display:flex;flex-direction:column;gap:6px;position:sticky;top:0;z-index:4;background:var(--cream);margin:0 calc(-1 * var(--gut));padding:8px var(--gut) 6px}
.f-nav-row{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.f-nav-row::-webkit-scrollbar{display:none}
.f-nav .chip{flex:0 0 auto;white-space:nowrap}
.f-nav-groups{display:grid;gap:6px;overflow:visible}
.f-nav-groups .chip{min-width:0;min-height:38px;padding:0 4px;font-size:14.5px}
.f-nav-groups .chip.live::before{content:'';width:7px;height:7px;border-radius:50%;background:#2DB36B;margin-right:5px;flex:none}
.f-nav-sub{margin:0 calc(-1 * var(--gut));padding:0 var(--gut)}   /* ряд разделов прокручивается от края до края экрана, а не обрезается по полям */
.f-nav-sub .chip{min-height:34px;padding:0 12px;font-size:14px;background:transparent}
.f-nav-sub .chip.on{background:var(--sand-2);border-color:#B9A47E;color:var(--text)}
.fin-page.embedded{padding:0}
.fin .f-stage,.fin .f-block,.fin .f-sum{display:flex;flex-direction:column;gap:14px}
/* «Финансы»: добавленные разделы (расходы и гости, мероприятия, откуда гости, гиды) и блок в «Сводке» */
.f-extra>.page{padding-left:0;padding-right:0}
.f-toc-hint{display:block;font-size:13.5px;font-weight:400;color:var(--muted);line-height:1.35;margin-top:2px}
.fin .ex-ins{display:flex;flex-direction:column;gap:8px;margin:6px 0 4px}
.fin .ex-ins button{text-align:left;background:var(--white);border:1px solid var(--line);border-left-width:3px;border-radius:10px;padding:9px 12px;font:inherit;font-size:14.5px;line-height:1.45;color:var(--text-secondary);cursor:pointer}
.fin .ex-ins button.up{border-left-color:var(--delta-down)}
.fin .ex-ins button.info{border-left-color:var(--series-1)}
.fin .ex-ins button.warn,.fin .ex-ins button.note{border-left-color:var(--warn)}
.fin .ex-ins .ex-mark{font-weight:800;color:var(--text-primary)}
.fin .ex-pick select{width:100%;min-height:44px;border:1px solid var(--line);border-radius:10px;background:var(--white);font:inherit;font-size:15px;padding:0 10px;color:var(--text-primary)}
.fin .ex-chips{display:flex;gap:8px;overflow-x:auto;margin:6px -2px 4px;padding:2px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.fin .ex-chips::-webkit-scrollbar{display:none}
.fin .ex-chips .chip{flex:0 0 auto;white-space:nowrap;min-height:34px;font-size:14px;padding:0 12px}
.fin table.ex-table tr.ex-row{cursor:pointer}
.fin table.ex-table th:first-child,.fin table.ex-table td:first-child{min-width:7.2em;max-width:9.5em;font-size:14.5px}
.fin table.ex-table th{white-space:normal;vertical-align:bottom;line-height:1.25}
.fin table.ex-table tr.ex-row.on td{background:var(--sand)}
.fin table.ex-table td.ex-link{white-space:normal;min-width:11em;text-align:left;font-size:14px;color:var(--text-secondary)}
.fin .ex-flag-up{color:var(--delta-down);font-weight:700;font-size:13.5px}
.fin .ex-flag-missing{color:var(--warn);font-weight:700;font-size:13.5px}
.fin .ex-flag-meter{color:var(--muted);font-weight:600;font-size:13.5px}
.fin .f-block-head h2,.fin .f-head h2{font-family:'Cormorant Garamond',Georgia,serif;font-size:26px;line-height:1.12;font-weight:700;margin:0 0 6px}
.fin .f-sub{font-size:14.5px;color:var(--text-secondary);line-height:1.5}
.fin .f-eyebrow{font-size:13px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--gold-ink);margin-bottom:4px}
.fin .f-head p{font-size:15px;color:var(--text-secondary);line-height:1.55;margin:0}
.fin .f-asof{font-size:14.5px;color:var(--muted);background:var(--sand);border-radius:10px;padding:8px 12px}
.fin .f-asof.f-late{background:var(--pre);color:var(--warn);font-weight:600}
.fin .f-subhead{font-weight:800;font-size:16.5px;margin:8px 0 0}
.fin .f-card{background:var(--white);border:1px solid var(--line);border-radius:14px;padding:12px 12px 8px;min-width:0}
.fin .f-card-title{font-size:14.5px;font-weight:700;color:var(--text-secondary);margin-bottom:2px}
.fin .f-card-figure{font-size:22px;font-weight:800;margin-bottom:8px}
.fin .f-unit{font-size:14px;font-weight:500;color:var(--text-secondary)}
.fin .f-grid-2,.fin .f-grid-3,.fin .f-two-col,.fin .f-rec-grid{display:flex;flex-direction:column;gap:14px}
.fin .f-chart-box{position:relative;height:230px}
.fin .f-chart-box.f-tall{height:300px}
.fin .f-chart-box.f-mini{height:90px}
.fin .f-chart-box.f-short{height:170px}
.fin .f-chart-box.f-hbar{height:290px}
.fin canvas{touch-action:pan-y pinch-zoom}
.fin .f-kpi-row,.fin .f-mini-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.fin .f-kpi-tile{background:var(--white);border:1px solid var(--line);border-radius:14px;padding:12px;min-width:0}
.fin .f-label{font-size:14.5px;color:var(--text-secondary);margin-bottom:6px;line-height:1.3}
.fin .f-value{font-size:24px;font-weight:800;line-height:1.1;margin-bottom:5px}
.fin .f-delta{font-size:14.5px;font-weight:700;display:block}
.fin .f-was{font-size:12.5px;font-weight:500;color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}
/* «· было …» рядом с процентом: целым блоком переносится на новую строку, а не вылезает за плитку (на экране уже 414 пикселей «Сводка» шла вширь) */
.fin span.f-was:not(.f-was-block){display:inline-block;max-width:100%;white-space:normal;margin-left:.35em}
.fin .f-was-block{display:block;font-weight:600}
.fin .f-delta + .f-delta{margin-top:6px}
.fin .f-up{color:var(--delta-up)}.fin .f-down{color:var(--delta-down)}.fin .f-flat{color:var(--muted)}
.fin .f-note{font-size:14px;font-weight:600;color:var(--text-secondary);margin-top:5px;line-height:1.35}
.fin .f-spark{margin-top:8px;height:28px}
.fin .f-mini-card{background:var(--white);border:1px solid var(--line);border-radius:12px;padding:10px 10px 6px;min-width:0}
.fin .f-mini-head{display:flex;flex-direction:column;gap:2px;margin-bottom:4px}
.fin .f-mini-title{font-size:14px;font-weight:700}
.fin .f-mini-delta{font-size:12.5px;font-weight:700}
.fin .f-mini-total{font-size:12.5px;color:var(--text-secondary);margin-top:2px}
.fin .f-comment{background:var(--white);border:1px solid var(--line);border-left:3px solid var(--series-1);border-radius:10px;padding:13px 15px;font-size:15.5px;line-height:1.6;color:var(--text-secondary)}
.fin .f-comment strong,.fin .f-list-card li strong{color:var(--text-primary)}
.fin .f-comment.f-risk{border-left-color:var(--warn)}
.fin .f-legend-note{font-size:13px;color:var(--muted);line-height:1.45;margin-top:8px}
.fin details.f-tbl summary{cursor:pointer;font-size:14.5px;font-weight:700;color:var(--text-secondary);padding:8px 2px;-webkit-user-select:none;user-select:none}
.fin details.f-tbl>summary::after{content:'▾';margin-left:auto;padding-left:10px;font-size:13px;font-weight:400}
.fin details.f-tbl[open]>summary::after{content:'▴'}
.fin .f-table-scroll{overflow-x:auto;margin-top:6px;border:1px solid var(--line);border-radius:10px;background:var(--white);-webkit-overflow-scrolling:touch}
.fin table.f-data{border-collapse:collapse;width:100%;font-size:14px;white-space:nowrap}
.fin table.f-data th,.fin table.f-data td{padding:7px 10px;text-align:right;border-bottom:1px solid var(--grid);font-variant-numeric:tabular-nums}
.fin table.f-data th:first-child,.fin table.f-data td:first-child{text-align:left;position:sticky;left:0;z-index:1;background:var(--white);font-variant-numeric:normal;white-space:normal;min-width:8.5em;max-width:11.5em;line-height:1.3;box-shadow:1px 0 0 var(--baseline)}
.fin table.f-data thead th{color:var(--text-secondary);font-weight:700;border-bottom:1px solid var(--baseline)}
.fin table.f-data tbody tr:last-child td{border-bottom:none}
.fin table.f-data td.f-left{text-align:left;white-space:normal;min-width:230px;line-height:1.4}
.fin .f-neg{color:var(--delta-down)}.fin .f-pos{color:var(--delta-up)}
.fin .f-rec-card,.fin .f-list-card{background:var(--white);border:1px solid var(--line);border-radius:14px;padding:14px}
.fin .f-rec-tag{display:flex;align-items:center;gap:6px;font-size:13.5px;font-weight:800;color:var(--text-secondary);letter-spacing:.03em;margin-bottom:8px;text-transform:uppercase}
.fin .f-rec-tag .f-dot{width:7px;height:7px;border-radius:50%;flex:none}
.fin .f-rec-card h3{font-size:16.5px;margin:0 0 6px}
.fin .f-rec-card p{font-size:14.5px;color:var(--text-secondary);line-height:1.5;margin:0}
.fin .f-list-card h3{font-size:16px;margin:0 0 12px;display:flex;align-items:center;gap:7px}
.fin .f-list-card h3 .f-sw{width:9px;height:9px;border-radius:50%;flex:none}
.fin .f-list-card h3.f-good .f-sw{background:var(--delta-up)}.fin .f-list-card h3.f-warn .f-sw{background:var(--warn)}
.fin .f-list-card ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:9px}
.fin .f-list-card li{font-size:14.5px;line-height:1.5;color:var(--text-secondary);padding-left:15px;position:relative}
.fin .f-list-card li::before{content:'';position:absolute;left:0;top:7px;width:6px;height:6px;border-radius:50%;background:var(--baseline)}
.fin table.f-forecast-table{border-collapse:collapse;width:100%;font-size:14.5px}
.fin table.f-forecast-table th,.fin table.f-forecast-table td{padding:10px 10px;text-align:center;border-bottom:1px solid var(--grid)}
.fin table.f-forecast-table th:first-child,.fin table.f-forecast-table td:first-child{text-align:left;font-weight:700;min-width:130px}
.fin table.f-forecast-table thead th{color:var(--text-secondary);font-weight:700;font-size:12px;text-transform:uppercase;letter-spacing:.03em;border-bottom:1px solid var(--baseline)}
.fin table.f-forecast-table td.f-fact{font-weight:800}.fin table.f-forecast-table td.f-plan{color:var(--muted);font-style:italic}
.fin table.f-forecast-table tbody tr:last-child td{border-bottom:none}
.fin .f-quote-box{background:var(--white);border:1px solid var(--line);border-left:4px solid var(--series-3);border-radius:10px;padding:16px 16px;font-size:14px;line-height:1.6}
.fin .f-quote-box .f-src{display:block;margin-top:10px;font-size:13px;color:var(--muted)}
.fin .f-band-tag{display:inline-flex;font-size:12px;font-weight:700;padding:2px 8px;border-radius:20px;background:var(--pre);color:var(--warn);margin-left:4px}
.fin .f-toc{display:flex;flex-direction:column;gap:8px}
.fin .f-toc-group{margin:8px 2px 0;font-size:13px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--text-secondary)}
.fin .f-toc-group span{font-weight:500;letter-spacing:0;text-transform:none;color:var(--muted)}
.fin .f-toc-group:first-child{margin-top:0}
.fin .f-toc-row{display:flex;align-items:center;gap:12px;text-align:left;min-height:48px;padding:8px 14px;border:1px solid var(--line);border-radius:12px;background:var(--white);font-size:14.5px;font-weight:600}
.fin .f-toc-row b{width:24px;height:24px;border-radius:50%;background:var(--dark);color:var(--on-dark);display:flex;align-items:center;justify-content:center;font-size:13px;flex:none}
.fin .f-foot{font-size:13px;color:var(--muted);line-height:1.5}
.fin .f-step{display:flex;justify-content:space-between;gap:10px;margin-top:4px}


/* зарплата и выручка а-ля карт */
.sal-hero{border-color:var(--gold);gap:4px}
.sal-big{font-family:'Cormorant Garamond',Georgia,serif;font-size:40px;font-weight:700;line-height:1.05}
.sal-now{margin-top:8px;padding-top:8px;border-top:1px dashed var(--line,#d8d2c4);display:grid;gap:2px}
.sal-card{gap:8px}
.sal-line{display:flex;gap:10px;align-items:flex-start;padding:8px 0;border-top:1px solid var(--sand)}
.sal-card .h + .sal-line{border-top:0}
.sal-line.strong{font-weight:700;border-top:1.5px solid var(--line)}
.sal-line.strong .small{font-weight:400}
.sal-card > .sal-line:first-child{border-top:0}
.sal-val{white-space:nowrap;text-align:right}
.sal-val.red{color:var(--red-ink)}
.sal-val.green{color:var(--green-ink)}
.sal-pen{display:grid;gap:2px;padding:8px 0;border-top:1px solid var(--sand)}
.sal-card .h + .sal-pen{border-top:0}
.sal-shifts{display:grid}
.sal-shift{display:grid;grid-template-columns:1.2fr 1fr 1.1fr auto;gap:6px;font-size:14px;padding:6px 0;border-top:1px solid var(--sand)}
button.sal-person{text-align:left;width:100%;font:inherit;color:inherit;gap:2px}
.sal-tiles{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.sal-tile{background:var(--white);border:1px solid var(--line);border-radius:14px;padding:10px 12px;display:flex;flex-direction:column;gap:2px}
.sal-tile.main{grid-column:1/-1;border-color:var(--gold)}
.sal-tbig{font-size:20px}
.sal-bar{display:flex;height:10px;border-radius:6px;overflow:hidden;background:var(--sand);gap:2px}
.sal-bar i{display:block;min-width:4px}
.sal-b1{background:#4F6B3A}.sal-b2{background:#B8893B}.sal-b3{background:var(--dark)}.sal-b4{background:#7A5A42}
.sal-sheet{display:grid;gap:10px;max-height:62vh;overflow:auto}

/* Финансы на всю ширину экрана (телефон лёжа, планшет): приложение не зажато в колонку 520 px, блоки встают рядом.
   Класс wide на <html> ставит main.js только на экранах с широкими таблицами и графиками; там же разрешено увеличение щипком. */
html.wide #app{max-width:1180px}
html.wide .nav{max-width:1180px;padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}
html.wide #viewbar{max-width:1180px}
html.wide .top,html.wide .page{padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right))}
html.wide .f-nav{margin-left:calc(-1 * max(16px,env(safe-area-inset-left)));margin-right:calc(-1 * max(16px,env(safe-area-inset-right)));padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right))}
html.wide .f-nav-sub{margin-left:calc(-1 * max(16px,env(safe-area-inset-left)));margin-right:calc(-1 * max(16px,env(safe-area-inset-right)));padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right))}
@media (min-width:640px){
  .fin .f-grid-2,.fin .f-grid-3,.fin .f-two-col,.fin .f-rec-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
  .fin .f-kpi-row,.fin .f-mini-grid{grid-template-columns:repeat(4,1fr)}
  .fin table.f-data th:first-child,.fin table.f-data td:first-child{min-width:12em;max-width:19em}
  .fin table.f-data td.f-left{min-width:340px}
  .fin .f-comment{font-size:16px}
}
@media (min-width:960px){
  .fin .f-grid-3{grid-template-columns:repeat(3,1fr)}
}
/* телефон лёжа: низкий экран, график не должен занимать его целиком */
@media (orientation:landscape) and (max-height:520px){
  .fin .f-chart-box{height:min(230px,72vh)}
  .fin .f-chart-box.f-tall{height:min(300px,80vh)}
  .fin .f-chart-box.f-hbar{height:min(330px,84vh)}
  .fin .f-chart-box.f-short{height:min(170px,60vh)}
}

/* ---------- анимации и праздник (public/js/fx.js) ---------- */
#fx-canvas{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:90}
.fx-gift{position:fixed;inset:0;z-index:85;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(36,21,12,0);transition:background .45s,opacity .25s}
.fx-gift.drop,.fx-gift.calm{background:rgba(36,21,12,.74)}
.fx-gift.bye{opacity:0}
.fx-stage{width:min(88vw,360px);display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center}
.fx-box{width:172px;cursor:pointer;transform:translateY(-110vh);will-change:transform;-webkit-tap-highlight-color:transparent}
.fx-gift.drop .fx-box{transform:none;transition:transform .8s cubic-bezier(.34,1.45,.5,1)}
.fx-svg{display:block;width:100%;height:auto;transform-origin:50% 100%;overflow:visible}
.fx-gift.shake:not(.open) .fx-svg{animation:fxshake .13s linear 6}
.fx-lid{transform-box:fill-box;transform-origin:50% 100%;transition:transform .75s cubic-bezier(.2,.9,.3,1),opacity .5s .2s}
.fx-gift.open .fx-lid{transform:translate(38px,-170px) rotate(30deg);opacity:0}
.fx-gift.open .fx-box{transform:scale(.62);margin:-30px 0 -26px;transition:transform .5s ease,margin .5s ease}
.fx-card{width:100%;display:grid;gap:10px;padding:18px 18px 16px;border-radius:20px;background:var(--cream);box-shadow:0 22px 54px rgba(0,0,0,.5);visibility:hidden;opacity:0;transform:scale(.55) translateY(-50px)}
.fx-gift.show .fx-card,.fx-gift.calm .fx-card{visibility:visible;opacity:1;transform:none}
.fx-gift.show .fx-card{transition:transform .6s cubic-bezier(.3,1.5,.5,1),opacity .25s}
.fx-card h2{margin:0;font-family:'Cormorant Garamond',Georgia,serif;font-size:27px;line-height:1.12;color:var(--text)}
.fx-text{font-size:15px;line-height:1.45;white-space:pre-line;max-height:34vh;overflow:auto;color:var(--text);text-align:left}
.fx-sub{font-size:13px;color:var(--muted)}
.fx-gift.calm .fx-box{display:none}
@keyframes fxshake{0%,100%{transform:rotate(0)}25%{transform:rotate(-6deg)}75%{transform:rotate(6deg)}}
@keyframes fxpop{0%{transform:scale(1)}35%{transform:scale(1.2)}65%{transform:scale(.94)}100%{transform:scale(1)}}
.fx-pop{animation:fxpop .5s ease}
@keyframes fxin{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.fx-in{animation:fxin .38s ease both;animation-delay:calc(var(--i,0)*45ms)}
@keyframes fxbounce{0%{transform:translateY(0)}35%{transform:translateY(-6px) scale(1.12)}70%{transform:translateY(1px)}100%{transform:none}}
.nav a.on .i{animation:fxbounce .5s ease .1s both}
/* лёгкий отклик на нажатие: кнопки чуть «вдавливаются» */
.bigbtn,.smallbtn,.chip{transition:transform .08s ease}
.bigbtn:active,.smallbtn:active,.chip:active{transform:scale(.97)}
@media (prefers-reduced-motion:reduce){
  .fx-in,.fx-pop,.nav a.on .i,.fx-gift.shake .fx-svg{animation:none}
  .fx-box,.fx-card,.fx-lid{transition:none}
}

/* ---------- объявления ---------- */
.card.ann{border-left:5px solid var(--gold)}
.card.ann.festive{background:linear-gradient(135deg,var(--tint-soft),#FBEBC8)}
.card.ann .annhead{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.annbar{display:flex;height:8px;border-radius:5px;overflow:hidden;background:var(--sand-2)}
.annbar i{display:block;height:100%;transition:width .6s ease}
.annbar .a{background:var(--green)}.annbar .s{background:#E0A23A}
.annresp{display:grid;gap:6px;font-size:14px;line-height:1.35}
.annresp .names{color:var(--muted)}
.annresp .ok{color:var(--green-ink)}
.ackbtn{min-height:50px;border-radius:12px;border:none;background:var(--green);color:#fff;font-weight:800;font-size:16px;display:flex;align-items:center;justify-content:center;gap:8px}
.ackdone{font-size:14px;font-weight:700;color:var(--green-ink)}
.annform{display:grid;gap:12px}
.grp{display:flex;align-items:center;gap:10px;min-height:46px;padding:0 12px;border:1px solid var(--line);border-radius:12px;background:var(--white);font-weight:700}
.grp input{width:22px;height:22px}
.grp.off{opacity:.5}
.grp .n{margin-left:auto;font-size:13px;font-weight:600;color:var(--muted)}
.annmine{text-decoration:none;color:inherit}

/* ---------- фото в объявлениях (выпуск 190): выбор при написании и показ в карточках ---------- */
.annp{display:grid;gap:10px;position:relative}
.annp-thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:8px}   /* на 360–430 пикселях четыре в ряд, на самом узком телефоне три и ещё один ниже */
.annp-thumbs[hidden]{display:none}
.annp-status:empty{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}   /* пустая строка состояния не занимает места, но остаётся «озвучиваемой»: первое сообщение читалка не пропустит */
.annp-th{position:relative;aspect-ratio:1}
.annp-img{width:100%;height:100%;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--sand);display:flex;align-items:center;justify-content:center}
.annp-img img{width:100%;height:100%;object-fit:cover;display:block}
.annp-th.up .annp-img img,.annp-th.prep .annp-img img{opacity:.5}
.annp-th.err .annp-img{border-color:var(--red)}
.annp-wait{font-size:24px}
.annp-th.err .annp-wait{transform:translateY(-12px)}   /* знак выше кнопки «Ещё раз» */
.annp-x{position:absolute;top:-7px;right:-7px;width:26px;height:26px;padding:0;border-radius:50%;border:2px solid #fff;background:var(--dark);color:var(--on-dark);font-size:13px;line-height:1}
.annp-x::after{content:'';position:absolute;inset:-11px}   /* внутри рамки 22 пикселя, с этим полем нажимаемая область 44 пикселя при маленьком крестике */
.annp-prog{position:absolute;left:6px;right:6px;bottom:6px;height:6px;border-radius:4px;background:rgba(255,255,255,.8);overflow:hidden}
.annp-prog i{display:block;height:100%;width:0;background:var(--green);transition:width .2s}
.annp-retry{position:absolute;left:4px;right:4px;bottom:4px;min-height:32px;padding:0;border-radius:8px;border:1px solid var(--red);background:var(--white);color:var(--red-ink);font-weight:700;font-size:13px}
.annp-ok{position:absolute;left:4px;bottom:4px;width:22px;height:22px;border-radius:50%;background:var(--green);color:#fff;font-size:14px;font-weight:800;display:flex;align-items:center;justify-content:center}
.annp-status{color:var(--muted)}
.annp-status.bad{color:var(--red-ink);font-weight:600}
.annp-add{justify-self:start}
.annp-add:disabled{opacity:.5}
.annph{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.annph.n1{grid-template-columns:1fr}
.annph-i{display:block;width:100%;padding:0;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--sand);aspect-ratio:4/3;cursor:zoom-in}
.annph-i img{display:block;width:100%;height:100%;object-fit:cover}
.annph.n3 .annph-i:first-child{grid-column:1/-1;aspect-ratio:16/9}
.lbx-nav{position:absolute;z-index:3;top:50%;transform:translateY(-50%);width:48px;height:64px;padding:0;border:0;border-radius:12px;background:rgba(0,0,0,.4);color:#fff;font-size:34px;line-height:1}
.lbx-nav.prev{left:6px}.lbx-nav.next{right:6px}

/* ---------- рейтинг официантов: заработок в час ---------- */
.rate-me{border-color:var(--gold);gap:4px}
.rate-me .tag{align-self:flex-start}
.rate-list{padding:6px 14px}
.rate-row{display:grid;grid-template-columns:34px 1fr auto;gap:4px 10px;align-items:center;padding:9px 0;border-top:1px solid var(--sand)}
.rate-row:first-of-type{border-top:0}
.rate-row.tap{cursor:pointer;-webkit-tap-highlight-color:transparent}
.rate-row.tap:active{background:var(--sand)}
.rate-row.tap .rate-nm::after{content:' ›';color:var(--muted)}
.rate-row.me{background:var(--green-bg);margin:2px -8px;padding:9px 8px;border-radius:10px;border-top-color:transparent}
.rate-row.me + .rate-row{border-top-color:transparent}
.rate-pl{font-size:20px;text-align:center;font-weight:700;color:var(--muted)}
.rate-nm{font-weight:700;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rate-v{font-weight:800;white-space:nowrap}
.rate-sub{grid-column:2/-1;font-size:14px;color:var(--muted);margin-top:-2px}
.rate-kpi{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:6px 0 4px}
.rate-kpi>div{background:var(--sand);border-radius:12px;padding:8px 10px;display:flex;flex-direction:column;gap:2px}
.rate-kpi small{font-size:13px;color:var(--muted)}.rate-kpi b{font-size:18px}
.rate-top{border-color:var(--gold);gap:8px}
.rate-trow{display:flex;align-items:center;gap:10px;padding:6px 0;border-top:1px solid var(--sand)}
.rate-trow:first-of-type{border-top:0}
.rate-trow.me{background:var(--green-bg);margin:0 -8px;padding:6px 8px;border-radius:10px}
.rate-trow .rate-pl{width:34px;flex:none}
.rate-sum{font-size:17px;white-space:nowrap}
.rate-cmp{background:var(--tint-gold);border-radius:12px;padding:10px 12px;display:grid;gap:2px;color:var(--gold-deep)}
.rate-bar{grid-column:2/-1;display:flex;height:8px;border-radius:5px;background:var(--sand);overflow:hidden}
.rate-bar i{display:block;height:100%;transition:width .8s cubic-bezier(.2,.8,.2,1)}
.rate-bar .b{background:var(--green)}.rate-bar .p{background:var(--gold)}
.rate-leg{display:flex;gap:16px;flex-wrap:wrap;font-size:13px;color:var(--muted)}
.rate-leg i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.rate-leg .b{background:var(--green)}.rate-leg .p{background:var(--gold)}
a.rate-teaser{text-decoration:none;color:inherit;flex-direction:row;align-items:center;gap:12px;border-color:var(--gold)}
@media (prefers-reduced-motion:reduce){.rate-bar i{transition:none}}
.sal-over{border-color:var(--red)}
.salhelp{display:grid;gap:8px;font-size:14px;line-height:1.45}

/* личные продажи официантов: ход задачи из четырёх шагов */
.sf-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.sf-step{display:grid;justify-items:center;gap:2px;text-align:center;padding:8px 2px;border-radius:12px;background:var(--sand);color:#7a6755;font-size:12px;line-height:1.2}
.sf-n{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;background:var(--sand-2);color:var(--ink-brown)}
.sf-t{font-weight:700;color:var(--ink-brown)}
.sf-w{font-size:12px;opacity:.8}
.sf-step.done{background:var(--green-bg)}
.sf-step.done .sf-n{background:var(--green);color:#fff}
.sf-step.now{background:#FBEBC9;box-shadow:inset 0 0 0 2px #E0A23A}
.sf-step.now .sf-n{background:#E0A23A;color:#2A1A0E}
.sf-btns{display:grid;gap:8px}

/* переводы вызывным */
.av.pay{background:var(--green-bg);color:var(--green-deep);font-size:22px}
.pay-card{gap:8px}
.pay-card.paying{border-color:var(--gold);box-shadow:0 0 0 2px #F1D9A0}
.pay-name{font-size:17px}
.pay-amt{font-family:'Cormorant Garamond',Georgia,serif;font-size:26px;font-weight:700;white-space:nowrap}
.pay-row{display:flex;gap:8px;flex-wrap:wrap}
.pay-row > *{flex:1;min-width:120px}
.pay-date{display:grid;gap:8px}
.pay-new{display:grid;gap:10px;padding:10px;border-radius:12px;background:var(--sand)}
/* Переводы: у каждого вида свой цвет (полоса слева, метка, плитка выбора). Цвета видов не повторяют цвета статусов (зелёный, золотой, красный) */
.k-guide{--kc:#5B7F2B;--kbg:#EAF1DC}.k-shift{--kc:#3D4FA0;--kbg:#E7EAF7}.k-refund{--kc:#8A4A8F;--kbg:#F3E6F4}.k-purchase{--kc:#1F7A8C;--kbg:#DFF0F3}.k-other{--kc:#7A6A5A;--kbg:#EEE8E0}.k-vacancy{--kc:#B8561A;--kbg:#FBE7D8}
.pay-card{border-left:6px solid var(--kc,var(--line))}
.kindtag{display:table;margin:0 0 4px;padding:2px 8px;border-radius:8px;background:var(--kbg);color:var(--kc);font-size:12px;font-weight:800;letter-spacing:.05em}
.kindbadge{display:flex;align-items:center;gap:6px;padding:8px 12px;border-radius:12px;background:var(--kbg);color:var(--kc);font-weight:800}
.kindtile{display:flex;align-items:center;gap:12px;width:100%;min-height:64px;padding:10px 14px;border-radius:14px;border:2px solid var(--kc);background:var(--kbg);color:var(--text);text-align:left;font:inherit;cursor:pointer}
.kindtile .ki{font-size:26px;flex:none}
.kindtile .kt{display:flex;flex-direction:column;gap:2px;min-width:0}
.kindtile .kt b{font-size:17px}
.kindtile .kt small{font-size:14px;font-weight:600;color:var(--muted)}
.pay-topic{font-weight:700}

/* ---------- мотивация официанта и обучение «Изучай и зарабатывай» ---------- */
.mot-card{border-color:var(--gold);background:linear-gradient(180deg,var(--tint-soft),var(--white));gap:12px}
.mot-goal{display:grid;gap:8px}
.mot-title{font-size:18px;line-height:1.25}
.mot-goal.ok .mot-title{color:var(--green-ink)}
.mot-bar,.les-prog{height:12px;border-radius:7px;background:var(--sand);overflow:hidden}
.mot-bar i,.les-prog i{display:block;height:100%;border-radius:7px;background:linear-gradient(90deg,#E0A23A,var(--gold));transition:width 1s cubic-bezier(.2,.8,.2,1)}
.mot-meter{margin-top:-2px}
.mot-line{font-size:15px;line-height:1.4}
.mot-hall{display:grid;gap:4px;padding-top:12px;border-top:1px dashed var(--line);line-height:1.4}
.mot-tip{display:grid;gap:6px;padding:10px 12px;border-radius:12px;background:var(--sand);line-height:1.4}
.mot-tip .smallbtn{justify-self:start;background:var(--white)}
a.learn-card{text-decoration:none;color:inherit;flex-direction:row;align-items:center;gap:12px;border-color:var(--gold)}
.learn-i{font-size:30px}
.les-week,.les-list{display:grid;gap:8px}
.les-row{display:flex;align-items:center;gap:12px;padding:10px 12px;min-height:60px;border:1px solid var(--line);border-radius:14px;background:var(--white);text-decoration:none;color:inherit}
.les-row.done{background:var(--green-bg);border-color:var(--green-line)}
.les-n{width:34px;height:34px;border-radius:50%;background:var(--dark);color:var(--on-dark);display:flex;align-items:center;justify-content:center;font-weight:800;flex:none}
.les-row.done .les-n{background:var(--green)}
.les-t{display:grid;gap:2px;flex:1;min-width:0;line-height:1.25}
.les-about{color:#5C4A3A;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.les-topbar{margin:0 0 4px}.les-topbar .chip.gold{background:var(--gold);border-color:var(--gold);color:#fff}
.les-botnav{display:grid;gap:8px;margin-top:6px}.les-botnav .row{gap:8px}
.les-title{font-family:'Cormorant Garamond',Georgia,serif;font-size:26px;font-weight:700;line-height:1.1}
.les-car{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none;border-radius:16px;background:var(--sand);outline:none}
.les-car::-webkit-scrollbar{display:none}
.les-car:focus-visible{box-shadow:0 0 0 3px #F1D9A0}
.les-slide{flex:0 0 100%;scroll-snap-align:center;display:flex;justify-content:center;align-items:center}
.les-slide img{display:block;width:auto;max-width:100%;height:auto;max-height:calc(100dvh - 330px);min-height:240px;object-fit:contain;-webkit-user-drag:none;user-select:none}
.les-nav{display:flex;align-items:center;justify-content:space-between;gap:8px}
.les-mid{display:grid;justify-items:center;gap:6px;font-size:14px}
.les-dots{display:flex;gap:6px}
.les-dots i{width:8px;height:8px;border-radius:5px;background:#D9C7A8;transition:width .2s,background .2s}
.les-dots i.on{background:var(--dark);width:22px}
.les-next{width:100%}
.les-q{font-size:19px;font-weight:700;line-height:1.35}
.les-opts{display:grid;gap:10px}
.les-opt{display:flex;align-items:flex-start;gap:12px;text-align:left;padding:12px 14px;min-height:60px;border-radius:14px;border:2px solid var(--line);background:var(--white);font-size:16px;line-height:1.35;transition:border-color .15s,background .15s}
.les-l{width:30px;height:30px;border-radius:50%;background:var(--sand);display:flex;align-items:center;justify-content:center;font-weight:800;flex:none}
.les-opt:active:not(:disabled){transform:scale(.99)}
.les-opt.good{border-color:var(--green);background:var(--green-bg)}
.les-opt.good .les-l{background:var(--green);color:#fff}
.les-opt.bad{border-color:var(--red);background:var(--red-bg)}
.les-opt.bad .les-l{background:var(--red);color:#fff}
.les-opt:disabled:not(.good):not(.bad){opacity:.6}
@media (prefers-reduced-motion:reduce){.mot-bar i,.les-prog i,.les-dots i{transition:none}}
/* ---------- «Обучение» на главном экране официанта и сводка для руководства (выпуск 168) ---------- */
.tr-card{border-color:var(--gold);border-left:5px solid var(--gold);background:linear-gradient(180deg,var(--tint-soft),var(--white));gap:10px}
.tr-card.ok{border-color:var(--green-line);border-left-color:var(--green);background:var(--green-bg)}
.tr-head{display:flex;align-items:center;gap:10px}
.tr-hi{font-size:26px;line-height:1}
.tr-ht{flex:1;font-size:18px}
.tr-left{font-size:16px;font-weight:800;line-height:1.3}
.tr-prog{display:flex;align-items:center;gap:10px}
.tr-prog .les-prog{flex:1}
.tr-prog span{font-size:14px;color:var(--muted);white-space:nowrap}
.tr-why{font-size:14.5px;line-height:1.4}
.tr-pay{font-size:13.5px;line-height:1.35;color:var(--muted)}
.tr-row{display:flex;align-items:center;gap:12px;padding:8px 12px;min-height:60px;border:1px solid var(--line);border-radius:14px;background:var(--white);text-decoration:none;color:inherit}
.tr-i{font-size:28px;flex:none;width:34px;text-align:center}
.tr-t{display:grid;gap:3px;flex:1;min-width:0;line-height:1.25}
.tr-k{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px;font-weight:700;letter-spacing:.03em;color:var(--muted);text-transform:uppercase}
.tr-okline{font-size:14px;font-weight:700;color:var(--green-ink)}
.tr-soft{display:block;font-size:14px;font-weight:600;color:inherit}
.tr-links .chip{min-height:36px;font-size:14px}
.tr-person{gap:8px}
.tr-line{font-size:14px;line-height:1.4}
/* «Контроль команды» (выпуск 179): проверка на практике, отметки руководителя, повод поговорить */
.tr-slot:empty{display:none}
.tr-warn{display:block;font-size:14px;line-height:1.4;padding:8px 10px;border-radius:10px;background:var(--tint-gold);border:1px solid #E8D29A;color:inherit;text-decoration:none}
.tr-hint{font-size:14px;line-height:1.4;color:var(--muted)}
.tr-chk{font-size:14.5px;line-height:1.4}
.tr-chk.green{color:var(--green-ink)}
.tr-chk.gold{color:var(--gold-deep)}
.tr-chk.urgent{color:var(--red-ink)}
.tr-chk .small{color:var(--text)}
.tr-acts{display:grid;grid-template-columns:1fr 1fr;gap:8px;align-items:center}
.tr-acts .smallbtn{min-height:44px;font-size:14.5px;padding:0 8px;width:100%}
.tr-acts .smallbtn:first-child{grid-column:1/-1}
.tr-acts .small{text-align:center}
.tr-tab{gap:8px}
.tr-dot{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 6px;border-radius:11px;background:var(--red);color:#fff;font-size:12px;font-weight:800}
.tr-todo{gap:8px}
.tr-todo.bad{border-left:5px solid var(--red)}
.tr-sug{display:flex;align-items:center;gap:10px;padding-top:8px;border-top:1px solid var(--line)}
.tr-ack{display:grid;gap:2px;padding-top:8px;border-top:1px solid var(--line)}
.tr-none{color:var(--red-ink);font-weight:700}
.tr-res{display:grid;gap:8px}
.tr-res button{display:flex;align-items:center;gap:10px;min-height:54px;padding:8px 14px;border:2px solid var(--line);border-radius:14px;background:var(--white);font-size:16px;font-weight:700;text-align:left}
.tr-res button.on.green{border-color:var(--green);background:var(--green-bg)}
.tr-res button.on.gold{border-color:var(--gold);background:var(--tint-gold)}
.tr-res button.on.urgent{border-color:var(--red);background:var(--red-bg)}
.tr-topics{display:flex;flex-wrap:wrap;gap:6px}
.tr-topics .chip{min-height:40px;font-size:14px;text-align:left}


/* ---------- «Моя игра» официанта: «Чайный путь» ---------- */
.gm-slot:empty{display:none}
a.gm-card{display:grid;gap:10px;padding:14px;border-radius:16px;text-decoration:none;color:#F7EEDC;background:linear-gradient(135deg,var(--dark) 0%,#5B3A22 100%);border:1px solid var(--gold);box-shadow:0 6px 18px rgba(58,36,22,.25)}
a.gm-card:active{transform:scale(.99)}
.gm-card-top{display:flex;justify-content:space-between;align-items:center}
.gm-pill{background:rgba(224,162,58,.22);color:#F1D9A0;padding:4px 10px;border-radius:12px;font-size:12px;font-weight:800;letter-spacing:.06em}
.gm-open{color:#F1D9A0;font-weight:700;font-size:14px}
.gm-card-main{display:flex;align-items:center;gap:12px}
.gm-emoji{font-size:40px;line-height:1;filter:drop-shadow(0 2px 4px rgba(0,0,0,.35))}
.gm-name{display:block;font-family:'Cormorant Garamond',Georgia,serif;font-size:28px;line-height:1.05}
.gm-sub{font-size:14px;color:#D9C7A8}
.gm-bar{height:12px;border-radius:7px;background:rgba(255,255,255,.16);overflow:hidden}
.gm-bar.light{background:var(--sand)}
.gm-bar i{display:block;height:100%;border-radius:7px;background:linear-gradient(90deg,#E0A23A,var(--pre));transition:width 1s cubic-bezier(.2,.8,.2,1)}
.gm-bar.light i{background:linear-gradient(90deg,#E0A23A,var(--gold))}
.gm-bartext{font-size:14px;color:#F1D9A0;font-weight:700;margin-top:-4px}
.gm-quote{display:grid;gap:4px;font-size:14px;line-height:1.4;padding-top:10px;border-top:1px dashed rgba(241,217,160,.35)}
.gm-quote b{color:#fff}
.gm-quote span{color:#E8D9B9;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

.gm-hero{display:grid;gap:6px;padding:16px;border-radius:18px;color:#F7EEDC;background:linear-gradient(135deg,var(--dark) 0%,#6B4529 100%);border:1px solid var(--gold);box-shadow:0 8px 22px rgba(58,36,22,.28)}
.gm-hero-top{font-size:14px;color:#D9C7A8}
.gm-big{font-family:'Cormorant Garamond',Georgia,serif;font-size:46px;font-weight:700;line-height:1.05;color:#fff}
.gm-hero-sub{font-size:14px;color:#F1D9A0}
.gm-lvls{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:6px}
.gm-lvl{display:grid;gap:2px;padding:8px 12px;border-radius:12px;background:rgba(255,255,255,.1);border:1px solid rgba(241,217,160,.3);min-width:0}
.gm-lvl small{font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:#D9C7A8}
.gm-lvl b{font-size:15px;line-height:1.25;color:#fff}
.gm-lvl.off b{color:#D9C7A8;font-weight:600}
.gm-hero-note{font-size:13px;color:#C9B493;margin-top:4px}

.gm-coach{border-color:var(--gold);background:linear-gradient(180deg,var(--tint-soft),var(--white));gap:10px}
.gm-rule{display:flex;align-items:center;gap:8px;padding:10px 12px;border-radius:12px;background:var(--dark);color:var(--on-dark);line-height:1.3}
.gm-rule b{font-size:15px}
.gm-coach-who{font-size:14px;color:var(--muted);font-weight:700}
.gm-coach-body{display:grid;gap:8px;line-height:1.45}
.gm-coach-title{display:flex;align-items:center;gap:8px;font-size:18px}
.gm-coach-e{font-size:26px}
.gm-coach-text{font-size:16px}
.gm-coach-body .smallbtn{justify-self:start;background:var(--white)}
.gm-coach-foot{display:flex;align-items:center;justify-content:space-between;gap:10px}
.gm-dots{display:flex;gap:5px;flex-wrap:wrap;max-width:60%}
.gm-dots i{width:7px;height:7px;border-radius:4px;background:#D9C7A8}
.gm-dots i.on{background:var(--dark);width:18px}
.fx-swap{animation:fxin .35s ease}

.gm-quest{gap:10px}
.gm-q-head{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;font-size:17px}
.gm-q-text{font-size:16px;line-height:1.45}
.gm-qbtn.done{background:var(--green-bg);color:var(--green-ink);border:1px solid var(--green-line);font-size:15px}
.gm-qstat{line-height:1.4}

.gm-ladder{gap:10px}
.gm-ladder-title{font-size:18px}
.gm-rungs{display:grid;gap:0;margin-top:2px}
.gm-rung{display:flex;align-items:center;gap:12px;padding:10px 6px;border-top:1px solid var(--sand);min-height:56px}
.gm-rung:first-child{border-top:none}
.gm-rung-e{font-size:28px;width:38px;text-align:center;flex:none;filter:grayscale(1);opacity:.45}
.gm-rung.got .gm-rung-e{filter:none;opacity:1}
.gm-rung.cur{background:var(--tint-gold);border-radius:12px;border-top-color:transparent}
.gm-rung.cur .gm-rung-e{filter:none;opacity:1;font-size:34px}
.gm-rung:not(.got):not(.cur) b{color:var(--muted)}
.gm-here{margin-top:2px;line-height:1.35}
.gm-check{color:var(--green-ink);font-weight:800;font-size:18px}
.gm-lock{color:#C9B493}

.gm-calc{gap:10px}
.gm-ctl{display:flex;align-items:center;gap:8px;padding:6px 0;border-top:1px solid var(--sand)}
.gm-ctl:first-of-type{border-top:none}
.gm-pm{width:48px;height:48px;border-radius:14px;border:1px solid var(--dark);background:var(--white);font-size:26px;font-weight:700;line-height:1;display:flex;align-items:center;justify-content:center;flex:none}
.gm-pm:active{background:var(--sand)}
.gm-val{min-width:74px;text-align:center;font-size:19px;font-variant-numeric:tabular-nums}
.gm-calc-out{display:grid;gap:8px;padding:12px;border-radius:14px;background:var(--sand);line-height:1.4}
.gm-calc-num{display:grid;gap:0}
.gm-calc-num small{font-size:12px;color:var(--muted)}
.gm-calc-num b{font-family:'Cormorant Garamond',Georgia,serif;font-size:34px;line-height:1.05}
.gm-calc-title{font-size:18px;font-weight:800}
.gm-calc-title.good{color:var(--green-ink)}
.gm-calc-line{font-size:15px}
.gm-cbar{position:relative;height:12px;border-radius:7px;background:var(--white);overflow:hidden}
.gm-cbar i{position:absolute;left:0;top:0;bottom:0;border-radius:7px;transition:width .35s ease}
.gm-cbar i.add{background:var(--pre)}
.gm-cbar i.cur{background:linear-gradient(90deg,#E0A23A,var(--gold))}

.gm-badges{gap:10px}
.gm-badges-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.gm-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.gm-badge{display:grid;justify-items:center;align-content:start;gap:3px;padding:10px 4px;min-height:96px;border-radius:14px;border:1px solid var(--line);background:var(--white);text-align:center;line-height:1.2}
.gm-badge b{font-size:12.5px}
.gm-badge small{font-size:11px;color:var(--muted)}
.gm-badge-e{font-size:32px;filter:grayscale(1);opacity:.4}
.gm-badge.got{background:var(--tint-gold);border-color:var(--gold)}
.gm-badge.got .gm-badge-e{filter:none;opacity:1}
.gm-badge:not(.got) b{color:var(--muted)}
a.gm-link{flex-direction:row;align-items:center;gap:10px;text-decoration:none;color:inherit}
@media (prefers-reduced-motion:reduce){.gm-bar i,.gm-cbar i{transition:none}.fx-swap{animation:none}}

/* ---------- кто пользуется приложением (для руководителя) ---------- */
.u-chart{display:grid;gap:6px}
.u-read{min-height:20px}
.u-bars{display:flex;align-items:flex-end;gap:2px;height:96px;padding-top:4px;border-bottom:1px solid var(--line)}
.u-bars i{display:block;flex:1;min-width:2px;background:var(--gold);border-radius:3px 3px 0 0;cursor:pointer;transition:height .5s cubic-bezier(.2,.8,.2,1),opacity .15s}
.u-bars i.now{background:var(--dark)}
.u-bars i.z{height:2px;background:#D9C7A8;border-radius:0}
.u-bars i:hover{opacity:.8}
.u-ticks{display:flex;font-size:12px;color:var(--muted)}
.u-ticks.all span{flex:1;text-align:center;white-space:nowrap}
.u-ticks.few{justify-content:space-between}
.u-people{display:grid;gap:8px}
a.u-row{text-decoration:none;color:inherit;position:relative;gap:4px}
.u-go{position:absolute;right:14px;bottom:10px;font-size:22px}
.u-hero-t{font-family:'Cormorant Garamond',Georgia,serif;font-size:26px;font-weight:700;line-height:1.15}
.u-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.u-stat{display:grid;gap:2px;align-content:start;padding:10px 12px;border-radius:12px;background:var(--sand)}
.u-stat b{font-size:18px}
.u-days{display:grid}
.u-day{display:grid;gap:2px;padding:9px 0;border-top:1px solid var(--sand)}
.u-day:first-child{border-top:0}
.u-screens{display:grid;gap:10px}
.u-screen{display:grid;gap:4px}
.u-meter{height:8px;border-radius:5px;background:var(--sand);overflow:hidden}
.u-meter i{display:block;height:100%;border-radius:5px;background:var(--gold)}
@media (prefers-reduced-motion:reduce){.u-bars i{transition:none}}
.chips.compact{gap:6px}
.chips.compact .chip{padding:0 11px;font-size:14px}

/* «Кто получает уведомления» (public/js/reach.js) и плашка «Включить уведомления» (public/js/pushsync.js) */
.rc-sec{display:flex;flex-direction:column;gap:10px}
.rc-sec h2{margin:0;font-family:'Cormorant Garamond',Georgia,serif;font-size:24px}
.rc-row{gap:6px;cursor:pointer}
.rc-row.rc-fixed{cursor:default}
.rc-row .row{align-items:flex-start;gap:10px}
.rc-row .row>.grow{min-width:0;overflow-wrap:anywhere}
.rc-row input[type=checkbox]{width:24px;height:24px;margin:2px 0 0;flex:none}
.rc-state{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding-left:34px}
.rc-hint{color:var(--ink-brown);padding-left:34px;line-height:1.35}
.rc-fixed .rc-state,.rc-fixed .rc-hint{padding-left:0}
.rc-state .tag{white-space:normal}
.rc-bar .bigbtn{flex:1 1 140px}
.rc-fine .sect-body{display:flex;flex-direction:column;gap:10px}
.rc-guide p{margin:0 0 8px}
.push-banner{display:flex;flex-direction:column;gap:8px;margin:10px 16px 0;padding:12px 14px;border-radius:14px;background:var(--tint-gold);color:var(--gold-deep);border:1px solid #E7CE92}
.push-banner .row{flex-wrap:wrap;gap:8px}
.push-banner .bigbtn{flex:1 1 150px;min-height:48px}

/* выбор мини-карточками вместо системного списка (public/js/picker.js) */
.pk{width:100%;min-height:58px;border:1px solid var(--line);border-radius:12px;background:var(--white);padding:8px 12px;display:flex;align-items:center;gap:10px;text-align:left;font-size:16px;color:var(--text)}
.pk:disabled{opacity:.6}
.pk-ph{flex:1;color:#8a7560;font-weight:500}
.pk-arrow{flex:none;margin-left:auto;color:var(--muted);font-size:14px}
.pk-list{display:grid;gap:8px}
.pk-card{display:flex;align-items:center;gap:10px;width:100%;min-height:62px;padding:10px 12px;border-radius:14px;border:1px solid var(--line);background:var(--white);text-align:left;font-size:16px;color:var(--text)}
.pk-card.on{border-color:var(--dark);box-shadow:inset 0 0 0 1px var(--dark);background:#FFF9EC}
.pk-card.special{border-style:dashed;background:var(--sand)}
.pk-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.pk-t{font-size:16px;font-weight:700;line-height:1.25;overflow-wrap:break-word}
.pk-s{font-size:14px;font-weight:500;color:var(--muted);line-height:1.3}
.pk-meta{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:4px;max-width:42%}
.pk-chip{font-size:12px;font-weight:700;border-radius:8px;padding:3px 8px;background:var(--sand-2);color:var(--ink-brown);white-space:nowrap}
.pk-x{font-size:13px;font-weight:600;color:var(--muted);white-space:nowrap}
.pk-ok{flex:none;color:var(--green-ink);font-size:20px;font-weight:700}

/* каталог блюд: карточка блюда с явной кнопкой «Сохранить изменения» */
.dishedit{min-width:0;display:flex;flex-direction:column;gap:8px;background:var(--white);border:1px solid var(--line);border-radius:12px;padding:10px 12px}
.dishedit.dirty{border-color:var(--gold);box-shadow:inset 0 0 0 1px var(--gold);background:var(--tint-soft)}
.smallbtn.solid{background:var(--dark);color:var(--on-dark)}
.smallbtn:disabled{opacity:.55}

/* «Доступы» (public/js/vault.js): карточки кабинетов */
.vt-list{display:grid;gap:10px}
.vt-card{gap:8px}
.vt-head{display:flex;align-items:flex-start;gap:10px;width:100%;text-align:left;background:none;border:0;padding:0;color:var(--text);font-size:16px}
.vt-head .grow{display:flex;flex-direction:column;gap:2px;min-width:0}
.vt-title{font-size:17px;line-height:1.25;overflow-wrap:anywhere}
.vt-sub{overflow-wrap:anywhere}
.vt-acts{display:flex;flex-wrap:wrap;gap:8px}
.vt-row{display:flex;flex-direction:column;gap:4px;padding:10px 12px;border-radius:12px;background:var(--sand)}
.vt-val{font-size:16px;font-weight:600;overflow-wrap:anywhere;user-select:text;-webkit-user-select:text}
.vt-dots{letter-spacing:.12em;color:var(--muted)}
.vt-btns{display:flex;gap:8px;margin-top:4px}
.vt-btns .smallbtn{flex:1 1 0;min-height:40px;white-space:nowrap}
.vt-hist{display:grid;gap:4px}
.vt-fields{display:grid;gap:10px}
.vt-field{display:grid;gap:8px;padding:10px;border:1px solid var(--line);border-radius:12px;background:var(--white)}
.vt-pwin{background:var(--sand)}

/* строка сотрудника: имя сверху на всю ширину, кнопки под ним в ряд */
.setrow.stack{flex-direction:column;align-items:stretch;gap:8px}
.setrow.stack .grow{overflow:visible;text-overflow:clip;overflow-wrap:anywhere}
.setbtns{display:flex;flex-wrap:wrap;gap:8px}
.setbtns .smallbtn{flex:1 1 auto;min-height:40px}
.dishedit .smallbtn{white-space:nowrap;padding:0 12px;font-size:14px}
.dishedit .row>.smallbtn:last-child{flex:1 1 auto}

/* «Обязательно выполнить» (public/js/must.js): пожелания заказчика и просьбы к блюдам */
.must{border:3px solid #A63A2B;border-radius:12px;background:#FFF1EE;overflow:hidden}
.must-h{display:block;background:#A63A2B;color:#fff;padding:7px 12px;font-size:14px;letter-spacing:.06em;font-weight:800}
.must-i{padding:9px 12px;border-top:1px solid #E6B3AD;font-size:16px;font-weight:700;line-height:1.35;color:#3A1410;overflow-wrap:anywhere}
.must-h+.must-i{border-top:0}
.must-i small{display:block;font-size:12.5px;font-weight:700;color:var(--red-ink);text-transform:uppercase;letter-spacing:.04em;margin-bottom:1px}

/* «График администраторов» (public/js/shifts.js): карточка «Сегодня на смене» и экран недели */
.shwrap:empty{display:none}
.sh{background:var(--white);border:1px solid var(--line);border-left:6px solid var(--gold);border-radius:14px;padding:12px 14px;display:flex;flex-direction:column;gap:10px}
.sh-ok{border-left-color:var(--green)}
.sh-none,.sh-declined{border-left-color:var(--red);background:var(--red-bg)}
.sh-h{font-weight:800;font-size:15px;line-height:1.3}
.sh-p{display:grid;gap:6px}
.sh-who{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:17px}
.sh-st{font-size:14px;font-weight:700}
.sh-st.ok{color:var(--green-ink)}
.sh-st.wait{color:#8A5A12}
.sh-btns{display:flex;gap:8px;flex-wrap:wrap}
.sh-btns .smallbtn{flex:1 1 130px}
.sh-act{display:flex;gap:8px;flex-wrap:wrap}
.sh-act .bigbtn{flex:1 1 140px;min-height:48px;font-size:15px}
.sh-c{min-height:44px;padding:0 14px}
.sh-c.mine{border-color:var(--gold);border-width:2px}
.sh-c.danger{border-color:var(--red);color:var(--red-ink);background:var(--red-bg)}
.sh-c.ro{pointer-events:none}
.sh-c.ro:not(.on){opacity:.6}
.sh-day.today{border-color:var(--green);border-width:2px}
.sh-day.empty-day{border-color:var(--red);background:var(--red-bg)}
.sh-day.past{opacity:.75}
/* компактная карточка «Сегодня администратор» (заменяет первые правила выше) */
.sh{padding:10px 12px;gap:8px}
.sh-top{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.sh-lab{font-size:14px;line-height:1.3}
.sh-lab .muted{font-size:13.5px}
.sh-more{font-size:14px;font-weight:700;color:var(--text);text-decoration:none;border:1px solid var(--line);border-radius:16px;padding:6px 12px;min-height:34px;display:inline-flex;align-items:center}
.sh-p{display:flex;align-items:center;gap:10px}
.sh-pn{flex:1;min-width:0}
.sh-pn b{font-size:18px;line-height:1.25;overflow-wrap:anywhere}
.sh-ics{display:flex;gap:8px}
.sh-ic{width:46px;height:46px;border-radius:12px;border:1px solid var(--dark);background:var(--white);display:flex;align-items:center;justify-content:center;font-size:21px;text-decoration:none;color:inherit;padding:0}
.sh-warn{font-size:14px;font-weight:700;color:var(--red-deep)}
.sh-link{background:none;border:0;padding:6px 0;font-size:14.5px;font-weight:700;color:var(--muted);text-decoration:underline;text-align:left;min-height:36px;justify-self:start}
.sh-next{display:flex;align-items:center;justify-content:space-between;gap:10px;text-decoration:none;color:inherit;font-size:14.5px;border-top:1px solid var(--line);padding-top:8px}
.sh-next.todo{color:var(--red-deep)}
.sh-next b{white-space:nowrap}
/* «Дни рождения» (public/js/birthdays.js) и праздничная строка на главном экране */
.bd-row.today{border-color:var(--gold);border-width:2px;background:var(--tint-soft)}
.bd-d{font-weight:700}
.bd-strip{display:flex;gap:8px;align-items:center;background:var(--tint-gold);border:1px solid var(--gold);border-radius:14px;padding:10px 12px;font-size:15px;line-height:1.35}
.bd-strip b{font-weight:800}
.shwrap{display:grid;gap:10px}

/* Гиды: комиссия с чеков */
.gd-h{margin:10px 2px 0;font-weight:800;font-size:15px;color:var(--muted);letter-spacing:.02em}
.gd-rep{display:grid;gap:10px}
.gd-rep.gd-empty{border-left:6px solid var(--gold)}
.gd-sum{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.gd-sum>div{display:grid;gap:2px;padding:8px;border-radius:12px;background:var(--sand);min-width:0}
.gd-sum small{font-size:13px;color:var(--muted);font-weight:600}
.gd-sum b{font-family:'Cormorant Garamond',Georgia,serif;font-size:21px;line-height:1.1}
.gd-unk{display:grid;gap:10px}
.gd-unkrow{display:grid;gap:6px;padding:8px 10px;border-radius:12px;background:var(--white)}
.gd-act{display:grid;gap:8px}
.gd-card{gap:8px}
.gd-prev{display:grid;gap:8px}
.gd-prow{display:grid;gap:2px;padding:8px 10px;border-radius:12px;background:var(--sand)}
.gd-list{display:grid;gap:8px}
.gd-grow{display:grid;gap:3px;width:100%;text-align:left;font:inherit;color:var(--text);padding:10px 12px;border-radius:12px;border:1px solid var(--line);background:var(--white);min-height:56px}
.gd-grow:disabled{opacity:.7}
.gd-g1{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.gd-g1 .kindtag{margin:0}
.gd-rep.gd-day{border-left:6px solid var(--green)}
.gd-dayrows{display:grid;gap:6px}
.gd-dayrow{display:flex;gap:10px;align-items:flex-start;justify-content:space-between;padding:8px 10px;border-radius:12px;background:var(--sand)}
.gd-dayrow>b{white-space:nowrap}
.gd-dayrow.gd-daysum{background:transparent;padding:2px 10px;font-weight:700}
.gd-words{display:grid;gap:6px}
.gd-wordrow{display:flex;gap:8px;align-items:center;justify-content:space-between;padding:6px 10px;border-radius:12px;background:var(--sand)}
.gd-wordrow>.smallbtn{flex:none;min-width:0}
.linkbtn{border:none;background:none;padding:0 2px;font:inherit;font-weight:700;color:var(--text);text-decoration:underline;cursor:pointer}
/* Гиды: повышенный процент (акция на период, public/js/guideboost.js) */
.gb-card{display:grid;gap:10px;border-left:6px solid var(--gold)}
.gb-card.on{border-left-color:var(--green)}
.gb-item{display:grid;gap:8px;padding:10px 12px;border-radius:14px;background:var(--sand)}
.gb-item>.notice:not(.ok):not(.bad):not(.gold){background:var(--white)}
.gb-big{font-family:'Cormorant Garamond',Georgia,serif;font-size:32px;line-height:1;font-weight:700}
.gb-bar{height:8px;border-radius:5px;background:var(--sand-2);overflow:hidden}
.gb-bar>i{display:block;height:100%;background:var(--green);border-radius:5px}
.gb-dates{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:end}
.gb-dates>label.f{min-width:0}
.gb-prev,.gb-box,.gb-sec{display:grid;gap:10px}
.gb-sec{gap:8px}
.gb-route{display:grid;gap:6px}
.gb-route>div{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 10px;border-radius:12px;background:var(--sand);font-size:14px}
.gb-route b{text-align:right;font-size:14.5px}
.gb-sample{white-space:pre-wrap;word-break:break-word;background:var(--tint-soft);border:1px solid #E1D9C4;border-radius:12px;padding:10px 12px;font-size:14px;line-height:1.4}
.gb-box .linkbtn{justify-self:start;font-size:14px}
.gb-box textarea{overflow:hidden;resize:none}

/* ---- Окно «телефон» страницы показа /demo: приложение внутри рамки, как на телефоне со значком на экране ---- */
/* Внутри рамки нет «безопасных зон» телефона (env даёт 0), поэтому их размеры заданы здесь: чёлка сверху ~47px, полоска жестов снизу ~34px */
html.frame{--navh:calc(58px + 34px);cursor:default;-webkit-user-select:none;user-select:none;scrollbar-width:none}
html.frame input,html.frame textarea,html.frame [contenteditable]{-webkit-user-select:text;user-select:text}
html.frame *{scrollbar-width:none}
html.frame *::-webkit-scrollbar{display:none}
html.frame .top{padding-top:62px}
html.frame .helpbtn{top:56px}
html.frame .nav{padding-bottom:34px}
html.frame .bar{padding-bottom:calc(12px + 34px)}
html.frame .sheet{padding-bottom:calc(16px + 34px)}
html.frame .chead{padding-top:58px}
html.frame .clist{padding-bottom:calc(12px + 34px)}
html.frame .ccomp{padding-bottom:calc(8px + 34px)}
html.frame .cro{padding-bottom:calc(10px + 34px)}
html.frame #mbanner{top:56px}
html.frame .lbx-bar{padding-top:58px}
html.frame.scrolled body::before{content:'';position:fixed;top:0;left:0;right:0;height:47px;background:var(--cream);z-index:55;pointer-events:none}
html.frame #viewbar{display:none}
html.frame body.viewing{padding-top:0}
.fr-tap{position:fixed;width:46px;height:46px;margin:-23px 0 0 -23px;border-radius:50%;background:rgba(188,124,57,.42);border:2px solid rgba(188,124,57,.9);pointer-events:none;z-index:100001;animation:fr-tap .65s ease-out forwards}
@keyframes fr-tap{from{transform:scale(.4);opacity:1}to{transform:scale(1.6);opacity:0}}

/* Общий компьютер: предупреждение перед автоматическим выходом */
.idle-warn{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:95;width:min(92vw,380px);background:var(--white);border:2px solid var(--dark);border-radius:18px;padding:20px 18px 18px;display:grid;gap:12px;text-align:center;box-shadow:0 18px 60px rgba(40,24,12,.45)}
.idle-warn .idle-t{font-size:22px;font-weight:800;color:var(--text)}.idle-warn .idle-x{font-size:15px;line-height:1.4;color:var(--muted)}

/* «Столы вам пока не назначены»: заметная плашка вместо бледной строки */
.notables{display:flex;gap:12px;align-items:center;background:#FFF1D2;border:1px solid #E0A23A;border-left:6px solid #E0A23A;border-radius:14px;padding:14px 16px;color:var(--ink-brown)}
.notables b{display:block;font-size:17px;line-height:1.25;color:#4A2F1B;margin-bottom:4px}.notables .small{line-height:1.4;color:#6B5744}
.notables .nt-i{font-size:30px;line-height:1;flex:none}
.notables.today{background:#FFE9B8;border-color:#D08A1C;border-left-color:#C0392B;box-shadow:0 2px 10px rgba(192,57,43,.12)}

/* Предложения сезона: афиша слева, позиции справа, подсказки, проверка знаний */
.off-card{gap:10px}
.off-card.past{background:#FBF8F1}
.off-title{font-size:18px;line-height:1.25}
.off-row{display:flex;gap:12px;align-items:flex-start}
.off-pic{flex:0 0 104px;width:104px;border-radius:10px;border:1px solid var(--line);padding:0;background:none;overflow:hidden;cursor:zoom-in}
.off-pic img{display:block;width:100%;height:auto}
.off-items{display:grid;gap:10px;flex:1;min-width:0}
.off-item .off-price{font-weight:700;white-space:nowrap}
.off-tips{margin:6px 0 0;padding-left:18px;display:grid;gap:4px;font-size:14px;line-height:1.4}
.off-train>summary{cursor:pointer;min-height:44px;display:flex;align-items:center}
.off-quiz{display:grid;gap:10px;padding:4px 0 8px}
.qopt{display:block;width:100%;text-align:left;min-height:44px;padding:8px 12px;border-radius:12px;border:1px solid var(--line);background:var(--white);font-size:15px;font-weight:600;color:var(--text)}
.qopt.good{background:var(--green-bg);border-color:var(--green)}
.qopt.bad{background:var(--red-bg);border-color:var(--red)}
.off-edit{padding:10px}
.off-edit .row{gap:8px}
@media (max-width:380px){.off-row{flex-direction:column}.off-pic{flex:none;width:140px}}
.off-dates{display:grid;grid-template-columns:1fr 1fr;gap:8px}.off-dates input{min-width:0;width:100%}

/* «Цифры» маркетолога: показатели, столбики по неделям, источники гостей */
.mk-kpis{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.mk-kpi{background:var(--white);border:1px solid var(--line);border-radius:14px;padding:10px 12px;display:flex;flex-direction:column;gap:2px;min-width:0}
.mk-kpi.gold{border-color:var(--gold);background:var(--tint-soft)}
.mk-big{font-family:'Cormorant Garamond',Georgia,serif;font-size:34px;font-weight:700;line-height:1.05}
.mk-sub{display:flex;gap:6px;align-items:center;flex-wrap:wrap;min-height:22px}
.mk-chip{display:inline-flex;align-items:center;border-radius:11px;padding:1px 8px;font-size:12px;font-weight:700;line-height:20px;white-space:nowrap;background:var(--sand);color:var(--ink-brown)}
.mk-chip.up{background:var(--green-bg);color:var(--green-deep)}
.mk-chip.down{background:var(--red-bg);color:var(--red-deep)}
.mk-chip.new{background:var(--tint-gold);color:var(--gold-deep)}
.mk-ins{gap:8px;background:var(--tint-soft);border-color:var(--gold)}
.mk-in{display:flex;gap:10px;align-items:flex-start;line-height:1.35;font-size:15px}
.mk-ic{flex:none;width:24px;text-align:center;font-size:18px}
.mk-meter{height:10px;background:var(--sand);border-radius:5px;overflow:hidden}
.mk-meter i{display:block;height:10px;border-radius:5px;background:var(--gold)}
.mk-ch{display:grid;gap:3px;padding:8px 0;border-top:1px solid var(--sand)}
.mk-ch:first-child{border-top:0;padding-top:0}
.mk-name{font-weight:600;min-width:0}
.mk-cols{display:flex;align-items:flex-end;gap:3px}
.mk-cols.dense{gap:2px}
.mk-col{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:3px}
.mk-barbox{height:96px;width:100%;display:flex;align-items:flex-end;border-bottom:1px solid var(--line)}
.mk-barbox i{display:block;width:100%;border-radius:4px 4px 0 0}
.mk-val{font-size:11px;font-weight:800;height:14px;line-height:14px;white-space:nowrap}
.mk-lab{font-size:12px;font-weight:700;color:var(--muted);height:16px;line-height:16px}
.mk-axis{display:flex;justify-content:space-between;font-size:12px;color:var(--muted)}
.mk-split{display:flex;height:14px;border-radius:7px;overflow:hidden;gap:2px;background:var(--sand)}
.mk-split i{display:block;min-width:4px}
.mk-legend{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:13px}
.mk-dot{display:inline-block;width:10px;height:10px;border-radius:5px;margin-right:5px;vertical-align:-1px}
.mk-mini{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.mk-mini>div{background:var(--cream);border-radius:12px;padding:8px 10px;display:flex;flex-direction:column;gap:2px}
.mk-mini b{font-size:20px}
.mk-rank{flex:none;width:22px;height:22px;border-radius:11px;background:var(--sand);color:var(--ink-brown);font-size:12px;font-weight:800;display:flex;align-items:center;justify-content:center}

/* Закрытие смены: фото документов, замечания, цифры */
.cashcard,.fincard{border-left:5px solid var(--gold);text-decoration:none;color:inherit;gap:4px}
.cashcard.bad,.fincard.bad{border-left-color:var(--red);background:var(--red-bg)}
.cashcard .cashgo,.fincard .fingo{font-size:14px;font-weight:700;color:var(--text)}
.fincards{display:contents}
/* Именинники гостей на «Сегодня» (выпуск 206) */
.bdbriefbox{display:contents}
.bdbrief{border-left:5px solid var(--gold);gap:6px}
.bdbrief summary{cursor:pointer;list-style:none}
.bdbrief summary::-webkit-details-marker{display:none}
.bdbrief summary b::after{content:' ▾';color:var(--muted)}
.bdbrief[open] summary b::after{content:' ▴'}
.bdday{display:grid;gap:2px;padding-top:6px}
.bdlabel{font-weight:700;color:var(--muted)}
.bdrow{display:flex;align-items:center;gap:8px;padding:6px 0;border-top:1px solid var(--line)}
.bdwho{flex:1;min-width:0}
.bdwho b{overflow-wrap:anywhere}
/* Wollzy: проверка связи в настройках (выпуск 206) */
.wl-out{display:grid;gap:8px}
.wl-step{display:grid;gap:6px;padding:8px 0;border-top:1px solid var(--line)}
.wl-ok{color:var(--green-ink)}
.wl-bad{color:var(--red-ink)}
.wl-fmt{display:grid;gap:6px;padding-left:22px}
.wl-frow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:0 10px;align-items:baseline}
.wl-fname{min-width:0;overflow-wrap:anywhere}
.wl-ftext{grid-column:1 / -1}
.wl-shape{margin:6px 0 0;padding:8px;border-radius:8px;background:var(--cream);font-size:13px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere}
/* iiko: «Что видно про столы и банкеты» (выпуск 207) */
.it-res{display:grid;gap:10px}
.it-v{display:grid;grid-template-columns:auto minmax(0,1fr);gap:0 10px;align-items:baseline}
.it-m{font-size:18px;line-height:1.3}
.it-t{min-width:0;display:grid;gap:2px}
.it-det{border-top:1px solid var(--line)}
.it-det summary{min-height:44px;display:flex;align-items:center;font-weight:700;cursor:pointer}
.it-list{display:grid;gap:6px;padding:0 0 10px}
.it-row{overflow-wrap:anywhere}
.it-lists{display:grid;gap:8px;padding:10px;border:1px solid var(--line);border-radius:12px;background:var(--cream)}
.it-lrow{display:grid;gap:6px;padding-top:8px;border-top:1px solid var(--line)}
.it-lb{display:flex;gap:8px;flex-wrap:wrap}
.it-lb .smallbtn{flex:1 1 140px}
/* iiko: код блюда в «Каталоге блюд» (выпуск 217; в выпуске 213 здесь были стили загрузки таблицы «Наши блюда») */
.dc{display:grid;gap:6px;min-width:0;overflow-wrap:anywhere}
.dc-lab{display:grid;gap:4px;font-weight:600;color:var(--muted)}
.dc-in{font-variant-numeric:tabular-nums}
.dc-find{display:grid;gap:8px;padding:10px;border:1px solid var(--line);border-radius:12px;background:var(--cream)}
.dc-find[hidden]{display:none}
.dc .smallbtn[hidden]{display:none}
.dc-res{display:grid;gap:6px}
.dc .dc-res .smallbtn{height:auto;min-height:44px;padding:8px 12px;text-align:left;white-space:normal;justify-content:flex-start;overflow-wrap:anywhere}
.dc>.row{min-width:0}
/* iiko: файл с блюдами — коды, цены, новые блюда (выпуск 221) */
.ii-body{display:grid;gap:12px;min-width:0}
.ii-sum,.ii-end,.ii-group{display:grid;gap:8px;min-width:0}
.ii-group{padding-top:10px;border-top:2px solid var(--line)}
.ii-row{display:flex;gap:10px;align-items:flex-start;padding:8px 0;border-top:1px solid var(--line);min-width:0}
.ii-row input[type=checkbox]{flex:none;width:22px;height:22px;margin:1px 0 0;accent-color:var(--dark)}
.ii-txt{display:grid;gap:3px;min-width:0;flex:1 1 auto;font-size:14px;line-height:1.35;overflow-wrap:anywhere}
.ii-check{display:block}
.ii-note{color:var(--gold-deep)}
.ii-warn{color:var(--red-ink);font-size:14px}
.ii-bad{color:var(--red-ink);font-weight:600}
.ii-opts{display:grid;gap:6px;margin-top:4px}
.smallbtn.ii-opt{height:auto;min-height:44px;padding:8px 12px;display:grid;gap:2px;justify-items:start;text-align:left;white-space:normal;overflow-wrap:anywhere}
.ii-opt .ii-sub{font-size:13.5px;font-weight:500;opacity:.85}
.ii-opt .ii-warn{font-size:13.5px;font-weight:600}
.smallbtn.solid .ii-warn{color:#FFD9CF}
.ii-sec .card{min-width:0}
/* iiko: соответствие столов (выпуск 214) */
.tm-rows{display:grid;gap:0;padding:0 0 10px}
.tm-row{display:grid;gap:6px;padding:10px 0;border-top:1px solid var(--line);overflow-wrap:anywhere}
.tm-row:first-child{border-top:none}
.tm-head{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}
.tm-mark{min-width:22px}
.tm-note{font-size:14px;line-height:1.4;min-width:0}
.tm-note.ok{color:var(--green-ink)}
.tm-note.warn{color:var(--gold-deep)}
.tm-note.bad{color:var(--red-ink);font-weight:600}
.tm-note.muted{color:var(--muted)}
.tm-pick{display:grid;gap:8px;padding:10px;border:1px solid var(--line);border-radius:12px;background:var(--cream)}
.tm-pick[hidden]{display:none}
.tm-pick select{width:100%;min-width:0;min-height:44px;border:1px solid var(--line);border-radius:10px;background:var(--white);font:inherit;font-size:15px;padding:0 10px;color:var(--text)}
.tm-pick .smallbtn{height:auto;padding:8px 14px;text-align:left;white-space:normal;justify-content:flex-start}
.tm-row>.smallbtn{justify-self:start}
/* Брони в iiko: что уйдёт (выпуск 214) */
.rs-rows{display:grid;gap:0;padding:0 0 10px}
.rs-row{display:grid;gap:6px;padding:10px 0;border-top:1px solid var(--line);overflow-wrap:anywhere}
.rs-row:first-child{border-top:none}
.rs-head{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}
.rs-note{font-size:14px;line-height:1.4;min-width:0}
.rs-note.bad{color:var(--red-ink);font-weight:600}
.rs-note.muted{color:var(--muted)}
.rs-row>.smallbtn{justify-self:start}
.rs-note.ok{color:var(--green-ink)}
.rs-note.wait{color:var(--gold-deep)}
.rs-note.gray{color:var(--muted)}
/* Отправка броней в iiko (выпуск 215) */
.sd-headline{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.sd-headline>.small{flex:1 1 200px;min-width:0}
.sd-pill{display:inline-flex;align-items:center;min-height:28px;padding:0 12px;border-radius:14px;font-size:13px;font-weight:700;background:var(--sand-2);color:var(--ink-brown);white-space:nowrap}
.sd-pill.ok{background:var(--green);color:#fff}
.sd-pill.bad{background:var(--red);color:#fff}
.sd-step{display:flex;gap:8px;align-items:flex-start;font-size:14px;line-height:1.4}
.sd-mark{flex:none;min-width:22px}
.sd-form{display:grid;gap:10px;padding:10px;border:1px solid var(--line);border-radius:12px;background:var(--cream)}
.sd-form input,.sd-form select{width:100%;min-width:0;min-height:44px;border:1px solid var(--line);border-radius:10px;background:var(--white);font:inherit;font-size:15px;padding:0 10px;color:var(--text)}
.sd-two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.sd-two>*{min-width:0}
.sd-acts{display:flex;gap:8px;flex-wrap:wrap}
/* Отправка броней в iiko по кнопке (выпуск 216): переключатель режимов и окно «что уйдёт» */
.sd-modes{display:flex;flex-wrap:wrap;gap:6px}
.sd-mode{flex:1 1 auto;min-height:44px;padding:0 8px;white-space:nowrap;border-radius:12px;border:1px solid var(--line);background:var(--white);color:var(--text);font-size:14px;font-weight:700;line-height:1.2}
.sd-mode.on{background:var(--dark);border-color:var(--dark);color:var(--on-dark)}
.sd-mode:disabled{opacity:.5}
.sd-whens{display:flex;flex-wrap:wrap;gap:6px}
.sd-when{flex:1 1 auto;min-height:44px;padding:6px 10px;border-radius:12px;border:1px solid var(--line);background:var(--white);color:var(--text);font-size:14px;font-weight:700;line-height:1.2}
.sd-when.on{background:var(--dark);border-color:var(--dark);color:var(--on-dark)}
.sd-when:disabled{opacity:.5}
.sd-pvbox{display:grid;gap:8px}
.sd-pv{display:grid;grid-template-columns:minmax(84px,32%) 1fr;gap:8px;font-size:14px;line-height:1.4;overflow-wrap:anywhere}
.sd-pv>*{min-width:0}
.sd-pvnote{display:grid;gap:2px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--white);overflow-wrap:anywhere}
.chip:disabled{opacity:.5}
.cc-btns{display:flex;gap:8px;flex-wrap:wrap}
.cc-btns .bigbtn{flex:1 1 220px}
.cc-photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:10px}
.cc-ph{position:relative;display:flex;flex-direction:column;gap:4px}
.cc-img{padding:0;border:1px solid var(--line);border-radius:10px;background:var(--sand);overflow:hidden;aspect-ratio:3/4;display:block}
.cc-img img{width:100%;height:100%;object-fit:cover;display:block}
.cc-ph .cc-x{position:absolute;top:4px;right:4px;width:32px;height:32px;border-radius:16px;border:none;background:rgba(42,26,14,.75);color:#fff;font-size:14px;display:flex;align-items:center;justify-content:center}
.cc-bad{color:var(--red-deep);font-weight:600}
.cc-checks{display:grid;gap:8px}
.cc-chk{display:flex;gap:8px;align-items:flex-start;padding:8px 10px;border-radius:12px;background:var(--white);border:1px solid var(--line);line-height:1.35}
.cc-chk.bad{background:var(--red-bg);border-color:#E3B3A8}
.cc-chk.warn{background:var(--tint-gold);border-color:#E5C275}
.cc-chk.ok{background:var(--green-bg);border-color:#C5D5A8}
.cc-chk .cc-ic{flex:none;width:22px;text-align:center}
.cc-chk b{font-weight:700;display:block}
details.cc-ok>summary{min-height:44px;display:flex;align-items:center;font-weight:700;cursor:pointer;list-style:none}
details.cc-ok>summary::-webkit-details-marker{display:none}
details.cc-ok .cc-chk{margin-top:6px}
.cc-doc{display:grid;gap:6px;padding:8px 0;border-top:1px solid var(--sand)}
.cc-doc:first-of-type{border-top:0}
.cc-doc input{width:100%;min-height:44px;border:1px solid var(--line);border-radius:10px;padding:0 12px;font-size:15px;background:var(--white)}
.cc-formhead{display:grid;gap:2px;margin-top:4px}
.cc-body{display:grid;gap:12px;padding:0 14px 14px}
.cc-sum{display:grid;gap:10px}
.cc-sum-head{border-radius:12px;padding:12px;background:var(--sand);color:var(--ink-brown);display:grid;gap:4px;line-height:1.4}
.cc-link{border:none;background:transparent;color:var(--text);font-weight:700;font-size:14px;text-decoration:underline;min-height:44px;padding:0 4px}
.cc-formbody{display:grid;gap:10px;padding:0 14px 14px}
.cc-formbody details.sect{margin:0;border-color:var(--sand)}
.cc-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.cc-grid input,.cc-lgrid input{width:100%;min-height:44px;border:1px solid var(--line);border-radius:10px;padding:0 10px;font-size:16px;background:var(--white)}
.cc-grid input:disabled,.cc-lgrid input:disabled{background:var(--sand);color:var(--text)}
.cc-list{display:grid;gap:8px}
.cc-lrow{display:grid;gap:6px;padding:10px;border-radius:12px;background:var(--sand)}
.cc-lgrid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.cc-lx{justify-self:end;border:none;background:transparent;color:var(--red-ink);font-weight:700;min-height:36px;font-size:14px}
.cc-day{text-decoration:none;color:inherit}
.cc-st{font-size:14px;font-weight:700;padding:2px 10px;border-radius:12px;background:var(--sand);color:var(--ink-brown);white-space:nowrap}
.cc-st.ok{background:var(--green-bg);color:var(--green-deep)}
.cc-st.bad{background:var(--red-bg);color:var(--red-deep)}
.cc-st.gold{background:var(--tint-gold);color:var(--gold-deep)}
@media (max-width:360px){.cc-grid,.cc-lgrid{grid-template-columns:1fr}}

/* «Ваши часы» у официанта и «Вопросы по часам» у руководства */
.hrs{display:grid;gap:10px}
.hrs-total{font-size:15px}
.hrs-total b{font-size:22px}
.hrs-y{background:var(--sand);border-radius:12px;padding:10px 12px;display:grid;gap:6px;justify-items:start}
.hrs-y .row{width:100%}
.hrs-st{font-weight:700;font-size:14px}
.hrs-st.open{color:var(--gold-deep)}
.hrs-st.ok{color:var(--green-ink)}
.hrs-st.kept{color:var(--text)}
.hrs-list{display:grid;gap:0}
.hrs-row{display:grid;grid-template-columns:1fr auto 52px;gap:8px;padding:7px 0;border-top:1px solid var(--line);font-size:14px;align-items:center}
.hrs-row b{text-align:right}
.hrs-more summary{cursor:pointer;font-size:14px;font-weight:600;padding:6px 0}
.hrs-opts{display:grid;gap:8px}
.hrs-opt{text-align:left;min-height:48px;border-radius:12px;border:1px solid var(--dark);background:transparent;padding:10px 14px;font-weight:600;font-size:15px}
.hrs-opt.on{background:var(--dark);color:var(--on-dark)}
.hrs-times{display:grid;gap:6px}
.hrs-times input{width:100%}
.hrs-q{display:grid;gap:6px;border-left:5px solid var(--gold)}
.hrs-fix{display:grid;gap:8px}
.hrs-say{font-style:italic;background:var(--sand);border-radius:10px;padding:8px 10px;font-size:14px}
.hrs-done{display:grid;gap:2px;padding:10px 0;border-top:1px solid var(--line)}
.hrs-y.todo{box-shadow:0 0 0 2px var(--gold)}
.hrs-y .bigbtn{width:100%}
.hrs-ackline{font-size:14px;font-weight:600}
.hrs-credit{font-size:14px;font-weight:600;color:var(--green-ink)}
.hrs-row.new{background:var(--tint-gold);border-radius:8px;padding-left:6px;padding-right:6px}
.hrs-row.flash{animation:hrsflash 2.4s ease-out}
.hrs-bump{display:inline-block;animation:hrsbump 1.4s ease-out}
@keyframes hrsbump{0%{transform:scale(1)}30%{transform:scale(1.28);color:var(--green-ink)}100%{transform:scale(1)}}
@keyframes hrsflash{0%{background:#F5D98B}100%{background:var(--tint-gold)}}
@media (prefers-reduced-motion:reduce){.hrs-bump,.hrs-row.flash{animation:none}}
.hrs-miss{background:var(--red-bg);color:var(--red-ink);border-radius:10px;padding:8px 10px;font-size:14px;font-weight:600}
.hrs-missline{color:var(--red-ink);font-weight:600}

/* «Бар»: кабинет бариста, чек-листы открытия и закрытия, отчёты */
.barlink{flex-direction:row;align-items:center;gap:12px;text-decoration:none;color:inherit;min-height:60px}
.barlink .bl-i{font-size:28px;line-height:1;flex-shrink:0}
.bc{display:grid;gap:14px}
.bc-g{display:grid;gap:8px}
.bc-list{display:grid;gap:8px}
.bc-it{display:grid;gap:4px}
.bc-prog{display:grid;gap:8px}
.bc-track{height:10px;border-radius:6px;background:var(--sand);overflow:hidden}
.bc-track i{display:block;height:100%;background:var(--green);border-radius:6px;transition:width .25s}
.bc-hw{display:grid;gap:4px;justify-items:start;padding:0 4px}
.bc-q{background:none;border:0;padding:6px 0;min-height:32px;color:var(--muted);font-weight:700;font-size:14px;text-decoration:underline;text-underline-offset:3px}
.bc-hint{background:var(--sand);border-radius:10px;padding:8px 10px;color:var(--ink-brown);line-height:1.45}
.bc-info{border-radius:10px;padding:6px 10px;font-weight:700}
.bc-info.ok{background:var(--green-bg);color:var(--green-ink)}
.bc-info.warn{background:var(--red-bg);color:var(--red-ink)}
.bc-stock,.bc-photo{display:grid;gap:8px}
.bc-stock.done,.bc-photo.done{border-color:var(--green-line);background:var(--green-bg)}
.bc-opts{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.bc-opt{min-height:48px;border-radius:12px;border:1px solid var(--dark);background:transparent;font-weight:700;font-size:15px}
.bc-opt.on.ok{background:var(--green);border-color:var(--green);color:#fff}
.bc-opt.on.low{background:#B8893B;border-color:#B8893B;color:#fff}
.bc-opt.on.out{background:var(--red);border-color:var(--red);color:#fff}
.bc-note input{width:100%;min-height:44px;border:1px solid var(--line);border-radius:10px;padding:0 12px;font-size:15px;background:var(--white)}
.bc-thumbs{display:flex;flex-wrap:wrap;gap:8px}
.bc-th{position:relative;width:92px;height:92px}
.bc-img{display:block;width:100%;height:100%;padding:0;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--sand)}
.bc-img img{width:100%;height:100%;object-fit:cover;display:block}
.bc-x{position:absolute;top:-8px;right:-8px;width:32px;height:32px;border-radius:50%;border:2px solid #fff;background:var(--dark);color:var(--on-dark);font-size:14px;line-height:1}
.bc-foot{display:grid;gap:8px}
.bh-g{display:grid;gap:4px}
.bh-t{font-weight:800;font-size:14px}
.bh-t.ok{color:var(--green-ink)}
.bh-t.no{color:var(--red-ink)}
.bh-l{margin:0;padding-left:20px;display:grid;gap:4px;font-size:14px;line-height:1.4;color:var(--ink-brown)}
.bh-final{display:grid;gap:4px;font-weight:500}
.bc-foot input{width:100%;min-height:48px;border:1px solid var(--line);border-radius:12px;padding:0 12px;font-size:15px;background:var(--white)}
.bc-done{display:grid;gap:6px;border-color:var(--green-line);background:var(--green-bg)}
.br-day{display:grid;gap:8px}
.br-cells{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.br-c{display:grid;gap:2px;align-content:start;text-decoration:none;color:inherit;border-radius:12px;padding:10px 12px;border:1px solid var(--line);background:var(--white);min-height:64px}
.br-c.ok{border-color:var(--green-line);background:var(--green-bg)}
.br-c.warn{border-color:#B8893B;background:var(--tint-gold)}
.br-c.none{background:var(--sand)}

/* «Обход зала»: обход по залам и санузлам, отчёты, настройки (выпуск 196) */
.bc-opts.n2{grid-template-columns:repeat(2,1fr)}
.bc-opts.sm .bc-opt{font-size:14.5px;padding:0 3px}
.bc-opt.on.bad{background:var(--red);border-color:var(--red);color:#fff}
.bc-opt.on.cold{background:#3F7CA8;border-color:#3F7CA8;color:#fff}
.bc-opt.on.hot{background:#C8602B;border-color:#C8602B;color:#fff}
.bc-stock.flag{border-color:#B8893B;background:var(--tint-gold)}
.hw-prev{color:#8A5A12;font-weight:600}
.hw-zh{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}
.hw-flags{display:grid;gap:4px;border-color:#B8893B;background:var(--tint-gold)}
.hw-extra{display:grid;gap:4px}
.hw-walk{color:inherit;text-decoration:none;min-height:32px;display:flex;align-items:center;font-weight:600}

/* Главный экран спокойнее: «Сегодня администратор» тихой строкой, акции одной строкой (развернуть можно по нажатию) */
.sh.sh-slim{background:var(--white);border:1px solid var(--line);border-left:4px solid var(--line);border-radius:12px;padding:8px 12px;gap:4px}
.sh.sh-slim.sh-ok{border-left-color:var(--line)}
.sh.sh-slim.sh-none,.sh.sh-slim.sh-declined{background:var(--white);border-left-color:var(--gold)}
.sh-slim .sh-lab{font-size:14.5px;color:var(--muted);font-weight:600}
.sh-slim .sh-lab b{font-weight:700;color:var(--muted)}
.sh-slim .sh-more{font-size:14px;min-height:30px;padding:4px 10px}
.sh-slim .sh-p{gap:8px}
.sh-slim .sh-pn b{font-size:16px;font-weight:700}
.sh-slim .sh-st{font-size:13.5px;margin-left:8px}
.sh-slim .sh-ic{width:38px;height:38px;border-radius:10px;font-size:18px}
.promo{background:#FFF3D6;border-radius:12px;padding:8px 12px;display:grid;gap:6px;font-size:14px;line-height:1.35;color:var(--ink-brown)}
.promo-row{display:grid;gap:1px}
.promo-row+.promo-row{border-top:1px solid rgba(91,63,43,.15);padding-top:6px}
.promo-row.standing{border-left:4px solid #5B7F2B;padding-left:8px}
.promo-row.standing+.promo-row{border-top:0}
.promo-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.promo-head b{font-size:14.5px}
.promo-btn{background:none;border:0;padding:0 2px;font:inherit;font-size:14.5px;font-weight:700;color:var(--text);text-decoration:underline;min-height:32px;cursor:pointer;white-space:nowrap}
.promo-line{font-size:14px;overflow-wrap:anywhere}
.promo-more{gap:4px;margin-top:2px;font-size:14.5px}
.promo-more>div:first-child{white-space:pre-line;overflow-wrap:anywhere}
.promo-row .promo-line+.promo-line{margin-top:4px}
.promo-items{display:grid;gap:6px;margin-top:2px}
.promo-item{display:grid;gap:2px}
.promo-note{font-size:14px;font-weight:700;color:#8A3A1F;line-height:1.35}
/* Афиша при входе (выпуск 193): новая акция или объявление самым верхом главного экрана, первые три входа, пока не нажали «Ознакомлен».
   Блик и свечение идут три раза и гаснут сами; при «уменьшить движение» остаётся яркая рамка без движения. */
.poster-list{display:grid;gap:10px}
.poster>*{min-width:0}
.poster{position:relative;overflow:hidden;display:grid;gap:8px;padding:12px 14px 14px;border-radius:16px;border:2px solid var(--gold);background:linear-gradient(135deg,#FFF9E8 0%,#FCE7B0 55%,#F6D285 100%);color:var(--text);box-shadow:0 6px 18px rgba(184,137,59,.3);animation:posterGlow 2.4s ease-in-out 3}
.poster::after{content:"";position:absolute;top:0;bottom:0;left:0;width:55%;background:linear-gradient(105deg,rgba(255,255,255,0) 0%,rgba(255,255,255,.5) 50%,rgba(255,255,255,0) 100%);transform:translateX(-140%) skewX(-12deg);animation:posterSheen 3.2s ease-in-out .5s 3;pointer-events:none}
.poster.bday{border-color:#D9604A;background:linear-gradient(135deg,#FFF3EE 0%,#FFD9CC 55%,#FFC2AE 100%);box-shadow:0 6px 18px rgba(217,96,74,.28)}
.poster.ann{border-color:var(--dark);background:linear-gradient(135deg,var(--tint-soft) 0%,var(--sand) 100%);box-shadow:0 6px 18px rgba(58,36,22,.2)}
.poster.done{animation:none;box-shadow:none}
.poster.done::after{display:none}
.poster-ribbon{justify-self:start;display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:999px;background:var(--dark);color:var(--on-dark);font-size:13.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}
.poster.bday .poster-ribbon{background:var(--red)}
.poster-ic{display:inline-block;animation:posterBounce 1.2s ease-in-out .3s 3}
.poster-title{margin:0;font-size:19px;line-height:1.25;font-weight:800;overflow-wrap:anywhere}
.poster-text{white-space:pre-line;font-size:15px;line-height:1.45;overflow-wrap:anywhere}
.poster-text[hidden],.poster-more[hidden]{display:none}
.poster-more{justify-self:start;min-height:40px}
.poster-acts{display:grid;gap:8px;margin-top:2px}
.poster-later{min-height:40px;border:1px solid rgba(58,36,22,.35);border-radius:12px;background:transparent;font-size:14px;font-weight:700;color:var(--text)}
.poster-hint{font-size:13.5px;line-height:1.35;color:var(--muted)}
.poster-hint:empty{display:none}
@keyframes posterSheen{0%{transform:translateX(-140%) skewX(-12deg)}55%,100%{transform:translateX(280%) skewX(-12deg)}}
@keyframes posterGlow{0%,100%{box-shadow:0 6px 18px rgba(184,137,59,.3)}50%{box-shadow:0 0 0 5px rgba(224,162,58,.35),0 8px 24px rgba(184,137,59,.5)}}
@keyframes posterBounce{0%,100%{transform:none}40%{transform:translateY(-4px) rotate(-10deg)}70%{transform:translateY(0) rotate(8deg)}}
@media (prefers-reduced-motion:reduce){.poster,.poster-ic{animation:none}.poster::after{display:none}}
/* «Ознакомились 5 из 8» у руководства и маркетинга: под акцией, объявлением и на карточке акции */
.ackline{display:grid;gap:3px;margin-top:3px;font-size:14px;line-height:1.35}
.ackline-head{display:flex;align-items:center;justify-content:space-between;gap:8px;font-weight:700}
.ackline.ok .ackline-head{color:var(--green-ink)}
.ackline.none{color:var(--muted)}
.ackline .annbar{height:6px}
.ackline-names{font-size:14px;overflow-wrap:anywhere}
.ackline-names[hidden],.poster-hint[hidden]{display:none}
.ackline-when{font-size:13px;color:var(--muted)}
.bevwrap:empty{display:none}
/* Обслуживание оборудования, «Кофейная минутка», «Школа бариста» */
.care-late{border-color:var(--red)}
.care-due{border-color:#E0A23A}
.tipcard{background:var(--tint-soft);border-color:#E8D3A0;gap:4px}
.barlink .tag{flex:none}
.bs-steps ol{margin:0;padding-left:20px;display:grid;gap:8px;line-height:1.45}
.bs-links{display:grid;gap:8px}
a.bs-link{flex-direction:row;align-items:center;gap:10px;text-decoration:none;color:inherit;min-height:52px}
.bs-q{gap:10px}
.bs-q.done{border-color:var(--green-line);background:var(--green-bg)}
.bs-opts{display:grid;gap:8px}
.bs-opt{min-height:48px;border-radius:12px;border:1px solid var(--dark);background:transparent;font-size:15px;font-weight:600;text-align:left;padding:8px 14px;line-height:1.3}
.bs-opt.right{background:var(--green);border-color:var(--green);color:#fff}
.bs-opt.wrong{border-color:var(--red);color:var(--red-ink);background:var(--red-bg)}
.bs-opt:disabled:not(.right):not(.wrong){opacity:.55}
.bs-fb{min-height:0}
.bs-fb.ok{color:var(--green-ink);font-weight:600}
.bs-fb.bad{color:var(--red-ink);font-weight:700}
.bs-dots{display:flex;gap:4px;flex-wrap:wrap}
.bs-dots i{width:18px;height:18px;border-radius:6px;background:var(--sand-2);display:block}
.bs-dots i.passed{background:var(--green)}
.bs-dots i.read{background:#E0A23A}

/* ОПиУ в дашборд кнопкой (public/js/finopiu.js): плашка над разделами 3 и 4 и окно загрузки */
.op-banner{display:flex;flex-direction:column;gap:6px}
.op-small{font-size:14px;color:var(--muted);line-height:1.45}
.op-due{color:var(--warn);font-weight:700}
.op-warn{color:var(--warn);font-weight:600}
.op-actions{margin-top:2px}
.op-body{display:flex;flex-direction:column;gap:10px}
.op-list{display:flex;flex-direction:column;gap:8px}
.op-sub{font-weight:800;font-size:14px}
.op-row{display:flex;align-items:center;gap:10px;background:var(--white);border:1px solid var(--line);border-radius:12px;padding:8px 10px}
.op-grow{flex:1;min-width:0}
.op-card{display:flex;flex-direction:column;gap:5px;background:var(--white);border:1px solid var(--line);border-radius:12px;padding:10px 12px}
.op-card.op-hard{border-color:#E0B25A;background:#FFF9EC}
.op-head{display:flex;align-items:center;gap:10px}
.op-head input[type=checkbox]{width:22px;height:22px;flex:0 0 auto}
.op-badge{margin-left:auto;font-size:12px;font-weight:700;color:var(--muted)}
.op-flag{font-size:14px;color:var(--warn);font-weight:600;line-height:1.4}

/* «Гиды: отчёт» у руководителя */
.gr-sum{border-color:var(--gold);gap:6px}
.gr-h{margin:16px 2px 6px;font-size:17px}
.gr-bar{grid-column:2/-1;height:6px;border-radius:3px;background:var(--sand);overflow:hidden}
.gr-bar i{display:block;height:100%;border-radius:3px;background:var(--gold)}
.gr-tags{grid-column:2/-1;display:flex;flex-wrap:wrap;gap:6px;margin-top:2px}
.gr-tags .tag{white-space:normal;max-width:100%;line-height:1.3}
.gr-trend{gap:6px}
.gr-trend .h{font-weight:800}
.gr-trow{display:grid;grid-template-columns:76px 1fr;gap:2px 10px;align-items:center;padding:4px 0}
.gr-trow .gr-bar{grid-column:2}
.gr-trow .gr-tv{grid-column:2;font-size:14px;color:var(--muted)}
.gr-trow .gr-tm{font-size:14px}
.gr-trow.on .gr-tm{font-weight:800}

/* Медкнижки: карточка внизу экрана сотрудника, плашка после «Ознакомлен», строка в «Команде» */
.mb-slot:empty{display:none}
.mb-card{gap:6px}
.mb-card.ok{background:var(--green-bg);border-color:var(--green-line);color:var(--green-deep);padding-top:10px;padding-bottom:10px}
.mb-card.warn{background:var(--tint-gold);border:1.5px solid var(--gold);color:var(--gold-deep)}
.mb-card.info{background:var(--tint-gold);border-color:var(--gold);color:var(--gold-deep)}
.mb-card.bad{background:var(--red-bg);border:2px solid var(--red);color:var(--red-deep)}
.mb-card .row{gap:8px;align-items:center}
.mb-sheet{border-radius:12px;padding:12px;font-size:16px;line-height:1.45}
.mb-sheet.bad{background:var(--red-bg);border:2px solid var(--red);color:var(--red-deep)}
.mb-sheet.warn,.mb-sheet.info{background:var(--tint-gold);border:1.5px solid var(--gold);color:var(--gold-deep)}
.mb-sum{gap:6px}
.mb-sum .chip{align-self:flex-start}
.mb-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap;border-radius:10px;padding:6px 10px;font-size:14px;background:var(--sand);color:var(--ink-brown)}
.mb-line .smallbtn{min-height:36px;padding:0 12px;font-size:14px}
.mb-line.ok{background:var(--green-bg);color:var(--green-deep)}
.mb-line.warn,.mb-line.info{background:var(--tint-gold);color:var(--gold-deep)}
.mb-line.bad{background:var(--red-bg);color:var(--red-deep)}
/* плашка «Медкнижка действует»: выезжает, галочка рисуется, через несколько секунд растворяется */
.mb-flash{position:fixed;width:max-content;left:50%;bottom:calc(var(--navh) + 92px);transform:translateX(-50%);z-index:49;display:flex;align-items:center;gap:10px;max-width:calc(100% - 32px);padding:12px 18px;border-radius:16px;background:var(--green-bg);border:1.5px solid var(--green-line);color:var(--green-deep);font-size:15px;font-weight:700;box-shadow:0 6px 20px rgba(42,26,14,.18);pointer-events:none;animation:mbflash 3.6s ease both}
.mb-tick{flex:none;width:28px;height:28px;border-radius:50%;background:var(--green);color:#fff;display:flex;align-items:center;justify-content:center;font-size:16px;animation:mbtick .5s .15s ease-out both}
@keyframes mbflash{0%{opacity:0;transform:translateX(-50%) translateY(18px) scale(.92)}12%{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}80%{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}100%{opacity:0;transform:translateX(-50%) translateY(-10px) scale(.98)}}
@keyframes mbtick{0%{transform:scale(.2);opacity:0}60%{transform:scale(1.25);opacity:1}100%{transform:scale(1)}}
@media (prefers-reduced-motion:reduce){.mb-flash{animation:mbfade 3.6s linear both}.mb-tick{animation:none}@keyframes mbfade{0%,85%{opacity:1}100%{opacity:0}}}

/* Бронь по звонку: быстрый вход «Надиктовать» / «Самому» */
.qv{display:flex;flex-direction:column;gap:10px;background:linear-gradient(180deg,#FFF8E8,#F7EEDC);border-color:var(--gold)}
.qv-row{display:flex;gap:10px}
.qv-mic{flex:2;min-height:64px;font-size:18px;gap:8px;box-shadow:0 2px 0 rgba(58,36,22,.18)}
.qv-self{flex:1;min-height:64px;font-size:15px;padding:0 10px}
.qv.slim{padding:10px 12px}
.qv.slim .qv-mic{flex:1;min-height:48px;font-size:16px}
.qv-heard{display:flex;flex-direction:column;gap:6px;align-items:flex-start;padding:10px 12px;border-radius:12px;background:var(--white);border:1px solid var(--line)}
.qv-text{font-size:16px;line-height:1.4;white-space:pre-wrap;word-break:break-word;color:var(--text);max-height:24vh;overflow:auto;width:100%}
.qv>div:empty{display:none}
/* «Неделя» и «Цифры» руководителя маркетинга: подписи, «было N», календарь */
.mk-was{font-weight:600;opacity:.8}
.mk-note{line-height:1.3;margin-top:2px}
.mk-mini.mk-mini2{grid-template-columns:repeat(2,1fr)}
.mk-mini>div .mk-chip{align-self:flex-start;margin-top:2px}
.mcell.mk::after{content:'';position:absolute;top:4px;right:4px;width:9px;height:9px;border-radius:50%;background:var(--gold);border:1.5px solid #fff}
.mcell.quiet{border:1px dashed #5B7A8C}
.stat small.muted{display:block;line-height:1.25;margin-top:2px}
details.card>summary{cursor:pointer}

/* Кабинет агента: календарь месяца (классы с префиксом agd-: общие .busy, .empty, .on в приложении делают другое) */
.agrid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.agw{text-align:center;font-size:13px;font-weight:700;color:var(--muted);padding:2px 0}
.agd{min-height:48px;border-radius:10px;border:1px solid var(--line);background:var(--white);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:2px;font-size:15px}
.agd.agd-none{border:0;background:transparent;pointer-events:none}
.agd .agn{font-size:12px;line-height:1;color:var(--muted);white-space:nowrap}
.agd.agd-has{background:var(--sand)}
.agd.agd-past{opacity:.45}
.agd.agd-today{border-color:var(--gold);border-width:2px}
.agd.agd-sel{background:var(--dark);border-color:var(--dark);color:var(--on-dark)}
.agd.agd-sel .agn{color:#F7EEDC}
/* Учредитель (выпуск 265): календарь с суммами, точки занятых залов, дежурный администратор, путь заявки */
.agd.fcd{min-height:58px;padding:3px 1px}
.agd .agn.fsum{font-size:11px;color:var(--text)}
.agd.agd-sel .agn.fsum{color:#F7EEDC}
.fdots{display:flex;gap:2px;margin-top:1px}
.fdots i{width:5px;height:5px;border-radius:50%;background:var(--line);display:block}
.fdots i.on{background:var(--gold)}
.agd.agd-sel .fdots i{background:rgba(247,238,220,.35)}
.agd.agd-sel .fdots i.on{background:#F7EEDC}
.fc-month{font-size:14px;line-height:1.4}
.fd-duty{display:grid;gap:8px}
.fd-h{font-weight:700}
.fd-p{display:flex;align-items:center;gap:10px}
.fr-card{display:grid;gap:6px}
.fr-card.fr-open{border-left:5px solid var(--gold)}
.fr-line{font-weight:600}
.fr-steps{display:grid;gap:2px;font-size:13px;border-top:1px dashed var(--line);padding-top:6px}
.fr-comment{background:var(--sand);border-radius:10px;padding:8px 10px;white-space:pre-line}
.fr-sent{display:grid;gap:8px}

/* «Финансы → Чек»: средний чек по категориям, бизнес-ланчи, конкурсы и акции */
.fin .ck-block{display:flex;flex-direction:column;gap:12px}
.fin .ck-slot{display:flex;flex-direction:column;gap:12px}
.fin .ck-slot:empty{display:none}
.fin table.ck-table td,.fin table.ck-table th{vertical-align:top}
.fin table.ck-table td,.fin table.ck-table th{padding:7px 6px}
.fin table.ck-table th:first-child,.fin table.ck-table td:first-child{min-width:6.5em;max-width:8.5em}
.fin .ck-th-sub{font-size:12.5px;font-weight:500;color:var(--muted);line-height:1.3;margin-top:2px;white-space:normal}
.fin .ck-d{font-size:12.5px;font-weight:700;line-height:1.3;margin-top:2px}
.fin .ck-scope{color:var(--text-primary);font-weight:700;margin-bottom:3px}
.fin .ck-with{margin-top:7px;padding-top:7px;border-top:1px dashed var(--line)}
.fin .ck-with b{color:var(--text-primary);font-weight:800}
.fin .ck-was{display:block;font-size:12px;font-weight:500;color:var(--muted);line-height:1.25;white-space:nowrap;font-variant-numeric:tabular-nums}
.fin .ck-rows{display:flex;flex-direction:column;gap:10px;margin-top:6px}
.fin .ck-row-head{display:flex;justify-content:space-between;gap:10px;align-items:baseline}
.fin .ck-name{font-size:14.5px;font-weight:700;color:var(--text-primary);line-height:1.3}
.fin .ck-cat{font-weight:500;color:var(--muted);font-size:13.5px}
.fin .ck-val{font-size:14.5px;font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap}
.fin .ck-bar{display:block;height:8px;border-radius:4px;background:var(--grid);overflow:hidden;margin-top:4px}
.fin .ck-bar>i{display:block;height:100%;border-radius:4px;min-width:2px}
.fin .ck-notes{margin:6px 0 0;padding-left:18px;font-size:14.5px;line-height:1.5;color:var(--text-secondary)}
.fin .ck-notes li{margin-bottom:4px}
.fin .ck-service .ck-two{margin:8px 0}
.fin .ck-service .ck-two button{min-height:44px}
/* сверка «табель — календарь»: туристы и банкеты по дням */
.fin .rc-month{display:flex;align-items:center;gap:10px;font-size:14px;font-weight:700;margin-bottom:6px}
.fin .rc-month select{flex:1 1 auto;min-height:44px;border:1px solid var(--line);border-radius:10px;background:var(--white);padding:0 10px}
.fin .rc-kind{display:flex;flex-direction:column;gap:8px;padding:10px 0 4px;border-top:1px solid var(--line)}
.fin .rc-kind-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.fin .rc-big{font-size:22px;font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap}
.fin .rc-big.rc-none{font-size:15px;color:var(--muted);font-weight:700}
.fin .rc-sub{font-size:13px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin:6px 0 4px}
.fin .rc-days{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.fin .rc-day{border-left:4px solid var(--baseline);background:#FCF9F1;border-radius:10px;padding:8px 10px;display:flex;flex-direction:column;gap:4px}
.fin .rc-day.rc-ok{border-left-color:var(--delta-up)}
.fin .rc-day.rc-more,.fin .rc-day.rc-less{border-left-color:var(--delta-down)}
.fin .rc-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:2px 10px;font-size:14.5px}
.fin .rc-title{font-weight:700;font-size:14px}
.fin .rc-nums{font-size:14.5px;color:var(--text-secondary);line-height:1.4}
.fin .rc-evs{display:flex;flex-wrap:wrap;gap:6px;margin-top:2px}
.fin .rc-ev{text-decoration:none}
/* «Финансы → Лояльность»: главное за минуту, таблица «частота × давность» (клетки темнеют с числом гостей), проверки данных */
.fin .ly{display:flex;flex-direction:column;gap:14px}
.fin .ly-list{margin:6px 0 4px;padding:0;list-style:none;display:flex;flex-direction:column;gap:10px}
.fin .ly-list li{position:relative;padding-left:16px;font-size:15px;line-height:1.5;color:var(--text-secondary)}
.fin .ly-list li::before{content:'';position:absolute;left:0;top:8px;width:7px;height:7px;border-radius:50%;background:var(--series-1)}
.fin .ly-matrix{display:grid;grid-template-columns:minmax(84px,1.5fr) repeat(4,minmax(0,1fr)) minmax(0,.9fr);gap:3px;margin-top:8px;align-items:stretch}
.fin .ly-h{font-size:12px;font-weight:700;color:var(--text-secondary);line-height:1.25;padding:4px 0;display:flex;flex-direction:column;justify-content:flex-end;text-align:center;white-space:nowrap}
.fin .ly-h span{display:block;font-weight:500;color:var(--muted);font-size:12px}
.fin .ly-h.ly-range{font-size:14px;color:var(--text-primary);justify-content:center}
.fin .ly-h.ly-first{text-align:left;padding-left:0;white-space:normal;font-size:13px}
.fin .ly-h.ly-first span{font-size:12px}
.fin .ly-h.ly-rowh{justify-content:center;font-size:14.5px;color:var(--text-primary)}
.fin .ly-cell{display:flex;align-items:center;justify-content:center;min-height:44px;border-radius:8px;font-size:15px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--text-primary)}
.fin .ly-cell.ly-zero{color:var(--muted);font-weight:400;border:1px dashed var(--grid)}
.fin .ly-cell.ly-total{background:var(--sand);font-weight:800}
.fin .ly-cell.ly-hot{box-shadow:inset 0 0 0 2px var(--delta-down)}
.fin .ly-cell.ly-warm{box-shadow:inset 0 0 0 2px var(--series-4)}
.fin .ly-legend{display:flex;flex-direction:column;gap:5px;font-size:12.5px;color:var(--text-secondary);margin-top:10px;line-height:1.4}
.fin .ly-key{display:inline-block;width:13px;height:13px;border-radius:4px;vertical-align:-2px;margin-right:7px;background:var(--white)}
.fin .ly-key.ly-hot{box-shadow:inset 0 0 0 2px var(--delta-down)}
.fin .ly-key.ly-warm{box-shadow:inset 0 0 0 2px var(--series-4)}
.fin .ly-todo{display:flex;flex-direction:column;gap:12px}
.fin .ly-checks{margin:6px 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:9px}
.fin .ly-checks li{font-size:14px;line-height:1.5;color:var(--text-secondary)}
.ck-two{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:end}
.ck-two input{min-height:44px;border:1px solid var(--line);border-radius:10px;background:var(--white);padding:0 10px;width:100%}
/* поле даты не уже своего минимума: без этого «Начало/Конец» в окне «Запись» на телефонах 320–360 шире окна и растягивает его вбок */
.ck-two>*{min-width:0}
.ck-two input[type=date]{min-width:0}
.ck-sub{font-weight:800;font-size:14px;margin-top:4px}
.ck-probe{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;font-size:14px;line-height:1.4}
.ck-sample{display:flex;flex-direction:column;gap:4px}
.fin .ck-rules-form{display:flex;flex-direction:column;gap:10px;margin-top:10px}
.fin .ck-rules-form input{min-height:44px;border:1px solid var(--line);border-radius:10px;background:var(--white);padding:0 10px;width:100%}
/* конкурсы */
.fin .ck-contest{display:flex;flex-direction:column;gap:10px;padding-bottom:12px}
.fin .ck-c-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}
.fin .ck-c-name{font-size:17px;font-weight:800;line-height:1.25}
.fin .ck-status{flex:none;font-size:13px;font-weight:800;border-radius:20px;padding:3px 10px;white-space:nowrap}
.fin .ck-st-run{background:var(--green-bg);color:#2F5A1E}
.fin .ck-st-plan{background:var(--pre);color:var(--warn)}
.fin .ck-st-done{background:var(--sand);color:var(--text-secondary)}
.fin .ck-verdict{border-left:4px solid var(--baseline);background:#FCF9F1;border-radius:10px;padding:9px 12px;font-size:14px;line-height:1.5;color:var(--text-secondary)}
.fin .ck-verdict p{margin:6px 0 0}
.fin .ck-verdict-title{font-size:13px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin-bottom:2px}
.fin .ck-verdict-head{font-size:15px;font-weight:800;color:var(--text-primary);line-height:1.35}
.fin .ck-v-up{border-left-color:var(--delta-up)}
.fin .ck-v-down{border-left-color:var(--delta-down)}
.fin .ck-v-flat{border-left-color:var(--series-1)}
.fin .ck-v-no{border-left-color:var(--baseline);border-left-style:dashed}
.fin .ck-v-maybe-up{border-left-color:var(--delta-up);border-left-style:dashed}
.fin .ck-v-maybe-down{border-left-color:var(--delta-down);border-left-style:dashed}
.fin .ck-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px}
.fin .ck-fact{background:var(--white);border:1px solid var(--line);border-radius:10px;padding:8px 10px;min-width:0}
.fin .ck-fact .f-label{font-size:13.5px;margin-bottom:3px}
.fin .ck-fact-v{font-size:15.5px;font-weight:800;line-height:1.25}
.fin .ck-more>summary{cursor:pointer;font-size:14.5px;font-weight:700;color:var(--text-secondary);padding:6px 2px;-webkit-user-select:none;user-select:none}
.fin .ck-body{display:flex;flex-direction:column;gap:12px;margin-top:8px}
.fin .ck-rep{display:flex;flex-direction:column;gap:12px}
.fin .ck-warns{display:flex;flex-direction:column;gap:6px}
.fin .ck-actions{display:flex;flex-wrap:wrap;gap:8px}
/* редактор конкурса (окно снизу, вне блока .fin) */
.ck-rules{display:flex;flex-direction:column;gap:10px}
.ck-rule{display:grid;grid-template-columns:1fr auto;gap:6px;align-items:center;background:var(--white);border:1px solid var(--line);border-radius:12px;padding:8px}
.ck-rule select{grid-column:1 / 2;min-height:40px;border:1px solid var(--line);border-radius:10px;background:var(--white);padding:0 8px}
.ck-rule input{grid-column:1 / 2;min-height:44px;border:1px solid var(--line);border-radius:10px;background:var(--white);padding:0 10px;width:100%}
.ck-rule .ck-x{grid-column:2 / 3;grid-row:1 / 4;width:40px;height:40px;border-radius:10px;border:1px solid var(--line);background:transparent;font-size:16px}
.ck-rule .ck-rule-hint{grid-column:1 / 3;font-size:13.5px;color:var(--muted);line-height:1.4}
.fin .ck-table tr.ck-silent td{color:var(--warn)}
.fin .ck-silent-note{margin-top:8px}
.fin .ck-v-mixed{border-left-color:var(--warn)}
/* «Финансы → Акции и меню»: один список записей, у каждой три плитки (выручка и чеки в день, средний чек). Плитки в ряд даже на 390 px */
.fin .ev-filters{display:flex;gap:8px;overflow-x:auto;padding:2px 0 4px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.fin .ev-filters::-webkit-scrollbar{display:none}
.fin .ev-filters .chip{flex:none;min-height:36px;padding:0 12px;font-size:14px;white-space:nowrap}
.fin button.ev-attn{display:flex;justify-content:space-between;align-items:center;gap:10px;width:100%;text-align:left;border:0;cursor:pointer;font:inherit;font-size:14.5px;line-height:1.4;min-height:44px}
.fin button.ev-attn>span:last-child{flex:none;font-size:20px;color:var(--text-secondary)}
.fin .ev-card .ck-more>summary::after{content:' ▾';color:var(--muted)}
.fin .ev-card .ck-more[open]>summary::after{content:' ▴'}
.fin .ev-sum{display:flex;flex-direction:column;gap:2px}
.fin .ev-sum-line{margin:6px 0 0;font-size:14.5px;line-height:1.5;color:var(--text-secondary)}
.fin .ev-card{gap:10px}
.fin .ev-kind{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:13.5px;font-weight:700;color:var(--muted);margin-bottom:2px}
.fin .ev-find{font-size:12.5px;font-weight:800;border-radius:20px;padding:2px 9px;background:#E6EEF9;color:#1F4E8C}
.fin .ev-detected{border-style:dashed;border-color:var(--baseline);background:var(--white)}
.fin .ev-tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.fin .ev-tile{display:flex;flex-direction:column;min-width:0;background:var(--white);border:1px solid var(--line);border-radius:10px;padding:8px 8px 7px}
.fin .ev-tile .f-label{font-size:13.5px;font-weight:700;color:var(--text-primary);margin:0;line-height:1.25}
.fin .ev-tile-sub{font-size:12px;color:var(--muted);line-height:1.3;margin:1px 0 5px}
.fin .ev-tile-v{font-size:17px;font-weight:800;line-height:1.2;font-variant-numeric:tabular-nums;white-space:nowrap}
.fin .ev-tile-was{font-size:12.5px;color:var(--muted);line-height:1.35;white-space:nowrap;font-variant-numeric:tabular-nums}
.fin .ev-tile .f-delta{font-size:13.5px;margin-top:4px;line-height:1.3}
.fin .ev-tile-note{font-size:12px;color:var(--muted);line-height:1.3;margin-top:2px}
.fin .ev-tile .f-soft{opacity:.72}
.fin .ev-tile-notice{font-size:12px;color:var(--muted);line-height:1.3;margin-top:1px;font-variant-numeric:tabular-nums}
.fin .ev-tile-split{font-size:12px;color:var(--muted);line-height:1.3;margin-top:3px;font-variant-numeric:tabular-nums}
.fin .ev-tile-split b{color:var(--text-primary);font-weight:700}
.fin .ev-cmp{display:flex;flex-direction:column;margin-top:6px;padding-top:5px;border-top:1px dashed var(--line);min-width:0}
.fin .ev-cmp-vs{font-size:12px;font-weight:700;color:var(--text-secondary);line-height:1.25;margin-bottom:2px;overflow-wrap:anywhere}
.fin .ev-cmp .f-delta{margin-top:1px}
.fin .ev-lines p{margin:0 0 7px;font-size:14px;line-height:1.5;color:var(--text-secondary)}
.fin .f-asof.ev-why p{font-size:14.5px;line-height:1.45}.fin .f-asof.ev-why p:last-child{margin-bottom:0}
.fin .ev-found{display:flex;flex-direction:column;gap:6px}
.fin .ev-found ul{margin:2px 0 6px;padding-left:18px;font-size:14.5px;line-height:1.5;color:var(--text-secondary)}
.fin .ev-warn{line-height:1.4}
.fin .ev-econ{margin:8px 0 0;padding:8px 10px;border-radius:10px;background:var(--white);border:1px solid var(--line);font-size:14px;line-height:1.45;color:var(--text-secondary)}
.fin .ev-econ-lines{margin-top:10px}
/* итог простыми словами на лице карточки записи (src/domain/eventplain.js) и три строки «было → стало» */
.fin .ev-plain{display:flex;flex-direction:column;gap:0;padding:11px 13px}
.fin .ev-plain .ck-verdict-head{font-size:18px;line-height:1.3}
.fin .ev-plain p{margin:6px 0 0;font-size:14.5px;line-height:1.5;color:var(--text-primary)}
.fin .ev-pl-notes{margin-top:10px;padding-top:9px;border-top:1px dashed var(--line)}
.fin .ev-pl-cap{font-size:13px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin-bottom:3px}
.fin .ev-pl-notes ul{margin:0;padding-left:18px;font-size:14.5px;line-height:1.5;color:var(--text-secondary)}
.fin .ev-pl-notes li+li{margin-top:5px}
.fin .ev-pl-notes p{margin:0;font-size:14.5px;line-height:1.5;color:var(--text-secondary)}
.fin .ev-pl-more{margin-top:5px;font-size:13.5px;line-height:1.4;color:var(--muted)}
.fin .ev-pl-rows{display:flex;flex-direction:column;background:var(--white);border:1px solid var(--line);border-radius:10px;overflow:hidden}
.fin .ev-pl-row{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:10px;row-gap:1px;align-items:baseline;padding:8px 11px}
.fin .ev-pl-row+.ev-pl-row{border-top:1px solid var(--line)}
.fin .ev-pl-name{font-size:14.5px;font-weight:700;color:var(--text-primary);line-height:1.3}
.fin .ev-pl-nums{font-size:14.5px;line-height:1.3;font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right;color:var(--muted)}
.fin .ev-pl-nums b{font-size:15px;font-weight:800;color:var(--text-primary)}
.fin .ev-pl-chip{grid-column:1 / -1;font-size:14px;line-height:1.35;margin:0}
.fin .ev-pl-chip.f-soft{opacity:.8}
.fin .ev-pl-sub{grid-column:1 / -1;font-size:12.5px;line-height:1.35;color:var(--muted)}
.fin .ev-old-head p{margin:0 0 6px}
/* конкурс с целью (чайники и т. п.): две плитки цели, пояснения под ними и выручка в целом мелко */
.fin .ev-tiles-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.fin .ev-tiles-1{grid-template-columns:minmax(0,1fr)}
.fin .ev-tile-after{margin-top:4px;padding-top:4px;border-top:1px dashed var(--line)}
.fin .ev-ptile .ev-tile-v{margin-top:auto;padding-top:4px}
.fin table.ev-ptbl{font-size:13.5px}
.fin table.ev-ptbl th,.fin table.ev-ptbl td{padding:7px 7px}
.fin table.ev-ptbl th:first-child,.fin table.ev-ptbl td:first-child{min-width:6em;max-width:7.4em}
.fin .ev-pline{font-size:14px;line-height:1.45;color:var(--text-secondary)}
.fin .ev-money{font-size:13.5px;line-height:1.45;color:var(--muted);padding-top:8px;border-top:1px dashed var(--line)}
.fin .ev-money b{font-weight:700;color:var(--text-secondary)}
.fin .ev-money-head{margin-top:4px}
.fin .ev-pointer .smallbtn{width:100%}
.ev-kinds{display:flex;flex-wrap:wrap;gap:6px}
.ev-kinds .chip{min-height:38px}
/* «Акции и меню»: месяц к месяцу и сравнение с прошлым годом */
.fin .ev-tabs{display:flex;gap:8px;flex-wrap:wrap}
.fin .ev-tabs .chip{min-height:40px;padding:0 14px;font-size:14.5px;white-space:nowrap}
.fin .ev-months{display:flex;flex-direction:column;gap:12px}
.fin .ev-months-more>summary{padding:8px 2px}
.fin .ev-months-more .ev-month{margin-top:10px}
.fin .ev-month{display:flex;flex-direction:column;gap:10px}
.fin .ev-month-head{display:flex;flex-direction:column;gap:3px}
.fin .ev-month-name{font-size:16px;font-weight:800;line-height:1.25;color:var(--text-primary)}
.fin .ev-month-part,.fin .ev-month-days{font-size:12.5px;font-weight:600;color:var(--muted)}
.fin .ev-month-vs{font-size:13px;line-height:1.4;color:var(--text-secondary)}
.fin .ev-month-vs.ev-vs-soft{color:var(--text-secondary)}
.fin .ev-month-vs.ev-vs-strong{font-weight:700;color:var(--text-primary)}
.fin .ev-month-recs,.fin .ev-month-cal{font-size:13px;line-height:1.5;color:var(--text-secondary)}
.fin .ev-rec{white-space:normal}
/* «Финансы → Меню в деньгах»: строки «название — цифра», карточки новых блюд с тремя цифрами, классы по прибыли. На 390 px всё в столбик, цифры не переносятся */
.fin .mm-rows{display:flex;flex-direction:column}
.fin .mm-row{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;padding:8px 0;border-top:1px dashed var(--line);min-width:0}
.fin .mm-row:first-child{border-top:0}
.fin .mm-row-l{min-width:0;flex:1 1 auto;font-size:14.5px;font-weight:600;color:var(--text-primary);line-height:1.3;overflow-wrap:anywhere}
.fin .mm-row-l small{display:block;font-size:13px;font-weight:400;color:var(--muted);line-height:1.35;margin-top:2px}
.fin .mm-row-v{flex:none;max-width:46%;text-align:right;font-size:16px;font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--text-primary)}
.fin .mm-row-v small{display:block;font-size:12px;font-weight:400;color:var(--muted);white-space:normal;line-height:1.25}
.fin .mm-up{color:var(--delta-up)}.fin .mm-down{color:var(--delta-down)}.fin .mm-flat{color:var(--text-secondary)}
.fin .mm-body{display:flex;flex-direction:column;gap:10px;margin-top:8px}
.fin .mm-dishes{display:flex;flex-direction:column;gap:8px}
.fin .mm-dish{display:flex;flex-direction:column;gap:6px;padding:10px;border:1px solid var(--line);border-radius:12px;background:var(--white);min-width:0}
.fin .mm-dish-name{font-size:15px;font-weight:800;line-height:1.3;overflow-wrap:anywhere}
.fin .mm-dish-sold{font-size:13.5px;color:var(--muted);line-height:1.4}
.fin .mm-chip{display:inline-block;font-size:12.5px;font-weight:800;border-radius:20px;padding:3px 10px;line-height:1.3}
.fin .mm-t-up{background:var(--green-bg);color:#2F5A1E}
.fin .mm-t-mid{background:var(--pre);color:var(--warn)}
.fin .mm-t-down{background:#F6DADA;color:#8A2A2A}
.fin .mm-t-no{background:var(--sand);color:var(--text-secondary)}
.fin .mm-figs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.fin .mm-fig{min-width:0}
.fin .mm-fig-l{font-size:12px;color:var(--muted);line-height:1.25}
.fin .mm-fig-v{font-size:14px;font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap}
.fin .mm-lst ul{margin:2px 0 4px;padding-left:18px;font-size:14.5px;line-height:1.5;color:var(--text-secondary)}
.fin .mm-cls{display:inline-block;min-width:1.5em;margin-right:6px;padding:0 5px;border-radius:6px;font-size:12.5px;font-weight:800;text-align:center;line-height:1.5;vertical-align:1px}
.fin .mm-cls-a{background:var(--green-bg);color:#2F5A1E}
.fin .mm-cls-b{background:var(--pre);color:var(--warn)}
.fin .mm-cls-c{background:var(--sand);color:var(--text-secondary)}
.fin .mm-now{display:flex;flex-direction:column;gap:12px}
.fin .mm-wait{display:flex;flex-direction:column;gap:2px}
.fin .ev-month-note{line-height:1.4;font-size:13px}
.fin .ev-lastyear{display:flex;flex-direction:column;gap:2px}
.fin .ev-ly-head{margin:4px 0 6px;font-size:14px;font-weight:700;line-height:1.5;color:var(--text-primary)}
.fin .ev-ly-line{margin:0 0 7px;font-size:14px;line-height:1.5;color:var(--text-secondary)}

/* ---------- Конкурсы официантов ---------- */
.ct-pill{font-size:11px;font-weight:800;letter-spacing:.04em;border-radius:10px;padding:4px 9px;white-space:nowrap;background:var(--sand-2);color:var(--ink-brown)}
.ct-pill.ct-run{background:var(--green);color:#fff}
.ct-pill.ct-plan{background:var(--pre);color:var(--ink-brown)}
.ct-pill.ct-fin{background:#E0A23A;color:#2A1A0E}
.ct-pill.ct-done{background:var(--dark);color:var(--on-dark)}
.ct-up{color:var(--green-ink);font-weight:800;font-size:13px;white-space:nowrap}
.ct-down{color:var(--red-ink);font-weight:800;font-size:13px;white-space:nowrap}
a.ct-item{text-decoration:none;color:inherit}
a.ct-item:active{transform:scale(.995)}
a.ct-item.ct-run{border-color:var(--gold);background:linear-gradient(180deg,var(--tint-soft),var(--white))}
.ct-item .row{align-items:flex-start}
.ct-name{font-size:17px;line-height:1.25}
.ct-mine{font-weight:700;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ct-coachline{display:flex;gap:8px;align-items:flex-start;padding:8px 10px;border-radius:10px;background:var(--sand);font-size:14px;line-height:1.4}
.ct-warn{color:var(--gold-deep)}
a.ct-new{text-decoration:none;text-align:center}
.ct-hall{gap:4px}
.ct-hall-row{display:flex;gap:10px;align-items:center;padding:7px 0;border-bottom:1px solid #EFE4CC}
.ct-hall-n{width:24px;font-weight:800;color:var(--muted);text-align:center;flex:0 0 auto}
.ct-medals{white-space:nowrap;font-weight:700;flex:0 0 auto}

/* карточка-ссылка на «Мои столы», в достижениях и в рейтинге */
.ct-slot{display:grid;gap:10px}
.ct-slot:empty{display:none}
a.ct-strip{display:grid;gap:6px;padding:14px;border-radius:16px;text-decoration:none;color:#F7EEDC;background:linear-gradient(135deg,var(--dark) 0%,#5B3A22 100%);border:1px solid var(--gold);box-shadow:0 6px 18px rgba(58,36,22,.25)}
a.ct-strip:active{transform:scale(.99)}
.ct-strip-top{display:flex;justify-content:space-between;align-items:center}
.ct-strip-pill{background:rgba(224,162,58,.22);color:#F1D9A0;padding:4px 10px;border-radius:12px;font-size:12px;font-weight:800;letter-spacing:.06em}
.ct-strip-open{color:#F1D9A0;font-weight:700;font-size:14px}
.ct-strip-name{font-family:'Cormorant Garamond',Georgia,serif;font-size:24px;line-height:1.1;color:#fff}
.ct-strip-line{font-size:15px;font-weight:700;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.ct-strip-coach{display:flex;gap:8px;font-size:14px;line-height:1.4;padding-top:8px;border-top:1px dashed rgba(241,217,160,.35);color:#E8D9B9}
.ct-strip .ct-up{color:#B9DB8F}.ct-strip .ct-down{color:#F3A99A}

/* ход игры */
.ct-hero{border-color:var(--gold);background:linear-gradient(180deg,var(--tint-soft),var(--white));gap:8px}
.ct-hero-top{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.ct-hero-medal{font-size:34px;line-height:1}
.ct-hero-place{font-family:'Cormorant Garamond',Georgia,serif;font-size:34px;line-height:1.05}
.ct-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.ct-kpi{display:grid;gap:2px;background:var(--cream);border:1px solid var(--line);border-radius:12px;padding:8px 10px;min-width:0}
.ct-kpi small{font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.ct-kpi b{font-size:16px;line-height:1.25;overflow-wrap:anywhere}
.ct-elig{display:grid;gap:6px}
.ct-bar{height:12px;border-radius:7px;background:var(--sand);overflow:hidden}
.ct-bar i{display:block;height:100%;border-radius:7px;background:linear-gradient(90deg,#E0A23A,var(--gold));transition:width 1s cubic-bezier(.2,.8,.2,1)}
.ct-prize{font-weight:800;color:var(--green-deep);background:var(--green-bg);border-radius:10px;padding:8px 10px}
.ct-coach{border-color:var(--gold);background:linear-gradient(180deg,var(--tint-soft),var(--white));gap:10px}
.ct-coach-head{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:17px}
.ct-hint{display:flex;gap:10px;align-items:flex-start;line-height:1.45}
.ct-hint-i{font-size:24px;line-height:1.1;flex:0 0 auto}
.ct-hint-t{font-size:15px;font-weight:500;overflow-wrap:anywhere;min-width:0}
.ct-hint-h{display:block;font-weight:700}
.ct-hint-more{display:grid;gap:4px;margin-top:5px;font-size:14.5px}
.ct-rest summary{cursor:pointer;font-weight:700;color:var(--muted);padding:8px 0;min-height:40px;display:flex;align-items:center}
.ct-rest .ct-hint{padding:8px 0;border-top:1px dashed var(--line)}
.ct-targets{display:grid;gap:8px}
.ct-tg{border:1px solid var(--line);border-radius:12px;background:var(--white);padding:8px 10px}
.ct-tg summary{list-style:none;cursor:pointer}
.ct-tg summary::-webkit-details-marker{display:none}
.ct-tg-head{display:flex;gap:10px;align-items:center}
.ct-tg-i{font-size:22px;flex:0 0 auto}
.ct-tg-body{display:grid;gap:6px;padding-top:8px;line-height:1.45;font-size:14px}
.ct-tg-name{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.ct-tg-plan{font-weight:500}
.ct-table{gap:8px}
.ct-row{display:flex;align-items:center;gap:10px;padding:8px 6px;border-bottom:1px solid #EFE4CC;border-radius:10px}
.ct-row.me{background:#F1F7E8;border:1px solid var(--green-line)}
.ct-row.tap{cursor:pointer}
.ct-row.tap:active{background:var(--sand)}
.ct-pl{width:32px;text-align:center;font-size:20px;font-weight:800;flex:0 0 auto}
.ct-rn{font-weight:700;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.ct-sc{display:grid;justify-items:end;gap:4px;text-align:right;flex:0 0 auto}
.ct-flag{font-size:13.5px;color:var(--gold-deep)}
.ct-weeks .ct-week{border-top:1px solid #EFE4CC;padding:4px 0}
.ct-week summary{display:flex;gap:8px;align-items:center;cursor:pointer;min-height:44px}
.ct-dots{text-align:center;line-height:1}
.ct-bd{display:grid}
.ct-bd-row{display:flex;gap:10px;padding:8px 0;border-bottom:1px solid #EFE4CC;align-items:baseline}
.ct-start{border-color:var(--gold);background:var(--tint-soft)}

/* «План и факт» */
.ct-pf,.ct-fc{--ct-fact:#2A78D6;--ct-plan:#EB6834;--ct-grid:#EDE3CD;--ct-base:#CDBB9C;--ct-t1:#3A2416;--ct-t2:#6B5440}
.ct-chart{position:relative}
.ct-svg{display:block;width:100%;height:auto;touch-action:pan-y}
.ct-svg .ct-grid{stroke:var(--ct-grid);stroke-width:1}
.ct-svg .ct-grid.base{stroke:var(--ct-base)}
.ct-svg .ct-ax{fill:var(--ct-t2);font-size:10px}
.ct-svg .ct-line{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.ct-svg .ct-line.fact{stroke:var(--ct-fact)}
.ct-svg .ct-line.plan{stroke:var(--ct-plan);stroke-dasharray:6 4}
.ct-svg .ct-dot.fact{fill:var(--ct-fact);stroke:#fff;stroke-width:2}
.ct-svg .ct-dot.plan{fill:var(--ct-plan);stroke:#fff;stroke-width:2}
.ct-svg .ct-end{fill:var(--ct-t1);font-size:11px;font-weight:700;paint-order:stroke;stroke:#fff;stroke-width:3px}
.ct-svg .ct-cross{stroke:var(--ct-t2);stroke-width:1;stroke-dasharray:3 3}
.ct-tip{position:absolute;top:4px;transform:translateX(-50%);background:var(--white);border:1px solid var(--line);border-radius:10px;padding:6px 10px;font-size:14px;line-height:1.4;box-shadow:0 4px 14px rgba(58,36,22,.18);pointer-events:none;white-space:nowrap;z-index:2}
.ct-tip[hidden]{display:none}
.ct-key{display:inline-block;width:18px;height:0;border-top:2px solid;margin-right:6px;vertical-align:middle}
.ct-key.fact{border-color:var(--ct-fact)}
.ct-key.plan{border-top-style:dashed;border-color:var(--ct-plan)}
.ct-legend{display:flex;gap:16px;font-size:13px;color:var(--ct-t2);margin-top:4px}
.ct-scns{display:grid;grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:8px}
.ct-scn{display:grid;gap:2px;align-content:start;border:1px solid var(--line);border-radius:12px;padding:8px;background:var(--white);font-size:14px;min-width:0;overflow-wrap:anywhere}
.ct-scn.mid{border-color:var(--gold);background:var(--tint-soft)}
.ct-scn .ct-net{display:grid;margin-top:2px}
.ct-scn .ct-net b{font-size:15px}
.ct-scn .ct-net small{font-weight:600;color:var(--muted)}
.ct-net.ok{color:var(--green-deep);font-weight:700;font-size:14px}
.ct-net.bad{color:var(--red-ink);font-weight:700;font-size:14px}
/* «✨ Предложить конкурс»: варианты от ИИ, расчёт — приложения */
.ct-ideas,.ct-ideas-box{display:grid;gap:12px}
.ct-ideas:empty,.ct-ideas-box:empty{display:none}
.ct-idea{gap:10px;overflow-wrap:anywhere}
.ct-idea>.row{align-items:flex-start}
.ct-idea-text{display:grid;gap:2px;font-size:14.5px;line-height:1.45;background:var(--cream);border-radius:10px;padding:8px 10px}
.ct-idea-text small{font-size:12px;letter-spacing:.04em;text-transform:uppercase}
.ct-vd.great{background:var(--green);color:#fff}
.ct-vd.good{background:var(--green-bg);color:var(--green-deep);box-shadow:inset 0 0 0 1px var(--green-line)}
.ct-vd.warn{background:#E0A23A;color:#2A1A0E}
.ct-vd.bad{background:var(--red-bg);color:var(--red-deep);box-shadow:inset 0 0 0 1px #E3B3A8}
.ct-vtext{border-left:4px solid var(--line);padding:2px 0 2px 10px;font-size:14.5px;line-height:1.45}
.ct-vtext.great,.ct-vtext.good{border-left-color:var(--green)}
.ct-vtext.warn{border-left-color:#E0A23A}
.ct-vtext.bad{border-left-color:var(--red);color:var(--red-deep)}
.ct-idea-rules{display:grid}
.ct-idea-rule{padding:7px 0;border-bottom:1px solid #EFE4CC;font-size:14.5px;line-height:1.35}
.ct-idea-rule:last-child{border-bottom:0}
.ct-idea-rule .row{align-items:flex-start}
.ct-idea-w{white-space:nowrap;flex:0 0 auto}
.ct-idea-calc{display:grid;gap:8px;padding-top:4px;line-height:1.4}
.ct-idea .ct-kpi{align-content:start}
.ct-idea-h{font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}

/* «✨ Предложить акцию»: неделя столбиками, суть акции, расчёт окупаемости */
.pi-week,.pi-none{gap:8px}
.pi-bars{display:grid;gap:7px}
.pi-bar{display:grid;grid-template-columns:28px 1fr 92px;gap:8px;align-items:center;font-size:14px}
.pi-d{font-size:13px;font-weight:700;text-transform:uppercase;color:var(--muted)}
.pi-track{height:10px;border-radius:5px;background:var(--sand-2);overflow:hidden}
.pi-track i{display:block;height:100%;border-radius:5px;background:#B9A488}
.pi-track.none{background:repeating-linear-gradient(135deg,var(--sand-2) 0 4px,#F7EEDC 4px 8px)}
.pi-v{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.pi-bar.weak .pi-track i{background:var(--gold)}
.pi-bar.weak .pi-d,.pi-bar.weak .pi-v{color:var(--gold-deep);font-weight:800}
.pi-card{overflow-wrap:anywhere}
.pi-offer{font-size:16px;font-weight:700;line-height:1.35}
.pi-chips{display:flex;flex-wrap:wrap;gap:6px}
.pi-chip{font-size:13.5px;font-weight:700;background:var(--sand);border-radius:10px;padding:4px 9px;color:var(--text)}
.pi-calc{display:grid;gap:8px;padding-top:4px;line-height:1.4;font-size:14.5px}
.pi-scen{display:grid;gap:6px}
.pi-sc{display:grid;grid-template-columns:1fr auto;gap:2px 10px;padding:7px 10px;background:var(--cream);border:1px solid var(--line);border-radius:12px;align-items:baseline;font-size:14px}
.pi-sc small{grid-column:1 / -1;font-size:13.5px}
.pi-sc b{white-space:nowrap}
.pi-sc b.neg{color:var(--red-deep)}
.pi-sc b.pos{color:var(--green-deep)}
.ct-wait{border-color:var(--gold);background:linear-gradient(180deg,var(--tint-soft),var(--white))}
.ct-pt{display:grid}
.ct-pt-r{display:grid;grid-template-columns:1fr 64px 84px;gap:8px;padding:6px 2px;border-bottom:1px solid #EFE4CC;font-size:14px;align-items:baseline}
.ct-pt-r span:nth-child(n+2){text-align:right}
.ct-pt-r.head{font-size:13px;font-weight:700;color:var(--muted);text-transform:uppercase}
.ct-pt-r.silent{color:var(--gold-deep)}
.ct-more summary{cursor:pointer;font-weight:700;color:var(--muted);min-height:40px;display:flex;align-items:center}
.ct-warns{border-color:#E0A23A;background:var(--tint-soft)}
.ct-effect{margin-top:6px}
.ct-effect .fin{padding:0}
.ct-report{display:grid;gap:12px}

/* условия, анонс, действия */
.ct-text{white-space:pre-line;line-height:1.5;font-size:15px}
.ct-msg{background:var(--white);border:1px solid var(--line);border-left:5px solid var(--gold);border-radius:14px;padding:12px 14px;display:grid;gap:6px}
.ct-wk{display:flex;gap:10px;align-items:baseline;padding:6px 0;border-bottom:1px solid #EFE4CC}
.ct-actions{display:grid;gap:10px;margin-top:6px}
.ct-actions .smallbtn,.ct-actions .bigbtn{width:100%}

/* мастер конкурса */
.ct-edit .card{gap:10px}
.ct-form .ck-sub{margin-top:6px}
.ct-fhint{font-weight:400}
.ct-rules{display:grid;gap:10px}
.ct-rule{display:grid;gap:8px;border:1px solid var(--line);border-radius:12px;padding:10px;background:var(--cream)}
.ct-hint-line{color:var(--green-deep)}
.ct-hint-line.warn{color:var(--gold-deep);font-weight:600}
.ct-hint-line:empty{display:none}
.ct-grps{display:grid;gap:8px}
.ct-metric{align-items:flex-start;padding:10px 12px;font-weight:400}
.ct-prize-rows{display:grid;grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:8px;align-items:end}
.ct-sub-switches{display:grid;gap:4px}
.ct-sub-switches.off{opacity:.5}
.ct-save{display:grid;gap:10px}
.ct-pv:empty{display:none}
@media (prefers-reduced-motion:reduce){.ct-bar i{transition:none}}
.ct-edit .ck-two>*{min-width:0}
.ct-edit input[type=date]{width:100%}
.ct-grps.two{grid-template-columns:1fr 1fr}
.ct-grps.two .grp{padding:0 10px;font-size:14px}
/* на узких телефонах (320 и 360) «Администраторы» в два столбца не помещалось и растягивало страницу вбок: там список «Кому» идёт в один столбец */
@media (max-width:370px){.ct-grps.two{grid-template-columns:1fr}}

/* запись ленты, на которую нажали в уведомлении: рамка и два «вдоха», чтобы глаз сразу нашёл */
.card.feed-focus{outline:3px solid #B8893B;outline-offset:1px;animation:feedFocus 1.1s ease-out 2}
@keyframes feedFocus{0%{box-shadow:0 0 0 0 rgba(184,137,59,.55)}100%{box-shadow:0 0 0 14px rgba(184,137,59,0)}}
@media (prefers-reduced-motion:reduce){.card.feed-focus{animation:none}}

/* акция «День рождения» */
.bd-verdict{display:inline-block;font-weight:800;letter-spacing:.03em;font-size:15px;line-height:1.25;text-decoration:underline;text-decoration-thickness:3px;text-underline-offset:5px}
.bd-verdict.big{font-size:23px}
.bd-verdict.good{color:#2F6B1F}.bd-verdict.warn{color:#8A5A00}.bd-verdict.bad{color:#B3261E}
.bd-hero{gap:10px;border-left:6px solid var(--gold)}
.bd-hero-v{display:flex;flex-direction:column;gap:2px}
.bd-hero-v small{font-size:14px;color:var(--muted)}
.bd-decision{display:grid;gap:6px;padding:10px 12px;border-radius:12px;background:var(--cream);border:1px solid var(--line)}
.bd-var{border-left:6px solid var(--line)}
.bd-var.good{border-left-color:var(--green)}.bd-var.warn{border-left-color:var(--gold)}.bd-var.bad{border-left-color:var(--red)}
.bd-tbl{width:100%;border-collapse:collapse;font-size:12.5px}
.bd-tbl th,.bd-tbl td{padding:6px 3px;text-align:right;border-bottom:1px solid var(--line);vertical-align:top}
.bd-tbl td{white-space:nowrap}
.bd-tbl th:first-child,.bd-tbl td:first-child{white-space:normal;width:32%}
.bd-tbl th small{display:block;font-weight:400;color:var(--muted)}
.bd-tbl th:first-child,.bd-tbl td:first-child{text-align:left;font-weight:400}
.bd-tbl td.pos{color:#2F6B1F;font-weight:800}.bd-tbl td.neg{color:#B3261E;font-weight:800}
.bd-net{display:grid;gap:2px;padding:10px 12px;border-radius:12px;border:1px solid var(--line);background:var(--white)}
.bd-net b{font-size:24px}
.bd-net small{color:var(--muted);font-size:13.5px}
.bd-net.pos{background:var(--green-bg);border-color:var(--green-line)}.bd-net.pos b{color:#2F6B1F}
.bd-net.neg{background:var(--red-bg);border-color:#E3B2A8}.bd-net.neg b{color:#B3261E}
.bd-range{width:100%;accent-color:var(--gold);min-height:32px}
.bd-big b{font-size:34px;font-family:'Cormorant Garamond',Georgia,serif}
.bd-bars{display:flex;align-items:flex-end;gap:4px;height:100px}
.bd-bar{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:2px;min-width:0}
.bd-bar span{display:block;width:100%;background:var(--gold);border-radius:4px 4px 0 0}
.bd-bar small{font-size:12px;color:var(--muted)}
.bd-guest.came{border-color:var(--green-line);background:#FAFCF6}
.bd-text{display:grid;gap:6px;padding-top:6px;border-top:1px solid var(--line)}
.bd-text textarea{min-height:0}
.bd-prev{white-space:pre-line;font-size:14px;background:var(--cream);border:1px solid var(--line);border-radius:12px;padding:10px 12px;line-height:1.4}
.bd-bad{color:var(--red-ink);font-weight:600}
.bd-mode{border-left:6px solid var(--line)}.bd-mode.live{border-left-color:var(--green)}
.bd-save{position:sticky;bottom:78px;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px;border-radius:14px;background:var(--dark);color:var(--on-dark);box-shadow:0 6px 18px rgba(58,36,22,.35);z-index:3}
.bd-save[hidden]{display:none}
.bd-text .smallbtn[hidden],.f .smallbtn[hidden]{display:none}
.bc-field{display:grid;gap:4px}
.bc-two{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;align-items:end}
.bc-two>*{min-width:0}
.bc-field .smallbtn[hidden]{display:none}
.bd-save .smallbtn{background:var(--gold);border-color:var(--gold);color:#2A1A0E}
.bd-set details.sect{margin:0}
.bd-text>summary{min-height:44px;display:flex;align-items:center;cursor:pointer}

/* «Бронь и мероприятия»: тексты сообщений гостю, у каждого два поля и показ «как увидит гость» (public/js/guestbook.js) */
.gbk-msg{background:var(--white);border:1px solid var(--line);border-radius:14px;overflow:hidden}
.gbk-msg>summary{min-height:56px;display:flex;align-items:center;gap:8px;padding:6px 12px;cursor:pointer;list-style:none}
.gbk-msg>summary::-webkit-details-marker{display:none}
.gbk-msg>summary::after{content:'›';margin-left:auto;padding-left:8px;font-size:24px;color:var(--muted);transform:rotate(90deg);transition:transform .15s;flex:none}
.gbk-msg[open]>summary::after{transform:rotate(-90deg)}
.gbk-msg>summary .tag{flex:none}
.gbk-head{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.gbk-head b{font-size:16px}
.gbk-body{display:grid;gap:10px;padding:8px 12px 14px;border-top:1px solid var(--line)}
.gbk-ed{display:grid;gap:6px;padding:12px 0 0;border-top:1px dashed var(--line)}
.gbk-ed textarea{min-height:0}
.gbk-ed [hidden]{display:none}
.gbk-prev{max-height:340px;overflow:auto}
.gbk-vars{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.gbk-var{min-height:36px;padding:0 10px;border-radius:999px;border:1px solid var(--line);background:var(--cream);font-size:14px;cursor:pointer}
.gbk-var:active{background:var(--sand-2)}
.gbk-help>summary{min-height:36px;display:flex;align-items:center;cursor:pointer;color:var(--muted)}
.gbk-see{display:grid;gap:6px;padding:4px 0 8px;border-bottom:1px dashed var(--line)}
.gbk-see .smallbtn{justify-self:start}
.gbk-bubbles{display:grid;gap:10px}
.gbk-bub{display:grid;gap:4px}
.gbk-bub .bd-prev{max-width:94%;border-top-left-radius:4px}

/* «Разборы сервиса»: история из карточек, вопросы и задание на смену (public/js/insights.js) */
.ins-t-green{background:linear-gradient(155deg,#223018 0%,#38512a 58%,#4F6B3A 100%)}
.ins-t-gold{background:linear-gradient(155deg,#43300f 0%,#6b4d17 58%,#8a6420 100%)}
.ins-t-clay{background:linear-gradient(155deg,#431f15 0%,#6e3322 58%,#8c432d 100%)}
.ins-hero{background:linear-gradient(135deg,var(--dark),#5a3a24 70%,#6b4528);color:#FBF6EA;border-radius:20px;padding:18px 18px 16px;display:grid;gap:8px;box-shadow:0 8px 22px rgba(58,36,22,.2)}
.ins-hk{font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:#F1D9A0;font-weight:800}
.ins-hh{font-family:'Cormorant Garamond',Georgia,serif;font-size:30px;line-height:1.05;font-weight:700}
.ins-hp{height:8px;border-radius:5px;background:rgba(251,246,234,.2);overflow:hidden}
.ins-hp i{display:block;height:100%;background:linear-gradient(90deg,#E0A23A,var(--pre));border-radius:5px;transition:width .7s cubic-bezier(.2,.8,.2,1)}
.ins-hs{font-weight:700;font-size:15px}
.ins-hn{font-size:14px;color:#E4D6BA;line-height:1.4}
.ins-list{display:grid;gap:10px}
.ins-poster{display:grid;grid-template-columns:52px 1fr auto;gap:12px;align-items:center;padding:12px 14px;border-radius:18px;color:#FBF6EA;text-decoration:none;box-shadow:0 6px 16px rgba(58,36,22,.18);min-height:84px}
.ins-poster:active{transform:scale(.99)}
.ins-pe{width:52px;height:52px;border-radius:16px;background:rgba(251,246,234,.16);display:flex;align-items:center;justify-content:center;font-size:28px}
.ins-pt{display:grid;gap:3px;min-width:0}
.ins-pt b{font-family:'Cormorant Garamond',Georgia,serif;font-size:22px;line-height:1.08}
.ins-pk{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:#F1D9A0;font-weight:800}
.ins-pm{font-size:13px;color:#E4D6BA}
.ins-pabout{font-size:14px;line-height:1.3;color:#F4EAD2;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.ins-poster .tag.green{background:var(--green-bg);color:var(--green-deep)}
.ins-soon{border:2px dashed var(--line);border-radius:18px;padding:12px 14px;display:grid;gap:10px}
.ins-sk{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ins-st{display:grid;grid-template-columns:44px 1fr;gap:10px;align-items:center;line-height:1.35}
.ins-se{width:44px;height:44px;border-radius:14px;background:var(--sand);display:flex;align-items:center;justify-content:center;font-size:24px;filter:grayscale(.5)}
.ins-prev{display:grid;gap:8px}
.ins-feedcard{border-left:5px solid var(--gold)}
.ins-page{gap:12px}
.ins-segs{display:flex;gap:4px}
.ins-segs i{flex:1;height:5px;border-radius:3px;background:var(--sand-2);transition:background .25s}
.ins-segs i.done{background:var(--gold)}
.ins-segs i.on{background:var(--dark)}
.ins-seglab{display:grid;gap:4px;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-top:-6px}
.ins-seglab .on{color:var(--text);font-weight:800}
.ins-car{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none;border-radius:22px;outline:none;box-shadow:0 10px 26px rgba(58,36,22,.22)}
.ins-car::-webkit-scrollbar{display:none}
.ins-car:focus-visible{box-shadow:0 0 0 3px #F1D9A0}
.ins-slide{flex:0 0 100%;scroll-snap-align:center;display:flex}
.ins-card{position:relative;flex:1;border-radius:22px;padding:22px 20px 20px;color:#FBF6EA;min-height:min(470px,calc(100dvh - 400px));display:flex;flex-direction:column;gap:14px;overflow:hidden}
.ins-card::after{content:"";position:absolute;right:-70px;top:-70px;width:220px;height:220px;border-radius:50%;background:radial-gradient(circle,rgba(241,217,160,.2),transparent 68%);pointer-events:none}
.ins-eb{font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:#F1D9A0;font-weight:800}
.ins-emoji{font-size:54px;line-height:1}
.ins-hook{margin:0;font-family:'Cormorant Garamond',Georgia,serif;font-size:clamp(30px,8.6vw,40px);line-height:1.04;font-weight:700}
.ins-tx{margin:0;font-size:16px;line-height:1.5;color:#EFE4CC}
.ins-meta{display:flex;gap:6px;flex-wrap:wrap;margin-top:auto}
.ins-meta span{font-size:13px;font-weight:700;border:1px solid rgba(241,217,160,.5);color:#F1D9A0;border-radius:14px;padding:4px 10px}
.ins-h{margin:0;font-family:'Cormorant Garamond',Georgia,serif;font-size:28px;line-height:1.08;font-weight:700}
.ins-items{display:grid;gap:14px}
.ins-it{display:grid;grid-template-columns:30px 1fr;gap:12px;align-items:start}
.ins-it b{display:block;font-size:17px;line-height:1.25;margin-bottom:2px}
.ins-it p{margin:0;font-size:15px;line-height:1.45;color:#EFE4CC}
.ins-n{width:30px;height:30px;border-radius:50%;background:#E0A23A;color:#2A1A0E;font-weight:800;display:flex;align-items:center;justify-content:center;font-size:15px}
.ins-foot{margin-top:auto;border-top:1px solid rgba(241,217,160,.35);padding-top:12px;font-size:15px;line-height:1.45;color:#F1D9A0;font-weight:600}
.ins-no,.ins-yes{border-radius:16px;padding:12px 14px;display:grid;gap:4px}
.ins-no{background:rgba(166,58,43,.28);border:1px solid rgba(246,181,168,.45)}
.ins-no b{color:#F8C6BB}
.ins-yes{background:rgba(185,201,163,.2);border:1px solid rgba(207,224,184,.55)}
.ins-yes b{color:#D7E7BE}
.ins-no p,.ins-yes p{margin:0;font-size:16px;line-height:1.45}
.ins-formula{background:var(--pre);color:var(--text);border-radius:14px;padding:10px 12px;font-weight:700;font-size:15px;line-height:1.35;display:grid;gap:2px}
.ins-formula span{font-size:12px;letter-spacing:.12em;text-transform:uppercase;opacity:.7}
.ins-note{margin:0;font-size:14px;line-height:1.45;color:#E4D6BA}
.ins-ours{display:grid;gap:12px}
.ins-ours p{margin:0;font-size:16px;line-height:1.5;padding-left:22px;position:relative}
.ins-ours p::before{content:"◆";position:absolute;left:0;top:3px;color:#E0A23A;font-size:13px}
.ins-card.k-task{min-height:0}
.ins-tasktx{margin:0;font-size:18px;line-height:1.45;font-weight:600}
.ins-ch{font-size:14px;color:#F1D9A0;font-weight:700;margin-bottom:6px}
.ins-chips{display:flex;gap:8px;flex-wrap:wrap}
.ins-chip{min-height:42px;padding:6px 14px;border-radius:21px;border:1.5px solid var(--line);background:var(--white);color:var(--text);font-size:14px;font-weight:600;text-align:left}
.ins-chip.on{background:var(--dark);border-color:var(--dark);color:var(--on-dark)}
.ins-card .ins-chip{background:rgba(251,246,234,.12);border-color:rgba(241,217,160,.5);color:#FBF6EA}
.ins-card .ins-chip.on{background:var(--pre);border-color:#F1D9A0;color:var(--text)}
.ins-taskbox{display:grid;gap:12px}
.ins-rep{display:grid;gap:8px}
.ins-repb{min-height:52px;border-radius:14px;border:2px solid var(--line);background:var(--white);font-size:16px;font-weight:700;color:var(--text);padding:0 14px}
.ins-repb.done{border-color:var(--green-line);background:var(--green-bg);color:var(--green-deep)}
.ins-repb.fail{border-color:#E7C3BA;color:var(--red-deep)}
.ins-take{background:var(--sand);border-radius:16px;padding:14px 16px;display:grid;gap:4px}
.ins-take p{margin:0;font-size:16px;line-height:1.45}
.ins-prevnote .chips{gap:6px;margin-top:8px}
.ins-res{scroll-margin-bottom:96px;display:grid;gap:10px}
.ins-poster.fin{filter:saturate(.8)}
.ins-other{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ins-vers{display:flex;gap:6px;flex-wrap:wrap}
.ins-vers .chip{text-decoration:none;min-height:36px;padding:4px 12px;font-size:14px}
.ins-rcard{gap:8px}
.ins-rrow{display:grid;gap:4px;font-size:14px}
.ins-rbar{height:6px;border-radius:4px;background:var(--sand-2);overflow:hidden}
.ins-rbar i{display:block;height:100%;background:var(--green)}
.ins-ppl{display:grid;gap:6px}
.ins-p{display:flex;justify-content:space-between;gap:10px;align-items:baseline;border-bottom:1px solid #EFE4CC;padding-bottom:6px}
.ins-pn{font-weight:700}
@media (prefers-reduced-motion:reduce){.ins-hp i,.ins-segs i{transition:none}}

/* «Финансы → Совет и проверка данных» (public/js/finadvisor.js): работает и в окне (вне .fin), и в карточке «Сводки» */
.fa-list{display:flex;flex-direction:column;gap:8px}
.fa-sig,.fa-chk{background:var(--white);border:1px solid var(--line);border-left-width:4px;border-radius:10px;padding:9px 12px;font-size:14.5px;line-height:1.45;color:var(--text);text-align:left}
.fa-sig b,.fa-chk b{display:block;font-size:14.5px;margin-bottom:2px}
.fa-sig.bad{border-left-color:#C23A3A}.fa-sig.good{border-left-color:#1F7A1F}.fa-sig.neutral{border-left-color:#B9A47E}
.fa-chk.warn{border-left-color:#A86A00;background:var(--tint-soft)}.fa-chk.info{border-left-color:#2A78D6}.fa-chk.ok{border-left-color:#1F7A1F}
.fa-card{display:flex;flex-direction:column;gap:10px;padding-bottom:12px}
.fa-verdict{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-height:44px;border:1px solid var(--line);border-radius:10px;background:var(--white);padding:8px 12px;font-size:14px;font-weight:700;text-align:left}
.fa-verdict.warn{border-color:#A86A00;background:var(--tint-soft)}
.fa-top{min-height:44px;border-radius:12px;border:1px solid #6B4A33;background:transparent;color:#F7EEDC;font-size:14px;font-weight:700;padding:0 12px;white-space:nowrap}
.fa-sheet{display:flex;flex-direction:column;gap:12px}
.fa-sheet>div:empty{display:none}   /* пустые блоки ответа, кнопок и остатка обращений; поле вопроса (textarea) тоже «пустое» по :empty, его прятать нельзя */
.fa-sheet textarea{width:100%;border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--white);font-size:16px;line-height:1.4}
.fa-result{gap:6px;white-space:pre-line;line-height:1.45}
.fa-det{border:1px solid var(--line);border-radius:12px;background:var(--cream)}
.fa-det>summary{min-height:48px;display:flex;align-items:center;padding:0 12px;font-weight:700;font-size:15px;cursor:pointer}
.fa-det[open]>summary{border-bottom:1px solid var(--line);margin-bottom:10px}
.fa-det>.fa-list,.fa-det>.small{margin:0 10px 10px}

/* официанты на мероприятиях и вызывные: окно выбора «Кто обслуживает», карточка «Вы на вызове», реестр вызывных */
.small.bad,.wline .bad,.ocalert .bad{color:var(--red-deep);font-weight:700}
.small.warn{color:var(--gold-deep);font-weight:600}
.wpick{display:grid;gap:10px}
.wh{font-size:14px;font-weight:700;letter-spacing:.04em;color:var(--muted);text-transform:uppercase;margin-top:4px}
.wlist{display:grid;gap:8px}
.wopt{border:1px solid var(--line);border-radius:14px;background:var(--white);overflow:hidden}
.wopt.on{border-color:var(--dark);box-shadow:0 0 0 1px var(--dark)}
.wopt>:not(.wrow){margin:0 12px 10px}
.wrow{display:flex;align-items:center;gap:10px;width:100%;min-height:56px;padding:8px 12px;border:none;background:transparent;text-align:left;font:inherit;color:inherit}
.wlist>.wrow{border:1px solid var(--line);border-radius:14px;background:var(--white)}
.wrow b{display:block}
.wrow small{display:block;font-size:13.5px;font-weight:500;color:var(--muted)}
.wbox{flex:none;width:26px;height:26px;border-radius:8px;border:2px solid var(--line);background:var(--white);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:15px;line-height:1}
.wrow.on .wbox{background:var(--dark);border-color:var(--dark);color:var(--on-dark)}
.ocshift{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.ocshift>label,.ocshift input{min-width:0}
.ocshift>:nth-child(3){grid-column:1/-1}
.wopt .linkbtn{display:block;text-align:left;padding:4px 0 6px}
details.woff{border:1px dashed var(--line);border-radius:14px;padding:0 12px}
details.woff>summary{min-height:48px;font-size:14px;color:var(--muted)}
details.woff[open]>summary{margin-bottom:6px}
details.woff>:not(summary){margin-bottom:10px}
.wlines{display:grid;gap:6px}
.wline{display:grid;gap:2px}
.wline+.wline{border-top:1px solid var(--sand);padding-top:6px}
.card.oncall{border:2px solid var(--gold);background:var(--tint-soft)}
.ocroute{display:grid;gap:8px;padding:8px 10px;border-radius:12px;background:rgba(184,137,59,.12)}
.ocroute .smallbtn{background:var(--white)}
.card.mineev{border-left:5px solid var(--green)}
.card.stf{gap:8px}
.card.stf.needs{border-color:var(--gold);background:var(--tint-soft)}
.card.ocalert{border:2px solid var(--red);background:#FFF6F3}
.ocdbl,.ocdue,.ocs{display:grid;gap:6px;padding-top:10px;border-top:1px solid var(--sand)}
.ocs.past{opacity:.75}
.ocreg{display:grid;gap:8px}
.ocperson{display:grid;gap:3px;width:100%;text-align:left;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:var(--white);font:inherit;color:inherit}
.ocperson:active{background:var(--sand)}
.ocperson.off{opacity:.65}
.ocsheet{display:grid;gap:10px}
/* цена сета у агента: жирная и крупнее, чтобы бросалась в глаза */
.set-price{margin-top:2px;font-size:17px;line-height:1.25;color:var(--text)}
.set-price b{font-weight:800}
.set-per{font-size:14px;font-weight:500;color:var(--muted)}

/* «Весь зал или столы» (Байский зал, 3 этаж): заметная отметка, чем занят зал, и переключатель в брони */
.holdmark{border-radius:12px;padding:10px 12px;display:grid;gap:2px;line-height:1.35}
.holdmark b{font-size:16px}
.holdmark small{font-size:14px}
.holdmark.whole{background:var(--dark);color:#FFF3D4;border:2px solid var(--gold)}
.holdmark.whole small{color:var(--pre)}
.holdmark.tables{background:var(--green-bg);color:var(--green-deep);border:2px solid var(--green-line)}
.holdmode{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.holdopt{border:2px solid var(--line);background:var(--white);border-radius:12px;padding:10px 8px;font-weight:700;text-align:center;display:grid;gap:2px;min-height:64px;align-content:center}
.holdopt small{font-weight:400;font-size:13px;color:var(--muted)}
.holdopt.on{border-color:var(--gold);background:var(--tint-gold)}
.holdopt:disabled{opacity:.5}
.wholeday{border-radius:12px;padding:10px 12px;background:var(--dark);color:#FFF3D4;border:2px solid var(--gold);display:grid;gap:4px}
.wholeday b{font-size:15px}
.wholeday a{color:var(--pre);text-decoration:underline;font-size:14px}

/* «Финансы»: новая главная и пять разделов (public/js/finhome.js, finsect.js, finmini.js). Цвета те же, что у остального приложения */
.fh{max-width:560px;width:100%;margin-left:auto;margin-right:auto;gap:12px}
.fh-h1{font-size:26px!important}
.fh-h1.long{font-size:22px!important}
.fh-i{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}
.fh-fresh{display:flex;align-items:center;gap:10px;font-size:14.5px;line-height:1.35;color:var(--muted);padding:0 2px}
.fh-fdot{width:10px;height:10px;border-radius:50%;flex:none;background:#B9A47E}
.fh-fdot.ok{background:#4F6B3A}.fh-fdot.warn{background:#D49A1A}
.fh-refresh{display:inline-flex;align-items:center;gap:7px;background:none;border:0;font-weight:800;font-size:15px;color:var(--text);padding:0 4px;min-height:44px;flex:none}
.fh-refresh .fh-i{width:20px;height:20px}
.fh-h{margin:10px 2px 0;font-size:19px;line-height:1.25;font-weight:800;color:var(--text)}
.fh-intro{margin:2px 2px 0;font-size:16.5px;line-height:1.45;color:var(--muted)}
.fh-card{background:var(--white);border:1px solid var(--line);border-radius:20px;padding:18px;display:flex;flex-direction:column;gap:12px;min-width:0}
.fh-ct{margin:0;font-size:19px;line-height:1.25;font-weight:800;color:var(--text)}
.fh-tx{margin:0;font-size:16.5px;line-height:1.5;color:var(--text)}
.fh-tx b{font-weight:800}
.fh-note{margin:0;font-size:14px;line-height:1.45;color:var(--muted)}
.fh-hero{gap:6px;padding:20px 18px}
.fh-hero-t{display:flex;align-items:center;gap:12px}
.fh-hero-t h2{margin:0;font-size:19px;line-height:1.25;font-weight:800;color:var(--text)}
.fh-tone{width:26px;height:26px}
.fh-tone.bad{color:var(--red-ink)}.fh-tone.good{color:var(--green-ink)}.fh-tone.flat,.fh-tone.new{color:var(--muted)}
.fh-hero-p{color:var(--muted);font-size:16px;margin-top:8px}
.fh-big{display:flex;align-items:baseline;gap:10px;margin:2px 0 8px;color:var(--text)}
.fh-big b{font-size:58px;line-height:1;font-weight:800;letter-spacing:-.01em}
.fh-big span{font-size:23px;font-weight:800}
.fh-chip{display:flex;align-items:flex-start;gap:10px;border-radius:14px;padding:12px 14px;font-size:15px;font-weight:600;line-height:1.4}
.fh-chip.bad{background:var(--red-bg);color:var(--red-deep)}
.fh-chip.good{background:var(--green-bg);color:var(--green-deep)}
.fh-chip.flat{background:var(--sand);color:var(--ink-brown)}
.fh-card:not(.fh-hero)>.fh-chip{font-weight:500}
.fh-chip .fh-i{width:20px;height:20px;margin-top:1px}
.fh-tiles{display:grid;grid-template-columns:1fr 1fr;gap:14px;border-top:1px solid var(--sand);padding-top:14px;margin-top:10px}
.fh-tile .l{color:var(--muted);font-size:15px}
.fh-tile b{display:block;font-size:21px;font-weight:800;margin:2px 0;color:var(--text)}
.fh-tile .s{color:var(--muted);font-size:14.5px}
.fh-att,.fh-sec,.fh-foot,.fh-link{display:flex;align-items:center;gap:14px;width:100%;text-align:left;background:var(--white);border:1px solid var(--line);color:var(--text)}
.fh-att{border-radius:18px;padding:14px;font-size:16px;font-weight:600;line-height:1.4}
.fh-att b{font-weight:800}
.fh-dot{width:44px;height:44px;border-radius:50%;flex:none;display:grid;place-items:center}
.fh-dot .fh-i{width:22px;height:22px}
.fh-dot.bad{background:var(--red-bg);color:var(--red-ink)}
.fh-dot.warn{background:var(--tint-gold);color:#8A5A00}
.fh-dot.good{background:var(--green-bg);color:var(--green-ink)}
.fh-dot.info{background:var(--sand);color:var(--muted)}
.fh-chev{width:20px;height:20px;color:var(--muted)}
.fh-chev.up,.fh-more .fh-i.up{transform:rotate(-90deg)}
.fh-sec{gap:16px;border-radius:20px;padding:18px 16px}
.fh-sec.plain{padding:16px 18px;gap:12px}
.fh-sec b{display:block;font-size:19px;line-height:1.25;font-weight:800;margin-bottom:4px}
.fh-sec .l{display:block;font-size:15.5px;line-height:1.4;color:var(--muted);font-weight:500}
.fh-ico{width:56px;height:56px;border-radius:50%;background:var(--sand);display:grid;place-items:center;flex:none;color:var(--text)}
.fh-ico .fh-i{width:26px;height:26px}
.fh-foot{border-radius:18px;padding:14px 16px}
.fh-foot b{display:block;font-size:16px;font-weight:800}
.fh-foot .l{display:block;font-size:14.5px;color:var(--muted);font-weight:500}
.fh-foot>.fh-i:first-child{color:var(--muted)}
.fh-foot.warn{border-color:#E3B85F;background:var(--tint-soft)}
.fh-pip{width:10px;height:10px;border-radius:50%;background:#D49A1A;flex:none}
.fh-link{border-radius:18px;padding:16px 18px;font-size:17px;font-weight:700;line-height:1.35}
.fh-more{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:50px;background:var(--white);border:1.5px solid var(--dark);border-radius:14px;font-weight:800;font-size:17px;color:var(--text)}
.fh-more[hidden]{display:none}
.fh-more .fh-i{width:18px;height:18px}
.fh-how{align-self:flex-start;background:none;border:0;padding:4px 0;font-weight:700;font-size:15px;color:var(--muted);text-decoration:underline;text-underline-offset:3px;min-height:36px}
.fh-howl{margin:0;padding-left:20px;display:grid;gap:10px;font-size:16px;line-height:1.5}
.fh-words{margin:0;display:grid;gap:14px;font-size:16px;line-height:1.5}
.fh-words dt{font-weight:800}
.fh-words dd{margin:2px 0 0;color:var(--text-secondary)}
.fh-frows{display:flex;flex-direction:column}
.fh-frow{display:grid;grid-template-columns:auto 1fr;align-items:baseline;column-gap:12px;row-gap:2px;padding:14px 0;border-bottom:1px solid var(--sand)}
.fh-frow:first-child{padding-top:6px}
.fh-frow:last-child{border-bottom:0}
.fh-frow .k{font-size:16px;color:var(--muted)}
.fh-frow small{grid-column:1/-1;font-size:14px;color:var(--muted)}
.fh-frow b{font-size:20px;line-height:1.25;font-weight:800;text-align:right;color:var(--text)}
.fh-acts{display:flex;flex-direction:column;gap:18px}
.fh-act{display:flex;align-items:flex-start;gap:14px;width:100%;text-align:left;background:none;border:0;padding:0;color:var(--text)}
.fh-act b{display:block;font-size:17px;line-height:1.3;font-weight:800;margin-bottom:3px}
.fh-act .l{display:block;font-size:15.5px;line-height:1.45;color:var(--muted);font-weight:500}
.fh-act .fh-chev{margin-top:6px}
.fh-num{width:34px;height:34px;border-radius:50%;background:var(--sand);display:grid;place-items:center;font-weight:800;flex:none;margin-top:1px}
.fh-ex{display:flex;gap:8px;flex-wrap:wrap}
.fh-ex .chip{height:auto;min-height:36px;padding:6px 12px;font-size:14px;font-weight:600;text-align:left}
.fh-q{width:100%;border:1px solid var(--line);border-radius:14px;padding:12px 14px;font-size:16px;line-height:1.4;background:var(--white);resize:none;min-height:88px}
.fh-askrow{display:flex;gap:10px}
.fh-mic{width:56px;min-height:56px;border-radius:14px;border:1.5px solid var(--dark);background:var(--white);display:grid;place-items:center;color:var(--text);flex:none}
.fh-ask{flex:1;min-height:56px;border-radius:14px;border:0;background:var(--dark);color:var(--on-dark);font-weight:800;font-size:17px}
.fh-ask:disabled,.fh-mic:disabled{opacity:.55}
.fh-wait{font-size:15px;line-height:1.45;color:var(--muted);padding:2px}
.fh-answer{background:var(--tint-soft);border:1px solid var(--gold);border-radius:14px;padding:12px 14px;display:flex;flex-direction:column;gap:8px;font-size:16px;line-height:1.5}
.fh-answer p{margin:0}
.fh-out:empty,.fh-rec:empty{display:none}
.fh-st{gap:8px}
.fh-st .fh-tx{font-size:15.5px}
.fh-st-h{display:flex;align-items:center;gap:12px;font-size:17px;line-height:1.3}
.fh-st-h .fh-dot{width:36px;height:36px}
.fh-st-h .fh-dot .fh-i{width:19px;height:19px}
.fh-steps{list-style:none;margin:0;padding:0;display:grid;gap:8px;font-size:15px;line-height:1.45}
.fh-err{display:grid;gap:10px}
.fm-chart{display:flex;flex-direction:column;gap:12px;min-width:0}
.fm-cap{font-size:14px;line-height:1.4;color:var(--muted)}
.fm-svg{width:100%;height:auto;display:block;overflow:visible}
.fm-x{font:500 11.5px 'Manrope',system-ui,sans-serif;fill:var(--muted)}
.fm-val{font:800 13px 'Manrope',system-ui,sans-serif;fill:var(--dark)}
.fm-val.in{fill:#fff}
.fm-val.tgt{paint-order:stroke;stroke:#fff;stroke-width:4px;stroke-linejoin:round}
.fm-area{fill:#F1EBE6}
.fm-line{fill:none;stroke:#7A5A42;stroke-width:2.6;stroke-linejoin:round;stroke-linecap:round}
.fm-dot{fill:#fff;stroke:#7A5A42;stroke-width:2.4}
.fm-dot.big{fill:#7A5A42}
.fm-base{stroke:#E4D5B8;stroke-width:1.4}
.fm-pos{fill:#4F6B3A}.fm-neg{fill:#C4553B}.fm-col{fill:#7A5A42}
.fm-target{stroke:#C4553B;stroke-width:2.6}
.fm-bars{display:flex;flex-direction:column;gap:12px}
.fm-bar-h{display:flex;justify-content:space-between;gap:12px;font-size:16px;line-height:1.3}
.fm-bar-h b{font-weight:800;white-space:nowrap}
.fm-track{height:12px;border-radius:7px;background:var(--sand);margin-top:8px;overflow:hidden}
.fm-track i{display:block;height:100%;border-radius:7px;background:#7A5A42}
.fm-sep{height:1px;background:var(--sand-2)}
.fm-bar.extra .fm-bar-h{font-weight:800}
.fm-bar.extra.good .fm-track{background:var(--green-bg)}.fm-bar.extra.good .fm-track i{background:#4F6B3A}
.fm-bar.extra.bad .fm-track{background:var(--red-bg)}.fm-bar.extra.bad .fm-track i{background:#C4553B}
.fm-legend{display:flex;gap:18px;flex-wrap:wrap;font-size:15px;color:var(--muted)}
.fm-legend span{display:inline-flex;align-items:center;gap:8px}
.fm-legend .sw{width:14px;height:14px;border-radius:4px;display:inline-block}
.sw.pos{background:#4F6B3A}.sw.neg{background:#C4553B}.sw.one{background:#7A5A42}.sw.two{background:var(--sand-2)}
.fm-split{display:flex;flex-direction:column;gap:14px}
.fm-segs{display:flex;gap:3px;margin-top:8px;height:44px}
.fm-seg{display:flex;align-items:center;padding:0 12px;font-weight:800;font-size:15px;min-width:0;overflow:hidden}
.fm-seg.one{background:#7A5A42;color:#fff;border-radius:9px 4px 4px 9px}
.fm-seg.two{background:var(--sand-2);color:var(--text);border-radius:4px 9px 9px 4px}
/* «✨ Заполнить по тексту объявления» (выпуск 191): блок над формой конкурса и окна записи; зелёное — нашлось в кассе, жёлтое — не нашлось */
.ft{background:var(--white);border:1px solid var(--gold);border-radius:14px;overflow:hidden}
.ft-sum{cursor:pointer;font-weight:800;min-height:48px;padding:0 14px;display:flex;align-items:center;background:linear-gradient(180deg,var(--tint-soft),var(--white))}
.ft[open] .ft-sum{border-bottom:1px solid #EFE4CC}
.ft-body{display:grid;gap:10px;padding:12px 14px 14px;overflow-wrap:anywhere;min-width:0}
.ft-text{width:100%;min-height:150px;resize:vertical;border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--white);font-size:16px;line-height:1.45}
.ft-btns{display:grid;grid-template-columns:1fr auto;gap:8px}
.ft-btns .bigbtn{min-height:52px}
.ft-size:empty,.ft-say:empty,.ft-left:empty,.ft-out:empty,.ft-done:empty{display:none}
.ft-bad{color:var(--red-ink);font-weight:700}
.ft-res{display:grid;gap:8px}
.ft-line{font-size:15px;line-height:1.4}
.ft-pos{display:grid;gap:3px;border:1px solid var(--green-line);background:var(--green-bg);border-radius:12px;padding:9px 11px;color:var(--green-deep)}
.ft-pos .row{align-items:flex-start}
.ft-w{white-space:nowrap;flex:0 0 auto}
.ft-names{line-height:1.35}
.ft-warn{color:var(--gold-deep);font-weight:600}
.ft-miss{display:grid;gap:3px;border:1px solid #E0A23A;background:var(--tint-soft);border-radius:12px;padding:9px 11px;color:var(--gold-deep)}
.ft-notes{display:grid;gap:4px}
.ft-keep{display:flex;gap:10px;align-items:flex-start;padding:6px 2px;font-weight:400}
.ft-keep input{margin-top:2px;flex:none;width:22px;height:22px}
.ft-apply{width:100%;height:auto;min-height:56px;padding:8px 14px;text-align:center;line-height:1.25}
.ft-done{color:var(--green-deep);font-weight:700;font-size:14px;line-height:1.4}
.sheet .ft{margin-bottom:2px}

/* «Магазин: что пополнить»: список пачек с количеством, кнопка «Пополнено», последние дни (выпуск 201) */
.sp-task{display:grid;gap:10px;border-color:#B8893B;background:var(--tint-gold)}
.sp-ok{display:grid;gap:6px;border-color:var(--green-line);background:var(--green-bg)}
.sp-list{display:grid}
.sp-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid rgba(0,0,0,.08)}
.sp-row:last-child{border-bottom:0}
.sp-n{flex:1 1 auto;min-width:0;font-weight:600;overflow-wrap:anywhere}
.sp-q{flex:none;font-weight:800;font-size:17px;white-space:nowrap}
.sp-total{display:flex;justify-content:space-between;gap:8px;font-weight:800;padding-top:8px;border-top:2px solid rgba(0,0,0,.12)}
.sp-hist{display:grid;gap:6px}
.sp-hist>summary{cursor:pointer;list-style:none;min-height:44px;display:flex;align-items:center}
.sp-hist>summary::-webkit-details-marker{display:none}
.sp-hist>summary .row{width:100%}

/* «Расход маркетинга»: плитки периодов, позиции месяца, последние дни, скидки в настройках (выпуск 202) */
.mk-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.mk-tile{gap:2px;align-content:start;min-width:0}
.mk-tile .small{overflow-wrap:anywhere}
@media (max-width:479px){.mk-tiles{grid-template-columns:1fr 1fr}.mk-tiles>.mk-tile:last-child{grid-column:1/-1}}   /* на телефоне две плитки в ряд и «С 1 октября» на всю ширину: в трёх колонках слово «себестоимость» не помещается */
.mk-sum{font-weight:800;font-size:clamp(16px,4.8vw,20px);white-space:nowrap}
.mk-list{display:grid}
.mk-row{display:flex;align-items:flex-start;gap:10px;padding:8px 0;border-bottom:1px solid rgba(0,0,0,.08)}
.mk-row:last-child{border-bottom:0}
.mk-n{flex:1 1 auto;min-width:0;font-weight:600;overflow-wrap:anywhere}
.mk-q{flex:none;text-align:right;font-weight:800;white-space:nowrap}
.mk-q .small{font-weight:600}
.mk-day{display:grid;gap:6px}
.mk-day>summary{cursor:pointer;list-style:none;min-height:44px;display:flex;align-items:center}
.mk-day>summary::-webkit-details-marker{display:none}
.mk-day>summary .row{width:100%}
.mk-seen{padding:6px 0;border-bottom:1px solid rgba(0,0,0,.08);flex-wrap:wrap}
.mk-seen>.grow{flex:1 1 110px;min-width:0;overflow-wrap:anywhere}   /* на самом узком экране кнопка «Считать» уходит под название, а не раздвигает карточку */
.mk-seen:last-child{border-bottom:0}

/* «Расход маркетинга» по месяцам: отчёт бухгалтера (ОПиУ) + скидки маркетинга, итог месяца (выпуск 203) */
.mkm-list{display:grid;gap:8px;min-width:0}
.mkm-card{gap:6px;min-width:0}
.mkm-card.cur{border-color:var(--gold);background:var(--tint-soft)}
.mkm-year{background:var(--sand)}
.mkm-head{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:2px 10px}
.mkm-t{flex:1 1 130px;min-width:0;font-weight:800;font-size:16px;display:flex;align-items:center;gap:6px;flex-wrap:wrap;overflow-wrap:anywhere}
.mkm-total{flex:0 1 auto;margin-left:auto;max-width:100%;font-weight:800;font-size:clamp(17px,5.2vw,21px);white-space:nowrap;font-variant-numeric:tabular-nums}
.mkm-total.none{color:var(--muted)}
.mkm-lines{display:grid;gap:4px;padding-top:6px;border-top:1px solid rgba(0,0,0,.08);min-width:0}
.mkm-line{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:0 10px}
.mkm-l{flex:1 1 150px;min-width:0;overflow-wrap:anywhere}
.mkm-v{flex:0 1 auto;margin-left:auto;max-width:100%;text-align:right;font-weight:700;white-space:nowrap;font-variant-numeric:tabular-nums}
.mkm-v.dim{font-weight:600;color:var(--muted);white-space:normal}
.mkm-hint{font-size:14px;line-height:1.35;color:var(--muted);overflow-wrap:anywhere}
.mkm-older{display:grid;gap:8px;min-width:0}
.mkm-older>summary{cursor:pointer;list-style:none;min-height:44px;display:flex;align-items:center;font-weight:700;color:var(--muted)}
.mkm-older>summary::-webkit-details-marker{display:none}
.mkm-older>summary::before{content:'▸';margin-right:8px}
.mkm-older[open]>summary::before{content:'▾'}

/* «Отчёт о выручке»: средняя выручка за день по дням недели (выпуск 204); карточки недель и месяцев — те же .mkm-*, что у «Расхода маркетинга» */
.rr-wd{gap:6px;min-width:0}
.rr-wdrow{display:grid;grid-template-columns:26px minmax(0,1fr) auto;align-items:center;gap:8px}
.rr-wdn{font-weight:700;font-size:13px;color:var(--muted);text-transform:uppercase}
.rr-wdv{white-space:nowrap;font-variant-numeric:tabular-nums;font-size:14px;text-align:right}

/* Фото блюд (выпуск 230): миниатюра в карточке блюда и фото крупно */
.dishimg-btn{flex:0 0 auto;padding:0;border:1px solid var(--line);border-radius:10px;background:#EFE9DD;overflow:hidden;cursor:pointer;display:block;min-height:0;min-width:0}
.dishimg{display:block;width:100%;height:100%;object-fit:cover}
.dishimg-big{display:block;width:100%;max-height:60vh;object-fit:contain;border-radius:12px;background:#EFE9DD}
.setrow.withphoto .grow{flex:1 1 0;min-width:calc(100% - 72px);overflow:visible;text-overflow:clip;overflow-wrap:anywhere}   /* с фото текст на всю ширину, а количество переносится под него */
/* Подключения гостей по QR-коду и отчёт по рассылкам (акция «День рождения», выпуск 231) */
.jn-row{display:grid;gap:4px}
.jn-bar{height:10px;border-radius:6px;background:var(--cream);border:1px solid var(--line);overflow:hidden}
.jn-bar span{display:block;height:100%;background:var(--gold);border-radius:6px}
.jn-qr{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-start}
.jn-qr img{width:200px;height:200px;max-width:100%;border:1px solid var(--line);border-radius:12px;background:var(--white);image-rendering:pixelated}
.jn-qr>div{flex:1 1 220px;min-width:0}
.jn-hist{display:grid;gap:2px;padding:8px 0;border-top:1px solid var(--line)}
.jn-hist:first-child{border-top:0}
.jn-save[hidden]{display:none}
/* объединение броней разных залов (выпуск 232) */
.joinline{color:var(--ink-brown);background:var(--sand);border-radius:10px;padding:5px 9px}
.joincard{display:grid;gap:8px;border:1px solid var(--gold,#B8893B)}
.joinpart{display:grid;gap:6px;padding-top:2px}

/* ===== Выпуск 238: раскладка сообщения как в Telegram и WhatsApp (docs/spacing.md) ===== */
/* серия одного автора: без имени, плотнее (3px вместо 10px между пузырями) */
.cmsg.cont{margin-top:-7px}
.cmsg .cbub{cursor:pointer}
.cmsg .cbub .ctext::after{content:"";display:table;clear:both}
/* время и «изменено» внутри пузыря, справа внизу; текст обтекает их, отдельной строки под пузырём нет */
.cmsg .cbub .ctext .cat{float:right;margin:7px 0 -3px 12px;line-height:1.2;white-space:nowrap}
.cmsg .cbub .cfoot{display:flex;justify-content:flex-end;padding:3px 4px 0}
.cmsg.mine .cbub .cat{color:var(--on-dark);opacity:.72}
.cmsg.open .cbub{box-shadow:0 0 0 2px rgba(184,137,59,.55)}
/* кнопки действий: открываются нажатием на сообщение (позвали вас — открыты сразу); на компьютере с мышью видны всегда */
.cmsg .cacts{display:flex;flex-wrap:wrap;gap:6px;max-width:100%}
.cmsg.mine .cacts{justify-content:flex-end}
.cmsg:not(.open) .cacts{display:none}
@media (hover:hover) and (pointer:fine){.cmsg .cacts{display:flex}.cmsg:not(.open) .cacts{opacity:.55}.cmsg:hover .cacts{opacity:1}}
.cmsg .cacts .creplybtn{min-height:40px;padding:0 13px;font-size:14px;border:1px solid var(--line);border-radius:999px;background:var(--white);color:var(--text)}
.cmsg .cacts .creplybtn.hot{border-color:#B3151D;color:#B3151D}
.cmsg .cacts .creplybtn.del{padding:0 13px;opacity:1}
.cmsg .cacts .creplybtn.pin.on{background:#FFE7A6;border-color:var(--gold);padding:0 13px}
/* «Привязать мероприятие» в одну строку: пояснение показывается в самом окне привязки */
.cev-link{padding-top:8px;padding-bottom:8px}
.cev-link .evt small{display:none}
/* правка сообщения: метка над строкой ввода и кнопка «✓» */
.chip.cedit{display:block;max-width:100%;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cmsg.editing .cbub{box-shadow:0 0 0 2px var(--gold)}

/* ===== Выпуск 238: вложенные поля не копятся ===== */
/* раздел внутри раздела: без своей рамки и отступа, его строка и карточки стоят на той же левой линии, что и всё в родительском разделе */
:root .sect-body details.sect{border:0;border-radius:0;background:transparent;box-shadow:none;margin:0;overflow:visible}
:root .sect-body details.sect>summary{background:var(--white);border:1px solid var(--line);border-radius:14px}
html[data-style=air] .sect-body details.sect>summary{border-color:transparent;box-shadow:var(--shadow-soft)}
:root .sect-body details.sect>.sect-body{padding:8px 0 0;background:transparent}
:root .sect-body details.sect[open]>summary{border-bottom-color:var(--line)}
html[data-style=air] .sect-body details.sect[open]>summary{border-bottom-color:transparent}
