.mm-stage { margin-top: 24px; display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.mm-stage.is-fs { position: fixed; inset: 0; z-index: 9999; margin: 0; padding: 10px; background: #0b0d14; overflow: hidden; }
.mm-stage:fullscreen { padding: 10px; background: #0b0d14; }
.mm-toolbar { display: flex; flex-wrap: wrap; gap: 8px 14px; padding: 10px; border: 1px solid var(--line); border-radius: 12px; background: rgba(255, 255, 255, .03); }
.mm-group { display: flex; align-items: center; gap: 4px; min-width: 0; }
.mm-group-label { margin-right: 4px; color: #94a3b8; font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; white-space: nowrap; }
.mm-btn { min-height: 44px; display: inline-flex; align-items: center; justify-content: center; gap: 7px; padding: 0 13px; border: 1px solid var(--line); border-radius: 10px; color: #e2e8f0; background: rgba(255, 255, 255, .04); cursor: pointer; font: 700 13px/1 'Manrope', sans-serif; white-space: nowrap; flex: 0 0 auto; }
.mm-btn:hover { border-color: var(--accent-purple); }
.mm-btn[aria-pressed="true"], .mm-btn.is-active { color: #fff; border-color: rgba(192, 132, 252, .8); background: rgba(192, 132, 252, .22); }
.mm-btn:focus-visible, .mm-chip:focus-visible, .mm-place:focus-visible { outline: 2px solid var(--accent-purple); outline-offset: 2px; }
.mm-btn:disabled { opacity: .5; cursor: not-allowed; }
.mm-tool-panel { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; padding: 12px; border: 1px solid rgba(192, 132, 252, .35); border-radius: 12px; background: rgba(192, 132, 252, .08); color: #e2e8f0; font-size: 14px; line-height: 1.5; }
.mm-tool-panel[hidden] { display: none; }
.mm-tool-panel select { min-height: 44px; max-width: 100%; padding: 0 10px; border: 1px solid var(--line); border-radius: 10px; color: #f1f5f9; background: #151824; font: 600 13px 'Manrope', sans-serif; }
.mm-tool-text { flex: 1 1 220px; min-width: 0; }
.mm-body { display: grid; grid-template-columns: 300px minmax(0, 1fr); gap: 16px; align-items: start; min-height: 0; }
.mm-stage.is-fs .mm-body { flex: 1; min-height: 0; grid-template-columns: minmax(0, 1fr); }
.mm-stage.is-fs .mm-places, .mm-stage.is-fs .mm-info { display: none; }
.mm-stage.is-fs .mm-frame { height: 100%; }
.mm-places { display: flex; flex-direction: column; gap: 10px; min-width: 0; height: 560px; padding: 12px; border: 1px solid var(--line); border-radius: 12px; background: rgba(255, 255, 255, .03); }
.mm-search { width: 100%; min-height: 44px; padding: 0 12px; border: 1px solid var(--line); border-radius: 10px; color: #f1f5f9; background: #151824; font: 500 14px 'DM Sans', sans-serif; }
.mm-search::placeholder { color: #94a3b8; }
.mm-chips { display: flex; gap: 6px; overflow-x: auto; padding-bottom: 4px; scrollbar-width: thin; }
.mm-chip { min-height: 40px; padding: 0 12px; border: 1px solid var(--line); border-radius: 999px; color: #cbd5e1; background: transparent; cursor: pointer; font: 700 12px 'Manrope', sans-serif; white-space: nowrap; flex: 0 0 auto; }
.mm-chip[aria-pressed="true"] { color: #fff; border-color: rgba(192, 132, 252, .8); background: rgba(192, 132, 252, .22); }
.mm-list { display: flex; flex-direction: column; gap: 6px; flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain; }
.mm-place { display: flex; align-items: center; justify-content: space-between; gap: 8px; width: 100%; min-height: 48px; padding: 8px 12px; border: 1px solid transparent; border-radius: 10px; color: #e2e8f0; background: rgba(255, 255, 255, .04); cursor: pointer; text-align: left; font: 600 13px/1.35 'Manrope', sans-serif; }
.mm-place small { display: block; color: #94a3b8; font-weight: 500; font-size: 11px; }
.mm-place[aria-current="true"] { border-color: rgba(192, 132, 252, .8); background: rgba(192, 132, 252, .18); }
.mm-code { flex: 0 0 auto; padding: 2px 7px; border-radius: 6px; color: #e9d5ff; background: rgba(192, 132, 252, .2); font-size: 11px; font-weight: 800; }
.mm-empty { padding: 14px 4px; color: #94a3b8; font-size: 13px; }
.mm-frame { position: relative; min-width: 0; height: 560px; overflow: hidden; border: 1px solid var(--line); border-radius: 12px; background: #111827; touch-action: none; }
#mitMap { width: 100%; height: 100%; }
#mitCesium { position: absolute; inset: 0; width: 100%; height: 100%; }
#mitCesium[hidden], #mitMap[hidden] { display: none; }
#mitMap.tod-eve .leaflet-tile-pane { filter: sepia(.35) saturate(1.25) brightness(.88) hue-rotate(-8deg); }
#mitMap.tod-night .leaflet-tile-pane { filter: brightness(.5) saturate(.75) hue-rotate(185deg) contrast(1.1); }
#mitMap.tod-night.is-dark .leaflet-tile-pane { filter: none; }
.mm-pin { width: 16px; height: 16px; border: 2px solid #fff; border-radius: 50%; background: #a855f7; box-shadow: 0 2px 8px rgba(0, 0, 0, .5); }
.mm-pin.cat-dorm { background: #38bdf8; } .mm-pin.cat-study { background: #f59e0b; } .mm-pin.cat-sport { background: #22c55e; } .mm-pin.cat-around { background: #f43f5e; }
.mm-pin.is-selected { transform: scale(1.5); }
.mm-pin-label { position: absolute; left: 14px; top: -4px; padding: 1px 6px; border-radius: 5px; color: #fff; background: rgba(12, 14, 20, .82); font: 800 11px/1.4 'Manrope', sans-serif; white-space: nowrap; pointer-events: none; }
.mm-no-labels .mm-pin-label { display: none; }
.mm-compass { position: absolute; z-index: 500; top: 12px; right: 12px; width: 48px; height: 48px; border: 1px solid rgba(255, 255, 255, .25); border-radius: 50%; color: #fff; background: rgba(12, 14, 20, .88); cursor: pointer; box-shadow: 0 4px 16px rgba(0, 0, 0, .35); font: 800 11px 'Manrope', sans-serif; }
.mm-compass i { display: block; font-size: 18px; color: #f43f5e; transition: none; }
.mm-compass span { display: block; margin-top: -1px; }
.mm-badge { position: absolute; z-index: 500; top: 12px; left: 12px; max-width: calc(100% - 84px); padding: 7px 11px; border-radius: 8px; color: #e2e8f0; background: rgba(12, 14, 20, .88); font: 700 12px 'Manrope', sans-serif; pointer-events: none; }
.mm-load { position: absolute; z-index: 600; left: 50%; top: 50%; display: flex; align-items: center; gap: 12px; max-width: min(360px, calc(100% - 32px)); transform: translate(-50%, -50%); padding: 14px 18px; border: 1px solid rgba(255, 255, 255, .16); border-radius: 10px; color: #fff; background: rgba(12, 14, 20, .94); font-size: 13px; line-height: 1.5; }
.mm-load[hidden] { display: none; }
.mm-spin { width: 20px; height: 20px; flex: 0 0 auto; border: 3px solid rgba(255, 255, 255, .25); border-top-color: #c084fc; border-radius: 50%; animation: mm-rot .8s linear infinite; }
.mm-load.is-error .mm-spin { display: none; }
@keyframes mm-rot { to { transform: rotate(360deg); } }
.mm-hint { position: absolute; z-index: 700; left: 50%; bottom: 16px; width: min(420px, calc(100% - 24px)); transform: translateX(-50%); padding: 14px 16px; border: 1px solid rgba(192, 132, 252, .5); border-radius: 12px; color: #e2e8f0; background: rgba(12, 14, 20, .96); font-size: 13px; line-height: 1.6; }
.mm-hint[hidden] { display: none; }
.mm-hint strong { display: block; margin-bottom: 4px; color: #fff; }
.mm-hint ul { margin: 0 0 10px; padding-left: 18px; }
.mm-hud { position: absolute; z-index: 550; left: 10px; right: 10px; bottom: 10px; display: flex; flex-direction: column; gap: 8px; padding: 10px; border-radius: 12px; color: #e2e8f0; background: rgba(12, 14, 20, .9); font-size: 12px; line-height: 1.5; }
.mm-hud[hidden] { display: none; }
.mm-hud-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.mm-hud-routes { display: flex; gap: 6px; overflow-x: auto; padding-bottom: 2px; }
.mm-hud label { display: flex; align-items: center; gap: 8px; flex: 1 1 160px; }
.mm-hud input[type="range"] { flex: 1; min-width: 80px; accent-color: #a855f7; }
.mm-joy { position: absolute; z-index: 560; left: 18px; bottom: 120px; width: 110px; height: 110px; border: 1px solid rgba(255, 255, 255, .3); border-radius: 50%; background: rgba(12, 14, 20, .55); touch-action: none; display: none; }
.mm-joy.is-on { display: block; }
.mm-joy i { position: absolute; left: 50%; top: 50%; width: 44px; height: 44px; margin: -22px 0 0 -22px; border-radius: 50%; background: rgba(192, 132, 252, .75); }
.mm-vert { position: absolute; z-index: 560; right: 14px; bottom: 120px; display: none; flex-direction: column; gap: 8px; }
.mm-vert.is-on { display: flex; }
.mm-vert .mm-btn { width: 52px; min-height: 52px; background: rgba(12, 14, 20, .75); }
.mm-info { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 16px; }
.mm-card { padding: 16px 18px; border: 1px solid var(--line); border-radius: 12px; background: rgba(255, 255, 255, .03); }
.mm-card h3 { margin: 0 0 8px; color: #fff; font: 700 17px/1.3 'Manrope', sans-serif; }
.mm-card p { margin: 0 0 8px; color: var(--muted); font-size: 14px; line-height: 1.65; }
.mm-card-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.mm-card a.mm-btn { text-decoration: none; }
.mm-note { color: #94a3b8; font-size: 12px; line-height: 1.55; }
.mm-toast { position: absolute; z-index: 800; left: 50%; top: 14px; transform: translateX(-50%); padding: 9px 14px; border-radius: 8px; color: #fff; background: rgba(88, 28, 135, .96); font: 700 12px 'Manrope', sans-serif; }
.mm-toast[hidden] { display: none; }
@media (max-width: 900px) {
  .mm-body { grid-template-columns: 1fr; }
  .mm-frame { order: 1; height: min(72vh, 520px); min-height: 420px; }
  .mm-places { order: 2; height: auto; max-height: 420px; }
  .mm-info { grid-template-columns: 1fr; }
}
@media (max-width: 640px) {
  .mm-toolbar { flex-wrap: nowrap; flex-direction: column; gap: 8px; padding: 8px; }
  .mm-group { overflow-x: auto; padding-bottom: 2px; scrollbar-width: none; }
  .mm-group::-webkit-scrollbar { display: none; }
  .mm-group-label { display: none; }
  .mm-btn { padding: 0 12px; }
  .mm-stage.is-fs .mm-frame { height: 100%; min-height: 0; }
  .mm-stage.is-fs .mm-toolbar { max-height: 38vh; overflow-y: auto; }
  .mm-joy { bottom: 150px; }
  .mm-vert { bottom: 150px; }
  .mm-pin:hover { transform: none; }
}
.mm-stage.is-fs .mm-body { grid-template-rows: minmax(0, 1fr); }

.mit-virtual-tour {
  display: grid;
  grid-template-columns: minmax(0, .9fr) minmax(320px, 1.1fr);
  gap: 24px;
  align-items: center;
  margin: 28px 0;
  padding: clamp(20px, 3vw, 32px);
  border: 1px solid rgba(192, 132, 252, .22);
  border-radius: 18px;
  background: linear-gradient(135deg, rgba(192, 132, 252, .1), rgba(244, 63, 94, .06));
}

.mit-tour-kicker {
  margin: 0 0 8px;
  color: #c084fc;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .1em;
  text-transform: uppercase;
}

.mit-virtual-tour-copy h2 {
  margin: 0 0 10px;
  color: #fff;
  font: 700 clamp(23px, 3vw, 32px)/1.2 'Manrope', sans-serif;
}

.mit-virtual-tour-copy > p:last-child,
.mit-tour-note {
  margin: 0;
  color: #cbd5e1;
  font-size: 13px;
  line-height: 1.65;
}

.mit-virtual-tour-actions {
  display: grid;
  gap: 9px;
}

.mit-tour-button {
  display: grid;
  grid-template-columns: 24px minmax(0, 1fr) 18px;
  align-items: center;
  gap: 12px;
  min-height: 66px;
  padding: 11px 14px;
  border: 1px solid rgba(203, 213, 225, .14);
  border-radius: 11px;
  color: #f8fafc;
  background: rgba(9, 10, 15, .54);
  text-align: left;
  text-decoration: none;
  cursor: pointer;
  transition: border-color .2s ease, background .2s ease, transform .2s ease;
}

.mit-tour-button:hover {
  transform: translateY(-1px);
  border-color: rgba(192, 132, 252, .65);
  background: rgba(28, 24, 45, .8);
}

.mit-tour-button:focus-visible {
  outline: 2px solid #c084fc;
  outline-offset: 3px;
}

.mit-tour-button > i:first-child {
  color: #c084fc;
  font-size: 17px;
  text-align: center;
}

.mit-tour-button > i:last-child {
  color: #94a3b8;
  font-size: 12px;
}

.mit-tour-button strong,
.mit-tour-button small { display: block; }
.mit-tour-button strong { font-size: 13px; line-height: 1.4; }
.mit-tour-button small { margin-top: 3px; color: #94a3b8; font-size: 11px; line-height: 1.4; }
.mit-tour-note { grid-column: 1 / -1; padding-top: 14px; border-top: 1px solid rgba(203, 213, 225, .1); }

@media (max-width: 760px) {
  .mit-virtual-tour { grid-template-columns: 1fr; }
}

@media (max-width: 420px) {
  .mit-virtual-tour { padding: 17px; }
  .mit-tour-button { grid-template-columns: 20px minmax(0, 1fr) 16px; gap: 9px; padding: 10px; }
}
