@font-face{font-family:Montserrat;src:url("/fonts/montserrat-semibold.ttf") format("truetype");font-style:normal;font-weight:600;font-display:swap}
:root{font-family:Montserrat,system-ui,sans-serif;color:#203b50;background:#f3f7fa;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer;border:1px solid #dce6ed;background:white;color:#34566e;border-radius:9px;padding:9px 13px;transition:background .15s}button:hover{background:#e9f3fb}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #58a9d2;outline-offset:2px}[hidden]{display:none!important}header{height:88px;display:flex;align-items:center;gap:18px;padding:0 32px;background:#fff;border-bottom:1px solid #e0e9ef}.identity{display:flex;gap:20px;align-items:center;flex:1}.brand{font-size:29px;font-weight:600;letter-spacing:-2px;color:#195982}.brand span{font-size:13px;letter-spacing:2px;color:#7796a9}h1{font-size:21px;letter-spacing:-.6px;margin:0}p{margin:5px 0;color:#6b8293;font-size:12px}.demo{font-size:11px;background:#edf5fb;color:#527d97;border:1px solid #dceaf4;border-radius:25px;padding:8px 12px}.eyebrow{font-size:9px;font-weight:600;letter-spacing:1.8px;color:#6c8ca1}h2{font-size:19px;margin:6px 0;letter-spacing:-.5px}.toolbar{display:flex;justify-content:space-between;align-items:center;margin:22px 32px 18px}.toolbar .eyebrow{display:block;margin-bottom:7px}#periods{display:flex;background:#e6eef4;border-radius:11px;padding:4px;gap:3px}#periods button{background:transparent;border:0;font-size:12px;padding:8px 16px}#periods button.active{background:white;box-shadow:0 2px 6px #203b5010;color:#1f6e9c;font-weight:600}.reference{text-align:right;display:grid;gap:6px;font-size:11px}.reference span{color:#7b8e9c}.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:0 32px 22px}.kpi{padding:17px 20px;border:1px solid #dce6ed;border-radius:13px;background:#fff}.kpi small{font-size:11px;color:#72889b;display:block}.kpi strong{display:block;font-size:27px;letter-spacing:-1px;margin:7px 0}.kpi p{font-size:10px}.kpi .mini-bar{height:4px;background:#e8eff3;border-radius:4px;margin-top:12px;overflow:hidden}.mini-bar span{display:block;height:100%;background:#278bc0}main{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:18px;margin:0 32px;align-items:start;position:relative}.city{border:1px solid #dae5ed;border-radius:16px;overflow:hidden;position:relative;background:#edf3f7}.scene-heading{position:absolute;top:20px;left:22px;right:22px;display:flex;justify-content:space-between;align-items:center;z-index:3;pointer-events:none}.concept{color:#8193a1;font-size:10px;border:1px solid #d3e1eb;padding:6px 9px;border-radius:20px}#viewport{height:570px;position:relative;overflow:hidden}canvas{display:block;width:100%;height:100%;touch-action:none}#labels{position:absolute;inset:0;pointer-events:none;z-index:2}.store-label{position:absolute;pointer-events:auto;transform:translate(-50%,-100%);padding:7px 9px;min-width:104px;max-width:155px;text-align:left;border:1px solid #fff;border-left:3px solid var(--state);border-radius:7px;background:#ffffffec;box-shadow:0 3px 13px #25415d14;color:#26465d;white-space:nowrap;font-size:9px}.store-label b{display:block;font-size:10px;overflow:hidden;text-overflow:ellipsis}.store-label .stats{display:flex;gap:7px;margin-top:3px}.store-label.selected{background:#174e74;color:white;outline:2px solid #7cc8f3;z-index:6}.store-label.compact{min-width:0;padding:5px 8px}.store-label.compact .stats{display:none}.camera{position:absolute;left:22px;bottom:64px;display:flex;gap:6px;z-index:4}.camera button{box-shadow:0 3px 8px #2848660c}.camera span{font-size:10px}.legend{padding:14px 18px;background:#ffffffbc;border-top:1px solid #dae5ed;display:flex;gap:16px;flex-wrap:wrap;font-size:9px;color:#658095}.legend span{display:flex;align-items:center;gap:5px}.legend i{width:7px;height:7px;border-radius:50%}#help{position:absolute;bottom:110px;left:22px;z-index:7;background:white;padding:18px;border:1px solid #d7e6ef;border-radius:12px;box-shadow:0 5px 30px #294e6b12;font-size:12px}#help p{line-height:1.8;font-size:11px}#closeHelp{float:right;padding:0 6px;border:0;font-size:18px}#sidebar{border:1px solid #dae5ed;border-radius:16px;background:white;padding:19px 16px}.side-head{display:flex;justify-content:space-between;align-items:center}.side-head h2{font-size:16px}.icon{font-size:10px;padding:6px 8px}input,select{width:100%;border:1px solid #dce5ec;border-radius:8px;background:#f7fafc;padding:10px;color:#355268;font-size:11px}#search{margin:12px 0}.ranking-sort{display:flex;align-items:center;gap:8px;font-size:10px;color:#7b90a0;margin-bottom:10px}.ranking-sort select{width:auto;flex:1;padding:7px;font-size:10px}.rank-row{display:grid;grid-template-columns:22px 1fr auto;gap:7px;width:100%;border:0;border-bottom:1px solid #edf2f6;border-radius:0;padding:11px 1px;align-items:center;text-align:left;background:white}.rank-row.selected{background:#edf6fc;border-radius:8px}.rank-number{color:#91a7b8;font-size:10px}.rank-name{font-size:11px;font-weight:600}.rank-name small{display:block;font-weight:600;font-size:9px;color:#93a7b5;margin-top:3px}.rank-value{text-align:right;font-size:11px;font-weight:600}.rank-value small{display:block;font-size:9px;margin-top:3px;font-weight:600}.note{font-size:10px;margin-top:14px}.bottom{display:flex;justify-content:space-between;margin:14px 32px 22px;font-size:9px;color:#8a9eac}#detail{background:white;border:1px solid #d6e4ee;border-radius:16px;padding:22px;position:absolute;right:0;top:0;width:330px;z-index:10;box-shadow:0 10px 50px #23496918;max-height:650px;overflow:auto}.detail-head{display:flex;justify-content:space-between;align-items:start}.detail-head h2{max-width:240px}.status-pill{display:inline-block;padding:6px 9px;border-radius:6px;background:#f2f7fa;font-size:10px;color:var(--state);margin:8px 0 15px}.detail-sales{font-size:30px;font-weight:600;letter-spacing:-1px}.detail-sub{display:flex;justify-content:space-between;margin:12px 0;font-size:11px}.progress{height:7px;background:#ecf1f4;border-radius:7px;overflow:hidden}.progress span{display:block;height:100%;background:var(--state)}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:22px 0}.detail-grid small{color:#889dab;display:block;font-size:10px}.detail-grid b{font-size:15px;display:block;margin-top:5px}.chart-title{display:flex;justify-content:space-between;font-size:11px;margin-top:20px}svg.chart{width:100%;height:140px;overflow:visible}.observation{background:#edf5fa;border-radius:9px;padding:13px;font-size:11px;line-height:1.7;margin:15px 0}.previous{font-size:10px;color:#8a9eac}#loading{position:absolute;inset:0;display:grid;place-items:center;color:#6d8ca0}#fallback{padding:90px 20px 80px;height:100%;overflow:auto}.fallback-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}#gate{min-height:100dvh;display:grid;grid-template-columns:1fr 1fr;background:#f6f9fc;align-items:center;padding:8vw;gap:8vw}#gate form{max-width:380px}#gate h1{font-size:36px;line-height:1.18;margin:18px 0}#gate p{font-size:13px;line-height:1.7}#gate label{display:block;font-size:11px;margin:25px 0 8px}#gate input{background:white;font-size:23px;letter-spacing:10px;padding:13px}.primary{background:#205f87;color:white;border:0;width:100%;padding:13px;margin-top:10px}.primary:hover{background:#164c70}#gate small{color:#8ca0af;line-height:1.8;font-size:10px;display:block;margin-top:20px}#pinError{color:#bd4052}.gate-art{text-align:center;color:#3c7ba4}.gate-art>span{font-size:160px;letter-spacing:-13px;font-weight:600}.gate-art p{letter-spacing:3px}.gate-art div{height:4px;width:100px;background:#60bbd6;margin:30px auto;border-radius:10px}@media(min-width:1500px){#viewport{height:650px}}@media(max-width:1000px){main{grid-template-columns:minmax(0,1fr) 245px;gap:12px;margin:0 18px}.kpis{margin:0 18px 16px;gap:8px}.kpi{padding:13px}.kpi strong{font-size:23px}header{padding:0 18px}.toolbar{margin:18px}.concept{display:none}#viewport{height:550px}}@media(max-width:720px){header{height:76px;padding:0 14px;gap:8px}.identity{gap:11px}.brand{font-size:25px}h1{font-size:15px}.identity p{font-size:9px}.demo{font-size:8px;padding:6px}#lock{display:none}.toolbar{margin:15px 14px;align-items:start;gap:8px}.reference{font-size:8px;max-width:120px}.toolbar .eyebrow{font-size:8px}#periods button{padding:8px;font-size:10px}.kpis{grid-template-columns:repeat(2,1fr);margin:0 14px 16px;gap:8px}.kpi{padding:12px 14px}.kpi strong{font-size:23px}.kpi p{font-size:9px}main{display:block;margin:0 10px}.scene-heading{top:15px;left:15px}.scene-heading h2{font-size:16px}.concept{display:block;font-size:8px}#viewport{height:460px}.camera{left:14px;bottom:81px}.legend{gap:9px;padding:12px;font-size:8px;min-height:65px}#sidebar{margin-top:14px;padding:16px}#ranking{display:grid;grid-template-columns:1fr 1fr;gap:0 15px}.rank-name{font-size:10px}.rank-value{font-size:10px}#detail{position:fixed;top:auto;bottom:0;left:0;right:0;width:100%;max-height:65dvh;border-radius:20px 20px 0 0;box-shadow:0 -10px 60px #23496930;padding:20px 24px}.detail-grid{margin:16px 0;grid-template-columns:repeat(4,1fr);gap:10px}.detail-grid b{font-size:12px}.bottom{margin:14px;gap:12px;font-size:8px}.bottom>span:last-child{max-width:150px;text-align:right}.store-label{min-width:85px;padding:5px;font-size:8px}.store-label b{font-size:9px}#help{left:14px;bottom:130px;max-width:270px}#gate{grid-template-columns:1fr;padding:30px;justify-items:center}#gate h1{font-size:32px}.gate-art{display:none}.fallback-grid{grid-template-columns:1fr 1fr}}@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

.gate-fullscreen{width:100%;margin-top:10px;font-size:12px;background:transparent}.camera .fullscreen{font-size:11px}@media(max-width:720px){.camera{gap:4px;left:10px;right:10px}.camera button{padding:8px}.camera .fullscreen{margin-left:auto}.camera .fullscreen span{font-size:9px}}

html,body{overscroll-behavior-y:none}.scroll-locked{overflow:hidden}#detail{overscroll-behavior:contain}.scene-meta{display:flex;align-items:center;gap:8px;pointer-events:auto}.scene-meta #expandMap{font-size:10px;padding:8px 10px;white-space:nowrap}.scene-meta .demo{font-size:9px;padding:6px 8px}.sheet-handle{display:none}.city.map-expanded{position:fixed;inset:0;z-index:20;border:0;border-radius:0;display:flex;flex-direction:column;height:100dvh}.city.map-expanded #viewport{height:auto;flex:1;min-height:0}.city.map-expanded .legend{flex-shrink:0}.map-mode #detail{position:fixed;right:18px;top:90px;z-index:40;max-height:calc(100dvh - 110px)}.scene-heading{gap:10px}.camera{flex-wrap:wrap;max-width:calc(100% - 32px)}.camera button{min-height:36px}#help{max-width:calc(100% - 40px)}
@media(max-width:720px){.scene-heading{align-items:start;right:12px}.scene-meta{display:flex;flex-direction:column;align-items:flex-end;gap:5px}.scene-meta .concept{padding:3px 5px;font-size:7px}.scene-meta .demo{font-size:7px;padding:4px 6px}.scene-meta #expandMap{padding:7px 10px;font-size:10px;min-height:34px}.scene-heading h2{font-size:15px}.scene-heading .eyebrow{font-size:8px}#detail{transition:transform 180ms ease-out;overscroll-behavior:contain;touch-action:pan-y;padding-top:8px;max-height:68dvh;padding-bottom:calc(20px + env(safe-area-inset-bottom))}#detail.dragging{transition:none;user-select:none}.sheet-handle{display:flex;justify-content:center;align-items:center;height:23px;touch-action:none}.sheet-handle span{display:block;width:42px;height:4px;background:#c9d9e4;border-radius:6px}.detail-head{touch-action:none}.map-mode #detail{top:auto;bottom:0;right:0;left:0;max-height:68dvh}.map-expanded .camera{bottom:84px}.camera .fullscreen{margin-left:0}.legend{line-height:1.4}.map-expanded #viewport{touch-action:none}.bottom #lock{display:inline-block;padding:3px 5px}.detail-head button{min-width:38px;min-height:38px}.detail-head h2{margin-top:5px}.city.map-expanded .scene-heading{top:calc(15px + env(safe-area-inset-top))}}
@media(prefers-reduced-motion:reduce){#detail{transition:none}}

.camera #streetView,.camera #motionToggle{font-size:10px}button:disabled{cursor:default;opacity:.5}.interior-button{display:block;width:100%;font-size:11px;margin:0 0 16px;background:#eff7fc;border-color:#d2e7f5}.scene-meta .concept{white-space:nowrap}.camera{bottom:64px}.camera .fullscreen{margin-left:0}@media(max-width:720px){.camera{right:auto;width:calc(100% - 20px);max-width:none;bottom:80px;gap:5px}.camera button{padding:7px 9px;min-height:34px}.camera .fullscreen{font-size:9px}.camera #streetView,.camera #motionToggle{font-size:9px}.map-expanded .camera{bottom:84px}.scene-meta .concept{font-size:7px}.scene-meta{gap:4px}.interior-button{min-height:38px}}

.cutoff{font-size:9px!important;color:#58798f!important}.toolbar{gap:12px}#periods button{white-space:nowrap}.kpi strong{font-size:25px}.detail-grid b{font-size:13px}.detail-grid small{font-size:9px}.chart-empty{padding:30px 0;text-align:center}.mixed-note{font-size:8px;color:#62879d}.scene-meta .demo{font-size:8px}@media(max-width:720px){.toolbar{flex-wrap:wrap;align-items:center;margin-top:14px;gap:8px}.toolbar>div:first-child{flex:1;min-width:285px}.reference{display:flex;flex-wrap:wrap;justify-content:flex-end;max-width:none;width:100%;gap:7px;font-size:9px}.reference span{font-size:9px}#periods{width:100%}#periods button{flex:1;font-size:10px;padding:8px 5px}.kpi strong{font-size:23px;letter-spacing:-.8px}.detail-grid{grid-template-columns:1fr 1fr}.detail-grid b{font-size:14px}.scene-meta .demo{font-size:7px}.legend{min-height:78px}.camera{bottom:92px}.map-expanded .camera{bottom:96px}}

:root{font-weight:600}body,button,input,select,textarea,h1,h2,h3,b,strong,small{font-family:Montserrat,system-ui,sans-serif;font-weight:600}
#gate{min-height:100vh;min-height:100svh;display:flex;align-items:center;justify-content:center;background:#fff;padding:40px 24px;overflow:auto}
#pinForm{width:min(100%,460px);padding:0;margin:0;text-align:center;background:none;border:0;border-radius:0;box-shadow:none;position:static}
#pinForm .login-logo{display:block;width:172px;height:auto;margin:0 auto 28px;object-fit:contain}
#pinForm h1{font-size:25px;line-height:1.35;letter-spacing:-.65px;margin:0;color:#20323a}
#pinForm .login-department{font-size:11px;line-height:1.9;color:#7d868c;max-width:390px;margin:13px auto 0;letter-spacing:.05px}
#pinForm .login-fields{max-width:260px;margin:42px auto 0}
#pinForm label{display:block;color:#939ba0;font-size:10px;letter-spacing:1.1px;text-transform:uppercase;margin-bottom:12px}
#pinForm input{display:block;width:100%;height:48px;border:1px solid #e3e7e9;background:#fafbfb;border-radius:8px;text-align:center;font-size:19px;letter-spacing:8px;padding:8px 12px;color:#20323a;margin:0}
#pinForm input::placeholder{color:#bdc5c9;opacity:1}
#pinForm .primary{display:block;width:100%;height:46px;border:0;border-radius:8px;background:#20323a;color:white;font-size:12px;letter-spacing:.2px;margin:14px 0 0;padding:12px;box-shadow:none}
#pinForm .primary:hover{background:#304852}#pinForm .primary:disabled{opacity:.6;cursor:wait}
#pinError{min-height:20px;margin:12px 0 0;font-size:10px;line-height:1.6;color:#b44f54}
#pinForm .gate-fullscreen{display:inline-flex;width:auto;border:0;background:transparent;color:#9ca5aa;font-size:10px;letter-spacing:0;padding:8px;margin:28px 0 0}
@media(max-width:600px){#gate{padding:32px 24px}#pinForm .login-logo{width:152px;margin-bottom:25px}#pinForm h1{font-size:23px}#pinForm .login-department{max-width:290px;font-size:10px}#pinForm .login-fields{margin-top:34px}}
/* Live commercial view */
.store-label{width:151px;max-width:151px;padding:7px 9px}.store-label .label-totals{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:5px 0}.label-totals small{display:block;font-size:8px;opacity:.7}.label-totals strong{font-size:10px}.label-footer{display:flex;justify-content:space-between;gap:6px;font-size:8px;opacity:.85}.store-label.compact{width:118px;max-width:118px}.store-label.compact .label-totals{gap:3px}.store-label.compact .label-totals strong{font-size:8px}.store-label.compact .label-footer{font-size:7px}.store-label b{font-size:10px}.store-hours{margin:12px 0 20px}.store-hours p{font-size:10px;line-height:1.7;margin-top:9px}.open-status{font-size:10px;background:#edf1f5;color:#657b8e;border-radius:20px;padding:5px 9px;display:inline-block}.open-status.is-open{background:#e4f3ed;color:#267558}.week-bars{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px;margin-top:20px}.week-column{text-align:center;min-width:0}.bar-track{height:110px;display:flex;align-items:flex-end;justify-content:center;border-bottom:1px solid #d8e2eb}.week-bar{width:70%;border-radius:4px 4px 0 0}.week-column b,.week-column small{display:block;font-size:9px;margin-top:7px}.week-column small{font-size:8px;color:#8498a8;margin-top:3px}.bar-value{font-size:7px;display:block;white-space:nowrap;margin-bottom:7px;letter-spacing:-.3px}.chart-legend{display:flex;gap:16px;justify-content:center;margin:15px 0;font-size:9px;color:#758c9e}.chart-legend span{display:flex;align-items:center;gap:5px}.chart-legend i{width:8px;height:8px;border-radius:50%;display:inline-block}.city-clock{position:absolute;z-index:3;pointer-events:none;transform:translate(-50%,-100%);padding:6px 12px;border-radius:8px;background:#172d43ef;color:#fff;font-size:21px;letter-spacing:2px;box-shadow:0 3px 15px #14284035;font-variant-numeric:tabular-nums}.city-clock small{display:block;font-size:7px;text-align:center;letter-spacing:1px;color:#b7cfdd}.city[data-phase=night] .scene-heading,.city[data-phase=dawn] .scene-heading{color:#e5eff8}.city[data-phase=night] .eyebrow,.city[data-phase=dawn] .eyebrow,.city[data-phase=night] .concept,.city[data-phase=dawn] .concept{color:#b4c9dd}.legend{min-height:48px;justify-content:space-between}.camera{bottom:62px}.map-expanded .camera{bottom:66px}.rank-value small{color:#7891a3!important}@media(max-width:720px){.store-label{width:132px;max-width:132px}.store-label.compact{width:108px;max-width:108px}.label-totals strong{font-size:9px}.city-clock{font-size:18px;padding:5px 8px}.legend{min-height:48px}.camera{bottom:62px}.map-expanded .camera{bottom:66px}.week-bars{gap:5px}.bar-value{font-size:7px}.detail-grid{grid-template-columns:1fr 1fr}}
/* Compact city controls and a single-column daily ranking. */
#ranking{display:block}.rank-row{grid-template-columns:22px minmax(0,1fr) auto;gap:9px;padding:13px 2px}.rank-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rank-name small{display:inline;font-size:8px;margin-left:6px;margin-top:0}.rank-value{white-space:nowrap}.camera{flex-wrap:nowrap;align-items:center;max-width:calc(100% - 32px)}.camera button{flex-shrink:0;white-space:nowrap}.legend{flex-wrap:nowrap;gap:8px;font-size:8px;padding:12px 14px;min-height:38px}.legend span{white-space:nowrap}.legend span:last-child{font-size:7px}.camera{bottom:51px}.map-expanded .camera{bottom:55px}.scene-heading h2{margin-top:0}@media(max-width:720px){#ranking{display:block}.rank-name{font-size:11px}.rank-value{font-size:11px}.camera{left:12px;max-width:calc(100% - 24px);gap:4px;bottom:51px}.camera button{padding:7px 9px;min-height:34px}.camera .fullscreen span{display:none}.camera #reset span{font-size:9px}.map-expanded .camera{bottom:55px}.legend{padding:10px 12px;font-size:7px;min-height:36px}.legend span:last-child{font-size:6px}.scene-heading h2{font-size:17px}}

.label-totals .label-month{grid-column:1/-1;display:flex;justify-content:space-between;align-items:center}.label-totals .label-month strong{font-size:8px}

@media(max-width:720px){.camera #zoomIn,.camera #zoomOut,.camera #helpButton{display:none}.camera #toggleLabels{font-size:10px}}
