:root{--bg:#101412;--card:rgba(18,24,21,.82);--line:rgba(255,255,255,.12);--txt:#f3f1ea;--mut:#b9bfb8;--acc:#6fd3a0;--acc2:#2f8f63;--red:#d7322b;--r:16px}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bg);color:var(--txt);font-family:Inter,"Segoe UI",Roboto,system-ui,Arial,sans-serif;-webkit-font-smoothing:antialiased;overflow:hidden}
button{font:inherit;color:inherit;cursor:pointer}
#ui{position:fixed;inset:0;pointer-events:none;z-index:10}
#ui>*{pointer-events:auto}
.topbar{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;gap:16px;padding:12px max(16px,env(safe-area-inset-right)) 12px max(16px,env(safe-area-inset-left));background:linear-gradient(#0b0f0dcc,#0b0f0d00);pointer-events:none}
.topbar>*{pointer-events:auto}
.proj{display:flex;align-items:center;gap:10px;min-width:0}
.proj-logo{width:38px;height:38px;border-radius:11px;background:linear-gradient(135deg,#6fd3a0,#2f8f63);display:grid;place-items:center;font-weight:800;color:#0d1a13;letter-spacing:.5px;flex:none}
.proj b{display:block;font-size:15px;white-space:nowrap}
.proj span{display:block;font-size:12px;color:var(--mut);white-space:nowrap}
.crumb{flex:1;text-align:center;font-size:14px;color:var(--mut);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.crumb b{color:var(--txt)}
.btn{border:1px solid var(--line);background:rgba(255,255,255,.08);padding:10px 16px;border-radius:999px;font-size:14px;font-weight:600;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:.15s;display:inline-flex;align-items:center;gap:8px;white-space:nowrap}
.btn:hover{background:rgba(255,255,255,.16)}
.btn-primary{background:var(--acc);color:#0b1a12;border-color:transparent}
.btn-primary:hover{background:#8ce6b7}
.btn-primary.on{background:#f3f1ea}
.btn-vr{background:#f3f1ea;color:#111;border-color:transparent}
.btn-vr:hover{background:#fff}
.btn-vr.off{background:rgba(255,255,255,.1);color:var(--mut)}
/* Lobby */
.lobby{position:absolute;inset:0;overflow:auto;background:linear-gradient(90deg,rgba(9,13,11,.92) 0%,rgba(9,13,11,.72) 55%,rgba(9,13,11,.35) 100%);padding:84px 24px 90px;transition:opacity .35s}
body:not([data-view=lobby]) .lobby{opacity:0;pointer-events:none;visibility:hidden}
.lobby-inner{max-width:1180px;margin:0 auto}
.eyebrow{display:inline-block;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--acc);font-weight:700;margin-bottom:10px}
.hero h1{font-size:clamp(28px,4.4vw,50px);line-height:1.05;margin:0 0 14px;letter-spacing:-.02em}
.hero p{max-width:640px;color:#d5d9d2;font-size:16px;line-height:1.55;margin:0 0 26px}
.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);display:flex;flex-direction:column}
.card img{width:100%;aspect-ratio:7/4;object-fit:cover;display:block}
.card-b{padding:16px 16px 18px;display:flex;flex-direction:column;gap:10px;flex:1}
.card h3{margin:0;font-size:20px}
.card .tag{font-size:12px;color:var(--acc);font-weight:700;text-transform:uppercase;letter-spacing:.08em}
.specs{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.spec{background:rgba(255,255,255,.06);border-radius:10px;padding:8px;text-align:center}
.spec b{display:block;font-size:17px}.spec span{font-size:11px;color:var(--mut)}
.price{display:flex;justify-content:space-between;align-items:end;gap:8px}
.price b{font-size:22px}.price small{display:block;font-size:11px;color:var(--mut);font-weight:400}
.disp{font-size:12px;font-weight:700;padding:5px 9px;border-radius:999px;background:rgba(111,211,160,.15);color:var(--acc)}
.disp.low{background:rgba(215,50,43,.18);color:#ff8a80}
.card p{margin:0;font-size:13.5px;color:#cfd4cd;line-height:1.45}
.card-a{display:flex;gap:8px;margin-top:auto}
.card-a .btn{flex:1;justify-content:center}
.note{margin-top:18px;font-size:12px;color:var(--mut)}
/* Tour UI */
.tourui{position:absolute;inset:0;pointer-events:none}
body:not([data-view=tour]) .tourui{display:none}
.tourui>*{pointer-events:auto}
.minimap{position:absolute;left:16px;top:72px;width:230px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:10px 10px 8px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.minimap h4{margin:0 0 6px;font-size:12px;color:var(--mut);font-weight:600;display:flex;justify-content:space-between}
.minimap svg{width:100%;display:block}
.minimap rect.room{fill:rgba(255,255,255,.05);stroke:rgba(255,255,255,.55);stroke-width:.8;cursor:pointer;transition:.2s}
.minimap rect.room:hover{fill:rgba(111,211,160,.25)}
.minimap rect.room.cur{fill:rgba(111,211,160,.55);stroke:#6fd3a0}
.minimap rect.room.na{fill:rgba(255,255,255,.02);cursor:default;stroke-dasharray:2 2}
.minimap text{fill:#fff;font-size:5px;text-anchor:middle;pointer-events:none;font-weight:600}
.minimap .lvl{fill:var(--mut);font-size:4.4px;text-anchor:start}
.minimap .dot{fill:#fff}
.bottom{position:absolute;left:0;right:0;bottom:0;padding:0 16px max(16px,env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:center;gap:10px;pointer-events:none;background:linear-gradient(#0b0f0d00,#0b0f0daa)}
.bottom>*{pointer-events:auto}
.caption{max-width:760px;text-align:center;font-size:16px;line-height:1.45;background:rgba(0,0,0,.55);padding:10px 16px;border-radius:12px;display:none}
.caption.show{display:block}
.ambbar{display:flex;gap:8px;overflow-x:auto;max-width:100%;padding:2px;scrollbar-width:none}
.ambbar button{flex:none;border:1px solid var(--line);background:rgba(15,20,18,.7);padding:8px 13px;border-radius:999px;font-size:13px;backdrop-filter:blur(8px)}
.ambbar button.cur{background:var(--acc);color:#0b1a12;border-color:transparent;font-weight:700}
.controls{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;padding-bottom:4px}
.progress{height:3px;background:rgba(255,255,255,.15);border-radius:3px;overflow:hidden;width:260px}
/* modal */
.modal{position:absolute;inset:0;background:rgba(0,0,0,.55);display:grid;place-items:center;padding:16px}
.modal[hidden]{display:none}
.modal-card{position:relative;background:#141a17;border:1px solid var(--line);border-radius:18px;max-width:460px;width:100%;padding:22px;max-height:90vh;overflow:auto}
.modal-x{position:absolute;right:12px;top:10px;background:none;border:0;font-size:18px;color:var(--mut)}
.modal-card h3{margin:0 0 4px;font-size:22px}
.modal-card table{width:100%;border-collapse:collapse;margin:12px 0;font-size:14px}
.modal-card td{padding:7px 0;border-bottom:1px solid var(--line)}
.modal-card td:last-child{text-align:right;font-weight:600}
.modal-card .fine{font-size:12px;color:var(--mut)}
.toast{position:absolute;left:50%;top:76px;transform:translateX(-50%);background:#f3f1ea;color:#111;padding:10px 16px;border-radius:12px;font-size:14px;max-width:90vw;box-shadow:0 10px 30px rgba(0,0,0,.35);text-align:center}
.kz-badge{position:absolute;right:max(14px,env(safe-area-inset-right));bottom:max(14px,env(safe-area-inset-bottom));display:flex;align-items:center;gap:8px;padding:5px 12px 5px 5px;border-radius:999px;background:rgba(244,239,230,.92);color:#151515;text-decoration:none;font-size:12px;box-shadow:0 6px 18px rgba(0,0,0,.25)}
.kz-badge img{width:26px;height:26px;border-radius:50%;object-fit:cover}
body[data-view=tour] .kz-badge{bottom:auto;top:66px}
.vrhint{position:absolute;left:50%;top:64px;transform:translateX(-50%);font-size:12px;color:var(--mut);background:rgba(0,0,0,.5);padding:6px 12px;border-radius:999px;white-space:nowrap}
.vrhint[hidden]{display:none}
@media (max-width:900px){.cards{grid-template-columns:1fr;max-width:520px}.lobby{background:rgba(9,13,11,.82);padding:76px 16px 80px}.crumb{display:none}}
@media (max-width:640px){
  .proj span{display:none}
  .btn-vr span{display:none}.btn-vr{padding:10px 12px}
  .minimap{width:150px;top:64px;left:10px;padding:7px}
  .minimap h4{font-size:10px}
  .caption{font-size:14px}
  .controls .btn{padding:9px 12px;font-size:13px}
  body[data-view=tour] .kz-badge{top:62px}
  .kz-badge span{display:none}.kz-badge{padding:4px}
}
#ui>.tourui,#ui>.topbar{pointer-events:none}
.topbar{z-index:3}
.sm{display:none}
@media (max-width:640px){.lg{display:none}.sm{display:inline}.controls{flex-wrap:nowrap}}
