:root{--ink:#2a2147;--ink-soft:#6b6390;--pink:#ff4fb8;--orange:#ff9b3d;--glass:#ffffff61;--glass-line:#2a214714}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{color:var(--ink);-webkit-font-smoothing:antialiased;background:#f6f4fb;font-family:Inter,system-ui,sans-serif;overflow:hidden}.app{transition:color .8s;position:fixed;inset:0}.app--night{--ink:#f4ecff;--ink-soft:#a9a3d6;--glass:#14163a61;--glass-line:#ffffff1a}canvas{touch-action:none}.overlay{pointer-events:none;position:absolute;inset:0}.title{letter-spacing:.03em;margin:0;font-family:Anton,Impact,sans-serif;font-size:clamp(26px,3.2vw,46px);font-weight:400;line-height:1;animation:.9s cubic-bezier(.2,.8,.2,1) both title-in;position:absolute;top:clamp(16px,3vw,36px);left:clamp(18px,3vw,40px)}@keyframes title-in{0%{opacity:0;filter:blur(6px);transform:translateY(-10px)}to{opacity:1;filter:none;transform:none}}.title span{color:#0000;-webkit-background-clip:text;background-clip:text}.title__a{background-image:linear-gradient(100deg,#ff3fa4 0%,#ff6f7d 55%,#ffae3d 100%);margin-right:.16em}.title__b{background-image:linear-gradient(100deg,#7b5cff,#3fb7ff)}.title span{display:inline-block}.theme--vice .title span{-webkit-text-stroke:1.2px #0b5f9e;filter:drop-shadow(1.2px 1.2px #fff)drop-shadow(1.6px 1.8px #1f78b8);background-image:linear-gradient(#fff,#fff)}.theme--vice .title__b{-webkit-text-stroke-color:#2a86c4;filter:drop-shadow(1.2px 1.2px #fff)drop-shadow(1.6px 1.8px #3d93cc)}.theme--grass .title span{-webkit-text-stroke:1px #e5e600;filter:drop-shadow(1.5px 1.5px #111)drop-shadow(-.5px -.5px #111);background-image:linear-gradient(#9cc400 0%,#5c9400 50%,#2a7400 100%)}.theme--grass .title__a{margin-right:0}.theme--keys .title span{-webkit-text-stroke:1px #1b2f57;filter:drop-shadow(2px 2px #1b2f57)drop-shadow(0 0 1px #5ce1e6);background-image:linear-gradient(#ffe39a 0%,#fdd97e 55%,#f4c65c 100%)}.theme--gellhorn .title span{-webkit-text-stroke:1px #2a0e00;filter:drop-shadow(2px 2px #2a0e00);background-image:linear-gradient(#ffa21e 0%,#ff8a00 100%)}.theme--ambrosia .title span{-webkit-text-stroke:1px #111;filter:drop-shadow(2px 2px #111);background-image:linear-gradient(#3d8ad0 0%,#2f74b8 100%)}.theme--ambrosia .title__a{margin-right:0}.app--night.theme--ambrosia .title span{background-image:linear-gradient(#6aaee8 0%,#3d8ad0 100%)}.theme--kalaga .title span{-webkit-text-stroke:1px #1f3b2a;filter:drop-shadow(2px 2px #1f3b2a);background-image:linear-gradient(#ffd25e 0%,#f2922e 100%)}.mode{pointer-events:auto}.places{pointer-events:auto;border:1px solid var(--glass-line);background:var(--glass);-webkit-backdrop-filter:blur(12px)saturate(1.2);transition:background .6s,border-color .6s,box-shadow .6s,opacity .3s;box-shadow:0 6px 22px #2a214714}.mode{cursor:pointer;background:linear-gradient(#ffffffdb,#ffffffdb) padding-box padding-box,linear-gradient(135deg,#ff4fb8,#ff9b3d) border-box;border:1.5px solid #0000;border-radius:50%;place-items:center;width:44px;height:44px;padding:0;display:grid;position:absolute;top:clamp(16px,3vw,36px);right:clamp(18px,3vw,40px);box-shadow:0 6px 20px #ff6e7838,0 2px 6px #2a21471f}.mode:hover{transform:translateY(-1px);box-shadow:0 9px 26px #ff6e784d,0 2px 6px #2a214724}.app--night .mode{background:linear-gradient(#1c1e4adb,#1c1e4adb) padding-box padding-box,linear-gradient(135deg,#6b4dff,#2f8de8) border-box;box-shadow:0 6px 22px #5a64ff59,0 2px 6px #0000004d}.mode,.mode:hover{transition:background .6s,box-shadow .6s,transform .25s}.mode__icon{grid-area:1/1;place-items:center;transition:transform .6s cubic-bezier(.5,0,.2,1),opacity .45s;display:grid}.mode__sun{color:#ff8a2b}.mode__moon{color:#cfc8ff;opacity:0;transform:rotate(-90deg)scale(.6)}.mode.is-night .mode__sun{opacity:0;transform:rotate(90deg)scale(.6)}.mode.is-night .mode__moon{opacity:1;transform:none}.places{border-radius:999px;align-items:center;gap:2px;padding:3px;display:flex;position:absolute;bottom:clamp(18px,3.4vh,34px);left:50%;transform:translate(-50%)}.places button{font:inherit}.places__arrow{width:28px;height:28px;color:var(--ink-soft);cursor:pointer;background:0 0;border:0;border-radius:50%;place-items:center;transition:background .3s,color .3s;display:grid}.places__arrow:hover{color:var(--ink);background:#7f78aa1f}.places__dots{align-items:center;gap:2px;padding:0 2px;display:flex}.places__dot{cursor:pointer;background:0 0;border:0;place-items:center;min-width:18px;height:28px;padding:0 4px;display:grid;position:relative}.places__dot i{background:var(--ink-soft);opacity:.45;border-radius:3px;width:6px;height:6px;transition:width .45s cubic-bezier(.5,0,.2,1),opacity .3s,background .45s;display:block}.places__dot:hover i{opacity:.85}.places__dot.is-on i{opacity:1;background:linear-gradient(90deg,#ff4fb8,#ff9b3d);width:20px}.theme--vice .places__dot.is-on i{background:linear-gradient(90deg,#0b5f9e,#3d93cc)}.theme--grass .places__dot.is-on i{background:linear-gradient(90deg,#2a7400,#9cc400)}.theme--keys .places__dot.is-on i{background:linear-gradient(90deg,#1b2f57,#5ce1e6 55%,#fdd97e)}.theme--gellhorn .places__dot.is-on i{background:linear-gradient(90deg,#2a0e00,#ff8a00)}.theme--ambrosia .places__dot.is-on i{background:linear-gradient(90deg,#111,#3480c4)}.theme--kalaga .places__dot.is-on i{background:linear-gradient(90deg,#1f3b2a,#4e8a3e 50%,#f2922e)}.places__tip{white-space:nowrap;pointer-events:none;letter-spacing:.08em;text-transform:uppercase;color:var(--ink);border:1px solid var(--glass-line);-webkit-backdrop-filter:blur(10px);opacity:0;background:#ffffffe0;border-radius:999px;padding:5px 10px;font:600 11px Inter,sans-serif;transition:opacity .25s,transform .25s;position:absolute;bottom:calc(100% + 10px);left:50%;transform:translate(-50%,4px);box-shadow:0 4px 14px #2a21471a}.places__dot:hover .places__tip,.places__dot:focus-visible .places__tip{opacity:1;transform:translate(-50%)}.places button:focus-visible,.mode:focus-visible{outline:2px solid var(--pink);outline-offset:2px}.app--night .places__tip{background:#1c1e4ae0;box-shadow:0 4px 14px #0000004d}@media (hover:none) and (pointer:coarse){.places__tip{display:none}}.places__dot.is-soon{cursor:not-allowed}.places__dot.is-soon i,.places__dot.is-soon:hover i{opacity:.2}.places__dot.is-soon.is-tip .places__tip{opacity:1;display:block;transform:translate(-50%)}.places__arrow.is-off{cursor:not-allowed;opacity:.35}.places__arrow.is-off:hover{color:var(--ink-soft);background:0 0}@media (width<=720px){.places__arrow{width:34px;height:34px}.places__dot{min-width:22px;height:34px}.mode{width:42px;height:42px}}.about{pointer-events:auto;position:absolute;bottom:clamp(18px,3.4vh,34px);right:clamp(18px,3vw,40px)}.about__btn{cursor:pointer;width:34px;height:34px;color:var(--ink);border:1px solid var(--glass-line);-webkit-backdrop-filter:blur(10px);background:#ffffffb3;border-radius:50%;place-items:center;padding:0;transition:background .4s,transform .25s,box-shadow .4s;display:grid;box-shadow:0 3px 12px #2a21471a}.about__btn:hover,.about__btn.is-open{transform:translateY(-1px);box-shadow:0 6px 18px #2a214729}.app--night .about__btn{background:#1c1e4abf}.about__btn:focus-visible{outline:2px solid var(--pink);outline-offset:2px}.about__card{text-align:left;color:#2a2147;-webkit-backdrop-filter:blur(18px)saturate(1.3);opacity:0;transform-origin:100% 100%;pointer-events:none;background:#ffffffdb;border:1px solid #ffffffb3;border-radius:18px;width:min(320px,100vw - 32px);padding:22px 22px 18px;transition:opacity .28s,transform .35s cubic-bezier(.2,.8,.2,1);position:absolute;bottom:calc(100% + 12px);right:0;overflow:hidden;transform:translateY(6px)scale(.98);box-shadow:0 18px 50px #2a214738,0 2px 8px #2a214714}.about__card.is-open{opacity:1;pointer-events:auto;transform:none}.about__card:before{content:"";background:linear-gradient(90deg,#ff4fb8,#ff9b3d);height:4px;position:absolute;top:0;left:0;right:0}.app--night .about__card:before{background:linear-gradient(90deg,#6b4dff,#2f8de8)}.app--night .about__glow{background:radial-gradient(circle,#6b4dff47,#2f8de81f 45%,#0000 70%)}.about__glow{pointer-events:none;background:radial-gradient(circle,#ff6f7d47,#ffae3d1f 45%,#0000 70%);border-radius:50%;width:200px;height:200px;position:absolute;top:-70px;right:-60px}.about__eyebrow{letter-spacing:.18em;text-transform:uppercase;color:#8a83ad;margin:0 0 6px;font:600 10px Inter,sans-serif;position:relative}.about__title{letter-spacing:.03em;color:#2a2147;margin:0;font:400 30px/1 Anton,Impact,sans-serif;position:relative}.about__title span{background:linear-gradient(100deg,#ff3fa4,#ffae3d);color:#0000;-webkit-background-clip:text;background-clip:text}.about__text{color:#4b4470;margin:10px 0 16px;font:400 13.5px/1.5 Inter,sans-serif;position:relative}.about__by{color:#2a2147;background:#2a21470d;border:1px solid #2a21470f;border-radius:12px;justify-content:space-between;align-items:center;gap:10px;padding:11px 14px;text-decoration:none;transition:background .3s,transform .25s;display:flex;position:relative}.about__by:hover{background:#ff4fb817;transform:translateY(-1px)}.about__by-label{letter-spacing:.14em;text-transform:uppercase;color:#8a83ad;font:600 10px Inter,sans-serif}.about__by-name{align-items:center;gap:6px;font:600 14px Inter,sans-serif;display:inline-flex}.about__by-name svg{transition:transform .25s}.arrow-grad__a{stop-color:#ff4fb8}.arrow-grad__b{stop-color:#ff9b3d}.app--night .arrow-grad__a{stop-color:#6b4dff}.app--night .arrow-grad__b{stop-color:#2f8de8}.app--night .about__title span{background:linear-gradient(100deg,#6b4dff,#2f8de8);-webkit-background-clip:text;background-clip:text}.about__by:hover .about__by-name svg{transform:translate(2px,-2px)}.about__legal{color:#8a83ad;margin:14px 0 0;font:400 11px/1.5 Inter,sans-serif;position:relative}.app--night .about__card{color:#f4ecff;background:#16183edb;border-color:#ffffff14;box-shadow:0 18px 50px #00000073}.app--night .about__title{color:#f4ecff}.app--night .about__text{color:#c9c3ec}.app--night .about__by{color:#f4ecff;background:#ffffff0f;border-color:#ffffff14}.app--night .about__eyebrow,.app--night .about__by-label,.app--night .about__legal{color:#9c95c8}.credit{pointer-events:auto;white-space:nowrap;letter-spacing:.02em;color:var(--ink-soft);opacity:.7;align-items:baseline;gap:4px;font:400 11px Inter,sans-serif;text-decoration:none;transition:opacity .3s;display:inline-flex;position:absolute;bottom:clamp(22px,3.4vh,38px);left:clamp(18px,3vw,40px)}.app--night .credit b{background-image:linear-gradient(90deg,#6b4dff,#2f8de8)}.credit b{color:var(--ink);background:linear-gradient(90deg,#ff4fb8,#ff9b3d) 0 100%/0 1.5px no-repeat;padding-bottom:1px;font-weight:600;transition:background-size .35s}.credit:hover{opacity:1}.credit:hover b{background-size:100% 1.5px}.credit svg{opacity:.7;align-self:center}.credit__short{display:none}@media (width<=720px){.credit{font-size:10px;bottom:8px;left:50%;transform:translate(-50%)}.credit__long{display:none}.credit__short{display:inline}.places{bottom:34px}.about{bottom:34px;right:16px}}.loader{z-index:10;background:#f6f4fb;place-content:center;justify-items:center;gap:14px;transition:opacity .8s .2s,visibility 0s 1s;display:grid;position:fixed;inset:0}.loader--done{opacity:0;visibility:hidden}.loader__title{letter-spacing:.04em;background:linear-gradient(100deg,#ff3fa4,#ffae3d);color:#0000;-webkit-background-clip:text;background-clip:text;font-family:Anton,Impact,sans-serif;font-size:34px}.loader__bar{background:#2a21471a;border-radius:4px;width:200px;height:4px;overflow:hidden}.loader__bar span{background:linear-gradient(90deg,#ff4fb8,#ff9b3d);height:100%;transition:width .3s;display:block}.loader__pct{color:#6b6390;font-size:12px;font-weight:600}.cam{pointer-events:none;flex-direction:column;align-items:center;gap:10px;width:44px;display:flex;position:absolute;top:calc(clamp(16px,3vw,36px) + 56px);right:clamp(18px,3vw,40px)}.cam__btn{pointer-events:auto;cursor:pointer;color:var(--ink);border:1px solid var(--glass-line);-webkit-backdrop-filter:blur(10px);-webkit-tap-highlight-color:transparent;background:#ffffffc7;border-radius:50%;place-items:center;padding:0;transition:background .4s,color .4s,transform .25s,box-shadow .4s,opacity .3s;display:grid;box-shadow:0 4px 14px #2a21471f}.cam__btn:hover{transform:translateY(-1px);box-shadow:0 7px 20px #2a21472e}.cam__btn:active{transform:scale(.94)}.cam__btn:focus-visible{outline:2px solid var(--pink);outline-offset:2px}.app--night .cam__btn{background:#1c1e4acc}.cam__explore{width:44px;height:44px}.cam__reset,.cam__full{width:36px;height:36px}.cam__icon{grid-area:1/1;place-items:center;transition:transform .45s cubic-bezier(.5,0,.2,1),opacity .3s;display:grid}.cam__icon--close{opacity:0;transform:rotate(-90deg)scale(.6)}.cam__explore.is-on{color:#fff;background:linear-gradient(135deg,#ff4fb8,#ff9b3d);border-color:#0000;box-shadow:0 6px 20px #ff6e7859,0 2px 6px #2a214724}.app--night .cam__explore.is-on{background:linear-gradient(135deg,#6b4dff,#2f8de8);box-shadow:0 6px 22px #5a64ff66}.cam__explore.is-on .cam__icon--move{opacity:0;transform:rotate(90deg)scale(.6)}.cam__explore.is-on .cam__icon--close{opacity:1;transform:none}.places,.about,.credit{transition:opacity .3s,visibility,background .6s,border-color .6s,box-shadow .6s}.app--explore .places,.app--explore .about,.app--explore .credit{opacity:0;visibility:hidden;pointer-events:none;transition:opacity .3s,visibility 0s .3s}.hint{white-space:nowrap;color:var(--ink);border:1px solid var(--glass-line);-webkit-backdrop-filter:blur(12px);opacity:0;pointer-events:none;background:#ffffffb8;border-radius:999px;align-items:center;padding:8px 14px;font-size:12.5px;font-weight:500;transition:opacity .5s,transform .5s;display:flex;position:absolute;bottom:clamp(22px,4vh,40px);left:50%;transform:translate(-50%,8px);box-shadow:0 6px 22px #2a21471f}.hint.is-on{opacity:1;transform:translate(-50%)}.app--night .hint{background:#1c1e4ac7}.hint span{align-items:center;gap:4px;display:flex}.hint i{opacity:.4;background:currentColor;border-radius:50%;width:3px;height:3px;margin:0 6px}.hint kbd{border:1px solid var(--glass-line);background:#7f78aa1f;border-radius:5px;place-items:center;min-width:20px;height:20px;padding:0 5px;font:600 11px/1 Inter,system-ui,sans-serif;display:inline-grid;box-shadow:0 1px #2a214726}.hint__touch{display:none!important}.joy{display:none}@media (hover:none) and (pointer:coarse),(width<=720px){.hint__desk{display:none!important}.hint__touch{display:flex!important}.hint{left:22px;bottom:calc(30px + 124px + 16px + env(safe-area-inset-bottom));font-size:12px;transform:translateY(8px)}.hint.is-on{transform:none}.joy{left:22px;bottom:calc(30px + env(safe-area-inset-bottom));pointer-events:auto;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;border-radius:50%;width:124px;height:124px;animation:.4s cubic-bezier(.2,.8,.2,1) both joy-in;display:block;position:absolute}.joy__ring{-webkit-backdrop-filter:blur(8px);background:#ffffff47;border:1.5px solid #ffffffbf;border-radius:50%;transition:background .25s;position:absolute;inset:0;box-shadow:0 6px 22px #2a214729,inset 0 0 0 10px #ffffff1f}.joy.is-active .joy__ring{background:#fff6}.app--night .joy__ring{background:#1c1e4a59;border-color:#beb9ff73}.joy__knob{background:linear-gradient(135deg,#ff4fb8,#ff9b3d);border-radius:50%;width:52px;height:52px;margin:-26px 0 0 -26px;transition:transform .18s cubic-bezier(.2,.8,.2,1);position:absolute;top:50%;left:50%;box-shadow:0 4px 14px #ff6e7873}.joy.is-active .joy__knob{transition:none}.app--night .joy__knob{background:linear-gradient(135deg,#6b4dff,#2f8de8);box-shadow:0 4px 16px #5a64ff80}}@keyframes joy-in{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:none}}@media (width<=720px){.cam{width:42px;top:calc(clamp(16px,3vw,36px) + 52px)}.cam__explore{width:42px;height:42px}}.vignette{pointer-events:none;background:radial-gradient(75% 75%,#0000 55%,#00000029 85%,#0000004d 120%);position:absolute;inset:0}.switching{--spin-a:#ff4fb8;--spin-b:#ff9b3d;pointer-events:none;z-index:5;opacity:0;visibility:hidden;will-change:opacity, transform;place-items:center;width:64px;height:64px;margin:-32px 0 0 -32px;transition:opacity .25s,transform .3s cubic-bezier(.2,.8,.2,1),visibility 0s .3s;display:grid;position:absolute;top:50%;left:50%;transform:scale(.8)}.switching.is-on{opacity:1;visibility:visible;transition:opacity .3s .12s,transform .35s cubic-bezier(.2,.8,.2,1) .12s,visibility;transform:none}.switching__ring{background:conic-gradient(from 0deg, transparent 0 18%, var(--spin-a) 55%, var(--spin-b) 100%);will-change:transform;border-radius:50%;width:42px;height:42px;animation:.85s linear infinite switching-spin;-webkit-mask:radial-gradient(farthest-side,#0000 calc(100% - 4.5px),#000 calc(100% - 4px));mask:radial-gradient(farthest-side,#0000 calc(100% - 4.5px),#000 calc(100% - 4px))}@keyframes switching-spin{to{transform:rotate(360deg)}}.app--night .switching{--spin-a:#6b4dff;--spin-b:#2f8de8}@media (prefers-reduced-motion:reduce){.switching__ring{animation-duration:2.4s}}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}
