/* Partner portal – page-specific styles (complements /assets/mockup.css) */
main{min-height:60vh}
fieldset{min-inline-size:0;min-width:0}   /* default min-content width pushed the quiet-hours panel off a 390 px screen */
.two>*{min-width:0}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-l);padding:22px}
.btn.busy{opacity:.6;pointer-events:none}
.dhead h3 .sub{font-weight:400}
a.pill{text-decoration:none;color:inherit;display:inline-flex;align-items:center}
.pill.portal{color:var(--bg)}
footer .flinks{display:flex;gap:14px;flex-wrap:wrap;margin-top:6px}
footer .flinks .link{text-decoration:none}
.kv{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;margin:0;font-size:14.5px}
.kv dt{color:var(--muted)}.kv dd{margin:0}
.dash-ctl .seg button{padding:6px 12px}
.rolebar{background:var(--surface2);border-radius:999px;padding:6px 12px}
.rolebar svg{width:16px;height:16px}
.pendnote{display:flex;gap:10px;align-items:flex-start;color:#8F4214;background:color-mix(in srgb,#E08A2B 14%,var(--surface))}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .pendnote{color:var(--warn)}}
:root[data-theme="dark"] .pendnote{color:var(--warn)}
.pendnote svg{width:20px;height:20px;flex:none;margin-top:2px}
.stat.over{background:color-mix(in srgb,var(--bad) 18%,transparent);color:var(--bad)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .stat.live{color:#5FD69A}}
:root[data-theme="dark"] .stat.live{color:#5FD69A}
/* reserved content: 4 advantages (mock-up grid was sized for 6) */
.gains{grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}
/* access bar */
.access-bar .btn{margin-inline-start:auto}
/* grid editor */
.gr.off input[type=number]{opacity:.45}
.gr .pend .link{font-size:12.5px}
@media (max-width:760px){.gr .comc::before{content:attr(data-l) " ";color:var(--muted);font-size:12px;font-weight:400}}
#gridRoot details.gfam summary .ic{width:34px;height:34px;border-radius:10px;background:var(--surface2);display:grid;place-items:center;flex:none}
#gridRoot details.gfam summary .ic svg{width:18px;height:18px;color:var(--teal-strong)}
.famchk .ic,.gain .ic,.gpt .ic,.panel .ic{width:44px;height:44px;border-radius:12px;background:var(--surface2);display:grid;place-items:center;flex:none}
.famchk .ic svg,.gain .ic svg,.gpt .ic svg,.panel .ic svg{width:22px;height:22px;color:var(--teal-strong)}
.aires label input{margin-top:3px}
/* visit */
.idphoto.big{width:180px}
.idphoto.big img,.idphoto.big .nophoto{width:180px;height:240px;border-radius:16px}
@media (max-width:520px){.idcheck{flex-direction:column;align-items:center;text-align:center}.idok{justify-content:center}}
.vline{grid-template-columns:1fr auto 36px}
.vline .lprice{font-size:13.5px;color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}
.vline .x{border:1px solid var(--line);background:var(--surface);border-radius:9px;width:36px;height:36px;cursor:pointer}
.breakdown .tot{font-size:22px}
.breakdown.stale,.lcalc.stale{opacity:.35;transition:opacity .15s}
.aires label.nomatch{opacity:.75}
.aires label .aiv{white-space:nowrap}
/* bookings */
.bkph{width:44px;height:58px;object-fit:cover;border-radius:8px;flex:none;background:var(--surface2)}
.bkph.nophoto{display:grid;place-items:center;color:var(--muted)}
.bkph.nophoto svg{width:20px;height:20px}
.listbox .it small.qmini{display:inline-block;vertical-align:middle;margin-inline-start:4px}
/* kit */
.kitprev img{width:min(280px,100%);height:auto;display:block}
.kitprev.poster img{width:min(300px,100%)}
.kitbox .kitact{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.kitbox .kitact .btn{margin-top:0}
/* payment */
.paysum{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;font-size:15px}
.paysum b{font-size:22px}
.paymeth label svg{width:20px;height:20px;color:var(--muted)}
/* team */
.listbox .it .roleSel{width:auto;padding:7px 10px;font-size:13.5px}
/* login */
.alog .sub{text-align:center;margin:6px auto 22px}
.pw .link{font-size:13px}
/* dash */
.kpi b{font-size:24px}
@media (max-width:420px){.kpi b{font-size:20px}}
.chartw .chart .cl{font-size:12px}
:root[data-theme="dark"] .legend i.bs{background:#41608F}   /* mockup.css only has the prefers-color-scheme variant */
/* tables scroll on phones */
.tblw{max-width:100%}
.tbl{min-width:640px;width:100%;border-collapse:collapse}
.tbl tfoot td{background:var(--surface2)}
/* signup */
.wsteps span{white-space:nowrap}
.sigbox canvas{background:var(--surface)}
.contract-card .btn{margin-top:6px}
/* space tabs: wrap on wide screens (13 tabs for a director; the scrollbar is hidden, so they were unreachable with a mouse) */
@media (min-width:861px){.ptabs{flex-wrap:wrap;overflow:visible;row-gap:0}}
/* mobile bottom tabs: 3 entries */
@media (max-width:860px){nav.tabs{grid-template-columns:repeat(3,1fr)}body{padding-bottom:70px}.savebar{bottom:calc(env(safe-area-inset-bottom,0px) + 76px)}}
@media (max-width:420px){.space-head h2{font-size:20px}.ptabs button{padding:10px 9px;font-size:14px}}
@media print{header.top,footer,nav.tabs,.ptabs,.space-head .btn,.savebar{display:none!important}}
/* camera scanner (visit) */
.scanbox .scanctl{position:absolute;inset-inline:10px;bottom:10px;display:flex;gap:8px;justify-content:flex-end;z-index:1}
.scanbox .scanctl .pill{background:rgba(13,26,53,.78);color:#fff;border:1px solid rgba(255,255,255,.4)}
.scanbox .scanctl .pill[aria-pressed="true"]{background:#5FD6CC;color:#0D1A35}
#scanMsg{margin:10px 0 12px;min-height:1.4em}
#scanMsg.warn{color:var(--warn);font-weight:600}
#scanMsg.err{font-weight:600}
#scanMsg.notice{margin:0 0 4px}
.scanhint{font-size:13px;margin:-4px 0 10px}
/* "Notifications on this device" (views/push.js) */
.pushdev .pushrow{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin-top:10px}
.pushdev .pushhelp{font-size:13.5px;margin:8px 0 10px}
.pushdev .toggle input{width:18px;height:18px}
.stat.off{background:var(--surface2);color:var(--muted)}
