:root{font-family:"Avenir Next",Avenir,"Segoe UI",sans-serif;color:#233c34;background:#dcd6c9;font-synthesis:none;--green:#294d41;--cream:#f7f3e9;--muted:#59685f;--line:#cdcbbd;--orange:#eab970}*{box-sizing:border-box}body{margin:0;overflow:hidden}button,a,input,summary{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;border:1px solid #b9bfb2;background:var(--cream);color:#294336;border-radius:8px;min-height:42px;padding:9px 14px;transition:background .15s,box-shadow .15s}button:hover{background:#e7e6d8}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #c2843d;outline-offset:3px}button:disabled{cursor:default;opacity:.5}button[aria-pressed=true]{background:#ead2a2;border-color:#b98a48;color:#493510;box-shadow:inset 0 0 0 1px #bd955b}button.primary{background:var(--green);color:#fff9e8;border-color:var(--green)}button.primary:hover{background:#1e3e33}[hidden]{display:none!important}#world{display:block;width:100vw;height:100dvh;touch-action:none;outline:none}.topbar{position:fixed;inset:0 0 auto;display:flex;align-items:center;justify-content:space-between;padding:26px 34px;pointer-events:none;background:linear-gradient(#eee8dfed,#eee8dfb0,transparent);gap:16px}.topbar>*{pointer-events:auto}.brand{display:flex;align-items:center;gap:12px;color:#243e33;text-decoration:none;font-size:19px;font-weight:650;letter-spacing:-.5px;line-height:1.2}.brand-icon{display:grid;place-items:center;width:43px;height:46px;border:1px solid #677c6c;border-radius:15px 15px 4px 4px;font-size:29px}.brand small{display:block;font-size:8px;letter-spacing:2.3px;font-weight:600;margin-top:6px}.top-actions{display:flex;align-items:center;gap:9px}.connection{font-size:11px;padding:9px 11px;border-radius:20px;background:#f7f3e9e8;display:flex;align-items:center;gap:7px;max-width:155px}.connection:before{content:"";width:6px;height:6px;flex:none;border-radius:50%;background:#c38d4a}.connection.live:before{background:#458567}.top-actions button{background:#f7f3e9dd;font-size:11px;min-height:36px;padding:8px 11px}.welcome{position:fixed;left:6%;top:27%;max-width:340px;padding:32px;background:#f7f3e9f2;border:1px solid #d7d1bf;border-radius:3px;box-shadow:0 12px 70px #3c37251a}.eyebrow{font-size:9px;letter-spacing:1.8px;font-weight:700;color:#6d7865}.welcome h1{font-family:Georgia,serif;font-size:59px;line-height:1.06;letter-spacing:-2px;font-weight:400;margin:25px 0 16px}.welcome p{font-size:14px;line-height:1.8;color:#5b6658;margin-bottom:26px}.welcome .primary{width:100%;display:flex;justify-content:space-between}.welcome-note{display:block;text-align:center;margin-top:15px;font-size:10px;color:#75806e}.location-card{position:fixed;left:34px;top:112px;padding:15px 20px;border-left:2px solid #60816a;background:#f7f3e9df;min-width:180px;pointer-events:none}.location-card>div{display:flex;align-items:center;gap:16px;margin-top:4px}.location-card strong{font-family:Georgia,serif;font-size:44px;line-height:1.1;font-weight:400}.location-card #place-label{font-size:11px;line-height:1.6}.location-card small{font-size:10px;color:#707c6b}#reticle{position:fixed;top:50%;left:50%;color:#fff;font-size:30px;line-height:0;text-shadow:0 0 3px #000;pointer-events:none}.announcement{position:fixed;left:50%;bottom:115px;transform:translateX(-50%);background:#243e34ed;color:#fff8e5;border-radius:6px;padding:12px 20px;font-size:12px;max-width:min(500px,90vw);text-align:center;line-height:1.5;pointer-events:none;opacity:0;transition:opacity .2s}.announcement.show{opacity:1}.controls,.menu{position:fixed;right:28px;top:110px;bottom:100px;width:328px;overflow:auto;background:#f8f4eafa;border:1px solid #c9c9b8;border-radius:10px;padding:22px;box-shadow:0 16px 60px #1e30232e}.panel-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px}.panel-heading h2{margin:4px 0 0;font-size:23px;letter-spacing:-.7px;font-weight:500}.icon-button{min-width:34px;min-height:34px;padding:2px 8px;font-size:24px;line-height:1}.car-status{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-radius:5px;background:#203b33;color:#eec58b;margin-bottom:10px;gap:12px}.car-status strong{font-family:monospace;font-size:27px;font-weight:400}.car-status small{font-size:10px;color:#c8d4b8;line-height:1.6;display:block}.car-status.warning{background:#682e26;color:#ffdfb0}.stops{font-size:11px;line-height:1.5;color:#63705f;min-height:31px;margin:8px 0 12px}.floor-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.floor-grid button{font-family:monospace;font-size:15px;min-height:40px;padding:7px}.floor-grid button.current{border-bottom:3px solid #638369}.door-actions,.hall-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:15px}.door-actions button{font-size:12px}.door-actions small{display:block;font-size:9px;margin-top:4px;opacity:.75}.panel-note{font-size:10px;line-height:1.6;color:#78816e;margin:14px 0 0}.hall-actions button{font-size:23px}.hall-actions small{display:block;font-size:10px;margin-top:3px}.call-state{font-size:12px;line-height:1.7;color:#66725e;margin-top:16px}.menu{width:360px}.menu p{font-size:12px;line-height:1.7;color:#5d6b5b}.menu-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:20px 0}.menu-actions button{font-size:11px}.menu details{font-size:11px;border-top:1px solid var(--line);padding:13px 0;line-height:1.7}.menu a{color:#315b48}.menu pre{font-size:10px;white-space:pre-wrap;overflow-wrap:anywhere}.menu .volume{font-size:12px;display:flex;align-items:center;gap:20px;margin-bottom:20px}.menu .leave{width:100%;margin-top:12px}.walkbar{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:12px;padding:10px;background:#f7f3e9ed;border:1px solid #cecebb;border-radius:12px;white-space:nowrap}.walk-hint{font-size:10px;display:flex;align-items:center;gap:10px;padding:0 9px}kbd{font-family:inherit;font-size:9px;letter-spacing:1px;background:#e7e8db;color:#435842;border:1px solid #c9cdbc;border-radius:4px;padding:4px 6px}.walkbar .primary{display:flex;align-items:center;gap:30px;font-size:12px}.walkbar .primary kbd{background:#43624e;color:#edf3dc;border-color:#607959}#turn{font-size:16px}#turn span{font-size:10px}.touch-walk{display:none;position:fixed;left:20px;bottom:25px;grid-template-columns:repeat(3,42px);grid-template-rows:repeat(2,42px);gap:4px}.touch-walk button{background:#f7f3e9cc;padding:2px;font-size:22px;touch-action:none;user-select:none}.touch-walk button:first-child{grid-column:2}.touch-walk button:nth-child(2){grid-column:1}.touch-walk button:nth-child(3){grid-column:2}.touch-walk button:nth-child(4){grid-column:3}
@media(pointer:coarse){.touch-walk{display:grid}.walk-hint{display:none}.walkbar{left:auto;right:18px;transform:none}.walkbar #turn{display:none}}
@media(max-width:700px){.topbar{padding:18px 16px;gap:8px}.brand{font-size:14px;gap:8px}.brand-icon{width:31px;height:36px;font-size:23px}.brand small{font-size:6px;letter-spacing:1.4px}.top-actions{gap:5px}.connection{font-size:9px;padding:8px}.top-actions button{font-size:10px;padding:8px;min-height:33px}#menu-button{font-size:16px}.welcome{left:22px;top:auto;bottom:70px;width:calc(100% - 44px);max-width:310px;padding:25px}.welcome h1{font-size:49px;margin-top:19px}.welcome p{font-size:13px;margin-bottom:22px}.location-card{left:16px;top:88px;padding:10px 14px;min-width:140px}.location-card strong{font-size:32px}.location-card .eyebrow{font-size:8px}.location-card #place-label{font-size:10px}.controls,.menu{right:12px;top:85px;bottom:96px;width:min(328px,calc(100vw - 24px));padding:18px}.menu{width:calc(100vw - 24px)}.panel-heading{margin-bottom:13px}.floor-grid{gap:5px}.floor-grid button{min-height:35px;font-size:14px}.car-status{padding:9px 12px}.stops{min-height:20px;margin:7px 0}.door-actions{margin-top:10px}.door-actions button{min-height:44px}.panel-note{margin-top:9px}.walkbar{bottom:20px;padding:7px;gap:6px}.walk-hint{display:none}.walkbar .primary{gap:12px;min-height:42px}.walkbar #turn{display:none}.walkbar{left:auto;right:14px;transform:none}.announcement{bottom:123px;font-size:11px;padding:10px 14px}.touch-walk{display:grid;left:14px;bottom:20px}.controls~.touch-walk{z-index:2}}
@media(max-height:650px){.controls,.menu{top:78px;bottom:80px}.floor-grid button{min-height:30px;padding:4px}.floor-grid{gap:4px}.location-card{top:90px}.walkbar{bottom:12px}.touch-walk{bottom:12px}.panel-note{display:none}.welcome{top:20%;bottom:auto}.welcome h1{font-size:40px}.welcome p{margin-bottom:15px}}
.controls{display:flex;flex-direction:column;overflow:hidden}.controls .panel-heading{flex:none}.controls #panel-content{flex:1;min-height:0;display:flex;flex-direction:column;overflow:auto}.controls .floor-grid{flex:1;min-height:0;overflow:auto;grid-auto-rows:38px;gap:5px;padding:2px}.controls .floor-grid button{min-height:36px}.controls .door-actions,.controls .panel-note,.controls .stops,.controls #car-display{flex:none}.controls .panel-note{margin-bottom:0}.controls .door-actions{padding-top:8px;border-top:1px solid #d5d4c5}.controls .car-status small{max-width:145px;text-align:right}.controls .car-status strong{white-space:nowrap}
@media(pointer:coarse){.controls .floor-grid{grid-auto-rows:44px}.controls .floor-grid button{min-height:42px}}
@media(max-height:650px){.controls .floor-grid{grid-auto-rows:34px}.controls .floor-grid button{min-height:32px}}
@media(min-width:701px) and (min-height:651px){.controls .floor-grid{grid-auto-rows:auto;grid-template-rows:repeat(9,minmax(28px,1fr));overflow:visible}.controls .floor-grid button{min-height:28px;padding:3px 6px}}
.controls:has(.hall-actions){bottom:auto;max-height:calc(100dvh - 210px)}
@media(max-width:700px){.brand{font-size:12px;flex-shrink:0;white-space:nowrap;gap:7px}.brand small{font-size:5.8px;letter-spacing:1.1px}.brand-icon{width:29px;height:34px}.connection{white-space:nowrap;font-size:9px}.top-actions button{white-space:nowrap}.controls .car-status small{max-width:138px}.controls:has(.hall-actions){max-height:calc(100dvh - 200px)}}
@media(max-width:360px){.brand-icon{display:none}.brand small{letter-spacing:1px}.topbar{gap:6px}.connection{padding:7px}.top-actions button{padding:7px}}
