/* Apex visual system and responsive app shell; structural rules are in base.css. */
:root { --ink:#25312f; --navy:#203b35; --blue:#2e695b; --orange:#bd764c; --orange-dark:#995832; --paper:#fffdf9; --page:#f5f3ed; --line:#e6e2d9; --muted:#66736c; --ok:#287354; --bad:#ae4740; --shadow:0 12px 38px rgba(25,50,40,.055); --pine:#245946; --gold:#b58359; --gold-dark:#935b36; }
body { background:var(--page); color:var(--ink); font-family:system-ui,-apple-system,"Segoe UI",sans-serif; }
.nav-shell { background:rgba(255,253,249,.97); border-bottom:1px solid var(--line); backdrop-filter:blur(16px); }
.nav { max-width:1160px; min-height:78px; }
.wordmark { color:var(--navy); letter-spacing:.16em; }
.wordmark .mark { background:var(--pine); border-radius:50%; }
.wordmark small { color:var(--orange); }
.wrap { max-width:1160px; margin:38px auto; }
.card { border-color:var(--line); border-radius:20px; box-shadow:var(--shadow); }
h1,h2,h3 { color:var(--navy); }
h1 { font-weight:720; letter-spacing:-.045em; }
.eyebrow { color:var(--orange-dark); letter-spacing:.19em; }
.hero { min-height:360px; border-radius:24px; background:linear-gradient(95deg,rgba(14,36,32,.96),rgba(14,36,32,.72) 52%,rgba(14,36,32,.15)),url('/assets/apex-neon-hero-v1.png') center/cover; display:flex; flex-direction:column; align-items:flex-start; justify-content:center; }
.hero .eyebrow { color:#f0bd93; }
.hero .badge { background:rgba(255,255,255,.18); color:white; border:1px solid rgba(255,255,255,.24); }
.section-title { margin:38px 0 18px; }
.section-title h2 { font-size:1.65rem; margin:0; }
.mode-note { display:inline-flex; align-items:center; border:1px solid #dce8dd; color:#32634b; background:#eef5ed; padding:9px 15px; border-radius:100px; font-size:13px; font-weight:650; }
.access-grid { margin-bottom:18px; }
.door-card { display:flex; flex-direction:column; min-height:215px; }
.door-card:before { background:var(--orange); }
.door-card .eyebrow { font-size:10px; margin:0 0 8px; }
.door-card h2 { margin-bottom:4px; }
.door-card form { margin-top:auto; padding-top:18px; }
.door-card button { width:100%; justify-content:space-between; }
.feature-card { padding:30px; }
.feature-card .muted { max-width:62ch; }
button,.button { background:var(--pine); color:#fff; border-radius:10px; box-shadow:none; font-weight:700; font-family:inherit; }
button:hover,.button:hover { background:#173f32; }
button.secondary,.button.secondary { background:#e9efe9; color:var(--pine); }
button.secondary:hover,.button.secondary:hover { background:#d9e7db; }
button.danger { background:var(--bad); color:#fff; }
input:focus,select:focus,button:focus-visible,a:focus-visible { outline:3px solid #b7d8c4; outline-offset:2px; }
.badge { color:var(--pine); background:#e8f0e8; }
.management-heading { background:#e8efe7; padding:36px; }
.table-scroll { overflow-x:auto; }
table { min-width:690px; }
th { color:var(--pine); font-size:12px; text-transform:uppercase; letter-spacing:.07em; }
td { word-break:normal; }
.login-intro { background:linear-gradient(150deg,#123b30,#315e4d); }
.login-card { background:var(--paper); }
@media(max-width:680px) {
  .nav { flex-wrap:wrap; gap:12px; }
  .nav-links { display:flex; order:3; width:100%; overflow-x:auto; gap:18px; padding:2px 0 4px; }
  .nav-links a { white-space:nowrap; font-size:13px; }
  .resident-chip { margin-left:auto; }
  .nav .spacer { display:none; }
  .wrap { margin:22px auto; }
  .hero { min-height:330px; }
  .management-heading { padding:24px; }
  .card:has(table) { overflow-x:auto; }
}

/* Shared app-shell refinements. */
html { -webkit-text-size-adjust:100%; scroll-padding-top:100px; }
body { min-height:100svh; }
.wrap,.card,.grid > * { min-width:0; }
.nav-shell { padding-top:env(safe-area-inset-top,0px); }
.nav { padding-left:max(24px,env(safe-area-inset-left)); padding-right:max(24px,env(safe-area-inset-right)); }
.mobile-tabs { display:none; }
.skip-link { position:fixed; left:16px; top:-100px; z-index:100; padding:14px; background:var(--paper); color:var(--pine); }
.skip-link:focus { top:max(12px,env(safe-area-inset-top)); }
.nav a[aria-current="page"] { color:var(--pine); font-weight:750; }
.nav .linkbtn { min-height:44px; padding:8px; }
.install-guide { max-width:620px; margin:28px auto 8px; padding:16px 20px; border:1px solid var(--line); border-radius:16px; background:var(--paper); color:var(--muted); font-size:14px; }
.install-guide summary { min-height:44px; display:list-item; align-content:center; cursor:pointer; color:var(--pine); font-weight:650; }
.standalone .install-guide { display:none; }
.connectivity-note { padding:14px 18px; margin-bottom:18px; border-radius:12px; background:#fff0d8; color:#68491e; }
[hidden] { display:none !important; }
input,select,textarea { font-size:16px; min-height:48px; max-width:100%; }
input[type="checkbox"],input[type="radio"] { width:22px; min-height:22px; height:22px; vertical-align:middle; margin:8px; accent-color:var(--pine); }
button,.button { min-height:48px; touch-action:manipulation; }
.table-scroll { max-width:100%; overflow:auto; overscroll-behavior-x:contain; }
.calendar { min-width:0; max-width:100%; overscroll-behavior-x:contain; }
.calendar-grid { min-width:784px; }
.calendar-toolbar button { min-width:48px; }
.card:has(table) { overflow:visible; }
.hero h1,.hero h2 { color:#fff; }
.hero .muted { color:#e2ebe6; }

@media(max-width:680px) {
  html { scroll-padding-top:90px; }
  .nav { flex-wrap:nowrap; min-height:68px; gap:8px; padding:10px max(16px,env(safe-area-inset-right)) 10px max(16px,env(safe-area-inset-left)); }
  .nav .nav-links { display:none; }
  .wordmark { font-size:14px; gap:8px; }
  .resident-chip { margin-left:auto; }
  .resident-chip b { width:36px; height:36px; font-size:12px; }
  .nav .linkbtn { font-size:12px; }
  .wrap { margin:18px auto 0; padding:0 max(16px,env(safe-area-inset-right)) calc(28px + env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left)); }
  .signed-in .wrap { padding-bottom:calc(100px + env(safe-area-inset-bottom)); }
  .mobile-tabs { display:flex; position:fixed; bottom:0; left:0; right:0; z-index:10; background:rgba(255,253,249,.97); backdrop-filter:blur(18px); border-top:1px solid var(--line); padding:8px max(12px,env(safe-area-inset-right)) calc(8px + env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left)); gap:8px; }
  .mobile-tabs a { flex:1; display:flex; flex-direction:column; justify-content:center; align-items:center; gap:3px; min-height:52px; border-radius:14px; color:var(--muted); text-decoration:none; font-size:11px; font-weight:650; }
  .mobile-tabs a > span:first-child { font-size:22px; line-height:24px; }
  .mobile-tabs a[aria-current="page"] { color:var(--pine); background:#e7efe7; }
  .card { padding:20px; border-radius:20px; margin-bottom:16px; }
  .hero { min-height:240px; padding:26px 22px; background-position:60% center; }
  .hero h1 { font-size:clamp(1.85rem,7.5vw,2.5rem); }
  .hero .eyebrow { font-size:9px; letter-spacing:.13em; }
  .hero p { margin:8px 0; }
  .section-title { margin:26px 0 14px; }
  .section-title h2 { font-size:1.4rem; }
  .mode-note { border-radius:14px; line-height:1.5; font-size:12px; padding:10px 12px; }
  .grid { grid-template-columns:minmax(0,1fr); gap:0; }
  .door-card { min-height:180px; }
  .feature-card .button { width:100%; }
  .login-page { margin:0; padding:0; }
  .login-intro { padding:24px; border-radius:20px 20px 0 0; }
  .login-intro h1 { font-size:1.9rem; }
  .login-intro .notice { display:none; }
  .login-card { padding:24px; border-radius:0 0 20px 20px; }
  .login-card h2 { font-size:1.6rem; }
  .login-card button { width:100%; }
  .calendar-toolbar { gap:8px; }
  .calendar-toolbar h3 { font-size:.9rem; text-align:center; }
  .calendar-legend { flex-wrap:wrap; gap:8px; }
  .calendar-note { line-height:1.6; }
  .smallbtn { min-height:44px; }
  .form-grid { grid-template-columns:minmax(0,1fr); }
  .install-guide { margin-top:20px; padding:12px 16px; }
}
@media(hover:none) { button:hover,.button:hover { transform:none; } }
/* Larger, thumb-friendly mobile reading and interaction scale. */
@media(max-width:680px) {
  body { font-size:18px; line-height:1.5; }
  h1 { font-size:2.1rem; line-height:1.15; }
  h2,.section-title h2 { font-size:1.65rem; line-height:1.25; }
  h3 { font-size:1.25rem; }
  p { line-height:1.55; }
  .card { padding:24px 22px; margin-bottom:20px; }
  .eyebrow,.hero .eyebrow,.door-card .eyebrow { font-size:12px; line-height:1.5; letter-spacing:.1em; }
  .hero { min-height:280px; padding:28px 24px; }
  .hero h1 { font-size:clamp(2rem,8vw,2.6rem); }
  .hero p { margin:12px 0; }
  .badge { font-size:13px; padding:7px 10px; margin:3px 0; }
  .mode-note { font-size:14px; padding:12px 14px; }
  .door-card { min-height:230px; }
  .door-card h2 { font-size:1.75rem; }
  .door-card .muted { font-size:17px; }
  button,.button { min-height:58px; padding:15px 18px; font-size:18px; border-radius:16px; }
  input,select,textarea { font-size:18px; min-height:58px; padding:15px; border-radius:14px; }
  label { font-size:17px; font-weight:600; }
  input[type="checkbox"],input[type="radio"] { min-height:24px; width:24px; height:24px; padding:0; }
  .nav { gap:10px; }
  .wordmark { font-size:16px; letter-spacing:.1em; }
  .wordmark small { font-size:8px; }
  .wordmark .mark { width:38px; height:38px; font-size:23px; }
  .resident-chip b { width:40px; height:40px; font-size:15px; }
  .nav .linkbtn { font-size:15px; padding:8px 4px; min-height:48px; }
  .mobile-tabs a { min-height:64px; font-size:14px; gap:4px; line-height:1.3; }
  .mobile-tabs a > span:first-child { font-size:28px; line-height:30px; }
  .signed-in .wrap { padding-bottom:calc(116px + env(safe-area-inset-bottom)); }
  .login-card h2 { font-size:1.85rem; }
  .login-intro h1 { font-size:2.2rem; }
  .install-guide { font-size:16px; padding:16px 18px; }
  .calendar-toolbar { flex-wrap:wrap; }
  .calendar-toolbar h3 { font-size:17px; }
  .calendar-toolbar button { min-width:54px; min-height:54px; }
  .calendar-note,.calendar-legend { font-size:15px; }
  .calendar { font-size:16px; }
  .cal-day { font-size:14px; }
  .cal-day span { font-size:12px; }
  .cal-time { font-size:12px; }
  .smallbtn { min-height:48px; font-size:16px; padding:10px 14px; }
  th { font-size:13px; }
  td { font-size:16px; padding:16px 10px; }
}
@media(prefers-reduced-motion:reduce) { *,*::before,*::after { animation:none !important; transition:none !important; scroll-behavior:auto !important; } }

/* Deliberate door gesture, with keyboard confirmation on the same control. */
.door-slide { position:relative; height:76px; border-radius:24px; background:#e2ece4; border:1px solid #c6d8cb; overflow:hidden; }
.door-slide-label { display:flex; align-items:center; justify-content:center; height:100%; padding-left:60px; padding-right:8px; color:var(--pine); font-size:17px; font-weight:750; pointer-events:none; }
.door-card .door-slide-handle { position:absolute; left:6px; top:6px; width:62px; height:62px; min-height:62px; padding:0; border-radius:19px; display:grid; place-items:center; font-size:30px; touch-action:pan-y; user-select:none; -webkit-user-select:none; transition:none; }
.door-card .door-slide-handle:hover { transform:none; }
.door-slide-status { color:var(--muted); font-size:14px; line-height:1.5; margin:10px 0 0; }

.booking-shell { max-width:720px; margin:0 auto; }
.booking-header { margin:12px 0 24px; }
.booking-header p { margin:10px 0; }
.booking-primary { width:100%; margin-bottom:28px; }
.booking-list { display:grid; gap:0; }
.booking-time { font-size:24px; font-weight:650; margin:12px 0; }
.booking-card h2 { font-size:25px; }
.booking-details summary,.booking-week > summary,.cancel-details summary { cursor:pointer; min-height:52px; align-content:center; font-weight:600; }
.booking-card .booking-details { border-top:1px solid var(--line); margin-top:20px; padding-top:8px; }
.booking-details .button { width:100%; }
.cancel-details { margin-top:16px; }
.cancel-details summary { color:var(--bad); font-size:16px; }
.booking-back { display:inline-flex; align-items:center; min-height:48px; color:var(--pine); text-decoration:none; }
.booking-week > summary { padding:12px 0; color:var(--pine); }
.booking-review { width:min(520px,calc(100% - 32px)); max-height:85svh; overflow:auto; border:0; border-radius:24px; padding:28px; background:var(--paper); color:var(--ink); }
.booking-review::backdrop { background:rgba(15,32,26,.55); }
.booking-review button { width:100%; margin-top:12px; }
.booking-review-time { font-size:23px; font-weight:700; }
.booking-shell #reservation-submit { width:100%; }
/* Keep calendar geometry independent of the larger general button styles. */
.calendar .cal-slot { min-height:24px; height:24px; padding:0; border-radius:0; }