@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Noto+Sans+KR:wght@400;500;600;700;800&display=swap');

:root {
  --navy: #111a32;
  --navy-soft: #192442;
  --blue: #2d61ff;
  --cyan: #6ee7f5;
  --lime: #c9f56b;
  --ink: #172038;
  --muted: #6d7488;
  --line: #e3e7ef;
  --paper: #f5f6f8;
  --white: #ffffff;
  --shadow: 0 24px 70px rgba(19, 31, 66, 0.12);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  min-width: 320px;
  color: var(--ink);
  background: #fbfbfc;
  font-family: 'DM Sans', 'Noto Sans KR', sans-serif;
  overflow-x: hidden;
}
button, textarea { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
a { color: inherit; text-decoration: none; }

.ambient { position: absolute; border-radius: 50%; filter: blur(90px); opacity: .22; pointer-events: none; }
.ambient-one { width: 420px; height: 420px; right: -180px; top: 100px; background: #6edbf5; }
.ambient-two { width: 330px; height: 330px; left: -210px; top: 520px; background: #a3f1c5; }

.site-header {
  height: 80px;
  max-width: 1180px;
  margin: 0 auto;
  padding: 0 20px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  position: relative;
  z-index: 20;
}
.brand { display: flex; align-items: center; gap: 11px; font-weight: 800; letter-spacing: -.03em; }
.brand-mark { width: 30px; height: 30px; border: 8px solid var(--blue); border-radius: 50%; display: inline-grid; place-items: center; position: relative; }
.brand-mark::after { content: ''; position: absolute; width: 8px; height: 8px; background: var(--cyan); border-radius: 50%; right: -10px; top: -8px; border: 2px solid #fbfbfc; }
.brand-mark span { width: 6px; height: 6px; background: var(--navy); border-radius: 50%; }
.site-header nav { display: flex; gap: 34px; font-size: 14px; font-weight: 600; color: #535a6d; }
.site-header nav a { transition: color .2s; }
.site-header nav a:hover { color: var(--blue); }
.header-cta { background: var(--navy); color: white; padding: 12px 18px; border-radius: 999px; font-size: 13px; font-weight: 700; }
.header-cta span { color: var(--lime); margin-left: 6px; }

.hero {
  max-width: 1180px;
  min-height: 620px;
  margin: 0 auto;
  padding: 82px 20px 92px;
  display: grid;
  grid-template-columns: 1fr .9fr;
  align-items: center;
  gap: 60px;
  position: relative;
}
.hero-copy { position: relative; z-index: 2; }
.eyebrow, .section-kicker { color: var(--blue); font-size: 12px; font-weight: 800; letter-spacing: .18em; }
.eyebrow { display: flex; align-items: center; gap: 10px; }
.eyebrow span { width: 28px; height: 2px; background: var(--blue); }
.hero h1 { margin: 22px 0 22px; font-family: 'Noto Sans KR', sans-serif; font-size: clamp(43px, 5vw, 67px); line-height: 1.17; letter-spacing: -.065em; }
.hero h1 em { font-style: normal; color: var(--blue); position: relative; }
.hero h1 em::after { content: ''; position: absolute; left: 1%; right: -1%; bottom: -8px; height: 7px; background: var(--lime); transform: rotate(-1deg); z-index: -1; }
.hero-copy > p { max-width: 470px; font-size: 17px; line-height: 1.8; color: var(--muted); word-break: keep-all; }
.hero-actions { display: flex; align-items: center; gap: 24px; margin-top: 34px; }
.primary-button { background: var(--blue); color: white; padding: 16px 22px; border-radius: 12px; font-size: 14px; font-weight: 700; box-shadow: 0 12px 28px rgba(45, 97, 255, .24); transition: transform .2s, box-shadow .2s; }
.primary-button:hover { transform: translateY(-2px); box-shadow: 0 16px 34px rgba(45, 97, 255, .32); }
.primary-button span { margin-left: 20px; }
.text-button { font-size: 14px; font-weight: 700; border-bottom: 1px solid #9ba0ae; padding-bottom: 3px; }
.trust-row { display: flex; gap: 0; margin-top: 50px; }
.trust-row div { min-width: 110px; padding-right: 24px; margin-right: 24px; border-right: 1px solid var(--line); }
.trust-row div:last-child { border: 0; }
.trust-row strong { display: block; font-size: 21px; letter-spacing: -.03em; }
.trust-row span { font-size: 11px; color: #8a90a0; }

.hero-visual { height: 450px; position: relative; display: grid; place-items: center; }
.hero-visual::before { content: ''; width: 420px; height: 420px; border-radius: 50%; position: absolute; background: linear-gradient(145deg, #edf3ff, #f6ffea); border: 1px solid #e5eaf5; }
.orbit { position: absolute; border: 1px dashed #aab5ce; border-radius: 50%; }
.orbit-a { width: 500px; height: 270px; transform: rotate(-19deg); }
.orbit-b { width: 310px; height: 450px; transform: rotate(24deg); }
.demo-card { width: 370px; padding: 22px; background: rgba(255,255,255,.93); border-radius: 20px; box-shadow: var(--shadow); position: relative; z-index: 2; border: 1px solid rgba(255,255,255,.8); backdrop-filter: blur(12px); }
.demo-top { display: flex; gap: 8px; align-items: center; font-size: 11px; font-weight: 700; color: #657087; }
.demo-dot { width: 7px; height: 7px; border-radius: 50%; background: #58d6a2; box-shadow: 0 0 0 4px #e0faee; }
.live-badge { margin-left: auto; font-size: 9px; color: var(--blue); background: #e9eeff; border-radius: 99px; padding: 3px 7px; letter-spacing: .08em; }
.demo-query { margin-top: 20px; padding: 15px; background: #f4f6fa; border-radius: 10px; font-size: 13px; color: #525a6e; }
.scan-line { height: 2px; margin: 16px 0; background: linear-gradient(90deg, transparent, var(--blue), transparent); animation: scan 2.5s infinite ease-in-out; }
@keyframes scan { 0%,100% { transform: scaleX(.3); opacity: .4; } 50% { transform: scaleX(1); opacity: 1; } }
.demo-result { display: flex; align-items: center; gap: 13px; }
.room-symbol { width: 48px; height: 48px; border-radius: 12px; display: grid; place-items: center; font-size: 22px; }
.room-symbol.music { background: #eee9ff; color: #6745d6; }
.demo-result small { color: #8a90a0; font-size: 9px; }
.demo-result h3 { margin: 1px 0; font-size: 18px; }
.demo-result p { margin: 0; font-size: 10px; color: #737a8d; }
.demo-result > strong { margin-left: auto; color: var(--blue); font-size: 18px; }
.floating-tag { position: absolute; background: white; border: 1px solid #e6e8ef; box-shadow: 0 10px 30px rgba(31,45,81,.1); border-radius: 999px; padding: 9px 14px; font-size: 11px; font-weight: 700; z-index: 3; animation: float 4s infinite ease-in-out; }
.tag-one { left: 4px; top: 80px; color: #6745d6; }
.tag-two { right: -10px; bottom: 75px; color: #2b7b63; animation-delay: -1.2s; }
.tag-three { right: -12px; top: 65px; color: #bf5d35; animation-delay: -2.4s; }
@keyframes float { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }

.finder-section { background: var(--navy); color: white; padding: 90px max(20px, calc((100vw - 1140px)/2)) 100px; position: relative; overflow: hidden; }
.finder-section::before { content: ''; position: absolute; width: 500px; height: 500px; right: -230px; top: -250px; border: 1px solid rgba(255,255,255,.08); border-radius: 50%; box-shadow: 0 0 0 80px rgba(255,255,255,.015), 0 0 0 160px rgba(255,255,255,.015); }
.section-heading { display: flex; align-items: flex-end; justify-content: space-between; margin-bottom: 42px; position: relative; z-index: 2; }
.section-heading h2 { font-family: 'Noto Sans KR', sans-serif; font-size: clamp(28px, 3vw, 39px); letter-spacing: -.045em; margin: 10px 0 0; }
.section-heading > p { font-size: 13px; line-height: 1.7; margin: 0; }
.light-heading > p { color: #929bb2; }
.light-heading .section-kicker { color: var(--cyan); }
.finder-layout { display: grid; grid-template-columns: 1.05fr .95fr; gap: 20px; position: relative; z-index: 2; }
.input-panel, .result-panel { min-height: 450px; border-radius: 20px; }
.input-panel { background: white; color: var(--ink); padding: 30px; }
.input-panel label { display: block; font-weight: 700; font-size: 15px; margin-bottom: 12px; }
.activity-label-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 9px; }
.input-panel .activity-label-row label { margin-bottom: 0; }
.activity-input-warning { display: flex; align-items: center; gap: 8px; margin: 0 0 12px; padding: 10px 12px; border: 1px solid #f0c558; border-radius: 9px; background: #fff8dc; color: #725008; font-size: 10px; line-height: 1.5; }
.activity-input-warning strong { flex: 0 0 auto; color: #a05b00; font-size: 11px; }
.activity-input-warning span { color: #755e28; }
.textarea-wrap { position: relative; }
.textarea-wrap textarea { width: 100%; height: 138px; padding: 18px 20px 34px; resize: none; border: 1px solid #dfe3ec; border-radius: 12px; outline: none; font-size: 14px; line-height: 1.7; color: var(--ink); transition: border-color .2s, box-shadow .2s; }
.textarea-wrap textarea:focus { border-color: var(--blue); box-shadow: 0 0 0 4px rgba(45,97,255,.08); }
.textarea-wrap textarea::placeholder { color: #a7adba; }
.char-count { position: absolute; right: 14px; bottom: 12px; color: #a1a7b4; font-size: 10px; }
.char-count b { color: var(--blue); }
.suggestion-row { display: flex; flex-wrap: wrap; gap: 7px; margin: 15px 0 23px; align-items: center; }
.suggestion-row > span { width: 100%; font-size: 10px; color: #858b9a; }
.privacy-note { margin:8px 0 0; color:#687187; font-size:12px; line-height:1.55; }
.input-error { min-height:19px; margin:5px 0 0; color:#c2394f; font-size:12px; line-height:1.45; }
.consent-option { display:flex !important; align-items:flex-start; gap:9px; margin:0 0 14px !important; padding:11px 12px; border:1px solid #dce3f2; border-radius:9px; color:#596379 !important; background:#f7f9ff; font-size:12px !important; font-weight:500 !important; line-height:1.5; cursor:pointer; }
.consent-option input { flex:0 0 auto; width:17px; height:17px; margin:1px 0 0; accent-color:var(--blue); }
.consent-option strong { color:var(--blue); }
.example-chip { border: 1px solid #e1e5ed; background: #f7f8fa; color: #626a7c; border-radius: 999px; font-size: 10px; padding: 7px 10px; cursor: pointer; transition: all .2s; }
.example-chip:hover { border-color: var(--blue); color: var(--blue); background: #f0f4ff; }
.analyze-button { width: 100%; border: 0; border-radius: 11px; background: var(--blue); color: white; height: 52px; display: flex; align-items: center; padding: 0 18px; cursor: pointer; font-weight: 700; font-size: 13px; box-shadow: 0 10px 24px rgba(45,97,255,.2); transition: transform .2s, opacity .2s; }
.analyze-button:hover { transform: translateY(-1px); }
.analyze-button:disabled { opacity: .7; cursor: wait; }
.button-icon { color: var(--lime); margin-right: 10px; }
.button-arrow { margin-left: auto; }
.input-note { color: #969ca9; font-size: 9px; margin: 16px 0 0; line-height: 1.5; }
.input-note span { color: var(--blue); }

.result-panel { background: var(--navy-soft); border: 1px solid rgba(255,255,255,.09); padding: 30px; position: relative; }
.result-panel[hidden] { display: none; }
.finder-layout:has(.result-panel[hidden]) { grid-template-columns: 1fr; }
.empty-result, .loading-result { display: none; }
.empty-result h3, .loading-result h3 { margin: 22px 0 7px; font-size: 15px; }
.empty-result p, .loading-result p { color: #7e89a4; font-size: 11px; line-height: 1.6; margin: 0; }
.radar { width: 100px; height: 100px; position: relative; border-radius: 50%; border: 1px solid #2e3b5e; background: repeating-radial-gradient(circle, transparent 0 15px, #2e3b5e 16px 17px); overflow: hidden; }
.radar::after { content: ''; position: absolute; inset: 50% 0 0 50%; background: conic-gradient(from 270deg, rgba(110,231,245,.42), transparent 35%); transform-origin: 0 0; animation: radar 3s linear infinite; }
.radar span { width: 5px; height: 5px; border-radius: 50%; background: var(--cyan); box-shadow: 0 0 8px var(--cyan); position: absolute; z-index: 2; }
.radar span:nth-child(1) { left: 25px; top: 34px; }.radar span:nth-child(2) { right: 25px; bottom: 28px; }.radar span:nth-child(3) { left: 53px; top: 17px; }
.radar i { position: absolute; top: 50%; left: 50%; width: 4px; height: 4px; transform: translate(-50%,-50%); background: white; border-radius: 50%; z-index: 3; }
@keyframes radar { to { transform: rotate(360deg); } }
.loader-ring { width: 65px; height: 65px; border: 3px solid #2b3858; border-top-color: var(--cyan); border-radius: 50%; animation: radar 1s linear infinite; }
.loading-bar { width: 180px; height: 3px; background: #283654; border-radius: 99px; margin-top: 24px; overflow: hidden; }
.loading-bar span { display: block; height: 100%; background: linear-gradient(90deg, var(--blue), var(--cyan)); animation: load 1.2s ease-in-out forwards; }
@keyframes load { from { width: 0; } to { width: 100%; } }
.actual-result { height: 100%; }
.result-status { display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid #293653; padding-bottom: 16px; font-size: 10px; }
.result-status span { color: var(--cyan); font-weight: 700; }.result-status b { color: #9ba5bc; font-weight: 500; }
.result-main { display: flex; align-items: center; gap: 14px; padding: 23px 0 14px; }
.result-icon { width: 52px; height: 52px; display: grid; place-items: center; border-radius: 13px; background: #2b3860; color: var(--cyan); font-size: 23px; }
.result-main small { color: #8490ac; font-size: 9px; }.result-main h3 { margin: 2px 0; font-size: 22px; }
.score-ring { margin-left: auto; width: 58px; height: 58px; border-radius: 50%; display: grid; place-content: center; text-align: center; background: conic-gradient(var(--cyan) 96%, #2b3857 0); position: relative; color: var(--navy); }
.score-ring::before { content: ''; position: absolute; inset: 4px; background: var(--navy-soft); border-radius: 50%; }
.score-ring strong, .score-ring span { position: relative; color: white; }.score-ring strong { font-size: 16px; line-height: 1; }.score-ring span { font-size: 8px; }
.result-reason { color: #a8b1c6; font-size: 11px; line-height: 1.65; margin: 0 0 15px; }
.equipment-box { background: #202d4d; border-radius: 10px; padding: 13px; }
.equipment-box > span, .alternative-row > span { display: block; color: #7e8aa7; font-size: 9px; margin-bottom: 8px; }
.equipment-box div { display: flex; flex-wrap: wrap; gap: 6px; }
.equipment-box b { color: #dce2ef; background: #2a3859; padding: 5px 8px; border-radius: 6px; font-size: 9px; font-weight: 500; }
.safety-alert { align-items: center; gap: 10px; padding: 10px 12px; margin-top: 10px; background: rgba(255,183,71,.1); border: 1px solid rgba(255,183,71,.25); border-radius: 9px; }
.safety-alert > span { flex: 0 0 25px; height: 25px; display: grid; place-items: center; border-radius: 50%; background: #ffbd52; color: var(--navy); font-weight: 800; }
.safety-alert p { margin: 0; color: #b5bdd0; font-size: 8px; line-height: 1.5; }.safety-alert strong { color: #ffcc7a; font-size: 9px; }.safety-alert b { font-weight: 400; }
.alternative-row { border-top: 1px solid #293653; margin-top: 14px; padding-top: 12px; display: flex; align-items: center; justify-content: space-between; }
.alternative-row > span { margin: 0; }.alternative-row button { border: 1px solid #3a4765; color: #d5daea; background: transparent; border-radius: 7px; padding: 6px 10px; font-size: 9px; cursor: pointer; }

.spaces-section { max-width: 1180px; margin: 0 auto; padding: 100px 20px; }
.dark-heading > p { color: #7c8392; }
.space-filters { display: flex; gap: 8px; margin-bottom: 25px; }
.filter-button { border: 1px solid var(--line); border-radius: 999px; padding: 8px 14px; background: white; color: #747b8d; font-size: 11px; cursor: pointer; transition: all .2s; }
.filter-button.active { color: white; background: var(--navy); border-color: var(--navy); }
.space-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
.space-card { min-height: 220px; border: 1px solid var(--line); background: white; border-radius: 15px; padding: 20px; position: relative; overflow: hidden; transition: transform .25s, box-shadow .25s; }
.space-card:hover { transform: translateY(-5px); box-shadow: 0 16px 35px rgba(26,38,69,.09); }
.space-card::after { content: ''; position: absolute; width: 105px; height: 105px; right: -38px; top: -40px; border-radius: 50%; background: var(--card-color); opacity: .11; }
.space-card .card-icon { width: 42px; height: 42px; border-radius: 11px; display: grid; place-items: center; background: color-mix(in srgb, var(--card-color) 14%, white); color: var(--card-color); font-size: 19px; }
.space-card h3 { font-size: 16px; margin: 17px 0 7px; }.space-card p { min-height: 38px; font-size: 10px; color: #7c8391; line-height: 1.6; margin: 0; }
.card-tags { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 16px; }.card-tags span { font-size: 8px; padding: 5px 7px; border-radius: 5px; background: #f4f5f8; color: #747c8c; }
.space-card.hide { display: none; }

.about-section { max-width: 1180px; margin: 0 auto 90px; padding: 0 20px; display: grid; grid-template-columns: 1.5fr .7fr; gap: 16px; }
.about-card { padding: 40px; color: white; background: var(--blue); border-radius: 18px; }
.about-card .section-kicker { color: var(--lime); }.about-card h2 { margin: 10px 0 32px; font-size: 27px; letter-spacing: -.04em; }
.steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 30px; }.steps > div { border-top: 1px solid rgba(255,255,255,.3); padding-top: 15px; }.steps span { display: block; color: var(--lime); font-size: 10px; margin-bottom: 13px; }.steps strong { font-size: 14px; }.steps p { color: #cbd7ff; font-size: 10px; line-height: 1.65; }
.safety-card { padding: 35px; border-radius: 18px; background: #eaf9ef; display: flex; align-items: flex-start; gap: 15px; }.safety-icon { flex: 0 0 36px; height: 36px; display: grid; place-items: center; border-radius: 50%; color: white; background: #3aa66c; }.safety-card span { font-size: 9px; font-weight: 800; color: #3aa66c; letter-spacing: .13em; }.safety-card h3 { font-size: 19px; line-height: 1.35; margin: 9px 0 13px; }.safety-card p { font-size: 10px; color: #66786d; line-height: 1.75; margin: 0; }

footer { min-height: 110px; padding: 30px max(20px, calc((100vw - 1140px)/2)); background: var(--navy); color: white; display: flex; align-items: center; gap: 26px; }
.footer-brand .brand-mark::after { border-color: var(--navy); }.footer-brand .brand-mark span { background: white; }.footer-brand { font-size: 13px; }
footer p { margin: 0; color: #747f99; font-size: 11px; } footer > span { margin-left: auto; color: #5e6985; font-size: 9px; }
.footer-links { display:flex; gap:14px; }.footer-links a { color:#aeb9d2; font-size:11px; text-decoration:none; }.footer-links a:hover { color:white; text-decoration:underline; }
.toast { position: fixed; left: 50%; bottom: 25px; transform: translate(-50%, 20px); background: #151d31; color: white; border-radius: 10px; padding: 11px 16px; font-size: 11px; box-shadow: 0 10px 35px rgba(0,0,0,.2); opacity: 0; pointer-events: none; transition: all .25s; z-index: 50; }.toast.show { opacity: 1; transform: translate(-50%, 0); }

@media (max-width: 900px) {
  .site-header nav { display: none; }
  .hero { grid-template-columns: 1fr; padding-top: 55px; text-align: center; }
  .hero-copy > p { margin-left: auto; margin-right: auto; }.eyebrow, .hero-actions, .trust-row { justify-content: center; }
  .hero-visual { margin-top: -10px; }
  .finder-layout { grid-template-columns: 1fr; }.space-grid { grid-template-columns: repeat(2, 1fr); }
  .about-section { grid-template-columns: 1fr; }
}
@media (max-width: 600px) {
  .site-header { height: 68px; }.header-cta { font-size: 0; padding: 11px 14px; }.header-cta span { font-size: 14px; margin: 0; }
  .hero { padding-top: 40px; min-height: auto; }.hero h1 { font-size: 40px; }.hero-copy > p { font-size: 14px; }.hero-actions { flex-direction: column; gap: 16px; }.trust-row div { min-width: 90px; padding-right: 12px; margin-right: 12px; }.trust-row strong { font-size: 17px; }
  .hero-visual { height: 390px; transform: scale(.88); margin-left: -25px; margin-right: -25px; }.demo-card { width: 340px; }.floating-tag { display: none; }
  .section-heading { align-items: flex-start; flex-direction: column; gap: 14px; }.section-heading > p br { display: none; }
  .finder-section, .spaces-section { padding-top: 70px; padding-bottom: 70px; }.input-panel, .result-panel { padding: 20px; }
  .activity-label-row { align-items: flex-start; flex-direction: column; gap: 5px; }
  .activity-input-warning { align-items: flex-start; flex-direction: column; gap: 3px; }
  .space-grid { grid-template-columns: 1fr; }.space-card { min-height: 185px; }.space-filters { overflow-x: auto; padding-bottom: 3px; }.filter-button { flex: 0 0 auto; }
  .about-card { padding: 28px 22px; }.steps { grid-template-columns: 1fr; gap: 16px; }.steps p { margin-bottom: 0; }
  footer { flex-wrap: wrap; gap: 12px; } footer > span { width: 100%; margin-left: 0; }
}

/* Map-first navigator. Finder, inventory, and admin styles above remain intact. */
.map-section .map-layout { grid-template-columns: 320px minmax(0,1fr); gap: 0; overflow: hidden; border: 1px solid #dde3ed; border-radius: 20px; background: #fff; box-shadow: 0 22px 60px rgba(24,39,72,.11); }
.map-section .map-card,.map-section .route-guide { border: 0; border-radius: 0; box-shadow: none; }
.map-section .route-guide { display: flex; flex-direction: column; min-width: 0; padding: 24px; border-right: 1px solid #e4e8ef; }
.navigator-brand { display: flex; align-items: center; gap: 11px; padding-bottom: 20px; border-bottom: 1px solid #edf0f5; }
.navigator-brand > span { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 12px; background: linear-gradient(145deg,#3f79ff,#2055dd); color: #fff; font-size: 19px; box-shadow: 0 9px 20px rgba(45,97,255,.24); }
.navigator-brand b { display: block; color: var(--navy); font-size: 13px; }.navigator-brand small { display: block; margin-top: 3px; color: #8992a4; font-size: 9px; }
.map-section .map-toolbar { display: flex; flex-direction: column; align-items: stretch; gap: 10px; min-height: 0; padding: 20px 0; border: 0; }
.map-section .map-select-group { width: 100%; min-width: 0; }.map-section .map-select-group label { margin-bottom: 7px; color: #4a5366; font-size: 10px; font-weight: 800; }
.map-section .map-select-group select { height: 43px; border-radius: 11px; background: #fff; font-size: 11px; }
.map-start-display { min-height:43px; display:flex; align-items:center; padding:9px 11px; border:1px solid #b9c9ef; border-radius:11px; background:#f3f7ff; color:#244fae; font-size:11px; font-weight:800; line-height:1.35; }
.map-start-display.destination-mode { border-color:#c8b5f4; background:#f6f1ff; color:#6537ad; }
.map-start-group > small { display:block; margin:6px 2px 0; color:#8a94a8; font-size:9px; line-height:1.4; }
.quick-route-row { display: grid; grid-template-columns: 1fr; gap: 7px; }.quick-route-row button,.swap-route-button,.elevator-route-button { width:100%; min-height: 32px; border: 1px solid #dce1e9; border-radius: 999px; background: #fff; color: #697286; font-size: 9px; font-weight: 700; cursor: pointer; }.quick-route-row button:hover,.swap-route-button:hover,.elevator-route-button:hover { border-color: var(--blue); color: var(--blue); }.elevator-route-button.active { border-color:#2d61ff; background:#edf4ff; color:#2455c4; box-shadow:0 0 0 3px rgba(45,97,255,.08); }
.map-section .draw-route-button { width: 100%; height: 45px; margin-top: 2px; border-radius: 11px; font-size: 11px; box-shadow: 0 10px 20px rgba(45,97,255,.2); }
.route-result-block { padding-top: 17px; border-top: 1px solid #edf0f5; }.map-section .route-room-head { padding: 14px 0; }.map-section .route-room-head h3 { font-size: 17px; }
.map-section .route-guide ol { max-height: 180px; overflow: auto; }.map-section .route-equipment { margin-top: 5px; }.map-section .map-disclaimer { margin-top: auto; padding-top: 16px; }
.map-section .map-viewport { min-height: 590px; background: #f0f3f8; }.map-section .floor-tabs { display: flex; justify-content: flex-start; gap: 8px; padding: 16px 22px; }.map-section .floor-tab { width: 54px; }
.map-click-help { display: flex; align-items: center; gap: 9px; margin: 0; padding: 10px 22px; border-top: 1px solid #dfe6f4; border-bottom: 1px solid #d7e1f5; background: #edf4ff; color: #52637f; font-size: 10px; line-height: 1.45; }
.map-click-help strong { flex: 0 0 auto; color: #2455c4; font-size: 11px; }
.map-section .floor-map-frame { padding: 54px 24px 55px; background: radial-gradient(circle at 50% 42%,#fff 0,#f1f4f9 68%,#e6eaf2 100%); }
.map-section .floor-map-canvas { width: min(100%,980px); border: 0; border-radius: 0; background: transparent; box-shadow: none; transform-origin: center; transition: transform .2s ease; }
.map-zoom-controls { position: absolute; z-index: 3; right: 22px; top: 15px; display: flex; gap: 7px; }.map-zoom-controls button { display: grid; place-items: center; width: 38px; height: 38px; border: 1px solid #dce1e9; border-radius: 10px; background: #fff; color: #26334e; font-size: 17px; font-weight: 800; cursor: pointer; box-shadow: 0 8px 18px rgba(28,43,75,.08); }.map-zoom-controls button:hover { border-color: var(--blue); color: var(--blue); }
.floor-change-note { position: absolute; z-index: 3; left: 50%; top: 16px; transform: translateX(-50%); padding: 8px 13px; border-radius: 999px; background: rgba(17,26,50,.92); color: #fff; font-size: 9px; font-weight: 800; box-shadow: 0 8px 18px rgba(17,26,50,.16); }
.entrance-zone { fill: rgba(45,97,255,.08); stroke: #2d61ff; stroke-width: 2; stroke-dasharray: 7 5; }.entrance-label { fill: #2d61ff; font-size: 13px; font-weight: 900; text-anchor: middle; pointer-events: none; }
@media (max-width: 920px) { .map-section .map-layout { grid-template-columns: 1fr; }.map-section .route-guide { min-height: 0; border-right: 0; border-bottom: 1px solid #e4e8ef; }.map-section .map-toolbar { display: grid; grid-template-columns: 1fr 1fr; }.map-section .quick-route-row,.map-section .elevator-route-button,.map-section .swap-route-button,.map-section .draw-route-button { grid-column: 1 / -1; }.map-section .map-viewport { min-height: 480px; } }
@media (max-width: 600px) { .map-section .map-toolbar { display: flex; }.map-section .map-select-group { min-width: 0; }.map-section .floor-tabs { padding: 12px; gap: 5px; }.map-section .floor-tab { width: auto; flex: 1; }.map-click-help { align-items: flex-start; flex-direction: column; gap: 2px; padding: 9px 12px; }.map-section .floor-map-frame { padding: 52px 8px 45px; }.map-zoom-controls { right: 10px; }.map-section .map-view-toggle { padding-right: 10px; } }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; }
}

/* Map, equipment directory, and admin console */
.admin-toggle {
  border: 1px solid #dfe3ec;
  background: white;
  color: #3d4558;
  padding: 10px 15px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
  transition: all .2s;
}
.admin-toggle:hover { border-color: var(--blue); color: var(--blue); box-shadow: 0 7px 20px rgba(45,97,255,.1); }
.admin-toggle.active { color: white; border-color: var(--blue); background: var(--blue); }
.admin-toggle.active span { color: var(--lime); }
.admin-toggle span { margin-right: 5px; color: var(--blue); }
.result-main small b { color: var(--cyan); }
.result-actions { display: grid; grid-template-columns: 1fr auto; gap: 8px; margin-top: 14px; }
.route-result-button, .alternative-button { border-radius: 8px; cursor: pointer; font-size: 9px; font-weight: 700; height: 35px; }
.route-result-button { border: 0; background: var(--cyan); color: var(--navy); padding: 0 13px; text-align: left; }
.route-result-button span { float: right; margin-left: 20px; }
.route-result-button:disabled { opacity: .4; cursor: not-allowed; }
.alternative-button { border: 1px solid #3a4765; background: transparent; color: #d5daea; padding: 0 11px; }

.map-section { padding: 100px max(20px, calc((100vw - 1140px)/2)); background: #f1f3f7; }
.map-layout { display: grid; grid-template-columns: minmax(0,1.55fr) minmax(290px,.65fr); gap: 18px; }
.map-card, .route-guide { background: white; border: 1px solid #e0e4ec; border-radius: 18px; box-shadow: 0 17px 50px rgba(25,38,68,.07); }
.map-card { overflow: hidden; }
.map-toolbar { min-height: 78px; padding: 14px 18px; display: flex; align-items: center; gap: 12px; border-bottom: 1px solid #e8eaf0; }
.map-select-group { flex: 1; }
.map-select-group label { display: block; margin: 0 0 5px 2px; color: #868d9e; font-size: 9px; font-weight: 700; }
.map-select-group select { width: 100%; height: 35px; border: 1px solid #dce1e9; border-radius: 8px; background: #f9fafb; color: var(--ink); padding: 0 9px; font-size: 11px; outline: none; }
.map-select-group select:focus { border-color: var(--blue); }
.route-arrow { color: #9da4b4; margin-top: 17px; }
.draw-route-button { flex: 0 0 auto; align-self: flex-end; height: 35px; border: 0; border-radius: 8px; background: var(--blue); color: white; padding: 0 15px; font-size: 10px; font-weight: 700; cursor: pointer; }
.map-viewport { min-height: 440px; position: relative; background: #e8ebf1; overflow: hidden; display: flex; flex-direction: column; }
.floor-tabs { display: grid; grid-template-columns: repeat(5,1fr); gap: 8px; padding: 14px 18px; background: white; border-bottom: 1px solid #e1e5ed; }
.map-view-toggle { display:flex; justify-content:flex-end; gap:8px; padding:10px 18px 0; background:#eef1f6; }
.map-view-button { border:1px solid #ccd3e0; border-radius:999px; background:#fff; color:#556078; padding:7px 13px; font:inherit; font-size:12px; font-weight:800; cursor:pointer; }
.map-view-button.active { border-color:var(--blue); background:var(--blue); color:#fff; }
.floor-tab { height: 39px; border: 1px solid #dce1e9; border-radius: 9px; background: #f7f8fa; color: #687185; font-size: 11px; font-weight: 800; cursor: pointer; transition: all .2s; }
.floor-tab:hover { border-color: var(--blue); color: var(--blue); }
.floor-tab.active { border-color: var(--blue); color: white; background: var(--blue); box-shadow: 0 7px 18px rgba(45,97,255,.2); }
.floor-map-frame { flex: 1; position: relative; display: grid; place-items: center; padding: 48px 20px 52px; background: linear-gradient(145deg,#edf0f5,#dfe4ec); }
.floor-map-canvas { position: relative; width: min(100%,800px); border: 1px solid rgba(28,52,95,.14); border-radius: 12px; overflow: hidden; background: #fff; box-shadow: 0 14px 35px rgba(18,28,52,.15); }
.floor-map-frame img { display: block; width: 100%; height: auto; filter: saturate(.88) contrast(1.04); }
#floor-model-map { display:block; width:100%; height:auto; background:#f9fbff; }
.floor-map-canvas.model-view #floor-map-image { display:none; }
.floor-map-canvas.photo-view #floor-model-map { display:none; }
.model-corridor { fill:none; stroke:#e8edf5; stroke-width:32; stroke-linecap:round; stroke-linejoin:round; }
.model-open-corridor { fill:#e8edf5; }
.model-room { fill:#e8f0ff; stroke:#8ba3cc; stroke-width:2; cursor:pointer; transition:fill .15s,stroke .15s; }
.model-room.admin { fill:#fff0dd; stroke:#d7a86e; }
.model-room.shared { fill:#e7f5e6; stroke:#79a975; }
.model-room.restroom { fill:#e5f7f5; stroke:#40a69c; }
.model-room:hover,.model-room:focus { fill:#cbdcff; stroke:#2d61ff; outline:none; }
.model-room.selected { fill:#c9f56b; stroke:#111a32; stroke-width:4; }
.model-map-start { fill:#c9f56b; stroke:#111a32; stroke-width:4; pointer-events:none; filter:drop-shadow(0 2px 4px rgba(17,26,50,.25)); }
.model-map-start-label { fill:#111a32; font-size:10px; font-weight:900; text-anchor:middle; pointer-events:none; paint-order:stroke; stroke:white; stroke-width:4px; stroke-linejoin:round; }
.model-room-number { fill:#111a32; font-size:13px; font-weight:900; text-anchor:middle; pointer-events:none; }
.model-room-name { fill:#54617a; font-size:10px; font-weight:700; text-anchor:middle; pointer-events:none; }
.model-core { fill:#d6dce7; stroke:#7d899f; stroke-width:2; }
.model-core-label { fill:#27324a; font-size:11px; font-weight:800; text-anchor:middle; pointer-events:none; }
#floor-route-overlay { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; pointer-events: none; transition: opacity .25s; }
.route-visible #floor-route-overlay { opacity: 1; }
.start-point-visible #floor-route-overlay { opacity: 1; }
.start-point-visible:not(.route-visible) #floor-route-end { display:none; }
#floor-route-line { stroke-dasharray: 13 9; animation: route-move 1.1s linear infinite; filter: drop-shadow(0 2px 3px rgba(45,97,255,.4)); }
#floor-route-start,#floor-route-end { pointer-events:all !important; cursor:pointer; transition:fill .15s,stroke .15s,r .15s; }
#floor-route-start:focus,#floor-route-end:focus { outline:none; filter:drop-shadow(0 0 5px rgba(45,97,255,.8)); }
#floor-route-start.editing { fill:#ffd84d; stroke:#9a6500; }
#floor-route-end.editing { fill:#9b6cff; stroke:#4d23a8; }
#floor-route-start:hover,#floor-route-end:hover { r:14px; }
.floor-map-label { position: absolute; left: 22px; top: 16px; color: var(--blue); font-size: 10px; font-weight: 900; letter-spacing: .15em; }
.floor-route-legend { position: absolute; right: 20px; bottom: 14px; display: flex; align-items: center; gap: 11px; padding: 8px 11px; border-radius: 9px; background: rgba(17,26,50,.9); color: white; backdrop-filter: blur(8px); }
.floor-route-legend span { display: flex; align-items: center; gap: 5px; font-size: 8px; }
.floor-route-legend i { width: 7px; height: 7px; border-radius: 50%; }
#route-overlay { position: absolute; left: 50%; top: 50%; width: min(100%,512px); height: auto; aspect-ratio: 512 / 683; transform: translate(-50%,-50%); pointer-events: none; }
#route-line { stroke-dasharray: 12 8; animation: route-move 1.1s linear infinite; }
@keyframes route-move { to { stroke-dashoffset: -20; } }
.map-legend { position: absolute; right: 14px; bottom: 14px; display: flex; gap: 10px; align-items: center; border-radius: 8px; background: rgba(17,26,50,.9); color: white; padding: 8px 10px; backdrop-filter: blur(8px); }
.map-legend span { display: flex; align-items: center; gap: 4px; font-size: 8px; }
.map-legend i { width: 7px; height: 7px; border-radius: 50%; display: inline-block; }
.start-dot { background: var(--lime); }.end-dot { background: #ff5f57; }.route-dot { background: var(--blue); }

.route-guide { padding: 28px; align-self: stretch; }
.route-label { color: var(--blue); font-size: 9px; font-weight: 800; letter-spacing: .17em; }
.route-room-head { display: flex; align-items: center; gap: 13px; padding: 20px 0; border-bottom: 1px solid #e8eaf0; }
.route-room-head > div:first-child { width: 48px; height: 48px; display: grid; place-items: center; border-radius: 12px; background: #edf1ff; color: var(--blue); font-size: 21px; }
.route-room-head small { color: var(--blue); font-size: 10px; font-weight: 700; }.route-room-head h3 { margin: 2px 0 0; font-size: 20px; }
.route-guide ol { list-style: none; padding: 10px 0; margin: 0; }
.route-guide li { display: grid; grid-template-columns: 24px 1fr; gap: 10px; position: relative; padding: 8px 0; }
.route-guide li:not(:last-child)::after { content: ''; position: absolute; left: 11px; top: 31px; bottom: -7px; border-left: 1px dashed #bdc4d2; }
.route-guide li > span { width: 24px; height: 24px; display: grid; place-items: center; border-radius: 50%; background: var(--navy); color: white; font-size: 8px; font-weight: 700; }
.route-guide li p { margin: 3px 0 0; color: #626b7d; font-size: 10px; line-height: 1.6; }
.route-equipment { margin-top: 12px; padding: 14px; border-radius: 10px; background: #f4f6fa; }
.route-equipment > span { display: block; color: #858c9d; font-size: 9px; margin-bottom: 8px; }
.route-equipment div { display: flex; flex-wrap: wrap; gap: 5px; }
.route-equipment b { padding: 5px 7px; border-radius: 5px; background: white; border: 1px solid #e1e5ed; color: #535c6e; font-size: 8px; font-weight: 600; }
.map-disclaimer { margin: 15px 0 0; color: #9ca2ae; font-size: 8px; line-height: 1.6; }

.directory-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-bottom: 26px; }
.directory-toolbar .space-filters { margin-bottom: 0; }
.space-search { width: 210px; height: 36px; border: 1px solid var(--line); border-radius: 999px; display: flex; align-items: center; gap: 6px; padding: 0 12px; background: white; }
.space-search span { color: #8991a3; }.space-search input { width: 100%; border: 0; outline: 0; font-size: 10px; color: var(--ink); background: transparent; }
.space-card { min-height: 280px; display: flex; flex-direction: column; }
.space-card-top { display: flex; align-items: center; justify-content: space-between; }
.floor-badge { color: var(--card-color); border: 1px solid color-mix(in srgb, var(--card-color) 30%, white); background: color-mix(in srgb, var(--card-color) 7%, white); border-radius: 999px; padding: 4px 7px; font-size: 9px; font-weight: 800; }
.space-card p { min-height: 48px; }
.equipment-title { display: flex; justify-content: space-between; align-items: center; margin-top: 12px; padding-top: 11px; border-top: 1px solid #edf0f4; color: #858c9b; font-size: 8px; }
.equipment-title b { color: var(--card-color); }
.space-card .card-tags { margin-top: 8px; }
.card-controls { display: flex; gap: 6px; margin-top: auto; padding-top: 14px; }
.card-controls button { flex: 1; height: 30px; border-radius: 7px; font-size: 9px; font-weight: 700; cursor: pointer; }
.card-route { border: 0; background: var(--navy); color: white; }.card-edit { border: 1px solid #dfe3eb; color: var(--blue); background: white; display: none; }
body.admin-active .card-edit { display: block; }
.no-spaces { grid-column: 1/-1; padding: 55px; text-align: center; border: 1px dashed #d9dee8; border-radius: 14px; color: #8b92a0; font-size: 12px; }

body.modal-open { overflow: hidden; }
.modal-backdrop { position: fixed; inset: 0; z-index: 100; display: grid; place-items: center; padding: 20px; background: rgba(10,16,31,.7); backdrop-filter: blur(8px); }
.modal-backdrop[hidden] { display: none; }
.feedback-fab { position:fixed; right:22px; bottom:22px; z-index:60; min-width:112px; height:48px; display:flex; align-items:center; justify-content:center; gap:8px; padding:0 18px; border:0; border-radius:999px; color:white; background:var(--blue); box-shadow:0 12px 32px rgba(45,97,255,.35); cursor:pointer; transition:transform .2s,box-shadow .2s; }
.feedback-fab:hover { transform:translateY(-2px); box-shadow:0 16px 38px rgba(45,97,255,.42); }
.feedback-fab span { font-size:18px; }.feedback-fab b { font-size:11px; }
.feedback-modal { width:min(520px,94vw); max-height:92vh; overflow-y:auto; position:relative; padding:32px; border-radius:20px; background:white; box-shadow:0 35px 90px rgba(0,0,0,.35); }
.feedback-modal > span { color:var(--blue); font-size:9px; font-weight:800; letter-spacing:.16em; }
.feedback-modal h2 { margin:7px 0 8px; font-size:24px; }
.feedback-modal > p { margin:0 0 20px; color:#687187; font-size:13px; line-height:1.65; }
.feedback-close { position:absolute; right:15px; top:15px; width:32px; height:32px; border:0; border-radius:50%; color:#727a8b; background:#f2f4f7; font-size:18px; cursor:pointer; }
.feedback-modal form { display:grid; gap:12px; }
.feedback-modal label { display:grid; gap:6px; color:#525b6d; font-size:13px; font-weight:700; }
.feedback-identity { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.feedback-identity[hidden],.feedback-privacy-consent[hidden] { display:none !important; }
.feedback-modal input,.feedback-modal textarea { width:100%; border:1px solid #dce1e9; border-radius:9px; padding:10px 12px; outline:0; color:var(--ink); background:white; font-size:14px; resize:vertical; }
.feedback-modal input:focus,.feedback-modal textarea:focus { border-color:var(--blue); box-shadow:0 0 0 3px rgba(45,97,255,.08); }
.feedback-modal .consent-option input { flex:0 0 auto; width:17px; height:17px; margin:1px 0 0; padding:0; }
.feedback-modal form > small { color:#747d90; font-size:12px; line-height:1.55; }
.feedback-opt-in,.feedback-privacy-consent { margin:0 !important; }
.feedback-privacy-consent a { color:var(--blue); }
.feedback-error { min-height:18px; margin:0; color:#d34e60; font-size:12px; }
.feedback-submit { height:43px; border:0; border-radius:9px; color:white; background:var(--blue); font-size:14px; font-weight:700; cursor:pointer; }
.policy-page { min-height:100vh; padding:64px 20px; background:#f5f7fb; color:var(--ink); }
.policy-shell { width:min(820px,100%); margin:0 auto; padding:42px; border:1px solid #e1e6ef; border-radius:20px; background:white; box-shadow:0 16px 50px rgba(17,26,50,.08); }
.policy-shell .brand { color:var(--ink); text-decoration:none; }.policy-shell h1 { margin:30px 0 8px; font-size:34px; }.policy-updated { color:#7a8395; font-size:13px; }
.policy-shell h2 { margin:30px 0 9px; font-size:20px; }.policy-shell p,.policy-shell li { color:#4f5a70; font-size:15px; line-height:1.75; }.policy-shell ul { padding-left:22px; }
.policy-callout { margin:22px 0; padding:16px 18px; border-left:4px solid var(--blue); border-radius:8px; background:#f2f5ff; }.policy-back { display:inline-block; margin-top:28px; color:var(--blue); font-weight:700; }
.feedback-submit:disabled { opacity:.6; cursor:wait; }
.admin-modal { width: min(900px,96vw); max-height: 90vh; overflow: hidden; background: #f7f8fa; border-radius: 20px; box-shadow: 0 35px 90px rgba(0,0,0,.35); display: flex; flex-direction: column; }
.admin-login-modal { width:min(390px,94vw); position:relative; padding:32px; border-radius:20px; background:white; box-shadow:0 35px 90px rgba(0,0,0,.35); text-align:center; }
.admin-login-modal > span { color:var(--blue); font-size:9px; font-weight:800; letter-spacing:.16em; }
.admin-login-modal h2 { margin:7px 0 8px; font-size:24px; }
.admin-login-modal > p { margin:0 0 22px; color:#7d8493; font-size:11px; line-height:1.6; }
.admin-login-modal > small { display:block; margin-top:14px; color:#a0a6b2; font-size:8px; line-height:1.5; }
.login-lock { width:54px; height:54px; display:grid; place-items:center; margin:0 auto 16px; border-radius:50%; color:var(--blue); background:#edf1ff; font-size:24px; }
.login-close { position:absolute; right:15px; top:15px; width:32px; height:32px; border:0; border-radius:50%; color:#727a8b; background:#f2f4f7; font-size:18px; cursor:pointer; }
.admin-login-modal form { display:grid; gap:7px; text-align:left; }
.admin-login-modal form > label { color:#525b6d; font-size:10px; font-weight:700; }
.password-field { display:grid; grid-template-columns:1fr auto; border:1px solid #dce1e9; border-radius:9px; overflow:hidden; }
.password-field:focus-within { border-color:var(--blue); box-shadow:0 0 0 3px rgba(45,97,255,.08); }
.password-field input { min-width:0; height:42px; padding:0 12px; border:0; outline:0; font-size:12px; }
.password-field button { border:0; padding:0 12px; color:var(--blue); background:#f6f8ff; font-size:9px; font-weight:700; cursor:pointer; }
.login-error { min-height:18px; margin:1px 0 0; color:#d34e60; font-size:9px; line-height:1.5; }
.admin-login-button { height:42px; border:0; border-radius:9px; color:white; background:var(--blue); font-size:11px; font-weight:700; cursor:pointer; }
.admin-login-button:disabled { opacity:.6; cursor:wait; }
.admin-modal > header { padding: 20px 24px; display: flex; align-items: center; justify-content: space-between; color: white; background: var(--navy); }
.admin-modal > header span { color: var(--cyan); font-size: 8px; font-weight: 800; letter-spacing: .16em; }.admin-modal > header h2 { margin: 4px 0 0; font-size: 19px; }
.admin-modal > header button { width: 34px; height: 34px; border: 1px solid #3b4660; border-radius: 50%; background: transparent; color: white; font-size: 20px; cursor: pointer; }
.admin-body { min-height: 0; flex: 1; display: grid; grid-template-columns: 240px 1fr; }
.admin-list-panel { padding: 14px; border-right: 1px solid #e0e4eb; overflow-y: auto; background: white; }
.new-room-button { width: 100%; height: 37px; border: 1px dashed var(--blue); color: var(--blue); background: #f1f4ff; border-radius: 8px; font-size: 10px; font-weight: 700; cursor: pointer; margin-bottom: 10px; }
.admin-room-list { display: grid; gap: 4px; }
.admin-room-list button { width: 100%; display: grid; grid-template-columns: 26px 1fr auto; align-items: center; border: 0; border-radius: 8px; background: transparent; padding: 8px; text-align: left; cursor: pointer; color: #535c70; }
.admin-room-list button:hover, .admin-room-list button.active { background: #edf1ff; color: var(--blue); }
.admin-room-list button > span { font-size: 16px; }.admin-room-list button b { font-size: 10px; }.admin-room-list button small { font-size: 8px; color: #959cab; }
.admin-form { padding: 24px; overflow-y: auto; display: grid; gap: 14px; }
.admin-form label { display: grid; gap: 6px; color: #525b6d; font-size: 10px; font-weight: 700; }.admin-form label small { font-weight: 400; color: #9ba1ae; }
.admin-form input, .admin-form select, .admin-form textarea { width: 100%; border: 1px solid #dce1e9; border-radius: 8px; background: white; color: var(--ink); padding: 9px 10px; outline: 0; font-size: 11px; resize: vertical; }
.admin-form input:focus, .admin-form select:focus, .admin-form textarea:focus { border-color: var(--blue); box-shadow: 0 0 0 3px rgba(45,97,255,.08); }
.inventory-fieldset { min-width: 0; margin: 0; padding: 14px; border: 1px solid #dce1e9; border-radius: 10px; background: white; }
.inventory-fieldset legend { padding: 0 6px; color: #525b6d; font-size: 10px; font-weight: 700; }
.inventory-fieldset legend small { margin-left: 5px; color: #9ba1ae; font-weight: 400; }
.inventory-editor { display: grid; gap: 8px; }
.inventory-row { display: grid; grid-template-columns: minmax(0,1fr) 85px 52px; align-items: end; gap: 8px; padding-bottom: 8px; border-bottom: 1px solid #edf0f4; }
.inventory-row label { gap: 4px; font-size: 8px; }
.inventory-row input { height: 34px; }
.remove-inventory-button, .add-inventory-button { height: 34px; border-radius: 7px; font-size: 9px; font-weight: 700; cursor: pointer; }
.remove-inventory-button { border: 1px solid #efcbd0; color: #d34e60; background: white; }
.add-inventory-button { width: 100%; margin-top: 10px; border: 1px dashed var(--blue); color: var(--blue); background: #f4f6ff; }
.empty-inventory { margin: 4px 0; padding: 12px; border-radius: 7px; color: #9299a8; background: #f5f6f8; text-align: center; font-size: 9px; }
.admin-grid { display: grid; grid-template-columns: 1fr 130px; gap: 12px; }
.admin-actions { display: flex; justify-content: flex-end; gap: 8px; padding-top: 5px; }
.admin-actions button { height: 38px; border-radius: 8px; padding: 0 15px; font-size: 10px; font-weight: 700; cursor: pointer; }
.delete-room-button { border: 1px solid #efcbd0; color: #d34e60; background: white; margin-right: auto; }.delete-room-button:disabled { opacity: .35; cursor: not-allowed; }.save-room-button { border: 0; color: white; background: var(--blue); }
.admin-footer { min-height: 48px; padding: 10px 20px; display: flex; align-items: center; color: #858d9e; background: white; border-top: 1px solid #e0e4eb; font-size: 9px; }
.admin-footer button { border: 0; background: transparent; color: #d34e60; font-size: 9px; cursor: pointer; }
.admin-footer span + button { margin-left:auto; color:var(--blue); }

@media (max-width: 900px) {
  .map-layout { grid-template-columns: 1fr; }.map-viewport { min-height: auto; }.route-guide { min-height: 350px; }
  .directory-toolbar { align-items: stretch; flex-direction: column; }.space-search { width: 100%; }.space-grid { grid-template-columns: repeat(2,1fr); }
}
@media (max-width: 600px) {
  .feedback-fab { right:14px; bottom:14px; min-width:48px; width:48px; padding:0; }.feedback-fab b { display:none; }.feedback-modal { padding:28px 20px 22px; }.feedback-identity { grid-template-columns:1fr; }
  .admin-toggle { width: 42px; height: 42px; padding: 0; font-size: 0; }.admin-toggle span { font-size: 16px; margin: 0; }
  .map-section { padding-top: 70px; padding-bottom: 70px; }.map-toolbar { align-items: stretch; flex-wrap: wrap; }.map-select-group { min-width: calc(50% - 25px); }.route-arrow { align-self: center; }.draw-route-button { width: 100%; }
  .map-legend { right: 8px; bottom: 8px; }.space-grid { grid-template-columns: 1fr; }.space-card { min-height: 245px; }
  .admin-body { grid-template-columns: 1fr; overflow-y: auto; }.admin-list-panel { max-height: 190px; border-right: 0; border-bottom: 1px solid #e0e4eb; }.admin-form { overflow: visible; }.admin-grid { grid-template-columns: 1fr; }.inventory-row { grid-template-columns: minmax(0,1fr) 72px; }.remove-inventory-button { grid-column: 1/-1; }.admin-modal { max-height: 94vh; }.admin-footer { flex-wrap: wrap; gap: 6px; }
  footer { align-items:flex-start; flex-direction:column; gap:12px; } footer > span { margin-left:0; }.footer-links { flex-wrap:wrap; }.policy-page { padding:20px 12px; }.policy-shell { padding:28px 20px; }.policy-shell h1 { font-size:27px; }
}
