@import"https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=DM+Serif+Display:ital@0;1&display=swap";:root{font-family:DM Sans,system-ui,sans-serif;color:#2f453c;background:#f7f5ec;font-synthesis:none;--green:#31584a;--orange:#d8854d;--cream:#f7f5ec}*{box-sizing:border-box}body{margin:0;overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;border:0;color:inherit}button:focus-visible,a:focus-visible{outline:3px solid #dc9d54;outline-offset:3px}a{color:inherit;text-decoration:none}button{transition:background .18s,transform .18s}button:active{transform:translateY(1px)}[hidden]{display:none!important}.topbar{height:88px;display:flex;align-items:center;justify-content:space-between;padding:0 33px;border-bottom:1px solid #deded1;background:#faf8f0;position:relative;z-index:4}.brand{display:flex;gap:13px;align-items:center;letter-spacing:.16em;font-size:17px;font-weight:700;line-height:1.25}.brand small{display:block;font-size:10px;font-weight:500;letter-spacing:.33em;margin-top:5px;color:#758478}.brand-mascot{width:56px;height:56px;object-fit:contain;flex-shrink:0}.brand{letter-spacing:.035em;font-size:19px}.brand small{letter-spacing:.25em}.top-motto{font-size:14px;color:#798277}.top-motto em{color:#395649;font-family:"DM Serif Display",Georgia,serif;font-size:18px;font-style:italic}.morning{display:flex;align-items:center;gap:12px;font-size:12px;font-weight:600}.morning>span{font-size:30px;color:#cea24c}.morning small{display:block;font-size:10px;color:#899183;font-weight:400;margin-top:4px}main{display:flex;height:calc(100dvh - 88px)}.sidebar{width:280px;flex-shrink:0;padding:27px 24px 18px;border-right:1px solid #dde0d2;display:flex;flex-direction:column;background:#f8f6ed;z-index:3;overflow:auto}.eyebrow{font-size:9px;font-weight:700;letter-spacing:.16em;color:#859180}h1{font-family:"DM Serif Display",Georgia,serif;font-weight:400;font-size:35px;line-height:1.1;letter-spacing:-.025em;margin:14px 0 12px}h1 em{color:#aa704c;font-weight:400}p.intro{font-size:11px;line-height:1.85;color:#89907f;margin:0 0 23px}.passport{border:1px solid #dfe3d6;border-radius:10px;background:#f0f2e7;padding:13px 12px;margin-bottom:23px}.passport>div:first-child{display:flex;align-items:center;gap:7px}.passport strong{font-size:10px;flex:1}.passport-icon{font-size:20px;color:#b99448}#count{font-size:10px;color:#6e8070}.progress{height:4px;background:#dde4d3;border-radius:6px;margin:9px 0}.progress span{display:block;height:4px;border-radius:6px;background:#799985;transition:width .4s}.passport small{font-size:9px;color:#8a9583}.places-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;letter-spacing:.13em;font-size:9px;color:#8b9685;font-weight:600}.places-heading button{background:none;font-size:9px;color:#a8ad9e;letter-spacing:0}.place{display:flex;width:100%;padding:9px 8px;align-items:center;gap:10px;border-radius:9px;text-align:left;margin-bottom:3px;background:transparent}.place:hover,.place.selected{background:#e9eee0}.place-icon{width:29px;height:30px;display:grid;place-items:center;font-size:18px;color:#8c9e82;background:#efeee1;border-radius:8px}.place.selected .place-icon{background:#dce5ce;color:#557151}.place>span:nth-child(2){flex:1}.place strong{display:block;font-size:11px;font-weight:500}.place small{display:block;font-size:9px;color:#929d89;margin-top:3px;letter-spacing:.09em}.visit-status{font-size:12px;color:#a2b098}.place.visited .visit-status{background:#82a38b;color:#fff;border-radius:50%;width:17px;height:17px;display:grid;place-items:center;font-size:10px}.side-footer{display:flex;gap:8px;align-items:center;margin-top:auto;padding-top:21px;border-top:1px solid #e2e4d8;font-size:8px;color:#6c7e6d;line-height:1.65}.side-footer small{display:block;font-size:8px;color:#a0a795}.tiny-paw{font-size:20px;color:#c99867}.stage{position:relative;flex:1;overflow:hidden;min-width:0}#canvas-wrap{position:absolute;inset:0}#canvas-wrap canvas{display:block;touch-action:none}.viewbar{position:absolute;left:25px;top:23px;right:25px;display:flex;justify-content:space-between;gap:10px;pointer-events:none}.viewbar button,.viewbar .segmented{pointer-events:auto}.segmented{display:flex;gap:3px;background:#f9f8eff0;border:1px solid #fff8;border-radius:10px;padding:4px;box-shadow:0 4px 20px #415c4010}.segmented button{padding:10px 14px;font-size:11px;border-radius:7px;background:transparent;color:#6c7e6c;white-space:nowrap}.segmented button.active{background:#416554;color:#fff8e9}.pill{background:#f9f8efee;padding:11px 16px;border-radius:9px;font-size:11px;box-shadow:0 3px 14px #3e5a3210;white-space:nowrap}.pill.selected{background:#416554;color:#f9f8ed}.location{position:absolute;left:28px;top:93px;display:flex;gap:9px;align-items:center;pointer-events:none}.location-dot{width:6px;height:6px;background:#b07e4d;border-radius:50%;box-shadow:0 0 0 5px #f2eee277}.location small{font-size:8px;letter-spacing:.16em;color:#7c8a76;display:block;margin-bottom:5px}.location strong{font-size:12px;font-weight:500;color:#465e4c}.map-card{position:absolute;right:24px;bottom:70px;width:172px;background:#f8f7eee8;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:12px;padding:11px;border:1px solid #fff8;box-shadow:0 6px 24px #55664510}.map-card>div{display:flex;justify-content:space-between;font-size:7px;letter-spacing:.1em;color:#8b9783;padding-bottom:8px}.map-card>div span:last-child{font-size:6px;color:#ba8854}#map{width:150px;height:121px;border-radius:5px}.controls{position:absolute;bottom:21px;left:0;right:0;display:flex;justify-content:center;align-items:center;gap:13px;color:#7e8e79;font-size:9px;pointer-events:none}.controls b{font-weight:500;color:#48664f}.controls i{width:2px;height:2px;border-radius:50%;background:#adbba5}.interaction{position:absolute;bottom:75px;left:50%;transform:translate(-50%);display:flex;gap:13px;align-items:center;background:#fbf8ec;color:#385844;padding:12px 18px 12px 12px;border-radius:10px;box-shadow:0 10px 35px #3e4e3325;font-size:12px;min-width:180px;z-index:2}.interaction:active{transform:translate(-50%) translateY(1px)}kbd{font:600 11px DM Sans,sans-serif;padding:5px 8px;border:1px solid #d0dac8;border-radius:5px;background:#f0f2e7}.interaction b{margin-left:auto;color:#a0ad91}.touch-pad{position:absolute;bottom:65px;left:22px;display:none;text-align:center}.touch-pad button{width:42px;height:42px;background:#f8f7eae8;border-radius:10px;margin:2px;font-size:18px;box-shadow:0 2px 10px #48664f14;touch-action:none}.touch-pad div{display:flex}#loading{position:absolute;inset:0;z-index:10;background:#e4e9db;display:flex;align-items:flex-end;padding:45px;transition:opacity .7s}.loading-art{position:absolute;inset:0;background:linear-gradient(0deg,#263c34b3,transparent 65%),url(/assets/campus-concept-CVkRQSww.png) center/cover}.loading-card{position:relative;color:#fff9ea}.loading-card .eyebrow{color:#eee7c7}.loading-card h2{font:400 43px/1.05 "DM Serif Display",Georgia,serif;margin:17px 0}.loading-card p{font-size:12px;color:#d6ddc7}.loading-line{height:3px;background:#fff3;width:200px;border-radius:2px;overflow:hidden}.loading-line span{display:block;height:100%;width:70%;background:#edc976;animation:loading 1.8s infinite alternate}#loading.loaded{opacity:0;pointer-events:none}@keyframes loading{0%{transform:translate(-100%)}to{transform:translate(150%)}}#toast{position:absolute;top:135px;left:50%;transform:translate(-50%,-8px);max-width:80%;width:max-content;background:#fcf9edf5;border:1px solid #e8eadf;padding:11px 19px;font-size:11px;border-radius:8px;box-shadow:0 6px 20px #395b3715;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s}#toast.visible{opacity:1;transform:translate(-50%)}dialog{max-width:420px;width:calc(100% - 32px);border:1px solid #e0e1d2;border-radius:18px;background:#fbf8ee;color:#365443;padding:36px;box-shadow:0 18px 80px #18372d38}dialog::backdrop{background:#28463b55;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.dialog-close{position:absolute;right:15px;top:12px;background:none;color:#9aa28f;font-size:25px}.dialog-icon{width:47px;height:47px;border-radius:14px;background:#eee6ca;color:#b38b42;display:grid;place-items:center;font-size:32px;margin-bottom:18px}dialog h2{font:400 29px/1.2 "DM Serif Display",Georgia,serif;margin:12px 0}dialog p{font-size:13px;line-height:1.9;color:#788671}.primary{background:#416554;color:#fff8e9;width:100%;border-radius:9px;display:flex;justify-content:space-between;padding:14px 17px;font-size:12px;margin-top:24px}.primary:hover{background:#355543}@media(hover:none){.touch-pad{display:block}}@media(max-height:820px){.sidebar{padding-top:20px}h1{font-size:30px;margin:10px 0}.intro{display:none}.passport{margin-bottom:15px;margin-top:6px}.place{padding:7px;margin-bottom:1px}.side-footer{padding-top:12px}.place-icon{height:27px;width:27px}}@media(max-width:1050px){.sidebar{width:238px;padding-left:19px;padding-right:19px}.viewbar{left:18px;right:18px;top:18px}.segmented button,.pill{padding:10px;font-size:10px}.top-motto{display:none}.map-card{width:137px;right:18px}#map{width:115px;height:93px}.map-card>div span:last-child{display:none}}@media(max-width:720px){.topbar{height:72px;padding:0 20px}.brand{font-size:14px}.brand-mascot{width:46px;height:46px}.brand{gap:9px;letter-spacing:.015em}.morning{font-size:10px}.morning small{font-size:8px}main{height:calc(100dvh - 72px)}.sidebar{display:none}.viewbar{left:12px;right:12px;top:14px}.segmented{padding:3px}.segmented button{font-size:10px;padding:10px 9px}.pill{font-size:10px}.location{left:19px;top:77px}.map-card{bottom:45px;right:12px;width:119px;padding:8px}#map{width:101px;height:82px}.controls{font-size:8px;gap:6px;bottom:15px}.interaction{bottom:160px;font-size:11px;padding:9px 13px;min-width:160px}.touch-pad{display:block;bottom:49px;left:14px}#loading{padding:25px}.loading-card h2{font-size:37px}.map-card>div{font-size:6px}#toast{top:121px;font-size:10px}}@media(max-width:420px){.topbar{padding:0 14px}.morning{display:none}.brand{font-size:17px}}html,body{overscroll-behavior:none}.stage{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}#canvas-wrap,#joystick{touch-action:none}.map-card{pointer-events:none}.mobile-tools,.touch-controls{display:none}.places-dialog{max-height:82dvh;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y}.places-dialog .place{min-height:54px;margin:3px 0}.places-dialog .place strong{font-size:14px}.places-dialog .place small{font-size:11px}.places-dialog .place-icon{width:37px;height:37px}.places-dialog h2{margin-top:6px}.places-summary{display:flex;align-items:center;justify-content:space-between;margin:20px 0 12px}.places-summary strong{font-size:13px}.places-summary button{min-height:44px;padding:0 12px;background:#eef0e4;border-radius:8px;font-size:12px}.dialog-close{min-width:44px;min-height:44px}.touch-ui{--phone-header: 60px;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px)}.touch-ui .topbar{height:calc(var(--phone-header) + var(--safe-top));padding:var(--safe-top) max(16px,env(safe-area-inset-right)) 0 max(16px,env(safe-area-inset-left))}.touch-ui .brand{font-size:17px;letter-spacing:.01em;gap:10px}.touch-ui .brand-mascot{width:44px;height:44px}.touch-ui .brand small{font-size:9px}.touch-ui .top-motto,.touch-ui .morning,.touch-ui .sidebar{display:none}.touch-ui main{height:calc(100dvh - var(--phone-header) - var(--safe-top))}.touch-ui .viewbar{top:10px;left:max(10px,env(safe-area-inset-left));right:max(10px,env(safe-area-inset-right));gap:6px}.touch-ui .segmented{padding:3px;flex:1;max-width:278px}.touch-ui .segmented button{min-height:44px;flex:1;padding:8px 9px;font-size:11px}.touch-ui .pill{min-height:50px;padding:8px 11px;font-size:11px}.touch-ui .location{top:78px;left:max(12px,env(safe-area-inset-left));max-width:calc(100% - 148px);padding:8px 12px;gap:11px;background:#faf8eee8;border:1px solid #ffffff88;border-radius:12px}.touch-ui .location small{font-size:9px}.touch-ui .location strong{font-size:12px;line-height:1.4}.touch-ui .mobile-tools{display:block;position:absolute;top:78px;right:max(12px,env(safe-area-inset-right))}.touch-ui #mobile-places{min-height:44px;padding:9px 12px;border:1px solid #ffffff99;border-radius:12px;background:#fbf9eff2;box-shadow:0 3px 14px #3954370d;font-size:12px;font-weight:600}.touch-ui #mobile-count{display:inline-block;margin-left:6px;color:#7d9275;font-size:11px}.touch-ui .map-card{top:140px;bottom:auto;right:max(12px,env(safe-area-inset-right));width:102px;padding:7px;opacity:.9}.touch-ui #map{width:86px;height:70px}.touch-ui .map-card>div{font-size:6px;padding-bottom:5px}.touch-ui .map-card>div span:last-child{display:none}.touch-ui .touch-controls{display:block;position:absolute;inset:0;pointer-events:none}.touch-ui #joystick{position:absolute;width:132px;height:132px;left:max(22px,env(safe-area-inset-left));bottom:calc(62px + var(--safe-bottom));border-radius:50%;pointer-events:auto;background:radial-gradient(circle,#f9f7e97a 0 48%,#f9f7e926 49% 100%);border:1px solid #fff8;box-shadow:inset 0 0 0 10px #fff2,0 5px 24px #38564312}.touch-ui #joystick:before{content:"";position:absolute;width:10px;height:10px;top:15px;left:calc(50% - 5px);border-top:2px solid #78927a99;border-left:2px solid #78927a99;transform:rotate(45deg)}.touch-ui #joystick.active{background:#f6f6e99c;border-color:#91ad84}.touch-ui #joystick.running{border-color:#d8a051;box-shadow:0 0 0 5px #ddb36d2b}.touch-ui .joystick-knob{position:absolute;width:50px;height:50px;left:calc(50% - 25px);top:calc(50% - 25px);border-radius:50%;background:#52765bc9;border:2px solid #fcfaeccc;box-shadow:0 3px 13px #35553a26;pointer-events:none}.touch-ui .joystick-label{position:absolute;bottom:-27px;left:-10px;right:-10px;text-align:center;font-size:10px;font-weight:600;color:#49684f;text-shadow:0 1px 5px #fff;pointer-events:none}.touch-ui .look-hint{position:absolute;right:max(22px,env(safe-area-inset-right));bottom:calc(138px + var(--safe-bottom));color:#4f6a52;font-size:11px;text-align:center;text-shadow:0 1px 5px #fff}.touch-ui .look-hint span{display:block;font-size:27px;margin-bottom:3px;opacity:.6}.touch-ui .interaction{left:auto;right:max(18px,env(safe-area-inset-right));bottom:calc(62px + var(--safe-bottom));transform:none;max-width:180px;min-width:144px;min-height:54px;padding:13px 16px;font-size:12px;border:1px solid #e4e8d7;gap:9px;border-radius:15px}.touch-ui .interaction:active{transform:translateY(1px)}.touch-ui .interaction kbd{display:none}.touch-ui .controls{bottom:calc(10px + var(--safe-bottom));padding:0 8px;font-size:10px;gap:8px;text-shadow:0 1px 6px #fff}.touch-ui #toast{top:132px;font-size:12px;max-width:calc(100% - 28px);text-align:center}.touch-ui #loading{padding:28px 24px calc(32px + var(--safe-bottom))}.touch-ui .loading-card h2{font-size:38px}.touch-ui dialog{padding:30px 24px 24px;max-height:calc(90dvh - var(--safe-top) - var(--safe-bottom));overflow-y:auto}.touch-ui .places-dialog{margin:auto 0 0;width:100%;max-width:none;border-radius:24px 24px 0 0;padding-bottom:calc(24px + var(--safe-bottom))}.touch-ui .places-dialog:before{content:"";display:block;width:40px;height:4px;background:#d8dece;border-radius:4px;margin:-16px auto 22px}@media(orientation:landscape)and (max-height:540px){.touch-ui{--phone-header: 0px;--safe-top: 0px}.touch-ui .topbar{display:none}.touch-ui .viewbar{max-width:400px}.touch-ui .location{top:68px}.touch-ui .mobile-tools{top:12px}.touch-ui .map-card{top:68px}.touch-ui #joystick{width:114px;height:114px;bottom:calc(40px + var(--safe-bottom))}.touch-ui .joystick-label{bottom:-22px}.touch-ui .interaction{bottom:calc(36px + var(--safe-bottom))}.touch-ui .look-hint{bottom:calc(106px + var(--safe-bottom))}}
