@font-face{font-family:Plus Jakarta Sans;src:url(../fonts/PlusJakartaSans.woff2) format("woff2");font-weight:200 800;font-style:normal;font-display:swap}@font-face{font-family:Plus Jakarta Sans;src:url(../fonts/PlusJakartaSans.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Plus Jakarta Sans;src:url(../fonts/PlusJakartaSans.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Plus Jakarta Sans;src:url(../fonts/PlusJakartaSans.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Plus Jakarta Sans;src:url(../fonts/PlusJakartaSans.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Visby;src:url(../fonts/VisbyRegular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Visby;src:url(../fonts/VisbyBold.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Material Symbols Outlined;src:url(../fonts/MaterialSymbolsOutlined.woff2) format("woff2");font-weight:100 700;font-style:normal;font-display:block}.material-symbols-outlined{font-family:Material Symbols Outlined;font-weight:400;font-style:normal;font-size:18px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;overflow:hidden;width:1em;height:1em;direction:ltr;-webkit-font-feature-settings:"liga";font-feature-settings:"liga";-webkit-font-smoothing:antialiased;font-variation-settings:"FILL" 0,"wght" 400,"GRAD" 0,"opsz" 20;user-select:none;flex:none}:root{--ink: #16232b;--dim: #5d7180;--panel: rgba(255, 255, 255, .92);--panel-solid: #ffffff;--edge: rgba(20, 40, 55, .13);--ntu-navy: #181c62;--ntu-red: #d71440;--ntu-gold: #e6a400;--ntu-blue: #0054a6;--accent: var(--ntu-navy);--accent-soft: rgba(24, 28, 98, .1);--font: "Plus Jakarta Sans", ui-sans-serif, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--tap: 44px;--gap: 12px;--safe-t: env(safe-area-inset-top, 0px);--safe-b: env(safe-area-inset-bottom, 0px);--safe-l: env(safe-area-inset-left, 0px);--safe-r: env(safe-area-inset-right, 0px);--chrome-t: 0px;--chrome-b: 0px;--bleed-t: 0px;--runway: 0px;--pwa-t: 0px;--pwa-b: 0px;--inset-t: max(var(--chrome-t), var(--safe-t), var(--bleed-t), var(--pwa-t), env(safe-area-inset-top, 0px));--inset-b: max(var(--chrome-b), var(--safe-b), var(--pwa-b), env(safe-area-inset-bottom, 0px));color-scheme:light}*{box-sizing:border-box}html,body{margin:0;width:100%;touch-action:pan-x pan-y;overscroll-behavior:none;-webkit-text-size-adjust:100%;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}html{height:auto;min-height:calc(var(--app-h, 100lvh) + var(--runway, 0px));overflow-x:hidden;overflow-y:auto;background-color:#eef2f4}html:has(body.night){background-color:#0c1218}body{position:fixed;top:calc(-1 * var(--bleed-t, 0px));left:0;width:100%;height:100%;height:100vh;height:100lvh;height:calc(var(--app-h, 100lvh) + var(--bleed-t, 0px));overflow:hidden;background-color:transparent}html.standalone{--app-h: 100vh;min-height:100vh;overflow:hidden;background-color:#eef2f400}html.standalone body{top:0;height:100vh;height:var(--app-h, 100vh)}html.standalone #view{position:fixed}html.standalone:before{content:"";position:fixed;top:0;left:0;right:0;height:6px;background-color:#eef2f4;pointer-events:none;z-index:61}html.standalone:has(body.night):before{background-color:#0c1218}@media(display-mode:standalone),(display-mode:fullscreen){html{--app-h: 100vh;min-height:100vh;overflow:hidden;background-color:#eef2f400}html:before{content:"";position:fixed;top:0;left:0;right:0;height:6px;background-color:#eef2f4;pointer-events:none;z-index:61}html:has(body.night):before{background-color:#0c1218}body{top:0;height:100vh;height:var(--app-h, 100vh)}#view{position:fixed}}@media(pointer:coarse)and (orientation:portrait)and (max-aspect-ratio:1/2){html.standalone{--pwa-t: 59px;--pwa-b: 34px}}@media(display-mode:standalone)and (pointer:coarse)and (orientation:portrait)and (max-aspect-ratio:1/2){:root{--pwa-t: 59px;--pwa-b: 34px}}img,a,svg{-webkit-user-drag:none;user-drag:none}input,textarea,[contenteditable=true]{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}body{font:400 14px/1.45 var(--font);color:var(--ink);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}button,input,select,textarea{font:inherit;color:inherit}#view{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;user-select:none}#view.grabbing{cursor:grabbing}#view.locked{cursor:none}.seo-copy{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);border:0}noscript article{position:fixed;inset:0;z-index:60;overflow:auto;padding:28px 24px;background:#fff;color:var(--ink)}noscript article a{color:var(--accent)}.panel{background:var(--panel);border:1px solid var(--edge);border-radius:16px;padding:26px 28px;backdrop-filter:blur(14px);text-align:center;width:min(420px,calc(100vw - 40px))}#loading,#fatal{position:absolute;inset:0;z-index:50;display:grid;place-items:center;background:radial-gradient(120% 90% at 50% 0%,#fff,#dfe7ea 70%);transition:opacity .5s ease;will-change:opacity;padding:20px}#loading[hidden],#fatal[hidden]{display:none}#loading.done{opacity:0;pointer-events:none}#loading.done .panel{backdrop-filter:none}#loading .mark{display:block;width:96px;height:96px;margin:0 auto 14px;border-radius:22px;box-shadow:0 10px 28px #141c6247}#loading h1{margin:0;font-size:30px;letter-spacing:3px;font-weight:700}#loading h1 span{color:var(--accent);font-weight:400}.sub{margin:6px 0 20px;color:var(--dim);letter-spacing:.4px;font-size:13px}.bar{height:4px;border-radius:3px;background:#1428371f;overflow:hidden}#bar-fill{height:100%;width:0%;background:var(--accent);transition:width .25s ease}#loading-status{margin:12px 0 0;color:var(--dim);font-size:12px;min-height:1.4em}#loading h1 .beta{display:inline-block;vertical-align:5px;margin-left:6px;padding:2px 7px;font-size:10px;font-weight:700;letter-spacing:1.2px;text-transform:uppercase;color:#fff;background:var(--accent);border-radius:999px}.powered{margin:26px 0 0;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:11px;letter-spacing:.3px;color:var(--dim)}.powered a{display:block;line-height:0}.powered img{display:block;height:58px;width:auto;margin:-10px 0}#loading.done .powered a{pointer-events:none}#powered-by{margin:10px 0 0;display:flex;flex-direction:column;align-items:flex-start;gap:1px;font-size:10.5px;color:var(--dim)}#powered-by a{display:block;line-height:0;pointer-events:auto}#powered-by img{display:block;height:34px;width:auto;margin:-6px 0}#fatal .panel{width:min(440px,calc(100vw - 40px));text-align:left}#fatal:not([hidden]) .panel{animation:fatal-in .28s cubic-bezier(.16,1,.3,1) both}@keyframes fatal-in{0%{opacity:0;transform:translateY(8px);filter:blur(5px)}to{opacity:1;transform:none;filter:none}}.fatal-head{display:flex;align-items:center;gap:10px;margin:0 0 8px}.fatal-mark{font-size:22px;width:22px;height:22px;flex:none;color:var(--ntu-red)}#fatal h2{margin:0;font-size:18px;font-weight:700;letter-spacing:-.02em;line-height:1.2}#fatal p{color:var(--dim);margin:0;font-size:13px;line-height:1.5}#fatal ::selection{background:var(--accent-soft);color:var(--ink)}#fatal-help{margin:16px 0 0;padding:14px 0 0 1.45em;border-top:1px solid var(--edge);color:var(--ink);font-size:13px;line-height:1.5}#fatal-help[hidden],#fatal-code[hidden]{display:none}#fatal-help li+li{margin-top:10px}#fatal-help li{padding-left:.15em;overflow-wrap:anywhere}#fatal-help li::marker{color:var(--accent);font-weight:700}#fatal-code{position:relative;margin:12px 0 0;background:#181c620b;border:1px solid var(--edge);border-radius:12px}.fatal-copy{position:absolute;top:8px;right:8px;z-index:1;min-height:28px;padding:0 10px;border:none;border-radius:8px;background:#ffffffe6;color:var(--ink);font:600 12px/1 var(--font);cursor:pointer}.fatal-copy:hover{background:#fff}.fatal-copy:focus-visible{outline:2px solid var(--accent);outline-offset:2px}#fatal-flags{margin:0;padding:14px 72px 14px 14px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;line-height:1.5;overflow-x:auto;overflow-wrap:anywhere;white-space:pre-wrap;color:var(--ink)}#hud{position:absolute;inset:0;pointer-events:none;z-index:10}#hud[hidden]{display:none}#scrim{position:absolute;inset:0;z-index:9;background:#1c2c3838}#scrim[hidden]{display:none}#watermark{position:absolute;z-index:12;pointer-events:auto;left:calc(var(--safe-l) + var(--gap));bottom:calc(var(--inset-b) + var(--gap));line-height:0;opacity:.62;filter:saturate(.9) drop-shadow(0 1px 2px rgba(0,0,0,.5));transition:opacity .2s ease}#watermark:hover{opacity:.85}#watermark img{display:block;height:52px;width:auto;margin:0 -10px}#watermark img.night,body.night #watermark img.day{display:none}body.night #watermark img.night{display:block}body.night #watermark{opacity:.62;filter:drop-shadow(0 0 5px rgba(0,0,0,.55))}@media(max-width:720px){#watermark img{height:44px}}#search{position:absolute;z-index:16;pointer-events:auto;top:calc(var(--inset-t) + var(--gap));left:calc(var(--safe-l) + var(--gap));right:calc(var(--safe-r) + var(--gap));display:flex;flex-direction:column;background:var(--panel-solid);border:1px solid var(--edge);border-radius:calc(var(--tap) / 2);box-shadow:0 4px 18px #14283724;overflow:hidden;transition:box-shadow .4s cubic-bezier(.16,1,.3,1),border-color .15s ease}#search.expanded{box-shadow:0 10px 30px #1428372e}@media(hover:hover)and (pointer:fine){#search:hover{border-color:var(--accent)}#search:hover .search-icon{color:var(--accent)}}#search:focus-within{border-color:var(--accent)}.field{display:flex;align-items:center;gap:10px;position:relative;z-index:1;height:var(--tap);padding:0 8px 0 16px;flex:none}.field:after{content:"";position:absolute;left:16px;right:16px;bottom:0;height:1px;background:var(--edge);opacity:0;pointer-events:none;transition:opacity .2s ease .06s}#search.expanded .field:after{opacity:1}.field .search-icon{font-size:18px;width:18px;height:18px;color:var(--dim);flex:none;transition:color .15s ease}.field:focus-within .search-icon{color:var(--accent)}#search-back{flex:none;width:28px;height:28px;border-radius:999px;background:none;border:none;color:var(--dim);cursor:pointer;display:grid;place-items:center;padding:0;margin-left:-4px;transition:color .15s ease,background .15s ease}#search-back[hidden]{display:none}#search-back:hover,#search-back:active{color:var(--accent);background:#14283714}#search-back .material-symbols-outlined{font-size:18px}#search-input{flex:1;min-width:0;height:100%;background:none;border:none;outline:none;font-size:16px}#search-input::placeholder{color:#5d7180a6}#search-input::-webkit-search-cancel-button{display:none}#search-clear{flex:none;width:34px;height:34px;border-radius:999px;background:none;border:none;color:var(--dim);cursor:pointer;display:grid;place-items:center}#search-clear .material-symbols-outlined{font-size:18px}#search-clear[hidden]{display:none}#search-clear:active{background:#14283714}.search-panel{display:grid;grid-template-rows:0fr;position:relative;z-index:1;transition:grid-template-rows .4s cubic-bezier(.16,1,.3,1)}#search.expanded .search-panel{grid-template-rows:1fr}.search-panel-inner{min-height:0;overflow:hidden}#search-results{list-style:none;margin:0;padding:4px 6px 8px;max-height:min(70vh,560px);overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;touch-action:pan-y;opacity:0;transition:opacity .22s ease}#search.expanded #search-results:not([hidden]){opacity:1;transition-delay:.1s}#search-results[hidden]{display:none}#search-results>li{padding:10px 11px;border-radius:9px;cursor:pointer;display:flex;flex-direction:column;gap:2px}#search-results>li.active,#search-results>li:active{background:var(--accent-soft)}#search-results .name{display:flex;align-items:center;line-height:1.25}.result-icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;flex:none;margin-right:6px}.result-icon .material-symbols-outlined{font-size:16px;color:var(--dim)}#search-results li.active .result-icon .material-symbols-outlined,#search-results li:hover .result-icon .material-symbols-outlined{color:var(--accent)}.result-icon.has-logo{width:20px;height:20px;margin-right:8px;background:#fff;border-radius:5px;box-shadow:0 1px 3px #00000014,0 0 0 1px #0000000d;padding:1.5px;box-sizing:border-box;overflow:hidden}.brand-logo{width:100%;height:100%;object-fit:contain;display:block;border-radius:3px}#search-results .result-icon,#search-results .result-icon.has-logo{width:20px;height:20px;margin-right:8px}#search-results .kind{padding-left:28px;font-size:11.5px;color:var(--dim);text-overflow:ellipsis;overflow:hidden;white-space:nowrap}#search-results .open-now{color:#1a7f37;font-weight:700}#search-results .closed-now{color:var(--ntu-red);font-weight:700}#search-results .empty{color:var(--dim);cursor:default}#search-results>li.empty:hover,#search-results>li.empty:active,#search-results>li.empty.active{background:none}#search-results>li.empty-saved{min-height:200px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;text-align:center;padding:32px 28px 36px;font-weight:400}.empty-saved-icon{color:var(--dim);margin-bottom:10px}.empty-saved-icon .material-symbols-outlined{font-size:28px;color:inherit}.empty-saved-title{color:var(--ink);font-size:14px;font-weight:600;letter-spacing:-.02em;line-height:1.3}.empty-saved-hint{color:var(--dim);font-size:13px;font-weight:500;letter-spacing:-.015em;line-height:1.35}#search-results .result-row{display:flex;align-items:center;gap:4px}#search-results .result-copy{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}#search-results .dir-mark{flex:none;width:28px;height:28px;color:var(--dim);display:grid;place-items:center}#search-results li.active .dir-mark,#search-results li:hover .dir-mark{color:var(--accent)}#search-results .dir-mark .material-symbols-outlined{font-size:16px;color:inherit}.dir-meta{display:grid;grid-template-columns:4.75rem 1fr;gap:5px 10px;margin:0;font-size:12.5px}.dir-meta dt{color:var(--dim);font-weight:650;font-size:11px;padding-top:1px}.dir-meta dd{margin:0;display:flex;align-items:center;gap:6px;min-width:0}.dir-halal{width:18px;height:18px;flex:0 0 18px;object-fit:contain;display:block}.dir-note{margin:8px 0 0;font-size:12px;color:var(--dim)}.dir-stalls-label{margin:10px 0 6px;font-size:11px;font-weight:650;color:var(--dim)}.dir-stalls{list-style:none;margin:0;padding:0;display:grid;gap:6px}.dir-stalls li{display:flex;align-items:center;gap:8px;padding:0;border-radius:0;font-size:13px;cursor:default}.dir-stalls li.mapped{cursor:pointer}.dir-stalls .result-icon{margin-right:0}.dir-unavailable{margin:0;font-size:12.5px;color:var(--dim)}.dir-asof{display:block;margin-top:8px;font-size:11px;font-variant-numeric:tabular-nums;color:var(--dim)}#tools{position:absolute;z-index:16;pointer-events:auto;right:calc(var(--safe-r) + var(--gap));bottom:calc(var(--inset-b) + var(--gap));display:flex;flex-direction:column;gap:10px;transition:bottom .6s cubic-bezier(.4,0,.15,1),opacity .28s cubic-bezier(.4,0,.15,1)}.tool{width:var(--tap);height:var(--tap);border-radius:50%;display:grid;place-items:center;cursor:pointer;background:var(--panel);border:1px solid var(--edge);backdrop-filter:blur(14px);box-shadow:0 4px 14px #14283733;transition:transform .12s ease}.tool:active{transform:scale(.92)}.tool .material-symbols-outlined{font-size:22px;color:var(--ink);font-variation-settings:"FILL" 0,"wght" 400,"GRAD" 0,"opsz" 24}.tool.busy,.tool.active{border-color:var(--accent)}.tool.busy .material-symbols-outlined,.tool.active .material-symbols-outlined{color:var(--accent);font-variation-settings:"FILL" 1,"wght" 400,"GRAD" 0,"opsz" 24}#sheet,#options{position:absolute;z-index:15;pointer-events:auto;left:calc(var(--safe-l) + var(--gap));right:calc(var(--safe-r) + var(--gap));bottom:calc(var(--inset-b) + var(--gap));padding-bottom:8px;background:var(--panel-solid);border:1px solid var(--edge);border-radius:18px;box-shadow:0 8px 28px #14283729;max-height:46svh;max-height:46dvh;display:flex;flex-direction:column;min-height:0;overflow:hidden}#sheet.expanded,#options.expanded,#routes.expanded{max-height:88svh;max-height:88dvh;height:88svh;height:88dvh}#sheet.sheet-enter,#options.sheet-enter,#routes.sheet-enter{animation:rise .4s cubic-bezier(.4,0,.15,1)}#sheet.sheet-leave,#options.sheet-leave,#routes.sheet-leave{animation:sink .32s cubic-bezier(.4,0,.15,1) forwards;pointer-events:none}#sheet.snapping,#options.snapping,#routes.snapping{overflow:hidden}#sheet.dragging,#options.dragging,#routes.dragging{transition:none}#sheet[hidden],#options[hidden]{display:none}@keyframes rise{0%{transform:translateY(14px);opacity:0}}@keyframes sink{to{transform:translateY(14px);opacity:0}}.grip{display:flex;align-items:center;justify-content:center;width:100%;height:28px;margin:0;padding:0;flex:none;border:0;background:none;color:inherit;cursor:grab;touch-action:none;-webkit-tap-highlight-color:transparent}.grip:after{content:"";width:38px;height:4px;border-radius:999px;background:#14283738}.grip:active{cursor:grabbing}.sheet-body{flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y;display:flex;flex-direction:column;scrollbar-width:none}.sheet-body::-webkit-scrollbar{display:none}.sheet-body #floors-list,.sheet-body .route-legs,.sheet-body #routes-stops{flex:none;min-height:0;max-height:none;overflow:visible}.sheet-head{touch-action:none;display:flex;align-items:flex-start;gap:10px;padding:8px 14px 10px;flex:none}#options .sheet-head,#routes .sheet-head{border-bottom:1px solid var(--edge)}.sheet-title{flex:1;min-width:0;display:flex;align-items:center;gap:10px}.sheet-title-text{flex:1;min-width:0}.sheet-title b{display:block;font-size:15px;line-height:1.3}.sheet-title span{display:block;color:var(--dim);font-size:12px;margin-top:2px}.sheet-logo{width:36px;height:36px;flex:none;border-radius:8px;overflow:hidden;background:#fff;box-shadow:0 1px 4px #0000001a,0 0 0 1px #0000000f;display:flex;align-items:center;justify-content:center;padding:2.5px;box-sizing:border-box}.sheet-logo img{width:100%;height:100%;object-fit:contain;border-radius:6px;display:block}.sheet-logo[hidden]{display:none}.sheet-head button{flex:none;width:32px;height:32px;border-radius:50%;background:none;border:none;color:var(--dim);cursor:pointer;display:grid;place-items:center;padding:0}.sheet-head button:hover{background:#14283714;color:var(--ink)}.sheet-head button:active{background:#14283724}.sheet-head button .material-symbols-outlined{font-size:18px;color:inherit}#floors-list{list-style:none;margin:0;padding:6px;flex:0 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}#floors-list li{min-height:42px;padding:8px 12px;border-radius:10px;cursor:pointer;display:flex;align-items:center;gap:12px;font-variant-numeric:tabular-nums}#floors-list li:active{background:var(--accent-soft)}#floors-list li.active{background:color-mix(in srgb,var(--ntu-blue) 12%,#fff);color:var(--ntu-blue);font-weight:600}#floors-list li.active .lvl{color:var(--ntu-blue)}#floors-list .lvl{font-family:ui-monospace,SFMono-Regular,monospace;font-size:13px;color:var(--accent);min-width:30px}#floors-list .rooms{margin-left:auto;font-size:11.5px;color:var(--dim)}#floors-list .none{color:var(--dim);justify-content:center}.opt-body{padding:10px 14px 4px;flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y;scrollbar-width:none}.opt-body::-webkit-scrollbar{display:none}.opt{display:flex;align-items:center;gap:11px;min-height:var(--tap);cursor:pointer}.opt input{width:19px;height:19px;accent-color:var(--accent);flex:none}#keys{width:100%;margin:12px 0 4px;border-collapse:collapse}#keys td{padding:3px 0;vertical-align:top;font-size:12.5px}#keys td:first-child{color:var(--accent);padding-right:14px;white-space:nowrap;font-family:ui-monospace,SFMono-Regular,monospace;font-size:11.5px}#keys td:last-child{color:var(--dim)}#attribution{color:var(--dim);font-size:11px;margin:10px 0 6px}#attribution a{color:var(--accent)}.opt-legal{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin:8px 0 10px}.opt-legal a{display:grid;place-items:center;min-height:var(--tap);padding:8px 10px;border:1px solid var(--edge);border-radius:12px;color:var(--ink);text-decoration:none;font-size:13px;font-weight:650;text-align:center}.opt-legal a:hover{background:#1428370a}.opt-legal a:active{background:var(--accent-soft)}.opt-legal a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}#labels{position:absolute;inset:0;overflow:hidden;pointer-events:none}#label-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.outlined{color:#12222b;paint-order:stroke fill;-webkit-text-stroke:3px rgba(255,255,255,.92);text-shadow:0 1px 2px rgba(255,255,255,.7)}#marker{position:absolute;left:0;top:0;will-change:transform;z-index:14;pointer-events:none}#marker[hidden]{display:none}#marker>span{display:none}#marker .drop-pin{display:block;width:32px;height:44px;overflow:visible;transform-origin:50% 100%;filter:drop-shadow(0 2px 3px rgba(20,40,55,.32))}#marker:not([hidden]) .drop-pin{animation:pin-drop .42s cubic-bezier(.22,1.2,.32,1)}@keyframes pin-drop{0%{transform:translateY(-16px) scale(.86);opacity:0}72%{transform:translateY(1px) scale(1.03);opacity:1}to{transform:none;opacity:1}}#here{position:absolute;left:0;top:0;will-change:transform;z-index:11}#here[hidden]{display:none}#here .dot{width:14px;height:14px;border-radius:50%;background:#2f7fe0;border:2px solid #fff;box-shadow:0 0 0 6px #2f7fe038,0 1px 6px #14283759}#toast{position:absolute;left:50%;transform:translate(-50%);bottom:calc(var(--inset-b) + var(--tap) + 28px);background:var(--panel);border:1px solid var(--edge);padding:9px 15px;border-radius:999px;backdrop-filter:blur(12px);font-size:13px;max-width:calc(100vw - 40px);text-align:center;z-index:17}#toast[hidden]{display:none}#stop-nudge{position:absolute;left:50%;transform:translate(-50%);bottom:calc(var(--inset-b) + var(--tap) + 28px);display:flex;align-items:center;gap:8px;padding:10px 16px 10px 13px;border-radius:999px;background:var(--accent);color:#fff;border:0;font:inherit;font-size:13.5px;font-weight:700;cursor:pointer;box-shadow:0 6px 20px #181c6252;pointer-events:auto;z-index:17;max-width:calc(100vw - 40px);animation:nudge-in .28s cubic-bezier(.2,.9,.3,1)}#stop-nudge:before{content:"directions_bus";font-family:Material Symbols Outlined;font-size:18px;font-weight:400}#stop-nudge[hidden]{display:none}@keyframes nudge-in{0%{opacity:0;transform:translate(-50%,10px)}}.install-share-icon{width:20px;height:20px;border-radius:5px;vertical-align:-4px;margin-right:6px}.opt-lang{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 2px 10px}.opt-lang-label{font-weight:600}.opt-lang-choice{display:flex;gap:6px}#update-bar{position:absolute;left:50%;transform:translate(-50%);top:calc(var(--inset-t) + var(--tap) + var(--gap) * 2);pointer-events:auto;display:flex;align-items:center;gap:10px;background:var(--panel);border:1px solid var(--edge);padding:7px 8px 7px 15px;border-radius:999px;backdrop-filter:blur(12px);font-size:13px;white-space:nowrap;max-width:calc(100vw - 24px);z-index:18;box-shadow:0 6px 20px #0000001f}#update-bar[hidden]{display:none}#update-now{background:var(--ntu-navy);color:#fff;border:0;white-space:nowrap;padding:6px 14px;border-radius:999px;font-weight:600;cursor:pointer}#update-now[disabled]{opacity:.6;cursor:default}#update-later{background:none;border:0;color:var(--dim);cursor:pointer;display:grid;place-items:center;padding:4px 8px}#update-later .material-symbols-outlined{font-size:18px}#stats{position:absolute;z-index:12;top:calc(var(--inset-t) + var(--tap) + var(--gap) * 2);right:calc(var(--safe-r) + var(--gap));display:flex;flex-direction:column;gap:6px;background:var(--panel);border:1px solid var(--edge);padding:8px 10px 7px;border-radius:9px;backdrop-filter:blur(10px);font-variant-numeric:tabular-nums;color:var(--dim);text-align:right;font-size:11px}#stats[hidden]{display:none}#stats-fps{display:block;width:132px;height:36px}#stats-copy{white-space:pre}.desktop-only{display:none}@media(min-width:720px){body{font-size:13px}#search{left:50%;right:auto;transform:translate(-50%);width:400px}#search-input{font-size:14px}#search-results>li{padding:8px 10px}#search-results>li:hover{background:var(--accent-soft)}#search-results>li.empty:hover{background:none}#search-results>li.empty-saved{padding:32px 28px 36px}.tool:hover{border-color:var(--accent)}#floors-list li:hover{background:var(--accent-soft)}#floors-list li.active:hover{background:color-mix(in srgb,var(--ntu-blue) 12%,#fff)}#sheet,#options,#routes{left:auto;right:calc(var(--safe-r) + var(--tap) + var(--gap) * 2);bottom:calc(var(--inset-b) + var(--gap));width:320px;border-radius:14px;border:1px solid var(--edge);max-height:66vh;padding-bottom:6px;height:auto}#sheet.expanded,#options.expanded,#routes.expanded{height:auto;max-height:66vh}.grip{display:none}.sheet-head{padding-top:12px}#scrim{display:none!important}.desktop-only{display:table-row}#place{top:calc(var(--inset-t) + var(--tap) + var(--gap) + 16px)}}@media(max-width:719px){#hud.has-sheet #tools,#hud.has-options #tools,#hud.has-routes #tools{opacity:0;pointer-events:none}}@media(prefers-reduced-motion:reduce){#sheet,#options,#routes,#sheet.sheet-enter,#options.sheet-enter,#routes.sheet-enter,#sheet.sheet-leave,#options.sheet-leave,#routes.sheet-leave{animation:none}#sheet.snapping,#options.snapping,#routes.snapping,.tool,#tools,.stop-icon,.park-icon{transition:none}#fatal:not([hidden]) .panel{animation:none}.trip-fields.reordering .trip-row:not(.dragging){transition:none}.trip-row.is-marquee:hover .trip-field:not(:focus-within) .trip-scroll{animation:none}}#pins{position:absolute;inset:0;overflow:hidden}#pins.moving{visibility:hidden}.map-pin{position:absolute;left:0;top:0;display:flex;align-items:flex-start;gap:4px;max-width:min(170px,46vw)}.map-pin .pin-icon{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;flex:none;filter:drop-shadow(0 1px 2px rgba(255,255,255,.9))}.map-pin .pin-icon .material-symbols-outlined{font-size:15px;color:#12222b}.map-pin .pin-icon.has-logo{width:17px;height:17px;background:#fff;border-radius:4px;box-shadow:0 1px 3px #00000026,0 0 0 1px #00000014;padding:1px;box-sizing:border-box;overflow:hidden}.map-pin .pin-icon.has-logo .brand-logo{width:100%;height:100%;object-fit:contain;border-radius:3px;display:block}.map-pin.core .pin-icon .material-symbols-outlined{color:#0b6f63}.map-pin .pin-text{font-size:11.5px;font-weight:600;line-height:1.3;color:#12222b;display:block;overflow:hidden;white-space:pre;paint-order:stroke fill;-webkit-text-stroke:3px rgba(255,255,255,.92);text-shadow:0 1px 2px rgba(255,255,255,.7)}.map-pin.core .pin-text{color:#0b6f63;font-weight:700;letter-spacing:.2px;-webkit-text-stroke:3.2px rgba(255,255,255,.95)}.directions{padding:8px 14px 4px;border-bottom:1px solid var(--edge);flex:none}.dir-row{display:flex;align-items:center;gap:9px;padding:4px 0}.dir-icon{font-size:15px;flex:none}.dir-name{font-weight:600;font-size:13px}.dir-meta{margin-left:auto;color:var(--dim);font-size:11.5px}.dir-note{color:var(--dim);font-size:10.5px;margin:4px 0 2px;line-height:1.35}#route{position:absolute;inset:0;overflow:hidden}.route-dot{position:absolute;left:0;top:0;width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 2px #ffffffeb,0 1px 4px #14283766}.route-dot.walk{background:#2f7fe0}.route-dot.indoor{background:var(--accent)}.route-dot.riser{background:#e08a1e;width:8px;height:8px}.route-end{position:absolute;transform:translate(-50%,-100%);width:15px;height:15px;border-radius:50% 50% 50% 0;rotate:-45deg;background:#ff7a59;border:2px solid rgba(255,255,255,.9);box-shadow:0 2px 8px #00000080}.route-way{position:absolute;left:0;top:0;z-index:10;pointer-events:none}.route-way i{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:12px;height:12px;border-radius:50%;background:var(--accent);border:2.5px solid #fff;box-shadow:0 1px 6px #1428378c}.route-way.vertical i{background:#e08a1e}.route-way.bus i{background:#d84c8c}.route-way.walk i{background:#2f7fe0}.route-way.start i{background:#246bff}.route-way.end{z-index:12}.route-way.end i{width:36px;height:36px;border-radius:50%;background:#246bff;color:#fff;border:2.5px solid #fff;transform:translate(-50%,-110%);box-shadow:0 2px 6px #23283238}.route-way.end i:before{content:"";position:absolute;width:10px;height:10px;background:#246bff;border-right:2.5px solid #fff;border-bottom:2.5px solid #fff;left:10px;bottom:-6px;transform:rotate(45deg)}.route-way.end i:after{content:"";position:absolute;width:11px;height:11px;inset:auto;transform:translate(-50%,-50%);background:#fff;border-radius:50%}.route-way span{position:absolute;left:50%;top:50%;transform:translate(10px,-50%);white-space:nowrap;font:700 12px/1.2 var(--font, system-ui, sans-serif);color:#fff;background:var(--accent);padding:3px 8px;border-radius:8px;box-shadow:0 2px 8px #14283773;letter-spacing:.01em}.route-way.vertical span{background:#c9760f}.route-way.bus span{background:#c4407c}.route-way.start span,.route-way.end span{color:#24272d;background:#fffffff5;font-weight:600;padding:5px 9px;border-radius:7px;box-shadow:0 1px 5px #1923322e}.route-way.end span{transform:translate(24px,calc(-50% - 26px))}.route-way.other:not(.start):not(.end){opacity:.85}.route-way.other span{font-weight:600}.route-way.current:not(.end) i{box-shadow:0 1px 5px #19233240}body.navigating .pin-text,body.navigating .pin-icon{filter:opacity(.3)}.sheet-actions{display:flex;gap:8px;padding:8px 14px 14px;flex:none}.sheet-actions[hidden],body.navigating #sheet .sheet-actions{display:none}#sheet:has(#trip:not([hidden])) .sheet-actions,#sheet:has(#trip:not([hidden])) #sheet-parking,#sheet:has(#trip:not([hidden])) #sheet-arrivals,#sheet:has(#trip:not([hidden])) #sheet-directory,#sheet:has(#trip:not([hidden])) #sheet-classes,#sheet:has(#trip:not([hidden])) #floors-list,#sheet:has(#trip:not([hidden])) #stepper,#sheet:has(#trip:not([hidden])) .route-legs{display:none}.action{flex:1;min-height:38px;border-radius:10px;cursor:pointer;background:var(--accent);border:none;color:#fff;font-weight:700}.action:active{filter:brightness(.92)}.action.ghost{background:#14283712;color:var(--ink);font-weight:600}.action[hidden]{display:none}#sheet .sheet-head{gap:4px}#sheet .sheet-head button{color:var(--ink)}#sheet .sheet-head button .material-symbols-outlined{font-variation-settings:"FILL" 0,"wght" 400,"GRAD" 0,"opsz" 24}#sheet .place-head-action[aria-pressed=true]{color:var(--accent);background:var(--accent-soft)}#sheet .place-head-action[aria-pressed=true] .material-symbols-outlined{font-variation-settings:"FILL" 1,"wght" 400,"GRAD" 0,"opsz" 24}#sheet .place-head-action:disabled{opacity:.45;cursor:default}#sheet .place-head-action:focus-visible,.place-action-feedback input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}#sheet .place-head-action:hover{background:var(--accent-soft)}.place-action-feedback{flex:none;padding:0 14px}.place-action-status{margin:0 0 10px;color:var(--dim);font-size:13px}.place-action-status:empty{display:none}.place-action-feedback input{width:100%;box-sizing:border-box;padding:10px;margin-bottom:10px;color:var(--ink);background:var(--panel);border:1px solid var(--edge);border-radius:8px}.route-legs{padding:10px 14px 2px;border-bottom:1px solid var(--edge);flex:1 1 auto;min-height:9em;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.leg{display:flex;align-items:flex-start;gap:10px;padding:5px 0}.leg-icon{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;flex:none}.leg-icon .material-symbols-outlined{font-size:16px;color:var(--ink)}.leg-text{flex:1;min-width:0;font-size:12.5px;line-height:1.35}.leg-dist{color:var(--dim);font-size:11.5px;flex:none;margin-left:auto}.route-total{color:var(--dim);font-size:11px;margin:6px 0 2px}.route-legs::-webkit-scrollbar,#floors-list::-webkit-scrollbar,#search-results::-webkit-scrollbar,#trip-results::-webkit-scrollbar{width:5px}.route-legs::-webkit-scrollbar-thumb,#floors-list::-webkit-scrollbar-thumb,#search-results::-webkit-scrollbar-thumb,#trip-results::-webkit-scrollbar-thumb{background:#1428373d;border-radius:3px}.map-pin.terse .pin-text{display:none}.map-pin.terse .pin-icon{opacity:.75;font-size:12px}#stepper{padding:10px 14px 4px;border-bottom:1px solid var(--edge);flex:none}#stepper[hidden]{display:none}.step-top{display:flex;align-items:center;justify-content:space-between;color:var(--dim);font-size:11.5px;letter-spacing:.3px}.link{background:none;border:none;color:var(--accent);font-weight:600;font-size:12px;cursor:pointer;padding:2px 0}.step-body{display:flex;align-items:flex-start;gap:11px;padding:8px 0 10px}.step-icon{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;flex:none;background:var(--accent-soft);border-radius:8px}.step-icon .material-symbols-outlined{font-size:22px;color:var(--accent)}.step-text{font-size:15px;font-weight:600;line-height:1.3}.step-dist{color:var(--dim);font-size:12px;margin-top:2px}.step-arrival{width:fit-content;margin-top:7px;padding:5px 8px;border-radius:8px;color:#146547;background:#e4f5ec;font-size:11.5px;font-weight:700;line-height:1.25}.step-arrival[hidden]{display:none}.step-arrival.waiting{color:var(--dim);background:#14283712}.step-arrival.unavailable{color:#7c6430;background:#f7f0dc}.step-nav{display:flex;gap:8px;padding-bottom:6px;flex:none}#stepper{display:flex;flex-direction:column}.step-nav .action{min-height:40px}.step-nav .action:disabled{opacity:.4;cursor:default}#trip-go:disabled{background:#1428371a;color:#14283761;opacity:1;filter:none;pointer-events:none;cursor:default}.route-dot.other{opacity:.22}.route-dot.current{box-shadow:0 0 0 2px #fff,0 0 10px #0f8f80cc}#trip{padding:10px 14px 4px;border-bottom:1px solid var(--edge);flex:none;display:flex;flex-direction:column;min-height:0}#trip[hidden]{display:none}.trip-ends{position:relative;margin-bottom:8px;padding:5px;background:#1428370d;border:1px solid var(--edge);border-radius:12px;display:flex;flex-direction:column;min-height:0}.trip-fields{display:flex;flex-direction:column;gap:7px}.trip-row{display:flex;align-items:center;gap:9px;min-height:44px;padding:0 2px 0 10px;background:#ffffff94;border:1px solid transparent;border-radius:9px}.trip-row:focus-within{border-color:var(--accent)}.trip-field{position:relative;flex:1;min-width:0;align-self:stretch;display:flex;align-items:center;overflow:hidden}.trip-row input{flex:1;min-width:0;width:100%;background:none;border:none;outline:none;font-size:15px;touch-action:manipulation;overflow:hidden;text-overflow:ellipsis}.trip-scroll{position:absolute;inset:0 auto 0 0;display:flex;align-items:center;white-space:nowrap;font:inherit;font-size:15px;color:inherit;pointer-events:none;opacity:0}@media(hover:hover)and (pointer:fine){.trip-row.is-marquee:hover .trip-field:not(:focus-within) input{color:transparent;text-overflow:clip}.trip-row.is-marquee:hover .trip-field:not(:focus-within) .trip-scroll{opacity:1;animation:trip-marquee var(--trip-marquee-ms, 3.2s) linear infinite alternate}}@keyframes trip-marquee{0%,16%{transform:translate(0)}84%,to{transform:translate(var(--trip-shift, 0px))}}.trip-row input::placeholder{color:#5d7180b3}.trip-fields.reordering{touch-action:none}.trip-drag{flex:none;width:44px;height:44px;border:none;background:none;color:var(--dim);cursor:grab;display:inline-flex;align-items:center;justify-content:center;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;position:relative;z-index:1}.trip-drag:active,.trip-row.dragging .trip-drag{cursor:grabbing}.trip-drag .material-symbols-outlined{font-size:16px}.trip-row.dragging{position:relative;z-index:2;background:var(--panel-solid);box-shadow:0 8px 22px #14283729;user-select:none}.trip-fields.reordering .trip-row:not(.dragging){transition:transform .18s cubic-bezier(.16,1,.3,1)}.trip-dot{width:10px;height:10px;border-radius:50%;flex:none}.trip-dot.from{background:#2f7fe0}.trip-dot.stop{background:#31b84a}.trip-dot.to{background:#ff7a59;border-radius:50% 50% 50% 0;rotate:-45deg}.trip-remove{flex:none;display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;padding:0;border:0;border-radius:50%;color:#d95555;background:transparent;font:700 20px/1 system-ui,sans-serif;cursor:pointer}.trip-remove:hover{background:#d955551a}.trip-remove:focus-visible,.trip-add:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.trip-add{display:flex;align-items:center;gap:10px;width:100%;min-height:42px;margin-top:5px;padding:0 11px;border:0;border-radius:9px;background:transparent;color:#2f7fe0;font:inherit;font-size:14px;font-weight:600;text-align:left;cursor:pointer}.trip-add:hover{background:#2f7fe014}.trip-add-icon{position:relative;display:inline-block;flex:none;width:20px;height:20px;border-radius:50%;background:#2f7fe0}.trip-add-icon:before,.trip-add-icon:after{content:"";position:absolute;left:50%;top:50%;width:10px;height:2px;border-radius:999px;background:#fff;transform:translate(-50%,-50%)}.trip-add-icon:after{transform:translate(-50%,-50%) rotate(90deg)}#trip-results{position:relative;z-index:3;list-style:none;margin:6px 0 0;padding:4px;background:var(--panel-solid);border:1px solid var(--edge);border-radius:10px;box-shadow:0 8px 20px #14283729;flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y}#trip-results[hidden]{display:none}#trip-results li{display:flex;align-items:center;padding:9px 10px;border-radius:8px;cursor:pointer;font-size:13px}#trip-results li:active,#trip-results li:hover{background:var(--accent-soft)}#trip-results li:active .result-icon .material-symbols-outlined,#trip-results li:hover .result-icon .material-symbols-outlined{color:var(--accent)}#sheet.listing:not(.expanded):not(.dragging):not(.snapping),#sheet:has(#trip-results:not([hidden])):not(.expanded):not(.dragging):not(.snapping){max-height:62svh;max-height:62dvh}#sheet:has(#trip-results:not([hidden])) #trip{flex:1 1 auto}#sheet:has(#trip-results:not([hidden])) .trip-ends{flex:1 1 auto;overflow:hidden}#sheet:has(#trip-results:not([hidden])) .trip-add{display:none}#sheet.listing #stepper .step-body,#sheet.listing #stepper .step-nav{display:none}#sheet.listing #stepper{padding-bottom:0;border-bottom:none}#suggest{margin:0;padding:4px 12px 12px;max-height:min(56vh,420px);overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y;opacity:0;transition:opacity .22s ease}#search.expanded #suggest:not([hidden]){opacity:1;transition-delay:.1s}#suggest[hidden]{display:none}#chips{display:flex;flex-wrap:wrap;gap:6px}.chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--edge);background:#1428370a;border-radius:999px;padding:7px 11px;font-size:12.5px;cursor:pointer;white-space:nowrap}.chip-icon{font-size:16px;width:16px;height:16px;color:var(--dim);flex:none}.chip:active,.chip.on{background:var(--accent-soft);border-color:var(--accent)}.chip:active .chip-icon,.chip.on .chip-icon{color:var(--accent);font-variation-settings:"FILL" 1,"wght" 400,"GRAD" 0,"opsz" 20}#recents-wrap{margin-top:10px;padding-top:8px;border-top:1px solid var(--edge)}#recents-wrap[hidden]{display:none}.recents-header{display:flex;align-items:center;justify-content:space-between;padding:2px 4px 6px}.recents-title{color:var(--dim);font-size:11px;font-weight:600;letter-spacing:.5px;text-transform:uppercase}.recents-clear{background:none;border:none;padding:2px 6px;border-radius:4px;color:var(--dim);font-size:11px;font-weight:500;cursor:pointer;transition:color .15s ease,background .15s ease}.recents-clear:hover,.recents-clear:active{color:var(--ink);background:#14283714}#recents{list-style:none;margin:0;padding:0}#recents:empty{display:none}#recents li{padding:8px 6px;border-radius:8px;cursor:pointer;font-size:13px;display:flex;align-items:center;gap:8px}#recents li:active,#recents li:hover{background:var(--accent-soft)}#recents .when{margin-left:auto;color:var(--dim);font-size:11px}#routes{position:absolute;z-index:15;pointer-events:auto;left:calc(var(--safe-l) + var(--gap));right:calc(var(--safe-r) + var(--gap));bottom:calc(var(--inset-b) + var(--gap));padding-bottom:8px;background:var(--panel-solid);border:1px solid var(--edge);border-radius:18px;box-shadow:0 8px 28px #14283729;max-height:52svh;max-height:52dvh;display:flex;flex-direction:column;min-height:0;overflow:hidden}#routes[hidden]{display:none}#routes-list{list-style:none;margin:0;padding:6px;flex:none}#routes-list li{display:flex;align-items:center;gap:11px;min-height:46px;padding:8px 12px;border-radius:10px;cursor:pointer}#routes-list li:active,#routes-list li.on{background:var(--accent-soft)}#routes-list .bar{width:5px;height:24px;border-radius:3px;flex:none}#routes-list .ref{font-family:ui-monospace,SFMono-Regular,monospace;font-weight:700;font-size:13px;min-width:46px}#routes-list .name{flex:1;min-width:0}#routes-list .name:empty{display:none}#routes-list .meta{margin-left:auto;color:var(--dim);font-size:11.5px;white-space:nowrap;flex:none}#routes-stops{list-style:none;margin:0;padding:0 14px 6px;flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain}#routes-stops:empty{display:none}#routes-stops li{position:relative;padding:7px 0 7px 20px;font-size:12.5px;cursor:pointer}#routes-stops li:before{content:"";position:absolute;left:4px;top:0;bottom:0;width:2px;background:var(--stop-color, var(--accent));opacity:.45}#routes-stops li:after{content:"";position:absolute;left:1px;top:12px;width:8px;height:8px;border-radius:50%;background:var(--stop-color, var(--accent));box-shadow:0 0 0 2px var(--panel)}#routes-stops li:first-child:before{top:12px}#routes-stops li:last-child:before{bottom:calc(100% - 20px)}#here .cone{position:absolute;left:50%;top:50%;width:0;height:0;border-left:13px solid transparent;border-right:13px solid transparent;border-bottom:30px solid rgba(47,127,224,.45);margin:-34px 0 0 -13px;transform-origin:13px 34px;transition:transform .15s linear}#here.no-heading .cone{display:none}#here .dot{position:relative}.sheet-title .open-now,.sheet-title .closed-now{display:inline;font-weight:700}.sheet-title .open-now{color:#1a7f37}.sheet-title .closed-now{color:var(--ntu-red)}.climb{color:var(--dim);font-size:11.5px}#sheet-directory{padding:2px 16px 12px}#sheet-directory .dir-stalls li{padding:4px 0;cursor:default}#sheet-classes{padding:0 16px 4px}#sheet-classes .class-now{margin:6px 0 4px;font-weight:650;font-size:13px}#sheet-classes .class-now.busy{color:var(--ntu-red)}#sheet-classes .class-toggle{display:block;width:100%;margin:6px 0 0;padding:7px 10px;font:inherit;font-size:12.5px;font-weight:600;color:var(--ink-2, #4a5058);background:var(--wash, #f6f7f8);border:1px solid var(--line, #e3e5e8);border-radius:8px;cursor:pointer}#sheet-classes .class-toggle:hover{background:#eef0f2}#sheet-classes .class-detail{margin-top:8px}#sheet-classes .class-table{width:100%;border-collapse:collapse;font-size:12.5px;font-variant-numeric:tabular-nums;border:1px solid var(--line, #e3e5e8);border-radius:8px;overflow:hidden}#sheet-classes .class-table th{text-align:left;font-size:10.5px;font-weight:650;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3, #83888f);background:var(--wash, #f6f7f8);padding:5px 8px;border-bottom:1px solid var(--line, #e3e5e8)}#sheet-classes .class-table td{padding:5px 8px;color:var(--ink-2, #5a5f66);border-top:1px solid var(--line-soft, #eef0f2)}#sheet-classes .class-table tbody tr:first-child td{border-top:0}#sheet-classes .class-table td:first-child,#sheet-classes .class-table th:first-child{white-space:nowrap}#sheet-classes .class-table td:last-child{white-space:nowrap}#sheet-classes .class-table tr.now td{background:#d714400f;color:var(--ntu-red);font-weight:650}#sheet-classes .class-note{margin:6px 0 0;font-size:11px;line-height:1.35;color:var(--ink-3, #83888f)}body.night .map-pin .pin-text{color:#eef3f8;-webkit-text-stroke:3px rgba(5,9,14,.9);text-shadow:0 1px 2px rgba(0,0,0,.75)}body.night .map-pin .pin-icon .material-symbols-outlined{color:#eef3f8}body.night .map-pin.core .pin-text{color:#6fe0d0;-webkit-text-stroke:3.2px rgba(5,9,14,.92)}body.night .map-pin.core .pin-icon .material-symbols-outlined{color:#6fe0d0}#floors-list li:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.opt-action{display:flex;align-items:center;gap:12px;width:100%;margin:6px 0 2px;padding:12px;text-align:left;cursor:pointer;background:var(--accent);border:none;border-radius:12px;color:#fff;font:inherit}.opt-action:active{filter:brightness(.92)}.opt-action[hidden]{display:none}.opt-action-icon{flex:none;display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:#ffffff29}.opt-action-icon .material-symbols-outlined{font-size:18px}.opt-action-text{display:block;line-height:1.3}.opt-action-text b{display:block;font-size:14px}.opt-action-text small{display:block;margin-top:2px;font-size:12px;opacity:.85}#end-nav{position:fixed;inset:0;z-index:40;display:grid;place-items:center;padding:18px;background:#0c14208c}#end-nav[hidden]{display:none}#end-nav .panel{width:min(340px,100%);background:#fff;border-radius:16px;box-shadow:0 18px 60px #0a142359}#end-nav .sheet-head{padding:16px 16px 4px;border-bottom:none}.end-nav-actions{display:flex;gap:8px;padding:10px 14px 14px}#install-help{position:fixed;inset:0;z-index:40;display:grid;place-items:center;padding:18px;background:#0c14208c}#install-help[hidden]{display:none}#install-help .panel{width:min(420px,100%);max-height:82vh;overflow:auto;background:#fff;border-radius:16px;box-shadow:0 18px 60px #0a142359}#install-help .sheet-head{padding:14px 16px 6px}.install-body{padding:0 18px 18px}.install-body p{margin:6px 0 12px;color:var(--ink)}.install-body ol{margin:0;padding-left:22px}.install-body li{margin:0 0 10px;line-height:1.45}.install-note{margin-top:14px!important;font-size:13px;opacity:.72}.opt-action.ghost{background:#1428370f;color:var(--ink);margin-top:10px}.opt-action.ghost .opt-action-icon{background:#14283714}.opt-action.ghost .opt-action-text small{opacity:.7}#time-panel{padding:4px 2px 8px}#time-panel[hidden]{display:none}.time-modes{display:flex;gap:6px;margin:4px 0 12px}.time-mode{flex:1;min-height:34px;border-radius:9px;cursor:pointer;border:1px solid var(--edge);background:transparent;color:var(--ink);font:600 13px/1.2 var(--font)}.time-mode.active{background:var(--accent);border-color:var(--accent);color:#fff}.time-slider{display:flex;align-items:center;gap:12px}.time-slider input[type=range]{flex:1;accent-color:var(--accent)}.time-slider input[type=range]:disabled{opacity:.4}#time-readout{min-width:5ch;text-align:right;font:700 13px/1 ui-monospace,SFMono-Regular,monospace;color:var(--ink)}.routes-note{margin:4px 14px 12px;padding-top:10px;border-top:1px solid var(--edge);font-size:11.5px;line-height:1.5;color:var(--dim)}#sheet-arrivals{padding:0 16px 4px}#sheet-arrivals[hidden]{display:none}#sheet-parking{padding:4px 16px 12px}#sheet-parking[hidden]{display:none}#sheet-parking .park-lots,#sheet-parking .park-chargers{margin:6px 0 0;font-weight:650;font-size:13px}#sheet-parking .park-lots.fill-available,#sheet-parking .park-chargers.fill-available{color:#1f7a3a}#sheet-parking .park-lots.fill-almost,#sheet-parking .park-chargers.fill-almost{color:#9a6200}#sheet-parking .park-lots.fill-full,#sheet-parking .park-chargers.fill-full{color:#b42318}#sheet-parking .park-now{margin:6px 0 8px;font-weight:650;font-size:13px}#sheet-parking .park-lots+.park-now,#sheet-parking .park-chargers+.park-now{margin-top:2px}#sheet-parking .park-lots+.park-chargers{margin-top:2px}#sheet-parking .park-source{margin:2px 0 8px;font-size:11px;color:var(--dim)}#sheet-parking .park-source+.park-now{margin-top:0}#sheet-parking .park-source a{color:inherit}#sheet-parking .park-rates{grid-template-columns:8.75rem 1fr}#sheet-parking .dir-asof a{color:inherit}.arrivals-head{margin:6px 0 8px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--dim)}ul.arrivals{list-style:none;margin:0;padding:0}ul.arrivals li{display:flex;align-items:center;gap:14px;padding:7px 0;border-top:1px solid var(--edge)}ul.arrivals li:first-child{border-top:0}ul.arrivals b.svc-badge{display:inline-flex;align-items:center;justify-content:center;min-width:52px;padding:5px 9px;border-radius:8px;font-size:14px;font-weight:800;letter-spacing:.02em;color:#fff;background:var(--dim)}ul.arrivals b.svc-badge.public{background:#6ea324}.arrival-times{display:flex;gap:14px;flex:1;align-items:flex-start}.arrival{flex:1;max-width:84px}.arrival-when{display:block;text-align:center;font-size:12px;font-weight:700;color:var(--ink);margin-bottom:2px}.arrival-bar{height:9px;border-radius:2px;overflow:hidden;border:1px solid rgba(20,40,55,.35);background:#fff}.arrival-bar i{display:block;height:100%;width:0;background:#2e9e4f}.arrival small{display:block;text-align:center;margin-top:2px;font-size:9.5px;letter-spacing:.03em;color:var(--dim)}.arrival-none{font-size:11.5px;line-height:1.4;color:var(--dim)}ul.arrivals li.unavailable .arrival-none{color:var(--dim)}.arrivals-foot{margin:6px 0 2px;font-size:11px;line-height:1.5;color:var(--dim)}#stop-icons{position:absolute;inset:0;overflow:visible;pointer-events:none}.stop-icon{position:absolute;left:0;top:0;display:grid;place-items:center;margin:-12px 0 0 -12px;width:24px;height:24px;border-radius:50%;color:#fff;background:var(--accent);border:2px solid rgba(255,255,255,.95);box-shadow:0 2px 6px #14283766;pointer-events:auto;cursor:pointer;z-index:11;transition:border-color .16s ease,box-shadow .16s ease,width .16s ease,height .16s ease,margin .16s ease}.stop-icon .material-symbols-outlined{font-size:15px!important;color:#fff;font-variation-settings:"FILL" 0,"wght" 400,"GRAD" 0,"opsz" 20}.stop-icon:hover{border-color:var(--ntu-gold)}.stop-icon.on{width:30px;height:30px;margin:-15px 0 0 -15px;border-color:var(--ntu-gold);box-shadow:0 0 0 3px #e6a40061,0 3px 10px #14283773;z-index:14;opacity:1!important}.stop-icon.on .material-symbols-outlined{font-size:18px!important}body.night .stop-icon{border-color:#ffffffbf}body.night .stop-icon.on{border-color:var(--ntu-gold)}body.navigating .stop-icon{opacity:.35!important}body.navigating .stop-icon.on{opacity:1!important}body.tracing-route .stop-icon:not(.on){display:none!important}body.tracing-route .stop-label-hit{display:none!important}#park-icons{position:absolute;inset:0;overflow:visible;pointer-events:none}.park-icon{position:absolute;left:0;top:0;display:grid;place-items:center;margin:-12px 0 0 -12px;width:24px;height:24px;border-radius:50%;color:#fff;background:var(--ntu-blue);border:2px solid rgba(255,255,255,.95);box-shadow:0 2px 6px #14283766;pointer-events:auto;cursor:pointer;z-index:11;transition:background-color .16s ease,border-color .16s ease,box-shadow .16s ease,width .16s ease,height .16s ease,margin .16s ease}.park-icon.fill-available{background:#2e9e4f}.park-icon.fill-almost{background:#d4890a}.park-icon.fill-full{background:#c4473a}.park-icon svg{display:block}.park-icon.has-ev{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;width:auto;min-width:24px;padding:0 7px 0 5px;gap:3px;white-space:nowrap;border-radius:999px}.park-icon .park-p,.park-icon .park-ev{display:flex;align-items:center;justify-content:center;flex-shrink:0}.park-icon .park-p svg{width:14px;height:14px}.park-icon .park-ev{gap:1px}.park-icon .park-ev svg{width:11px;height:11px}.park-icon .park-ev-n{font-family:Plus Jakarta Sans,sans-serif;font-size:10px;font-weight:700;letter-spacing:-.03em;line-height:1;font-variant-numeric:tabular-nums}.park-icon:hover{border-color:var(--ntu-gold)}.park-icon.on{width:30px;height:30px;margin:-15px 0 0 -15px;border-color:var(--ntu-gold);box-shadow:0 0 0 3px #e6a40061,0 3px 10px #14283773;z-index:14;opacity:1!important}.park-icon.on svg{width:17px;height:17px}.park-icon.has-ev.on{width:auto;height:30px;padding:0 9px 0 6px;border-radius:999px;margin:-15px 0 0 -15px}.park-icon.has-ev.on .park-p svg{width:15px;height:15px}.park-icon.has-ev.on .park-ev svg{width:12px;height:12px}.park-icon.has-ev.on .park-ev-n{font-size:11px}body.night .park-icon{border-color:#ffffffbf}body.night .park-icon.on{border-color:var(--ntu-gold)}body.navigating .park-icon,body.tracing-route .park-icon{display:none!important}.stop-icon:before,.park-icon:before{content:"";position:absolute;inset:-10px}.stop-icon.on:after,.park-icon.on:after{content:attr(title);position:absolute;left:50%;top:calc(100% + 4px);transform:translate(-50%);white-space:nowrap;font-size:12.5px;font-weight:700;color:#0f1c24;paint-order:stroke fill;-webkit-text-stroke:3.4px rgba(255,255,255,.95);text-shadow:0 1px 3px rgba(255,255,255,.8);pointer-events:none}body.night .stop-icon.on:after,body.night .park-icon.on:after{color:#e6edf5;-webkit-text-stroke:3.4px rgba(6,10,16,.92);text-shadow:0 1px 3px rgba(6,10,16,.8)}.stop-label-hit{position:absolute;left:0;top:0;z-index:1;border:0;padding:0;background:transparent;pointer-events:auto;cursor:pointer}#edit-hud{position:absolute;inset:0;z-index:8;pointer-events:none}#edit-hud[hidden]{display:none}#edit-bar,#edit-side{pointer-events:auto}#edit-bar{position:absolute;inset:var(--safe-t) 0 auto;display:grid;grid-template-columns:168px minmax(0,1fr) auto;align-items:stretch;height:104px;color:#20262d;background:#f4f5f6;border-bottom:1px solid #cfd3d7;box-shadow:0 4px 14px #171f2a26}.edit-icon-sprite{position:absolute;width:0;height:0;overflow:hidden}#edit-title{display:flex;align-items:center;gap:10px;min-width:0;padding:0 14px;color:#fff;background:var(--ntu-navy)}#edit-title>.material-symbols-outlined{font-size:28px;flex:none;font-variation-settings:"FILL" 0,"wght" 400,"GRAD" 0,"opsz" 24}#edit-title>span{display:flex;min-width:0;flex-direction:column}#edit-title b{font-size:14px;line-height:1.15;white-space:nowrap}#edit-title small{color:#ffffffb8;font-size:11px;line-height:1.3}#edit-tools{display:flex;min-width:0;overflow-x:auto;scrollbar-width:thin;scrollbar-color:#b8bec4 transparent}.edit-tool-group{position:relative;display:grid;grid-template-rows:78px 25px;flex:none;padding-inline:7px;border-inline-end:1px solid #d7dade}.edit-tool-group:last-child{border-inline-end:0}.edit-tool-buttons{display:flex;align-items:center;gap:2px;padding-top:5px}.edit-group-label{display:grid;place-items:center;color:#59636d;border-top:1px solid #e0e2e4;font-size:11px;font-weight:600}#edit-bar button{display:inline-flex;align-items:center;justify-content:center;color:#343b43;border:0;border-radius:7px;background:transparent;font:650 11px/1 var(--font);cursor:pointer;white-space:nowrap;transition:background .16s ease-out,color .16s ease-out,box-shadow .16s ease-out}#edit-tools button,.edit-history button{width:58px;height:68px;flex-direction:column;gap:7px;padding:6px 4px}#edit-bar button .material-symbols-outlined{font-size:26px;flex:none;font-variation-settings:"FILL" 0,"wght" 400,"GRAD" 0,"opsz" 24}#edit-bar button:not(.active):hover:not(:disabled),#edit-transform button:hover:not(:disabled){background:#eceef0}#edit-bar button.active{color:var(--ntu-navy);background:#e1e5f5;box-shadow:inset 0 0 0 1px #b9c0e3}#edit-bar button.active .material-symbols-outlined{font-variation-settings:"FILL" 1,"wght" 400,"GRAD" 0,"opsz" 24}#edit-acts{display:grid;grid-template-columns:auto 142px;grid-template-rows:78px 25px;padding-inline:7px;border-inline-start:1px solid #d7dade;background:#eef0f2}.edit-history{display:flex;align-items:center;gap:2px;padding-top:5px}#edit-acts button[data-act=commit]{align-self:center;width:132px;height:64px;margin-inline-start:5px;flex-direction:column;gap:6px;color:#fff;background:var(--ntu-red);box-shadow:0 3px 9px #780f2a3d}#edit-acts button[data-act=commit] .material-symbols-outlined{font-size:24px}#edit-acts button[data-act=commit]:hover:not(:disabled){background:#bb1238}#edit-acts button[data-act=discard]{color:#8e2940}#edit-bar button:disabled,#edit-transform button:disabled{cursor:not-allowed;opacity:.5}#edit-status{grid-column:1 / -1;display:grid;place-items:center;color:#59636d;border-top:1px solid #d7dade;font-size:11px;font-variant-numeric:tabular-nums}#edit-status[data-state=dirty]{color:var(--ntu-navy);font-weight:700}#edit-status[data-state=busy]{color:#8a5a00}#edit-status[data-state=error]{color:#b20f35;font-weight:700}#edit-side{position:absolute;left:12px;bottom:calc(12px + var(--safe-b));width:min(340px,calc(100vw - 24px));max-height:calc(100vh - 150px);overflow:auto;padding:16px;color:#20262d;background:#fafaf8f7;border-radius:14px;box-shadow:0 8px 28px #171f2a2e}#edit-side[hidden]{display:none}#edit-inspect{display:flex;flex-direction:column;min-width:0;gap:3px}#edit-inspect b{overflow-wrap:anywhere;font-size:16px;line-height:1.25}#edit-inspect span{overflow:hidden;color:#59636d;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.edit-lock{color:var(--ntu-red);font-size:12px;margin-top:4px}#edit-note{margin:10px 0 0;color:#535d67;font-size:12px;line-height:1.45}#edit-help{margin:12px 0 0;padding-top:10px;color:#59636d;border-top:1px solid #e0e3e6;font-size:11px;line-height:1.5}#edit-transform,#edit-brush-controls{display:grid;gap:9px;margin-top:14px;padding-top:13px;border-top:1px solid #e0e3e6}#edit-transform[hidden],#edit-brush-controls[hidden],#edit-rebuild-details[hidden]{display:none}#edit-transform label{display:flex;align-items:center;justify-content:space-between;gap:12px;color:#535d67;font-size:12px}#edit-transform label span{display:flex;align-items:center;gap:5px;color:#59636d}#edit-transform input{width:86px;height:34px;padding:0 8px;color:#20262d;background:#fff;border:1px solid #cfd4d8;border-radius:8px;font:650 12px/1 var(--font);font-variant-numeric:tabular-nums}#edit-transform button{min-height:34px;color:#535d67;background:#f0f1f2;border:0;border-radius:8px;font:650 12px/1 var(--font);cursor:pointer}#edit-brush-controls label{display:flex;justify-content:space-between;color:#535d67;font-size:12px;font-weight:650}#edit-brush-controls output{color:var(--ntu-navy);font-variant-numeric:tabular-nums}#edit-brush-controls input[type=range]{width:100%;margin:-2px 0 2px;accent-color:var(--ntu-navy)}#edit-terrain-readout{color:#59636d;font-size:11px;line-height:1.4}#edit-rebuild-details{margin-top:12px;color:#8e2940;font-size:11px}#edit-rebuild-details summary{cursor:pointer;font-weight:700}#edit-rebuild-log{max-height:160px;margin:8px 0 0;overflow:auto;color:#454b52;font:10px/1.45 ui-monospace,SFMono-Regular,Consolas,monospace;white-space:pre-wrap}#edit-gizmo[hidden],#edit-gizmo [hidden]{display:none}#edit-building-box,#edit-gizmo{pointer-events:none}.edit-box-edge{fill:none;stroke:#119cff;stroke-width:2.5;stroke-linecap:round;vector-effect:non-scaling-stroke;filter:drop-shadow(0 1px 1px rgba(0,25,55,.65))}.edit-box-ground{stroke-dasharray:5 4;opacity:.72}#edit-gizmo-pivot{fill:#f7fbff;stroke:#18375b;stroke-width:2;vector-effect:non-scaling-stroke;pointer-events:all;cursor:move;touch-action:none}.edit-axis{fill:none;stroke-width:5;stroke-linecap:round;vector-effect:non-scaling-stroke;pointer-events:stroke;cursor:grab;touch-action:none;filter:drop-shadow(0 1px 1px rgba(0,0,0,.7))}.edit-axis:hover,.edit-axis:active{stroke-width:7}.edit-axis-x{stroke:#e5484d}.edit-axis-z{stroke:#2589f5}#edit-arrow-x path{fill:#e5484d}#edit-arrow-z path{fill:#2589f5}.edit-rotate-ring{fill:none;stroke:#19a76f;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;pointer-events:stroke;cursor:grab;touch-action:none;filter:drop-shadow(0 1px 1px rgba(0,0,0,.72))}.edit-rotate-ring:hover,.edit-rotate-ring:active{stroke:#31d392;stroke-width:8}#edit-bar button:focus-visible,#edit-transform button:focus-visible,#edit-transform input:focus-visible,#edit-brush-controls input:focus-visible,#edit-rebuild-details summary:focus-visible{outline:2px solid var(--ntu-navy);outline-offset:2px}#edit-overlay{position:absolute;inset:0;z-index:7;pointer-events:none;color:var(--ntu-navy);overflow:visible}.edit-ov{fill:#181c621f;stroke:var(--ntu-navy);stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 1px #fff)}.edit-ov-hover{stroke-width:1.75}.edit-ov-select{fill:#181c620f;stroke-width:2.75}polyline.edit-ov{fill:none;stroke-width:4}polyline.edit-ov-select{stroke-width:6}.edit-ov-hide{stroke:var(--ntu-red);fill:none}#edit-brush{fill:#56844066;stroke:#3d6a32;stroke-width:2;vector-effect:non-scaling-stroke}#edit-brush.pave{fill:#48484c73;stroke:#2c2c30}#edit-brush.terrain{fill:#d3a54252;stroke:#815c12}#edit-hover-name{position:fixed;left:0;top:0;z-index:10;pointer-events:none;background:var(--panel);border:1px solid var(--edge);border-radius:8px;padding:4px 8px;font-size:12px;font-weight:600;color:var(--ink);white-space:nowrap;backdrop-filter:blur(10px)}body.night #edit-overlay{color:#e8eef6}body.night .edit-ov{fill:#e8eef61f;stroke:#e8eef6}body.night .edit-ov-select{fill:#e8eef60f}body.night #edit-hover-name{background:#121820e0;color:#e8eef6;border-color:#ffffff1f}body.edit-paint #view{cursor:none}body.edit-draw #view{cursor:crosshair}body.edit-hot #view{cursor:pointer}@media(max-width:980px){#edit-bar{grid-template-columns:minmax(0,1fr) auto}#edit-title{display:none}}@media(max-width:680px){#edit-bar{inset-inline:8px;grid-template-columns:minmax(0,1fr);gap:7px}#edit-tools{padding-bottom:2px}#edit-acts{grid-template-columns:repeat(3,auto) minmax(126px,1fr)}#edit-status{grid-column:1 / -1}#edit-side{inset-inline:8px;bottom:calc(8px + var(--safe-b));width:auto;max-height:42vh}#edit-help{display:none}}@media(prefers-reduced-motion:reduce){#edit-bar button{transition:none}}@media(pointer:coarse){input,textarea,select,#search-input,.dir-input{font-size:16px}}.travel-modes{display:flex;gap:4px;padding:4px;border-radius:999px;background:#6f899b21}#trip>.travel-modes{margin-bottom:14px}.travel-mode{display:flex;align-items:center;gap:0;flex:1;min-width:0;min-height:44px;padding:0 10px;border:0;border-radius:999px;background:transparent;color:var(--dim);font:inherit;font-size:12.5px;font-weight:600;letter-spacing:-.01em;white-space:nowrap;cursor:pointer}.travel-mode[aria-pressed=true]{background:#fff;color:var(--ink);box-shadow:0 1px 5px #1c33451a}.travel-mode:focus-visible{outline:2px solid #292873;outline-offset:2px}.travel-lead{flex:1 1 0;min-width:0;pointer-events:none;transition:flex-grow .34s cubic-bezier(.16,1,.3,1)}.travel-main{display:flex;align-items:center;gap:6px;flex:0 0 auto}.travel-main .material-symbols-outlined{font-size:20px}.travel-label{min-width:0}.travel-time{flex:1 1 0;min-width:0;display:flex;justify-content:flex-end;opacity:0;color:inherit;font-size:11.5px;font-weight:700;pointer-events:none;transition:opacity .22s ease .08s}.travel-mode.has-time .travel-lead{flex-grow:0}.travel-mode.has-time .travel-time{opacity:1}@media(prefers-reduced-motion:reduce){.travel-lead,.travel-time{transition:none}#search,.search-panel,#search-results,#suggest,.field:after{transition:none}}.trip-mode-hint{margin:-6px 4px 14px;color:var(--dim);font-size:12px}.trip-mode-hint[hidden]{display:none}.route-way.vertical i{width:30px;height:30px;display:grid;place-items:center;color:#fff;background:#246bff;border:2px solid white}.route-way.vertical span{transform:translate(22px,-50%);color:#24272d;background:#fff;padding:5px 9px;font-weight:600}.route-way.vertical.current i{box-shadow:0 0 0 5px #246bff2e,0 2px 6px #19233240}.step-icon.transfer{color:#fff;background:#246bff;border-radius:9px}.step-upcoming{margin-top:9px;font-size:12px;line-height:1.5;color:var(--dim)}.step-icon.transfer .material-symbols-outlined{color:currentColor}body.navigating #sheet-classes,body.navigating #floors-list{display:none}.route-way span{max-width:min(240px,62vw);overflow:hidden;text-overflow:ellipsis}
