:root {
  --cream: #f5efe3;
  --paper: #fffaf1;
  --ink: #24332b;
  --muted: #756f64;
  --rust: #b85c38;
  --rust-dark: #8f3f25;
  --green: #46634e;
  --sage: #b8c4a5;
  --gold: #dca849;
  --line: rgba(48, 57, 48, .14);
  --shadow: 0 20px 60px rgba(64, 49, 31, .12);
  --serif: "Fraunces", Georgia, serif;
  --sans: "DM Sans", system-ui, sans-serif;
}

* { box-sizing: border-box; }
html { min-height: 100%; background: var(--cream); font-size: 17px; -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body { margin: 0; min-height: 100vh; color: var(--ink); font-family: var(--sans); background: var(--cream); }
button, input, select { font: inherit; }
button { color: inherit; }
button, [data-route] { -webkit-tap-highlight-color: transparent; }
.hidden { display: none !important; }
.eyebrow { display: block; color: var(--rust); font-size: .68rem; font-weight: 700; letter-spacing: .17em; }
.eyebrow.light { color: rgba(255,255,255,.7); }
.muted { color: var(--muted); }
h1, h2, h3, p { margin-top: 0; }
h1, h2, h3 { font-family: var(--serif); }
em { color: var(--rust); font-weight: 600; }

.toast { position: fixed; z-index: 100; left: 50%; top: 18px; max-width: calc(100vw - 32px); transform: translate(-50%, -20px); padding: 11px 16px; border-radius: 99px; background: var(--ink); color: white; font-size: .82rem; box-shadow: var(--shadow); opacity: 0; pointer-events: none; transition: .25s ease; }
.toast.show { opacity: 1; transform: translate(-50%, 0); }

/* Registration */
.registration { min-height: 100vh; display: grid; grid-template-columns: 1.05fr .95fr; background: var(--paper); }
.registration-art { position: relative; min-height: 100vh; overflow: hidden; color: white; background: #304a3a; }
.registration-art::before { content: ""; position: absolute; inset: 0; opacity: .16; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='90' height='90' viewBox='0 0 90 90'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.4'/%3E%3C/svg%3E"); }
.sun { position: absolute; width: 42vw; height: 42vw; max-width: 570px; max-height: 570px; border-radius: 50%; background: #d6a448; top: 7%; left: 9%; opacity: .9; }
.mountain { position: absolute; left: -10%; right: -10%; bottom: 0; height: 60%; clip-path: polygon(0 65%, 19% 31%, 35% 52%, 53% 9%, 69% 42%, 79% 28%, 100% 61%, 100% 100%, 0 100%); }
.mountain-back { background: #5d7257; transform: translateY(-7%); opacity: .9; }
.mountain-front { background: #263c30; clip-path: polygon(0 68%, 17% 48%, 31% 59%, 48% 25%, 63% 54%, 78% 36%, 100% 58%, 100% 100%, 0 100%); }
.art-copy { position: absolute; z-index: 2; left: clamp(32px, 7vw, 110px); bottom: 10%; max-width: 510px; }
.art-copy h1 { margin: 14px 0 18px; color: white; font-size: clamp(3.4rem, 6vw, 6.5rem); line-height: .86; letter-spacing: -.05em; }
.art-copy h1 em { color: #efbf60; }
.art-copy p { max-width: 420px; color: rgba(255,255,255,.72); line-height: 1.65; }
.registration-form-wrap { display: grid; place-items: center; padding: 50px; }
.registration-form { width: min(390px, 100%); }
.brand-mark, .mini-logo { display: grid; place-items: center; width: 58px; height: 58px; margin-bottom: 34px; border-radius: 50% 50% 44% 56%; background: var(--rust); color: var(--paper); font: 700 2rem/1 var(--serif); transform: rotate(-7deg); }
.brand-mark.small { width: 42px; height: 42px; margin: 0; font-size: 1.4rem; }
.registration-form h2 { margin: 8px 0 7px; font-size: 2.65rem; letter-spacing: -.04em; }
.registration-form > p { margin-bottom: 32px; }
label { display: block; margin-top: 18px; color: #5f5b52; font-size: .67rem; font-weight: 700; letter-spacing: .12em; }
label span { opacity: .55; }
input, select { width: 100%; margin-top: 8px; padding: 15px 16px; border: 1px solid var(--line); border-radius: 5px; outline: none; color: var(--ink); background: rgba(255,255,255,.7); transition: .2s; }
input:focus, select:focus { border-color: var(--rust); box-shadow: 0 0 0 3px rgba(184,92,56,.11); }
input[name="pin"] { letter-spacing: .35em; font-weight: 700; }
.primary-button { width: 100%; display: flex; justify-content: space-between; align-items: center; margin-top: 24px; padding: 16px 19px; border: 0; border-radius: 5px; color: white; background: var(--rust); font-weight: 700; cursor: pointer; box-shadow: 0 8px 24px rgba(184,92,56,.2); }
.primary-button:hover { background: var(--rust-dark); }
.privacy-note { margin-top: 17px !important; text-align: center; font-size: .72rem; color: #989084; }
.text-button { width: 100%; margin-top: 16px; padding: 8px; border: 0; color: var(--muted); background: transparent; font-size: .72rem; cursor: pointer; }
.text-button strong { color: var(--rust); }

/* App shell */
.app { min-height: 100vh; }
.desktop-sidebar { position: fixed; z-index: 20; width: 242px; inset: 0 auto 0 0; display: flex; flex-direction: column; padding: 28px 20px 20px; border-right: 1px solid var(--line); background: #eee6d7; }
.sidebar-brand { display: flex; align-items: center; gap: 12px; margin: 0 8px 36px; }
.sidebar-brand strong { display: block; font-family: var(--serif); }
.sidebar-brand span { display: block; margin-top: 2px; color: var(--muted); font-size: .65rem; letter-spacing: .1em; text-transform: uppercase; }
.side-nav { display: grid; gap: 7px; }
.nav-button { display: flex; align-items: center; gap: 12px; border: 0; border-radius: 7px; padding: 12px 14px; text-align: left; background: transparent; color: #69695e; font-weight: 600; cursor: pointer; }
.nav-button .nav-icon { width: 20px; font-size: 1.1rem; }
.nav-button.active { color: white; background: var(--green); }
.sidebar-user { margin-top: auto; display: flex; align-items: center; gap: 10px; padding: 14px 8px 2px; border-top: 1px solid var(--line); }
.sidebar-user strong, .sidebar-user span { display: block; }
.sidebar-user strong { font-size: .82rem; }
.sidebar-user span { color: var(--muted); font-size: .68rem; }
.user-avatar { flex: none; display: grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; color: white; font-size: .72rem; font-weight: 700; }
.app-main { min-height: 100vh; margin-left: 242px; }
.topbar { display: none; }
.view { display: none; min-height: 100vh; padding: 42px clamp(30px, 5vw, 76px) 60px; }
.view.active { display: block; }
.bottom-nav { display: none; }

/* Home */
#home-view { max-width: 1320px; margin: auto; }
.hero-card { height: 310px; position: relative; overflow: hidden; padding: 28px 34px; border-radius: 9px; color: white; background: #3e624b; box-shadow: var(--shadow); }
.hero-card::after { content: ""; position: absolute; inset: 0; opacity: .1; background-image: radial-gradient(circle at 20% 30%, white 0 1px, transparent 1.5px); background-size: 18px 18px; }
.hero-topline { position: relative; z-index: 2; display: flex; justify-content: space-between; color: rgba(255,255,255,.7); font-size: .62rem; letter-spacing: .16em; }
.hero-content { position: relative; z-index: 3; margin-top: 76px; }
.hero-content h1 { margin: 0 0 8px; color: white; font-size: clamp(2.5rem, 5vw, 4.8rem); line-height: .95; letter-spacing: -.04em; }
.hero-content h1 span { color: #efbd5a; }
.hero-content p { color: rgba(255,255,255,.72); }
.hero-hills i { position: absolute; display: block; border-radius: 50% 50% 0 0; bottom: -55%; background: #294435; }
.hero-hills i:nth-child(1) { width: 50%; height: 88%; right: 28%; transform: rotate(8deg); }
.hero-hills i:nth-child(2) { width: 55%; height: 100%; right: -6%; background: #263d31; transform: rotate(-6deg); }
.hero-hills i:nth-child(3) { width: 22%; height: 60%; right: -2%; bottom: -25%; background: #cf9e45; opacity: .65; }
.section-heading { display: flex; align-items: end; justify-content: space-between; margin: 42px 0 18px; }
.section-heading h2 { margin: 5px 0 0; font-size: 1.75rem; }
.online-pill { padding: 6px 10px; border-radius: 99px; color: var(--green); background: rgba(79,116,86,.11); font-size: .7rem; font-weight: 700; }
.action-grid { display: grid; grid-template-columns: 1.1fr 1fr 1fr; gap: 15px; }
.action-card { min-height: 250px; position: relative; overflow: hidden; display: flex; flex-direction: column; justify-content: space-between; align-items: flex-start; padding: 24px; border: 0; border-radius: 8px; color: white; text-align: left; cursor: pointer; box-shadow: var(--shadow); transition: transform .2s; }
.action-card:hover { transform: translateY(-3px); }
.action-card::before { content: ""; position: absolute; width: 170px; height: 170px; right: -70px; top: -65px; border: 1px solid rgba(255,255,255,.12); border-radius: 50%; box-shadow: 0 0 0 28px rgba(255,255,255,.03), 0 0 0 55px rgba(255,255,255,.03); }
.chat-card { background: var(--rust); }
.games-card { background: #3c5a47; }
.map-card { color: var(--ink); background: #dcb04d; }
.action-icon { display: grid; place-items: center; width: 40px; height: 40px; border: 1px solid rgba(255,255,255,.25); border-radius: 50%; font-size: 1.2rem; }
.map-card .action-icon { border-color: rgba(36,51,43,.25); }
.action-card h3 { margin: 6px 0 10px; font-size: 1.7rem; line-height: 1.05; }
.action-card p { margin: 0; color: rgba(255,255,255,.66); font-size: .75rem; }
.map-card p { color: rgba(36,51,43,.7); }
.card-arrow { position: absolute; right: 20px; bottom: 20px; font-size: 1.25rem; }
.home-note { display: flex; gap: 14px; margin-top: 28px; padding: 22px; border: 1px solid var(--line); border-radius: 7px; background: rgba(255,255,255,.3); }
.home-note > span { color: var(--rust); }
.home-note strong { font-family: var(--serif); }
.home-note p { margin: 3px 0 0; color: var(--muted); font-size: .78rem; }

/* Chat */
#chat-view.active { display: grid; grid-template-columns: 300px 1fr; padding: 0; height: 100vh; min-height: 0; }
.room-list-panel { padding: 37px 22px; border-right: 1px solid var(--line); overflow-y: auto; background: rgba(255,255,255,.22); }
.panel-heading { display: flex; align-items: center; justify-content: space-between; padding: 0 7px 24px; }
.panel-heading h2 { margin: 5px 0 0; font-size: 1.7rem; }
.round-button { width: 36px; height: 36px; border: 1px solid var(--line); border-radius: 50%; background: var(--paper); font-size: 1.25rem; cursor: pointer; }
.room-list { display: grid; gap: 5px; }
.room-button { width: 100%; display: grid; grid-template-columns: 40px 1fr auto; align-items: center; gap: 10px; padding: 11px; border: 0; border-radius: 7px; color: var(--ink); text-align: left; background: transparent; cursor: pointer; }
.room-button:hover { background: rgba(255,255,255,.45); }
.room-button.active { color: white; background: var(--green); }
.room-emoji { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 50%; background: rgba(255,255,255,.65); }
.room-button.active .room-emoji { background: rgba(255,255,255,.16); }
.room-button strong, .room-button small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.room-button strong { font-size: .8rem; }
.room-button small { margin-top: 3px; color: var(--muted); font-size: .65rem; }
.room-button.active small { color: rgba(255,255,255,.62); }
.unread { min-width: 20px; padding: 3px 5px; border-radius: 99px; color: white; background: var(--rust); text-align: center; font-size: .6rem; }
.conversation { min-width: 0; height: 100vh; display: grid; grid-template-rows: auto 1fr auto auto; background: var(--paper); }
.conversation-header { display: flex; align-items: center; gap: 12px; padding: 20px 28px; border-bottom: 1px solid var(--line); }
.conversation-header h2 { margin: 0; font-size: 1.25rem; }
.conversation-header span { color: var(--muted); font-size: .68rem; }
.back-button { display: none; border: 0; background: transparent; font-size: 2rem; }
.avatar-stack { display: flex; flex-direction: row-reverse; margin-left: auto; padding-left: 8px; }
.avatar-stack .user-avatar { width: 29px; height: 29px; margin-left: -8px; border: 2px solid var(--paper); font-size: .55rem; }
.messages { overflow-y: auto; padding: 25px clamp(24px, 5vw, 70px); }
.message { display: flex; gap: 10px; max-width: 670px; margin: 16px 0; }
.message.mine { margin-left: auto; flex-direction: row-reverse; }
.message-content { max-width: min(75%, 520px); }
.message-meta { display: flex; gap: 8px; align-items: baseline; margin: 0 3px 5px; }
.message.mine .message-meta { justify-content: flex-end; }
.message-meta strong { font-size: .72rem; }
.message-meta time { color: #9a9388; font-size: .6rem; }
.message-bubble { padding: 11px 14px; border-radius: 4px 14px 14px 14px; background: #ebe4d7; font-size: .85rem; line-height: 1.55; overflow-wrap: anywhere; }
.message.mine .message-bubble { color: white; background: var(--green); border-radius: 14px 4px 14px 14px; }
.message-gif { display: block; width: min(100%, 310px); max-height: 260px; object-fit: cover; border-radius: 12px; }
.message-bubble:has(.message-gif) { padding: 5px; background: transparent; }
.message-media { display: block; width: min(100%, 390px); max-height: 420px; margin-top: 8px; border-radius: 10px; object-fit: contain; background: #182019; }
.message-media:first-child { margin-top: 0; }
.attachment-unavailable { padding: 8px; color: var(--muted); font-size: .7rem; font-style: italic; }
.composer { display: grid; grid-template-columns: auto 1fr auto auto; align-items: center; gap: 7px; margin: 0 24px max(20px, env(safe-area-inset-bottom)); padding: 7px; border: 1px solid var(--line); border-radius: 9px; background: white; box-shadow: 0 8px 26px rgba(37,49,42,.08); }
.composer input { margin: 0; padding: 10px 6px; border: 0; background: transparent; box-shadow: none; }
.composer-button, .send-button { display: grid; place-items: center; width: 36px; height: 36px; border: 0; border-radius: 7px; cursor: pointer; }
.composer-button { background: #eee7da; font-size: 1.2rem; }
.send-button { color: white; background: var(--rust); }
.voice-button { display: grid; place-items: center; width: 36px; height: 36px; border: 0; border-radius: 7px; color: var(--rust); background: #f5eee5; font-size: .75rem; cursor: pointer; }
.voice-button.recording { color: white; background: #c84635; animation: record-pulse 1.25s ease-in-out infinite; }
@keyframes record-pulse { 50% { box-shadow: 0 0 0 6px rgba(200,70,53,.14); } }
.voice-memo { min-width: 285px; display: flex; align-items: center; gap: 10px; padding: 5px 2px; }
.voice-memo > span { display: grid; place-items: center; width: 35px; height: 35px; flex: none; border-radius: 50%; color: white; background: var(--rust); font-size: .55rem; }
.message.mine .voice-memo > span { color: var(--green); background: white; }
.voice-memo > div { min-width: 0; flex: 1; }
.voice-memo strong { display: block; margin-bottom: 3px; font: 600 .63rem var(--sans); }
.voice-memo audio { display: block; width: 235px; max-width: 100%; height: 32px; }
.picker { max-height: 390px; overflow-y: auto; margin: 0 24px 8px; padding: 13px; border: 1px solid var(--line); border-radius: 9px; background: white; box-shadow: var(--shadow); }
.picker-label { display: block; margin: 13px 2px 7px; color: var(--muted); font-size: .58rem; font-weight: 700; letter-spacing: .14em; }
.emoji-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(39px, 1fr)); gap: 5px; }
.emoji-choice { flex: none; width: 39px; height: 39px; border: 0; border-radius: 7px; background: #f4eee5; font-size: 1.2rem; cursor: pointer; }
.gif-row { display: flex; gap: 7px; overflow-x: auto; padding-bottom: 2px; }
.gif-choice { flex: none; width: 90px; height: 68px; padding: 0; border: 0; border-radius: 7px; overflow: hidden; cursor: pointer; }
.gif-choice img { width: 100%; height: 100%; object-fit: cover; }
.upload-choice { width: 100%; display: flex; align-items: center; gap: 11px; padding: 11px; border: 1px dashed rgba(184,92,56,.4); border-radius: 7px; color: var(--ink); background: rgba(184,92,56,.06); text-align: left; cursor: pointer; }
.upload-choice > span { display: grid; place-items: center; width: 36px; height: 36px; flex: none; border-radius: 50%; color: white; background: var(--rust); font-size: 1.2rem; }
.upload-choice strong, .upload-choice small { display: block; }
.upload-choice strong { font-size: .75rem; }
.upload-choice small { margin-top: 2px; color: var(--muted); font-size: .62rem; }
.attachment-preview { margin: 0 24px 8px; padding: 10px; border: 1px solid var(--line); border-radius: 8px; background: white; }
.pending-file { display: flex; align-items: center; gap: 10px; }
.pending-file > span { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 6px; background: #eee7da; }
.pending-file div { min-width: 0; flex: 1; }
.pending-file strong, .pending-file small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pending-file strong { font-size: .72rem; }
.pending-file small { margin-top: 2px; color: var(--muted); font-size: .6rem; }
.pending-file button { border: 0; color: var(--muted); background: transparent; font-size: 1.2rem; cursor: pointer; }
.upload-progress { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 10px; font-size: .65rem; }
.upload-progress div { height: 5px; overflow: hidden; border-radius: 99px; background: #eee7da; }
.upload-progress i { display: block; height: 100%; border-radius: inherit; background: var(--rust); transition: width .15s; }
.upload-progress b { color: var(--rust); font-size: .6rem; }

/* Games */
.simple-view { max-width: 1160px; margin: auto; }
.page-intro { max-width: 650px; padding: 18px 0 32px; }
.page-intro h1 { margin: 10px 0 14px; font-size: clamp(2.8rem, 6vw, 5.5rem); line-height: .92; letter-spacing: -.05em; }
.page-intro p { max-width: 520px; color: var(--muted); line-height: 1.6; }
.game-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 15px; }
.game-card { min-height: 250px; position: relative; display: flex; flex-direction: column; justify-content: space-between; padding: 24px; border: 1px solid var(--line); border-radius: 8px; background: rgba(255,255,255,.35); text-align: left; }
button.game-card { cursor: pointer; }
.game-card.available { color: white; border: 0; background: var(--rust); box-shadow: var(--shadow); }
.game-number { position: absolute; top: 22px; right: 22px; font: 600 2rem var(--serif); opacity: .18; }
.game-icon { display: grid; place-items: center; width: 46px; height: 46px; border: 1px solid currentColor; border-radius: 50%; font: 600 1.2rem var(--serif); opacity: .8; }
.game-card h3 { margin: 16px 0 7px; font-size: 1.55rem; }
.game-card p { color: var(--muted); font-size: .76rem; }
.game-card.available p { color: rgba(255,255,255,.7); }
.play-label, .coming-label { font-size: .65rem; font-weight: 700; letter-spacing: .12em; }
.coming-label { color: var(--rust); }
.add-game { justify-content: center; align-items: center; text-align: center; border-style: dashed; }
.add-game p { margin-bottom: 0; }
.text-back { margin-bottom: 28px; border: 0; background: transparent; color: var(--rust); font-weight: 700; cursor: pointer; }
.trivia-card { max-width: 650px; margin: 3vh auto; padding: clamp(28px, 6vw, 60px); border-radius: 10px; background: var(--paper); box-shadow: var(--shadow); text-align: center; }
.trivia-card h2 { font-size: clamp(2rem, 5vw, 3.4rem); }
.trivia-card p { color: var(--muted); }
.trivia-options { display: grid; gap: 10px; margin-top: 25px; }
.trivia-options button { padding: 14px; border: 1px solid var(--line); border-radius: 7px; background: white; cursor: pointer; }
.trivia-options button:hover { border-color: var(--rust); }
.trivia-score { color: var(--rust); font-size: .72rem; font-weight: 700; letter-spacing: .12em; }
.games-coming { min-height: min(70vh, 650px); display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 50px 24px; border-radius: 10px; color: white; background: var(--green); box-shadow: var(--shadow); text-align: center; }
.games-coming .game-icon { margin-bottom: 23px; }
.games-coming h1 { margin: 10px 0 15px; color: white; font-size: clamp(3.2rem, 7vw, 6.2rem); line-height: .9; letter-spacing: -.05em; }
.games-coming h1 em { color: #efbd5a; }
.games-coming p { max-width: 420px; margin: 0; color: rgba(255,255,255,.7); }

/* Schedule */
.schedule-view { max-width: 1180px; }
.schedule-hero { display: block; }
.schedule-hero .page-intro { padding-top: 18px; }
.house-card { min-height: 270px; position: relative; overflow: hidden; display: flex; align-items: flex-start; gap: 18px; padding: 27px; border-radius: 9px; color: white; background: var(--green); box-shadow: var(--shadow); text-decoration: none; }
.house-card::after { content: "543"; position: absolute; right: -5px; bottom: -28px; color: rgba(255,255,255,.07); font: 700 8rem var(--serif); }
.house-icon { z-index: 1; display: grid; place-items: center; width: 46px; height: 46px; flex: none; border: 1px solid rgba(255,255,255,.3); border-radius: 50%; font-size: 1.3rem; }
.house-card > div { position: relative; z-index: 1; }
.house-card h2 { margin: 7px 0 11px; color: white; font-size: 1.55rem; }
.house-card p { color: rgba(255,255,255,.7); font-size: .76rem; line-height: 1.6; }
.house-card strong { display: block; margin-top: 20px; color: #efbd5a; font-size: .62rem; letter-spacing: .12em; }
.schedule-days { display: grid; grid-template-columns: repeat(5, 1fr); gap: 8px; margin: 30px 0 40px; padding: 8px; border: 1px solid var(--line); border-radius: 8px; background: rgba(255,255,255,.3); }
.schedule-day { min-width: 0; padding: 11px; border: 0; border-radius: 6px; color: var(--muted); background: transparent; cursor: pointer; }
.schedule-day span, .schedule-day strong { display: block; }
.schedule-day span { font-size: .58rem; font-weight: 700; letter-spacing: .13em; }
.schedule-day strong { margin-top: 3px; font: 600 1.45rem var(--serif); }
.schedule-day.active { color: white; background: var(--rust); box-shadow: 0 6px 18px rgba(184,92,56,.2); }
.resort-events-link { display: flex; align-items: center; gap: 12px; margin: -18px 0 27px; padding: 14px 16px; border-radius: 7px; color: white; background: var(--green); text-decoration: none; }
.resort-events-link > span { display: grid; place-items: center; width: 36px; height: 36px; flex: none; border: 1px solid rgba(255,255,255,.25); border-radius: 50%; }
.resort-events-link > div { min-width: 0; flex: 1; }
.resort-events-link strong, .resort-events-link small { display: block; }
.resort-events-link strong { font-family: var(--serif); }
.resort-events-link small { margin-top: 2px; color: rgba(255,255,255,.65); font-size: .61rem; }
.resort-events-link > b { color: #efbd5a; font-size: .56rem; letter-spacing: .09em; }
.schedule-heading { display: flex; align-items: end; justify-content: space-between; padding-bottom: 15px; border-bottom: 1px solid var(--line); }
.schedule-heading h2 { margin: 5px 0 0; font-size: 2rem; }
.schedule-year { color: #aaa194; font: 600 1.4rem var(--serif); }
.schedule-events { position: relative; margin: 4px 0 34px; }
.schedule-events::before { content: ""; position: absolute; left: 146px; top: 0; bottom: 0; width: 1px; background: var(--line); }
.schedule-event { position: relative; display: grid; grid-template-columns: 125px 46px 1fr; gap: 20px; align-items: start; padding: 24px 0; border-bottom: 1px solid var(--line); }
.event-time { padding-top: 13px; color: var(--muted); font-size: .6rem; font-weight: 700; letter-spacing: .12em; text-align: right; }
.event-icon { z-index: 1; display: grid; place-items: center; width: 46px; height: 46px; border: 5px solid var(--cream); border-radius: 50%; color: white; background: var(--green); font-size: .9rem; }
.schedule-event.food .event-icon { background: var(--rust); }
.schedule-event.travel .event-icon { color: var(--ink); background: var(--gold); }
.event-copy { padding-top: 7px; }
.event-copy h3 { margin: 0 0 5px; font-size: 1.25rem; }
.event-copy p { max-width: 600px; margin-bottom: 8px; color: var(--muted); font-size: .76rem; line-height: 1.5; }
.event-copy span { color: var(--rust); font-size: .57rem; font-weight: 700; letter-spacing: .12em; }
.event-owner { display: flex; align-items: center; gap: 8px; margin-top: 12px; padding: 0; border: 0; background: transparent; cursor: pointer; }
.event-owner i { color: var(--muted); font-size: .53rem; font-style: normal; font-weight: 700; letter-spacing: .1em; }
.event-owner b { padding: 4px 8px; border-radius: 99px; color: var(--green); background: rgba(70,99,78,.1); font-size: .64rem; }
.event-owner em { color: var(--rust); font: normal .75rem var(--sans); }
.byob-banner { display: flex; gap: 13px; align-items: center; margin: -18px 0 38px; padding: 16px 19px; border: 1px solid rgba(220,168,73,.45); border-radius: 7px; background: rgba(220,168,73,.12); }
.byob-banner > span { display: grid; place-items: center; width: 38px; height: 38px; flex: none; border-radius: 50%; background: rgba(220,168,73,.2); }
.byob-banner strong { font-family: var(--serif); font-size: .9rem; }
.byob-banner p { margin: 2px 0 0; color: var(--muted); font-size: .68rem; }
.assignments-section { margin: 46px 0 35px; }
.assignment-count { color: var(--muted); font-size: .57rem; font-weight: 700; letter-spacing: .12em; }
.assignment-heading-actions { display: flex; align-items: center; gap: 10px; }
.small-action-button { padding: 7px 10px; border: 0; border-radius: 5px; color: white; background: var(--rust); font-size: .65rem; font-weight: 700; cursor: pointer; }
.assignments-board { display: grid; grid-template-columns: 1.35fr 1fr 1fr; gap: 12px; }
.assignment-group { overflow: hidden; border: 1px solid var(--line); border-radius: 8px; background: rgba(255,255,255,.35); }
.assignment-group header { display: flex; align-items: center; gap: 9px; padding: 14px 16px; border-bottom: 1px solid var(--line); background: rgba(255,255,255,.3); }
.assignment-group header > span { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; background: #eee7da; font-size: .8rem; }
.assignment-group h3 { margin: 0; font-size: .95rem; }
.assignment-group > div { padding: 5px 14px; }
.assignment-row { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 2px; border: 0; border-bottom: 1px solid rgba(48,57,48,.08); color: var(--ink); background: transparent; text-align: left; cursor: pointer; }
.assignment-row:last-child { border-bottom: 0; }
.assignment-row > span { min-width: 0; flex: 1; color: var(--muted); font-size: .65rem; }
.assignment-row span b, .assignment-row span small { display: block; }
.assignment-row span b { overflow: hidden; color: var(--ink); font-size: .67rem; text-overflow: ellipsis; white-space: nowrap; }
.assignment-row span small { margin-top: 2px; color: var(--muted); font-size: .55rem; }
.assignment-row strong { flex: none; color: var(--green); font-size: .65rem; text-align: right; }
.assignment-row > i { flex: none; color: var(--rust); font-size: .68rem; font-style: normal; }
.empty-assignments { padding: 8px 2px; color: var(--muted); font-size: .65rem; }
.assignment-dialog-actions { display: flex; align-items: center; gap: 10px; margin-top: 24px; }
.assignment-dialog-actions .primary-button { margin-top: 0; }
.delete-button { padding: 15px 12px; border: 1px solid rgba(184,92,56,.4); border-radius: 5px; color: var(--rust); background: transparent; font-weight: 700; cursor: pointer; }
.schedule-note { display: flex; gap: 14px; padding: 22px; border: 1px solid var(--line); border-radius: 7px; background: rgba(255,255,255,.3); }
.schedule-note > span { color: var(--rust); }
.schedule-note strong { font-family: var(--serif); }
.schedule-note p { margin: 3px 0 0; color: var(--muted); font-size: .73rem; }

/* Map */
.map-view { padding-bottom: 70px; }
.map-header { display: flex; align-items: end; justify-content: space-between; margin-bottom: 24px; }
.map-header h1 { margin: 6px 0 0; font-size: 2.8rem; }
.location-button { padding: 12px 16px; border: 0; border-radius: 6px; color: white; background: var(--rust); font-weight: 700; cursor: pointer; }
.location-button.sharing { background: var(--green); }
.map-home-card { width: 100%; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 16px; margin-bottom: 15px; padding: 17px 20px; border: 0; border-radius: 8px; color: white; background: var(--green); box-shadow: var(--shadow); text-align: left; cursor: pointer; }
.map-home-card .house-icon { width: 42px; height: 42px; }
.map-home-card h2 { margin: 4px 0 2px; color: white; font-size: 1.15rem; }
.map-home-card p { margin: 0; color: rgba(255,255,255,.68); font-size: .66rem; }
.map-home-card div > small { display: block; margin-top: 5px; color: #efbd5a; font-size: .61rem; }
.map-home-card > strong { color: #efbd5a; font-size: .58rem; letter-spacing: .1em; }
.map-canvas { height: min(60vh, 600px); min-height: 420px; position: relative; overflow: hidden; border: 7px solid var(--paper); border-radius: 10px; background: #dbe0cd; box-shadow: var(--shadow); }
.leaflet-map { position: absolute; inset: 0; z-index: 1; font-family: var(--sans); background: #dbe0cd; touch-action: none; }
.map-empty { position: absolute; z-index: 900; left: 50%; top: 50%; transform: translate(-50%, -50%); width: 260px; padding: 22px; border-radius: 8px; text-align: center; background: rgba(255,250,241,.94); box-shadow: 0 10px 40px rgba(50,65,52,.12); pointer-events: none; }
.map-empty > span { display: block; color: var(--rust); font-size: 2rem; }
.map-empty h3 { margin: 7px 0 5px; }
.map-empty p { margin: 0; color: var(--muted); font-size: .72rem; }
.family-map-icon { background: transparent; border: 0; }
.family-map-marker { display: flex; flex-direction: column; align-items: center; width: 90px; transform: translateX(-23px); text-align: center; }
.family-map-marker .user-avatar { width: 46px; height: 46px; border: 3px solid white; box-shadow: 0 4px 14px rgba(44,60,46,.35); }
.family-map-marker b { display: block; max-width: 90px; margin-top: 3px; padding: 3px 7px; border-radius: 4px; color: var(--ink); background: rgba(255,250,241,.95); box-shadow: 0 2px 8px rgba(44,60,46,.15); font: 700 .62rem var(--sans); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.home-map-icon { background: transparent; border: 0; }
.home-map-marker { display: flex; flex-direction: column; align-items: center; width: 110px; text-align: center; }
.home-map-marker > span { display: grid; place-items: center; width: 52px; height: 52px; border: 4px solid white; border-radius: 50% 50% 50% 8px; color: var(--ink); background: var(--gold); box-shadow: 0 5px 16px rgba(44,60,46,.38); font-size: 1.35rem; transform: rotate(-45deg); }
.home-map-marker > span::before { content: "⌂"; display: block; transform: rotate(45deg); }
.home-map-marker b { display: block; margin-top: 5px; padding: 4px 8px; border-radius: 4px; color: var(--ink); background: rgba(255,250,241,.96); box-shadow: 0 2px 8px rgba(44,60,46,.16); font: 700 .6rem var(--sans); letter-spacing: .08em; white-space: nowrap; }
.poi-map-icon { background: transparent; border: 0; }
.poi-map-marker { display: flex; flex-direction: column; align-items: center; width: 96px; text-align: center; }
.poi-map-marker > span { display: grid; place-items: center; width: 38px; height: 38px; border: 3px solid white; border-radius: 50%; color: white; background: var(--poi-color); box-shadow: 0 4px 12px rgba(44,60,46,.3); font: 700 .8rem var(--sans); }
.poi-map-marker > b { display: block; max-width: 96px; margin-top: 3px; padding: 3px 6px; overflow: hidden; border-radius: 3px; color: var(--ink); background: rgba(255,250,241,.94); font: 700 .54rem var(--sans); text-overflow: ellipsis; white-space: nowrap; }
.family-popup { min-width: 150px; text-align: center; }
.family-popup strong, .family-popup span { display: block; }
.family-popup span { margin: 3px 0 10px; color: var(--muted); font-size: .68rem; }
.family-popup span em { display: inline-block; margin-top: 5px; color: var(--rust); font: 600 .62rem var(--sans); }
.family-popup a { color: var(--rust); font-size: .68rem; font-weight: 700; text-decoration: none; }
.leaflet-popup-content-wrapper { border-radius: 8px; background: var(--paper); box-shadow: var(--shadow); }
.leaflet-popup-tip { background: var(--paper); }
.leaflet-control-zoom a { color: var(--ink); background: var(--paper); }
.leaflet-control-attribution { margin-bottom: 45px !important; font-size: 9px !important; }
.map-key { position: absolute; z-index: 900; left: 12px; right: 12px; bottom: 12px; display: flex; justify-content: space-between; align-items: center; padding: 9px 12px; border-radius: 5px; background: rgba(255,250,241,.94); box-shadow: 0 3px 15px rgba(44,60,46,.13); font-size: .63rem; pointer-events: none; }
.map-key > div { display: flex; gap: 13px; align-items: center; }
.map-key button { border: 0; background: transparent; color: var(--rust); font-size: .65rem; font-weight: 700; cursor: pointer; }
.map-key button { pointer-events: auto; }
.map-fullscreen-button { position: absolute; z-index: 900; right: 12px; top: 12px; padding: 8px 11px; border: 0; border-radius: 5px; color: var(--ink); background: rgba(255,250,241,.94); box-shadow: 0 3px 15px rgba(44,60,46,.13); font-size: .62rem; font-weight: 700; cursor: pointer; }
body.map-is-fullscreen { overflow: hidden; }
body.map-is-fullscreen .map-canvas { position: fixed; z-index: 1000; inset: 0; width: 100vw; height: 100dvh !important; min-height: 0; border: 0; border-radius: 0; }
body.map-is-fullscreen .map-fullscreen-button { top: max(12px, env(safe-area-inset-top)); }
.green-dot { display: inline-block; width: 7px; height: 7px; margin-right: 5px; border-radius: 50%; background: var(--green); }
.gold-dot { display: inline-block; width: 7px; height: 7px; margin-right: 5px; border-radius: 50%; background: var(--gold); }
.location-list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.location-person { display: flex; align-items: center; gap: 10px; padding: 13px; border: 1px solid var(--line); border-radius: 7px; background: rgba(255,255,255,.35); }
.location-person strong, .location-person span { display: block; }
.location-person strong { font-size: .78rem; }
.location-person span { margin-top: 2px; color: var(--muted); font-size: .63rem; }
.location-person a { margin-left: auto; color: var(--rust); font-size: .65rem; font-weight: 700; text-decoration: none; }
.map-privacy { max-width: 670px; margin: 25px auto 0; color: var(--muted); font-size: .68rem; text-align: center; }
.quick-places { margin-top: 30px; }
.quick-places-heading { display: flex; align-items: end; justify-content: space-between; margin-bottom: 14px; }
.quick-places-heading h2 { margin: 5px 0 0; font-size: 1.55rem; }
.quick-places-heading > span { color: var(--muted); font-size: .55rem; font-weight: 700; letter-spacing: .12em; }
.quick-places-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.place-button { min-width: 0; display: grid; grid-template-columns: 34px 1fr auto; align-items: center; gap: 9px; padding: 12px; border: 1px solid var(--line); border-radius: 7px; color: var(--ink); background: rgba(255,255,255,.38); font: inherit; text-align: left; text-decoration: none; cursor: pointer; transition: .2s; }
.place-button:hover { transform: translateY(-2px); border-color: rgba(184,92,56,.35); background: rgba(255,255,255,.7); }
.place-button > i { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; color: white; background: var(--green); font-style: normal; font-size: .85rem; }
.place-button.home > i { color: var(--ink); background: var(--gold); }
.place-button span { min-width: 0; }
.place-button strong, .place-button small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.place-button strong { font-size: .67rem; }
.place-button small { margin-top: 2px; color: var(--muted); font-size: .56rem; }
.place-button > b { color: var(--rust); font-size: .8rem; }
.stay-information { margin-top: 38px; }
.stay-private { color: var(--muted); font-size: .55rem; font-weight: 700; letter-spacing: .12em; }
.stay-facts { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin-bottom: 12px; }
.stay-facts > div { position: relative; min-width: 0; padding: 15px; border: 1px solid var(--line); border-radius: 7px; background: rgba(255,255,255,.4); }
.stay-facts > div > span, .stay-facts > div > strong { display: block; }
.stay-facts > div > span { color: var(--rust); font-size: .54rem; font-weight: 700; letter-spacing: .11em; }
.stay-facts > div > strong { margin-top: 6px; overflow-wrap: anywhere; font: 600 .86rem var(--serif); }
.stay-facts > div > button { margin-top: 8px; padding: 4px 7px; border: 1px solid rgba(70,99,78,.3); border-radius: 4px; color: var(--green); background: transparent; font-size: .52rem; font-weight: 700; cursor: pointer; }
.stay-facts .wifi-password { grid-column: span 2; }
.stay-detail { margin-top: 8px; overflow: hidden; border: 1px solid var(--line); border-radius: 7px; background: rgba(255,255,255,.34); }
.stay-detail summary { display: flex; align-items: center; gap: 11px; padding: 14px 16px; list-style: none; cursor: pointer; }
.stay-detail summary::-webkit-details-marker { display: none; }
.stay-detail summary > span { display: grid; place-items: center; width: 34px; height: 34px; flex: none; border-radius: 50%; color: var(--ink); background: #eae2d3; }
.stay-detail summary > div { min-width: 0; flex: 1; }
.stay-detail summary strong, .stay-detail summary small { display: block; }
.stay-detail summary strong { font-family: var(--serif); font-size: .88rem; }
.stay-detail summary small { margin-top: 2px; color: var(--muted); font-size: .59rem; }
.stay-detail summary > b { color: var(--rust); font-size: .9rem; transition: transform .2s; }
.stay-detail[open] summary > b { transform: rotate(45deg); }
.stay-detail-body { padding: 2px 60px 17px; color: var(--muted); font-size: .7rem; line-height: 1.6; }
.stay-detail-body p { margin-bottom: 9px; }
.stay-detail-body p:last-child { margin-bottom: 0; }
.stay-detail-body ul { margin: 8px 0 0; padding-left: 18px; }
.stay-detail-body li { margin: 4px 0; }
.amenity-hours, .rental-rates { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-bottom: 12px; }
.amenity-hours > div, .rental-rates > div { padding: 12px; border-radius: 6px; background: rgba(70,99,78,.07); }
.amenity-hours span, .rental-rates span { display: block; color: var(--rust); font-size: .52rem; font-weight: 700; letter-spacing: .1em; }
.amenity-hours strong, .rental-rates strong { display: block; margin-top: 3px; color: var(--ink); font-family: var(--serif); }
.amenity-hours small, .rental-rates small { display: block; margin-top: 2px; color: var(--muted); font-size: .57rem; }
.restriction-note { padding: 9px 11px; border-radius: 5px; color: var(--rust); background: rgba(184,92,56,.08); }
.call-rentals { display: inline-block; margin-top: 3px; padding: 9px 12px; border-radius: 5px; color: white; background: var(--green); font-size: .65rem; font-weight: 700; text-decoration: none; }

/* Dialogs */
dialog { width: min(430px, calc(100% - 30px)); padding: 0; border: 0; border-radius: 10px; color: var(--ink); background: var(--paper); box-shadow: 0 30px 90px rgba(35,43,36,.3); }
dialog::backdrop { background: rgba(31,42,35,.55); backdrop-filter: blur(3px); }
dialog form, dialog > div { position: relative; padding: 34px; }
dialog h2 { margin: 7px 0 22px; font-size: 2rem; }
.dialog-close { position: absolute; right: 15px; top: 13px; border: 0; background: transparent; color: var(--muted); font-size: 1.4rem; cursor: pointer; }
.outline-button { width: 100%; margin-top: 25px; padding: 13px; border: 1px solid var(--rust); border-radius: 5px; color: var(--rust); background: transparent; font-weight: 700; cursor: pointer; }
.profile-big-avatar { display: grid; place-items: center; width: 72px; height: 72px; margin: 20px auto 13px; border-radius: 50%; color: white; font-weight: 700; }
#profile-content { text-align: center; }
#profile-content h3 { margin: 0; font-size: 1.4rem; }
#profile-content p { color: var(--muted); font-size: .78rem; }
#admin-link { margin-top: 24px; text-decoration: none; }

/* Admin */
.admin-view { max-width: 1180px; margin: auto; }
.admin-header { display: flex; align-items: end; justify-content: space-between; gap: 24px; margin-bottom: 26px; }
.admin-header h1 { margin: 6px 0; font-size: 3rem; }
.admin-header p { margin: 0; color: var(--muted); }
.admin-exit { width: auto; margin: 0; }
.admin-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin-bottom: 28px; }
.admin-stats > div { padding: 18px; border-radius: 8px; color: white; background: var(--green); }
.admin-stats strong, .admin-stats span { display: block; }
.admin-stats strong { font: 600 2rem var(--serif); }
.admin-stats span { margin-top: 3px; color: rgba(255,255,255,.65); font-size: .64rem; }
.admin-section { margin-bottom: 28px; padding: 20px; border: 1px solid var(--line); border-radius: 9px; background: rgba(255,255,255,.3); }
.admin-section-heading { display: flex; justify-content: space-between; align-items: end; margin-bottom: 13px; }
.admin-section-heading h2 { margin: 4px 0 0; font-size: 1.35rem; }
.admin-section-heading > span { color: var(--muted); font-size: .62rem; }
.admin-list { display: grid; }
.admin-row { min-width: 0; display: flex; align-items: center; gap: 10px; padding: 11px 2px; border-bottom: 1px solid var(--line); }
.admin-row:last-child { border-bottom: 0; }
.admin-row > div { min-width: 0; flex: 1; }
.admin-row > div > strong, .admin-row > div > span { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.admin-row > div > strong { font-size: .72rem; }
.admin-row > div > strong small { color: var(--muted); font-weight: 500; }
.admin-row > div > span { margin-top: 3px; color: var(--muted); font-size: .63rem; }
.admin-edit, .admin-delete { flex: none; padding: 7px 9px; border-radius: 5px; background: transparent; font-size: .61rem; font-weight: 700; cursor: pointer; }
.admin-edit { border: 1px solid rgba(70,99,78,.35); color: var(--green); }
.admin-delete { border: 1px solid rgba(184,92,56,.35); color: var(--rust); }
.admin-columns { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; }
.protected-label { color: var(--muted); font-size: .52rem; font-weight: 700; letter-spacing: .09em; }
.admin-empty { padding: 15px 0; color: var(--muted); font-size: .7rem; }

@media (max-width: 900px) {
  .registration { grid-template-columns: 1fr; }
  .registration-art { min-height: 50px; }
  .sun { width: 90px; height: 90px; top: -58px; }
  .art-copy { left: 18px; bottom: 15px; }
  .art-copy .eyebrow { display: none; }
  .art-copy h1 { margin: 0; font-size: 1.1rem; line-height: 1; }
  .art-copy h1 br { display: none; }
  .art-copy h1 em { margin-left: .2em; }
  .art-copy p { display: none; }
  .registration-form-wrap { display: block; padding: 14px 24px 36px; }
  .registration-form { margin: 0 auto; }
  .registration-form > .muted { margin: 5px 0 14px; }
  .brand-mark { display: none; }
  .desktop-sidebar { display: none; }
  .app-main { margin-left: 0; padding-top: calc(68px + env(safe-area-inset-top)); padding-bottom: 74px; }
  .topbar { position: fixed; z-index: 20; inset: 0 0 auto; height: calc(68px + env(safe-area-inset-top)); display: flex; align-items: center; padding: calc(9px + env(safe-area-inset-top)) 17px 9px; border-bottom: 1px solid var(--line); background: rgba(245,239,227,.93); backdrop-filter: blur(15px); }
  .mini-logo { width: 38px; height: 38px; margin: 0 11px 0 0; border: 0; font-size: 1.25rem; cursor: pointer; }
  .topbar-title span, .topbar-title strong { display: block; }
  .topbar-title span { color: var(--rust); font-size: .53rem; font-weight: 700; letter-spacing: .14em; }
  .topbar-title strong { margin-top: 2px; font: 600 .95rem var(--serif); }
  .profile-button { margin-left: auto; padding: 0; border: 0; border-radius: 50%; background: transparent; cursor: pointer; }
  .bottom-nav { position: fixed; z-index: 20; inset: auto 0 0; height: calc(67px + env(safe-area-inset-bottom)); display: grid; grid-template-columns: repeat(5, 1fr); padding: 7px 8px env(safe-area-inset-bottom); border-top: 1px solid var(--line); background: rgba(255,250,241,.96); backdrop-filter: blur(15px); }
  .bottom-nav .nav-button { min-width: 0; display: flex; flex-direction: column; justify-content: center; gap: 2px; padding: 2px; color: var(--muted); text-align: center; font-size: .58rem; }
  .bottom-nav .nav-button .nav-icon { width: auto; font-size: 1.1rem; }
  .bottom-nav .nav-button.active { color: var(--rust); background: transparent; }
  .view { min-height: calc(100vh - 142px); padding: 20px 16px 35px; }
  .hero-card { height: 270px; padding: 22px; }
  .hero-content { margin-top: 72px; }
  .hero-content h1 { font-size: 2.75rem; }
  .section-heading { margin-top: 31px; }
  .action-grid { grid-template-columns: 1fr 1fr; }
  .action-card { min-height: 220px; }
  .chat-card { grid-column: 1 / -1; min-height: 200px; }
  .chat-card h3 br { display: none; }
  .home-note { margin-bottom: 10px; }
  #chat-view.active { height: calc(100dvh - 68px - env(safe-area-inset-top) - 67px - env(safe-area-inset-bottom)); min-height: 0; grid-template-columns: 1fr; padding: 0; }
  .room-list-panel { display: none; padding: 22px 14px; border: 0; }
  .chat-view.show-rooms .room-list-panel { display: block; }
  .chat-view.show-rooms .conversation { display: none; }
  .conversation { height: 100%; }
  .conversation-header { padding: 12px 14px; }
  .back-button { display: block; }
  .messages { padding: 12px 13px; }
  .composer { margin: 0 10px 10px; }
  .picker { margin: 0 10px 7px; }
  .attachment-preview { margin: 0 10px 7px; }
  .message-content { max-width: 82%; }
  .simple-view { padding-top: 30px; }
  .game-grid { grid-template-columns: 1fr; }
  .game-card { min-height: 220px; }
  .page-intro h1 { font-size: 3.2rem; }
  .house-card { min-height: 245px; }
  .schedule-days { margin: 24px 0 30px; gap: 3px; padding: 5px; }
  .schedule-day { padding: 9px 3px; }
  .schedule-day strong { font-size: 1.15rem; }
  .schedule-heading h2 { font-size: 1.65rem; }
  .byob-banner { margin-top: -12px; }
  .schedule-events::before { left: 20px; }
  .schedule-event { grid-template-columns: 42px 1fr; gap: 12px; padding: 20px 0; }
  .event-time { grid-column: 2; padding: 0; text-align: left; }
  .event-icon { grid-column: 1; grid-row: 1 / span 2; width: 41px; height: 41px; border-width: 4px; }
  .event-copy { grid-column: 2; padding-top: 0; }
  .assignments-board { grid-template-columns: 1fr; }
  .map-header { align-items: center; }
  .map-header h1 { font-size: 2.2rem; }
  .location-button { max-width: 150px; padding: 10px; font-size: .7rem; }
  .map-canvas { height: 60dvh; min-height: 0; border-width: 4px; }
  .map-home-card { grid-template-columns: auto 1fr; padding: 14px; }
  .map-home-card > strong { grid-column: 2; }
  .location-list { grid-template-columns: 1fr; }
  .admin-header { align-items: start; }
  .admin-header h1 { font-size: 2.25rem; }
  .admin-exit { padding: 10px; font-size: .62rem; }
  .admin-stats { grid-template-columns: 1fr 1fr; }
  .admin-columns { grid-template-columns: 1fr; }
  .admin-section { padding: 14px; }
  .admin-section-heading > span { display: none; }
  .quick-places-grid { display: flex; overflow-x: auto; margin-right: -16px; padding-right: 16px; scroll-snap-type: x mandatory; }
  .place-button { min-width: 190px; scroll-snap-align: start; }
  .stay-facts { grid-template-columns: 1fr 1fr; }
  .stay-facts .wifi-password { grid-column: span 2; }
  .stay-detail-body { padding: 2px 15px 15px; }
}

@media (max-width: 480px) {
  .registration-art { min-height: 44px; }
  .art-copy { left: 16px; bottom: 13px; }
  .art-copy h1 { font-size: 1rem; }
  .registration-form h2 { font-size: 2.25rem; }
  .hero-topline span:last-child { display: none; }
  .hero-card { height: 250px; }
  .action-card { min-height: 198px; padding: 18px; }
  .action-card h3 { font-size: 1.45rem; }
  .action-card p { display: none; }
  .chat-card { min-height: 180px; }
  .online-pill { font-size: .58rem; }
  .map-key span { max-width: 170px; }
  .voice-memo { min-width: 230px; }
  .voice-memo audio { width: 190px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; }
}
