:root{--color-brand:#4a6da7;--color-brand-strong:#294575;--color-brand-soft:#ebf0f7;--color-surface:#f7f7f5;--color-card:#fff;--color-text:#222;--color-text-secondary:#666;--color-border:#d8d8d6}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{color:var(--color-text);background:var(--color-surface);font-family:PingFang TC,Noto Sans TC,Microsoft JhengHei,sans-serif;line-height:1.5}:focus-visible{outline:3px solid var(--color-brand-strong);outline-offset:2px}.app-shell{background:var(--color-surface);flex-direction:column;height:100%;min-height:100dvh;display:flex}.app-header{padding:calc(12px + env(safe-area-inset-top)) 16px 12px;background:var(--color-brand);color:#fff;justify-content:space-between;align-items:center;gap:12px;display:flex}.app-header h1{letter-spacing:.02em;min-width:0;margin:0;font-size:1.35rem;font-weight:650;line-height:1.3}.app-header-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.header-sign-out-error{color:#fff;max-width:12rem;margin:0;font-size:.85rem;line-height:1.3}.logout-button{color:#fff;min-width:48px;min-height:48px;font:inherit;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:3px;padding:0 16px;font-size:1rem}.logout-button:hover{background:#ffffff1f}.logout-button:disabled{cursor:not-allowed;opacity:.6}.login-screen{min-height:100dvh;padding:calc(24px + env(safe-area-inset-top)) 16px calc(24px + env(safe-area-inset-bottom));background:var(--color-surface);justify-content:center;align-items:center;display:flex}.login-card{border:1px solid var(--color-border);background:var(--color-card);border-radius:3px;width:min(100%,28rem);padding:28px 24px}.login-card h1{color:var(--color-brand-strong);margin:0 0 8px;font-size:1.5rem;font-weight:650;line-height:1.35}.login-subtitle{color:var(--color-text-secondary);margin:0 0 20px;font-size:1.05rem}.login-notice{border:1px solid var(--color-border);background:var(--color-brand-soft);color:var(--color-brand-strong);border-radius:3px;margin:0 0 16px;padding:12px 14px;font-size:1rem}.login-pending{color:var(--color-text-secondary);margin:0 0 16px}.login-actions{flex-direction:column;gap:12px;display:flex}.login-google,.login-secondary{min-height:48px;font:inherit;cursor:pointer;border-radius:3px;padding:0 16px;font-size:1rem}.login-google{border:1px solid var(--color-brand-strong);background:var(--color-brand);color:#fff}.login-secondary{border:1px solid var(--color-border);background:var(--color-card);color:var(--color-text)}.login-google:disabled,.login-secondary:disabled{cursor:not-allowed;opacity:.6}.app-main{background:var(--color-surface);flex:1;min-height:0;position:relative}.map-view{width:100%;height:100%;position:relative}.map-status{z-index:1;border:1px solid var(--color-border);background:var(--color-card);width:min(100% - 32px,28rem);color:var(--color-text);pointer-events:none;border-radius:3px;margin:0;padding:12px 14px;font-size:1rem;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.map-canvas{width:100%;height:100%}.map-chrome{width:min(22rem, calc(100vw - 24px - env(safe-area-inset-left) - env(safe-area-inset-right)));pointer-events:none;flex-direction:column;align-items:flex-start;gap:8px;display:flex}.map-layer-control{pointer-events:auto;flex-direction:column;align-items:stretch;gap:8px;width:100%;display:flex}.map-layer-button{border:1px solid var(--color-border);background:var(--color-card);min-width:48px;min-height:48px;color:var(--color-text);font:inherit;cursor:pointer;touch-action:manipulation;border-radius:3px;align-self:flex-start;padding:0 18px;font-size:1.05rem;font-weight:650;box-shadow:0 1px 4px #2222221f}.map-layer-button[aria-expanded=true]{border-color:var(--color-brand-strong);background:var(--color-brand);color:#fff}.map-layer-panel{overscroll-behavior:contain;border:1px solid var(--color-border);background:var(--color-card);border-radius:3px;width:100%;max-height:min(50dvh,24rem);padding:4px 14px;overflow:auto;box-shadow:0 1px 4px #2222221f}.layer-switch{width:100%;min-height:56px;color:var(--color-text);font:inherit;text-align:left;cursor:pointer;touch-action:manipulation;background:0 0;border:0;justify-content:space-between;align-items:center;gap:16px;padding:8px 0;display:flex}.layer-switch+.layer-switch{border-top:1px solid var(--color-border)}.layer-switch-copy{flex-direction:column;gap:2px;min-width:0;display:flex}.layer-switch-name{align-items:center;gap:6px;font-size:1.05rem;font-weight:650;line-height:1.3;display:flex}.layer-icon{flex:0 0 20px;width:20px;height:20px;display:block}.layer-switch-hint{color:var(--color-text-secondary);font-size:.95rem;line-height:1.35}.layer-switch-track{background:#c5c5c2;border-radius:16px;flex-shrink:0;width:52px;height:32px;position:relative}.layer-switch.is-on .layer-switch-track{background:var(--color-brand)}.layer-switch-thumb{background:#fff;border-radius:13px;width:26px;height:26px;transition:transform .12s;position:absolute;top:3px;left:3px;transform:translate(0)}.layer-switch.is-on .layer-switch-thumb{transform:translate(20px)}@media (prefers-reduced-motion:reduce){.layer-switch-thumb{transition:none}}.doorplate-labels{pointer-events:none}.doorplate-label{color:#404040;white-space:nowrap;text-shadow:none;-webkit-text-stroke:0;pointer-events:none;font-family:PingFang TC,Noto Sans TC,Microsoft JhengHei,sans-serif;font-size:14px;font-weight:400;line-height:1;position:absolute;top:0;left:0}.map-placeholder{background:var(--color-surface);justify-content:center;align-items:center;width:100%;height:100%;padding:24px 16px;display:flex}.map-placeholder-card{border:1px solid var(--color-border);background:var(--color-card);width:min(100%,28rem);color:var(--color-text);border-radius:3px;padding:24px 20px}.map-placeholder-card h2{color:var(--color-brand-strong);margin:0 0 12px;font-size:1.25rem;line-height:1.4}.map-placeholder-card p{color:var(--color-text-secondary);margin:0;font-size:1.05rem}.map-placeholder-card code{font-family:ui-monospace,Consolas,monospace;font-size:.95em}.bottom-sheet-stub{border-top:1px solid var(--color-border);background:var(--color-card);color:var(--color-text);padding:8px 16px calc(12px + env(safe-area-inset-bottom))}.bottom-sheet-stub-handle{background:var(--color-border);border-radius:3px;width:48px;height:4px;margin:0 auto 8px}.bottom-sheet-stub-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.bottom-sheet-stub-row p{color:var(--color-text-secondary);margin:0;font-size:1rem}.bottom-sheet-stub button{border:1px solid var(--color-border);background:var(--color-card);min-width:48px;min-height:48px;color:var(--color-text);font:inherit;border-radius:3px;padding:0 18px;font-size:1rem}.bottom-sheet-stub button:disabled{cursor:not-allowed;opacity:.6}
