:root{--bg:#f4f6f3;--panel:#fff;--ink:#17262b;--ink2:#4a5a5f;--ink3:#6b797d;--rule:#d7ddd9;--lake:#0e5e6f;--lake-soft:#dcebec;--ok:#2f6b3a;--ok-soft:#e1eee0;--warn:#8a5a00;--warn-soft:#f8ecc9;--bad:#a2304a;--bad-soft:#f5dde2}
*{box-sizing:border-box}body{margin:0;font:15px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;background:var(--bg);color:var(--ink)}
a{color:var(--lake)}header.top{background:var(--ink);color:#fff;padding:8px 16px;display:flex;gap:14px;align-items:center;flex-wrap:wrap;position:sticky;top:0;z-index:10}
header.top a{color:#fff;text-decoration:none;padding:4px 6px;border-radius:6px}header.top a.on{background:rgba(255,255,255,.18)}
header.top .brand{display:flex;align-items:center;gap:8px;text-decoration:none;margin-right:6px}header.top .brand img{height:40px;width:auto;display:block}header.top .brand .brand-text{height:38px}@media (max-width:900px){header.top .brand .brand-text{display:none}}header.top form{margin-left:auto}header.top input{padding:6px 10px;border-radius:6px;border:0;min-width:220px}
.demo{background:var(--warn-soft);color:var(--warn);padding:6px 16px;font-size:13px}
main{max-width:1280px;margin:0 auto;padding:18px 16px 60px}h1{font-size:26px;margin:4px 0 12px}h2{font-size:18px;margin:18px 0 8px}
.panel{background:var(--panel);border:1px solid var(--rule);border-radius:10px;padding:14px;margin-bottom:14px}
table{width:100%;border-collapse:collapse;background:var(--panel)}th,td{padding:7px 8px;border-bottom:1px solid var(--rule);text-align:left;vertical-align:top}
th{font-size:12.5px;color:var(--ink2);font-weight:600;white-space:nowrap}td.n,th.n{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.wrap{overflow-x:auto;border:1px solid var(--rule);border-radius:10px}
.tabs{display:flex;gap:2px;flex-wrap:wrap;border-bottom:1px solid var(--rule);margin:10px 0 14px}.tabs a{padding:8px 12px;text-decoration:none;color:var(--ink2);border-bottom:3px solid transparent}.tabs a.on{color:var(--ink);font-weight:600;border-color:var(--lake)}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin:10px 0}.kpi{background:var(--panel);border:1px solid var(--rule);border-radius:10px;padding:10px 12px}.kpi b{display:block;font-size:22px}.kpi span{font-size:12.5px;color:var(--ink3)}
.badge{display:inline-block;padding:1px 8px;border-radius:99px;font-size:12px;background:var(--lake-soft);color:var(--lake);white-space:nowrap}.b-ok{background:var(--ok-soft);color:var(--ok)}.b-warn{background:var(--warn-soft);color:var(--warn)}.b-bad{background:var(--bad-soft);color:var(--bad)}
.alert{padding:8px 12px;border-left:4px solid var(--lake);background:var(--panel);margin:6px 0;border-radius:4px}.alert.high{border-color:var(--bad)}.alert.mid{border-color:#e3ae32}
.msg{padding:8px 12px;border-radius:8px;margin:6px 0;background:var(--lake-soft)}.msg.error{background:var(--bad-soft)}.msg.warning{background:var(--warn-soft)}.msg.success{background:var(--ok-soft)}
form.inline{display:flex;gap:6px;flex-wrap:wrap;align-items:end;margin:4px 0}label{font-size:12.5px;color:var(--ink2);display:grid;gap:2px}
input,select,textarea,button{font:inherit}input,select,textarea{padding:6px 8px;border:1px solid var(--rule);border-radius:6px;background:#fff;max-width:100%}
button,.btn{background:var(--lake);color:#fff;border:0;border-radius:6px;padding:7px 12px;cursor:pointer;text-decoration:none;display:inline-block}button.ghost,.btn.ghost{background:transparent;color:var(--lake);border:1px solid var(--lake)}button.danger{background:var(--bad)}
.muted{color:var(--ink3)}.neg{color:var(--bad)}.pos{color:var(--ok)}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.bar{height:6px;background:var(--rule);border-radius:3px;overflow:hidden;min-width:60px}.bar i{display:block;height:100%;background:var(--lake)}
.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.cal div{background:var(--panel);border:1px solid var(--rule);border-radius:6px;min-height:84px;padding:4px;font-size:12px;min-width:0;overflow:hidden}.cal .out{opacity:.45}.cal a{display:block;background:var(--lake-soft);border-radius:4px;padding:1px 4px;margin:2px 0;text-decoration:none;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.tg td{padding:2px;min-width:22px;text-align:center;font-size:11px}.tg .busy{background:var(--lake-soft)}.tg .conf{background:var(--bad-soft)}
details summary{cursor:pointer;color:var(--lake)}
@media (max-width:760px){.grid2{grid-template-columns:1fr}header.top form{margin-left:0;width:100%}header.top input{width:100%}h1{font-size:21px}}
@media print{header.top,.demo,.noprint{display:none}body{background:#fff}main{padding:0}}

.month-row td{background:var(--bg);border-bottom:2px solid var(--ink);font-weight:700;font-size:15px;padding-top:22px;text-transform:capitalize}
.party-mark{display:inline-block;min-width:18px;padding:0 6px;border-radius:9px;color:#fff;font-size:12px;font-weight:700;text-align:center}
tr.grp-start td{border-top:2px solid var(--ink)}tr.grp-end td{border-bottom:2px solid var(--ink)}tr.grp td:first-child{border-left:2px solid var(--ink)}tr.grp td:last-child{border-right:2px solid var(--ink)}

.field-error{display:block;color:#b3261e;font-size:12px;margin-top:2px;max-width:260px}td .field-error,p.field-error{max-width:none}

.printonly{display:none}@media print{.printonly{display:inline}}
.line-form label{display:flex;flex-direction:column;gap:2px;font-size:12px;color:var(--muted)}

.kb h2{margin:18px 0 8px;font-size:18px}.kb h3{margin:14px 0 6px;font-size:16px}.kb p{margin:8px 0;max-width:820px}.kb li{margin:4px 0;max-width:800px}.kb code{background:var(--bg);padding:1px 4px;border-radius:4px}


/* ---- главная: сводка, «требует внимания», период, лента сезона; страницы «Оплаты» и «Настройки» */
.hm-head{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;margin:4px 0 14px}.hm-head h1{margin:0}
.hm-views{display:flex;gap:4px;align-items:center}.hm-views a:not(.btn){padding:6px 12px;border-radius:8px;text-decoration:none;color:var(--ink2);font-size:14px}
.hm-views a.on:not(.btn){background:var(--lake-soft);color:var(--ink);font-weight:600}.hm-views .btn{margin-left:10px}
.hm-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px;margin:0 0 12px}
.hm-tile{display:grid;gap:1px;background:var(--panel);border:1px solid var(--rule);border-left:4px solid var(--rule);border-radius:10px;padding:12px 14px;text-decoration:none;color:var(--ink)}
.hm-tile:hover{border-color:var(--lake)}.hm-tile b{font-size:26px;line-height:1.1;font-weight:600}.hm-tile span{font-size:13.5px;color:var(--ink2)}.hm-tile small{font-size:12.5px;color:var(--ink3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hm-tile.bad{border-left-color:var(--bad)}.hm-tile.bad b{color:var(--bad)}.hm-tile.warn{border-left-color:#d9a21f}.hm-tile.ok{border-left-color:#4f9d73}.hm-tile.cur{box-shadow:0 0 0 2px var(--lake)}
.hm-alerts{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-start;margin:0 0 12px}.hm-alerts-title{font-size:13.5px;color:var(--ink2);padding:6px 4px;font-weight:600}
.hm-alert{background:var(--panel);border:1px solid var(--rule);border-radius:10px;font-size:13.5px}.hm-alert[open]{flex-basis:100%}
.hm-alert summary{list-style:none;cursor:pointer;padding:6px 12px;border-left:4px solid #d9a21f;border-radius:9px}.hm-alert.high summary{border-left-color:var(--bad)}
.hm-alert summary::-webkit-details-marker{display:none}.hm-alert summary b{display:inline-block;min-width:20px;text-align:center;margin-left:4px;padding:0 6px;border-radius:99px;background:var(--bg)}
.hm-alert ul{margin:4px 0 10px;padding:0 14px 0 30px;columns:2;column-gap:28px}.hm-alert li{margin:4px 0;break-inside:avoid}
.hm-filter{display:grid;gap:10px}.hm-periods{display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.hm-periods>a{padding:5px 11px;border:1px solid var(--rule);border-radius:99px;text-decoration:none;color:var(--ink2);font-size:13.5px;background:#fff}.hm-periods>a.on{background:var(--lake);border-color:var(--lake);color:#fff}
.hm-dates{display:flex;gap:8px;align-items:center;margin-left:10px;padding:3px 10px;border:1px solid transparent;border-radius:99px}.hm-dates.on{border-color:var(--lake);background:var(--lake-soft)}
.hm-dates label{display:flex;gap:6px;align-items:center;font-size:13.5px;color:var(--ink2)}.hm-dates input{padding:4px 6px}
.hm-selects{display:flex;flex-wrap:wrap;gap:10px;align-items:end}.hm-reset{align-self:center;font-size:13.5px}.hm-quick{font-size:13.5px;color:var(--ink3)}
.hm-save{font-size:13.5px;margin:-4px 0 10px}.hm-save summary{cursor:pointer;color:var(--ink3)}.hm-save form{margin-top:6px}
.hm-count{margin:4px 0 6px;font-size:13px}.hm-past td{opacity:.62}.hm-past:hover td{opacity:1}
.hm-calnav{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-top:0}.cal .today{outline:2px solid var(--lake);outline-offset:-2px}
.season-legend{margin-left:auto;font-size:12.5px;color:var(--ink3);display:flex;gap:10px;align-items:center;flex-wrap:wrap}.season-legend i{display:inline-block;width:14px;height:10px;border-radius:3px;margin-right:-6px}
.season-grid{overflow-x:auto}.season-row{display:grid;grid-template-columns:170px minmax(820px,1fr);align-items:center;border-top:1px solid var(--rule)}
.season-name{font-size:13px;padding:6px 8px 6px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.season-name small{display:block;color:var(--ink3);font-size:11.5px}
.season-tracks{display:grid;gap:3px;padding:5px 0}.season-track{position:relative;height:16px}
.season-months{border-top:0}.season-months .season-track{height:20px}.season-months em{position:absolute;top:0;font-style:normal;font-size:12px;color:var(--ink3);padding-left:4px;border-left:1px solid var(--rule);height:20px;box-sizing:border-box}
.season-track u{position:absolute;top:-5px;bottom:-5px;width:1px;background:var(--rule);opacity:.6}.season-track s{position:absolute;top:-5px;bottom:-5px;width:2px;background:var(--ink);opacity:.55;z-index:2}
.season-track a{position:absolute;top:0;height:16px;border-radius:4px;min-width:5px;z-index:1;box-sizing:border-box}.season-track a:hover{outline:2px solid var(--ink);z-index:3}
.season .low,.season-legend .low{background:#cf5b5b}.season .mid,.season-legend .mid{background:#e0ac35}.season .good,.season-legend .good{background:#4f9d73}.season .full,.season-legend .full{background:#0e5e6f}
.season-track a.past{opacity:.38}.season-track a.draft,.season-legend .draft{background:repeating-linear-gradient(45deg,#c9d2ce,#c9d2ce 3px,#eef2ef 3px,#eef2ef 6px)}
.pay-group{margin-bottom:14px}.pay-dep th{background:var(--lake-soft);font-size:14px;white-space:normal;text-transform:none;letter-spacing:0;color:var(--ink)}.pay-dep a{font-weight:600}
.set-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}.set-card{display:grid;gap:4px;background:var(--panel);border:1px solid var(--rule);border-radius:12px;padding:16px 18px;text-decoration:none;color:var(--ink)}
.set-card:hover{border-color:var(--lake)}.set-card b{font-size:16px}.set-card span{font-size:13.5px;color:var(--ink3);line-height:1.45}
@media (max-width:700px){.hm-alert ul{columns:1}.hm-dates{margin-left:0}}

/* ---- туристы выезда: одна таблица на группу, бронь — строка-подзаголовок */
.pp-find input{width:min(420px,100%);padding:8px 12px;border-radius:8px}
.pp-table{counter-reset:pp}.pp-table tbody+tbody{border-top:0}
.pp-head td{background:#f3f6f4;border-top:2px solid var(--rule);padding:8px 12px;font-size:13.5px;white-space:normal}
.pp-line{display:flex;justify-content:space-between;flex-wrap:wrap;gap:4px 18px}.pp-money{color:var(--ink2)}
.pp-actions{margin-top:4px}.pp-actions summary{cursor:pointer;color:var(--ink3);font-size:12.5px}.pp-actions form{margin-top:6px}
.pp-row td{padding-top:7px;padding-bottom:7px}.pp-active .pp-num::before{counter-increment:pp;content:counter(pp);color:var(--ink3)}
.pp-off td{color:var(--ink3);text-decoration:line-through;text-decoration-color:#c5cdc9}.pp-off td:last-child,.pp-off td .muted{text-decoration:none}

/* ---- отчёты: один отчёт на экран, переключатель сверху */
.rep-nav{display:flex;flex-wrap:wrap;gap:4px;margin:0 0 14px;border-bottom:1px solid var(--rule)}
.rep-nav a{padding:8px 12px;text-decoration:none;color:var(--ink2);font-size:14px;border-bottom:3px solid transparent;margin-bottom:-1px}
.rep-nav a:hover{color:var(--ink)}.rep-nav a.on{color:var(--ink);font-weight:600;border-bottom-color:var(--lake)}.rep-nav a.rep-out{margin-left:auto;color:var(--ink3);font-size:13px}

/* ---- автобус: схема салона (вид сверху, перед слева) */
.bus-top{display:grid;gap:12px;margin-bottom:14px}.bus-setup{display:flex;flex-wrap:wrap;gap:12px;align-items:end}.bus-stats{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center}
.bus-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.bus-wrap{margin-bottom:18px;overflow-x:auto}
.bus{display:inline-flex;align-items:stretch;gap:6px;padding:14px 18px 14px 12px;background:#f7f9f8;border:4px solid #8d9c96;border-radius:12px 40px 40px 12px;box-shadow:inset 0 0 0 6px #fff}
.bus-cab{display:flex;flex-direction:column;justify-content:flex-start;align-items:center;gap:6px;width:54px;padding:6px 0;border-left:2px dashed #b9c4bf;margin-left:6px;font-size:10px;color:var(--ink3)}
.bus-cab i{width:26px;height:26px;border-radius:50%;border:3px solid #8d9c96}
.bus-col{display:grid;grid-auto-rows:44px;gap:5px;align-content:start;position:relative;padding-bottom:14px}
.bus-col small{position:absolute;bottom:-2px;left:0;right:0;text-align:center;font-size:10px;color:var(--ink3)}
.st{width:46px;height:44px;border:2px solid #b9c4bf;border-radius:7px 7px 5px 5px;background:#fff;padding:2px 3px;font-size:10px;line-height:1.1;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;cursor:pointer;position:relative;color:var(--ink);text-align:left}
.st b{font-size:11px;color:var(--ink2)}.st span{font-size:9.5px;color:var(--ink);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:40px}
.st i{position:absolute;top:1px;right:4px;font-style:normal;font-weight:700;color:#b9861a;font-size:11px}
.st.guide{background:#eef2ef;border-style:dashed}.st.paid{border-color:#d9a21f;background:#fdf6e0}.st.busy{background:var(--lake-soft);border-color:var(--lake)}.st.paid.busy{background:#f3e3b6;border-color:#b9861a}
.st:hover{outline:2px solid var(--ink);outline-offset:1px;z-index:2}
.st-aisle{height:44px}
.st-door{height:44px;width:46px;border:2px dashed #6f8a7f;border-radius:5px;background:repeating-linear-gradient(135deg,#eef3f0 0 6px,#fff 6px 12px);font-size:9px;color:var(--ink3);display:flex;align-items:center;justify-content:center;text-transform:uppercase;letter-spacing:.04em}
.bus-cab{justify-content:space-between;flex-direction:column}.bus-cab em{font-style:normal;font-size:9px;text-transform:uppercase;letter-spacing:.04em;border:2px dashed #6f8a7f;border-radius:5px;padding:12px 4px;background:repeating-linear-gradient(135deg,#eef3f0 0 6px,#fff 6px 12px)}
.bus-legend{font-size:13px;color:var(--ink2);margin-top:8px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}.bus-legend i{display:inline-block;width:18px;height:12px;border-radius:3px;border:2px solid #b9c4bf;background:#fff}
.bus-legend .guide{background:#eef2ef;border-style:dashed}.bus-legend .paid{border-color:#d9a21f;background:#fdf6e0}.bus-legend .busy{background:var(--lake-soft);border-color:var(--lake)}
.seat-dialog{border:1px solid var(--rule);border-radius:12px;padding:20px 24px;width:min(420px,92vw);box-shadow:0 20px 50px -20px rgba(23,38,43,.5)}.seat-dialog::backdrop{background:rgba(15,25,28,.45)}
.seat-dialog h3{margin:0 0 10px;font-size:18px}.seat-dialog h3 small{font-weight:400;color:var(--ink3);font-size:13px;margin-left:6px}
.sd-close{position:absolute;top:8px;right:10px;margin:0}.sd-close button{background:transparent;color:var(--ink3);border:0;font-size:22px;padding:2px 8px}
.sd-name{font-size:17px;font-weight:600;margin:0 0 2px}.seat-dialog .inline{margin-top:10px}.seat-dialog form.inline{display:flex;gap:8px;align-items:end;flex-wrap:wrap}
.sd-assign{display:grid;gap:10px}.sd-assign select{width:100%}
.bus-queue h3{margin:0 0 4px;font-size:16px}
@media print{.bus-actions,.seat-dialog{display:none}.bus{border-color:#000}}

/* Таблицы «как в Google-таблице»: сетка, плотные строки, числа справа */
.sheet{border-collapse:collapse;font-size:13px;width:100%}.sheet th,.sheet td{border:1px solid #d5ddd9;padding:4px 7px;vertical-align:top;line-height:1.25}
.sheet thead th{background:#e9eeec;font-weight:600;color:var(--ink2);white-space:nowrap;position:sticky;top:0;z-index:1}
.sheet td.n,.sheet th.n{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.sheet tr.pp-head td{background:#f3f6f4;border-top:2px solid #b9c4bf;padding:5px 7px}.sheet tr.pp-total td{background:#f7f9f8;border-top:2px solid #b9c4bf}
.sheet .pp-name{min-width:200px;white-space:nowrap}.sheet .pp-note{min-width:140px;max-width:280px}
.pp-sheet tr.pp-off td{color:var(--ink3);background:#fbfbfa}.pp-sheet .pp-act{width:28px;text-align:center}.pp-sheet .pp-act summary{cursor:pointer;list-style:none;font-weight:700;padding:0 4px}
.pp-menu{position:absolute;right:0;z-index:5;background:#fff;border:1px solid #b9c4bf;border-radius:8px;padding:10px;box-shadow:0 8px 24px rgba(0,0,0,.12);min-width:520px;text-align:left}
.pp-menu form{margin:0 0 8px}.pp-edit{display:grid;grid-template-columns:repeat(4,1fr);gap:6px 8px;align-items:end}.pp-edit label{font-size:11.5px;color:var(--ink3);display:flex;flex-direction:column;gap:2px}.pp-edit input{width:100%}.pp-edit button{grid-column:span 1}
.pp-more{border:1px solid #b9c4bf;background:#fff;border-radius:6px;padding:1px 7px;cursor:pointer;font-weight:700;line-height:1.2}.pp-more:hover{background:var(--lake-soft)}
.pp-dialog{width:min(760px,96vw)}.pp-dialog h4{margin:12px 0 4px;font-size:13px;color:var(--ink3);text-transform:uppercase;letter-spacing:.04em}.pp-dialog form.inline{margin-bottom:6px}
.sheet-notes{width:100%;min-height:180px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:13px;line-height:1.4}
.rooms{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px}.room{border:1px solid #d5ddd9;border-radius:8px;padding:8px 10px;background:#fff}.room h4{margin:0 0 4px;font-size:14px}
.room ul{list-style:none;margin:4px 0;padding:0}.room li{display:flex;justify-content:space-between;gap:6px;padding:2px 0;border-bottom:1px dotted #e0e6e3}.room .free{color:var(--ink3);font-size:12px}.room form.inline{margin-top:6px}
.room.full{border-color:#6f8a7f}.room.over{border-color:#c0392b}
.est-grid{grid-template-columns:minmax(0,3fr) minmax(280px,1fr);align-items:start}@media(max-width:1100px){.est-grid{grid-template-columns:1fr}}
.est-sheet td:first-child{min-width:170px}
.svc-form{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:end}.svc-form label{display:flex;flex-direction:column;gap:2px;font-size:12px;color:var(--ink3)}
main.wide{max-width:1560px}
.wrap.nowrap-x{overflow:visible}.pp-sheet{table-layout:auto}.pp-sheet td:nth-child(4),.pp-sheet td:nth-child(5),.pp-sheet td:nth-child(6){white-space:nowrap}.pp-sheet .pp-note{max-width:none}
.pp-sheet th,.pp-sheet td{padding:3px 6px}

/* Гриф «Коммерческая тайна» (98-ФЗ, ст. 10): внизу каждой страницы, при печати — на каждом листе */
.secret-mark{max-width:1280px;margin:0 auto;padding:4px 16px 22px;font-size:11.5px;line-height:1.4;color:var(--ink3);text-align:center}
@media print{.secret-mark{position:fixed;left:0;right:0;bottom:0;padding:3px 0;background:#fff;color:#333;font-size:8pt}body{padding-bottom:9mm}}
