: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-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}
