:root {
  --red: #9e2f2f;
  --red-dark: #7f2024;
  --red-soft: #f4e8e5;
  --red-pale: #fbf5f2;
  --ink: #202329;
  --muted: #69717d;
  --line: #e5e2de;
  --paper: #fffdf9;
  --canvas: #f3f1ed;
  --green: #2d7557;
  --amber: #a66b17;
  --blue: #32627d;
  --shadow: 0 16px 40px rgba(72, 45, 35, .08);
  --serif: "Songti SC", "STSong", serif;
  --sans: "PingFang SC", "Microsoft YaHei", sans-serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; color: var(--ink); background: var(--canvas); font-family: var(--sans); }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }

.app-shell { min-height: 100vh; display: grid; grid-template-rows: 76px 1fr; }
.topbar { position: sticky; top: 0; z-index: 30; display: grid; grid-template-columns: 360px 1fr auto; align-items: center; height: 76px; padding: 0 34px; color: #fff; background: var(--red); box-shadow: 0 4px 18px rgba(93, 24, 27, .18); }
.brand { display: flex; gap: 12px; align-items: center; padding: 0; color: #fff; background: none; border: 0; text-align: left; }
.brand-logo-crop { position:relative; display:block; flex:0 0 54px; width:54px; height:46px; overflow:hidden; background:#fff; border-radius:5px; box-shadow:0 5px 15px rgba(48,9,12,.18); }
.brand-logo-crop img { position:absolute; top:0; left:-15px; width:auto; height:46px; max-width:none; }
.brand-copy { min-width:0; }
.brand strong { display: block; font-family: var(--serif); font-size: 17px; letter-spacing: .08em; white-space:nowrap; }
.brand small { display: block; margin-top: 2px; opacity: .72; font-size: 11px; letter-spacing: .12em; }
.topnav { display: flex; justify-content: center; align-self: stretch; gap: 32px; }
.topnav button { position: relative; border: 0; background: none; color: rgba(255,255,255,.72); padding: 0 4px; font-size: 15px; }
.topnav button:hover, .topnav button.active { color: #fff; }
.topnav button.active::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 3px; background: #fff; border-radius: 2px 2px 0 0; }
.nav-count { display: inline-grid; place-items: center; min-width: 18px; height: 18px; margin-left: 4px; padding: 0 5px; color: var(--red); background: #fff; border-radius: 9px; font-size: 10px; font-weight: 700; }
.top-actions { display: flex; align-items: center; gap: 10px; }
.portal-button { display:flex; align-items:center; gap:7px; min-height:36px; padding:0 13px; color:#fff; background:rgba(255,255,255,.12); border:1px solid rgba(255,255,255,.38); border-radius:7px; font-size:12px; }
.portal-button:hover { background:#fff; color:var(--red); }
.portal-button[hidden] { display:none; }
.portal-button span { font-size:15px; }.portal-button b { font-weight:600; }
.management-mode .topbar { background:#762529; }
.icon-button, .profile-button { color: #fff; background: transparent; border: 0; }
.icon-button { position: relative; display: grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; }
.icon-button:hover, .profile-button:hover { background: rgba(255,255,255,.1); }
.icon-button i { position: absolute; top: 8px; right: 9px; width: 7px; height: 7px; background: #ffd59b; border: 2px solid var(--red); border-radius: 50%; }
.profile-button { display: flex; align-items: center; gap: 9px; padding: 6px 10px; border-radius: 8px; text-align: left; }
.profile-button svg { width: 15px; }
.avatar { display: grid; place-items: center; width: 30px; height: 30px; color: var(--red); background: #fff; border-radius: 50%; font-weight: 700; }
.avatar.student, .profile-avatar.student { color: #245d78; background: #eaf5fa; }
.role-copy { display: grid; gap: 1px; min-width: 92px; }
.role-copy strong { font-size: 13px; }
.role-copy small { color: rgba(255,255,255,.7); font-size: 10px; }
.role-switcher { position: relative; }
.role-menu { position: absolute; top: calc(100% + 10px); right: 0; width: 250px; padding: 7px; color: var(--ink); background: #fff; border: 1px solid var(--line); border-radius: 11px; box-shadow: 0 18px 50px rgba(54,24,24,.18); }
.role-menu[hidden] { display: none; }
.role-menu::before { content:""; position:absolute; top:-6px; right:26px; width:11px; height:11px; background:#fff; border-left:1px solid var(--line); border-top:1px solid var(--line); transform:rotate(45deg); }
.role-menu button { position:relative; z-index:1; display:grid; grid-template-columns:36px 1fr auto; align-items:center; gap:10px; width:100%; padding:10px; text-align:left; color:var(--ink); background:transparent; border:0; border-radius:8px; }
.role-menu button:hover, .role-menu button.selected { background: var(--red-pale); }
.role-menu button span:nth-child(2) { display:grid; gap:3px; }
.role-menu button b { font-size:13px; }
.role-menu button small { color:var(--muted); font-size:10px; }
.role-menu button i { visibility:hidden; color:var(--red); font-style:normal; font-weight:700; }
.role-menu button.selected i { visibility:visible; }

.sidebar { grid-row: 2; position: sticky; top: 76px; height: calc(100vh - 76px); display: flex; flex-direction: column; padding: 26px 16px 18px; background: #fff; border-right: 1px solid var(--line); }
.sidebar button { display: grid; grid-template-columns: 28px 1fr auto; align-items: center; gap: 8px; width: 100%; margin-bottom: 4px; padding: 12px 14px; text-align: left; color: #555d68; background: transparent; border: 0; border-radius: 8px; transition: .18s ease; }
.sidebar button:hover { color: var(--red); background: var(--red-pale); transform: translateX(2px); }
.sidebar button.active { color: var(--red); background: var(--red-soft); font-weight: 600; }
.sidebar button b { display: grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; color: #fff; background: var(--red); font-size: 11px; }
.side-icon { display: grid; place-items: center; width: 26px; height: 26px; border: 1px solid currentColor; border-radius: 7px; font-size: 15px; }
.side-label { margin: 10px 14px 8px; color: #aaa39c; font-size: 11px; letter-spacing: .16em; }
.side-footer { margin-top: auto; padding: 16px 14px 4px; border-top: 1px solid var(--line); color: var(--muted); font-size: 11px; }
.side-footer strong { display: flex; align-items: center; gap: 7px; margin-top: 7px; color: var(--green); font-weight: 600; }
.side-footer i { width: 7px; height: 7px; background: #53a477; border-radius: 50%; box-shadow: 0 0 0 4px #e4f4ea; }

#app { min-width: 0; padding: 30px 36px 54px; outline: none; }
.page { max-width: 1460px; margin: 0 auto; animation: pageIn .42s ease both; }
@keyframes pageIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
.page-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; margin-bottom: 24px; }
.eyebrow { margin: 0 0 7px; color: var(--red); font-size: 12px; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; }
h1, h2, h3, p { margin-top: 0; }
h1 { margin-bottom: 4px; font-family: var(--serif); font-size: clamp(26px, 3vw, 38px); letter-spacing: .01em; }
h2 { font-family: var(--serif); font-size: 21px; }
.page-sub { margin: 0; color: var(--muted); font-size: 14px; }
.header-actions { display: flex; gap: 10px; }
.primary, .secondary, .ghost, .danger { min-height: 40px; padding: 0 18px; border-radius: 7px; border: 1px solid transparent; font-weight: 600; transition: .18s ease; }
.primary { color: #fff; background: var(--red); box-shadow: 0 8px 18px rgba(158,47,47,.2); }
.primary:hover { background: var(--red-dark); transform: translateY(-1px); }
.primary:disabled { cursor: not-allowed; opacity: .42; box-shadow: none; transform: none; }
.secondary { color: var(--red); background: #fff; border-color: #d9b6b2; }
.secondary:hover { background: var(--red-pale); }
.ghost { color: var(--muted); background: transparent; border-color: var(--line); }
.ghost:hover { color: var(--ink); background: #fff; }
.danger { color: #fff; background: #7e2c2c; }
.small { min-height: 34px; padding: 0 13px; font-size: 12px; }

.hero { position: relative; overflow: hidden; min-height: 300px; display: grid; grid-template-columns: 1.05fr .95fr; align-items: center; padding: 46px 48px; color: #fff; background: linear-gradient(125deg, #84272a 0%, #a53838 58%, #b54b3c 100%); border-radius: 18px; box-shadow: var(--shadow); }
.hero::before { content: ""; position: absolute; inset: 0; opacity: .18; background-image: linear-gradient(rgba(255,255,255,.22) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.16) 1px, transparent 1px); background-size: 38px 38px; mask-image: linear-gradient(90deg,#000,transparent 65%); }
.hero-copy { position: relative; z-index: 2; max-width: 600px; }
.hero-kicker { color: #ffd9c4; font-size: 12px; letter-spacing: .2em; }
.hero h1 { margin: 12px 0 14px; font-size: clamp(32px,4.2vw,54px); line-height: 1.17; }
.hero p { max-width: 540px; color: rgba(255,255,255,.78); line-height: 1.8; }
.hero-actions { display: flex; gap: 12px; margin-top: 24px; }
.hero .primary { color: var(--red); background: #fff; }
.hero .secondary { color: #fff; background: transparent; border-color: rgba(255,255,255,.42); }
.campus-art { position: relative; align-self: stretch; min-height: 230px; }
.sun { position: absolute; right: 10%; top: 8%; width: 74px; height: 74px; background: rgba(255,221,176,.85); border-radius: 50%; box-shadow: 0 0 0 18px rgba(255,255,255,.06); }
.tower { position: absolute; right: 7%; bottom: 16%; width: 64%; height: 64%; transform: skewY(-5deg); background: linear-gradient(155deg, rgba(255,255,255,.92), rgba(255,255,255,.48)); clip-path: polygon(8% 22%, 100% 0, 92% 100%, 0 100%); box-shadow: -20px 16px 36px rgba(71,10,14,.22); }
.tower::after { content: ""; position: absolute; inset: 18% 7% 12% 12%; background: repeating-linear-gradient(0deg, rgba(83,111,124,.72) 0 4px, rgba(255,255,255,.32) 4px 14px); clip-path: polygon(0 18%,100% 0,94% 100%,0 100%); }
.wing { position: absolute; right: 35%; bottom: 8%; width: 56%; height: 34%; background: rgba(255,255,255,.92); clip-path: polygon(0 38%, 88% 0,100% 100%,4% 100%); }
.wing::after { content: ""; position: absolute; inset: 44% 8% 12% 6%; background: repeating-linear-gradient(90deg, rgba(101,132,143,.6) 0 9%, transparent 9% 13%); }
.ground { position: absolute; left: 2%; right: 0; bottom: 0; height: 18%; background: linear-gradient(90deg,#54724e,#789164); clip-path: polygon(0 40%,100% 0,100% 100%,0 100%); }

.metric-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 14px; margin: 18px 0 26px; }
.metric { position: relative; overflow: hidden; padding: 20px; background: var(--paper); border: 1px solid var(--line); border-radius: 12px; }
.metric::after { content: ""; position: absolute; width: 60px; height: 60px; right: -18px; bottom: -22px; border: 10px solid var(--red-soft); border-radius: 50%; }
.metric span { color: var(--muted); font-size: 12px; }
.metric strong { display: block; margin: 7px 0 3px; font-family: var(--serif); font-size: 28px; }
.metric small { color: var(--green); }
.content-grid { display: grid; grid-template-columns: 1.35fr .65fr; gap: 18px; }
.panel { background: var(--paper); border: 1px solid var(--line); border-radius: 12px; box-shadow: 0 6px 26px rgba(72,45,35,.035); }
.panel-head { display: flex; align-items: center; justify-content: space-between; padding: 19px 20px 13px; }
.panel-head h2 { margin: 0; font-size: 18px; }
.text-link { color: var(--red); background: none; border: 0; font-size: 12px; }
.list { padding: 0 12px 12px; }
.list-row { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 14px; padding: 14px 8px; border-top: 1px solid var(--line); }
.date-tile { width: 50px; padding: 7px 0; text-align: center; color: var(--red); background: var(--red-soft); border-radius: 8px; }
.date-tile strong { display: block; font-size: 18px; }
.date-tile small { font-size: 10px; }
.list-row h3 { margin: 0 0 4px; font-size: 14px; }
.list-row p { margin: 0; color: var(--muted); font-size: 12px; }
.status { display: inline-flex; align-items: center; gap: 5px; padding: 5px 9px; border-radius: 14px; font-size: 11px; white-space: nowrap; }
.status::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.status.pass { color: var(--green); background: #e9f4ee; }
.status.pending { color: var(--amber); background: #faf1df; }
.status.draft { color:#606c79; background:#edf1f5; }
.status.risk { color: var(--red); background: var(--red-soft); }
.quick-grid { display: grid; grid-template-columns: repeat(2,1fr); gap: 10px; padding: 0 16px 16px; }
.quick-card { min-height: 104px; padding: 16px; text-align: left; background: #fff; border: 1px solid var(--line); border-radius: 9px; transition: .18s; }
.quick-card:hover { border-color: #c98d87; transform: translateY(-2px); box-shadow: var(--shadow); }
.quick-card b { display: block; margin-bottom: 10px; color: var(--red); font-size: 19px; }
.quick-card span { display: block; font-weight: 600; }
.quick-card small { color: var(--muted); }
.quick-grid.compact { grid-template-columns: 1fr; }

.management-banner { display:flex; align-items:center; justify-content:space-between; gap:24px; margin-bottom:18px; padding:24px 28px; color:#fff; background:linear-gradient(115deg,#752529,#a23a36); border-radius:12px; box-shadow:var(--shadow); }
.management-banner small { color:#efb9ab; letter-spacing:.17em; }
.management-banner h2 { margin:6px 0; font-size:24px; }.management-banner p { margin:0; color:rgba(255,255,255,.7); font-size:12px; }
.management-banner .primary { color:var(--red); background:#fff; }
.management-row { width:100%; color:var(--ink); background:transparent; border:0; border-top:1px solid var(--line); text-align:left; }
.management-filter { display:grid; grid-template-columns:1.4fr .7fr .8fr auto; gap:10px; margin-bottom:16px; padding:14px; background:#fff; border:1px solid var(--line); border-radius:10px; }
.management-filter input, .management-filter select { min-height:42px; padding:0 12px; background:#fff; border:1px solid #d9d5d0; border-radius:6px; }
.management-list { display:grid; gap:10px; }
.management-list article { display:grid; grid-template-columns:minmax(220px,1fr) minmax(250px,.9fr) auto auto; gap:22px; align-items:center; padding:18px 20px; background:#fff; border:1px solid var(--line); border-left:4px solid var(--red); border-radius:9px; box-shadow:0 6px 22px rgba(54,40,35,.035); }
.management-list h3 { margin:4px 0; font-size:15px; }.management-list p,.management-list small,.management-list span:not(.status) { margin:0; color:var(--muted); font-size:11px; }
.management-list article > div:nth-child(2) { display:grid; gap:5px; }.management-list article > div:nth-child(2) b { font-size:12px; }
.management-detail { overflow:hidden; background:#fff; border:1px solid var(--line); border-radius:12px; box-shadow:var(--shadow); }
.management-detail > header { display:flex; align-items:center; justify-content:space-between; padding:24px 28px; color:#fff; background:linear-gradient(115deg,#762529,#9e2f2f); }
.management-detail > header small { opacity:.68; }.management-detail > header h2 { margin:6px 0 4px; }.management-detail > header p { margin:0; opacity:.7; font-size:11px; }
.management-detail > header .status { color:#fff; background:rgba(255,255,255,.14); }
.detail-section { padding:22px 28px; border-bottom:1px solid var(--line); }.detail-section h3 { margin:0 0 16px; color:var(--red); font-size:14px; }
.detail-fields { display:grid; grid-template-columns:repeat(4,1fr); gap:16px; }.detail-fields.full { grid-template-columns:1.5fr 1fr; }
.detail-fields div { display:grid; gap:6px; padding:13px 15px; background:#f7f5f2; border-radius:7px; }.detail-fields span { color:var(--muted); font-size:10px; }.detail-fields b { font-size:12px; line-height:1.6; }
.management-detail > footer { display:flex; justify-content:flex-end; gap:10px; padding:20px 28px; }

/* Management workspace — restrained operational console */
.management-mode { --canvas:#f4f5f6; --paper:#fff; --line:#e4e7eb; }
.management-mode .topbar { background:#18232d; box-shadow:none; border-bottom:1px solid #293742; }
.management-mode .topnav button.active::after { background:#d14943; }
.management-mode .nav-count { color:#fff; background:#a93636; }
.management-mode #app { padding:0 0 64px; background:#f4f5f6; }
.management-shell { display:grid; grid-template-columns:248px minmax(0,1fr); min-height:calc(100vh - 76px); }
.management-sidebar { position:sticky; top:76px; align-self:start; display:flex; flex-direction:column; height:calc(100vh - 76px); padding:0 14px 20px; color:#d8dde2; background:#1f2b35; border-right:1px solid #303c46; }
.management-side-head { display:flex; align-items:center; gap:11px; min-height:76px; padding:0 13px; border-bottom:1px solid rgba(255,255,255,.08); }
.management-side-head > span { display:grid; place-items:center; width:34px; height:34px; color:#fff; background:#9c3435; border-radius:4px 12px 4px 12px; font-family:var(--serif); font-size:17px; font-weight:700; }
.management-side-head > div { display:grid; gap:3px; }
.management-side-head b { color:#fff; font-size:14px; }
.management-side-head small { color:#89959f; font-size:10px; letter-spacing:.08em; }
.management-menu-group { padding-top:22px; }
.management-menu-parent { display:grid; grid-template-columns:22px 1fr auto; align-items:center; gap:8px; min-height:40px; padding:0 13px; color:#aab3bb; font-size:12px; }
.management-menu-parent > span { color:#d9dde1; font-size:15px; }
.management-menu-parent b { color:#d9dde1; font-size:13px; font-weight:600; }
.management-menu-parent i { color:#687680; font-size:9px; font-style:normal; }
.management-submenu { display:grid; gap:4px; margin-top:5px; padding-left:18px; }
.management-submenu button { display:grid; grid-template-columns:10px 1fr auto; align-items:center; gap:9px; min-height:44px; padding:0 13px; color:#aeb7bf; background:transparent; border:0; border-radius:4px; text-align:left; transition:.16s ease; }
.management-submenu button > i { width:5px; height:5px; background:#66747f; border-radius:50%; }
.management-submenu button:hover { color:#fff; background:rgba(255,255,255,.055); }
.management-submenu button.active { color:#fff; background:#34424d; box-shadow:inset 3px 0 0 #d14d48; }
.management-submenu button.active > i { background:#e15b55; box-shadow:0 0 0 4px rgba(225,91,85,.13); }
.management-submenu em { display:grid; place-items:center; min-width:21px; height:21px; padding:0 5px; color:#fff; background:#a93636; border-radius:11px; font-size:10px; font-style:normal; }
.management-side-note { display:grid; gap:6px; margin:auto 10px 0; padding:15px 12px; color:#9aa5ae; background:rgba(255,255,255,.035); border:1px solid rgba(255,255,255,.07); font-size:10px; }
.management-side-note b { color:#d8dde2; font-size:11px; }
.management-side-note small { color:#6f7d87; }
.management-main { min-width:0; }
.admin-page { max-width:none; }
.admin-breadcrumb { display:flex; align-items:center; gap:11px; min-height:76px; padding:0 38px; color:#8a9098; background:#fff; border-bottom:1px solid #eceef0; font-size:14px; }
.admin-breadcrumb i { color:#c7cbd0; font-style:normal; }
.admin-breadcrumb b { color:#3b4148; font-weight:600; }
.admin-breadcrumb button { padding:0; color:#747a82; background:none; border:0; }
.admin-breadcrumb button:hover { color:var(--red); }
.admin-filter-card { margin-top:14px; padding:30px 38px 24px; background:#fff; border-top:1px solid #eceef0; border-bottom:1px solid #eceef0; }
.admin-filter-grid { display:grid; grid-template-columns:1.35fr repeat(3,minmax(220px,1fr)); gap:22px 26px; }
.admin-filter-grid > label, .approval-filter-grid > label { display:grid; grid-template-columns:78px minmax(0,1fr); align-items:center; gap:10px; color:#5d636b; font-size:13px; }
.admin-filter-grid input, .admin-filter-grid select, .approval-filter-grid input, .approval-filter-grid select { min-width:0; width:100%; height:46px; padding:0 13px; color:#30353b; background:#fff; border:1px solid #dfe2e6; border-radius:4px; outline:none; }
.admin-filter-grid input:focus, .admin-filter-grid select:focus, .approval-filter-grid input:focus, .approval-filter-grid select:focus { border-color:#b54b48; box-shadow:0 0 0 3px rgba(158,47,47,.08); }
.range-input { display:grid; grid-template-columns:1fr 24px 1fr; align-items:center; min-width:0; }
.range-input input { min-width:0; }
.range-input i { color:#8b9096; font-style:normal; text-align:center; }
.admin-status-row { display:grid; grid-template-columns:78px 1fr; gap:10px; align-items:start; margin-top:24px; color:#5d636b; font-size:13px; }
.admin-status-row > span { padding-top:5px; }
.admin-status-row > div { display:flex; flex-wrap:wrap; gap:12px 28px; }
.admin-status-row label { display:flex; align-items:center; gap:8px; color:#4f555d; cursor:pointer; }
.admin-status-row input, .admin-table input[type="checkbox"] { width:16px; height:16px; accent-color:var(--red); }
.admin-query-actions { display:flex; justify-content:center; gap:12px; margin-top:28px; }
.admin-query-actions .primary, .admin-query-actions .secondary { min-width:86px; border-radius:4px; box-shadow:none; }
.admin-table-card { margin-top:14px; padding:0 28px 16px; background:#fff; border-top:1px solid #eceef0; border-bottom:1px solid #eceef0; }
.admin-table-toolbar { display:flex; align-items:center; justify-content:space-between; min-height:72px; gap:20px; }
.admin-table-toolbar > div { display:flex; align-items:center; gap:12px; }
.admin-table-toolbar b { color:#343a41; font-size:16px; }
.admin-table-toolbar span, .admin-table-toolbar small { color:#969ba2; font-size:12px; }
.admin-table-scroll { overflow-x:auto; border:1px solid #e4e7eb; }
.admin-table { width:100%; min-width:1480px; border-collapse:collapse; table-layout:fixed; background:#fff; }
.admin-table th, .admin-table td { padding:14px 13px; text-align:left; border-right:1px solid #edf0f2; border-bottom:1px solid #edf0f2; color:#60666e; font-size:12px; line-height:1.55; vertical-align:middle; }
.admin-table th { height:52px; color:#777e87; background:#fafbfc; font-weight:600; white-space:nowrap; }
.admin-table th:first-child, .admin-table td:first-child { width:48px; text-align:center; }
.admin-table th:nth-child(2) { width:145px; }
.admin-table th:nth-child(3), .admin-table th:nth-child(4) { width:96px; }
.admin-table th:nth-child(5) { width:155px; }
.admin-table th:nth-child(6) { width:170px; }
.admin-table th:nth-child(7), .admin-table th:nth-child(8) { width:105px; }
.admin-table th:nth-child(9) { width:112px; }
.admin-table th:nth-child(10) { width:130px; }
.admin-table th:nth-last-child(2) { width:105px; }
.admin-table th:last-child { width:72px; }
.reservation-admin-table { min-width:1900px; }
.reservation-admin-table th:nth-child(11) { width:110px; }
.reservation-admin-table th:nth-child(12) { width:105px; }
.reservation-admin-table th:last-child { width:315px; }
.admin-table tbody tr:hover td, .admin-table tbody tr.selected td { background:#fbf6f5; }
.admin-table tbody tr.selected td:first-child { box-shadow:inset 3px 0 0 var(--red); }
.admin-table code { color:#8b3a3c; background:transparent; font-family:"SFMono-Regular",Consolas,monospace; font-size:11px; }
.admin-table td b { color:#30353b; font-weight:600; }
.cell-ellipsis { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.table-link { padding:4px 0; color:var(--red); background:none; border:0; font-weight:600; }
.table-link:hover { text-decoration:underline; }
.table-actions { display:flex; align-items:center; flex-wrap:wrap; gap:7px; }
.table-actions button { min-height:27px; padding:3px 8px; color:#7d292c; background:#fff; border:1px solid #cda7a4; border-radius:3px; font-size:11px; white-space:nowrap; }
.table-actions button:hover { color:#fff; background:#8d3032; border-color:#8d3032; }
.table-actions button.warning { color:#94621c; border-color:#dec79f; }
.table-actions button.warning:hover { color:#fff; background:#a46d1c; border-color:#a46d1c; }
.table-actions button.danger { color:#a33134; border-color:#d9a7a5; }
.table-actions button.danger:hover { color:#fff; background:#b43639; border-color:#b43639; }
.attendance-badge { display:inline-flex; align-items:center; min-height:26px; padding:3px 9px; border-radius:3px; font-size:11px; font-weight:600; white-space:nowrap; }
.attendance-badge.has { color:#296c50; background:#e8f4ed; }
.attendance-badge.none { color:#8b9096; background:#eef0f2; }
.table-empty { padding:40px; color:#a0a5ac; text-align:center; }
.admin-pagination { display:flex; justify-content:center; align-items:center; gap:10px; padding:22px 0 6px; color:#8d9299; font-size:12px; }
.admin-pagination button { min-width:30px; height:30px; color:#737980; background:#fff; border:1px solid #e1e4e8; border-radius:3px; }
.admin-pagination button.active { color:#fff; background:var(--red); border-color:var(--red); }
.admin-pagination button:disabled { opacity:.35; cursor:not-allowed; }
.approval-filter-grid { display:grid; grid-template-columns:1.35fr repeat(3,minmax(220px,1fr)); gap:24px; }
.approval-center { padding-top:0; }
.approval-tabs { display:flex; gap:34px; height:70px; align-items:flex-end; border-bottom:1px solid #e4e7eb; }
.approval-tabs button { position:relative; height:54px; padding:0 4px; color:#555b62; background:none; border:0; font-size:14px; font-weight:600; }
.approval-tabs button.active { color:var(--red); }
.approval-tabs button.active::after { content:""; position:absolute; left:0; right:0; bottom:0; height:3px; background:var(--red); }
.approval-tabs em { display:inline-grid; place-items:center; min-width:19px; height:19px; margin-left:6px; padding:0 5px; color:#fff; background:var(--red); border-radius:10px; font-size:10px; font-style:normal; }
.approval-center .admin-table-scroll { margin-top:22px; }
.approval-table { min-width:1320px; }
.approval-table th:nth-child(2) { width:150px; }
.approval-table th:nth-child(5) { width:180px; }
.approval-table th:nth-child(6) { width:190px; }
.approval-table th:nth-child(7) { width:170px; }
.approval-table th:nth-child(8) { width:125px; }
.risk-label { display:inline-flex; align-items:center; min-height:26px; padding:3px 9px; border-radius:3px; font-size:11px; font-weight:600; white-space:nowrap; }
.risk-label.low { color:#2f7458; background:#eaf5ef; }
.risk-label.medium { color:#9a681c; background:#fbf1df; }
.risk-label.high { color:#a23133; background:#f8e8e7; }
.inline-review-detail { margin:14px 28px 0; background:#fff; border:1px solid #e1e4e8; }
.inline-review-detail > header { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:20px 24px; border-bottom:1px solid #e7e9ec; }
.inline-review-detail header small { color:var(--red); font-size:11px; }
.inline-review-detail header h2 { margin:5px 0; font-family:var(--sans); font-size:19px; }
.inline-review-detail header p { margin:0; color:#858b92; font-size:12px; }
.inline-review-grid { display:grid; grid-template-columns:1.25fr .75fr; gap:28px; padding:24px; }
.review-decision { padding-left:28px; border-left:1px solid #e7e9ec; }
.review-decision textarea[readonly] { color:#6d737b; background:#f7f8f9; }
.processed-note { margin-top:14px; padding:12px; color:#5b626a; background:#f5f6f7; border-left:3px solid #76818c; font-size:12px; line-height:1.7; }
.admin-detail { margin:14px 38px 0; border-radius:0; box-shadow:none; }
.admin-detail > header { background:#7d292c; }
.detail-fields.detail-fields-wide { grid-template-columns:1fr 1fr; margin-top:16px; }
.full-application .detail-fields b { word-break:break-word; }

/* Scenario booking rules */
.rule-intro { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:26px 38px 20px; background:#fff; }
.rule-intro small { color:#9b3839; font-size:10px; font-weight:700; letter-spacing:.18em; }
.rule-intro h1 { margin:6px 0 5px; font-size:24px; }
.rule-intro p { margin:0; color:#7c838a; font-size:12px; line-height:1.6; }
.rule-intro > span { flex:0 0 auto; padding:7px 11px; color:#803033; background:#f8eeec; border:1px solid #edd8d5; font-size:11px; }
.rule-filter-card { display:flex; align-items:center; gap:12px; margin-top:14px; padding:22px 38px; }
.rule-filter-card label { color:#60666d; font-size:12px; }
.rule-filter-card input { width:min(360px,100%); height:42px; padding:0 12px; border:1px solid #dce0e4; border-radius:4px; outline:none; }
.rule-filter-card input:focus { border-color:#a04647; box-shadow:0 0 0 3px rgba(160,70,71,.1); }
.rule-filter-card button { min-height:42px; border-radius:4px; box-shadow:none; }
.rule-list-card { padding:0 28px 14px; }
.rule-list-toolbar { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:20px 0 16px; }
.rule-list-toolbar > div { display:grid; gap:4px; }
.rule-list-toolbar b { color:#343a40; font-size:15px; }
.rule-list-toolbar span { color:#91979e; font-size:11px; }
.rule-list-toolbar button { border-radius:4px; box-shadow:none; }
.rule-table { min-width:1260px; }
.rule-table th,.rule-table td { width:auto !important; }
.rule-table th:nth-child(1) { width:170px !important; }
.rule-table th:nth-child(7) { width:190px !important; }
.rule-table th:last-child { width:110px !important; }
.rule-table td:first-child,.rule-table th:first-child { text-align:left; }
.rule-table td small { display:block; margin-top:4px; color:#999fa6; font-size:10px; }
.modal:has(.rule-modal) { width:min(1160px,100%); border-radius:6px; background:#fff; }
.modal:has(.rule-modal) .modal-close { color:#5d636a; background:#f1f2f3; }
.rule-modal > header { padding:23px 62px 20px 30px; border-bottom:1px solid #e6e9ec; }
.rule-modal > header small { color:#9c3739; font-size:10px; font-weight:700; letter-spacing:.14em; }
.rule-modal > header h2 { margin:6px 0; font-size:23px; }
.rule-modal > header p { margin:0; color:#878d94; font-size:11px; }
.rule-form section { padding:22px 30px 25px; border-bottom:1px solid #eaedef; }
.rule-form section h3 { display:flex; justify-content:space-between; margin:0 0 18px; color:#3d444b; font-size:14px; }
.rule-form section h3 small { color:#9da3a9; font-size:10px; font-weight:400; }
.rule-form-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px 18px; }
.rule-field { display:grid; align-content:start; gap:7px; min-width:0; }
.rule-field > span { color:#555d65; font-size:11px; font-weight:600; }
.rule-field-heading { display:flex; align-items:center; justify-content:space-between; gap:8px; min-height:16px; color:#555d65; font-size:11px; font-weight:600; }
.rule-help-wrap { position:relative; display:inline-flex; flex:none; }
.rule-help-icon { display:grid; place-items:center; width:17px; height:17px; padding:0; border:1px solid #a5aeb7; border-radius:50%; color:#66717c; background:#fff; font-size:11px; font-weight:700; line-height:1; cursor:help; }
.rule-help-icon:hover,.rule-help-icon:focus-visible { color:#963b3d; border-color:#963b3d; outline:2px solid rgba(150,59,61,.16); outline-offset:2px; }
.rule-help-tooltip { position:absolute; z-index:20; right:0; bottom:calc(100% + 8px); width:max-content; max-width:min(260px,70vw); padding:8px 11px; border-radius:5px; color:#fff; background:#333b43; box-shadow:0 8px 22px rgba(32,39,45,.18); font-size:12px; font-weight:400; line-height:1.5; opacity:0; visibility:hidden; pointer-events:none; transform:translateY(4px); transition:opacity .16s,transform .16s,visibility .16s; }
.rule-help-wrap:hover .rule-help-tooltip,.rule-help-wrap:focus-within .rule-help-tooltip { opacity:1; visibility:visible; transform:translateY(0); }
.rule-field i,.rule-scene-picker i { color:#c83b3d; font-style:normal; }
.rule-field input,.rule-field select { width:100%; min-width:0; height:41px; padding:0 11px; color:#343b42; background:#fff; border:1px solid #dbe0e4; border-radius:4px; outline:none; }
.rule-field input:focus,.rule-field select:focus { border-color:#a34647; box-shadow:0 0 0 3px rgba(160,70,71,.08); }
.rule-number { display:grid; grid-template-columns:minmax(0,1fr) 52px; }
.rule-number input { border-radius:4px 0 0 4px; }
.rule-number em { display:grid; place-items:center; color:#858d95; background:#f6f7f8; border:1px solid #dbe0e4; border-left:0; border-radius:0 4px 4px 0; font-size:10px; font-style:normal; }
.rule-flags { display:flex; flex-wrap:wrap; gap:10px 22px; margin-bottom:20px; }
.rule-flags label,.rule-scene-types label { display:flex; align-items:center; gap:7px; color:#5b636b; font-size:11px; cursor:pointer; }
.rule-flags input,.rule-scene-picker input { accent-color:#9b3638; }
.rule-scene-picker { margin-top:22px; padding:17px 18px; background:#faf8f6; border:1px solid #eee7e4; }
.rule-scene-picker b { color:#434a51; font-size:12px; }
.rule-scene-picker p { margin:5px 0 13px; color:#979da3; font-size:10px; }
.rule-scene-types { display:flex; flex-wrap:wrap; gap:9px; }
.rule-scene-types label { min-height:35px; padding:0 11px; background:#fff; border:1px solid #e1e3e5; border-radius:3px; }
.rule-scene-types label:has(input:checked) { color:#8d3032; background:#f9efed; border-color:#d6aaa4; }
.booking-rule-rooms { display:grid; gap:14px; margin-top:17px; }
.booking-rule-room-empty { padding:18px; color:#8e969e; background:#fff; border:1px dashed #dce1e4; font-size:11px; text-align:center; }
.booking-rule-room-group { overflow:hidden; background:#fff; border:1px solid #e0e4e7; }
.booking-rule-room-group header { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:11px 13px; background:#f5f6f7; }
.booking-rule-room-group header div { display:flex; align-items:baseline; gap:10px; }
.booking-rule-room-group header span,.booking-rule-room-group header em { color:#8b9299; font-size:10px; font-style:normal; }
.booking-rule-room-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:9px; padding:12px; }
.booking-rule-room-grid label { display:flex; align-items:center; gap:9px; min-height:52px; padding:8px 10px; background:#fff; border:1px solid #e3e7ea; cursor:pointer; }
.booking-rule-room-grid label.selected { border-color:#bd8582; background:#fff6f3; }
.booking-rule-room-grid label span { display:grid; gap:3px; min-width:0; }
.booking-rule-room-grid label b { overflow:hidden; font-size:11px; text-overflow:ellipsis; white-space:nowrap; }
.booking-rule-room-grid label small { color:#92999f; font-size:10px; }
.rule-form footer { display:flex; align-items:center; justify-content:space-between; gap:18px; padding:18px 30px; background:#fafbfb; }
.rule-form footer > span { color:#999fa5; font-size:10px; }
.rule-form footer > div { display:flex; gap:10px; }
.rule-form footer button { min-height:40px; border-radius:4px; box-shadow:none; }

/* Credit policy follows the management table language while selecting actual resources. */
.credit-rule-table { min-width:1320px; }
.credit-rule-table th,.credit-rule-table td { width:auto !important; text-align:left; }
.credit-rule-table th:first-child { width:170px !important; }
.credit-rule-table th:nth-child(6) { width:230px !important; }
.credit-rule-table th:last-child { width:120px !important; }
.credit-scenes-cell { max-width:240px; line-height:1.65; }
.modal:has(.credit-rule-modal) { width:min(1050px,100%); border-radius:6px; background:#fff; }
.credit-rule-modal > header { padding:23px 62px 20px 30px; border-bottom:1px solid #e6e9ec; }
.credit-rule-modal > header small { color:#9c3739; font-size:10px; font-weight:700; letter-spacing:.14em; }
.credit-rule-modal > header h2 { margin:6px 0; font-size:23px; }
.credit-rule-modal > header p { margin:0; color:#878d94; font-size:11px; }
.credit-rule-fields { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:17px 23px; padding:25px 30px; }
.credit-rule-association { padding:20px 30px 27px; border-top:1px solid #e8ebee; }
.credit-rule-association-head { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; margin-bottom:13px; }
.credit-rule-association-head b { color:#41484f; font-size:13px; }
.credit-rule-association-head i { color:#c83b3d; font-style:normal; }
.credit-rule-association-head p { margin:5px 0 0; color:#939ba3; font-size:10px; }
.credit-rule-association-head > span { max-width:50%; color:#925154; font-size:10px; text-align:right; }
.credit-rule-types { display:flex; gap:7px; overflow-x:auto; padding:0 0 11px; scrollbar-width:thin; }
.credit-rule-types button { flex:0 0 auto; min-height:33px; padding:0 11px; color:#667079; background:#fff; border:1px solid #dfe3e6; border-radius:3px; font-size:11px; }
.credit-rule-types button.active { color:#fff; background:#903638; border-color:#903638; }
.credit-rule-room-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:9px; max-height:230px; overflow-y:auto; padding:12px; background:#fafbfb; border:1px solid #e4e8eb; }
.credit-rule-room-grid label { display:flex; align-items:center; gap:8px; min-height:51px; padding:8px 10px; background:#fff; border:1px solid #e1e5e8; cursor:pointer; }
.credit-rule-room-grid label.selected { border-color:#bd8582; background:#fff5f2; }
.credit-rule-room-grid input { accent-color:#9b3638; }
.credit-rule-room-grid label span { display:grid; gap:2px; min-width:0; }
.credit-rule-room-grid label b { overflow:hidden; font-size:11px; text-overflow:ellipsis; white-space:nowrap; }
.credit-rule-room-grid label small { color:#92999f; font-size:10px; }
.credit-rule-modal footer { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:18px 30px; background:#fafbfb; }
.credit-rule-modal footer > span { color:#999fa5; font-size:10px; }
.credit-rule-modal footer > div { display:flex; gap:10px; }
.credit-rule-modal footer button { min-height:40px; border-radius:4px; box-shadow:none; }

/* One organization-style resource tree shared by all rule editors. */
.resource-tree { overflow:hidden; color:#3c434a; background:#fff; border:1px solid #dde2e6; border-radius:4px; }
.resource-tree-head { display:flex; align-items:center; justify-content:space-between; gap:12px; min-height:58px; padding:10px 16px; background:#f5f6f7; border-bottom:1px solid #e5e8eb; }
.resource-tree-head > div { display:grid; gap:4px; }
.resource-tree-head b { color:#373d44; font-size:12px; }
.resource-tree-head span { color:#929aa1; font-size:10px; }
.resource-tree-head strong { flex:0 0 auto; color:#903638; font-size:11px; }
.resource-tree-scroll { max-height:390px; overflow:auto; padding:6px 12px 12px; scrollbar-color:#cbd1d5 transparent; scrollbar-width:thin; }
.tree-children { margin-left:23px; padding-left:12px; border-left:1px solid #e2e6e9; }
.resource-tree-row { display:flex; align-items:center; gap:5px; min-height:39px; padding:2px 9px 2px 3px; border-bottom:1px solid #f1f2f3; }
.resource-tree-row:hover { background:#fbf5f3; }
.resource-tree-row.depth-root { margin-bottom:4px; background:#fdf9f7; border-bottom-color:#eadbd7; }
.resource-tree-row.depth-room { min-height:35px; }
.tree-expander,.tree-leaf-mark { display:grid; flex:0 0 22px; place-items:center; width:22px; height:23px; }
.tree-expander { color:#7a858e; background:transparent; border:0; border-radius:3px; font-size:17px; line-height:1; transform:rotate(-90deg); }
.tree-expander.expanded { transform:none; }
.tree-expander:hover { color:#903638; background:#f3e8e5; }
.tree-leaf-mark { color:#c5cbd0; font-size:17px; }
.tree-node-label { display:flex; flex:1; align-items:center; gap:8px; min-width:0; min-height:33px; cursor:pointer; }
.tree-node-label input { flex:0 0 auto; width:14px; height:14px; margin:0; accent-color:#913638; }
.tree-node-icon { display:grid; flex:0 0 19px; place-items:center; color:#aa7770; font-size:14px; }
.tree-node-name { overflow:hidden; color:#444b52; font-size:11px; font-weight:600; text-overflow:ellipsis; white-space:nowrap; }
.depth-room .tree-node-name { font-weight:400; }
.tree-node-label small { margin-left:7px; overflow:hidden; color:#949ca3; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.tree-count { flex:0 0 auto; margin-left:auto; color:#9aa2a9; font-size:10px; font-variant-numeric:tabular-nums; }
.resource-tree-row.has-selection > .tree-count { color:#973c3c; }
.tree-node-label:focus-within,.tree-expander:focus-visible { outline:2px solid #a94748; outline-offset:2px; }

/* Opening rules: weekly schedule and resource-level scene linking */
.open-rule-list { min-width:1120px; }
.open-rule-list th,.open-rule-list td { width:auto !important; }
.open-rule-list th:first-child { width:210px !important; text-align:left; }
.open-rule-list td:first-child { text-align:left; }
.open-rule-list th:nth-child(6) { width:190px !important; }
.open-rule-list th:last-child { width:110px !important; }
.open-rule-list td small { display:block; max-width:230px; margin-top:4px; overflow:hidden; color:#9aa0a6; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.modal:has(.open-rule-modal) { width:min(1500px,100%); border-radius:5px; background:#fff; }
.modal:has(.open-rule-modal) .modal-close { color:#59616a; background:#f0f2f4; }
.open-rule-modal > header { padding:24px 64px 20px 30px; border-bottom:1px solid #e5e8eb; }
.open-rule-modal > header small { color:#9b3537; font-size:10px; font-weight:700; letter-spacing:.15em; }
.open-rule-modal > header h2 { margin:5px 0; font-size:23px; }
.open-rule-modal > header p { margin:0; color:#91979d; font-size:11px; }
.open-rule-basics { padding:24px 30px 4px; }
.open-rule-basic-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px; }
.open-rule-basics .rule-flags { margin:24px 0 14px; padding:16px 0 8px; border-top:1px solid #edf0f2; }
.open-rule-basics .rule-flags label:has(input:disabled) { color:#aeb4ba; cursor:not-allowed; }
.open-rule-section { padding:23px 30px 25px; border-top:1px solid #e8ebee; }
.open-rule-section-head { display:flex; align-items:flex-end; justify-content:space-between; gap:20px; margin-bottom:15px; }
.open-rule-section-head small { color:#9b3537; font-size:9px; font-weight:700; letter-spacing:.15em; }
.open-rule-section-head h3 { margin:5px 0 0; color:#343b42; font-size:16px; }
.open-rule-section-head > span { color:#989fa6; font-size:10px; }
.open-rule-table-wrap { overflow-x:auto; border:1px solid #e3e7eb; }
.open-rule-table { width:100%; min-width:1130px; border-collapse:collapse; table-layout:fixed; }
.open-rule-table th,.open-rule-table td { padding:10px 12px; border-right:1px solid #e6eaee; border-bottom:1px solid #e6eaee; text-align:left; }
.open-rule-table tr:last-child th,.open-rule-table tr:last-child td { border-bottom:0; }
.open-rule-table th:last-child,.open-rule-table td:last-child { border-right:0; }
.open-rule-table thead th { height:45px; color:#727a82; background:#f6f7f8; font-size:11px; font-weight:600; }
.open-rule-table thead th:first-child { width:100px; }
.open-rule-table tbody th { color:#555d65; background:#fff; font-size:11px; font-weight:600; }
.open-rule-table tbody tr:nth-child(even) td,.open-rule-table tbody tr:nth-child(even) th { background:#fafbfc; }
.open-rule-table tbody tr:hover td,.open-rule-table tbody tr:hover th { background:#faf4f2; }
.open-time-pair,.open-date-pair { display:grid; grid-template-columns:minmax(0,1fr) 18px minmax(0,1fr); align-items:center; gap:5px; }
.open-time-pair input,.open-date-pair input { width:100%; min-width:0; height:36px; padding:0 6px; color:#434b53; background:#fff; border:1px solid #dce2e7; border-radius:3px; font-size:10px; }
.open-time-pair > span,.open-date-pair > span { color:#848b92; font-size:10px; text-align:center; }
.open-time-pair input:focus,.open-date-pair input:focus { border-color:#9e3c3d; outline:0; box-shadow:0 0 0 2px rgba(158,60,61,.08); }
.special-date-table { min-width:1350px; }
.special-date-table thead th:first-child { width:315px; }
.open-resource-toolbar { display:flex; align-items:center; gap:18px; min-height:55px; }
.open-resource-toolbar > button { flex:0 0 auto; min-height:39px; border-radius:4px; box-shadow:none; }
.associated-resources { display:flex; flex-wrap:wrap; gap:6px; align-items:center; }
.associated-resources span { padding:7px 9px; color:#843638; background:#f8eeec; border:1px solid #edd9d5; font-size:10px; }
.associated-resources em { color:#a0a5aa; font-size:11px; font-style:normal; }
.open-association-panel { margin-top:16px; border:1px solid #e1e6e9; background:#fff; box-shadow:0 12px 30px rgba(40,40,40,.06); }
.open-association-panel[hidden] { display:none; }
.association-heading { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:17px 18px; border-bottom:1px solid #e6e9ec; }
.association-heading > div { display:grid; gap:4px; }
.association-heading b { color:#333a41; font-size:13px; }
.association-heading span { color:#9299a0; font-size:10px; }
.association-heading button { min-height:34px; padding:0 13px; color:#923638; background:#fff; border:1px solid #c99a95; border-radius:3px; font-size:11px; }
.association-heading button:hover { color:#fff; background:#923638; }
.association-body { display:grid; grid-template-columns:205px minmax(0,1fr); min-height:255px; }
.association-types { display:flex; flex-direction:column; max-height:365px; overflow:auto; padding:8px; background:#f7f8f9; border-right:1px solid #e6e9ec; }
.association-types button { display:flex; align-items:center; justify-content:space-between; gap:9px; min-height:35px; padding:0 10px; color:#59626b; background:transparent; border:0; text-align:left; font-size:11px; }
.association-types button.active { color:#8f3032; background:#f4e5e2; font-weight:700; }
.association-types button em { color:#9ba2a8; font-size:10px; font-style:normal; }
.association-resources { padding:18px; }
.association-resources > header { display:flex; justify-content:space-between; gap:14px; margin-bottom:15px; }
.association-resources > header > div { display:grid; gap:3px; }
.association-resources > header b { color:#323b42; font-size:13px; }
.association-resources > header span { color:#969da4; font-size:10px; }
.association-resources > header strong { color:#913638; font-size:11px; }
.association-resource-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:9px; }
.association-resource-grid label { display:flex; align-items:center; gap:9px; min-height:59px; padding:10px; border:1px solid #e3e7e9; border-radius:3px; cursor:pointer; }
.association-resource-grid label:hover { border-color:#ccaaa5; }
.association-resource-grid label.selected { background:#fbf2f0; border-color:#c8938d; }
.association-resource-grid input { flex:0 0 auto; accent-color:#913638; }
.association-resource-grid label > span { display:grid; gap:4px; min-width:0; }
.association-resource-grid b { overflow:hidden; color:#414950; font-size:11px; text-overflow:ellipsis; white-space:nowrap; }
.association-resource-grid small { overflow:hidden; color:#939aa0; font-size:9px; text-overflow:ellipsis; white-space:nowrap; }
.open-rule-footer { display:flex; align-items:center; justify-content:space-between; gap:18px; padding:18px 30px; background:#f9fafb; border-top:1px solid #e5e9ec; }
.open-rule-footer label { display:flex; align-items:center; gap:9px; color:#646b72; font-size:11px; }
.open-rule-footer select { height:38px; padding:0 10px; border:1px solid #dbe0e4; background:#fff; }
.open-rule-footer p { flex:1; margin:0; color:#a0a6ac; font-size:10px; text-align:right; }
.open-rule-footer > div { display:flex; gap:9px; }
.open-rule-footer button { min-height:38px; border-radius:4px; box-shadow:none; }

/* Review dialog */
.modal:has(.review-modal) { width:min(980px,100%); border-radius:6px; }
.modal:has(.review-modal) .modal-close { top:18px; right:18px; color:#4a5057; background:#f0f2f4; }
.modal:has(.review-modal) .modal-close:hover { color:#fff; background:#7d292c; }
.review-modal-head { display:flex; align-items:center; justify-content:space-between; gap:22px; padding:24px 64px 22px 28px; background:#fff; border-bottom:1px solid #e5e7ea; }
.review-modal-head small { color:var(--red); font-size:11px; font-weight:600; }
.review-modal-head h2 { margin:6px 0 5px; font-family:var(--sans); font-size:21px; }
.review-modal-head p { margin:0; color:#838991; font-size:12px; }
.review-modal-body { display:grid; grid-template-columns:1.08fr .92fr; gap:0; }
.review-booking-summary { display:grid; grid-template-columns:1fr 1fr; gap:12px; padding:24px 26px; border-right:1px solid #e6e8eb; }
.review-booking-summary > div { display:grid; gap:7px; padding:13px 14px; background:#f6f7f8; border-left:3px solid #973436; }
.review-booking-summary span { color:#8a9097; font-size:10px; }
.review-booking-summary b { color:#343a41; font-size:12px; line-height:1.55; }
.review-modal-summary { padding:24px 26px; border-right:1px solid #e6e8eb; }
.review-modal-summary .rule-list { margin-bottom:0; }
.review-modal-decision, .review-result { padding:24px 26px; }
.review-modal-decision > h3 { margin:0 0 14px; font-family:var(--sans); font-size:14px; }
.review-modal-decision > h3 span, .reject-reason label span { color:#c52f33; }
.decision-options { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.decision-options button { display:grid; grid-template-columns:32px 1fr; align-items:center; gap:10px; min-height:82px; padding:12px; color:#4f565e; background:#fff; border:1px solid #dfe2e6; border-radius:5px; text-align:left; }
.decision-options button > i { display:grid; place-items:center; width:30px; height:30px; color:#7d858c; background:#eef0f2; border-radius:50%; font-style:normal; font-weight:700; }
.decision-options button span { display:grid; gap:4px; }
.decision-options button b { font-size:13px; }
.decision-options button small { color:#949aa1; font-size:10px; line-height:1.4; }
.decision-options button:first-child.selected { color:#256348; background:#edf6f1; border-color:#8bb9a2; }
.decision-options button:first-child.selected > i { color:#fff; background:#3f8261; }
.decision-options button:last-child.selected { color:#8c2f32; background:#fbefee; border-color:#c98d89; }
.decision-options button:last-child.selected > i { color:#fff; background:#a4393a; }
.reject-reason { display:grid; gap:7px; margin-top:18px; }
.reject-reason[hidden] { display:none; }
.reject-reason label { color:#4e555d; font-size:12px; font-weight:600; }
.reject-reason textarea { min-height:112px; padding:11px 12px; color:#30363c; border:1px solid #d9dde1; border-radius:4px; resize:vertical; outline:none; }
.reject-reason > small { display:none; color:#c33134; font-size:10px; }
.reject-reason.invalid textarea { border-color:#c33134; box-shadow:0 0 0 3px rgba(195,49,52,.08); }
.reject-reason.invalid > small { display:block; }
.review-result { display:flex; flex-direction:column; align-items:flex-start; gap:10px; }
.review-result > span { color:#858b92; font-size:11px; }
.review-result > strong { padding:6px 10px; border-radius:3px; font-size:13px; }
.review-result > strong.pass { color:#28694e; background:#e8f4ed; }
.review-result > strong.risk { color:#922f32; background:#f8e8e7; }
.review-result p { width:100%; min-height:88px; margin:4px 0 0; padding:13px; color:#5f666e; background:#f7f8f9; border-left:3px solid #8f969d; font-size:12px; line-height:1.7; }
.review-result small { color:#999fa5; }
.review-modal-actions { display:flex; justify-content:flex-end; gap:10px; padding:17px 26px; background:#fafbfb; border-top:1px solid #e5e7ea; }
.review-modal-actions button { min-width:108px; border-radius:4px; box-shadow:none; }
.review-entry { padding:5px 9px; border:1px solid #cda7a4; border-radius:3px; }
.review-entry:hover { color:#fff; background:var(--red); text-decoration:none; }

/* Reservation operation dialogs */
.modal:has(.record-modal), .modal:has(.edit-reservation-modal) { width:min(1040px,100%); border-radius:6px; }
.modal:has(.record-modal) .modal-close, .modal:has(.edit-reservation-modal) .modal-close { color:#4a5057; background:#eef0f2; }
.record-modal-head { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:25px 64px 22px 28px; border-bottom:1px solid #e4e7ea; }
.record-modal-head small { color:var(--red); font-size:11px; font-weight:600; }
.record-modal-head h2 { margin:6px 0 4px; font-family:var(--sans); font-size:21px; }
.record-modal-head p { margin:0; color:#858b92; font-size:12px; }
.record-modal-body { min-height:250px; padding:24px 28px; }
.attendance-summary { display:flex; align-items:center; justify-content:space-between; margin-bottom:14px; }
.attendance-summary b { font-size:14px; }
.attendance-summary span { color:#92989f; font-size:11px; }
.attendance-table-wrap { overflow-x:auto; border:1px solid #e3e6e9; }
.attendance-table { width:100%; min-width:720px; border-collapse:collapse; }
.attendance-table th, .attendance-table td { padding:13px 14px; border-bottom:1px solid #e9ebed; color:#596068; font-size:12px; text-align:left; }
.attendance-table th { color:#7f858c; background:#f7f8f9; }
.attendance-empty { display:grid; justify-items:center; align-content:center; min-height:230px; text-align:center; }
.attendance-empty i { display:grid; place-items:center; width:52px; height:52px; color:#8b949c; background:#eef0f2; border-radius:50%; font-size:22px; font-style:normal; }
.attendance-empty h3 { margin:16px 0 5px; font-size:16px; }
.attendance-empty p { margin:0; color:#92989f; font-size:12px; }
.record-modal-actions { display:flex; justify-content:flex-end; gap:10px; padding:17px 28px; background:#fafbfb; border-top:1px solid #e5e7ea; }
.edit-reservation-form { display:block; }
.edit-form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px 20px; padding:24px 28px; }
.edit-form-grid label { display:grid; gap:7px; }
.edit-form-grid label.wide { grid-column:1 / -1; }
.edit-form-grid label > span { color:#555c64; font-size:11px; font-weight:600; }
.edit-form-grid input, .edit-form-grid select, .edit-form-grid textarea { width:100%; min-height:42px; padding:9px 11px; color:#30363c; background:#fff; border:1px solid #d9dde1; border-radius:4px; outline:none; }
.edit-form-grid textarea { min-height:76px; resize:vertical; }
.edit-form-grid input:focus, .edit-form-grid select:focus, .edit-form-grid textarea:focus { border-color:#b54b48; box-shadow:0 0 0 3px rgba(158,47,47,.08); }
.confirm-modal { padding:38px 34px 30px; text-align:center; }
.confirm-modal .confirm-icon { display:grid; place-items:center; width:58px; height:58px; margin:0 auto 17px; border-radius:50%; font-size:25px; font-weight:700; }
.confirm-icon.warning { color:#9a681c; background:#fbf1df; }
.confirm-icon.danger { color:#a33134; background:#f8e8e7; }
.confirm-modal h2 { margin:0 0 10px; font-family:var(--sans); }
.confirm-modal > p { max-width:560px; margin:0 auto; color:#737a82; font-size:12px; line-height:1.8; }
.confirm-modal .modal-actions { justify-content:center; }
.danger-button { min-height:42px; padding:0 20px; color:#fff; background:#a63235; border:1px solid #a63235; border-radius:6px; }

.identity-card { display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:18px; margin-bottom:26px; padding:22px 24px; color:#fff; background:linear-gradient(115deg,var(--red-dark),var(--red)); border-radius:13px; box-shadow:var(--shadow); }
.profile-avatar { display:grid; place-items:center; width:58px; height:58px; color:var(--red); background:#fff; border-radius:50%; font-family:var(--serif); font-size:24px; font-weight:700; }
.identity-card small { color:rgba(255,255,255,.68); font-size:11px; }
.identity-card h2 { margin:3px 0; font-size:22px; }
.identity-card p { margin:0; color:rgba(255,255,255,.72); font-size:12px; }
.identity-note { display:grid; gap:4px; padding-left:24px; text-align:right; border-left:1px solid rgba(255,255,255,.18); }
.identity-note b { font-size:13px; }
.identity-note span { color:rgba(255,255,255,.66); font-size:11px; }
.section-title { display:flex; align-items:end; justify-content:space-between; margin-bottom:12px; }
.section-title h2 { margin:0 0 4px; }
.section-title p { margin:0; color:var(--muted); font-size:12px; }

.filter-bar { display: grid; grid-template-columns: 1.3fr repeat(3, minmax(130px,.65fr)) auto; gap: 10px; align-items: center; margin-bottom: 18px; padding: 14px; background: var(--paper); border: 1px solid var(--line); border-radius: 11px; }
.field { display: grid; gap: 7px; }
.field label { color: #525a65; font-size: 12px; font-weight: 600; }
.field input, .field select, .field textarea, .filter-bar input, .filter-bar select { width: 100%; min-height: 42px; padding: 0 12px; color: var(--ink); background: #fff; border: 1px solid #dcd8d3; border-radius: 7px; outline: none; }
.field textarea { padding-top: 10px; min-height: 84px; resize: vertical; }
.field input:focus, .field select:focus, .field textarea:focus, .filter-bar input:focus, .filter-bar select:focus { border-color: var(--red); box-shadow: 0 0 0 3px rgba(158,47,47,.1); }
.room-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 16px; }
.room-card { overflow: hidden; background: var(--paper); border: 1px solid var(--line); border-radius: 12px; transition: .2s ease; }
.room-card:hover { transform: translateY(-3px); border-color: #cf9e98; box-shadow: var(--shadow); }
.room-visual { position: relative; height: 134px; overflow: hidden; background: linear-gradient(145deg,#e7e2db,#f7f4ef); }
.room-visual::before { content:""; position:absolute; left:9%; right:9%; bottom:14%; height:42%; background:#fff; border:1px solid #d8d1c8; clip-path:polygon(0 22%,100% 0,95% 100%,5% 100%); box-shadow:0 12px 20px rgba(0,0,0,.12); }
.room-visual::after { content:""; position:absolute; left:16%; right:16%; bottom:24%; height:17%; background:repeating-linear-gradient(90deg,#76909a 0 12%,#dbe4e6 12% 17%); transform:skewY(-3deg); }
.room-visual.coral { background: linear-gradient(145deg,#e4cdc7,#f8ece8); }
.room-visual.green { background: linear-gradient(145deg,#cadbd1,#edf3ed); }
.room-visual.blue { background: linear-gradient(145deg,#cad8df,#edf2f5); }
.room-cap { position: absolute; z-index: 2; right: 12px; top: 12px; padding: 5px 8px; color: #fff; background: rgba(40,43,46,.72); border-radius: 4px; font-size: 10px; }
.room-body { padding: 17px; }
.room-title { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.room-title h3 { margin: 0; font-family: var(--serif); font-size: 17px; }
.room-meta { margin: 8px 0 14px; color: var(--muted); font-size: 12px; }
.tags { display: flex; flex-wrap: wrap; gap: 6px; min-height: 25px; }
.tag { padding: 4px 8px; color: #5a616a; background: #f0eeea; border-radius: 4px; font-size: 10px; }
.slot-strip { display: grid; grid-template-columns: repeat(4,1fr); gap: 6px; margin: 14px 0; }
.slot { padding: 7px 2px; color: var(--green); background: #edf6f0; border: 1px solid #d4eadd; border-radius: 5px; text-align: center; font-size: 10px; }
.slot.busy { color: #9b9996; background: #f3f2f0; border-color: #e7e4df; text-decoration: line-through; }
.card-actions { display: flex; justify-content: space-between; align-items: center; padding-top: 13px; border-top: 1px solid var(--line); }
.card-actions span { color: var(--muted); font-size: 11px; }

.tabs { display: flex; gap: 4px; padding: 4px; background: #eae7e2; border-radius: 8px; width: fit-content; }
.tabs button { padding: 8px 14px; color: var(--muted); background: transparent; border: 0; border-radius: 6px; font-size: 12px; }
.tabs button.active { color: var(--red); background: #fff; box-shadow: 0 2px 8px rgba(0,0,0,.06); font-weight: 600; }
.booking-list { display: grid; gap: 12px; margin-top: 18px; }
.booking-card { display: grid; grid-template-columns: 6px minmax(170px,.9fr) minmax(200px,1.3fr) minmax(170px,.8fr) auto; align-items: center; gap: 20px; padding: 18px 20px 18px 0; background: var(--paper); border: 1px solid var(--line); border-radius: 10px; }
.booking-accent { align-self: stretch; background: var(--red); border-radius: 0 4px 4px 0; }
.booking-card h3 { margin: 0 0 5px; font-size: 15px; }
.booking-card p, .booking-card small { margin: 0; color: var(--muted); font-size: 12px; line-height: 1.6; }
.booking-time { color: #424850; font-size: 13px; }

.approval-layout { display: grid; grid-template-columns: minmax(420px,.88fr) minmax(460px,1.12fr); gap: 16px; }
.approval-queue { display: grid; gap: 10px; }
.approval-item { width: 100%; padding: 17px; text-align: left; background: var(--paper); border: 1px solid var(--line); border-radius: 10px; transition: .18s; }
.approval-item:hover, .approval-item.active { border-color: #c98983; box-shadow: 0 8px 28px rgba(72,45,35,.07); }
.approval-item.active { box-shadow: inset 4px 0 0 var(--red), 0 8px 28px rgba(72,45,35,.07); }
.approval-top { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.approval-item h3 { margin: 0; font-size: 15px; }
.approval-item p { margin: 9px 0 4px; color: var(--muted); font-size: 12px; }
.risk-score { font-family: var(--serif); color: var(--red); font-size: 18px; }
.review-panel { position: sticky; top: 94px; align-self: start; overflow: hidden; background: var(--paper); border: 1px solid var(--line); border-radius: 12px; box-shadow: var(--shadow); }
.review-head { padding: 22px; color: #fff; background: linear-gradient(125deg,var(--red-dark),var(--red)); }
.review-head small { opacity: .72; }
.review-head h2 { margin: 8px 0 4px; }
.review-head p { margin: 0; opacity: .8; font-size: 12px; }
.review-body { padding: 20px 22px; }
.verdict { display: grid; grid-template-columns: auto 1fr; gap: 13px; align-items: center; padding: 14px; margin-bottom: 18px; background: var(--red-pale); border: 1px solid #efd7d2; border-radius: 8px; }
.score-ring { display: grid; place-items: center; width: 58px; height: 58px; color: var(--red); background: conic-gradient(var(--red) var(--score),#eadfda 0); border-radius: 50%; }
.score-ring::before { content:""; position:absolute; width:43px; height:43px; background:var(--paper); border-radius:50%; }
.score-ring b { position: relative; font-size: 14px; }
.verdict h3 { margin: 0 0 4px; font-size: 14px; }
.verdict p { margin: 0; color: var(--muted); font-size: 11px; }
.rule-list { display: grid; gap: 8px; margin-bottom: 18px; }
.rule { display: grid; grid-template-columns: 24px 1fr auto; gap: 9px; align-items: center; padding: 10px; background: #f7f5f2; border-radius: 7px; font-size: 12px; }
.rule-icon { display: grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; font-weight: 700; }
.rule.pass .rule-icon { color: var(--green); background: #e3f1e8; }
.rule.warn .rule-icon { color: var(--amber); background: #f8edd9; }
.rule.danger .rule-icon { color: var(--red); background: var(--red-soft); }
.review-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 14px; }

.room-table, .audit-table { width: 100%; border-collapse: collapse; background: var(--paper); border: 1px solid var(--line); }
.room-table th, .room-table td, .audit-table th, .audit-table td { padding: 14px 16px; text-align: left; border-bottom: 1px solid var(--line); font-size: 12px; }
.room-table th, .audit-table th { color: #fff; background: var(--red); font-weight: 600; }
.room-table tr:hover td, .audit-table tr:hover td { background: var(--red-pale); }
.toggle { position: relative; display: inline-block; width: 38px; height: 22px; background: #c7c5c1; border-radius: 12px; vertical-align: middle; }
.toggle::after { content:""; position:absolute; width:16px; height:16px; left:3px; top:3px; background:#fff; border-radius:50%; transition:.18s; }
.toggle.on { background: var(--green); }
.toggle.on::after { left:19px; }
.analytics-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.chart-panel { min-height: 300px; padding: 20px; background: var(--paper); border: 1px solid var(--line); border-radius: 11px; }
.bar-chart { display: grid; gap: 15px; margin-top: 22px; }
.bar-row { display: grid; grid-template-columns: 100px 1fr 42px; gap: 12px; align-items: center; font-size: 12px; }
.bar-track { height: 10px; overflow: hidden; background: #ece9e5; border-radius: 6px; }
.bar-fill { height: 100%; width: var(--w); background: linear-gradient(90deg,var(--red),#c56456); border-radius: 6px; animation: grow .75s ease both; }
@keyframes grow { from { width:0; } }
.donut-wrap { display: grid; grid-template-columns: 170px 1fr; align-items: center; gap: 28px; margin-top: 22px; }
.donut { display: grid; place-items: center; width: 164px; height: 164px; border-radius: 50%; background: conic-gradient(var(--red) 0 52%, #d19679 52% 74%, #e8c9a2 74% 88%, #d9d7d2 88%); }
.donut::after { content:"76%\A平均利用率"; white-space:pre; display:grid; place-items:center; width:108px; height:108px; text-align:center; color:var(--ink); background:var(--paper); border-radius:50%; font-family:var(--serif); line-height:1.5; }
.legend { display: grid; gap: 10px; }
.legend span { display: flex; align-items: center; gap: 8px; color: var(--muted); font-size: 12px; }
.legend i { width: 9px; height: 9px; border-radius: 50%; }

.modal-backdrop { position: fixed; z-index: 80; inset: 0; display: grid; place-items: center; padding: 24px; background: rgba(29,24,22,.54); backdrop-filter: blur(5px); }
.modal-backdrop[hidden] { display: none; }
.modal { position: relative; width: min(860px, 100%); max-height: 92vh; overflow: auto; background: var(--paper); border-radius: 14px; box-shadow: 0 28px 100px rgba(34,18,18,.3); animation: modalIn .24s ease; }
@keyframes modalIn { from { opacity:0; transform:translateY(10px) scale(.98); } }
.modal-close { position: absolute; z-index: 2; right: 16px; top: 14px; width: 36px; height: 36px; color: #fff; background: rgba(255,255,255,.12); border: 0; border-radius: 50%; font-size: 25px; line-height: 1; }
.modal-hero { padding: 25px 28px; color: #fff; background: linear-gradient(120deg,var(--red-dark),var(--red)); }
.modal-hero h2 { margin: 4px 0 5px; }
.modal-hero p { margin: 0; opacity: .76; font-size: 12px; }
.modal-body { padding: 24px 28px 28px; }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; }
.span-2 { grid-column: 1 / -1; }
.risk-preview { margin-top: 20px; padding: 18px; background: #f8f5f1; border: 1px solid var(--line); border-radius: 9px; }
.risk-preview h3 { margin: 0 0 12px; font-size: 15px; }
.check-list { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.check-item { display: flex; align-items: center; gap: 8px; padding: 10px; background: #fff; border: 1px solid var(--line); border-radius: 7px; font-size: 11px; }
.check-item i { display: grid; place-items: center; width: 20px; height: 20px; border-radius: 50%; font-style: normal; font-weight: 700; }
.check-item.pass i { color: var(--green); background: #e5f2e9; }
.check-item.warn i { color: var(--amber); background: #f7ecd8; }
.modal-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 20px; }
.empty { padding: 70px 20px; text-align: center; color: var(--muted); background: var(--paper); border: 1px dashed #d8d2ca; border-radius: 10px; }
.toast { position: fixed; z-index: 100; right: 28px; bottom: 28px; max-width: 380px; padding: 14px 18px; color: #fff; background: #24272b; border-radius: 8px; box-shadow: var(--shadow); opacity: 0; transform: translateY(12px); pointer-events: none; transition: .25s; font-size: 13px; }
.toast.show { opacity: 1; transform: none; }

.space-home { min-height:calc(100vh - 76px); margin:-30px -36px -54px; overflow:hidden; color:#27292d; background:#f5f2ed; }
.space-hero { position:relative; display:flex; align-items:center; min-height:305px; overflow:hidden; color:#fff; background:#79252a; }
.hero-campus-art { position:absolute; inset:0; overflow:hidden; background:linear-gradient(150deg,#7c3135 0%,#bd6558 42%,#e5a779 72%,#78959a 100%); }
.hero-sky { position:absolute; inset:0 0 34%; opacity:.95; background:radial-gradient(circle at 76% 17%,rgba(255,224,171,.9) 0 5%,rgba(255,205,142,.28) 6%,transparent 22%),radial-gradient(ellipse at 25% 18%,rgba(255,255,255,.36) 0 4%,transparent 23%),radial-gradient(ellipse at 62% 28%,rgba(255,237,220,.25) 0 5%,transparent 25%),linear-gradient(165deg,rgba(61,57,84,.38),transparent 58%); }
.hero-sky::after { content:""; position:absolute; inset:0; opacity:.24; background:repeating-linear-gradient(115deg,transparent 0 45px,rgba(255,255,255,.16) 46px,transparent 48px); transform:skewX(-18deg); }
.hero-campus-building { position:absolute; left:29%; right:-3%; bottom:14%; height:49%; background:linear-gradient(165deg,#f0e5d5,#bba99c 76%); clip-path:polygon(7% 19%,28% 14%,31% 0,92% 7%,100% 22%,100% 100%,0 100%,0 34%); filter:drop-shadow(-20px 24px 22px rgba(31,22,23,.28)); }
.hero-campus-building::before { content:""; position:absolute; left:11%; right:4%; top:26%; height:34%; background:repeating-linear-gradient(90deg,#263d49 0 4.7%,#7a9aa4 4.9% 6.5%,#eadfd0 6.7% 9%); border-top:12px solid #d5c4b5; border-bottom:8px solid #d5c4b5; }
.hero-campus-building::after { content:""; position:absolute; left:0; right:0; bottom:0; height:31%; background:repeating-linear-gradient(90deg,#e0d3c5 0 9%,#42515a 9.2% 12%,#cabdaf 12.2% 18%); border-top:13px solid #f0e5d8; }
.hero-campus-building i { position:absolute; z-index:2; bottom:0; width:5%; height:29%; background:#303a40; border-top:8px solid #9b887a; }
.hero-campus-building i:nth-child(1){left:12%}.hero-campus-building i:nth-child(2){left:31%}.hero-campus-building i:nth-child(3){left:50%}.hero-campus-building i:nth-child(4){left:69%}.hero-campus-building i:nth-child(5){left:88%}
.hero-campus-ground { position:absolute; left:-4%; right:-4%; bottom:-5%; height:27%; background:radial-gradient(circle at 62% 25%,#3e694d 0 9%,transparent 10%),radial-gradient(circle at 74% 28%,#587a51 0 12%,transparent 13%),linear-gradient(175deg,#44634e 0 34%,#72846c 35% 55%,#555e59 56% 59%,#777a77 60%); clip-path:polygon(0 28%,100% 0,100% 100%,0 100%); }
.space-hero-shade { position:absolute; inset:0; background:linear-gradient(90deg,rgba(40,14,19,.84) 0%,rgba(59,20,25,.65) 37%,rgba(48,25,25,.12) 72%),linear-gradient(0deg,rgba(25,15,18,.32),transparent 45%); }
.space-hero-content { position:relative; z-index:2; width:min(1040px,calc(100% - 80px)); margin-left:max(6vw,64px); }
.banner-book-button { position:absolute; z-index:3; right:38px; bottom:28px; display:flex; align-items:center; gap:18px; min-width:156px; min-height:52px; padding:0 18px 0 22px; color:#fff; background:rgba(132,36,40,.94); border:1px solid rgba(255,255,255,.56); border-radius:2px; box-shadow:0 16px 30px rgba(42,13,16,.28); font-weight:700; }
.banner-book-button b { display:grid; place-items:center; width:28px; height:28px; color:#8d3033; background:#fff; border-radius:50%; transition:transform .2s ease; }
.banner-book-button:hover { background:#a23a3d; transform:translateY(-2px); }
.banner-book-button:hover b { transform:translateX(3px); }
.home-search-shell { position:relative; width:100%; }
.home-search { display:grid; grid-template-columns:48px 1fr auto; align-items:center; width:min(700px,100%); min-height:64px; padding-left:5px; background:rgba(255,255,255,.96); border:1px solid rgba(255,255,255,.55); box-shadow:0 22px 48px rgba(32,12,14,.24); }
.home-search > span { color:#8c3335; font-family:serif; font-size:28px; text-align:center; }
.home-search input { min-width:0; height:62px; padding:0 12px; color:#2f3236; background:transparent; border:0; outline:none; font-size:14px; }
.home-search button { align-self:stretch; min-width:124px; color:#fff; background:#982f32; border:0; font-weight:600; }
.home-search button:hover { background:#762529; }
.space-hero:has(.home-search-results) { z-index:20; overflow:visible; }
.home-search-results { position:absolute; z-index:20; top:76px; left:0; width:min(980px,calc(100vw - 120px)); max-height:440px; padding:18px; overflow-y:auto; color:#34383d; background:rgba(255,255,255,.985); border:1px solid #ded8d1; box-shadow:0 24px 55px rgba(37,20,20,.28); }
.home-search-results > header { display:flex; align-items:flex-start; justify-content:space-between; gap:18px; padding:0 2px 14px; border-bottom:1px solid #ece7e1; }
.home-search-results > header > div { display:grid; gap:3px; }
.home-search-results header small { color:#983538; font-size:9px; font-weight:700; letter-spacing:.18em; }
.home-search-results header b { font-size:16px; }
.home-search-results header span { color:#85898e; font-size:10px; }
.home-search-results header > button { width:30px; height:30px; color:#7b7f84; background:#f4f1ed; border:0; border-radius:50%; font-size:20px; }
.home-search-scene-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; padding-top:14px; }
.home-search-scene-list article { min-width:0; padding:11px; background:#fbfaf8; border:1px solid #e6e0d9; }
.home-search-scene { display:grid; grid-template-columns:38px minmax(0,1fr) auto; align-items:center; gap:10px; width:100%; padding:0 0 10px; color:#363a3e; background:none; border:0; border-bottom:1px solid #ece7e1; text-align:left; }
.home-search-scene > i { display:grid; place-items:center; width:36px; height:36px; color:#963438; background:#f4e8e5; border-radius:50%; font-family:var(--serif); font-style:normal; }
.home-search-scene > span { display:grid; gap:3px; }
.home-search-scene b { font-size:12px; }
.home-search-scene small { color:#8a8e92; font-size:9px; }
.home-search-scene em { color:#963438; font-size:9px; font-style:normal; }
.home-search-children { display:flex; flex-wrap:wrap; gap:6px; padding-top:9px; }
.home-search-children button { display:grid; gap:2px; max-width:100%; padding:6px 8px; color:#555c62; background:#fff; border:1px solid #e1ddd8; text-align:left; }
.home-search-children button:hover { color:#fff; background:#923335; border-color:#923335; }
.home-search-children button span { overflow:hidden; font-size:9px; text-overflow:ellipsis; white-space:nowrap; }
.home-search-children button small { color:#979b9e; font-size:8px; }
.home-search-children button:hover small { color:#f0d8d6; }
.home-search-empty { display:grid; place-items:center; gap:5px; min-height:150px; color:#85898d; }
.home-search-empty b { color:#4f555b; }
.home-notices { margin-top:68px; padding:34px 38px 28px; background:#fff; }
.home-notices-head { display:flex; align-items:center; justify-content:space-between; gap:18px; margin-bottom:25px; }
.home-notices-head h2 { margin:0; color:#34363a; font-size:25px; font-weight:600; letter-spacing:.025em; }
.home-notices-head button { padding:5px 0; color:#85898d; background:none; border:0; font-size:13px; }
.home-notices-head button:hover,.home-notices-head button:focus-visible { color:#8d3034; }
.home-notices-head button span { margin-left:4px; font-size:20px; vertical-align:-1px; }
.home-notice-list { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:36px; }
.home-announcement { min-width:0; padding-top:17px; border-top:3px solid #8d3034; }
.home-announcement-title { display:-webkit-box; width:100%; min-height:62px; padding:0; overflow:hidden; color:#33363a; background:none; border:0; -webkit-box-orient:vertical; -webkit-line-clamp:2; line-height:1.5; font-size:18px; font-weight:500; text-align:left; cursor:pointer; }
.home-announcement-title:hover,.home-announcement-title:focus-visible { color:#8d3034; text-decoration:underline; text-underline-offset:4px; }
.home-announcement p { display:-webkit-box; min-height:116px; max-height:116px; margin:13px 0 0; overflow:hidden; color:#70757a; -webkit-box-orient:vertical; -webkit-line-clamp:5; font-size:13px; line-height:1.8; overflow-wrap:anywhere; }
.home-notices-note { margin:24px 0 0; color:#a1a3a5; font-size:10px; text-align:right; }
.home-content { width:min(1460px,calc(100% - 72px)); margin:0 auto; padding:76px 0 96px; }
.home-section-head { display:flex; align-items:end; justify-content:space-between; gap:20px; margin-bottom:26px; }
.home-section-head p { margin:0 0 7px; color:#a03a3b; font-size:10px; font-weight:700; letter-spacing:.22em; }
.home-section-head h2 { margin:0 0 5px; font-size:30px; }
.home-section-head span { color:#7c7c7b; font-size:12px; }
.home-section-head > button { padding:9px 0; color:#6f5551; background:none; border:0; border-bottom:1px solid #bca8a1; font-size:11px; }
.home-section-head > button b { margin-left:7px; color:#a13638; }
.space-type-grid { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); background:#fff; border-top:3px solid #923033; box-shadow:0 16px 45px rgba(76,54,44,.06); }
.space-type-grid button { position:relative; display:grid; grid-template-columns:48px 1fr auto; align-items:center; gap:12px; min-height:104px; padding:18px 17px; color:#373a3e; background:#fff; border:0; border-right:1px solid #eee8e2; border-bottom:1px solid #eee8e2; text-align:left; animation:typeIn .4s ease both; animation-delay:var(--delay); }
@keyframes typeIn { from{opacity:0;transform:translateY(8px)} }
.space-type-grid button:hover { z-index:2; color:#fff; background:#923033; box-shadow:0 12px 28px rgba(111,32,35,.18); transform:translateY(-2px); }
.space-type-grid button > i { display:grid; place-items:center; width:46px; height:46px; color:#933436; background:#f5ebe8; border-radius:50%; font-family:var(--serif); font-size:22px; font-style:normal; transition:.2s; }
.space-type-grid button:hover > i { color:#923033; background:#fff; transform:rotate(-5deg) scale(1.04); }
.space-type-grid button > span { display:grid; gap:5px; min-width:0; }
.space-type-grid button b { font-size:13px; line-height:1.35; }
.space-type-grid button small { overflow:hidden; color:#98938e; font-size:9px; text-overflow:ellipsis; white-space:nowrap; }
.space-type-grid button:hover small { color:rgba(255,255,255,.65); }
.space-type-grid button em { color:#c2b6af; font-style:normal; }
.space-type-grid button:hover em { color:#fff; transform:translateX(3px); }
.popular-venues { margin-top:76px; }
.popular-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px; }
.popular-card { overflow:hidden; background:#fff; border:1px solid #ebe5de; box-shadow:0 10px 35px rgba(68,48,40,.055); animation:typeIn .45s ease both; animation-delay:var(--delay); transition:.22s ease; }
.popular-card:hover { transform:translateY(-5px); box-shadow:0 22px 45px rgba(68,39,35,.13); }
.popular-visual { position:relative; height:218px; overflow:hidden; background:linear-gradient(150deg,#d9c5bd,#efe4dc); }
.popular-visual::before { content:""; position:absolute; inset:0; background:linear-gradient(165deg,rgba(255,255,255,.2),transparent 48%),radial-gradient(circle at 80% 18%,rgba(255,255,255,.66) 0 5%,transparent 22%); }
.popular-visual.coral,.room-photo.coral { background:linear-gradient(145deg,#c99784,#edd3c6); }
.popular-visual.blue,.room-photo.blue { background:linear-gradient(145deg,#759bab,#d9e5e8); }
.popular-visual.green,.room-photo.green { background:linear-gradient(145deg,#6f9879,#d9e5d6); }
.popular-visual.plum,.room-photo.plum { background:linear-gradient(145deg,#85657b,#dfccd9); }
.popular-visual.slate,.room-photo.slate { background:linear-gradient(145deg,#65717a,#ced6d9); }
.popular-visual.amber,.room-photo.amber { background:linear-gradient(145deg,#c68b50,#ead7bb); }
.popular-visual.mint,.room-photo.mint { background:linear-gradient(145deg,#6b9a91,#d7e8e3); }
.popular-visual.terracotta,.room-photo.terracotta { background:linear-gradient(145deg,#ae7056,#e6c5b1); }
.popular-visual.gold,.room-photo.gold { background:linear-gradient(145deg,#a68b55,#eadfbe); }
.popular-visual > span { position:absolute; z-index:3; left:18px; top:17px; padding:5px 9px; color:#fff; background:rgba(38,35,36,.52); backdrop-filter:blur(7px); font-size:9px; letter-spacing:.08em; }
.popular-visual > b { position:absolute; z-index:3; right:16px; bottom:8px; color:rgba(255,255,255,.64); font-family:var(--serif); font-size:46px; }
.venue-architecture { position:absolute; left:7%; right:7%; bottom:0; height:68%; background:linear-gradient(170deg,rgba(250,247,240,.93),rgba(169,165,156,.82)); clip-path:polygon(0 28%,32% 18%,35% 0,100% 12%,100% 100%,0 100%); box-shadow:0 14px 30px rgba(44,38,36,.2); }
.venue-architecture::before { content:""; position:absolute; left:5%; right:5%; top:30%; height:30%; background:repeating-linear-gradient(90deg,#50636c 0 9%,#a8bec3 9.5% 13%,#ede9e1 13.5% 19%); }
.venue-architecture::after { content:""; position:absolute; left:0; right:0; bottom:0; height:27%; background:rgba(65,70,71,.72); border-top:8px solid rgba(255,255,255,.62); }
.venue-architecture i { position:absolute; z-index:2; bottom:0; width:8%; height:26%; background:#30383d; }.venue-architecture i:nth-child(1){left:18%}.venue-architecture i:nth-child(2){left:47%}.venue-architecture i:nth-child(3){left:76%}
.popular-card-body { padding:20px 20px 19px; }
.popular-title { display:flex; align-items:flex-start; justify-content:space-between; gap:14px; }
.popular-title small { color:#a03a3b; font-size:9px; letter-spacing:.08em; }
.popular-title h3 { margin:5px 0 0; font-family:var(--serif); font-size:20px; }
.popular-title > span { flex:0 0 auto; padding:5px 8px; color:#8e3032; background:#f6ebe8; font-size:9px; }
.popular-card-body > p { margin:13px 0; color:#767879; font-size:11px; }
.popular-tags { display:flex; flex-wrap:wrap; gap:6px; min-height:25px; }
.popular-tags span { padding:4px 7px; color:#6d6762; background:#f5f2ed; font-size:9px; }
.popular-actions { display:flex; gap:8px; margin-top:18px; padding-top:16px; border-top:1px solid #eee9e3; }
.popular-actions button { flex:1; min-height:36px; border-radius:2px; box-shadow:none; font-size:11px; }

.booking-page { max-width:1500px; }
.room-type-tabs { display:flex; overflow-x:auto; margin-bottom:16px; padding:0 16px; background:#eee6e3; border-radius:9px; scrollbar-width:thin; }
.room-type-tabs button { flex:0 0 auto; min-width:106px; min-height:58px; padding:0 18px; color:#292929; background:transparent; border:0; font-size:13px; white-space:nowrap; }
.room-type-tabs button.active { color:#fff; background:var(--red); }
.booking-search { display:grid; grid-template-columns:1fr .8fr 1fr 1fr 140px; gap:20px; align-items:end; padding:0 34px 28px; border-bottom:1px solid #d5d1cc; }
.booking-search label { display:grid; grid-template-columns:auto 1fr; align-items:center; gap:9px; color:#4d535a; font-size:12px; }
.booking-search input, .booking-search select { min-width:0; height:52px; padding:0 13px; background:#fff; border:1px solid var(--line); border-radius:4px; }
.search-square { height:52px; color:#fff; background:var(--red); border:0; font-size:30px; font-family:serif; }
.room-list { display:grid; gap:18px; margin-top:20px; }
.room-list-card { display:grid; grid-template-columns:310px 1fr; gap:20px; padding:20px 64px; background:#fff; border:1px solid #efede9; box-shadow:0 5px 20px rgba(54,40,35,.04); }
.room-photo { position:relative; overflow:hidden; min-height:185px; background:linear-gradient(145deg,#d8cfbf,#f4eee6); }
.room-photo::before { content:""; position:absolute; inset:0; background:linear-gradient(90deg,rgba(255,255,255,.74),transparent 35%),repeating-linear-gradient(90deg,transparent 0 18%,rgba(70,60,52,.15) 18% 19%); }
.room-photo::after { content:""; position:absolute; left:8%; right:8%; bottom:12%; height:27%; background:linear-gradient(160deg,#fff 0 48%,#8d8a84 49% 60%,#e5e2dc 61%); border-radius:45% 4px 4px 4px; box-shadow:0 8px 14px rgba(30,25,20,.15); }
.room-photo.coral { background:linear-gradient(145deg,#e1c8bd,#f5e7df); }.room-photo.blue { background:linear-gradient(145deg,#beced6,#edf3f5); }.room-photo.green { background:linear-gradient(145deg,#c5d8ca,#eef4ee); }
.room-photo i { position:absolute; z-index:2; bottom:10%; width:40px; height:52px; background:#f5f3ee; border-radius:4px 4px 17px 17px; box-shadow:0 6px 9px rgba(0,0,0,.12); }.room-photo i:nth-child(1){left:18%}.room-photo i:nth-child(2){left:48%}.room-photo i:nth-child(3){left:76%}
.room-summary { display:grid; grid-template-columns:1fr auto; gap:20px; align-items:center; }
.room-summary h2 { margin:0 0 3px; font-family:var(--sans); font-size:21px; }
.room-heading { display:flex; align-items:center; flex-wrap:wrap; gap:10px; }
.room-heading h1, .room-heading h2 { margin-bottom:0; }
.config-badge { display:inline-flex; align-items:center; padding:4px 8px; border-radius:4px; font-size:10px; white-space:nowrap; }
.config-badge.configured { color:#246c4c; background:#e5f3ea; border:1px solid #cbe7d5; }
.config-badge.plain { color:#777; background:#f0efed; border:1px solid #e2dfda; }
.room-summary p { margin:6px 0; color:#555b60; font-size:12px; }
.room-summary .summary-intro { color:#282c30; font-size:13px; }
.room-list-action { align-self:stretch; display:flex; flex-direction:column; justify-content:space-between; align-items:flex-end; padding:5px 0 8px; }
.room-list-action > span { padding:5px 9px; border:1px solid #6b6b6b; font-size:11px; }
.availability-line { grid-column:1 / -1; position:relative; display:grid; grid-template-columns:repeat(16,1fr); padding-top:13px; color:#919191; font-size:10px; text-align:center; }
.availability-line::before { content:""; position:absolute; left:0; right:0; top:0; height:11px; background:repeating-linear-gradient(90deg,#dedede 0 calc(6.25% - 1px),#fff calc(6.25% - 1px) 6.25%); }
.availability-line i { position:absolute; left:0; top:0; width:var(--free); height:11px; background:#cfd0d0; }

/* High-density resource schedule */
.resource-schedule-page { max-width:1760px; }
.resource-type-scroller { position:relative; display:grid; grid-template-columns:46px minmax(0,1fr) 46px; align-items:stretch; margin-bottom:14px; overflow:hidden; background:#f1e9e7; border:1px solid #e4d7d4; border-radius:5px; box-shadow:0 8px 24px rgba(65,45,37,.035); }
.resource-type-track { display:flex; overflow-x:auto; scroll-behavior:smooth; scrollbar-width:none; }
.resource-type-track::-webkit-scrollbar { display:none; }
.resource-type-track button { position:relative; flex:0 0 auto; min-width:126px; min-height:58px; padding:0 22px; color:#4f4c4a; background:transparent; border:0; border-right:1px solid rgba(154,113,108,.12); font-size:12px; white-space:nowrap; transition:color .18s,background .18s; }
.resource-type-track button::after { content:""; position:absolute; left:20px; right:20px; bottom:0; height:3px; background:#b84f50; transform:scaleX(0); transition:transform .18s; }
.resource-type-track button:hover { color:#8f2f32; background:rgba(255,255,255,.48); }
.resource-type-track button.active { color:#fff; background:#963335; font-weight:700; }
.resource-type-track button.active::after { background:#fff; transform:scaleX(.48); }
.resource-type-arrow { position:relative; z-index:2; color:#8e3335; background:#fff; border:0; font-family:Georgia,serif; font-size:28px; box-shadow:5px 0 14px rgba(83,48,44,.08); }
.resource-type-arrow.next { box-shadow:-5px 0 14px rgba(83,48,44,.08); }
.resource-type-arrow:hover { color:#fff; background:#8f2f32; }
.scene-booking-guide { display:flex; align-items:center; justify-content:space-between; gap:24px; margin:-2px 0 14px; padding:16px 20px; color:#4d5258; background:#fff; border:1px solid #e4e0da; border-left:4px solid #923335; box-shadow:0 7px 22px rgba(64,45,38,.035); }
.scene-booking-guide > div:first-child { display:grid; gap:4px; }
.scene-booking-guide small { color:#9c3a3c; font-size:9px; font-weight:700; letter-spacing:.15em; }
.scene-booking-guide b { font-size:14px; }
.scene-booking-guide span { color:#7d8388; font-size:11px; }
.scene-booking-guide ol { display:flex; gap:18px; margin:0; padding:0; list-style:none; }
.scene-booking-guide li { display:flex; align-items:center; gap:7px; color:#646a70; font-size:11px; white-space:nowrap; }
.scene-booking-guide li i { display:grid; place-items:center; width:22px; height:22px; color:#fff; background:#923335; border-radius:50%; font-size:10px; font-style:normal; }
.search-subscene-strip { display:flex; align-items:center; justify-content:space-between; gap:24px; margin:-2px 0 14px; padding:14px 18px; background:#f9f6f2; border:1px solid #e4ddd6; }
.search-subscene-strip > div:first-child { display:grid; gap:3px; flex:0 0 auto; }
.search-subscene-strip > div:first-child small { color:#9a3639; font-size:8px; font-weight:700; letter-spacing:.15em; }
.search-subscene-strip > div:first-child b { font-size:12px; }
.search-subscene-strip > div:first-child span { color:#898d91; font-size:9px; }
.search-subscene-strip > div:last-child { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:7px; max-height:88px; overflow-y:auto; }
.search-subscene-strip button { display:grid; gap:2px; min-height:36px; padding:6px 10px; color:#5a6065; background:#fff; border:1px solid #ded8d1; border-radius:3px; text-align:left; }
.search-subscene-strip button b { font-size:9px; }
.search-subscene-strip button small { color:#92969a; font-size:8px; }
.search-subscene-strip button.active { color:#fff; background:#923335; border-color:#923335; }
.search-subscene-strip button.active small { color:#f0d8d6; }
.sport-guide-copy { display:grid; justify-items:end; gap:4px; max-width:480px; text-align:right; }
.sport-project-tabs { display:flex!important; grid-auto-flow:unset!important; flex-wrap:wrap; justify-content:flex-start; gap:8px!important; }
.sport-project-tabs button { display:flex; align-items:center; gap:8px; min-height:36px; padding:0 13px; color:#5d6267; background:#faf8f5; border:1px solid #ddd8d2; border-radius:4px; font-size:11px; }
.sport-project-tabs button em { display:grid; place-items:center; min-width:20px; height:20px; padding:0 5px; color:#8e3538; background:#f0e4e2; border-radius:10px; font-size:9px; font-style:normal; }
.sport-project-tabs button:hover { color:#8e3538; border-color:#b98c89; }
.sport-project-tabs button.active { color:#fff; background:#923335; border-color:#923335; }
.sport-project-tabs button.active em { color:#923335; background:#fff; }
.sport-booking-controls { display:grid!important; justify-items:start; gap:10px!important; }
.sport-mode-picker { display:flex!important; align-items:stretch; justify-content:flex-start; gap:7px!important; padding:7px; background:#f4f0eb; border:1px solid #dfd7cf; border-radius:6px; }
.sport-mode-picker > span { align-self:center; padding:0 6px; color:#706963; font-size:10px; font-weight:700; }
.sport-mode-picker button { display:grid; grid-template-columns:auto; gap:1px; min-width:118px; padding:8px 12px; color:#575c61; background:#fff; border:1px solid #d9d2cb; border-radius:4px; text-align:left; }
.sport-mode-picker button b { font-size:11px; }
.sport-mode-picker button small { color:#92979b; font-size:9px; font-weight:400; letter-spacing:0; }
.sport-mode-picker button.active { color:#fff; background:#923335; border-color:#923335; box-shadow:0 5px 14px rgba(111,37,39,.18); }
.sport-mode-picker button.active small { color:#f4dedd; }
.classroom-guide { display:flex; align-items:center; justify-content:space-between; gap:20px; }
.classroom-guide-copy { display:grid; gap:4px; }
.classroom-guide-copy small { color:#a13d3e; font-size:9px; font-weight:700; letter-spacing:.12em; }
.classroom-guide-copy b { color:#373d43; font-size:15px; }
.classroom-guide-copy span { color:#7b8085; font-size:11px; }
.classroom-mode-static { display:flex; align-items:center; gap:14px; color:#87383b; background:#faf5f2; border-color:#e6d4cd; }
.classroom-mode-static span { color:#74767a; font-size:11px; }
.classroom-form-line > small { color:#7b8085; font-size:10px; }
.seat-field-control { grid-column:2/-1; display:flex; align-items:center; justify-content:space-between; gap:18px; min-height:54px; padding:8px 10px 8px 14px; background:#f8f6f2; border:1px solid #ddd8d1; border-radius:4px; }
.seat-field-control > div { display:grid; gap:3px; }
.seat-field-control b { color:#3f464b; font-size:12px; }
.seat-field-control small { color:#858a8e; font-size:10px; }
.seat-field-control button { flex:none; }
.seat-selector-modal { width:min(920px,94vw); max-height:90vh; overflow:auto; background:#fff; }
.seat-selector-modal > header { padding:24px 28px 18px; color:#fff; background:linear-gradient(118deg,#75272b,#a84945); }
.seat-selector-modal > header small { color:#f0cfca; font-weight:700; letter-spacing:.14em; }
.seat-selector-modal > header h2 { margin:5px 0; }
.seat-selector-modal > header p { margin:0; color:#f8e8e4; font-size:12px; }
.seat-legend { display:flex; align-items:center; gap:18px; padding:14px 28px; color:#656a6f; background:#f7f4ef; border-bottom:1px solid #e4dfd8; font-size:11px; }
.seat-legend span { display:flex; align-items:center; gap:6px; }
.seat-legend i { width:15px; height:15px; border:1px solid #b8c9bc; border-radius:4px; }
.seat-legend i.available { background:#eff8f1; }
.seat-legend i.selected { background:#973639; border-color:#973639; }
.seat-legend i.occupied { background:#d9d7d2; border-color:#d0ccc5; }
.seat-legend b { margin-left:auto; color:#8e3235; }
.seat-map-shell { margin:22px 28px; padding:24px 30px 18px; background-color:#fbfbf9; background-image:linear-gradient(#efede8 1px,transparent 1px),linear-gradient(90deg,#efede8 1px,transparent 1px); background-size:34px 34px; border:1px solid #dedad3; border-radius:8px; }
.seat-map-front { display:flex; justify-content:center; margin:0 auto 26px; }
.seat-map-front span { min-width:240px; padding:8px 24px; color:#fff; background:#777a7c; border-radius:3px; font-size:11px; text-align:center; letter-spacing:.08em; }
.seat-map-zones { display:grid; grid-template-columns:repeat(3,minmax(120px,1fr)); gap:52px; align-items:start; }
.seat-zone { display:grid; grid-template-columns:repeat(2,minmax(34px,1fr)); gap:7px; }
.seat { display:grid; place-items:center; min-width:34px; height:34px; padding:0; color:#477058; background:#e4f4e7; border:1px solid #acd6b4; border-radius:7px 7px 4px 4px; font-size:11px; font-weight:700; cursor:pointer; transition:.16s ease; }
button.seat:hover:not(:disabled) { color:#fff; background:#68b947; border-color:#68b947; transform:translateY(-2px); }
.seat.selected,.seat:has(input:checked) { color:#fff; background:#963639; border-color:#963639; box-shadow:0 4px 10px rgba(117,39,43,.2); }
.seat.occupied { color:#9b9994; background:#dfddd8; border-color:#d2cfc8; cursor:not-allowed; text-decoration:line-through; }
.seat-map-exit { display:flex; justify-content:space-between; margin-top:24px; color:#888c8f; font-size:10px; }
.seat-selector-modal > footer { display:flex; justify-content:flex-end; gap:10px; padding:16px 28px 24px; border-top:1px solid #e5e0d9; }
.my-edit-seat-picker { margin:18px 0; padding:18px; background:#f7f4ef; border:1px solid #dfd9d1; border-radius:6px; }
.my-edit-seat-head { display:flex; align-items:center; justify-content:space-between; gap:16px; }
.my-edit-seat-head > div:first-child { display:grid; gap:3px; }
.my-edit-seat-head em { color:#c33; font-style:normal; }
.my-edit-seat-head span { color:#7b8085; font-size:10px; }
.my-edit-seat-picker .seat-legend { padding:0; border:0; }
.seat-map-shell.compact { margin:14px 0 0; padding:18px; }
.seat input { position:absolute; opacity:0; pointer-events:none; }
.seat label span,.seat > span { pointer-events:none; }
.classroom-config-field[hidden] { display:none; }
.classroom-config-field small { color:#83868b; font-size:11px; }
.reviewer-note { display:block; margin-top:3px; color:#8d6060; font-size:10px; white-space:nowrap; }
@media (max-width:720px) { .classroom-guide { align-items:stretch; flex-direction:column; } }
@media (max-width:720px) {
  .banner-book-button { right:20px; bottom:18px; min-width:138px; min-height:46px; }
  .seat-map-shell { margin:14px; padding:18px 12px; overflow-x:auto; }
  .seat-map-zones { min-width:620px; gap:36px; }
  .seat-legend { flex-wrap:wrap; padding:12px 16px; }
  .my-edit-seat-head { align-items:flex-start; flex-direction:column; }
}
.resource-filter-bar { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)) 112px; gap:16px 18px; align-items:center; padding:20px 22px; background:#fff; border:1px solid #e6e1da; box-shadow:0 8px 28px rgba(65,45,37,.04); }
.resource-filter-bar label { display:grid; grid-template-columns:72px minmax(0,1fr); gap:8px; align-items:center; }
.resource-filter-bar label > span { color:#5f6267; font-size:11px; font-weight:600; white-space:nowrap; }
.resource-filter-bar input,.resource-filter-bar select { width:100%; min-width:0; height:42px; padding:0 11px; color:#34383d; background:#fff; border:1px solid #d9d6d1; border-radius:3px; outline:none; }
.resource-filter-bar input:focus,.resource-filter-bar select:focus { border-color:#a43a3c; box-shadow:0 0 0 3px rgba(158,47,47,.08); }
.resource-filter-actions { display:flex; gap:8px; align-items:center; }
.resource-filter-actions button { min-height:42px; flex:1; }
.resource-search-button { height:42px; color:#fff; background:#9b3436; border:0; border-radius:3px; font-size:18px; }
.resource-search-button b { margin-left:5px; font-size:11px; }
.resource-action-strip { display:flex; align-items:center; justify-content:space-between; gap:20px; margin-top:14px; padding:14px 18px; color:#7a7068; background:#fff9f1; border-left:3px solid #ba5c3a; }
.resource-action-strip > p { margin:0; font-size:11px; line-height:1.6; }
.resource-action-strip > p b { color:#ae482c; }
.resource-action-strip > div { display:flex; align-items:center; gap:12px; flex:0 0 auto; }
.resource-action-strip > div > span { max-width:310px; overflow:hidden; color:#7b3032; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.resource-action-strip .primary { min-height:38px; border-radius:3px; box-shadow:none; font-size:11px; }
.resource-action-strip label { display:flex; align-items:center; gap:6px; color:#6e7074; font-size:10px; }
.resource-date-control input { height:34px; max-width:140px; padding:0 7px; color:#34383d; background:#fff; border:1px solid #d8d4cf; }
.resource-disabled { display:inline-block; margin-left:5px; padding:2px 5px; color:#9d4f46; background:#fae9e5; border-radius:3px; font-size:10px; font-style:normal; }
.sport-project-badge { display:inline-flex; align-items:center; min-height:20px; padding:0 6px; color:#357058; background:#e8f3ec; border:1px solid #cfe4d6; border-radius:3px; font-size:9px; font-style:normal; font-weight:600; white-space:nowrap; }
.sport-static-value { color:#315f4c; background:#edf6f0; border-color:#d1e5d8; }
.resource-action-strip select { height:34px; padding:0 7px; border:1px solid #d8d4cf; background:#fff; }
.resource-board { margin-top:14px; padding:0 0 14px; background:#fff; border:1px solid #dfdcd7; box-shadow:0 12px 35px rgba(61,43,36,.055); }
.resource-table-scroll { max-height:min(72vh,780px); overflow:auto; overscroll-behavior:contain; }
.resource-schedule-table { width:100%; min-width:2100px; table-layout:fixed; border-collapse:separate; border-spacing:0; }
.resource-schedule-table th,.resource-schedule-table td { height:68px; padding:0; border-right:1px solid #dddcd9; border-bottom:1px solid #dddcd9; text-align:center; vertical-align:middle; }
.resource-schedule-table thead th { position:sticky; top:0; z-index:5; height:46px; color:#fff; background:#777a7d; font-size:11px; font-weight:600; white-space:nowrap; }
.resource-schedule-table thead th:first-child { left:0; z-index:7; width:300px; background:#696d70; }
.resource-schedule-table tbody td:first-child { position:sticky; left:0; z-index:3; width:300px; padding:7px 10px; background:#fff; text-align:left; box-shadow:6px 0 12px rgba(42,42,42,.035); }
.resource-schedule-table tbody tr:hover td:first-child { background:#fbf7f3; }
.resource-schedule-table td.slot-empty { background:#fff; }
.resource-identity { display:grid; grid-template-columns:74px minmax(0,1fr); align-items:center; gap:11px; }
.resource-thumb-button { width:74px; height:52px; padding:0; overflow:hidden; background:none; border:0; }
.resource-thumb { position:relative; display:block; width:100%; height:100%; overflow:hidden; background:linear-gradient(145deg,#d8cfbf,#f4eee6); }
.resource-thumb::before { content:""; position:absolute; left:7%; right:4%; bottom:7%; height:58%; background:linear-gradient(165deg,#eee8df,#92918d); clip-path:polygon(0 28%,100% 5%,100% 100%,0 100%); }
.resource-thumb::after { content:""; position:absolute; left:8%; right:8%; top:30%; height:18%; background:repeating-linear-gradient(90deg,#53656c 0 12%,#dce2df 13% 22%); }
.resource-thumb i { position:absolute; z-index:2; bottom:6%; width:8%; height:23%; background:#3d474b; }.resource-thumb i:nth-child(1){left:18%}.resource-thumb i:nth-child(2){left:46%}.resource-thumb i:nth-child(3){left:74%}
.resource-thumb em { position:absolute; z-index:4; inset:0; display:grid; place-items:center; color:#fff; background:rgba(62,25,28,.6); opacity:0; font-size:22px; font-style:normal; transition:.18s; }
.resource-thumb-button:hover .resource-thumb em { opacity:1; }
.resource-thumb-button[data-resource-image="1"] .resource-thumb { background:#ddd url("assets/qiyinge-room.png") center/cover no-repeat; }
.resource-thumb-button[data-resource-image="1"] .resource-thumb::before,.resource-thumb-button[data-resource-image="1"] .resource-thumb::after,.resource-thumb-button[data-resource-image="1"] .resource-thumb i { display:none; }
.resource-identity > div { display:grid; gap:2px; min-width:0; width:100%; }
.resource-title-line { display:flex; align-items:center; gap:7px; min-width:0; width:100%; }
.resource-name-button { overflow:hidden; padding:0; color:#2e6c9b; background:none; border:0; text-align:left; text-overflow:ellipsis; white-space:nowrap; font-size:12px; font-weight:700; }
.resource-name-button:hover { color:#9b3436; text-decoration:underline; }
.resource-identity small,.resource-identity span { overflow:hidden; color:#777d83; font-size:9px; text-overflow:ellipsis; white-space:nowrap; }
.resource-identity span { color:#9a9da0; }
.resource-identity .resource-service-wrap { position:relative; flex:0 0 auto; overflow:visible; margin-left:auto; }
.resource-schedule-table tbody tr:has(.resource-service-wrap:hover) td:first-child,.resource-schedule-table tbody tr:has(.resource-service-wrap:focus-within) td:first-child,.resource-schedule-table tbody tr:has(.resource-service-icon[aria-expanded="true"]) td:first-child { z-index:12; }
.resource-service-icon { display:block; width:27px; height:29px; padding:0; overflow:hidden; background:transparent url("assets/service-items-icon.png") -12px -11px/52px 56px no-repeat; border:0; cursor:pointer; }
.resource-service-icon:hover,.resource-service-icon[aria-expanded="true"] { filter:brightness(.9); }
.resource-service-icon:focus-visible { outline:2px solid #742629; outline-offset:2px; }
.resource-service-popover { display:none!important; }
.resource-service-float { position:fixed; z-index:1100; display:grid; gap:7px; width:min(420px,calc(100vw - 24px)); max-height:calc(100vh - 24px); padding:13px 15px; overflow-y:auto; color:#364757; background:#fff; border:1px solid #d2d9de; border-radius:8px; box-shadow:0 14px 35px rgba(29,35,40,.2); font-size:11px; line-height:1.45; }
.resource-service-float[hidden] { display:none; }
.resource-service-float b { color:#91373a; font-size:12px; }
.resource-service-float span { overflow-wrap:anywhere; }
.resource-slot { display:grid; place-items:center; gap:4px; width:100%; height:67px; padding:0; color:#4f705e; background:#f4faf6; border:0; font-size:10px; transition:.15s; }
.resource-slot i { width:6px; height:6px; background:#71a687; border-radius:50%; }
.resource-slot:hover { color:#fff; background:#a04647; }
.resource-slot:hover i { background:#fff; }
.resource-slot.selected { color:#fff; background:#7f292c; box-shadow:inset 0 0 0 3px #dba9a5; }
.resource-slot.selected i { background:#fff; box-shadow:0 0 0 4px rgba(255,255,255,.17); }
.basketball-ticket-slot { gap:2px; color:#2f6754; background:#eef8f1; }
.basketball-ticket-slot b { font-size:12px; }
.basketball-ticket-slot small { color:#71917f; font-size:8px; }
.basketball-ticket-slot:hover small,.basketball-ticket-slot.selected small { color:#fff; }
.basketball-ticket { display:grid; place-content:center; gap:2px; min-height:67px; padding:5px; }
.basketball-ticket b { font-size:10px; }
.basketball-ticket small { font-size:8px; }
.basketball-ticket.sold-out { color:#9a7770; background:#f7efed; }
.basketball-mode-static { display:flex; align-items:center; justify-content:space-between; gap:12px; color:#7d2e30; background:#fbf2ef; border-color:#e7cbc5; }
.basketball-mode-static b { font-size:12px; }
.basketball-mode-static span { color:#7e7771; font-size:10px; }
.basketball-form-line select { max-width:180px; }
.resource-occupied { display:grid; align-content:center; gap:4px; min-height:67px; padding:6px 8px; background:#fffaf5; }
.resource-occupied-pill { display:block; overflow:hidden; padding:5px 8px; color:#fff; background:#d89954; border-radius:999px; font-size:10px; font-weight:700; text-overflow:ellipsis; white-space:nowrap; }
.resource-occupied small { color:#53545a; font-size:10px; }
.resource-slot-note { color:#8a8d90; font-size:10px; }
.resource-pagination { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:16px 18px 2px; color:#71757a; font-size:11px; }
.resource-pagination > div { display:flex; gap:6px; }
.resource-pagination button { min-width:34px; height:32px; padding:0 10px; color:#656a70; background:#fff; border:1px solid #d9dcdf; border-radius:3px; }
.resource-pagination button.active { color:#fff; background:#8f2f32; border-color:#8f2f32; }
.resource-pagination button:disabled { cursor:not-allowed; opacity:.4; }
.modal:has(.resource-image-modal) { width:min(980px,100%); border-radius:5px; }
.modal:has(.resource-image-modal) .modal-close { color:#4e5358; background:#eef0f2; }
.resource-image-modal > header { padding:24px 66px 20px 26px; border-bottom:1px solid #e5e7e9; }
.resource-image-modal header small { color:#983436; font-size:10px; font-weight:700; }
.resource-image-modal header h2 { margin:5px 0 3px; font-family:var(--serif); font-size:24px; }
.resource-image-modal header p { margin:0; color:#858a90; font-size:11px; }
.resource-large-visual { position:relative; height:480px; overflow:hidden; background:linear-gradient(145deg,#d8cfbf,#f4eee6); }
.resource-large-visual::before { content:""; position:absolute; inset:0; background:linear-gradient(160deg,rgba(255,255,255,.2),transparent 45%),radial-gradient(circle at 76% 18%,rgba(255,255,255,.78) 0 5%,transparent 24%); }
.large-room-scene { position:absolute; left:6%; right:6%; bottom:0; height:73%; background:linear-gradient(170deg,rgba(248,243,234,.96),rgba(157,157,153,.9)); clip-path:polygon(0 24%,30% 14%,34% 0,100% 8%,100% 100%,0 100%); box-shadow:0 18px 35px rgba(32,29,28,.26); }
.large-room-scene::before { content:""; position:absolute; left:4%; right:4%; top:28%; height:29%; background:repeating-linear-gradient(90deg,#475e68 0 8%,#a7c1c7 8.4% 12%,#e8e3da 12.4% 18%); }
.large-room-scene::after { content:""; position:absolute; left:0; right:0; bottom:0; height:28%; background:#596367; border-top:13px solid rgba(255,255,255,.72); }
.large-room-scene i { position:absolute; z-index:2; bottom:0; width:7%; height:27%; background:#313a3e; }.large-room-scene i:nth-child(1){left:13%}.large-room-scene i:nth-child(2){left:37%}.large-room-scene i:nth-child(3){left:61%}.large-room-scene i:nth-child(4){left:84%}
.resource-large-visual > span { position:absolute; z-index:3; left:22px; bottom:18px; padding:6px 10px; color:#fff; background:rgba(35,31,32,.53); backdrop-filter:blur(6px); font-size:10px; }
.resource-image-modal > footer { display:flex; justify-content:flex-end; gap:10px; padding:16px 22px; }
.resource-real-photo-wrap { display:grid; place-items:center; max-height:min(68vh,760px); overflow:auto; background:#1f2325; }
.resource-real-photo { display:block; width:auto; max-width:100%; max-height:min(68vh,760px); height:auto; object-fit:contain; }
.popular-card:has([data-book-room="1"]) .popular-visual { background:#ddd url("assets/qiyinge-room.png") center/cover no-repeat; }
.popular-card:has([data-book-room="1"]) .popular-visual::before,.popular-card:has([data-book-room="1"]) .venue-architecture { display:none; }
.detail-page.room-1 .detail-photo { background:#ddd url("assets/qiyinge-room.png") center/cover no-repeat; }
.detail-page.room-1 .detail-photo::before,.detail-page.room-1 .detail-photo::after,.detail-page.room-1 .detail-photo i { display:none; }

.back-link { margin-bottom:18px; padding:0; color:var(--red); background:none; border:0; }
.detail-summary { display:grid; grid-template-columns:420px 1fr 300px; gap:26px; align-items:center; padding:22px; background:#ececec; }
.detail-photo { min-height:260px; }
.detail-summary h1 { font-family:var(--sans); font-size:24px; }
.detail-summary p { margin:11px 0; color:#51565b; font-size:13px; }
.detail-summary aside { position:relative; display:grid; gap:15px; padding:22px 26px; color:#a05c55; background:#fff; font-size:13px; }
.detail-summary aside::before { content:""; position:absolute; left:-16px; top:40%; border:9px solid transparent; border-right-color:#fff; }
.detail-summary aside b { color:var(--red); }
.date-picker { display:grid; grid-template-columns:repeat(11,1fr); gap:16px; margin:44px 8px 28px; }
.date-picker button { display:grid; padding:0; color:#943530; background:#fff; border:1px solid #eadbd8; border-radius:5px; overflow:hidden; }
.date-picker b { padding:7px; background:#e8d4d1; }
.date-picker span { padding:9px 4px; font-weight:700; }
.date-picker button.active { border-color:var(--red); }.date-picker button.active b { color:#fff; background:var(--red); }.date-picker button.disabled { opacity:.34; }
.detail-timeline { position:relative; display:grid; grid-template-columns:repeat(16,1fr); padding-top:17px; color:#888; font-size:11px; text-align:center; }
.timeline-bar { position:absolute; left:4%; right:4%; top:0; height:12px; background:repeating-linear-gradient(90deg,#e0e0e0 0 calc(6.25% - 1px),#fff calc(6.25% - 1px) 6.25%); }
.timeline-bar i { display:block; width:46%; height:100%; background:#cfcfcf; }.timeline-bar em { position:absolute; left:47%; top:0; width:4%; height:100%; background:#65c45a; }
.reservation-form-panel { margin-top:22px; background:#fff; border:1px solid var(--line); box-shadow:0 12px 34px rgba(60,42,36,.05); }
.form-panel-head { display:flex; justify-content:space-between; align-items:flex-end; padding:22px 28px 18px; border-bottom:3px solid var(--red); }
.form-panel-head small { color:var(--red); letter-spacing:.16em; }
.form-panel-head h2 { margin:4px 0 0; }
.form-panel-head > span { color:var(--muted); font-size:11px; }.form-panel-head > span b { color:var(--red); }
.reservation-form { display:grid; gap:0; padding:16px 28px 28px; }
.form-line { display:grid; grid-template-columns:170px minmax(0,1fr) 120px minmax(180px,.45fr); gap:16px; align-items:center; min-height:64px; padding:10px 0; border-bottom:1px solid #eeeae5; }
.form-line > label:first-child { text-align:right; color:#3f454c; font-size:13px; font-weight:600; }
.form-line > label span { color:#cb2e2e; }
.form-line input:not([type="checkbox"]):not([type="radio"]), .form-line select, .form-line textarea { width:100%; min-height:42px; padding:9px 12px; color:var(--ink); background:#fff; border:1px solid #d3cfca; border-radius:4px; outline:none; }
.form-line input:focus, .form-line select:focus, .form-line textarea:focus { border-color:var(--red); box-shadow:0 0 0 3px rgba(158,47,47,.08); }
.form-line textarea { min-height:92px; resize:vertical; }
.form-line:not(.split):not(.time-line):not(.conditional-field):not(.service-line) > :nth-child(2) { grid-column:2 / -1; }
.form-line .minor-label { text-align:right; font-size:13px; font-weight:600; }
.static-value { min-height:42px; display:flex; align-items:center; gap:10px; padding:0 12px; color:#4e555c; background:#f7f5f2; border:1px solid #e3dfda; border-radius:4px; }
.static-value small { margin-left:auto; color:#92979d; font-size:11px; }
.static-value.accent { color:var(--red); font-weight:600; }
.form-line.time-line { grid-template-columns:170px minmax(150px,1fr) 22px minmax(150px,1fr); }
.form-line.time-line > span { text-align:center; color:var(--muted); }
.input-action { display:grid; grid-template-columns:1fr auto; grid-column:2 / -1; }
.input-action input { border-radius:4px 0 0 4px !important; }
.input-action button { min-width:92px; color:#fff; background:var(--red); border:0; border-radius:0 4px 4px 0; }
.inline-checks { grid-column:2 / -1; display:flex; gap:28px; }
.inline-checks label { display:flex; align-items:center; gap:7px; font-size:13px; }
.conditional-field { grid-template-columns:170px 1fr; padding:18px 0; background:#fbf7f4; }
.conditional-field > small { grid-column:2; color:#9a6b64; font-size:10px; }
.choice-grid { display:flex; flex-wrap:wrap; gap:9px; }
.choice-grid label { position:relative; display:flex; align-items:flex-start; gap:8px; padding:9px 11px; color:#4d535a; background:#fff; border:1px solid #ddd8d2; border-radius:5px; font-size:12px; line-height:1.45; cursor:pointer; }
.choice-grid input { flex:0 0 auto; width:15px; height:15px; margin:1px 0 0; accent-color:var(--red); }
.choice-grid label:has(input:checked) { color:var(--red); background:var(--red-pale); border-color:#c98d87; }
.service-line { grid-template-columns:170px 1fr; align-items:start; padding:20px 0; }
.service-line > label:first-child { padding-top:11px; }
.service-groups { display:grid; gap:14px; }
.service-group { display:grid; grid-template-columns:84px 1fr; gap:12px; align-items:start; }
.service-group > strong { padding:9px 0; color:var(--red); font-size:12px; }
.service-group .choice-grid { gap:7px; }
.service-group .choice-grid label { max-width:100%; }
.profile-reservation-panel { margin-top:24px; padding:22px; background:#fff; border:1px solid var(--line); border-radius:9px; box-shadow:0 8px 26px rgba(60,45,35,.04); }
.my-booking-filters { display:grid; grid-template-columns:minmax(0,1.2fr) minmax(0,1.7fr) minmax(0,1.2fr) 120px; gap:16px 18px; align-items:center; margin:18px 0 22px; padding:20px; background:#faf9f7; border:1px solid var(--line); border-radius:6px; }
.my-booking-filters label { display:grid; grid-template-columns:88px minmax(0,1fr); gap:8px; align-items:center; color:#4f565d; font-size:12px; font-weight:600; }
.my-booking-filters label > span:first-child { white-space:nowrap; }
.my-booking-filters input,.my-booking-filters select,.space-config-grid input,.space-config-grid select { width:100%; min-width:0; height:40px; padding:0 10px; color:#34383d; background:#fff; border:1px solid #dcd8d2; border-radius:4px; }
.my-booking-filters label:nth-child(7) { grid-column:1 / 3; }
.my-booking-filters label:nth-child(8) { grid-column:3; }
.my-time-range { display:flex; align-items:center; gap:7px; min-width:0; }
.my-time-range input { flex:1 1 0; }
.my-time-range i { color:#858689; font-style:normal; font-weight:400; }
.my-filter-actions { grid-column:4; grid-row:1; display:flex; flex-direction:column; gap:8px; }
.my-filter-actions button { min-height:40px; padding:0 12px; }
.my-reservation-toolbar { display:flex; justify-content:space-between; align-items:center; gap:12px; margin-bottom:12px; color:#62676d; font-size:12px; }
.my-reservation-toolbar .secondary { min-height:36px; }
.my-reservation-table-wrap { overflow:auto; border:1px solid var(--line); }
.my-reservation-table { width:100%; min-width:1130px; border-collapse:collapse; table-layout:fixed; }
.my-reservation-table th { padding:15px 12px; color:#575a60; background:#f4f2ef; border-bottom:1px solid var(--line); font-size:12px; text-align:left; white-space:nowrap; }
.my-reservation-table td { padding:15px 12px; color:#444b51; border-bottom:1px solid var(--line); font-size:12px; line-height:1.55; vertical-align:middle; overflow-wrap:anywhere; }
.my-reservation-table tr:last-child td { border-bottom:0; }
.my-reservation-table th:nth-child(1) { width:17%; }
.my-reservation-table th:nth-child(2) { width:12%; }
.my-reservation-table th:nth-child(3) { width:14%; }
.my-reservation-table th:nth-child(4) { width:14%; }
.my-reservation-table th:nth-child(5) { width:9%; }
.my-reservation-table th:nth-child(6) { width:12%; }
.my-reservation-table th:nth-child(7) { width:9%; }
.my-reservation-table th:nth-child(8) { width:13%; }
.my-reservation-table td small { display:block; margin-top:3px; color:#92969b; font-size:10px; }
.my-cell-ellipsis { display:-webkit-box; max-height:3.1em; overflow:hidden; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
.my-booking-actions { display:flex; flex-wrap:wrap; gap:6px; margin-top:9px; }
.my-reservation-table .my-booking-actions { margin:0; }
.my-booking-actions button { padding:5px 7px; color:var(--red); background:#fff; border:1px solid #dbc9c6; border-radius:4px; font-size:11px; }
.my-booking-actions button.locked { color:#868b91; border-color:#dedede; }
.my-booking-actions button:disabled { opacity:.45; cursor:not-allowed; }
.resource-info-modal,.my-edit-modal,.space-config-modal { padding:22px 26px 24px; }
.resource-info-modal header,.my-edit-modal header,.space-config-modal header { padding-bottom:15px; border-bottom:1px solid var(--line); }
.resource-info-modal header small,.my-edit-modal header small,.space-config-modal header small { color:var(--red); letter-spacing:.12em; }
.resource-info-modal h2,.my-edit-modal h2,.space-config-modal h2 { margin:6px 0; font-size:24px; }
.resource-info-modal header p,.my-edit-modal header p,.space-config-modal header p { margin:0; color:var(--muted); font-size:12px; }
.resource-info-grid,.space-config-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin:18px 0; }
.resource-info-grid > div { display:grid; gap:5px; min-height:64px; padding:12px 14px; background:#f8f7f5; border:1px solid #ebe6df; }
.resource-info-grid span,.space-config-grid label > span { color:var(--muted); font-size:11px; }
.resource-info-grid b { font-size:13px; font-weight:600; }
.resource-info-grid .wide,.space-config-grid .wide { grid-column:1/-1; }
.resource-info-modal footer,.my-edit-modal footer,.space-config-modal footer { display:flex; justify-content:flex-end; gap:10px; padding-top:14px; border-top:1px solid var(--line); }
.modal:has(.venue-detail-modal) { width:min(960px,100%); }
.venue-detail-modal { padding:0; }
.venue-detail-modal > header { padding:23px 28px 20px; color:#fff; background:#792c33; border:0; }
.venue-detail-modal > header small,.venue-detail-modal > header p { color:#f2d8d7; }
.venue-detail-modal > header h2 { margin:5px 0; color:#fff; }
.venue-detail-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 28px; padding:20px 28px 8px; }
.venue-detail-grid > div { display:grid; grid-template-columns:132px minmax(0,1fr); gap:12px; align-items:start; min-height:57px; padding:14px 0; border-bottom:1px solid #efeae6; font-size:12px; }
.venue-detail-grid span { color:#5c6066; font-weight:700; }
.venue-detail-grid b { color:#333a40; font-weight:500; overflow-wrap:anywhere; }
.venue-detail-section { padding:15px 28px 19px; border-bottom:1px solid #eee8e3; }
.venue-detail-section h3 { margin:0 0 12px; color:#34393d; font-size:13px; }
.venue-service-list { display:flex; flex-wrap:wrap; gap:7px; }
.venue-service-list > span { padding:7px 10px; color:#653b3c; background:#faf3f1; border:1px solid #ead5d1; border-radius:4px; font-size:11px; line-height:1.4; }
.venue-service-list > span.muted { color:#8b9093; background:#f7f7f7; border-color:#e6e6e6; }
.venue-detail-photo { display:block; max-width:100%; max-height:260px; object-fit:contain; border-radius:5px; }
.venue-detail-placeholder { position:relative; width:min(400px,100%); height:185px; overflow:hidden; background:linear-gradient(145deg,#a4b7bc,#e4ddd2); }
.venue-detail-placeholder .large-room-scene { opacity:.8; }
.venue-detail-placeholder > span { position:absolute; right:9px; bottom:8px; padding:4px 7px; color:#fff; background:rgba(35,40,42,.7); font-size:10px; }
.venue-instruction-table { overflow-x:auto; border:1px solid #dedbd8; }
.venue-instruction-head,.venue-instruction-row { display:grid; grid-template-columns:26% 9% minmax(180px,1fr) 110px; min-width:530px; }
.venue-instruction-head { background:#f6f7f7; color:#4b5055; font-weight:700; }
.venue-instruction-head > span,.venue-instruction-row > span { padding:11px 12px; border-right:1px solid #dedbd8; font-size:11px; overflow-wrap:anywhere; }
.venue-instruction-row > span { border-top:1px solid #dedbd8; }
.venue-instruction-head > span:last-child,.venue-instruction-row > span:last-child { border-right:0; }
.venue-instruction-row button,.venue-instruction-row a { margin-right:10px; padding:0; color:#8a3034; background:none; border:0; font:inherit; font-size:11px; text-decoration:underline; cursor:pointer; }
.venue-detail-modal > footer { padding:17px 28px; border:0; }
.service-empty { margin:0; padding:10px 0; color:#858b90; font-size:12px; }
.my-edit-dates { display:flex; flex-wrap:wrap; gap:8px; margin:18px 0; }
.my-edit-dates label { cursor:pointer; }
.my-edit-dates input,.my-edit-slot input { position:absolute; opacity:0; }
.my-edit-dates span { display:block; padding:10px 12px; color:#555; background:#fff; border:1px solid #dcd8d2; border-radius:4px; font-size:12px; }
.my-edit-dates input:checked + span { color:#fff; background:var(--red); border-color:var(--red); }
.my-edit-note { color:var(--muted); font-size:12px; }
.my-edit-schedule-scroll { max-width:100%; margin:16px 0 22px; overflow-x:auto; border:1px solid #dddcd9; }
.my-edit-schedule { width:100%; min-width:2265px; border-collapse:collapse; table-layout:fixed; }
.my-edit-schedule th,.my-edit-schedule td { width:140px; padding:0; border-right:1px solid #dddcd9; text-align:center; }
.my-edit-schedule th { height:42px; color:#fff; background:#777a7d; font-size:11px; }
.my-edit-schedule th:first-child,.my-edit-schedule td:first-child { width:165px; }
.my-edit-schedule td { height:68px; background:#fff; }
.my-edit-schedule td:first-child { padding:8px 12px; text-align:left; }
.my-edit-schedule td:first-child b,.my-edit-schedule td:first-child small { display:block; }
.my-edit-schedule td:first-child small { margin-top:5px; color:#838a90; font-size:10px; }
.my-edit-slot { display:block; cursor:pointer; }
.my-edit-slot span { display:grid; place-content:center; gap:5px; height:67px; color:#4f705e; background:#f4faf6; font-size:11px; }
.my-edit-slot i { width:6px; height:6px; margin:auto; background:#71a687; border-radius:50%; }
.my-edit-slot input:checked + span { color:#fff; background:var(--red); }
.my-edit-slot input:checked + span i { background:#fff; }
.my-edit-empty { margin:16px 0; padding:22px; color:#747b80; background:#f7f7f6; text-align:center; font-size:12px; }
.modal:has(.my-edit-modal) { width:min(1080px,100%); }
.my-edit-fields { padding-top:20px; border-top:1px solid var(--line); }
.my-edit-fields h3 { margin:0 0 16px; color:#3d4147; font-size:17px; }
.my-edit-field-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px 20px; }
.my-edit-field-grid > label { display:grid; gap:7px; color:#535963; font-size:12px; font-weight:600; }
.my-edit-field-grid .wide { grid-column:1/-1; }
.my-edit-field-grid input:not([type="checkbox"]),.my-edit-field-grid textarea { width:100%; min-width:0; min-height:39px; padding:9px 11px; color:#343a40; background:#fff; border:1px solid #d9dce1; border-radius:4px; font:inherit; font-weight:400; }
.my-edit-field-grid input[readonly] { color:#6e747c; background:#f4f4f3; }
.my-edit-field-grid textarea { min-height:75px; resize:vertical; }
.my-edit-field-grid em,.announcement-form-modal em { color:#a13237; font-style:normal; }
.my-edit-field-grid fieldset { display:flex; flex-wrap:wrap; gap:9px; margin:0; padding:12px; border:1px solid #e2ded9; border-radius:4px; }
.my-edit-field-grid legend { padding:0 5px; color:#535963; font-size:12px; font-weight:600; }
.my-edit-field-grid fieldset label { display:flex; align-items:center; gap:6px; padding:7px 9px; border:1px solid #e3e0dc; border-radius:4px; font-size:11px; }
.my-edit-attachments { margin-top:22px; }
.my-edit-attachment-group { display:grid; grid-template-columns:200px minmax(0,1fr) auto; align-items:start; gap:14px; padding:12px 0; border-top:1px solid #ebe8e4; font-size:12px; }
.my-edit-attachment-group > b { color:#555a60; }
.my-edit-attachment-item { display:flex; gap:10px; align-items:center; padding-bottom:6px; }
.my-edit-attachment-item span { min-width:0; overflow:hidden; text-overflow:ellipsis; }
.my-edit-attachment-item a,.my-edit-attachment-item button { flex:none; color:#923438; background:none; border:0; font-size:11px; }
.my-edit-no-attachments { color:#92969b; }
.my-edit-upload { position:relative; padding:7px 10px; color:#923438; border:1px solid #d8c3be; border-radius:4px; cursor:pointer; }
.my-edit-upload input { position:absolute; inset:0; width:100%; opacity:0; cursor:pointer; }
.modal:has(.announcement-form-modal) { width:min(650px,100%); }
.announcement-form-modal { padding:26px; }
.announcement-form-modal header { padding-bottom:13px; border-bottom:1px solid var(--line); }
.announcement-form-modal header small { color:#9b3437; letter-spacing:.1em; }
.announcement-form-modal h2 { margin:6px 0; }
.announcement-form-modal form { display:grid; gap:16px; padding-top:20px; }
.announcement-form-modal form label { display:grid; gap:7px; color:#4b5159; font-size:12px; font-weight:600; }
.announcement-form-modal input,.announcement-form-modal textarea,.announcement-form-modal select { width:100%; min-height:40px; padding:9px 11px; border:1px solid #d9dce1; border-radius:4px; font:inherit; font-weight:400; }
.announcement-form-modal textarea { min-height:105px; resize:vertical; }
.announcement-form-row { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.announcement-form-modal footer { display:flex; justify-content:flex-end; gap:10px; padding-top:12px; border-top:1px solid var(--line); }
.announcement-admin-panel { margin-top:20px; padding:20px; background:#fff; border:1px solid var(--line); border-radius:7px; }
.announcement-admin-intro { display:flex; gap:15px; align-items:center; padding:13px 16px; color:#666e76; background:#f8f6f3; font-size:12px; }
.announcement-admin-intro b { color:#8d3436; }
.announcement-admin-scroll { overflow-x:auto; }
.announcement-admin-table { width:100%; min-width:760px; border-collapse:collapse; font-size:12px; }
.announcement-admin-table th,.announcement-admin-table td { padding:15px 12px; border-bottom:1px solid #e7e5e2; text-align:left; vertical-align:top; }
.announcement-admin-table th { color:#687078; background:#faf9f7; }
.announcement-admin-table td:nth-child(3) { max-width:450px; color:#5d6369; line-height:1.6; white-space:normal; }
.announcement-admin-actions { display:flex; gap:10px; white-space:nowrap; }
.announcement-admin-actions button { padding:0; color:#8e3438; background:none; border:0; font-size:12px; }
.modal:has(.announcement-read-modal) { width:min(760px,100%); background:#fff; border-radius:7px; }
.modal:has(.announcement-read-modal) .modal-close { color:#545b62; background:#f0f1f2; }
.announcement-read-modal { padding:34px 38px 28px; }
.announcement-read-modal header { padding:0 42px 18px 0; border-bottom:3px solid #903438; }
.announcement-read-modal header small { color:#8b3a3d; font-size:11px; letter-spacing:.08em; }
.announcement-read-modal h2 { margin:10px 0 0; color:#303338; font-size:23px; line-height:1.45; font-weight:600; }
.announcement-read-body { padding:24px 0 8px; color:#555c63; font-size:14px; line-height:1.9; white-space:pre-wrap; overflow-wrap:anywhere; }
.announcement-read-note { margin:15px 0 0; color:#969b9f; font-size:11px; }
.announcement-read-modal footer { display:flex; justify-content:flex-end; gap:10px; margin-top:24px; padding-top:18px; border-top:1px solid #e9e7e4; }
.announcement-list-content { display:grid; gap:0; max-height:56vh; overflow:auto; }
.announcement-list-content article { padding:18px 0; border-bottom:1px solid #ece9e6; }
.announcement-list-content article button { padding:0; color:#34383c; background:none; border:0; font-size:16px; text-align:left; line-height:1.45; }
.announcement-list-content article button:hover { color:#8d3034; }
.announcement-list-content article p { display:-webkit-box; margin:8px 0 0; overflow:hidden; color:#72777b; -webkit-box-orient:vertical; -webkit-line-clamp:2; font-size:12px; line-height:1.7; }
.space-config-grid label { display:grid; gap:6px; }
.space-config-grid fieldset { padding:12px; border:1px solid var(--line); }
.space-config-grid legend { color:var(--muted); font-size:12px; }
.space-config-grid .choice-grid { display:flex; flex-wrap:wrap; gap:8px; }
.space-config-grid .choice-grid label { display:flex; align-items:center; gap:5px; padding:6px 10px; border:1px solid var(--line); border-radius:4px; font-size:12px; }
.space-config-grid .choice-grid input { width:auto; height:auto; }
.space-manage-panel { margin-top:18px; padding:20px; background:#fff; border:1px solid var(--line); border-radius:8px; box-shadow:0 8px 26px rgba(60,45,35,.05); }
.popular-admin-config { display:grid; grid-template-columns:minmax(260px,.8fr) minmax(540px,1.7fr); gap:20px 32px; align-items:end; margin-top:18px; padding:20px 22px; background:#fff; border:1px solid #ded9d2; border-left:4px solid #933438; border-radius:6px; box-shadow:0 8px 26px rgba(60,45,35,.05); }
.popular-admin-config > div:first-child { display:grid; gap:4px; }
.popular-admin-config > div:first-child small { color:#963538; font-size:9px; font-weight:700; letter-spacing:.16em; }
.popular-admin-config h2 { margin:0; font-size:18px; }
.popular-admin-config p { margin:0; color:#7d8287; font-size:10px; line-height:1.6; }
.popular-admin-fields { display:grid; grid-template-columns:1.4fr .8fr .65fr auto; gap:10px; align-items:end; }
.popular-admin-fields label { display:grid; gap:5px; }
.popular-admin-fields label span { color:#71777c; font-size:9px; }
.popular-admin-fields input,.popular-admin-fields select { width:100%; height:38px; padding:0 9px; background:#fff; border:1px solid #d9d4ce; border-radius:3px; }
.popular-admin-fields button { min-height:38px; white-space:nowrap; }
.popular-admin-preview { display:flex; grid-column:1/-1; gap:12px; padding-top:13px; color:#73797e; border-top:1px solid #eee9e4; font-size:10px; }
.popular-admin-preview b { flex:0 0 auto; color:#8f3034; }
.popular-table-tag { display:inline-block; padding:4px 6px; color:#697177; background:#f1f2f2; border-radius:3px; font-size:9px; white-space:nowrap; }
.popular-table-tag.active { color:#8e3034; background:#f7e9e6; }
.popular-room-config { display:grid; grid-template-columns:minmax(240px,1fr) repeat(2,minmax(150px,.55fr)); gap:12px; align-items:end; background:#fbf8f4; }
.popular-room-config legend { color:#8f3034!important; font-weight:700; }
.popular-room-config .space-inline-check { align-self:center; }
.popular-room-config > p { grid-column:1/-1; margin:0; color:#858a8e; font-size:10px; }
.space-manage-filters { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:13px 18px; align-items:end; }
.space-manage-filters label { display:grid; grid-template-columns:76px minmax(0,1fr); align-items:center; gap:8px; color:#4f565d; font-size:11px; font-weight:700; }
.space-manage-filters input,.space-manage-filters select { width:100%; min-width:0; height:38px; padding:0 10px; color:#34383d; background:#fff; border:1px solid #dcd8d2; border-radius:4px; }
.space-manage-search { display:flex; gap:8px; justify-content:flex-end; }
.space-manage-search button { min-height:38px; }
.space-manage-toolbar { display:flex; flex-wrap:wrap; align-items:center; gap:7px; margin:18px 0 10px; }
.space-manage-toolbar button { min-height:36px; padding:0 11px; font-size:11px; }
.space-manage-toolbar > span { margin-left:auto; color:#7a8187; font-size:11px; }
.space-manage-table-scroll { max-width:100%; overflow:auto; border:1px solid #dde0e2; }
.space-manage-table { width:100%; min-width:1840px; border-collapse:collapse; table-layout:fixed; }
.space-manage-table th,.space-manage-table td { padding:10px 8px; border-right:1px solid #e3e5e7; border-bottom:1px solid #e3e5e7; color:#464d53; font-size:11px; line-height:1.45; text-align:left; vertical-align:middle; overflow-wrap:anywhere; }
.space-manage-table th { color:#484e55; background:#f4f2ef; font-weight:700; }
.space-manage-table tr:last-child td { border-bottom:0; }
.space-manage-table th:nth-child(1),.space-manage-table th:nth-child(2) { width:38px; }
.space-manage-table th:nth-child(3) { width:126px; }.space-manage-table th:nth-child(4) { width:82px; }
.space-manage-table th:nth-child(5) { width:100px; }.space-manage-table th:nth-child(6),.space-manage-table th:nth-child(7) { width:125px; }
.space-manage-table th:nth-child(8),.space-manage-table th:nth-child(9),.space-manage-table th:nth-child(10) { width:126px; }
.space-manage-table th:nth-child(n+11):nth-child(-n+15) { width:88px; }.space-manage-table th:nth-child(16) { width:190px; }
.space-manage-photo,.space-photo-placeholder { display:grid; place-items:center; width:108px; height:66px; object-fit:cover; color:#8d9297; background:#e8e5df; font-size:10px; }
.space-qr { display:grid; place-items:center; width:62px; height:62px; padding:4px; color:#7f2024; background:repeating-linear-gradient(0deg,#232a2f 0 3px,#fff 3px 6px); border:5px solid #fff; box-shadow:0 0 0 1px #cfd3d5; font-size:9px; font-weight:700; text-shadow:1px 1px #fff,-1px -1px #fff; }
.space-row-actions { display:flex; flex-wrap:wrap; gap:4px 8px; }
.space-row-actions button { padding:0; color:#8f2f49; background:none; border:0; font-size:11px; text-align:left; text-decoration:underline; }
.space-manage-empty { padding:30px!important; color:#8c9298; text-align:center!important; }
.modal:has(.space-config-modal) { width:min(1120px,100%); }
.modal:has(.space-config-modal) .modal-close,.modal:has(.admin-occupy-modal) .modal-close,.modal:has(.invalid-reservations-modal) .modal-close,.modal:has(.today-space-modal) .modal-close { color:#5b5e62; background:#f1f2f3; }
.space-config-modal { background:#fff; }
.space-config-top-actions { display:flex; gap:8px; margin:16px -26px 0; padding:10px 26px; background:#762366; }
.space-config-top-actions button { min-height:34px; padding:0 13px; font-size:11px; }
.space-config-top-actions .ghost { color:#fff; border-color:rgba(255,255,255,.55); }
.space-config-section { padding:18px 0 8px; border-bottom:1px solid #ece8e5; }
.space-config-section h3 { margin:0 0 8px; color:#5e263b; font-size:15px; }
.space-config-section p { margin:0 0 13px; color:#777f85; font-size:11px; }
.space-config-grid { margin-top:12px; }
.space-config-grid textarea,.admin-occupy-modal textarea { width:100%; min-height:80px; padding:10px; border:1px solid #dcd8d2; border-radius:4px; resize:vertical; }
.space-config-grid .space-inline-check { display:flex; align-items:center; gap:8px; }
.space-config-grid .space-inline-check input { width:auto; height:auto; }
.space-time-pair { display:flex; align-items:center; gap:8px; }.space-time-pair i { color:#858a90; font-style:normal; }
.space-service-line { display:grid; grid-template-columns:95px minmax(0,1fr); gap:8px; align-items:start; padding:7px 0; border-top:1px solid #efeeec; }
.space-service-line strong { padding-top:7px; color:#8f3436; font-size:11px; }
.space-closed-table-wrap,.invalid-reservation-scroll { overflow:auto; border:1px solid #e0e2e4; }
.space-closed-table,.invalid-reservation-scroll table { width:100%; border-collapse:collapse; }
.space-closed-table th,.space-closed-table td,.invalid-reservation-scroll th,.invalid-reservation-scroll td { padding:10px 12px; border-bottom:1px solid #e5e6e7; color:#555d63; font-size:11px; text-align:left; }
.space-closed-table th,.invalid-reservation-scroll th { background:#f5f5f4; white-space:nowrap; }
.space-closed-table button { padding:0; color:#983436; background:none; border:0; }
.space-closed-add { display:grid; grid-template-columns:1.2fr 1fr 1fr 120px 120px auto; gap:7px; margin:12px 0; }
.space-closed-add input,.space-closed-add select { min-width:0; height:36px; padding:0 8px; border:1px solid #dcd8d2; border-radius:4px; font-size:11px; }
.space-instruction-row { display:grid; grid-template-columns:2fr 50px 3fr 180px; align-items:center; gap:8px; padding:10px; border:1px solid #dde0e2; font-size:11px; }
.space-instruction-actions { display:flex; flex-wrap:wrap; align-items:center; gap:6px; }
.space-instruction-actions > button,.space-instruction-actions > a { padding:0; color:#8f2f49; background:none; border:0; font-size:11px; text-decoration:underline; }
.space-instruction-row label { position:relative; overflow:hidden; padding:8px; color:#fff; background:#8f2f49; border-radius:4px; text-align:center; cursor:pointer; }
.space-instruction-row input { position:absolute; inset:0; opacity:0; cursor:pointer; }
.modal:has(.admin-occupy-modal),.modal:has(.invalid-reservations-modal),.modal:has(.today-space-modal) { width:min(1100px,100%); }
.admin-occupy-modal,.invalid-reservations-modal,.today-space-modal { padding:24px 28px; }
.admin-occupy-modal header,.invalid-reservations-modal header,.today-space-modal header { padding-bottom:14px; border-bottom:1px solid var(--line); }
.admin-occupy-modal header small,.invalid-reservations-modal header small,.today-space-modal header small { color:#96383b; font-size:11px; }
.admin-occupy-modal header h2,.invalid-reservations-modal header h2,.today-space-modal header h2 { margin:6px 0; font-size:22px; }
.admin-occupy-modal header p,.invalid-reservations-modal header p,.today-space-modal header p { margin:0; color:#777f85; font-size:11px; }
.admin-occupy-modal footer,.invalid-reservations-modal footer,.today-space-modal footer { display:flex; justify-content:flex-end; align-items:center; gap:10px; padding-top:16px; border-top:1px solid var(--line); }
.invalid-reservations-modal footer { justify-content:space-between; color:#797f84; font-size:11px; }
.invalid-reservation-actions { display:flex; gap:8px; margin:16px 0; }
.invalid-reservation-scroll { margin-bottom:16px; }.invalid-reservation-scroll table { min-width:900px; }
.attachment-box { margin:20px 0 0; border:1px solid #d9dfe2; }
.attachment-tip { padding:10px 12px; color:#343b40; background:#dff1fb; font-size:12px; }
.attachment-tip b { color:var(--red); }
.attachment-tip-plus { display:inline-flex; align-items:center; justify-content:center; width:17px; height:17px; color:#fff; background:#42a856; border-radius:50%; font-weight:700; }
.attachment-table-wrap { overflow-x:auto; }
.attachment-table { width:100%; min-width:720px; border-collapse:collapse; table-layout:fixed; }
.attachment-table th,.attachment-table td { padding:13px 12px; border-right:1px solid #d9dfe2; border-top:1px solid #d9dfe2; text-align:left; vertical-align:top; }
.attachment-table th:last-child,.attachment-table td:last-child { border-right:0; }
.attachment-table th { color:#32383e; background:#fff; font-size:13px; font-weight:700; }
.attachment-table td { color:#444b51; font-size:12px; }
.attachment-table tbody tr:first-child { background:#f8fafb; }
.attachment-table th:first-child { width:35%; }.attachment-table th:nth-child(2) { width:7%; }.attachment-table th:nth-child(3) { width:40%; }.attachment-table th:nth-child(4) { width:18%; }
.attachment-category { display:flex; align-items:center; justify-content:space-between; gap:12px; font-size:13px; font-weight:600; }
.attachment-add { flex:0 0 auto; display:flex; align-items:center; justify-content:center; width:23px; height:23px; padding:0; color:#fff; background:#42a856; border:0; border-radius:50%; font-size:20px; line-height:1; }
.attachment-add:hover { background:#2d8840; }.attachment-add:focus-visible { outline:3px solid #a4d8ae; outline-offset:2px; }
.attachment-category-hint { display:block; margin-top:5px; color:#90979c; font-size:11px; line-height:1.45; }
.attachment-file-name { padding:2px 0; overflow-wrap:anywhere; }
.attachment-action-group { display:flex; flex-wrap:wrap; align-items:center; gap:5px 10px; padding:2px 0; }
.attachment-file-actions button,.attachment-file-actions a,.saved-attachment button,.saved-attachment a { padding:2px 0; color:var(--red); background:transparent; border:0; font:inherit; font-size:11px; text-decoration:underline; cursor:pointer; }
.saved-attachments { display:grid; gap:7px; margin:12px 0; }
.saved-attachment { display:flex; flex-wrap:wrap; align-items:center; gap:6px 14px; padding:9px 11px; background:#f8fafb; border:1px solid #e2e7e9; font-size:12px; }
.saved-attachment span { flex:1 1 190px; overflow-wrap:anywhere; }
.modal:has(.attachment-preview-modal) { width:min(900px,100%); }
.modal:has(.attachment-preview-modal) .modal-close { display:none; }
.attachment-preview-modal > header,.attachment-preview-modal > footer { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:16px 22px; border-bottom:1px solid #e5e7e9; }
.attachment-preview-modal > header h2 { margin:0; padding-right:30px; font-size:17px; overflow-wrap:anywhere; }
.attachment-preview-modal > header button { width:30px; height:30px; border:0; background:#f3f3f3; font-size:22px; cursor:pointer; }
.attachment-preview-modal > footer { justify-content:flex-end; border-top:1px solid #e5e7e9; border-bottom:0; }
.attachment-preview-modal > footer a { display:inline-flex; align-items:center; justify-content:center; text-decoration:none; }
.attachment-preview-body { display:grid; place-items:center; min-height:170px; max-height:65vh; padding:20px; overflow:auto; background:#f7f8f9; }
.attachment-preview-body img,.attachment-preview-body video { max-width:100%; max-height:58vh; object-fit:contain; }
.attachment-preview-body iframe { width:100%; height:60vh; border:0; background:#fff; }
.attachment-preview-body audio { width:min(520px,100%); }
.attachment-preview-body pre { width:100%; margin:0; padding:18px; overflow:auto; background:#fff; white-space:pre-wrap; overflow-wrap:anywhere; font:12px/1.65 ui-monospace,monospace; }
.form-submit { display:flex; justify-content:flex-end; gap:10px; margin-top:24px; padding-top:20px; border-top:1px solid var(--line); }

@media (max-width: 1080px) {
  .topbar { grid-template-columns: 285px 1fr auto; padding: 0 20px; }
  .brand strong { font-size:14px; letter-spacing:.04em; }
  .topnav { gap: 16px; }
  .room-grid { grid-template-columns: repeat(2,1fr); }
  .metric-grid { grid-template-columns: repeat(2,1fr); }
  .space-hero { min-height:285px; }
  .space-hero-content { margin-left:42px; }
  .space-type-grid { grid-template-columns:repeat(4,minmax(0,1fr)); }
  .popular-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .popular-admin-config { grid-template-columns:1fr; align-items:start; }
  .popular-admin-fields { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .popular-admin-preview { grid-column:auto; }
  .booking-search { grid-template-columns:repeat(2,1fr); }
  .search-square { grid-column:1 / -1; }
  .resource-filter-bar { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .resource-search-button { grid-column:auto; }
  .my-booking-filters { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .my-booking-filters label:nth-child(7),.my-booking-filters label:nth-child(8),.my-filter-actions { grid-column:auto; grid-row:auto; }
  .my-booking-filters label:nth-child(7) { grid-column:1 / -1; }
  .my-filter-actions { flex-direction:row; }
  .resource-action-strip { align-items:flex-start; flex-direction:column; }
  .resource-action-strip > div { width:100%; justify-content:flex-end; }
  .scene-booking-guide { align-items:flex-start; flex-direction:column; }
  .sport-booking-controls { width:100%; justify-items:start; }
  .sport-project-tabs { justify-content:flex-start; }
  .sport-mode-picker { width:100%; justify-content:flex-start; }
  .sport-guide-copy { justify-items:start; max-width:none; text-align:left; }
  .room-list-card { grid-template-columns:240px 1fr; padding:18px 24px; }
  .detail-summary { grid-template-columns:320px 1fr; }
  .detail-summary aside { grid-column:1 / -1; }
  .date-picker { grid-template-columns:repeat(6,1fr); }
  .management-list article { grid-template-columns:1fr 1fr auto; }
  .management-list article > button { grid-column:3; grid-row:1 / span 2; }
  .detail-fields { grid-template-columns:repeat(2,1fr); }
  .admin-filter-grid, .approval-filter-grid { grid-template-columns:repeat(2,minmax(260px,1fr)); }
  .inline-review-grid { grid-template-columns:1fr; }
  .review-decision { padding:22px 0 0; border-left:0; border-top:1px solid #e7e9ec; }
  .management-shell { grid-template-columns:210px minmax(0,1fr); }
  .review-modal-body { grid-template-columns:1fr; }
  .rule-form-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .open-rule-basic-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .association-resource-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .review-modal-summary, .review-booking-summary { border-right:0; border-bottom:1px solid #e6e8eb; }
}
@media (max-width: 760px) {
  .app-shell { grid-template-rows: auto 1fr; }
  .topbar { position:sticky; height:auto; min-height:68px; grid-template-columns:1fr auto; padding:10px 16px 0; }
  .brand small, .profile-button .role-copy, .profile-button svg { display: none; }
  .brand { gap:8px; }
  .brand-logo-crop { flex-basis:46px; width:46px; height:40px; }
  .brand-logo-crop img { left:-13px; height:40px; }
  .brand strong { max-width:116px; overflow:hidden; text-overflow:ellipsis; font-size:12px; }
  .portal-button { padding:0 10px; }
  .topnav { grid-column:1 / -1; order:3; justify-content:flex-start; gap:20px; overflow-x:auto; height:48px; margin-top:3px; }
  .topnav button { flex:0 0 auto; }
  .role-menu { position:fixed; top:64px; right:14px; }
  #app { padding: 22px 16px 54px; }
  .page-head { align-items: flex-start; flex-direction: column; }
  .hero { grid-template-columns: 1fr; padding: 32px 25px; }
  .campus-art { min-height: 160px; }
  .metric-grid, .content-grid, .room-grid, .approval-layout, .analytics-grid { grid-template-columns: 1fr; }
  .filter-bar { grid-template-columns: 1fr 1fr; }
  .filter-bar > :first-child, .filter-bar > :last-child { grid-column: 1 / -1; }
  .booking-card { grid-template-columns: 5px 1fr auto; gap: 12px; }
  .booking-card > :nth-child(3), .booking-card > :nth-child(4) { grid-column: 2 / -1; }
  .identity-card { grid-template-columns:auto 1fr; }
  .identity-note { grid-column:1 / -1; padding:12px 0 0; text-align:left; border-left:0; border-top:1px solid rgba(255,255,255,.18); }
  .review-panel { position: static; }
  .form-grid, .check-list { grid-template-columns: 1fr; }
  .span-2 { grid-column: auto; }
  .donut-wrap { grid-template-columns: 1fr; justify-items: center; }
  .space-home { min-height:calc(100vh - 119px); margin:-22px -16px -54px; }
  .space-hero { min-height:295px; }
  .hero-campus-building { left:5%; right:-35%; bottom:12%; height:42%; }
  .space-hero-shade { background:linear-gradient(90deg,rgba(42,13,18,.84),rgba(61,23,27,.48)),linear-gradient(0deg,rgba(25,15,18,.42),transparent 55%); }
  .space-hero-content { width:100%; padding:0 20px; margin:0; }
  .home-search { grid-template-columns:42px 1fr; }
  .home-search button { grid-column:1 / -1; min-height:48px; }
  .home-search-results { position:relative; top:auto; width:100%; max-height:520px; margin-top:10px; padding:13px; }
  .home-search-scene-list { grid-template-columns:1fr; }
  .space-hero:has(.home-search-results) { align-items:flex-start; min-height:auto; padding:40px 0; }
  .home-content { width:calc(100% - 28px); padding:60px 0 72px; }
  .home-notices { margin-top:48px; padding:24px 20px; }
  .home-notice-list { grid-template-columns:1fr; gap:22px; }
  .home-announcement-title { min-height:0; font-size:17px; }
  .home-announcement p { min-height:0; max-height:none; margin-top:8px; -webkit-line-clamp:3; }
  .home-notices-note { margin-top:20px; text-align:left; }
  .home-section-head { align-items:flex-start; }
  .home-section-head h2 { font-size:25px; }
  .home-section-head > button { display:none; }
  .space-type-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .space-type-grid button { grid-template-columns:40px 1fr; min-height:92px; padding:14px 12px; }
  .space-type-grid button > i { width:40px; height:40px; }
  .space-type-grid button > em { display:none; }
  .scene-booking-guide { padding:14px; }
  .scene-booking-guide ol { align-items:flex-start; flex-direction:column; gap:8px; }
  .search-subscene-strip { align-items:flex-start; flex-direction:column; }
  .search-subscene-strip > div:last-child { justify-content:flex-start; max-height:160px; }
  .sport-project-tabs button { flex:1 1 calc(50% - 8px); justify-content:space-between; }
  .sport-mode-picker { flex-wrap:wrap; }
  .sport-mode-picker button { flex:1 1 120px; }
  .popular-venues { margin-top:58px; }
  .popular-grid { grid-template-columns:1fr; }
  .popular-visual { height:200px; }
  .room-type-tabs { padding:0; }
  .booking-search { grid-template-columns:1fr; padding:0 0 22px; }
  .search-square { grid-column:auto; }
  .resource-filter-bar { grid-template-columns:1fr; padding:15px; }
  .resource-filter-bar label { grid-template-columns:80px minmax(0,1fr); }
  .my-booking-filters { grid-template-columns:1fr; }
  .my-booking-filters label:nth-child(7) { grid-column:auto; }
  .my-filter-actions { flex-direction:row; }
  .profile-reservation-panel { padding:14px; }
  .resource-info-grid,.space-config-grid { grid-template-columns:1fr; }
  .venue-detail-grid { grid-template-columns:1fr; padding:10px 18px 4px; }
  .venue-detail-grid > div { grid-template-columns:112px minmax(0,1fr); }
  .venue-detail-section { padding:16px 18px; }
  .venue-detail-modal > header,.venue-detail-modal > footer { padding-left:18px; padding-right:18px; }
  .resource-type-scroller { grid-template-columns:38px minmax(0,1fr) 38px; }
  .resource-type-track button { min-width:105px; min-height:52px; padding:0 15px; font-size:11px; }
  .resource-search-button { grid-column:auto; }
  .resource-action-strip { align-items:stretch; flex-direction:column; }
  .resource-action-strip > div { align-items:stretch; flex-direction:column; width:100%; }
  .resource-action-strip > div > span { max-width:none; white-space:normal; }
  .resource-action-strip label { justify-content:flex-end; }
  .resource-pagination { align-items:flex-start; flex-direction:column; }
  .resource-pagination > div { max-width:100%; overflow-x:auto; }
  .resource-large-visual { height:320px; }
  .room-list-card { grid-template-columns:1fr; padding:14px; }
  .room-summary { grid-template-columns:1fr; }
  .room-list-action { flex-direction:row; align-items:center; }
  .detail-summary { grid-template-columns:1fr; padding:14px; }
  .detail-photo { min-height:220px; }
  .detail-summary aside { grid-column:auto; }
  .date-picker { grid-template-columns:repeat(3,1fr); margin-top:24px; }
  .form-panel-head { align-items:flex-start; flex-direction:column; gap:8px; padding:18px; }
  .reservation-form { padding:10px 16px 22px; }
  .form-line, .form-line.split, .form-line.time-line, .conditional-field, .service-line { grid-template-columns:1fr; gap:8px; padding:14px 0; }
  .form-line > label:first-child, .form-line .minor-label { text-align:left; }
  .form-line:not(.split):not(.time-line):not(.conditional-field):not(.service-line) > :nth-child(2), .input-action, .inline-checks, .conditional-field > small { grid-column:auto; }
  .form-line.time-line > span { text-align:left; }
  .service-group { grid-template-columns:1fr; gap:4px; }
  .attachment-box { margin-left:0; }
  .management-banner { align-items:flex-start; flex-direction:column; padding:20px; }
  .management-filter, .management-list article, .detail-fields, .detail-fields.full { grid-template-columns:1fr; }
  .management-list article > button { grid-column:auto; grid-row:auto; }
  .admin-breadcrumb { min-height:60px; padding:0 18px; }
  .admin-filter-card { padding:22px 18px; }
  .admin-filter-grid, .approval-filter-grid { grid-template-columns:1fr; gap:16px; }
  .admin-filter-grid > label, .approval-filter-grid > label { grid-template-columns:76px minmax(0,1fr); }
  .admin-status-row { grid-template-columns:1fr; }
  .admin-query-actions { justify-content:flex-end; }
  .admin-table-card { padding:0 14px 14px; }
  .admin-table-toolbar { align-items:flex-start; flex-direction:column; justify-content:center; gap:5px; }
  .approval-tabs { gap:24px; }
  .inline-review-detail { margin:14px 14px 0; }
  .inline-review-detail > header { align-items:flex-start; flex-direction:column; }
  .inline-review-grid { padding:18px; }
  .admin-detail { margin:14px 18px 0; }
  .management-mode .topnav { display:none; }
  .management-mode .topbar { padding-bottom:10px; }
  .management-shell { grid-template-columns:1fr; }
  .management-sidebar { position:static; height:auto; padding:0 14px 12px; }
  .management-side-head, .management-side-note, .management-menu-parent { display:none; }
  .management-menu-group { padding-top:12px; }
  .management-submenu { grid-template-columns:1fr 1fr; padding-left:0; margin:0; }
  .management-submenu button { min-height:42px; }
  .rule-intro { align-items:flex-start; flex-direction:column; padding:22px 18px; }
  .rule-filter-card { flex-wrap:wrap; padding:18px; }
  .rule-filter-card label { width:100%; }
  .rule-filter-card input { width:100%; }
  .rule-list-toolbar { align-items:flex-start; flex-direction:column; }
  .rule-modal > header { padding:22px 54px 17px 18px; }
  .rule-form section { padding:20px 18px; }
  .rule-form-grid { grid-template-columns:1fr; }
  .booking-rule-room-grid { grid-template-columns:1fr; }
  .rule-form footer { align-items:stretch; flex-direction:column; padding:17px 18px; }
  .rule-form footer > div { justify-content:flex-end; }
  .credit-rule-modal > header { padding:22px 54px 17px 18px; }
  .credit-rule-fields { grid-template-columns:1fr; padding:20px 18px; }
  .credit-rule-association { padding:20px 18px; }
  .credit-rule-association-head { flex-direction:column; }
  .credit-rule-association-head > span { max-width:100%; text-align:left; }
  .credit-rule-room-grid { grid-template-columns:1fr; }
  .credit-rule-modal footer { align-items:stretch; flex-direction:column; padding:17px 18px; }
  .credit-rule-modal footer > div { justify-content:flex-end; }
  .open-rule-modal > header { padding:21px 55px 18px 18px; }
  .open-rule-basics,.open-rule-section { padding:20px 16px; }
  .open-rule-basic-grid { grid-template-columns:1fr; }
  .open-rule-section-head { align-items:flex-start; flex-direction:column; gap:6px; }
  .open-resource-toolbar { align-items:flex-start; flex-direction:column; }
  .association-body { grid-template-columns:1fr; }
  .association-types { flex-direction:row; max-height:none; overflow-x:auto; border-right:0; border-bottom:1px solid #e6e9ec; }
  .association-types button { flex:0 0 auto; }
  .association-resource-grid { grid-template-columns:1fr; }
  .open-rule-footer { align-items:stretch; flex-direction:column; padding:18px 16px; }
  .open-rule-footer p { text-align:left; }
  .open-rule-footer > div { justify-content:flex-end; }
  .review-modal-head { align-items:flex-start; flex-direction:column; padding:22px 58px 18px 20px; }
  .review-modal-summary, .review-modal-decision, .review-result { padding:20px; }
  .review-booking-summary { grid-template-columns:1fr; padding:20px; }
  .record-modal-head { align-items:flex-start; flex-direction:column; padding:22px 58px 18px 20px; }
  .record-modal-body { padding:20px; }
  .edit-form-grid { grid-template-columns:1fr; padding:20px; }
  .edit-form-grid label.wide { grid-column:auto; }
  .detail-fields.detail-fields-wide { grid-template-columns:1fr; }
  .decision-options { grid-template-columns:1fr; }
  .review-modal-actions { padding:14px 20px; }
}

@media (max-width: 900px) {
  .space-manage-filters { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .space-closed-add { grid-template-columns:repeat(3,minmax(0,1fr)); }
}
@media (min-width: 761px) and (max-width: 1100px) {
  .home-notice-list { grid-template-columns:repeat(2,minmax(0,1fr)); gap:26px; }
  .home-notices { padding:28px; }
}
@media (max-width: 620px) {
  .space-manage-panel { padding:14px; }
  .popular-admin-config { padding:15px; }
  .popular-admin-fields { grid-template-columns:1fr; }
  .popular-admin-preview { align-items:flex-start; flex-direction:column; }
  .popular-room-config { grid-template-columns:1fr; }
  .space-manage-filters { grid-template-columns:1fr; }
  .space-manage-toolbar > span { width:100%; margin-left:0; }
  .space-config-modal,.admin-occupy-modal,.invalid-reservations-modal,.today-space-modal { padding:18px; }
  .space-config-grid { grid-template-columns:1fr; }
  .space-config-top-actions { margin:16px -18px 0; padding:9px 18px; }
  .space-service-line { grid-template-columns:1fr; }
  .space-closed-add { grid-template-columns:1fr 1fr; }
  .space-closed-add button { grid-column:1/-1; }
  .space-instruction-row { grid-template-columns:1fr 40px; }
  .space-instruction-row span:nth-child(3),.space-instruction-actions { grid-column:1/-1; }
  .my-edit-field-grid,.announcement-form-row { grid-template-columns:1fr; }
  .my-edit-attachment-group { grid-template-columns:1fr; gap:8px; }
  .my-edit-upload { justify-self:start; }
  .announcement-admin-panel { padding:12px; }
  .announcement-read-modal { padding:25px 18px 20px; }
  .announcement-read-modal h2 { font-size:19px; }
  .announcement-read-modal footer { flex-wrap:wrap; }
}
