.current-role { margin-top:auto; display:flex; flex-direction:column; gap:2px; padding:14px; border-top:1px solid #ffffff24; color:#e7f0e9; }
.current-role small { color:#c9ded2; }.current-role strong { color:#fff; }
.role-read_only form[method="post"]:not(.session-action):not(.tenant-switcher),.role-operations form[method="post"]:not(.session-action):not(.tenant-switcher),.role-accounting form[method="post"]:not(.session-action):not(.tenant-switcher){display:none!important}
.role-accounting form[action="/admin/reservation/payment"],.role-accounting form[action="/admin/reservation/receipt"]{display:block!important}
.staff-list { display:grid; gap:14px; margin-top:18px; }.staff-list article { padding:16px; border:1px solid #d8e2dd; border-radius:12px; }.staff-list article form { margin-top:14px; }
.invitation-issued input { width:100%; font-family:monospace; }.invitation-list { display:grid; gap:10px; }.invitation-list article { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:10px; padding:12px 0; border-bottom:1px solid #d8e2dd; }.invitation-list article>div:first-child { display:flex; flex-direction:column; }.invitation-list .actions { grid-column:1/-1; display:flex; gap:8px; flex-wrap:wrap; }.invitation-list form { margin:0; }
.date-error { grid-column:1/-1; margin:0; padding:8px 10px; border-radius:8px; background:#fff0ef; color:#842b25; font-weight:700; }
.payment-confirmation dl { display:grid; grid-template-columns:minmax(150px,.65fr) 1fr; gap:9px 16px; margin:22px 0; }
.payment-confirmation dt { color:var(--muted); }.payment-confirmation dd { margin:0; }
.inline-progress { display:inline-grid; place-items:center; width:38px; height:38px; margin-bottom:8px; }
.inline-progress span { width:28px; height:28px; border:3px solid #c8d8d0; border-top-color:var(--pine); border-radius:50%; animation:payment-spin .8s linear infinite; }
@keyframes payment-spin { to { transform:rotate(360deg); } }
@media(prefers-reduced-motion:reduce){.inline-progress span{animation:none;border-top-color:#c8d8d0;background:var(--pine)}}
@media(max-width:520px){.payment-confirmation dl{grid-template-columns:1fr;gap:3px}.payment-confirmation dd{margin-bottom:8px}}

.app-shell aside.form-help {
  background: var(--forest);
  color: #f3fbf7;
  min-width: 0;
  padding: 28px;
}
.app-shell aside.form-help .eyebrow,
.app-shell aside.form-help p,
.app-shell aside.form-help small { color: #d6ebe2; }
.app-shell aside.form-help h3,
.app-shell aside.form-help strong { color: #fff; }
.reservation-layout,
.reservation-form,
.reservation-form > section,
.reservation-form > section > div,
.party-grid,
.party-grid label { min-width: 0; }
.party-grid { align-items: start; }
.party-grid input { width: 100%; max-width: 100%; }
.submit-overlay {
  position: fixed; inset: 0; z-index: 9999;
  display: grid; place-items: center; padding: 24px;
  background: rgba(12,31,24,.72); backdrop-filter: blur(3px);
}
.submit-overlay[hidden] { display: none; }
.submit-card {
  width: min(360px,100%); display: grid; justify-items: center; gap: 8px;
  text-align: center; background: #fff; color: var(--ink); border-radius: 18px;
  padding: 28px; box-shadow: 0 24px 80px #0005;
}
.submit-card strong { font-size: 1.05rem; }
.submit-card > span { color: var(--muted); }
.camper-loader { position: relative; width: 100px; height: 62px; margin-bottom: 8px; }
.camper-body { position: absolute; left: 13px; top: 16px; width: 63px; height: 32px; border: 4px solid var(--pine); border-radius: 12px 15px 7px 7px; background: var(--mint); }
.camper-body::after { content: ""; position: absolute; right: -15px; bottom: 2px; width: 14px; border-top: 4px solid var(--pine); }
.camper-window { position: absolute; left: 26px; top: 25px; width: 19px; height: 12px; border-radius: 3px; background: var(--pine); }
.camper-wheel { position: absolute; top: 44px; width: 14px; height: 14px; border: 4px solid var(--forest); border-radius: 50%; background: #fff; }
.camper-wheel.one { left: 23px; }
.camper-wheel.two { left: 61px; }
.camp-tree { position: absolute; right: 4px; top: 4px; width: 0; height: 0; border-left: 12px solid transparent; border-right: 12px solid transparent; border-bottom: 25px solid var(--pine); animation: camp-breathe 1.2s ease-in-out infinite alternate; }
.camp-tree::after { content: ""; position: absolute; top: 23px; left: -2px; width: 4px; height: 15px; background: var(--forest); }
@keyframes camp-breathe { to { transform: translateY(-4px); } }
@media (prefers-reduced-motion: reduce) { .camp-tree { animation: none; } .submit-overlay { backdrop-filter: none; } }
@media (max-width: 760px) { .app-shell aside.form-help { padding: 22px; } .party-grid { gap: 6px 12px; } }

/* Operational calendar and dashboard */
.calendar-toolbar { display:grid; grid-template-columns:auto auto 1fr; gap:16px; align-items:end; margin-bottom:14px; }
.period-nav,.view-switch { display:flex; gap:6px; }
.calendar-filters { display:grid; grid-template-columns:140px 150px 150px minmax(180px,1fr) auto; gap:10px; align-items:end; }
.calendar-filters label { margin:0; min-width:0; }
.calendar-filters input,.calendar-filters select { width:100%; }
.calendar-range { display:flex; justify-content:space-between; gap:16px; align-items:center; margin:10px 0; color:var(--muted); }
.calendar-legend { display:flex; flex-wrap:wrap; align-items:center; gap:6px 12px; font-size:.82rem; }
.calendar-legend span { display:inline-flex; align-items:center; gap:5px; }
.calendar-legend-below { margin:-12px 2px 20px; }
.dot { width:10px; height:10px; border-radius:3px; display:inline-block; }
.dot.pending,.reservation-block.pending { background:#8a5a12; color:#fff; }
.dot.confirmed,.reservation-block.confirmed { background:#2563a6; color:#fff; }
.dot.checked_in,.reservation-block.checked_in { background:#166534; color:#fff; }
.dot.checked_out,.reservation-block.checked_out { background:#52606d; color:#fff; }
.reservation-block.cancelled { background:#7f1d1d; color:#fff; }
.reservation-block.unknown { background:#39434c; color:#fff; }
.occupancy-scroller { overflow:auto; max-height:68vh; border:1px solid #cbd8d2; border-radius:14px; background:#fff; box-shadow:0 8px 24px #17372a12; }
.occupancy-scroller:focus-visible { outline:3px solid #74a98f; outline-offset:2px; }
.occupancy-grid { min-width:calc(220px + var(--calendar-days) * 54px); }
.calendar-row { position:relative; display:grid; grid-template-columns:220px repeat(var(--calendar-days),54px); min-height:58px; }
.calendar-row > * { grid-row:1; }
.calendar-header { position:sticky; top:0; z-index:20; min-height:66px; background:#f5f8f6; border-bottom:2px solid #b8c9c1; }
.site-label { grid-column:1; position:sticky; left:0; z-index:12; display:flex; flex-direction:column; justify-content:center; min-width:0; padding:8px 12px; background:#fff; border-right:2px solid #b8c9c1; border-bottom:1px solid #dce5e1; }
.site-label strong,.site-label small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.site-label small { color:var(--muted); margin-top:2px; }
.calendar-header .site-label { z-index:25; background:#f5f8f6; }
.date-heading { display:flex; flex-direction:column; align-items:center; justify-content:center; border-right:1px solid #dce5e1; font-size:.75rem; color:#52645b; }
.date-heading strong { color:var(--ink); font-size:1.05rem; line-height:1.1; }
.night-cell { border-right:1px solid #e2e9e6; border-bottom:1px solid #dce5e1; background:#fbfdfc; }
.night-cell:nth-of-type(even) { background:#f7faf8; }
.date-heading.today,.night-cell.today { background:#fff3c7; box-shadow:inset 2px 0 #c98708,inset -2px 0 #c98708; }
.site-row.inactive .site-label { background:#eef1ef; color:#66736d; }
.site-row.inactive .night-cell { background:repeating-linear-gradient(135deg,#eef1ef,#eef1ef 6px,#e3e8e5 6px,#e3e8e5 12px); }
.reservation-block { align-self:center; z-index:8; min-width:0; height:42px; margin:0 3px; padding:5px 9px; border-radius:7px; display:flex; flex-direction:column; justify-content:center; overflow:hidden; text-decoration:none; box-shadow:0 2px 6px #0003; border:1px solid #fff8; }
.reservation-block:hover,.reservation-block:focus-visible { filter:brightness(1.08); transform:translateY(-1px); z-index:10; }
.reservation-block strong,.reservation-block small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:inherit; }
.reservation-block small { opacity:.88; font-size:.67rem; }
.calendar-empty { padding:32px; color:var(--muted); }
.calendar-hint { margin:9px 2px 20px; }
.calendar-actions { margin-top:18px; }
.quick-list { display:grid; gap:0; }
.quick-list article { display:grid; grid-template-columns:minmax(180px,1fr) auto auto; gap:12px; align-items:center; padding:11px 0; border-bottom:1px solid #e1e8e4; }
.quick-list article:last-child { border:0; }
.quick-list article > div:first-child { display:flex; flex-direction:column; min-width:0; }
.quick-list small { color:var(--muted); }
.quick-list .actions { display:flex; gap:6px; flex-wrap:wrap; justify-content:flex-end; }
.ops-stats { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; margin:18px 0; }
.ops-stats a,.ops-stats article { display:flex; flex-direction:column; gap:4px; padding:18px; border:1px solid #d8e2dd; border-radius:14px; background:#fff; color:var(--ink); text-decoration:none; box-shadow:0 6px 20px #17372a0d; }
.ops-stats a:hover { border-color:#6c9b83; }
.ops-stats span,.ops-stats small { color:var(--muted); }
.ops-stats strong { font-size:1.7rem; color:var(--forest); }
.financial-summary .balance-needed{background:#fff4cf;border-color:#d59a22}.financial-summary .balance-needed strong{color:#7a4b00}.financial-summary .credit-value{background:#e5f6ef;border-color:#5b9c83}.financial-summary .credit-value strong{color:#155f4b}.compact-credit{padding:14px 16px;background:#eaf7f2;border:1px solid #82b9a5;border-radius:12px}.overpayment-warning{margin:12px 0;background:#fff4cf;color:#5c3b00}.variance-short{color:#8a2f25;background:#fff0ed}.variance-over{color:#705000;background:#fff5d7}.variance-balanced{color:#155f4b;background:#e8f6ef}.variance-label{display:inline-block;padding:4px 8px;border-radius:8px;font-weight:800}.report-financial-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.report-financial-grid .panel{margin:0}.refund-panel[hidden],.payment-panel[hidden],.credit-panel[hidden]{display:none}
@media print{.receipt-title button,[data-print],.app-shell aside,.workspace>header,.context-banner,.tenant-switcher{display:none!important}.receipt-page{box-shadow:none!important;margin:0!important;max-width:none!important}}
@media(max-width:760px){.report-financial-grid{grid-template-columns:1fr}}
.dashboard-grid { display:grid; grid-template-columns:minmax(0,2fr) minmax(240px,1fr); gap:18px; align-items:start; }
.section-head { display:flex; justify-content:space-between; align-items:center; gap:12px; }
.dashboard-shortcuts { display:grid; gap:10px; }
.dashboard-shortcuts h2 { margin-bottom:8px; }
@media (max-width:1100px) { .calendar-toolbar { grid-template-columns:1fr 1fr; } .calendar-filters { grid-column:1/-1; } }
@media (max-width:800px) { .calendar-filters { grid-template-columns:1fr 1fr; } .calendar-filters button { align-self:end; } .ops-stats { grid-template-columns:repeat(2,minmax(0,1fr)); } .dashboard-grid { grid-template-columns:1fr; } .calendar-range { align-items:flex-start; flex-direction:column; } }
@media (max-width:560px) { .calendar-toolbar { grid-template-columns:1fr; } .calendar-filters { grid-column:auto; grid-template-columns:1fr; } .period-nav,.view-switch { flex-wrap:wrap; } .ops-stats { grid-template-columns:1fr; } .quick-list article { grid-template-columns:1fr; } .quick-list .actions { justify-content:flex-start; } .calendar-row { grid-template-columns:170px repeat(var(--calendar-days),48px); } .occupancy-grid { min-width:calc(170px + var(--calendar-days) * 48px); } }
.health-overall { display:flex; justify-content:space-between; align-items:center; gap:20px; padding:20px; border-radius:14px; margin-bottom:16px; border:2px solid; }
.health-overall.pass { background:#eaf7ef; border-color:#4b8d67; }.health-overall.warn { background:#fff7dd; border-color:#b37b12; }.health-overall.fail { background:#fff0ef; border-color:#a83d36; }
.health-overall h2,.health-overall p { margin:0; }.health-metrics { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; margin-bottom:18px; }.health-metrics article { display:flex; flex-direction:column; gap:4px; background:#fff; border:1px solid #d8e2dd; border-radius:12px; padding:16px; }.health-metrics span,.health-metrics small { color:var(--muted); }.health-metrics strong { color:var(--forest); font-size:1.25rem; }
.health-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; margin-bottom:18px; align-items:start; }.health-checks article { display:grid; grid-template-columns:78px 1fr; gap:10px; padding:10px 0; border-bottom:1px solid #e1e8e4; }.health-checks article>div { display:flex; flex-direction:column; }.health-checks small { color:var(--muted); }.health-badge { align-self:start; padding:3px 7px; border-radius:999px; text-align:center; font-size:.74rem; font-weight:700; }.health-badge.pass { background:#d9f0e1;color:#155b31 }.health-badge.warn { background:#fff0bd;color:#744b00 }.health-badge.fail { background:#f8d8d5;color:#842b25 }
@media(max-width:900px){.health-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.health-grid{grid-template-columns:1fr}}@media(max-width:520px){.health-metrics{grid-template-columns:1fr}.health-overall{align-items:flex-start;flex-direction:column}}
.tenant-switcher { display:flex; gap:8px; align-items:end; justify-content:flex-end; margin:-4px 0 16px; }.tenant-switcher label { margin:0; min-width:260px; }.tenant-switcher select { width:100%; }.settings-form .wide { grid-column:1/-1; }.logo-placeholder { display:flex; flex-direction:column; padding:18px; margin:16px 0; border:2px dashed #b8c9c1; border-radius:12px; color:var(--muted); }.logo-placeholder strong { color:var(--ink); }.reservation-history { margin-top:20px; }.history-timeline { list-style:none; margin:18px 0 0; padding:0; }.history-timeline li { position:relative; padding:0 0 18px 28px; border-left:2px solid #c5d5cd; margin-left:8px; }.history-marker { position:absolute; left:-7px; top:4px; width:12px; height:12px; border-radius:50%; background:var(--pine); border:3px solid #fff; box-shadow:0 0 0 1px var(--pine); }.history-card>div { display:flex; justify-content:space-between; gap:14px; }.history-card time,.history-card p { color:var(--muted); font-size:.82rem; }.history-card p { margin:3px 0 8px; }.history-card dl { grid-template-columns:80px 1fr; margin:0; padding:8px 10px; background:#f5f8f6; border-radius:8px; }.update-ready { display:flex; justify-content:space-between; align-items:center; gap:20px; }
@media(max-width:650px){.tenant-switcher{align-items:stretch;flex-direction:column}.tenant-switcher label{min-width:0}.history-card>div,.update-ready{align-items:flex-start;flex-direction:column}}
.financial-summary { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; margin:16px 0; }.financial-summary>div { display:flex; flex-direction:column; padding:12px; background:#f5f8f6; border-radius:10px; }.financial-summary span { color:var(--muted); font-size:.78rem; }.action-details { margin:12px 0; padding:12px; border:1px solid #d8e2dd; border-radius:10px; }.action-details summary { cursor:pointer; font-weight:700; }.action-details form { margin-top:14px; }.payment-list article { display:flex; justify-content:space-between; gap:14px; align-items:center; padding:12px 0; border-bottom:1px solid #e1e8e4; }.payment-list article>div:first-child { display:flex; flex-direction:column; }.payment-list small { color:var(--muted); }.report-toolbar { display:flex; justify-content:space-between; gap:15px; align-items:end; }.report-toolbar form,.report-toolbar .actions { display:flex; gap:10px; align-items:end; }.report-grid { display:grid; grid-template-columns:minmax(0,3fr) minmax(220px,1fr); gap:18px; }.receipt-page { max-width:850px; margin:30px auto; padding:40px; background:#fff; color:#17251e; }.receipt-page header,.receipt-title,.receipt-total { display:flex; justify-content:space-between; gap:20px; }.receipt-page header span { display:block; }.receipt-logo { font-size:1.25rem;font-weight:800;color:var(--forest)}.receipt-logo span{display:inline;color:var(--pine)}.receipt-title { align-items:end; margin:35px 0; border-bottom:2px solid var(--forest); padding-bottom:15px; }.receipt-title p { margin:0;color:var(--muted) }.receipt-grid { display:grid;grid-template-columns:1fr 1fr;gap:30px}.receipt-total { padding:16px 0;border-top:1px solid #ccd8d2;font-size:1.2rem}.receipt-total:not(.secondary) strong{font-size:1.7rem}.receipt-note{margin-top:30px;color:var(--muted)}
@media(max-width:800px){.financial-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.report-grid{grid-template-columns:1fr}.report-toolbar{align-items:stretch;flex-direction:column}.report-toolbar form{flex-wrap:wrap}}@media(max-width:520px){.financial-summary,.receipt-grid{grid-template-columns:1fr}.payment-list article{align-items:flex-start;flex-direction:column}.receipt-page{padding:20px}}
@media print{.app-shell>aside,.workspace>header,.tenant-switcher,.report-toolbar button,.report-toolbar a,.receipt-title button,.submit-overlay{display:none!important}.app-shell,.workspace{display:block!important}.workspace{padding:0!important}.panel,.ops-stats article{box-shadow:none!important;break-inside:avoid}.receipt-page{max-width:none;margin:0;padding:0}}
.customer-portal { min-height:100vh; background:#f5f0e5; color:#173126; }.customer-portal>header { padding:20px max(24px,calc((100vw - 1000px)/2)); background:#173d2d; color:#fff; }.customer-brand { display:flex; gap:12px; align-items:center; }.customer-brand p,.customer-brand h1 { margin:0;color:#fff }.customer-logo { display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:#e9c86b;color:#173d2d;font-size:1.5rem}.customer-portal main { max-width:1000px;margin:auto;padding:35px 24px }.customer-welcome { margin-bottom:20px }.customer-grid { display:grid;grid-template-columns:1fr 1fr;gap:18px}.customer-error{max-width:580px;margin:60px auto}.customer-portal .panel{background:#fff}.customer-portal .check{margin:12px 0}@media(max-width:700px){.customer-grid{grid-template-columns:1fr}}
.customer-portal>header{display:flex;justify-content:space-between;align-items:center;gap:16px}.customer-signout{background:transparent;border:1px solid #dce8df;color:#fff}.customer-nav{display:flex;gap:8px;overflow:auto;margin:0 0 18px;position:sticky;top:0;z-index:3;background:#f5f0e5;padding:8px 0}.customer-nav a{white-space:nowrap;padding:10px 14px;border-radius:999px;background:#fff;color:#173d2d;text-decoration:none;font-weight:700}.customer-notice{padding:14px 16px;background:#dcebdc;border-left:4px solid #2b6a45;margin-bottom:18px}.customer-balance{background:#173d2d!important;color:#fff!important}.customer-balance .eyebrow,.customer-balance .muted{color:#e7f0e9}.balance-number{display:block;font-size:clamp(2rem,8vw,3.5rem);margin:.2em 0}.customer-activity{list-style:none;padding:0;margin:0}.customer-activity li{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:14px;padding:14px 0;border-bottom:1px solid #d9dfda}.customer-activity li div span{display:block;color:#5c6c63;font-size:.9rem}.arrival-info{padding:14px 0;border-bottom:1px solid #d9dfda}.arrival-info p{margin:.35rem 0 0}.policy-review{max-height:220px;overflow:auto;padding:16px;background:#f3f5f1;border:1px solid #cbd5cc;border-radius:8px;margin:14px 0}.customer-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.customer-form-grid .wide{grid-column:1/-1}.customer-contact{padding:20px 4px 40px}.customer-link-result{padding:16px;background:#eef6ef;border:1px solid #bad1bf;margin-bottom:16px}.secret-display{font-size:1.3rem;letter-spacing:.12em}.break-word{overflow-wrap:anywhere}.recovery-codes{columns:2}.customer-portal .panel{scroll-margin-top:75px}@media(max-width:700px){.customer-portal main{padding:20px 14px}.customer-portal>header{padding:14px}.customer-form-grid{grid-template-columns:1fr}.customer-form-grid .wide{grid-column:auto}.customer-activity li{grid-template-columns:1fr auto}.customer-activity li a{grid-column:1/-1;min-height:44px;display:flex;align-items:center}.customer-portal button,.customer-portal .button{min-height:48px}.recovery-codes{columns:1}}
.owner-membership,.privileged-action{border-left:4px solid #876b2c;padding-left:1rem}.owner-membership p{margin:.45rem 0}.privileged-action{max-width:760px}.privileged-action dl{display:grid;grid-template-columns:minmax(8rem,auto) 1fr;gap:.45rem 1rem}.privileged-action dt{font-weight:700}.privileged-action dd{margin:0}
.mfa-identity{display:grid;gap:.2rem;padding:14px;margin:12px 0;background:#f3f7f4;border-left:4px solid var(--pine)}.mfa-identity span,.mfa-identity small{color:var(--muted)}.lock-warning{position:sticky;top:8px;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;background:#fff4cf;border:1px solid #d4aa37;border-radius:10px}.lock-warning[hidden]{display:none}.lock-warning form{margin:0}.support-mode{border-left:4px solid #876b2c}.locked-workstation .auth-panel form+form{margin-top:12px}
