:root{--bg:#f4f7f6;--card:#fff;--ink:#12302c;--muted:#5f7570;--teal:#006b5e;--teal-2:#00594e;--mint:#dff1e8;--mint-2:#eaf6f0;--field:#f4f7f6;--line:#dde6e3;--mapbg:#e9f0ed;--orange:#f2a15a;--stairs:#f6ead6;--lift:#dce8ee;--r:14px;color:var(--ink);-webkit-font-smoothing:antialiased;font-family:Manrope,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html,body,#root{background:var(--bg);height:100%;margin:0}button,input{font:inherit;color:inherit}button{cursor:pointer;text-align:left;touch-action:manipulation;-webkit-tap-highlight-color:transparent;background:0 0;border:none;padding:0}button:disabled{cursor:default;opacity:.55}button:focus-visible,input:focus-visible{outline:2px solid var(--teal);outline-offset:2px}h1,h2,h3,p{margin:0}h1{letter-spacing:-.4px;font-size:30px;font-weight:800;line-height:1.15}h2,h3{font-size:20px;font-weight:700}.muted{color:var(--muted)}.center{text-align:center}.loading{color:var(--muted);padding:40px}.eyebrow{letter-spacing:.4px;color:var(--teal);font-size:11px;font-weight:800}.eyebrow.muted{color:var(--muted)}.ico{flex:none;width:22px;height:22px}.pri,.sec{text-align:center;border-radius:12px;justify-content:center;align-items:center;width:100%;min-height:48px;padding:0 16px;font-size:15px;font-weight:700;display:flex}.pri{background:var(--teal);color:#fff}.sec{background:var(--mint);color:var(--teal)}.ghost{background:var(--card);color:var(--ink);border-radius:12px;align-self:flex-start;padding:12px 34px;font-weight:600}.field{background:var(--field);border:1px solid var(--line);border-radius:var(--r);flex-direction:column;gap:4px;width:100%;padding:14px 16px;display:flex}.f-label{color:var(--muted);letter-spacing:.3px;font-size:11px;font-weight:700}.f-value{font-size:15px;font-weight:500}.f-input:focus-visible{outline:none}.field:focus-within{border-color:var(--teal)}.f-input{background:0 0;border:none;outline:none;width:100%;padding:0;font-size:16px;font-weight:500}.field .chips{margin-top:6px}.place,.option{background:var(--card);border:1px solid var(--line);border-radius:var(--r);width:100%;color:var(--ink);align-items:center;gap:14px;padding:16px;display:flex}.place .ico,.option .ico{color:var(--teal)}.place span,.option span{flex-direction:column;gap:4px;min-width:0;display:flex}.place b,.option b{font-size:15px;font-weight:700}.place small,.option small{color:var(--muted);font-size:12.5px}.place.sel,.option.sel{background:var(--mint);border-color:#0000}.option.sel b{color:var(--teal)}.option{background:var(--field);border-color:#0000}.info{background:var(--mint);border-radius:var(--r);flex-direction:column;gap:6px;padding:16px;display:flex}.info b{color:var(--teal);font-size:14.5px;font-weight:700}.info p{color:var(--muted);font-size:12.5px;line-height:1.45}.kv{font-size:14px}.kv b{margin-right:6px;font-weight:800}.chips{gap:8px;display:flex}.chips button{text-align:center;background:var(--card);color:var(--muted);border-radius:10px;flex:1;padding:10px 12px;font-size:14px;font-weight:600}.chips button.on{background:var(--mint);color:var(--teal)}.list{flex-direction:column;gap:10px;display:flex}.stackv{flex-direction:column;gap:12px;display:flex}.dirs{flex-direction:column;gap:10px;margin-top:8px;display:flex}.dirs ol{flex-direction:column;gap:14px;margin:0;padding:0;list-style:none;display:flex}.dirs li{flex-direction:column;gap:3px;display:flex}.dirs li b{font-size:14.5px;font-weight:700}.dirs li small{color:var(--muted);font-size:12.5px}.dirs li.cur b{color:var(--teal)}.transfer{background:var(--mint);border-radius:var(--r);color:var(--teal);flex-direction:column;gap:14px;padding:20px 22px;display:flex}.transfer .tr-row{color:var(--ink);justify-content:space-between;align-items:center;max-width:270px;font-size:20px;font-weight:600;display:flex}.transfer .tr-row .ico{color:var(--teal)}.transfer p{color:var(--muted);font-size:14px}.arrived{flex-direction:column;gap:8px;margin:12px 0;display:flex}.arrived .badge{background:var(--mint);width:64px;height:64px;color:var(--teal);border-radius:50%;place-items:center;margin-bottom:16px;display:grid}.arrived .badge .ico{width:28px;height:28px}.camera{color:#fff;background:#12302c;border-radius:22px;flex-direction:column;justify-content:center;align-items:center;gap:36px;padding:40px;display:flex}.camera .frame-box{aspect-ratio:1;border:2px solid #e4efe9;border-radius:22px;place-items:center;width:300px;max-width:70%;height:300px;font-size:30px;font-weight:600;display:grid}.camera.small{padding:44px 20px}.camera.small .frame-box{width:210px;height:210px}.corners{background:linear-gradient(#fff,#fff) 0 0/28px 2px no-repeat,linear-gradient(#fff,#fff) 0 0/2px 28px no-repeat,linear-gradient(#fff,#fff) 100% 0/28px 2px no-repeat,linear-gradient(#fff,#fff) 100% 0/2px 28px no-repeat,linear-gradient(#fff,#fff) 0 100%/28px 2px no-repeat,linear-gradient(#fff,#fff) 0 100%/2px 28px no-repeat,linear-gradient(#fff,#fff) 100% 100%/28px 2px no-repeat,linear-gradient(#fff,#fff) 100% 100%/2px 28px no-repeat;width:92px;height:92px;position:relative}.corners:after{content:"";border:2px solid #fff;border-radius:2px;position:absolute;inset:28px}.mapview{position:absolute;inset:0}.mapview svg{touch-action:none;cursor:grab;width:100%;height:100%;display:block}.mapview svg:active{cursor:grabbing}.m-slab{fill:#fff}.m-slab-side{fill:#b9d6cb}.m-zone.stairs{fill:var(--stairs)}.m-zone.lift{fill:var(--lift)}.m-zone.dest{fill:#dcefe5}.m-wall{stroke:#a6c8bb;stroke-width:.02px;stroke-linejoin:round}.m-wall.s0{fill:#c6ddd4}.m-wall.s1{fill:#93bba9}.m-wall.s2{fill:#b0cfc3}.flat .m-wall.s0{fill:#a9cbbe}.flat .m-slab{stroke:#c6ddd4;stroke-width:.15px}.m-label{fill:#5f7570;text-anchor:middle;pointer-events:none;font-family:Manrope,sans-serif;font-weight:500}.m-route{fill:none;stroke:var(--teal);stroke-linecap:round;stroke-linejoin:round}.m-here{fill:var(--teal)}.m-here-halo{fill:#006b5e24}.m-pin{fill:var(--orange);stroke:#fff;stroke-width:.001px}.m-pin-dot{fill:#12302c}.m-callout{fill:#fff;filter:drop-shadow(0 1px 2px #12302c1f)}.m-callout-t{fill:var(--teal);pointer-events:none;font-family:Manrope,sans-serif;font-weight:600}.desk{flex-direction:column;height:100%;display:flex}.topnav{background:#fff;border-bottom:1px solid #e6ecea;flex:none;align-items:center;gap:78px;height:72px;padding:0 24px;display:flex}.brand{color:var(--ink);align-items:center;gap:12px;font-size:21px;font-weight:700;display:flex}.logo{background:var(--teal);border-radius:9px;place-items:center;width:36px;height:36px;display:grid}.logo svg{width:22px;height:22px}.venue{flex-direction:column;gap:2px;display:flex}.venue b{font-size:14.5px;font-weight:700}.venue small{color:var(--muted);font-size:12.5px}.topnav nav{gap:10px;margin-left:auto;display:flex}.topnav nav button{color:var(--muted);border-radius:12px;padding:11px 26px;font-size:14.5px;font-weight:600}.topnav nav button.on{background:var(--mint);color:var(--teal)}.desk-main{flex:1;grid-template-columns:380px 1fr;gap:24px;min-height:0;padding:24px;display:grid}.panel{border:1px solid var(--line);background:#fff;border-radius:22px;flex-direction:column;min-height:0;display:flex}.panel .scroll{flex-direction:column;flex:1;gap:12px;padding:28px 23px 12px;display:flex;overflow-y:auto}.panel h1{font-size:30px}.panel .lead{margin-bottom:18px;font-size:14.5px}.panel .back{color:var(--teal);align-self:flex-start;margin:-8px 0 4px;font-size:13px;font-weight:600}.panel .stackv>.eyebrow{margin-top:16px}.panel h3{margin-top:18px}.actions{flex-direction:column;flex:none;gap:14px;padding:12px 23px 24px;display:flex}.maparea{background:var(--mapbg);border-radius:22px;flex-direction:column;min-width:0;min-height:0;padding:22px 24px 20px;display:flex;position:relative;overflow:hidden}.map-head{z-index:2;justify-content:space-between;align-items:flex-start;display:flex;position:relative}.map-head h2{font-size:20px}.map-head p{margin-top:6px;font-size:12.5px}.map-head .chips button{flex:none;min-width:54px}.route-floor{align-items:center;gap:24px;display:flex}.pill{background:var(--mint);color:var(--teal);border-radius:10px;padding:10px 34px;font-size:14.5px;font-weight:700}.view-chips{z-index:2;gap:12px;margin-top:22px;display:flex;position:relative}.view-chips button{background:#fff;border-radius:10px;padding:10px 28px;font-size:14px;font-weight:600}.view-chips button.on{background:var(--mint);color:var(--teal)}.hero{z-index:2;pointer-events:none;margin-top:30px;position:relative}.hero h2{letter-spacing:-.3px;font-size:30px;font-weight:800;line-height:1.35}.hero p{margin-top:6px;font-size:12.5px}.banner{z-index:2;color:var(--teal);background:#fff;border-radius:16px;align-items:flex-start;gap:18px;margin-top:30px;padding:18px 22px;display:flex;position:relative}.banner .ico{margin-top:3px}.banner div{flex-direction:column;gap:6px;display:flex}.banner b{color:var(--ink);font-size:20px;font-weight:700}.banner small{color:var(--muted);font-size:12.5px}.banner.mint{background:var(--mint);max-width:610px;padding:16px}.banner.mint b{color:var(--teal);font-size:14.5px}.mapbox{flex:1;min-height:160px;margin:-40px -10px 0;position:relative}.summary{z-index:2;background:#fff;border-radius:16px;align-items:center;gap:36px;margin-bottom:22px;padding:18px 22px;display:flex;position:relative}.summary .big{color:var(--teal);font-size:28px;font-weight:800}.summary div{flex-direction:column;flex:1;gap:6px;display:flex}.summary b{font-size:14.5px}.summary small{color:var(--muted);font-size:12.5px}.summary .right{color:var(--teal);margin-right:110px;font-weight:700}.legend{z-index:2;color:var(--muted);background:#fff;border-radius:14px;align-items:center;gap:0;padding:14px 18px;font-size:12.5px;display:flex;position:relative}.legend span{align-items:center;gap:8px;width:133px;display:flex}.legend em{margin-left:auto;font-style:normal}.d{border-radius:50%;width:9px;height:9px;display:inline-block}.d.route{background:var(--teal)}.d.dest{background:var(--orange)}.d.stairs{background:var(--stairs)}.d.lift{background:var(--lift)}.d.rooms{background:#dcefe5}.qr-pane{flex-direction:column;gap:28px;height:100%;display:flex}.qr-head h2{font-size:20px}.qr-head p{margin-top:8px;font-size:14px}.qr-pane .camera{flex:0 500px;width:min(800px,92%);margin:24px auto 0}.qr-pane .camera p{font-size:14px}@media (hover:hover){.pri:hover:not(:disabled){background:var(--teal-2)}.sec:hover:not(:disabled){filter:brightness(.97)}.place:hover,.option:hover,.field:is(button):hover{border-color:#c4d6d0}.topnav nav button:hover:not(.on),.chips button:hover:not(.on),.view-chips button:hover:not(.on){color:var(--teal)}}@media (width<=1180px){.topnav{gap:32px}.topnav nav button{padding:11px 16px}.desk-main{grid-template-columns:340px 1fr}.legend span{width:auto;margin-right:22px}.summary .right{margin-right:0}}.mob{background:var(--bg);height:100dvh;padding-top:env(safe-area-inset-top);flex-direction:column;display:flex}.mhead{background:#fff;flex:none;align-items:center;gap:12px;height:54px;padding:0 24px;display:flex}.mhead .back{color:var(--teal);margin-left:-8px;padding:0 4px 3px;font-size:26px}.mbrand{color:var(--teal);font-size:21px;font-weight:700}.mhead .link{color:var(--muted);margin-left:auto;font-size:14.5px;font-weight:500}.mmain{flex-direction:column;flex:1;gap:14px;padding:26px 24px 12px;display:flex;overflow-y:auto}.mmain h1{letter-spacing:-.2px;font-size:26px;font-weight:700}.mmain .lead{margin-top:-8px;margin-bottom:6px;font-size:13px}.mmain .chips button{padding:11px 6px}.mcard{background:var(--mapbg);border-radius:20px;flex-direction:column;flex:1 0 210px;max-height:300px;margin:0 -8px;display:flex;position:relative}.mcard .mapbox{flex:1;margin:0}.maplabel{letter-spacing:.3px;color:var(--muted);font-size:9.5px;font-weight:700;position:absolute;bottom:12px;left:14px}.mmain .stackv>.eyebrow{margin-top:6px}.mob .actions{background:var(--bg);gap:12px;padding:10px 24px 14px}.mob .option{border-color:var(--line);background:#fff}.mob .option.sel{background:var(--mint);border-color:#0000}.tabs{padding:10px 14px calc(14px + env(safe-area-inset-bottom));background:#fff;flex:none;justify-content:space-between;gap:8px;display:flex}.tabs button{text-align:center;max-width:112px;color:var(--muted);border-radius:12px;flex:1;padding:12px 0;font-size:14.5px;font-weight:500}.tabs button.on{background:var(--mint);color:var(--muted);font-weight:600}@media (height<=700px){.mcard{flex-basis:170px}.mmain{padding-top:18px}}
