@font-face{font-family:Rounded;src:url('./assets/fonts/rounded-bold.ttf') format('truetype');font-weight:700;font-display:swap}
:root{--ink:#34524a;--paper:#fff5dc;--gold:#f8ce62;--line:#c1ac82;--roof:#498e85;color:var(--ink);font-family:Rounded,'Hiragino Maru Gothic ProN','Yu Gothic',sans-serif;font-synthesis:none;font-weight:700}
*{box-sizing:border-box}body{margin:0;background:#8bc9bf;overflow:hidden}button,a,input{-webkit-tap-highlight-color:transparent}button,input{font:inherit;color:inherit}button,a{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:wait}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #247e8b;outline-offset:4px}a{color:inherit}button{border:0}button,svg{flex-shrink:0}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;clip:rect(0,0,0,0);overflow:hidden;white-space:nowrap}
#world{position:fixed;inset:0;touch-action:none;outline:0}canvas{display:block;width:100%;height:100%}.sky-shade{position:fixed;inset:0;pointer-events:none;background:radial-gradient(ellipse at 40% 25%,transparent 45%,#456f6516);mix-blend-mode:multiply}
#loader{position:fixed;inset:0;z-index:100;background:var(--paper);display:grid;place-items:center}.loader-content{position:relative;display:flex;align-items:center;flex-direction:column}.load-bubble{background:white;padding:20px 30px;border:2px solid #cfbea0;border-radius:22px;position:relative;font-size:21px;z-index:1}.load-bubble:after{content:'';position:absolute;bottom:-12px;left:46%;width:20px;height:20px;transform:rotate(45deg);background:white;border-bottom:2px solid #cfbea0;border-right:2px solid #cfbea0}.load-bubble span{display:block;font-size:11px;letter-spacing:.1em;text-align:center;margin-top:10px;color:#879186}.mascot-photo{background:url('./assets/img/osaru-atlas.png') no-repeat 0 0;background-size:200% 200%;width:150px;height:150px}.loading-mascot{width:205px;height:205px;margin-top:25px;animation:breathe 1.6s ease-in-out infinite}.load-shadow{height:14px;width:100px;background:#bbb49355;filter:blur(3px);border-radius:50%;margin-top:-8px}@keyframes breathe{50%{transform:translateY(-5px) rotate(2deg)}}
html.loading body>:not(#loader){visibility:hidden!important}.tools{position:fixed;top:26px;right:30px;z-index:12;display:flex;gap:12px}.round{width:51px;height:51px;border-radius:50%;border:2px solid #857855;background:var(--paper);box-shadow:0 4px 0 #82745540;display:grid;place-items:center;font-size:28px;transition:transform .15s,background .15s}.round:hover{transform:translateY(-2px);background:#fffbe9}.round svg{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round}.is-on .sound-slash{display:none}#sound.is-on{background:var(--gold)}
.brand{position:fixed;left:30px;top:26px;z-index:12;display:flex;align-items:center;gap:11px;opacity:0;transform:translateY(18px);transition:opacity .75s,transform .75s;pointer-events:none;text-shadow:0 1px var(--paper);font-size:19px}.brand small{display:block;font-size:10px;letter-spacing:.2em;margin-top:2px}.brand-seal{display:grid;place-items:center;background:var(--gold);border:2px solid #897551;box-shadow:0 3px #8f79552e;width:43px;height:43px;border-radius:50%;font-size:23px}.entered .brand{opacity:1;transform:translateY(0)}
#entry{position:fixed;inset:0;pointer-events:none;z-index:10;text-align:center;transition:opacity .6s,transform .7s}.entry-heading{position:absolute;top:7vh;left:0;width:100%}.eyebrow{font-size:11px;letter-spacing:.24em;margin:0 0 17px;color:#698171}#entry .eyebrow{color:#426e60;font-size:10px;letter-spacing:.34em;margin:0 0 14px}h1,h2,p{margin-top:0}h1#title{margin:0;line-height:1.22;transform:rotate(-3deg);color:#fff0bd;filter:drop-shadow(0 5px 0 #6f7b6340)}#title span{display:block;font-size:clamp(34px,4.6vw,76px);-webkit-text-stroke:1.5px #71664c;text-shadow:1px 1px #8e7852,2px 2px #8e7852,3px 3px #8e7852,4px 4px #8e7852,5px 5px #8e7852,6px 6px #8e7852}#title strong{display:block;font-size:clamp(24px,3vw,45px);letter-spacing:.12em;margin-top:6px;-webkit-text-stroke:1px #71664c;text-shadow:1px 1px #8e7852,2px 2px #8e7852,3px 3px #8e7852,4px 4px #8e7852}.entry-line{font-size:12px;margin-top:22px;letter-spacing:.14em;color:#42675b}.enter-wrap{position:absolute;bottom:7.2vh;left:50%;transform:translateX(-50%);pointer-events:auto;display:flex;align-items:center;flex-direction:column;gap:15px}#enter{padding:18px 35px;border-radius:14px;background:var(--gold);border:2px solid #9c7d3b;box-shadow:0 5px 0 #ad893c,inset 0 2px 0 #fff1b8;font-size:20px;white-space:nowrap;transform:rotate(-2deg);transition:transform .2s}#enter span{margin-left:22px}#enter:hover{transform:rotate(0) translateY(-3px)}.text-button{background:none;font-size:11px;text-decoration:underline;text-underline-offset:5px;padding:5px 12px}.edition{position:absolute;bottom:25px;left:30px;font-size:10px;letter-spacing:.12em;opacity:.7}.entered #entry{opacity:0;transform:translateY(-20px);visibility:hidden;transition:opacity .6s,transform .7s,visibility 0s .7s}
#labels{position:fixed;inset:0;pointer-events:none;z-index:5}.building-label{position:absolute;left:0;top:0;background:var(--paper);border:1.5px solid #7d815e;border-radius:8px;padding:7px 12px;display:flex;align-items:center;gap:7px;box-shadow:0 3px 0 #44594526;pointer-events:auto;white-space:nowrap;font-size:12px;transform:translate(-50%,-100%)}.building-label:after{content:'';position:absolute;bottom:-6px;left:50%;width:9px;height:9px;background:var(--paper);transform:rotate(45deg);border-right:1.5px solid #7d815e;border-bottom:1.5px solid #7d815e}.building-label .num{font-size:10px;color:var(--roof)}
.area{position:fixed;left:30px;bottom:27px;display:flex;align-items:center;gap:8px;font-size:12px;margin:0;text-shadow:0 1px 2px #fff5db}.area i{height:7px;width:7px;background:#418075;border:1px solid #f4eacb;border-radius:50%}#visited{position:fixed;right:31px;bottom:27px;font-size:11px;letter-spacing:.14em}#jump{display:none;position:fixed;right:23px;bottom:67px;z-index:10}#cancel-route{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);background:var(--paper);border:1px solid var(--line);border-radius:20px;padding:9px 17px;font-size:11px;z-index:8}#route-note{position:fixed;left:50%;top:28px;transform:translateX(-50%);border-radius:30px;padding:9px 20px;background:var(--paper);font-size:12px;max-width:36vw;text-align:center}#near{position:fixed;bottom:75px;left:50%;transform:translateX(-50%);padding:12px 24px;background:var(--gold);border:1.5px solid #977b3e;border-radius:10px;box-shadow:0 3px #96793c45;font-size:14px;z-index:8}
#speech{position:fixed;bottom:36px;left:50%;transform:translateX(-50%);width:min(590px,calc(100% - 42px));display:flex;align-items:center;gap:8px;z-index:20;background:var(--paper);border:2px solid #a79470;border-radius:19px;padding:16px 24px 15px 12px;box-shadow:0 8px 0 #5b735b22}.speech-portrait{width:107px;height:107px;flex-shrink:0;margin-top:-12px}.speech-body{flex:1;min-width:0}.speaker{font-size:11px;color:#9a793f;letter-spacing:.08em}#speech-text{font-size:15px;line-height:1.9;min-height:3.8em;margin:6px 0 4px}#speech-next{float:right;background:transparent;font-size:11px;padding:7px 0 0 18px}#speech-next span{margin-left:6px}#toast{position:fixed;left:50%;bottom:87px;transform:translateX(-50%);background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:13px 20px;font-size:13px;z-index:15;max-width:calc(100vw - 44px);width:max-content;text-align:center;box-shadow:0 4px #57786520}
dialog{padding:38px;border:2px solid #9b9274;border-radius:23px;background:var(--paper);color:var(--ink);max-height:calc(100dvh - 64px);box-shadow:0 18px 55px #2c4b4544;max-width:calc(100vw - 50px);overscroll-behavior:contain}dialog::backdrop{background:#234a426b;backdrop-filter:blur(3px)}.close{position:absolute;right:15px;top:14px;width:42px;height:42px;background:#eee3c9;border:1px solid #c3b594;border-radius:50%;font-size:25px;z-index:2}.close:hover{background:#e3d6b5}dialog h2{font-size:30px;margin:0 0 14px;line-height:1.5;text-wrap:balance}.dialog-lead{font-size:13px;color:#75816d;margin-bottom:27px}#guide-dialog{width:1090px}.guide-layout{display:grid;grid-template-columns:.9fr 1.25fr;gap:34px}.map-panel{display:flex;flex-direction:column;align-items:center;justify-content:center;background:#ececcf;border:1px solid #d5d5b1;border-radius:16px;padding:12px}#campus-map{width:100%;max-height:340px}.map-panel p{font-size:10px;text-align:center;line-height:1.8;margin:10px 5px}.map-pin{cursor:pointer;outline:none}.map-pin:focus-visible circle{stroke:#222;stroke-width:3}.filters{display:flex;gap:4px;flex-wrap:wrap}.filters button{border-radius:20px;background:transparent;padding:8px 12px;font-size:12px;border:1px solid transparent;min-height:38px}.filters button[aria-pressed=true]{background:var(--ink);color:var(--paper)}.filters small{font-size:9px;opacity:.7}.search{display:flex;align-items:center;border-bottom:1px solid #cbbfa2;margin:12px 0}.search svg{width:17px;height:17px;fill:none;stroke:#8a947e;stroke-width:1.5}.search input{background:transparent;border:0;padding:12px;min-width:0;width:100%;font-size:12px;outline-offset:-2px}#course-list{max-height:340px;overflow:auto;padding-right:8px;scrollbar-width:thin;scrollbar-color:#bdc0a0 transparent}.course-row{display:grid;grid-template-columns:35px 1fr auto;gap:10px;align-items:center;border-bottom:1px solid #ddd3b8;padding:13px 0}.row-number{background:var(--c);color:white;border-radius:10px;width:32px;height:34px;display:grid;place-items:center;font-size:11px}.course-row h3{font-size:13px;margin:0 0 4px;line-height:1.6}.course-row p{font-size:10px;color:#8a8d76;margin:0}.row-actions{display:flex;flex-direction:column;gap:3px}.row-actions button{background:#ebe5cb;font-size:10px;border-radius:7px;padding:8px 10px;min-height:32px}.row-actions button:first-child{background:#d7e3c5}.guide-links{display:flex;gap:24px;border-top:1px solid #d4c9af;padding-top:21px;margin-top:26px;flex-wrap:wrap}.guide-links a{font-size:11px;text-decoration:none}.guide-links a:hover{text-decoration:underline}
#course-dialog{width:1060px;padding:0;overflow:auto}#course-dialog[open]{display:grid;grid-template-columns:1.07fr 1fr}.course-art{background:#e4e6cd;padding:65px 28px 35px;display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:430px;border-radius:21px 0 0 21px}.course-art img{width:100%;height:auto;object-fit:contain;display:block;box-shadow:0 9px 20px #40574226;border:6px solid #fff8e8;border-radius:5px}.image-note{font-size:9px;letter-spacing:.08em;margin-top:22px;color:#7b886f}.course-details{padding:50px 40px 36px;display:flex;flex-direction:column;justify-content:center}.course-details .eyebrow{font-size:11px;letter-spacing:.1em;margin-bottom:12px}.course-details h2{font-size:28px;line-height:1.5;text-wrap:pretty;margin:0 0 14px;overflow-wrap:anywhere}#course-teacher{font-size:12px;color:#8c8c72;margin-bottom:18px}#course-description{font-size:14px;line-height:1.95;margin-bottom:28px}.primary{display:flex;align-items:center;justify-content:space-between;text-decoration:none;background:var(--ink);color:var(--paper);border-radius:11px;padding:16px 22px;font-size:14px;line-height:1.6}.primary:hover{background:#4e7869}.back-button{margin:13px 0 0;background:transparent;padding:9px 5px;font-size:12px;text-decoration:underline;text-underline-offset:4px}.course-details small{font-size:9px;color:#9a9c83;text-align:center;margin-top:14px;line-height:1.8}
#help-dialog{width:650px}.help-welcome{display:flex;align-items:center;gap:15px}.help-welcome .mascot-photo{width:130px;height:130px;flex-shrink:0}.help-welcome p{font-size:13px;line-height:1.9}dl{margin:5px 0 24px}dl>div{display:grid;grid-template-columns:90px 1fr;border-bottom:1px solid #ded3b7;padding:14px 0;gap:12px}dt{font-size:13px}dd{margin:0;font-size:12px;line-height:1.9;color:#77816e}#help-map{width:100%}.fallback{overflow:auto;background:var(--paper)}.fallback #world,.fallback #entry,.fallback .sky-shade,.fallback .brand,.fallback #walk-ui,.fallback .tools,.fallback #speech,.fallback #labels{display:none!important}#fallback{max-width:1100px;margin:0 auto;padding:65px 25px}#fallback h1{font-size:38px}#fallback p{line-height:1.9;font-size:14px}#static-list{display:grid;grid-template-columns:repeat(3,1fr);gap:30px;margin-top:40px}.static-course{border-bottom:1px solid #d1c7a7;padding-bottom:25px}.static-course img{width:100%;height:auto}.static-course h2{font-size:19px}.static-course .eyebrow{font-size:10px;margin-top:17px}.static-course a{font-size:13px}.fallback-source{margin-top:40px;color:#7e8c73}
@media(pointer:coarse){#jump{display:grid}.round{width:48px;height:48px}.row-actions button{min-height:44px}.filters button{min-height:44px}}
@media(max-width:700px){.tools{top:max(17px,env(safe-area-inset-top));right:16px;gap:7px}.round{width:43px;height:43px;font-size:24px}.round svg{width:22px;height:22px}.brand{left:16px;top:20px;font-size:12px;gap:7px}.brand small{font-size:8px;letter-spacing:.1em}.brand-seal{width:31px;height:31px;font-size:18px}.entry-heading{top:12vh}#entry .eyebrow{font-size:8px;letter-spacing:.15em;margin-bottom:18px}#title span{font-size:34px;-webkit-text-stroke:.8px #71664c;text-shadow:1px 1px #8e7852,2px 2px #8e7852,3px 3px #8e7852}#title strong{font-size:26px;margin-top:10px}.entry-line{font-size:10px;letter-spacing:.04em;margin-top:20px}.enter-wrap{bottom:10vh;gap:13px}#enter{font-size:16px;padding:17px 25px}.edition{left:0;bottom:22px;width:100%;font-size:9px}.area{left:17px;bottom:24px;font-size:10px}#visited{right:18px;bottom:24px;font-size:9px}#route-note{top:81px;max-width:80vw;width:max-content;font-size:10px;padding:8px 13px}#cancel-route{bottom:24px;font-size:9px;padding:9px 13px}#near{bottom:72px;font-size:12px;padding:11px 20px}#speech{bottom:70px;padding:12px 16px 12px 4px;gap:2px;border-radius:15px}.speech-portrait{width:76px;height:76px}#speech-text{font-size:12px;line-height:1.85}.speaker{font-size:9px}#speech-next{font-size:10px;min-height:32px}.building-label{font-size:10px;padding:6px 8px;gap:5px}.building-label .num{font-size:8px}#toast{font-size:11px;bottom:127px}dialog{max-width:calc(100vw - 24px);max-height:calc(100dvh - 28px);padding:29px 20px;border-radius:18px}.close{right:10px;top:10px;width:38px;height:38px}dialog h2{font-size:22px;margin-right:20px}.eyebrow{font-size:9px;margin-bottom:11px}.dialog-lead{font-size:11px;line-height:1.9;margin-bottom:17px}.guide-layout{display:block}.map-panel{display:none}.filters{gap:0}.filters button{font-size:10px;padding:7px 11px}.search input{font-size:11px}#course-list{max-height:48dvh}.course-row{gap:8px;grid-template-columns:29px 1fr auto}.row-number{width:27px;height:31px;font-size:9px}.course-row h3{font-size:11px}.course-row p{font-size:9px}.row-actions button{font-size:9px;padding:8px;min-height:35px}.guide-links{gap:15px;row-gap:11px;padding-top:17px;margin-top:17px}.guide-links a{font-size:9px}#course-dialog[open]{display:block}#course-dialog{max-width:calc(100vw - 28px)}.course-art{min-height:0;padding:52px 21px 18px;border-radius:16px 16px 0 0}.course-art img{border-width:4px}.image-note{font-size:8px;margin-top:12px}.course-details{padding:23px 23px 26px}.course-details h2{font-size:23px;margin-right:0;line-height:1.55}.course-details .eyebrow{font-size:10px}#course-teacher{font-size:11px;margin-bottom:13px}#course-description{font-size:12px;margin-bottom:18px}.primary{font-size:12px;padding:14px 17px}.back-button{font-size:11px;min-height:38px;margin-top:8px}.course-details small{font-size:8px;margin-top:7px}.help-welcome .mascot-photo{width:92px;height:92px}.help-welcome{gap:8px}.help-welcome p{font-size:11px}dl>div{grid-template-columns:68px 1fr;gap:6px;padding:11px 0}dt{font-size:11px}dd{font-size:10px}#static-list{grid-template-columns:1fr}#fallback h1{font-size:30px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media(max-width:700px){#jump{display:grid}.round{width:44px;height:44px}.close{width:44px;height:44px}.course-row h3{font-size:12px}.row-actions button{font-size:10px;min-height:44px}#course-description{font-size:14px}.help-welcome p{font-size:12px}dd{font-size:12px}.filters button{min-height:44px}}
