:root{--map-ink:#101827;--map-slate:#182235;--map-water:#2c435f;--surface-slate:#182235;--text-primary:#f8fafc;--text-muted:#b8c2d1;--accent-vienna-red:#ef3340;--accent-location:#60a5fa;--status-warm:#ff7a85;--status-danger:#f3a39b;--space-hairline:1px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--control-min:44px;--camera-size:64px;--sheet-clearance:340px;--camera-clearance:264px;--selected-panel-clearance:400px;--selected-camera-clearance:312px;--desktop-control-edge:48px;--desktop-panel-top:120px;--place-list-height:96px;--panel-max:420px;--screen-gutters:40px;--radius-md:12px;--radius-pill:999px;--detail-image-ratio:3 / 2;--text-caption:.75rem;--line-relaxed:1.5;color:var(--text-primary);background:var(--map-ink);font-synthesis:none;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Apple SD Gothic Neo,Noto Sans KR,sans-serif}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0}button{font:inherit}button:focus-visible,a:focus-visible{outline-offset:3px;outline:3px solid #ff7a85}.app-shell{isolation:isolate;background:#101827;min-height:100dvh;position:relative;overflow:hidden}.map-canvas,.maplibre-host,.schematic-map{width:100%;height:100%;position:absolute;inset:0}.map-canvas{z-index:-2;background:#182235}.maplibre-host{display:none}.map-canvas--live .maplibre-host{display:block}.map-canvas--live .maplibregl-canvas{filter:saturate(.78)contrast(1.06)brightness(.86)}.map-canvas--fallback{background:radial-gradient(circle at 72% 19%,#ef334024,#0000 25%),linear-gradient(130deg,#182235,#101827 65%);overflow:hidden}.schematic-map{background-image:linear-gradient(#f8fafc0b 1px,#0000 1px),linear-gradient(90deg,#f8fafc0a 1px,#0000 1px);background-size:26px 26px;overflow:hidden}.schematic-map:before,.schematic-map:after{content:"";border:1px solid #f8fafc14;border-radius:46%;position:absolute;transform:rotate(-28deg)}.schematic-map:before{width:130%;height:42%;top:28%;left:-12%}.schematic-map:after{width:86%;height:130%;top:-16%;right:-22%}.river{opacity:.83;background:#2c435f;border-radius:50%;width:135%;height:11%;display:block;position:absolute;transform:rotate(-24deg)}.river-one{top:47%;left:-18%}.river-two{opacity:.42;width:88%;top:62%;left:12%}.map-district{background:#38bdf817;border:1px solid #60a5fa2e;border-radius:48%;position:absolute}.district-one{width:45%;height:29%;top:12%;left:8%}.district-two{width:56%;height:33%;bottom:17%;right:5%}.map-fallback-label{color:#f8fafcad;text-shadow:0 1px 8px #101827;margin:0;font-size:.68rem;position:absolute;bottom:300px;left:20px}.map-error{z-index:4;color:#fff0e8;background:#5a1923e0;border:1px solid #f3a39b94;border-radius:12px;margin:0;padding:10px 12px;font-size:.75rem;line-height:1.45;position:absolute;bottom:300px;left:20px;right:20px}.map-top-bar,.camera-top-bar{z-index:2;padding:calc(env(safe-area-inset-top) + 18px) 20px 12px;justify-content:space-between;align-items:flex-start;gap:12px;display:flex;position:relative}.eyebrow,.place-category{color:#ef3340;letter-spacing:.1em;text-transform:uppercase;margin:0;font-size:.68rem;font-weight:800}h1,h2,h3,h4,p{overflow-wrap:anywhere}h1{color:#f8fafc;letter-spacing:-.05em;margin:5px 0 0;font-size:clamp(1.28rem,5vw,1.65rem)}.status,.map-return-button{color:#f8fafc;white-space:nowrap;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);cursor:pointer;background:#101827c7;border:1px solid #f8fafc3d;border-radius:99px;align-items:center;gap:6px;min-height:38px;padding:8px 10px;font-size:.72rem;font-weight:700;display:inline-flex}.status i{background:#ff7a85;border-radius:50%;width:7px;height:7px}.status.ready i{background:#fff;box-shadow:0 0 10px #fff}.locate-button{z-index:2;color:#f8fafc;cursor:pointer;background:#182235;border:1px solid #f8fafc3d;border-radius:50%;place-items:center;width:48px;height:48px;display:grid;position:absolute;bottom:322px;right:20px;box-shadow:0 10px 24px #00000047}.locate-icon{border:2px solid;border-radius:50%;width:18px;height:18px;position:relative}.locate-icon:before,.locate-icon:after{content:"";background:currentColor;position:absolute}.locate-icon:before{height:2px;top:6px;left:-6px;right:-6px}.locate-icon:after{width:2px;top:-6px;bottom:-6px;left:6px}.map-pin{z-index:2;cursor:pointer;background:0 0;border:0;border-radius:50%;width:44px;height:44px;margin:-22px;padding:0;position:absolute}.map-pin:before{content:"";background:#ef3340;border:2px solid #f8fafc;border-radius:58% 58% 58% 8%;width:20px;height:20px;transition:transform .2s,background .2s,box-shadow .2s;position:absolute;top:8px;left:11px;transform:rotate(-45deg);box-shadow:0 0 0 4px #1018278f,0 5px 15px #0000009e}.map-pin:after{content:"";background:#101827;border-radius:50%;width:8px;height:8px;position:absolute;top:14px;left:17px;box-shadow:0 0 0 1px #f8fafc6b}.map-pin:hover:before,.map-pin.is-selected:before{background:#ff7a85;transform:translateY(-2px)rotate(-45deg)scale(1.18);box-shadow:0 0 0 4px #1018278f,0 0 0 8px #ef33402e,0 7px 22px #ef334080}.map-pin.is-selected{background:radial-gradient(circle,#ef33403d 0 23%,#0000 24% 100%)}.maplibregl-popup{z-index:3}.maplibregl-popup-content{background:#182235;border:1px solid #f8fafc59;border-radius:12px;overflow:hidden;box-shadow:0 10px 28px #00000080,inset 0 1px #f8fafc1f;padding:0!important}.maplibregl-popup-tip{border-top-color:#182235!important}.map-pin-preview{color:#f8fafc;text-align:left;cursor:pointer;background:#182235;border:0;width:168px;padding:0;font-size:.74rem;font-weight:800;line-height:1.25;display:block}.map-pin-preview img{width:168px;height:auto;display:block}.map-pin-preview span{text-overflow:ellipsis;white-space:nowrap;padding:8px 9px 9px;display:block;overflow:hidden}.map-pin-preview--schematic{z-index:4;border:1px solid #f8fafc59;border-radius:12px;margin:0;position:absolute;overflow:hidden;transform:translate(20px,-100%);box-shadow:0 10px 28px #00000080,inset 0 1px #f8fafc1f}.location-beacon{background:#fff;border:3px solid #f8fafc;border-radius:50%;width:18px;height:18px;display:block;box-shadow:0 0 0 7px #1018278c,0 0 0 10px #60a5fa38,0 0 22px #60a5fa8f}.schematic-location{z-index:3;position:absolute;top:49%;left:50%}.maplibregl-ctrl-bottom-right{bottom:320px;right:16px}.maplibregl-ctrl-group{overflow:hidden;background:#182235!important;border:1px solid #f8fafc38!important;border-radius:12px!important;box-shadow:0 10px 24px #00000047!important}.maplibregl-ctrl button{background-color:#182235!important}.maplibregl-ctrl button span{filter:invert()sepia(.2)}.guide-sheet{z-index:3;min-height:248px;padding:12px 20px calc(env(safe-area-inset-bottom) + 18px);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#182235f0;border:1px solid #f8fafc21;border-bottom:0;border-radius:25px 25px 0 0;position:absolute;bottom:0;left:0;right:0;box-shadow:0 -18px 55px #00000057,inset 0 1px #f8fafc1a}.sheet-handle{background:#f8fafc5c;border-radius:99px;width:36px;height:4px;margin:0 auto 13px;display:block}.sheet-heading{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.guide-sheet h2{color:#f8fafc;letter-spacing:-.06em;margin:5px 0 0;font-size:clamp(1.45rem,6vw,1.8rem);line-height:1.05}.place-name-en{color:#b8c2d1;margin:5px 0 0;font-size:.78rem}.place-summary{color:#f8fafc;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:13px 0 0;font-size:.91rem;line-height:1.52;display:-webkit-box;overflow:hidden}.sheet-close{color:#f8fafc;cursor:pointer;background:#10182785;border:1px solid #f8fafc33;border-radius:50%;flex:none;place-items:center;width:40px;height:40px;font-size:1.5rem;display:grid}.sheet-actions{justify-content:space-between;align-items:center;gap:12px;margin-top:10px;display:flex}.detail-button{color:#ff7a85;cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;min-height:44px;padding:7px 0;font-weight:800;display:inline-flex}.detail-button span{font-size:1.1rem}.sheet-camera-button{color:#101827;cursor:pointer;background:#ef3340;border:1px solid #ff5865;border-radius:12px;justify-content:center;align-items:center;min-height:44px;padding:8px 12px;font-size:.78rem;font-weight:850;display:inline-flex}.sheet-camera-button .camera-icon{margin-right:5px}.map-sheet-footer{color:#b8c2d1;border-top:1px solid #f8fafc1f;justify-content:space-between;align-items:center;gap:10px;padding-top:8px;font-size:.68rem;display:flex}.range-control{gap:4px;display:flex}.range-control button{color:#f8fafc;cursor:pointer;background:#10182785;border:1px solid #f8fafc33;border-radius:99px;min-width:34px;min-height:30px;padding:4px 6px;font-size:.65rem}.range-control button.selected{color:#101827;background:#ef3340;border-color:#ef3340;font-weight:850}.map-camera-button{z-index:4;bottom:calc(env(safe-area-inset-bottom) + 228px);color:#101827;cursor:pointer;background:#ef3340;border:1px solid #ffd5d9;border-radius:99px;align-items:center;gap:8px;min-height:56px;padding:0 18px;font-weight:850;display:inline-flex;position:absolute;left:50%;transform:translate(-50%);box-shadow:0 12px 28px #00000059}.camera-icon{border:2px solid;border-radius:3px;width:16px;height:12px;display:inline-block;position:relative}.camera-icon:before{content:"";background:currentColor;border-radius:1px;width:6px;height:3px;position:absolute;top:-5px;left:3px}.camera-feed,.camera-fallback,.camera-shade{width:100%;height:100%;position:absolute;inset:0}.camera-feed{z-index:-3;object-fit:cover;transform-origin:50%;background:#172033;transition:transform 80ms linear}.camera-fallback{z-index:-2;background:radial-gradient(circle at 70% 18%,#ff7a85 0 2%,#0000 2.4%),linear-gradient(152deg,#334155 0 27%,#64748b 27% 40%,#26364f 40% 67%,#0b1220 67%)}.camera-shade{z-index:-1;background:linear-gradient(#080f1ebf,#0000 30% 58%,#080f1ee0)}.camera-overlay-content{flex-direction:column;justify-content:end;min-height:calc(100dvh - 152px);padding:0 20px 12px;display:flex;position:relative}.camera-top-bar{padding-bottom:10px}.camera-zoom-label{z-index:2;top:calc(env(safe-area-inset-top) + 68px);color:#f8fafc;background:#101827b8;border-radius:99px;margin:0;padding:5px 8px;font-size:.68rem;font-weight:750;position:absolute;right:20px}.camera-controls{padding:0 20px calc(env(safe-area-inset-bottom) + 18px);grid-template-columns:1fr 1.3fr;gap:10px;display:grid;position:relative}.camera-controls button{cursor:pointer;border-radius:16px;justify-content:center;align-items:center;min-height:54px;font-weight:760;display:flex}.secondary-button{color:#fff;background:#0f172a99;border:1px solid #ffffff4d}.primary-button{color:#101827;background:#ef3340;border:1px solid #ff7a85}.primary-button .camera-icon{margin-right:7px}.notice{z-index:3;color:#f8fafc;text-align:center;margin:0;font-size:.75rem;position:absolute;bottom:94px;left:20px;right:20px}.place-card{max-width:530px}.text-overlay{text-shadow:0 2px 12px #000000e6,0 1px 2px #000000e6;padding:4px 0}.text-overlay .place-category{color:#ff7a85}.place-card h2{letter-spacing:-.065em;margin:6px 0 0;font-size:clamp(2rem,8vw,3.1rem);line-height:1.05}.recognition-control{margin-top:14px}.recognition-button{color:#f8fafc;cursor:pointer;background:#182235b8;border:1px solid #ff7a85c2;border-radius:99px;align-items:center;gap:7px;min-height:42px;padding:8px 13px;font-size:.78rem;font-weight:800;display:inline-flex}.ai-panel{overscroll-behavior:contain;max-width:34rem;max-height:66svh;padding-right:3px;overflow-y:auto}.ai-panel-close{color:#f8fafc;cursor:pointer;background:#0f172a85;border:1px solid #ffffff47;border-radius:99px;align-items:center;gap:6px;margin:0 0 14px;padding:6px 9px;font-size:.7rem;font-weight:750;display:inline-flex}.ai-guide{color:#f8fafc;background:#182235c7;border:1px solid #a5b4fc5c;border-radius:16px;margin-top:10px;padding:15px}.ai-guide p{margin:0}.ai-guide-label{color:#a5b4fc;letter-spacing:.1em;font-size:.61rem;font-weight:850}.ai-guide h3{color:#ff7a85;letter-spacing:-.03em;margin:4px 0 9px;font-size:1.16rem}.ai-guide-intro,.ai-guide-section p{color:#f8fafc;font-size:.88rem;line-height:1.62}.ai-guide-section{border-top:1px solid #ffffff24;margin-top:15px;padding-top:13px}.ai-guide-section h4{color:#c7d2fe;margin:0 0 5px;font-size:.74rem}.ai-guide-look,.ai-guide-reflection{color:#ffd5d9;background:#ff7a851c;border-radius:10px;padding:11px 12px;font-size:.79rem;line-height:1.55;margin-top:13px!important}.ai-guide-look span{color:#a5b4fc;letter-spacing:.06em;font-size:.61rem;font-weight:800;display:block}.recognition-result{color:#f8fafc;font-size:.78rem;line-height:1.4}.recognition-result>p{margin:0}.recognition-result.matched{color:#a5b4fc}.recognition-result.uncertain{color:#ffdda0}.recognition-result.error{color:#ffc8c0}.ai-panel-loading h2{letter-spacing:-.055em;margin:6px 0 8px;font-size:clamp(1.7rem,6.6vw,2.5rem);line-height:1.08}.ai-panel-loading p:last-child{color:#f8fafc;margin:0;font-size:.9rem;line-height:1.55}.modal-backdrop{z-index:7;background:#080f1ea6;align-items:end;display:flex;position:fixed;inset:0}.detail-sheet{width:100%;max-height:88dvh;padding:26px 24px calc(env(safe-area-inset-bottom) + 30px);color:#172033;background:#f8fafc;border-radius:26px 26px 0 0;overflow-y:auto}.detail-sheet h2{color:#101827;letter-spacing:-.065em;margin:6px 0 0;font-size:clamp(1.7rem,6vw,2.35rem);line-height:1.05}.detail-sheet p:not(.place-category):not(.source){font-size:1.02rem;line-height:1.65}.detail-sheet .place-category{color:#ef3340}.close-button{float:right;width:var(--desktop-control-edge);height:var(--desktop-control-edge);color:#182235;cursor:pointer;background:#e2e8f0;border:0;border-radius:50%;font-size:1.5rem}.wikipedia-summary{border-top:1px solid #d6d8d0;margin-top:22px;padding-top:18px}.wikipedia-summary p{margin:8px 0 0}.wikipedia-label,.wikipedia-license,.source{color:#64748b;font-size:.75rem!important}.wikipedia-summary a{color:#ef3340;margin-top:12px;font-size:.88rem;font-weight:750;display:inline-block}@media (width>=680px){.guide-sheet{border-bottom:1px solid #f8fafc21;border-radius:25px;width:min(430px,100% - 40px);bottom:20px;left:auto;right:20px}.map-camera-button{bottom:48px;left:32px;transform:none}.locate-button,.maplibregl-ctrl-bottom-right{bottom:48px}.modal-backdrop{align-items:center}.detail-sheet{border-radius:26px;max-width:620px;margin:auto;padding-bottom:30px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.map-interface{pointer-events:none;min-height:100dvh;position:relative}.map-interface button,.map-interface .guide-sheet{pointer-events:auto}.camera-mode{z-index:6;isolation:isolate;background:var(--map-ink);min-height:100dvh;position:absolute;inset:0;overflow:hidden}.map-fallback-panel{z-index:5;right:var(--space-5);bottom:var(--sheet-clearance);left:var(--space-5);padding:var(--space-3);border:var(--space-hairline) solid color-mix(in srgb, var(--text-primary) 18%, transparent);border-radius:var(--radius-md);background:var(--surface-slate);color:var(--text-primary);position:absolute}.map-fallback-panel>p{margin:0 0 var(--space-2);color:var(--text-muted);font-size:var(--text-caption)}.map-fallback-panel>button,.wikipedia-error button{min-height:var(--control-min);padding:var(--space-2) var(--space-3);border:var(--space-hairline) solid var(--status-warm);border-radius:var(--radius-md);background:var(--accent-vienna-red);color:var(--map-ink);cursor:pointer;font-weight:800}.fallback-place-list{gap:var(--space-2);max-height:var(--place-list-height);margin-top:var(--space-2);overscroll-behavior-y:contain;scrollbar-width:thin;grid-template-columns:repeat(2,minmax(0,1fr));display:grid;overflow-y:auto}.fallback-place-list button{min-height:var(--control-min);padding:var(--space-2) var(--space-3);border:var(--space-hairline) solid color-mix(in srgb, var(--text-primary) 24%, transparent);border-radius:var(--radius-pill);background:var(--map-ink);color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;cursor:pointer;overflow:hidden}.location-message,.camera-state-message{margin:var(--space-2) 0 0;color:var(--text-muted);font-size:var(--text-caption);line-height:var(--line-relaxed);word-break:keep-all}.location-message--denied,.location-message--unsupported,.location-message--outside_supported_city{color:var(--status-danger)}.wikipedia-error{margin-top:var(--space-5);padding-top:var(--space-4);border-top:var(--space-hairline) solid color-mix(in srgb, var(--map-ink) 15%, transparent)}.wikipedia-error p{color:var(--map-slate)}.wikipedia-media{margin:var(--space-4) 0 0;border-radius:var(--radius-md);background:var(--map-slate);overflow:hidden}.wikipedia-media img{width:100%;height:auto;aspect-ratio:var(--detail-image-ratio);object-fit:cover;display:block}.wikipedia-media figcaption{padding:var(--space-2) var(--space-3)}.wikipedia-media a{margin-top:0}.transit-directions{margin-top:var(--space-2);justify-content:flex-end;display:flex}.transit-directions a{min-height:var(--control-min);padding:var(--space-2) 0;color:var(--map-slate);text-align:right;flex-direction:column;justify-content:center;align-items:flex-end;font-weight:800;display:inline-flex}.transit-directions a [aria-hidden=true]{color:var(--accent-vienna-red)}.transit-directions-disclosure{color:var(--map-slate);font-size:var(--text-caption);line-height:var(--line-relaxed)}.sr-only{width:var(--space-hairline);height:var(--space-hairline);clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;padding:0;position:absolute;overflow:hidden}.map-camera-button{bottom:var(--camera-clearance);width:var(--camera-size);height:var(--camera-size);border-radius:50%;justify-content:center;padding:0}.map-interface--selected .map-camera-button{bottom:var(--selected-camera-clearance)}.map-canvas--selected .map-fallback-panel{bottom:var(--selected-panel-clearance)}.status,.map-return-button,.range-control button{min-width:var(--control-min);min-height:var(--control-min)}.status.ready i,.location-beacon{background:var(--accent-location)}.sheet-close{width:var(--desktop-control-edge);height:var(--desktop-control-edge)}.place-summary{word-break:keep-all;text-wrap:pretty}.detail-sheet>p:not(.place-category):not(.source),.wikipedia-summary>p:not(.wikipedia-label):not(.wikipedia-license),.wikipedia-error p{overflow-wrap:break-word;word-break:keep-all}@media (width>=680px){.map-fallback-panel,.map-canvas--selected .map-fallback-panel{top:var(--desktop-panel-top);width:min(var(--panel-max), calc(100% - var(--screen-gutters)));bottom:auto;right:auto}.map-camera-button,.map-interface--selected .map-camera-button{bottom:var(--desktop-control-edge)}}
