:root{font-family:Arial,Helvetica,sans-serif;color:#123932;background:#d8e6e3;font-synthesis:none}*{box-sizing:border-box}body{margin:0;overflow:hidden}button,select,a{-webkit-tap-highlight-color:transparent}button,select{font:inherit}button{cursor:pointer}button:focus-visible,select:focus-visible,a:focus-visible{outline:3px solid #bc925d;outline-offset:4px}#viewport{position:fixed;inset:0}canvas{display:block;width:100%;height:100%}header{position:fixed;top:30px;left:36px;right:36px;display:flex;justify-content:space-between;align-items:center;pointer-events:none}.brand{display:flex;align-items:center;gap:13px;color:inherit;text-decoration:none;font-size:20px;letter-spacing:3px;pointer-events:auto}.mark{font:42px Georgia,serif;border:1px solid #66837980;width:58px;height:58px;display:inline-flex;align-items:center;justify-content:center}.brand small{display:block;font-size:8px;letter-spacing:2.1px;margin-top:5px}.badge{background:#f6f7f1d9;border-radius:24px;padding:12px 17px;font-size:9px;letter-spacing:1.4px;backdrop-filter:blur(12px)}i{display:inline-block}.badge i{width:6px;height:6px;background:#678267;border-radius:50%;margin-right:7px}aside{position:fixed;top:135px;left:36px;width:276px;background:#f7f7f0ec;padding:27px 24px 20px;border:1px solid #ffffffbd;box-shadow:0 14px 60px #1639320d;backdrop-filter:blur(16px);border-radius:3px}.eyebrow{font-size:9px;letter-spacing:1.8px;color:#6a7c71}h1{font:37px/1.11 Georgia,serif;font-weight:400;margin:17px 0 15px;letter-spacing:-1px}aside p{font-size:11px;line-height:1.8;color:#708077}.facts{display:flex;gap:27px;padding:18px 0 22px}.facts span{font-size:9px;color:#718279;display:flex;flex-direction:column;gap:6px}.facts b{font:29px Georgia,serif;color:#183f36}.primary,.secondary{width:100%;padding:15px 13px;border:0;text-align:left;font-size:11px;transition:background .15s}.primary{background:#163f35;color:#fff}.primary span{float:right}.primary:hover{background:#285647}.primary:disabled{opacity:.5;cursor:wait}.secondary{margin-top:8px;border:1px solid #b4c3b6;background:transparent;color:#244b3e;text-align:center}label{display:block;font-size:8px;letter-spacing:1.4px;margin:23px 0 9px}select{width:100%;border:1px solid #cad2c8;padding:11px 7px;background:#f9faf4;color:#395647;font-size:11px}.links{display:flex;gap:15px;margin-top:19px}.links a{font-size:9px;color:#65755e;text-underline-offset:4px}.note{font-size:9px!important;line-height:1.55!important;margin:16px 0 0;color:#879086!important}nav{position:fixed;bottom:68px;left:50%;transform:translateX(-50%);display:flex;background:#f5f7f0ed;backdrop-filter:blur(14px);border:1px solid #ffffffad;border-radius:4px;box-shadow:0 7px 30px #12392b15}nav button{border:0;border-right:1px solid #d6ded2;background:transparent;padding:15px 20px;color:#7c8976;font-size:9px;white-space:nowrap}nav button span{margin-left:9px;font-size:11px;color:#355a48}nav button.active{background:#173f34;color:#b8c8ba}nav button.active span{color:white}footer{position:fixed;bottom:24px;left:36px;right:36px;display:flex;justify-content:space-between;font-size:8px;letter-spacing:1.1px;color:#4f7165;pointer-events:none}#loader{position:fixed;inset:0;background:#f3f4ec;display:flex;align-items:center;justify-content:center;flex-direction:column;z-index:10}#loader h2{font-size:15px;font-weight:400;letter-spacing:4px;margin-top:30px}#loader p{font-size:11px;color:#74806d}.bar{width:160px;height:2px;background:#dae0d4;margin-top:20px}.bar i{display:block;height:100%;width:15%;background:#335b45;transition:width .2s}#crosshair{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);color:white;text-shadow:0 1px 3px #000;font-size:34px;pointer-events:none}#interaction{position:fixed;top:56%;left:50%;transform:translateX(-50%);background:#163f35ee;color:white;padding:11px 20px;border-radius:3px;font-size:12px;pointer-events:none}#help{position:fixed;bottom:64px;left:50%;transform:translateX(-50%);padding:12px 18px;background:#143c32de;color:#dfebdd;border-radius:3px;white-space:nowrap;font-size:10px}#resume{position:fixed;left:50%;top:48%;transform:translate(-50%,-50%);background:#f6f8ef;border:1px solid #aabcaa;color:#163f35;padding:20px 28px;box-shadow:0 5px 40px #12393230}body.walking aside,body.walking nav,body.walking .badge{display:none}[hidden]{display:none!important}@media(max-width:850px){header{top:18px;left:18px;right:18px}.badge{display:none}aside{top:104px;left:18px;width:224px;padding:18px}h1{font-size:29px}aside .note,.links,.facts{display:none}aside p{margin-bottom:18px}nav{bottom:54px;width:calc(100% - 36px)}nav button{padding:13px 8px;flex:1}nav button span{font-size:9px;margin-left:5px}footer{left:18px;right:18px;bottom:18px}footer span:last-child{display:none}#help{font-size:8px;white-space:normal;width:90%;line-height:1.8}.brand{font-size:16px}}
aside{max-height:calc(100dvh - 220px);overflow:auto;scrollbar-width:thin}aside .facts,aside .links{display:none}aside h1{font-size:32px}aside label{margin-top:16px}.section-mode aside h1,.section-mode aside>p,.section-mode aside>.eyebrow{display:none}#lot-count{letter-spacing:0;float:right}.badge{margin-right:115px}#floor-rail{position:fixed;right:27px;top:50%;transform:translateY(-50%);background:#f7f7f0e8;padding:9px;border:1px solid #fff;border-radius:24px;display:grid;gap:3px}#floor-rail small{font-size:8px;text-align:center;margin:5px 0 8px;letter-spacing:1px}#floor-rail button{border:0;background:transparent;color:#34564b;border-radius:50%;width:32px;height:32px}#floor-rail button.active{background:#1e493d;color:white}#lot-labels{position:fixed;inset:0;pointer-events:none}.lot-label{position:absolute;left:0;top:0;background:#fffffff0;color:#27493f;border:1px solid #fff;border-radius:5px;padding:7px 10px;box-shadow:0 3px 14px #183c3218;pointer-events:auto;display:flex;gap:8px;align-items:center;white-space:nowrap;font-size:9px}.lot-label b{font-size:10px}.lot-label span{color:#69776b}.lot-label:after{content:'';position:absolute;bottom:-8px;left:50%;width:1px;height:8px;background:#7f9689}#lot-tooltip{position:fixed;z-index:5;width:250px;padding:20px;background:#173e35f5;color:#fff;border-radius:8px;box-shadow:0 15px 45px #143a3330;pointer-events:none}#lot-tooltip .eyebrow{color:#b2c6b5}#lot-tooltip h3{font:22px Georgia;margin:12px 0}#lot-tooltip p{font-size:11px;color:#c4d4c9}#lot-tooltip strong{font-size:18px;font-weight:400}#lot-tooltip small{display:block;margin-top:14px;color:#b1c2b5;font-size:10px}#lot-card{position:fixed;right:87px;top:125px;width:290px;padding:29px 24px 20px;background:#fafaf4f5;border:1px solid #fff;box-shadow:0 15px 50px #25473917;backdrop-filter:blur(16px);border-radius:8px;max-height:calc(100dvh - 215px);overflow:auto}#lot-card h2{font:29px/1.1 Georgia;margin:18px 0;color:#204c3d}#lot-view{font-size:11px;color:#7c897a}.lot-spec{border-block:1px solid #dfe3d8;padding:17px 0;margin:21px 0;display:flex;align-items:baseline;justify-content:space-between;gap:8px}.lot-spec strong{font:26px Georgia}.lot-spec span{font-size:10px}#lot-price{display:block;font:25px Georgia}#price-date{display:block;font-size:9px;color:#84907b;margin:8px 0 20px}.icon-close{position:absolute;right:10px;top:8px;border:0;background:transparent;color:#5f7565;font-size:26px;padding:3px 8px}.text-button{border:0;background:none;color:#55715e;font-size:10px;padding:13px 9px 0 0;text-decoration:underline;text-underline-offset:4px}#environment{position:fixed;right:28px;top:31px}#sun-toggle{border:1px solid #fff;background:#f9faf4dd;border-radius:30px;color:#426553;font-size:20px;padding:8px 15px}#sun-toggle span{font-size:10px;margin-left:5px}#sun-panel{position:absolute;right:0;top:50px;width:250px;background:#fafbf6f5;padding:8px 20px 20px;border:1px solid white;border-radius:8px;box-shadow:0 8px 40px #20483216;z-index:6}#sun-panel input{width:100%;accent-color:#396349}#sun-panel output{float:right;letter-spacing:0}#sun-panel button{border:1px solid #d1dacb;background:transparent;padding:8px 15px;margin-top:13px;font-size:10px;color:inherit}#sun-panel p{font-size:9px;color:#788774;line-height:1.5}#compass{position:fixed;right:28px;bottom:75px;text-align:center;width:108px}#compass-rose{width:66px;height:66px;border:1px solid #7b948466;border-radius:50%;margin:0 auto 11px;position:relative;background:#f5f8f055}#compass-rose b,#compass-rose span{position:absolute;left:0;right:0;font-size:8px}#compass-rose b{top:5px}#compass-rose span{bottom:5px}#compass-rose i{font-style:normal;font-size:34px;line-height:64px;color:#536f54}#compass small{font-size:7px;letter-spacing:.7px;white-space:nowrap}dialog{border:1px solid white;border-radius:12px;background:#fbfcf7;color:#274b3c;padding:25px;max-width:min(800px,94vw);max-height:92dvh}dialog::backdrop{background:#18393166;backdrop-filter:blur(5px)}dialog h2{font:27px Georgia;margin:5px 40px 20px 0}dialog img{display:block;object-fit:contain;width:100%;max-height:65dvh}dialog p{font-size:11px;line-height:1.7;color:#77866f}#touch-walk{position:fixed;inset:auto 25px 95px;pointer-events:none;display:flex;align-items:end;justify-content:space-between}#joystick{width:108px;height:108px;background:#eef5ef44;border:1px solid #fff8;border-radius:50%;pointer-events:auto;touch-action:none;display:grid;place-items:center}#joystick i{width:40px;height:40px;background:#e1efe2bb;border-radius:50%}#touch-door{pointer-events:auto;border:1px solid #fffa;border-radius:25px;color:white;background:#244936aa;padding:15px}#exit-walk{position:fixed;top:25px;right:25px;padding:12px 17px;border:1px solid #fff8;background:#eef4e9eb;color:#244b39;border-radius:25px}body.walking #environment,body.walking #floor-rail,body.walking #lot-card,body.walking #lot-labels{display:none}body.walking #exit-walk{display:block!important}body:not(.walking) #touch-walk{display:none!important}.has-lot #intro{width:235px}.has-lot #intro h1,.has-lot #intro>p{display:none}
@media(max-width:850px){header{top:18px}.mark{height:42px;width:42px;font-size:31px}.brand{font-size:15px}#intro{top:auto;bottom:115px;left:14px;width:208px;max-height:46dvh;padding:16px}#intro>h1,#intro>p,#intro>.eyebrow,#intro>.note,#intro #orbit{display:none}#intro label{font-size:7px;margin:11px 0 7px}#intro select{font-size:10px;padding:9px 5px}#intro #walk{padding:12px}#floor-rail{right:12px;padding:5px;top:45%}#floor-rail button{width:29px;height:29px}#environment{top:20px;right:15px}#sun-toggle{font-size:18px;padding:6px 12px}#compass{right:12px;bottom:116px;width:83px}#compass small{font-size:6px}#compass-rose{width:49px;height:49px}#compass-rose i{font-size:25px;line-height:48px}#compass-rose b,#compass-rose span{font-size:6px}#lot-card{right:12px;left:12px;top:auto;bottom:109px;width:auto;max-height:42dvh;padding:20px}.has-lot #intro{display:none}#lot-card h2{font-size:25px;margin:10px 0}.lot-spec{padding:10px 0;margin:12px 0}.lot-spec strong,#lot-price{font-size:23px}#price-date{margin:6px 0 13px}#lot-card .primary,#lot-card .secondary{display:inline-block;width:calc(50% - 5px);text-align:center;vertical-align:top;margin:0;padding:13px 5px}.lot-label{padding:5px 7px;font-size:8px}.lot-label b{font-size:9px}#lot-tooltip{display:none!important}nav{bottom:44px;max-width:540px}nav button{padding:13px 5px}nav button span{font-size:8px}footer{font-size:7px;bottom:15px}.walking #help{bottom:33px}.walking .brand{opacity:.6}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

/* Markers and plaques.
   Motion rule taken from the reference the owner asked for: nothing appears by switching
   display, everything grows out of a dot. Position is written every frame as translate3d,
   so the transition only ever animates opacity and scale and never fights the projection. */
#poi-labels{position:fixed;inset:0;pointer-events:none;z-index:4}
.poi{position:absolute;left:0;top:0;display:flex;align-items:center;gap:0;padding:0;border:0;background:transparent;pointer-events:auto;transition:opacity .32s cubic-bezier(.22,.61,.36,1),scale .32s cubic-bezier(.22,.61,.36,1);will-change:transform}
.poi.is-off{opacity:0;scale:.72;pointer-events:none}
.poi__icon{width:38px;height:38px;border-radius:50%;background:#fffffff2;color:#26493d;display:grid;place-items:center;font:17px/1 Georgia,serif;font-style:normal;box-shadow:0 4px 18px #16382c26;transition:background .28s,color .28s,transform .28s cubic-bezier(.22,.61,.36,1);flex:0 0 auto}
.poi:hover .poi__icon,.poi:focus-visible .poi__icon{transform:scale(1.09)}
.poi__label{max-width:0;overflow:hidden;white-space:nowrap;font-size:9px;letter-spacing:1.5px;text-transform:uppercase;color:#173e35;background:#fffffff2;border-radius:19px;line-height:38px;height:38px;padding:0;margin-left:-19px;box-shadow:0 4px 18px #16382c26;transition:max-width .38s cubic-bezier(.22,.61,.36,1),padding .38s cubic-bezier(.22,.61,.36,1);order:-1;text-align:right}
.poi:hover .poi__label,.poi:focus-visible .poi__label,.poi.is-active .poi__label{max-width:230px;padding:0 32px 0 17px}
.poi.is-active .poi__icon{background:#12332b;color:#f4f6ee}
.poi.is-active .poi__label{background:#12332b;color:#eef2e8}
#poi-toggle{border:1px solid #fff;background:#f9faf4dd;border-radius:30px;color:#8d9a8c;font-size:15px;padding:9px 15px;margin-right:8px;transition:color .25s,background .25s}
#poi-toggle span{font-size:10px;margin-left:6px;letter-spacing:.6px}
#poi-toggle.is-on{color:#25493c;background:#ffffffee}
#poi-card{position:fixed;right:87px;top:125px;width:300px;padding:29px 26px 24px;background:#12332bf2;color:#eef2e8;border-radius:10px;box-shadow:0 18px 60px #10312415;backdrop-filter:blur(14px);animation:poi-in .34s cubic-bezier(.22,.61,.36,1)}
@keyframes poi-in{from{opacity:0;transform:translateY(14px)}}
#poi-card .eyebrow{color:#9fb8a4}
#poi-card h2{font:28px/1.12 Georgia,serif;font-weight:400;margin:14px 0 16px}
.poi-card__text{font-size:11px;line-height:1.85;color:#cdd9cd;margin:0}
.poi-card__facts{list-style:none;padding:0;margin:20px 0 0;border-top:1px solid #ffffff1f}
.poi-card__facts li{font-size:10px;letter-spacing:.5px;padding:11px 0 0;color:#b7c8b8}
.poi-card__facts li:before{content:'—';margin-right:9px;color:#7f9b84}
#poi-card .icon-close{color:#b7c9b9}
.sun-presets{display:flex;gap:6px;margin-top:6px}
.sun-presets button{flex:1;padding:9px 4px;margin-top:8px}
#sun-panel select{width:100%;border:1px solid #cad2c8;padding:9px 6px;background:#f9faf4;color:#395647;font-size:10px}
#sun-sky{float:right;letter-spacing:0;font-size:8px;color:#6f8274}
/* Lot plaques get the same easing so both layers feel like one system. */
.lot-label{transition:opacity .28s cubic-bezier(.22,.61,.36,1),scale .28s cubic-bezier(.22,.61,.36,1),background .2s,color .2s;will-change:transform}
.lot-label.is-off{opacity:0;scale:.8;pointer-events:none}
.lot-label:hover{background:#12332b;color:#f2f6ec}
.lot-label:hover span{color:#adc2b0}
.lot-label.is-active{background:#12332b;color:#f2f6ec}
.lot-label.is-active span{color:#adc2b0}
body.walking #poi-labels,body.walking #poi-card{display:none}
@media(max-width:850px){#poi-card{right:12px;left:12px;top:auto;bottom:109px;width:auto;padding:20px;max-height:44dvh;overflow:auto}#poi-toggle span{display:none}.poi__icon{width:32px;height:32px;font-size:15px}.poi__label{height:32px;line-height:32px;margin-left:-16px;font-size:8px}.poi:hover .poi__label{max-width:170px;padding:0 26px 0 14px}}
/* The environment rail grew a second control, so the header badge steps further left. */
.badge{margin-right:322px}
@media(max-width:1200px){.badge{display:none}}

/* Скрытие интерфейса. Панель нужна, пока выбираешь, и мешает, когда смотришь:
   одна кнопка (или клавиша H) убирает всё, кроме самой кнопки и логотипа. */
#ui-toggle{border:1px solid #fff;background:#f9faf4dd;border-radius:30px;color:#41604f;font-size:15px;padding:9px 14px;margin-right:8px;line-height:1}
#ui-toggle[aria-pressed="true"]{background:#12332b;color:#eef3e8;border-color:#12332b}
body.ui-hidden aside,body.ui-hidden nav,body.ui-hidden #floor-rail,body.ui-hidden footer,
body.ui-hidden #lot-card,body.ui-hidden #poi-card,body.ui-hidden #lot-labels,body.ui-hidden #poi-labels,
body.ui-hidden .badge,body.ui-hidden #compass,body.ui-hidden #sun-panel,body.ui-hidden #poi-toggle,
body.ui-hidden #sun-toggle,body.ui-hidden #lot-tooltip{display:none!important}
/* Сворачивание левой панели по отдельности. */
#aside-collapse{position:absolute;right:10px;top:12px;width:26px;height:26px;border:1px solid #d9e0d5;background:#fff;border-radius:50%;display:grid;place-items:center;padding:0}
#aside-collapse span{width:10px;height:1px;background:#4d6a58;position:relative;transition:transform .25s}
#aside-collapse span:after{content:'';position:absolute;inset:0;background:#4d6a58;transform:rotate(90deg);opacity:0;transition:opacity .25s}
body.aside-collapsed #aside-collapse span:after{opacity:1}
body.aside-collapsed aside{width:52px;height:50px;padding:0;overflow:hidden;min-height:0}
body.aside-collapsed aside>*:not(#aside-collapse){display:none}
body.aside-collapsed #aside-collapse{right:13px;top:12px}
aside{transition:width .3s cubic-bezier(.22,.61,.36,1),height .3s cubic-bezier(.22,.61,.36,1)}

/* Кнопка плашек лотов — рядом с инфраструктурой, тот же вид. */
#labels-toggle{border:1px solid #fff;background:#f9faf4dd;border-radius:30px;color:#8d9a8c;font-size:13px;padding:10px 15px;margin-right:8px;line-height:1;transition:color .25s,background .25s}
#labels-toggle span{font-size:10px;margin-left:6px;letter-spacing:.6px}
#labels-toggle.is-on{color:#25493c;background:#ffffffee}
body.ui-hidden #labels-toggle{display:none!important}
@media(max-width:1200px){#labels-toggle span,#poi-toggle span{display:none}}
