.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}body.visitor-app{height:100dvh;min-height:100dvh;padding-top:0;overflow:hidden;background-image:none}.visitor-shell{position:relative;display:flex;flex-direction:column;height:100dvh;min-height:0;overflow:auto}.visitor-top{flex:0 0 auto;background:var(--surface);border-bottom:1px solid var(--border);box-shadow:var(--shadow);z-index:2}#route-bar{padding:var(--space-8) var(--space-12) var(--space-4)}.route-compact,.route-point,.route-points-toggle,.route-start,.route-steps-toggle,.visitor-flow .btn,.qr-button,.map-recenter,.sheet-handle,.sheet-close,.camera-close,.camera-torch,.camera-actions .btn,.camera-manual .btn,.camera-error-form .btn,.scan-banner .btn,.visitor-bottom .search-field{min-height:48px;min-width:48px}.route-compact{display:flex;align-items:center;width:100%;padding:var(--space-12) var(--space-16);text-align:left;font-weight:600;color:var(--text);background:var(--primary-soft);border:2px solid var(--primary);border-radius:var(--radius);cursor:pointer}.route-expanded{display:flex;flex-direction:column;gap:var(--space-8)}.route-points-toggle{width:100%;padding:var(--space-8) var(--space-12);text-align:left;font:inherit;font-weight:700;color:var(--text);background:var(--primary-soft);border:2px solid var(--primary);border-radius:var(--radius);cursor:pointer}.route-points-body[hidden]{display:none!important}.route-points{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-8)}.route-point{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:2px;width:100%;padding:var(--space-8) var(--space-12);text-align:left;background:var(--surface);color:var(--text);border:2px solid var(--text-muted);border-radius:var(--radius);cursor:pointer}.route-point.is-empty .route-value{color:var(--text-muted);font-weight:400}.route-kicker{font-size:16px;font-weight:700;color:var(--primary)}.route-value{font-weight:600;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.route-start{width:100%}.route-meta{margin:0;font-weight:700;color:var(--primary)}.route-meta[hidden]{display:none!important}.route-steps{flex:1 1 100%;display:flex;flex-direction:column;gap:var(--space-4);min-width:0}.route-steps-toggle{width:100%;padding:var(--space-8) var(--space-12);text-align:left;font:inherit;font-weight:700;color:var(--text);background:var(--primary-soft);border:2px solid var(--primary);border-radius:var(--radius);cursor:pointer}.route-step-list{margin:0;padding:0 0 0 1.25rem;max-height:28dvh;overflow:auto}.route-step-list li{padding:var(--space-8) 0;font-weight:600}.route-step-list[hidden]{display:none!important}.visitor-flow.is-preview{flex-direction:column;align-items:stretch}.visitor-chrome{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-8);padding:var(--space-4) var(--space-8) var(--space-8);min-height:56px}.visitor-tools{display:flex;align-items:center;gap:var(--fab-gap);margin-left:auto;flex:0 0 auto}.visitor-chrome .role-bar{flex:1 1 auto;width:auto;max-width:calc(100% - 128px);min-width:0;padding:0;flex-wrap:wrap;gap:var(--space-4)}.visitor-chrome .segmented{min-width:0}.visitor-chrome .segmented-item{padding:var(--space-8)}.visitor-chrome .badge-homolog{letter-spacing:0;padding:var(--space-4) var(--space-8);white-space:normal;text-align:center;max-width:100%}.a11y-button,.qr-button{flex:0 0 auto;width:var(--fab-size);height:var(--fab-size);min-width:var(--fab-size);min-height:var(--fab-size);padding:0}.a11y-button{display:inline-flex;align-items:center;justify-content:center;color:var(--text);background:var(--surface);border:2px solid var(--text);border-radius:999px;cursor:pointer}.a11y-button svg,.qr-button svg{width:var(--fab-icon);height:var(--fab-icon)}.qr-button{display:inline-flex;align-items:center;justify-content:center;color:var(--primary);background:var(--surface);border:2px solid var(--primary);border-radius:999px;box-shadow:var(--shadow-soft);cursor:pointer}.visitor-main{position:relative;display:flex;flex-direction:column;flex:1 1 auto;min-width:0;min-height:12rem}.visitor-map{position:relative;flex:1 1 auto;min-height:12rem;background-color:var(--bg);background-image:linear-gradient(color-mix(in srgb,var(--primary) 7%,transparent) 1px,transparent 1px),linear-gradient(90deg,color-mix(in srgb,var(--primary) 7%,transparent) 1px,transparent 1px);background-size:24px 24px}.visitor-map>#visitor-map{position:absolute;top:0;right:0;bottom:0;left:0}.visitor-map .leaflet-container,html.dark .visitor-map .leaflet-container{width:100%;height:100%;background-color:transparent;background-image:none;font-family:var(--font-sans)}.map-recenter{position:absolute;right:max(var(--space-8),env(safe-area-inset-right));bottom:max(var(--space-8),env(safe-area-inset-bottom));z-index:500;width:auto;min-width:44px;min-height:44px;padding:var(--space-8) var(--space-12);box-shadow:var(--shadow)}.visitor-bottom{flex:0 0 auto;padding:var(--space-8) var(--space-12) var(--space-12);background:var(--surface);border-top:1px solid var(--border)}.visitor-bottom .search-field{cursor:pointer}.sheet-scrim,.camera-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1300;padding:0;border:0;background:color-mix(in srgb,var(--text) 45%,transparent);cursor:pointer}.visitor-sheet{z-index:1400;display:flex;flex-direction:column;gap:var(--space-8);height:90dvh;max-height:90dvh;overflow:hidden}.visitor-sheet[hidden],.sheet-scrim[hidden],.camera-overlay[hidden],.visitor-flow[hidden],.route-compact[hidden],.route-expanded[hidden],.category-chips[hidden]{display:none!important}.sheet-handle{display:flex;align-items:center;justify-content:center;width:100%;min-height:48px;padding:0;border:0;background:transparent;cursor:grab}.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-8)}.sheet-head h2{font-size:22px}.sheet-close{flex:0 0 auto;width:auto}.destination-query{flex:0 0 auto}.category-chips{display:flex;flex-wrap:nowrap;gap:var(--space-8);overflow-x:auto;flex:0 0 auto;padding-bottom:var(--space-4)}.visitor-sheet .chip{flex:0 0 auto;cursor:pointer}.visitor-sheet .chip[aria-pressed=true]{background:var(--primary);color:var(--on-primary)}.destination-count{flex:0 0 auto;color:var(--text-muted);font-weight:600}.sheet-body{flex:1 1 auto;min-height:0;overflow:auto;overscroll-behavior:contain}.sheet-message{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-12);padding:var(--space-8) 0}.sheet-message p{font-weight:600}.destination-list{display:flex;flex-direction:column}.destination-option{display:flex;align-items:center;gap:var(--space-12);width:100%;min-height:48px;padding:var(--space-8) var(--space-4);text-align:left;font:inherit;color:var(--text);background:transparent;border:0;border-bottom:1px solid var(--border);border-radius:0;cursor:pointer}.destination-option[aria-selected=true]{background:var(--primary-soft)}.destination-option[aria-selected=true] .destination-category,.destination-option[aria-selected=true] .destination-distance{color:var(--text)}.destination-copy{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:0}.destination-name{font-weight:600}.destination-category{display:inline-flex;align-items:center;gap:var(--space-4);color:var(--text-muted)}.destination-category svg{width:20px;height:20px;flex:0 0 auto}.destination-distance{margin-left:auto;font-weight:700;color:var(--primary);white-space:nowrap}.camera-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1600;display:block;padding:0;background:#0e1520;overflow:hidden}.camera-stage{position:relative;width:100%;height:100%;min-height:100%;overflow:hidden;color:var(--on-primary);background:#0e1520}.camera-video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;max-width:none;object-fit:cover;background:radial-gradient(circle at 50% 38%,color-mix(in srgb,var(--primary) 45%,transparent),transparent 46%),repeating-linear-gradient(0deg,rgba(255,255,255,.04) 0 1px,transparent 1px 28px),repeating-linear-gradient(90deg,rgba(255,255,255,.04) 0 1px,transparent 1px 28px),#0e1520}.camera-frame{position:absolute;left:50%;top:36%;width:min(240px,68vw);height:min(240px,68vw);transform:translate(-50%,-50%);border:4px solid var(--on-primary);border-radius:24px;box-shadow:0 0 0 200vmax #080c148c;background:transparent}.camera-hint{position:absolute;left:var(--space-16);right:var(--space-16);top:calc(36% + min(120px,34vw) + 24px);margin:0;text-align:center;font-size:22px;font-weight:700;line-height:1.3;color:var(--on-primary);text-shadow:0 1px 2px rgba(0,0,0,.85)}.camera-dock{position:absolute;left:0;right:0;bottom:0;z-index:2;display:flex;flex-direction:column;gap:var(--space-8);padding:var(--space-16);background:linear-gradient(transparent,#000000d1 36px)}.camera-status{display:flex;flex-direction:column;gap:var(--space-8);padding:var(--space-12);text-align:center;font-weight:700;color:var(--text);background:var(--surface);border:2px solid var(--danger);border-radius:var(--radius)}.camera-status[hidden]{display:none!important}.camera-status p{margin:0}.camera-manual{display:flex;flex-direction:column;gap:var(--space-8);padding:var(--space-12);color:var(--text);background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow)}.camera-manual[hidden]{display:none!important}.camera-manual-label{font-weight:700}.camera-actions{display:flex;flex-wrap:wrap;gap:var(--space-8)}.camera-actions .btn{flex:1 1 calc(50% - 8px);min-width:48px}.camera-close{flex:1 1 100%}.scan-banner{display:flex;flex-direction:column;gap:var(--space-8);margin:0 var(--space-12) var(--space-12);padding:var(--space-12);background:var(--danger-soft);border:2px solid var(--danger);border-radius:var(--radius)}.scan-banner[hidden]{display:none!important}.scan-banner p{margin:0;font-weight:700}.camera-error-form{display:flex;flex-direction:column;gap:var(--space-8);width:100%}.camera-error-form label{font-weight:700}.visitor-shell[data-state=ERRO_CAMERA] .visitor-flow{top:10dvh;bottom:auto;flex-direction:column;align-items:stretch}.visitor-map .leaflet-tooltip.you-label{background:var(--you-marker);color:var(--on-primary);border:0;border-radius:999px;font-weight:700;box-shadow:none}.visitor-map .leaflet-tooltip.you-label:before{border-right-color:var(--you-marker)}.visitor-flow{position:absolute;left:var(--space-8);right:var(--space-8);bottom:64px;z-index:600;display:flex;flex-wrap:wrap;gap:var(--space-8);align-items:center;padding:var(--space-12);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.flow-title,.flow-notice{flex:1 1 100%;font-weight:600}.visitor-map .leaflet-marker-icon.is-destination .cp-dot{background:var(--primary);box-shadow:0 0 0 8px var(--primary-soft)}.route-destination-icon{background:transparent;border:none}.route-dest-dot{display:block;width:22px;height:22px;border-radius:50%;background:var(--path-destination);border:3px solid var(--surface);box-shadow:0 0 0 6px var(--primary-soft)}.visitor-map .leaflet-tooltip.route-dest-label{background:var(--primary);color:var(--on-primary);border:0;border-radius:999px;font-weight:700;box-shadow:none}.visitor-map .leaflet-tooltip.route-dest-label:before{border-top-color:var(--primary)}.visitor-flow .btn{flex:1 1 auto;width:auto}.nav-banner{display:flex;flex-direction:column;gap:var(--space-8);padding:var(--space-12) var(--space-12) var(--space-4)}.nav-banner[hidden],.nav-notice[hidden],.nav-status[hidden],.arrival-card[hidden]{display:none!important}.nav-instruction{margin:0;font-size:22px;font-weight:700;line-height:1.3;color:var(--text)}.nav-status{margin:0;font-weight:700;color:var(--primary)}.nav-notice{margin:0;padding:var(--space-8) var(--space-12);font-weight:600;color:var(--warning-ink);background:var(--warning-soft);border:2px solid var(--warning);border-radius:var(--radius)}#route-bar[hidden]{display:none!important}.visitor-shell[data-state=E4] .map-recenter,.visitor-shell[data-state=E4] .leaflet-bottom.leaflet-left{bottom:96px}.visitor-shell[data-state=E5] .map-recenter,.visitor-shell[data-state=E5] .leaflet-bottom.leaflet-left{bottom:200px}.map-recenter.needs-recenter{background:var(--primary);color:var(--on-primary);border-color:var(--primary)}.visitor-flow.is-navigating{align-items:stretch}.arrival-card{position:absolute;left:var(--space-8);right:var(--space-8);bottom:var(--space-12);z-index:700;display:flex;flex-direction:column;gap:var(--space-12);padding:var(--space-16);background:var(--surface);border:2px solid var(--success);border-radius:var(--radius);box-shadow:var(--shadow)}.arrival-title{margin:0;font-size:22px;line-height:1.3}.arrival-actions{display:flex;flex-wrap:wrap;gap:var(--space-8)}.arrival-actions .btn{flex:1 1 calc(50% - 8px);min-height:48px}.skip-link{position:absolute;left:var(--space-8);top:var(--space-8);z-index:3000;display:inline-flex;align-items:center;min-height:48px;padding:var(--space-12) var(--space-16);font-weight:700;color:var(--text);background:var(--surface);border:2px solid var(--primary);border-radius:var(--radius)}.skip-link:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.a11y-panel{position:fixed;z-index:1800;display:flex;flex-direction:column;gap:var(--space-8);max-height:min(70dvh,480px);overflow:auto;padding:var(--space-16);color:var(--text);background:var(--surface);border:2px solid var(--text);border-radius:var(--radius);box-shadow:var(--shadow-soft)}.a11y-panel[hidden]{display:none!important}.a11y-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-8)}.a11y-title{margin:0;font-size:22px}.a11y-toggle{display:flex;align-items:center;gap:var(--space-12);min-height:48px;padding:var(--space-8);font-weight:700;background:var(--surface);border:2px solid var(--text-muted);border-radius:var(--radius);cursor:pointer}.a11y-toggle input{width:24px;height:24px;flex:0 0 auto}.a11y-close{width:100%}html.font-lg .nav-instruction,html.font-lg .camera-hint,html.font-lg .arrival-title,html.font-lg .sheet-head h2,html.font-lg .a11y-title{font-size:28px}html.font-lg .route-kicker,html.font-lg .route-value,html.font-lg .destination-name,html.font-lg .destination-category,html.font-lg .nav-notice,html.font-lg .nav-status,html.font-lg .flow-title,html.font-lg .map-status{font-size:20px}html.hc .visitor-top,html.hc .visitor-bottom,html.hc .visitor-flow,html.hc .nav-banner,html.hc .arrival-card,html.hc .scan-banner,html.hc .a11y-panel,html.hc .a11y-button,html.hc .bottom-sheet,html.hc .map-status,html.hc .route-compact,html.hc .route-point,html.hc .a11y-toggle{border-color:var(--text)}html.hc .visitor-top,html.hc .visitor-bottom,html.hc .visitor-flow,html.hc .nav-notice,html.hc .arrival-card,html.hc .map-status{border-width:2px;border-style:solid}@media(max-width:360px){.visitor-chrome .role-bar{flex-basis:100%;max-width:100%}.route-points{grid-template-columns:1fr}.route-value{white-space:normal}}
