/* 지도 위에는 탐색 도구만, 상세 카드에는 해당 식당의 행동만 모은다. */
.header{position:absolute;top:calc(12px + env(safe-area-inset-top));right:12px;height:44px;width:116px;padding:0;border:0;background:transparent;z-index:4}
.header-actions{position:relative;width:100%;height:44px;display:block}
.language-label{display:flex!important;gap:7px;align-items:center;justify-content:center;height:44px;border:1px solid #dce3ef;border-radius:14px;background:#fff;color:#28344a;font-size:12px;box-shadow:0 3px 14px #21345216}
.language-label svg,.map-search svg,.locate-me svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.header #language{position:absolute;inset:0;opacity:0;width:100%;height:100%;min-width:0;cursor:pointer}
.header-actions:focus-within .language-label{outline:3px solid #9ab1ff}
.map-corner{display:none}
.map-search,.locate-me{position:absolute;top:calc(12px + env(safe-area-inset-top));width:44px;height:44px;display:grid;place-items:center;border:1px solid #dce3ef;border-radius:14px;background:#fff;color:#28344a;box-shadow:0 3px 14px #21345216;z-index:3}
.map-search{left:12px}.locate-me{right:12px;top:calc(68px + env(safe-area-inset-top))}
.map-pane>.search-wrap{position:absolute;top:calc(68px + env(safe-area-inset-top));left:12px;right:68px;z-index:3;background:#fff;box-shadow:0 5px 20px #21345222}
.search-wrap[hidden]{display:none!important}
.location-status{top:116px;z-index:4}
.results-pane{height:86px}.sheet-toggle{min-height:36px;padding:6px 12px;font-size:11px}
.results-pane:not(.sheet-expanded) .results-head,.results-pane:not(.sheet-expanded) #account-dock{display:none}
.results-pane .list-toolbar{padding:6px 16px;min-height:44px}
#account-dock{padding:8px 16px;display:flex;justify-content:flex-end}
#city-tabs[hidden],#data-disclaimer[hidden],#detail-note[hidden]{display:none!important}
.controls{margin:0;padding:0;background:none!important;border:0!important}
.controls select{width:100%;font-size:13px}
#detail .dialog-head{position:sticky;top:0;z-index:3;background:white;padding:2px 12px;gap:4px}
#detail .detail-grip{flex:1;height:40px;min-height:40px}
#detail-city,#detail .detail-expand{display:none}
#detail #close-detail{width:40px;height:40px;padding:0}
#detail .dialog-body{padding-top:8px}
#detail .detail-actions{display:flex;justify-content:flex-end;gap:8px;margin:8px 0 0;padding:0;border:0}
#detail .detail-actions button,#detail .detail-actions a{flex:none;width:44px;height:44px;min-height:44px;padding:0;display:grid;place-items:center;border-radius:12px;border:1px solid #dce3ef;background:#fff;color:#344663;font-size:25px;line-height:1;text-decoration:none}
#detail #detail-save[aria-pressed=true]{color:#4268ea;background:#eef2ff}
#detail #detail-directions{font-size:21px;font-weight:850}
html[lang=ko] #detail #detail-directions{color:#03a94d}
html:not([lang=ko]) #detail #detail-directions{color:#4285f4}
button:focus-visible,a:focus-visible{outline:3px solid #9ab1ff;outline-offset:2px}
@media(max-width:760px){
 .map{bottom:86px}.results-pane{height:86px}
 .results-pane.sheet-expanded{height:74%}
 #detail{max-height:92dvh}
}
/* 0.14: 지도 가장자리에 기능별 도구를 묶고 기본 하단 패널은 접는다. */
.header{width:112px}
.language-label{font-size:13px;font-weight:650;border-radius:24px}
.map-search,.locate-me,.map-tool{width:46px;height:46px;border-radius:50%;border:1px solid #dce3ef;background:#fff;color:#28344a;display:grid;place-items:center;box-shadow:0 3px 14px #21345216;padding:0}
.map-tool{position:absolute;z-index:3;top:calc(12px + env(safe-area-inset-top))}
.map-tool svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.map-saved{left:66px}.map-filter{left:120px}
.map-tool[aria-pressed=true]{background:#edf2ff;border-color:#4268ea;color:#4268ea}
.map-filter circle{fill:white}
.locate-me{top:auto;left:12px;right:auto;bottom:calc(38px + env(safe-area-inset-bottom))}
.map-list{top:auto;right:12px;bottom:calc(38px + env(safe-area-inset-bottom))}
.results-pane:not(.sheet-expanded){display:none}
.results-pane .results-head:empty{display:none}
.results-pane .results-head{display:none}
.map{bottom:0}
.location-status{top:auto;bottom:96px}
.place-tabs{display:flex;gap:24px;border-bottom:1px solid #e2e7ef;margin:12px 0 16px}
.place-tabs button{border:0;background:white;color:#707b8b;font-size:14px;min-width:56px;min-height:44px;padding:10px 8px;border-bottom:3px solid transparent}
.place-tabs button[aria-selected=true]{border-color:#4268ea;color:#2948ad;font-weight:750}
#place-home[hidden],#place-reviews[hidden]{display:none!important}
#place-home p{font-size:13px;line-height:1.6;color:#657187}
#detail .community{border:0;margin:0;padding:0}
#filter-dialog .controls{margin:14px 0}
.filter-done{min-height:44px;border:0;border-radius:12px;background:#4268ea;color:white;padding:10px 20px}
@media(max-width:760px){
 body.list-open .map-list,body.list-open .locate-me{bottom:calc(74% + 30px)}
 body.place-open .map-list,body.place-open .locate-me{bottom:calc(var(--detail-live-height,49dvh) + 30px)}
 body:has(#detail.detail-expanded[open]) .map-list,body:has(#detail.detail-expanded[open]) .locate-me{display:none}
}

#language-caption{display:flex;align-items:center;gap:6px}#language-caption img{width:26px;height:18px;object-fit:contain}
.bottom-nav{height:calc(64px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);flex:none;display:flex;background:white;border-top:1px solid #e1e6ef;z-index:6}
.bottom-nav button,.bottom-nav #saved-toggle{position:static;flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:4px;min-width:0;height:64px;width:auto;padding:6px;border:0;border-radius:0;background:white;color:#647084;box-shadow:none;font-size:11px;font-weight:600}
.bottom-nav svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.bottom-nav button{margin:0!important}.app-shell{min-height:0}.workspace{min-height:0}html,body{overflow:hidden}
.bottom-nav #saved-toggle[aria-pressed=true]{color:#4268ea;background:#f3f6ff}
.map-filter{left:66px}#account-dock{display:none}
.place-heading-row{display:flex;gap:8px;align-items:flex-start}
#detail .place-heading-row h2{flex:1;min-width:0;margin:4px 0;font-size:19px;line-height:1.4}
#detail .place-heading-row .detail-actions{flex:none;margin:0;gap:2px}
#detail .detail-actions button,#detail .detail-actions a{border:0;width:40px;height:44px;background:transparent;border-radius:10px}
#detail-save svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
#detail-save[aria-pressed=true] svg{fill:#4268ea;stroke:#4268ea}
.photo-credits{margin:0 0 14px;font-size:12px;color:#657187}.photo-credits summary{cursor:pointer;min-height:32px;padding:6px 0}.photo-credits p{font-size:11px;line-height:1.6}.photo-credits a{color:inherit}
@media(max-width:760px){
 #detail{bottom:calc(64px + env(safe-area-inset-bottom));height:45dvh;max-height:calc(100dvh - 76px)}
 #detail.detail-expanded{height:80dvh}
 body.place-open .workspace .map{bottom:var(--detail-live-height,45dvh)}
 body:has(#detail.detail-expanded[open]) .workspace .map{bottom:var(--detail-live-height,80dvh)}
 body.place-open .map-list,body.place-open .locate-me{bottom:calc(var(--detail-live-height,45dvh) + 30px)}
}

#place-photos[hidden]{display:none!important}#place-photos figure{margin:0 0 20px}#place-photos img{display:block;width:100%;height:auto;object-fit:contain}#place-photos figcaption{font-size:11px;line-height:1.6;margin-top:8px;color:#657187}#place-photos figcaption a{color:inherit}#place-photos p{font-size:13px;color:#657187}

/* 0.17: 기본 입력은 짧게, 추가 경험만 단계적으로 펼친다. */
.community-form{gap:14px}
.community-form .optional-details{border-top:1px solid #e9edf4;padding-top:2px}
.community-form .optional-details summary{cursor:pointer;min-height:44px;padding:12px 0;color:#4b5e82;font-size:13px;font-weight:650}
.community-form .optional-details label{margin:8px 0 14px}
.community-form .check-line{display:flex;align-items:center;gap:8px;min-height:40px}
.community-form .check-line input{width:18px;height:18px;flex:none}
.experience-choice{display:flex;gap:7px;flex-wrap:wrap}
.experience-choice legend{width:100%}
.experience-choice label{display:block;position:relative;flex:1 1 0;min-width:0;cursor:pointer}
.experience-choice input{position:absolute;opacity:0;width:1px;height:1px}
.experience-choice span{display:flex;align-items:center;justify-content:center;min-height:44px;border:1px solid #dce3ef;border-radius:11px;background:white;padding:7px 4px;text-align:center;font-size:11px;line-height:1.3}
.experience-choice input:checked+span{border-color:#4268ea;background:#eef2ff;color:#2948ad;font-weight:750}
.experience-choice input:focus-visible+span{outline:3px solid #9ab1ff}
#solo-order-fields[hidden],#failure-fields[hidden],#submission-order-fields[hidden],#solo-methods[hidden]{display:none!important}
#submission-place-fields[hidden],#submission-place-name[hidden]{display:none!important}
#submission-place-fields{display:grid;gap:14px}
#submission-place-name{font-size:15px;font-weight:750;color:#263248;margin:0 0 16px}
#solo-order-fields>label{display:block;margin:8px 0 13px}
#solo-methods{border-top:1px solid #e9edf4;margin:14px 0 8px;padding-top:12px}
#solo-methods .solo-methods-title{margin:0 0 8px;color:#263248;font-size:14px;font-weight:750}
.solo-method-card{background:#f6f8fc;border:1px solid #e8edf5;border-radius:12px;padding:10px 12px;margin:7px 0}
#solo-methods .solo-method-card p{margin:3px 0;color:#53627d;font-size:12px}
#solo-methods .solo-method-card p:first-child{color:#28344a;font-size:13px;font-weight:700}
#cannot-enter{display:block;margin:8px 0 16px;padding:7px 0;text-align:left;font-size:12px;text-decoration:underline;text-underline-offset:3px}

/* 0.18: 네 개의 상세 탭과 기존 리뷰에서 모은 혼밥 경험. */
.place-tabs{gap:0;justify-content:space-between}
.place-tabs button{flex:1;min-width:0;padding:10px 2px}
#place-solo[hidden]{display:none!important}
#place-solo{padding-bottom:12px}
.solo-home-link,.solo-review-link{border:0;background:transparent;color:#345ccc;font-size:13px;font-weight:700;min-height:42px;padding:8px 0;text-align:left}
.solo-home-link{display:block;margin-top:8px}
.solo-review-link{display:block;margin:8px 0}
.solo-visitor-summary{font-size:13px;font-weight:750;color:#263248;margin:4px 0 10px}
.solo-visitor-tags{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0 14px}
.solo-visitor-tags span{font-size:12px;background:#eef2ff;color:#3b57a4;border-radius:8px;padding:6px 8px}
.solo-intro{font-size:13px;color:#657187;line-height:1.5}
.search-map-area{position:absolute;left:50%;transform:translateX(-50%);bottom:36px;z-index:4;background:white;border:1px solid #dce3ef;border-radius:22px;padding:10px 16px;min-height:42px;color:#345ccc;font-size:12px;font-weight:750;box-shadow:0 3px 12px #21345222;white-space:nowrap}
.search-map-area[hidden]{display:none!important}
@media(max-width:760px){body.list-open .search-map-area{bottom:calc(74% + 25px)}body.place-open .search-map-area{display:none}}

/* 0.20: 확인한 정보만 홈에 간결하게 표시하고 같은 자리에서 수정 제보를 연다. */
#place-facts:empty{display:none}
#place-facts{border-top:1px solid #e9edf4;margin-top:10px;padding-top:8px}
#place-facts p{margin:6px 0;color:#28344a!important;font-size:13px;line-height:1.55;white-space:pre-wrap}
#place-facts .fact-sources{margin:5px 0;color:#657187;font-size:11px}
#place-facts .fact-sources summary{cursor:pointer;min-height:32px;padding:7px 0}
#place-facts .fact-sources p{font-size:11px;color:#657187!important}
#report-place-info{display:block;text-align:left;min-height:42px;padding:7px 0;color:#345ccc;font-size:12px}
#info-dialog .dialog-body{padding-top:18px}
#info-place-name{display:block;font-size:16px;margin-bottom:5px}
#info-dialog .info-hint{font-size:12px;color:#657187;margin:0 0 15px;line-height:1.5}
#info-dialog .community-form{gap:12px}
#info-dialog .experience-choice{padding:0;background:transparent}
#info-dialog .local-note{margin:0}

/* 0.22: 리뷰 탭은 다른 상세 탭과 같은 여백·행동 양식을 쓴다. */
#place-reviews{margin:0!important;padding:0!important;border:0!important}
#review-summary{margin:2px 0 10px;color:#657187;font-size:13px;line-height:1.55}
#review-summary p{margin:0 0 8px}
#review-list:empty{display:none}
#review-editor{margin-top:12px}
#review-editor>summary{display:inline-flex;align-items:center;min-height:44px;margin:0!important;padding:8px 0!important;border:0!important;border-radius:0!important;background:transparent!important;color:#345ccc!important;font-size:13px!important;font-weight:700!important;list-style:none}
#review-editor>summary::-webkit-details-marker{display:none}
#review-editor[open]>summary{margin-bottom:12px!important}
.visit-month-picker{display:flex;gap:8px;width:100%}
.visit-month-picker select:first-child{flex:1}
.visit-month-picker select:last-child{flex:1}

/* 0.27: 음식 필터를 그룹별 선택 버튼과 고정 적용 버튼으로 표시한다. */
#filter-dialog[open]{display:flex;flex-direction:column;width:min(100%,480px);height:min(88dvh,760px);max-height:88dvh;overflow:hidden;padding:0;border:0;border-radius:18px;background:#fff;color:#263248}
#filter-dialog .controls{display:none!important}
.filter-head{display:flex;align-items:center;justify-content:space-between;padding:8px 16px;border-bottom:1px solid #e9edf4;flex:none}
.filter-head h2{margin:0;font-size:16px}
.filter-close{border:0;background:none;color:#607089;font-size:26px;width:44px;height:44px}
.filter-body{flex:1;overflow-y:auto;padding:12px 16px 18px}
.filter-body p{font-size:13px;color:#738097;margin:0 0 12px}
.filter-groups section{border-top:1px solid #edf0f5;margin-top:12px;padding-top:12px}
.filter-groups h3{font-size:13px;margin:0 0 8px}
.filter-chips{display:flex;flex-wrap:wrap;gap:6px}
.filter-groups button{min-height:36px;border:1px solid #dce3ee;border-radius:9px;background:#fff;color:#42516b;padding:6px 10px;font-size:13px;line-height:1.3}
.filter-groups button[aria-pressed=true]{border-color:#4268ea;color:#3456cd;background:#eef2ff;font-weight:700}
.filter-footer{display:flex;gap:8px;padding:8px 16px calc(8px + env(safe-area-inset-bottom));border-top:1px solid #e9edf4;background:#fff;flex:none}
.filter-reset{min-height:40px;border:1px solid #dce3ee;border-radius:10px;background:#fff;color:#42516b;padding:8px 14px;font-size:13px}
.filter-footer .filter-done{flex:1;min-height:40px;border-radius:10px;padding:8px 14px;font-size:13px}

/* 0.29: 목록, 상세, 계정, 제보 화면의 글자와 간격을 함께 맞춘다. */
:root{--ui-text:13px;--ui-heading:16px;--ui-gap:8px;--ui-radius:10px;--ui-control:40px}
.result-card{border-radius:12px}
.card-name{font-size:14px;line-height:1.4}
.card-meta,.card-pill{font-size:12px;line-height:1.45}
.place-tabs button{font-size:var(--ui-text)}
.detail-dialog:not(#filter-dialog) .dialog-head{padding:8px 16px;gap:var(--ui-gap)}
.detail-dialog:not(#filter-dialog):not(#detail) .dialog-head strong{font-size:var(--ui-heading)}
.detail-dialog:not(#filter-dialog):not(#detail) .dialog-body{padding:16px}
.community-form{gap:12px}
.community-form label,.community-form legend,.community-form button,.community-form input,.community-form select,.community-form textarea{font-size:var(--ui-text)}
.community-form input:not([type=radio]):not([type=checkbox]),.community-form select{min-height:var(--ui-control);padding:8px 10px;border-radius:var(--ui-radius)}
.community-form textarea{padding:8px 10px;border-radius:var(--ui-radius)}
.community-form button[type=submit],.community-form .propose-button{min-height:var(--ui-control);padding:8px 14px;border-radius:var(--ui-radius)}
.star-options,.tag-options{gap:6px}
.star-options span,.tag-options span{min-height:36px;padding:7px 10px;border-radius:9px;font-size:var(--ui-text);line-height:1.5}
.experience-choice span{min-height:var(--ui-control);font-size:12px;padding:7px 4px;word-break:keep-all}
.community-form .optional-details summary{font-size:var(--ui-text)}

/* 0.30: 같은 위치에 겹친 식당도 음식 종류를 보고 선택한다. */
#pin-choices .dialog-body{display:grid;gap:8px}
#pin-choices .quiet-button{justify-self:start;min-height:40px;padding:6px 0;font-size:13px}
#pin-choices .pin-choice{display:flex;align-items:center;gap:10px;min-height:60px;margin:0;padding:10px 12px;text-align:left}
.pin-choice-icon{width:36px;height:36px;display:grid;place-items:center;flex:none;border-radius:10px;background:#f1f4fb;font-size:19px}
.pin-choice-info{display:grid;gap:3px;flex:1;min-width:0}
.pin-choice-name{font-size:14px;line-height:1.35;color:#263248;font-weight:650}
.pin-choice-category{font-size:12px;line-height:1.3;color:#657187}
.pin-choice-arrow{font-size:20px;color:#8d9bb0}

/* 0.32: 후기 항목을 바로 보여주고 키워드 행의 불필요한 여백을 제거한다. */
.community-form .tag-options label{margin:0}
.review-highlights .tag-group{margin:12px 0}
.review-highlights #tag-count{position:static;display:inline-block;margin:0;padding:3px 7px}
.review-highlights .tag-options{gap:6px}

#home-photo-preview{display:flex;gap:6px;overflow-x:auto;margin:12px 0;scroll-snap-type:x proximity}
#home-photo-preview[hidden]{display:none}
.home-photo{flex:0 0 45%;height:138px;padding:0;border:0;border-radius:10px;background:#f1f3f7;overflow:hidden;scroll-snap-align:start}
.home-photo img{width:100%;height:100%;object-fit:contain;display:block}
.place-meta{display:flex;align-items:center;gap:7px;color:#657187;font-size:13px;margin:0 0 4px;line-height:1.4}
.place-meta .eyebrow{font-size:13px;margin:0;color:inherit}
#detail-rating{color:#425a9e}
.form-photo-fields{display:grid;gap:8px}
.form-photo-fields [hidden]{display:none!important}
.photo-upload{margin:4px 0 16px;border-bottom:1px solid #e9edf4;padding-bottom:8px}
.photo-upload summary{min-height:40px;padding:10px 0;font-size:13px;font-weight:700;color:#345ccc;cursor:pointer}
.photo-upload form{padding:8px 0}
.photo-upload input[type=file]{font-size:12px}

/* 0.33: 가까운 식당을 지도 위 하단 카드에서 고른다. */
.pin-choice-sheet{position:fixed;right:20px;bottom:80px;z-index:5;width:410px;max-width:calc(100vw - 32px);max-height:min(46dvh,420px);display:flex;flex-direction:column;background:#fff;border:1px solid #e1e7f1;border-radius:18px;box-shadow:0 -4px 32px #1e30432b;overflow:hidden}
.pin-choice-sheet[hidden],.pin-choice-back[hidden]{display:none!important}
.pin-choice-header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 16px;border-bottom:1px solid #e9edf4;font-size:14px;color:#263248}
.pin-choice-close,.pin-choice-back{flex:none;width:40px;height:40px;padding:0;border:0;background:transparent;color:#687b96;font-size:25px}
.pin-choice-list{display:grid;gap:6px;overflow-y:auto;padding:10px 16px 16px;overscroll-behavior:contain}
#pin-choices .pin-choice{display:flex;align-items:center;gap:10px;min-height:60px;margin:0;padding:10px 12px;text-align:left}
@media(max-width:760px){
 .pin-choice-sheet{left:0;right:0;bottom:calc(64px + env(safe-area-inset-bottom));width:100%;max-width:none;border-radius:18px 18px 0 0}
 body.cluster-open .workspace .map{bottom:var(--cluster-sheet-height, 220px)}
 body.cluster-open .map-list,body.cluster-open .locate-me{bottom:calc(var(--cluster-sheet-height, 220px) + 30px)}
}
