:root{
  --orange:#ee6a24; --orange-d:#d2561a; --orange-l:#fde9dd;
  --ink:#1e1f22; --ink-2:#4a4d55; --muted:#7b7f88; --line:#e4e1dc;
  --bg:#f6f4f0; --card:#ffffff;
  --free:#2fa66a; --partial:#e9a23b; --seats:#9a62c9; --busy:#d64545; --mine:#3f6fd8;
  --radius:16px; --shadow:0 10px 30px rgba(30,31,34,.08);
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{margin:0}
body{font-family:Manrope,system-ui,-apple-system,"Segoe UI",sans-serif;background:var(--bg);color:var(--ink);font-size:16px;line-height:1.45}
h2{font-size:28px;margin:0 0 6px;letter-spacing:-.02em}
h3{margin:0 0 6px}
.muted{color:var(--muted)}
.small{font-size:13px;margin:8px 0 0}
button{font:inherit;cursor:pointer}
input,select{font:inherit}

/* ---------- Кнопки ---------- */
.btn{border:0;border-radius:12px;padding:10px 16px;font-weight:600;transition:.2s;display:inline-flex;align-items:center;gap:8px}
.btn-lg{padding:14px 24px;font-size:17px}
.btn-primary{background:var(--orange);color:#fff}
.btn-primary:hover{background:var(--orange-d)}
.btn-primary:disabled{background:#c9c5bf;cursor:not-allowed}
.btn-ghost{background:transparent;color:var(--ink);border:1px solid var(--line)}
.btn-ghost:hover{border-color:var(--ink)}
.btn-link{background:none;border:0;color:var(--muted);text-decoration:underline}
.btn-danger{background:#fff;color:var(--busy);border:1px solid #f1c4c4}
.btn-danger:hover{background:#fdeeee}
.btn-sm{padding:6px 10px;font-size:14px;border-radius:9px}

/* ---------- Заставка ---------- */
.splash{position:fixed;inset:0;z-index:100;background:#141414;overflow:hidden;display:flex;align-items:center;justify-content:center;transition:opacity .8s, visibility .8s}
.splash.hide{opacity:0;visibility:hidden}
.splash-img{position:absolute;inset:-4%;background:#fff center/contain no-repeat;animation:kenburns 9s ease-out forwards, reveal 1.6s cubic-bezier(.7,0,.2,1) forwards;clip-path:circle(0% at 50% 50%)}
.splash-shade{position:absolute;inset:0;background:radial-gradient(ellipse at center,rgba(20,20,20,.62) 0%,rgba(20,20,20,.86) 70%);opacity:0;animation:fadein 1s .9s forwards}
.splash-content{position:relative;text-align:center;color:#fff;padding:24px}
.splash-mark{display:block;margin:0 auto;height:clamp(170px,36vh,320px);width:auto;opacity:0;transform:scale(.85);animation:mark 1.1s 1s cubic-bezier(.2,.8,.2,1) forwards}
@keyframes mark{from{opacity:0;transform:scale(.85)}to{opacity:1;transform:none}}
.splash-line{height:4px;width:0;background:var(--orange);margin:14px auto 18px;border-radius:2px;animation:line .9s 1.8s ease-out forwards}
.splash-sub,.splash-tag,.splash-btn{opacity:0;animation:fadeup .7s forwards}
.splash-sub{font-size:20px;font-weight:600;margin:0;animation-delay:2.1s}
.splash-tag{margin:8px 0 26px;color:#d9d6d0;animation-delay:2.3s}
.splash-btn{animation-delay:2.6s}
.splash-progress{position:absolute;left:0;right:0;bottom:0;height:3px;background:rgba(255,255,255,.12)}
.splash-progress i{display:block;height:100%;width:0;background:var(--orange);animation:progress 7s linear forwards}
@keyframes reveal{to{clip-path:circle(75% at 50% 50%)}}
@keyframes kenburns{from{transform:scale(1.15) rotate(-1.5deg)}to{transform:scale(1) rotate(0)}}
@keyframes fadein{to{opacity:1}}
@keyframes line{to{width:min(420px,70vw)}}
@keyframes fadeup{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes progress{to{width:100%}}
@media (prefers-reduced-motion:reduce){
  .splash *, .splash-img{animation-duration:.01s!important;animation-delay:0s!important}
}

/* ---------- Шапка ---------- */
.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:16px;padding:12px 24px;background:rgba(246,244,240,.92);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.brand{text-decoration:none;color:var(--ink);display:flex;align-items:center;gap:8px}
.brand img{height:34px;width:auto}
.brand .logo-light{display:none}
body.admin .brand .logo-dark{display:none}
body.admin .brand .logo-light{display:inline}
.brand b{font-size:22px;letter-spacing:.06em}
.brand b::after{content:"";display:inline-block;width:7px;height:7px;background:var(--orange);border-radius:50%;margin-left:3px}
.brand span{color:var(--muted);font-size:13px}
.steps{display:flex;gap:4px;margin:0 auto}
.steps button{border:0;background:none;padding:8px 12px;border-radius:10px;color:var(--muted);display:flex;align-items:center;gap:8px;font-weight:600}
.steps button i{font-style:normal;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;border:1.5px solid currentColor;font-size:13px}
.steps button.done{color:var(--ink)}
.steps button.done i{background:var(--ink);border-color:var(--ink);color:#fff}
.steps button.active{color:var(--orange);background:var(--orange-l)}
.steps button.active i{background:var(--orange);border-color:var(--orange);color:#fff}
.top-actions{display:flex;align-items:center;gap:10px}
.top-actions em{font-style:normal;background:var(--orange);color:#fff;border-radius:10px;padding:0 7px;font-size:13px}
.account-btn{display:flex;align-items:center;gap:8px;border:1px solid var(--line);background:transparent;color:var(--ink);border-radius:22px;padding:4px 14px 4px 4px;font-weight:600;font-size:14px;max-width:190px}
.account-btn:hover{border-color:var(--ink)}
body.signed .steps{display:none}
body.signed .top-actions{margin-left:auto}
.account-btn .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.av{width:30px;height:30px;border-radius:50%;background:var(--orange);color:#fff;display:inline-grid;place-items:center;font-weight:800;font-size:15px;flex:none}
.av.big{width:52px;height:52px;font-size:22px}
body.admin .topbar{background:#23252a;color:#fff}
body.admin .brand{color:#fff}
body.admin .top-actions .btn-ghost,body.admin .account-btn{color:#fff;border-color:#555}
body.admin .account-btn:hover{border-color:#fff}
body.admin .steps button.done{color:#fff}

/* ---------- Шаги ---------- */
main{padding:28px 24px 60px}
.step{display:none;animation:fadeup .4s}
.step.active{display:block}
.wrap{max-width:1040px;margin:0 auto}
.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:32px}
.actions{margin-top:24px;display:flex;justify-content:flex-end}

/* Опросник */
.quiz{max-width:760px;margin:0 auto}
.quiz-progress{height:6px;background:var(--line);border-radius:3px;overflow:hidden;margin-bottom:26px}
.quiz-progress i{display:block;height:100%;background:var(--orange);width:0;transition:width .4s}
.quiz-q{font-size:26px;font-weight:800;letter-spacing:-.02em;margin:0 0 6px}
.quiz-hint{color:var(--muted);margin:0 0 22px}
.options{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
.option{border:1.5px solid var(--line);background:#fff;border-radius:14px;padding:18px;text-align:left;transition:.2s;display:flex;flex-direction:column;gap:4px;color:var(--ink)}
.option:hover{border-color:var(--orange);transform:translateY(-2px)}
.option.selected{border-color:var(--orange);background:var(--orange-l)}
.option .ico{font-size:28px}
.option b{font-size:17px}
.option small{color:var(--muted)}
.quiz-nav{display:flex;justify-content:space-between;margin-top:26px}

/* Прайс */
.recommend{background:var(--ink);color:#fff;border-radius:var(--radius);padding:24px 28px;margin-bottom:28px;display:flex;gap:20px;align-items:center;flex-wrap:wrap}
.recommend .ico{font-size:40px}
.recommend h3{font-size:22px}
.recommend p{margin:0;color:#cfcbc4}
.recommend .price-big{margin-left:auto;text-align:right}
.recommend .price-big b{font-size:28px;color:var(--orange)}
.table-scroll{overflow-x:auto;margin-top:16px}
.price-table{width:100%;border-collapse:separate;border-spacing:0;background:#fff;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);min-width:600px}
.price-table th,.price-table td{padding:14px 18px;text-align:left;border-bottom:1px solid var(--line)}
.price-table th{background:#faf8f5;font-size:13px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.price-table td.num{font-variant-numeric:tabular-nums;font-weight:700;white-space:nowrap}
.price-table tr.hl td{background:var(--orange-l)}
.price-table tr.hl td:first-child{box-shadow:inset 4px 0 var(--orange)}
.price-table td.hl-col{color:var(--orange-d)}
.included{display:flex;flex-wrap:wrap;gap:8px;list-style:none;padding:0;margin:20px 0 0}
.included li{background:#fff;border:1px solid var(--line);border-radius:20px;padding:6px 14px;font-size:14px}
.included li::before{content:"✓ ";color:var(--free);font-weight:800}

/* Регистрация */
.form-card{max-width:520px;margin:0 auto}
form label{display:flex;flex-direction:column;gap:6px;font-weight:600;font-size:14px;margin-bottom:14px}
form input:not([type=checkbox]),.panel input,.panel select,.map-toolbar input,.map-toolbar select{border:1.5px solid var(--line);border-radius:10px;padding:11px 12px;background:#fff;color:var(--ink);font-size:16px}
form input:focus,.panel input:focus,.panel select:focus{outline:none;border-color:var(--orange)}
form input.invalid{border-color:var(--busy)}
label.check{flex-direction:row;align-items:center;font-weight:500}
.form-error{color:var(--busy);min-height:20px;font-size:14px;margin:0 0 8px}
.form-card .btn-primary{width:100%;justify-content:center}
.reg-done{text-align:center}
.reg-done .big{font-size:48px}
.reg-done .btns{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:18px}

/* ---------- Карта ---------- */
.map-toolbar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:14px;margin-bottom:14px}
.map-toolbar label{display:flex;flex-direction:column;font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;gap:4px}
.map-toolbar input,.map-toolbar select{padding:8px 10px}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{border:1.5px solid var(--line);background:#fff;border-radius:20px;padding:7px 14px;font-weight:600;font-size:14px;color:var(--ink)}
.chip.on{background:var(--ink);border-color:var(--ink);color:#fff}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:13px;color:var(--ink-2);margin-left:auto}
.legend span{display:flex;align-items:center;gap:6px}
.lg{width:14px;height:14px;border-radius:4px;display:inline-block}
.lg.seats{background:var(--seats)}.lg.closed{background:#b9b6b1}.lg.free{background:var(--free)}.lg.partial{background:var(--partial)}.lg.busy{background:var(--busy)}.lg.mine{background:var(--mine)}

.map-layout{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:18px;align-items:start}
.map-box{position:relative;background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}
.map-scroll{overflow:auto;max-height:calc(100vh - 190px)}
#officeMap{display:block;width:100%;height:auto;margin:0 auto;max-width:calc((100vh - 200px) * .9935)}
#officeMap.zoomed{max-width:none}
.done-card{text-align:center;margin-top:16px}
.done-card .big{font-size:40px}
.done-card .code{font-size:24px;font-weight:800;letter-spacing:.08em;background:var(--orange-l);border-radius:10px;padding:8px;margin:10px 0}
.done-card .admin-actions{justify-content:center}
.map-stats{position:absolute;left:12px;top:12px;z-index:2;background:rgba(255,255,255,.94);border:1px solid var(--line);border-radius:12px;padding:8px 12px;font-size:13px}
.map-stats b{color:var(--free);font-size:18px}
.zoom{position:absolute;right:12px;top:12px;z-index:2;display:flex;flex-direction:column;gap:4px}
.zoom button{width:36px;height:36px;border-radius:10px;border:1px solid var(--line);background:#fff;font-size:20px;font-weight:700;color:var(--ink)}

.spot .shape{stroke-width:1.2;transition:fill .2s,stroke .2s,opacity .2s;cursor:pointer}
.spot.free .shape{fill:rgba(47,166,106,.28);stroke:var(--free)}
.spot.partial .shape{fill:rgba(233,162,59,.32);stroke:var(--partial)}
.spot.closed .shape{fill:rgba(120,118,115,.28);stroke:#9a9792}
.spot.seats .shape{fill:rgba(154,98,201,.22);stroke:var(--seats)}
.spot.busy .shape{fill:rgba(214,69,69,.38);stroke:var(--busy)}
.spot.mine .shape{fill:rgba(63,111,216,.4);stroke:var(--mine)}
.spot:hover .shape{stroke-width:2.4}
.spot{transition:opacity .2s}
.spot.dim{opacity:.22}
.spot.selected .shape{stroke:var(--ink);stroke-width:3}
.spot.recommended .shape{animation:pulse 1.6s ease-in-out infinite}
@keyframes pulse{50%{stroke-width:3.6;stroke:var(--orange)}}
.spot text{font-size:8px;font-weight:800;fill:#1e1f22;pointer-events:none;text-anchor:middle;dominant-baseline:central;paint-order:stroke;stroke:#fff;stroke-width:2.2px}
.spot.desk text{font-size:9px}
.spot.seat .shape{stroke-width:1.6;stroke:#fff}
.spot.seat.free .shape{fill:var(--free)}
.spot.seat.partial .shape{fill:var(--partial)}
.spot.seat.busy .shape{fill:var(--busy)}
.spot.seat.mine .shape{fill:var(--mine)}
.spot.seat:hover .shape{stroke:var(--ink);stroke-width:2}
.spot.seat.selected .shape{stroke:var(--ink);stroke-width:2.6}
.spot.seat text{font-size:9px;fill:#fff;stroke:none}
.spot.office text,.spot.meeting text{font-size:9px}
.zone .shape{fill:transparent;stroke:transparent;cursor:help}
.zone:hover .shape{fill:rgba(30,31,34,.07);stroke:#888;stroke-dasharray:3 2}

.tooltip{position:absolute;z-index:5;pointer-events:none;background:var(--ink);color:#fff;border-radius:10px;padding:8px 11px;font-size:13px;max-width:240px;box-shadow:var(--shadow)}
.tooltip b{display:block}

/* Панель */
.panel{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:22px;position:sticky;top:80px}
.panel-empty{text-align:center;padding:30px 6px}
.panel .kind{font-size:13px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.05em}
.panel h3{font-size:22px}
.panel .meta{display:flex;gap:12px;flex-wrap:wrap;font-size:14px;color:var(--ink-2);margin-bottom:10px}
.status{display:inline-flex;align-items:center;gap:6px;font-weight:700;font-size:14px;padding:4px 10px;border-radius:20px}
.status.closed{background:#ecebe8;color:#5f5c57}.status.seats{background:#efe4f8;color:#6b3a96}.status.free{background:#e3f4ea;color:#1f7a4b}.status.partial{background:#fbefdb;color:#9a6512}.status.busy{background:#f9e1e1;color:#a52f2f}.status.mine{background:#e3eafa;color:#2b4fa5}
.tariffs{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin:16px 0}
.tariff{border:1.5px solid var(--line);background:#fff;border-radius:12px;padding:10px 6px;text-align:center;color:var(--ink)}
.tariff small{display:block;color:var(--muted);font-size:12px;font-weight:600}
.tariff b{font-size:17px}
.tariff.on{border-color:var(--orange);background:var(--orange-l)}
.fields{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.fields label{display:flex;flex-direction:column;gap:4px;font-size:13px;font-weight:700;color:var(--ink-2)}
.fields .full{grid-column:1/-1}
.total{display:flex;justify-content:space-between;align-items:baseline;margin:16px 0 12px;padding-top:14px;border-top:1px dashed var(--line)}
.total b{font-size:26px}
.warn{background:#fdeeee;color:#a52f2f;border-radius:10px;padding:10px 12px;font-size:14px;margin-bottom:12px}
.note{background:#f3f1ed;border-radius:10px;padding:10px 12px;font-size:14px;margin-bottom:12px;color:var(--ink-2)}
.panel .btn-primary.wide{width:100%;justify-content:center}
.admin-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.day-line{margin:14px 0 4px;font-size:13px;font-weight:700;color:var(--ink-2)}
.timeline{display:grid;grid-template-columns:repeat(12,1fr);gap:2px}
.timeline i{height:18px;border-radius:3px;background:#d7efe1}
.timeline i.b{background:var(--busy)}
.timeline i.m{background:var(--mine)}
.timeline i.s{background:var(--seats)}
.timeline i.cur{outline:2px solid var(--ink);outline-offset:1px}
.timeline-lbl{display:flex;justify-content:space-between;font-size:11px;color:var(--muted)}
.blist{list-style:none;padding:0;margin:8px 0 0;display:flex;flex-direction:column;gap:8px}
.blist li{background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 12px;display:flex;gap:10px;align-items:center;justify-content:space-between;font-size:14px}
.blist li small{color:var(--muted);display:block}
.blist li .price{font-weight:800;white-space:nowrap}

/* Брони выбранного места */
.bookings-box{margin-top:20px;padding-top:14px;border-top:1px dashed var(--line)}
.bookings-box .blist{max-height:340px;overflow:auto;padding-right:2px}
.blist li.bk{cursor:pointer;transition:border-color .15s}
.blist li.bk:hover{border-color:var(--ink)}
.blist li.is-mine{border-color:#b9c9f0;background:#f3f6fd}
.blist li.is-now{box-shadow:inset 3px 0 var(--busy)}
.blist li.is-mine.is-now{box-shadow:inset 3px 0 var(--mine)}
.blist li small.phone{color:var(--ink-2);font-weight:600}
.tag{display:inline-block;background:#f1efeb;color:var(--ink-2);border-radius:6px;padding:0 6px;font-size:12px;font-weight:700}
.bookings-box .btn-link{padding:6px 0;font-size:14px}
details.past{margin-top:10px;font-size:14px}
details.past summary{cursor:pointer;color:var(--muted);font-weight:600}

/* Оплата и связь с администратором */
.pay-box{background:#faf8f5;border:1px solid var(--line);border-radius:14px;padding:14px 16px;margin:14px 0;text-align:left}
.pay-box h4{margin:0 0 8px;font-size:15px}
.pay-ways{margin:0;padding-left:20px;display:grid;gap:10px;font-size:14px}
.pay-phone{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:6px 0 4px}
.pay-phone code{font-family:inherit;font-size:18px;font-weight:800;letter-spacing:.02em;background:var(--orange-l);border-radius:8px;padding:5px 10px;user-select:all}
.pay-box .small{margin:6px 0 0}
.pay-box .admin-actions{justify-content:flex-start;margin-top:8px}
.pay-box a.btn{text-decoration:none}
.pay-note{margin:10px 0 0}
#loginHelp a{color:var(--orange-d);font-weight:700}

/* Редактор часов опенспейса */
.hours-edit{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;margin-top:10px}
.hours-edit label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase}
.hours-edit select{border:1.5px solid var(--line);border-radius:8px;padding:7px 8px;font:inherit;background:#fff;color:var(--ink)}

/* Редактор тарифов */
.price-edit{width:100%;border-collapse:collapse;font-size:14px;min-width:420px}
.price-edit th{text-align:left;font-size:12px;color:var(--muted);text-transform:uppercase;padding:6px}
.price-edit td{padding:4px 6px;border-top:1px solid var(--line)}
.price-edit input{width:100%;min-width:80px;border:1.5px solid var(--line);border-radius:8px;padding:7px 8px;font:inherit;font-variant-numeric:tabular-nums;background:#fff}
.price-edit input:focus{outline:none;border-color:var(--orange)}
.price-edit input.invalid{border-color:var(--busy)}

/* Drawer */
.drawer{position:fixed;inset:0;z-index:50}
.drawer-backdrop{position:absolute;inset:0;background:rgba(20,20,20,.45)}
.drawer-body{position:absolute;right:0;top:0;bottom:0;width:min(560px,100%);background:var(--bg);padding:28px;overflow:auto;animation:slidein .3s}
@keyframes slidein{from{transform:translateX(40px);opacity:0}}
.drawer-close{position:absolute;right:16px;top:12px;border:0;background:none;font-size:30px;line-height:1;color:var(--ink)}
.kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:14px 0}
.kpis div{background:#fff;border-radius:12px;padding:12px;box-shadow:var(--shadow)}
.kpis b{font-size:22px;display:block}
.kpis small{color:var(--muted)}

.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:120;background:var(--ink);color:#fff;border-radius:12px;padding:12px 18px;box-shadow:var(--shadow);animation:fadeup .3s;max-width:calc(100% - 32px)}

/* ---------- Вход, регистрация, профиль ---------- */
.form-sep{border:0;border-top:1px dashed var(--line);margin:6px 0 16px}
.form-card label small.muted{font-weight:400}
.auth-switch{margin:14px 0 0;text-align:center;color:var(--ink-2);font-size:14px}
.auth-switch .btn-link{color:var(--orange-d);font-weight:700;padding:0}
.note .btn-link{color:var(--orange-d);font-weight:700;padding:0}
.option.resident{width:100%;margin-bottom:14px;display:grid;grid-template-columns:36px 1fr;grid-template-rows:auto auto;column-gap:14px;row-gap:2px;align-items:center;border:1.5px dashed var(--ink);background:#faf8f5}
.option.resident .ico{font-size:26px;grid-row:1/3}
.profile-card{display:flex;align-items:center;gap:14px;margin:14px 0}
.info{margin:0 0 16px;display:grid;gap:8px}
.info div{background:#fff;border-radius:12px;padding:10px 14px;box-shadow:var(--shadow)}
.info dt{font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.info dd{margin:2px 0 0;font-weight:600;word-break:break-word}

/* ---------- Окно подтверждений ---------- */
.modal{position:fixed;inset:0;z-index:110;display:flex;align-items:center;justify-content:center;padding:16px}
.modal[hidden]{display:none}
.modal-backdrop{position:absolute;inset:0;background:rgba(20,20,20,.55)}
.modal-card{position:relative;background:#fff;border-radius:18px;padding:24px;width:min(460px,100%);max-height:calc(100vh - 32px);overflow:auto;box-shadow:0 20px 60px rgba(0,0,0,.35);animation:fadeup .25s}
.modal-card h3{font-size:20px;margin-bottom:8px}
.modal-text{margin:0 0 14px;color:var(--ink-2);font-size:15px}
.modal-card label{display:flex;flex-direction:column;gap:6px;font-weight:600;font-size:14px;margin-bottom:12px}
.modal-card label.check{flex-direction:row;align-items:flex-start;font-weight:500}
.modal-card input:not([type=checkbox]){border:1.5px solid var(--line);border-radius:10px;padding:11px 12px;background:#fff;color:var(--ink);font-size:16px;width:100%}
.modal-card input:focus{outline:none;border-color:var(--orange)}
.modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:6px;flex-wrap:wrap}
.btn-danger-solid{background:var(--busy);color:#fff}
.btn-danger-solid:hover{background:#b93636}
.btn:disabled{opacity:.6;cursor:not-allowed}
.secret-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:6px 0 12px}
.secret{font-family:ui-monospace,Consolas,monospace;font-size:20px;font-weight:700;background:var(--orange-l);border-radius:10px;padding:8px 14px;letter-spacing:.04em;user-select:all;word-break:break-all}
body.modal-open{overflow:hidden}

/* ---------- Панель администратора ---------- */
.drawer-body.wide{width:min(980px,100%)}
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0 4px;border-bottom:1px solid var(--line)}
.tab{border:0;background:none;padding:10px 14px;font-weight:700;color:var(--muted);border-bottom:3px solid transparent;margin-bottom:-1px}
.tab.on{color:var(--ink);border-bottom-color:var(--orange)}
.kpis-5{grid-template-columns:repeat(5,1fr)}
.kpis .debt b,.res-stats .debt dd{color:var(--busy)}
.res-toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:12px 0}
.res-toolbar input[type=search]{flex:1 1 240px;min-width:0;border:1.5px solid var(--line);border-radius:10px;padding:9px 12px;font-size:16px;background:#fff}
.res-toolbar input[type=search]:focus{outline:none;border-color:var(--orange)}
.res{background:#fff;border-radius:14px;box-shadow:var(--shadow);padding:16px;margin-bottom:12px}
.res.is-blocked{background:#faf3f3;box-shadow:inset 4px 0 var(--busy),var(--shadow)}
.res-who{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:17px}
.res-meta{font-size:13px;color:var(--muted);margin-top:2px;word-break:break-word}
.badge{font-size:12px;font-weight:700;border-radius:20px;padding:2px 9px}
.badge.ok{background:#e3f4ea;color:#1f7a4b}
.badge.bad{background:#f9e1e1;color:#a52f2f}
.badge.warn{background:#fbefdb;color:#9a6512}
.res-stats{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;margin:14px 0}
.res-stats div{background:#f7f5f1;border-radius:10px;padding:8px 10px;min-width:0}
.res-stats dt{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}
.res-stats dd{margin:2px 0 0;font-weight:800;font-size:16px;font-variant-numeric:tabular-nums}
.res-stats dd small{display:block;font-size:11px;font-weight:500;color:var(--muted)}
.res-actions{display:flex;gap:8px;flex-wrap:wrap}
details.res-details{margin-top:12px;font-size:14px}
details.res-details summary{cursor:pointer;font-weight:700;color:var(--ink-2)}

/* ---------- Адаптив ---------- */
@media (max-width:980px){
  .kpis-5{grid-template-columns:repeat(3,1fr)}
  .res-stats{grid-template-columns:repeat(3,1fr)}
  .map-layout{grid-template-columns:1fr}
  .panel{position:static}
  .legend{margin-left:0}
}
/* Элементы, которые есть только на телефоне */
.lbl-short,.map-hint,.sheet-bar{display:none}
.spot .hit{fill:transparent;stroke:none}
button,a,.spot,.chip,.option{touch-action:manipulation;-webkit-tap-highlight-color:transparent}

/* Кнопки мест в карточке кабинета */
.rel{margin-top:10px;display:flex;flex-direction:column;gap:6px;align-items:flex-start}
.rel .small{margin:0}
.seat-chips{display:flex;flex-wrap:wrap;gap:6px}
.seat-chip{border:0;border-radius:10px;padding:8px 12px;font-weight:700;font-size:14px;color:#fff;background:var(--free)}
.seat-chip.partial{background:var(--partial)}
.seat-chip.busy{background:var(--busy)}
.seat-chip.mine{background:var(--mine)}
.seat-chip.closed{background:#b9b6b1}
.rel .chip{padding:6px 12px;font-size:13px}

@media (max-width:720px){
  body{font-size:15px}
  h2{font-size:23px}

  /* Шапка в одну строку */
  .topbar{padding:8px 12px;padding-top:calc(8px + env(safe-area-inset-top));gap:8px}
  .brand b,.brand b::after,.brand span{display:none}
  .brand img{height:30px}
  .steps{margin:0 auto;gap:2px}
  .steps button{padding:5px}
  .steps button span{display:none}
  .steps button i{width:26px;height:26px}
  .top-actions{gap:8px}
  .top-actions .btn{padding:7px 10px;font-size:14px}
  .lbl{display:none}
  .lbl-short{display:inline}
  .account-btn{padding:3px;border-radius:50%}
  .account-btn .nm{display:none}

  main{padding:14px 12px 40px}
  .card{padding:18px;border-radius:14px}

  /* Опрос: компактные карточки ответов */
  .quiz-progress{margin-bottom:16px}
  .quiz-q{font-size:21px}
  .quiz-hint{margin-bottom:14px;font-size:14px}
  .options{grid-template-columns:1fr;gap:8px}
  .option{flex-direction:row;align-items:center;gap:12px;padding:12px 14px;display:grid;grid-template-columns:36px 1fr;grid-template-rows:auto auto}
  .option .ico{font-size:26px;grid-row:1/3}
  .option b{font-size:16px}
  .option small{font-size:13px}
  .option:hover{transform:none}
  .quiz-nav{margin-top:16px;flex-wrap:wrap;gap:8px}

  /* Рекомендация и тарифы карточками */
  .recommend{padding:16px 18px;gap:10px;margin-bottom:18px}
  .recommend .ico{font-size:30px}
  .recommend h3{font-size:18px}
  .recommend p{font-size:14px}
  .recommend .price-big{margin-left:0;text-align:left}
  .recommend .price-big b{font-size:24px}
  .table-scroll{overflow:visible}
  .price-table{min-width:0;background:none;box-shadow:none;border-radius:0}
  .price-table thead{display:none}
  .price-table,.price-table tbody{display:block}
  .price-table tr{display:grid;grid-template-columns:repeat(3,1fr);background:#fff;border-radius:14px;box-shadow:var(--shadow);margin-bottom:10px;overflow:hidden}
  .price-table td{border:0;padding:4px 14px 12px}
  .price-table td:first-child{grid-column:1/-1;padding:12px 14px 6px}
  .price-table td[data-label="Мест"]{display:none}
  .price-table td.num::before{content:attr(data-label);display:block;font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
  .price-table tr.hl td{background:var(--orange-l)}
  .actions .btn{width:100%;justify-content:center}

  /* Карта: панель инструментов компактно */
  .map-toolbar{display:grid;grid-template-columns:138px 104px;justify-content:start;gap:8px 10px;margin-bottom:8px;align-items:end}
  .map-toolbar label{font-size:11px;gap:3px;min-width:0}
  /* Одинаковый вид полей в Safari и Chrome: без родного оформления, одна высота, не шире своей ячейки */
  .map-toolbar input,.map-toolbar select,.fields input,.fields select{
    -webkit-appearance:none;appearance:none;display:block;box-sizing:border-box;width:100%;min-width:0;max-width:100%;
    height:42px;margin:0;padding:0 10px;font-size:16px;line-height:1.2;color:var(--ink);background-color:#fff;
    border:1.5px solid var(--line);border-radius:10px}
  .map-toolbar select,.fields select{padding-right:28px;background-repeat:no-repeat;background-position:right 10px center;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%237b7f88' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E")}
  .map-toolbar input[type=date]::-webkit-date-and-time-value,.fields input[type=date]::-webkit-date-and-time-value{text-align:left;min-height:1.2em}
  .map-toolbar input[type=date]::-webkit-calendar-picker-indicator,.fields input[type=date]::-webkit-calendar-picker-indicator{margin:0;padding:0}
  .chips,.legend{grid-column:1/-1;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0 -12px;padding:0 12px}
  .chips::-webkit-scrollbar,.legend::-webkit-scrollbar{display:none}
  .chip{white-space:nowrap;padding:6px 12px}
  .legend{gap:10px;font-size:12px}
  .legend span{white-space:nowrap}
  .lg{width:11px;height:11px}

  .map-box{margin:0 -12px;border-radius:0;box-shadow:none;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
  .map-scroll{height:auto;max-height:76vh;max-height:76svh;overscroll-behavior:contain;touch-action:pan-x pan-y}
  #officeMap{max-width:none}
  .map-stats{font-size:12px;padding:5px 9px;left:8px;top:8px}
  .map-stats b{font-size:15px}
  .zoom{right:8px;top:8px}
  .zoom button{width:40px;height:40px}
  .map-hint{display:block;font-size:13px;color:var(--muted);margin:8px 0 0}

  /* Карточка места — шторка снизу */
  .map-layout{display:block}
  .panel{position:fixed;left:0;right:0;bottom:0;top:auto;z-index:45;max-height:82vh;max-height:82svh;overflow-y:auto;overscroll-behavior:contain;
    border-radius:18px 18px 0 0;box-shadow:0 -10px 40px rgba(30,31,34,.22);padding:0 16px calc(18px + env(safe-area-inset-bottom));
    transform:translateY(105%);transition:transform .28s cubic-bezier(.2,.8,.2,1);visibility:hidden}
  .panel.open{transform:none;visibility:visible}
  .sheet-bar{display:flex;position:sticky;top:0;z-index:2;background:#fff;justify-content:center;align-items:center;height:30px;margin:0 -16px 6px}
  .sheet-bar i{width:40px;height:4px;border-radius:2px;background:#d8d5cf}
  .sheet-close{position:absolute;right:8px;top:2px;border:0;background:#f1efeb;width:32px;height:32px;border-radius:50%;font-size:22px;line-height:1;color:var(--ink)}
  body.sheet-open .map-hint{visibility:hidden}
  .panel h3{font-size:20px}
  .tariff{padding:8px 4px}
  .tariff b{font-size:16px}
  .fields input,.fields select{font-size:16px}
  .bookings-box .blist{max-height:none}

  /* Всплывающие сообщения — сверху, чтобы не перекрывать шторку */
  .toast{bottom:auto;top:calc(10px + env(safe-area-inset-top));font-size:14px;padding:10px 14px;animation:none}

  /* Список броней и админка */
  .drawer-body{padding:20px 14px calc(20px + env(safe-area-inset-bottom))}
  .drawer-body h2{padding-right:36px}
  .kpis{grid-template-columns:repeat(3,1fr);gap:6px}
  .kpis div{padding:10px}
  .kpis b{font-size:17px}
  .kpis small{font-size:11px;line-height:1.25;display:block}
  .blist li{flex-wrap:wrap}
  .blist li > div{flex:1 1 60%;min-width:0}
  .price-edit{min-width:0}
  .price-edit thead{display:none}
  .price-edit,.price-edit tbody{display:block}
  .price-edit tr{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;background:#fff;border-radius:12px;padding:10px;margin-bottom:8px}
  .price-edit td{border:0;padding:0}
  .price-edit td:first-child{grid-column:1/-1;font-weight:700}
  .price-edit td[data-label]::before{content:attr(data-label);display:block;font-size:11px;color:var(--muted);font-weight:700;text-transform:uppercase;margin-bottom:2px}
  .price-edit input{font-size:16px;min-width:0}
  .hours-edit select{font-size:16px}
  .admin-actions .btn{flex:1 1 auto;justify-content:center}

  /* Форма регистрации: без автозума в iOS */
  form input:not([type=checkbox]){font-size:16px}
}

/* Узкие телефоны: шаги плотнее */
@media (max-width:400px){
  .topbar{gap:4px;padding-left:8px;padding-right:8px}
  .brand img{height:26px}
  .steps button{padding:3px}
  .steps button i{width:24px;height:24px;font-size:12px}
  .top-actions{gap:4px}
  .top-actions .btn{padding:6px 8px}
}

/* Телефон: админ-панель, резиденты, окна */
@media (max-width:720px){
  .drawer-body.wide{width:100%}
  .tabs{gap:0;overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none}
  .tabs::-webkit-scrollbar{display:none}
  .tab{white-space:nowrap;padding:10px 12px}
  .kpis-5{grid-template-columns:1fr 1fr}
  .kpis-5 div:first-child{grid-column:1/-1}
  .res{padding:14px}
  .res-stats{grid-template-columns:1fr 1fr}
  .res-actions .btn{flex:1 1 calc(50% - 8px);justify-content:center}
  .res-toolbar input[type=search]{flex-basis:100%}
  .option.resident{padding:12px 14px}
  .modal{align-items:flex-end;padding:0}
  .modal-card{border-radius:18px 18px 0 0;width:100%;padding:20px 18px calc(20px + env(safe-area-inset-bottom))}
  .modal-actions .btn{flex:1;justify-content:center}
}

/* ---------- Поле даты: подпись дд.мм.гггг, настоящее поле прозрачно поверх неё ---------- */
.datebox{position:relative;display:flex;align-items:center;box-sizing:border-box;width:100%;min-width:132px;height:42px;padding:0 10px;
  background:#fff;border:1.5px solid var(--line);border-radius:10px;cursor:pointer}
.datebox:focus-within{border-color:var(--orange)}
.datebox-text{font-size:16px;line-height:1;white-space:nowrap;color:var(--ink);font-variant-numeric:tabular-nums}
.datebox.empty .datebox-text{color:var(--muted)}
body .datebox>input[type=date]{position:absolute;inset:0;display:block;width:100%;height:100%;min-width:0;max-width:none;margin:0;padding:0;border:0;
  opacity:0;cursor:pointer;background:transparent;-webkit-appearance:none;appearance:none;font-size:16px}
body .datebox>input[type=date]::-webkit-calendar-picker-indicator{position:absolute;inset:0;width:100%;height:100%;margin:0;padding:0;opacity:0;cursor:pointer}
