/* Poll UI extension. Existing scene / video layout remains unchanged. */
.poll-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}
.poll-heading .eyebrow{margin:0}
.poll-results-link{display:inline-flex;align-items:center;gap:4px;min-height:32px;padding:3px 0 3px 8px;font-size:11px;color:#71645f}
.poll-results-link .icon{width:13px;height:13px}
.poll-results-link:hover{color:#ac586a}
.poll-card{padding-bottom:22px}
.poll-option:disabled{cursor:progress;opacity:.72}
.app-dialog[data-kind="poll"]{width:min(560px,calc(100vw - 28px));max-height:min(91dvh,900px);background:#fcfaf7}
.app-dialog[data-kind="poll"] .dialog-shell{padding:32px}
.poll-title-mark{display:flex;align-items:center;gap:7px;margin-bottom:13px}
.poll-title-mark .icon{width:15px;height:15px}
/* Routine updates are screen-reader-only; actionable errors stay visible. */
.poll-sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important}
.app-dialog[data-kind="poll"] .dialog-title{margin-bottom:20px}
.poll-result-list{display:grid;gap:11px}
.poll-result-row{display:grid;grid-template-columns:64px minmax(0,1fr) auto;gap:13px;align-items:center;width:100%;text-align:left;padding:12px;border:1px solid #e7e0d8;border-radius:18px;background:#fffdf9;transition:border-color .2s,background .2s;min-height:90px}
.poll-result-row[aria-pressed="true"]{border-color:#d7a2ad;background:#fcf1f3}
.poll-result-row:hover{border-color:#c48d9a}
.poll-result-row:disabled{cursor:progress;opacity:.7}
.poll-result-thumb{width:64px;height:64px;object-fit:cover;border-radius:13px;filter:saturate(.88)}
.poll-result-copy{display:flex;flex-direction:column;min-width:0;gap:8px}
.poll-result-name{font-size:14px;font-weight:600;letter-spacing:-.25px;line-height:1.3}
.poll-result-track{height:5px;background:#eae5dd;border-radius:10px;overflow:hidden;display:block}
.poll-result-fill{height:100%;display:block;border-radius:10px;background:#d58c9d;transition:width .35s ease;width:var(--vote-width,0%)}
.poll-result-row[data-vote="kimbap"] .poll-result-fill{background:#91a493}
.poll-result-row[data-vote="kimbap"][aria-pressed="true"]{background:#f1f5ef;border-color:#a9bca7}
.poll-result-numbers{text-align:right;min-width:50px;display:flex;flex-direction:column;gap:4px}
.poll-percent{font-size:23px;line-height:1;font-weight:600;letter-spacing:-1px;font-variant-numeric:tabular-nums}
.poll-vote-count{font-size:10px;color:#83756e}
.poll-pick-label{display:flex;align-items:center;gap:4px;font-size:9px;min-height:12px;color:#a55d70;line-height:1.2}
.poll-pick-label .icon{width:11px;height:11px}
.poll-result-row[data-vote="kimbap"] .poll-pick-label{color:#5d7b62}
.poll-error{font-size:12px;line-height:1.6;color:#9f3749;background:#fff0f0;border:1px solid #f0d5d7;border-radius:13px;padding:12px 14px;margin:12px 0}
.poll-error[hidden]{display:none}
.poll-verify-box{margin:15px 0;padding:14px;border:1px solid #e7e0d8;border-radius:15px;background:#fffdfa;overflow:hidden}
.poll-verify-box p{font-size:12px;margin:0 0 10px}
.poll-verify-box[hidden]{display:none}
.poll-spots-section{border-top:1px solid #e6ddd5;margin-top:24px;padding-top:21px}
.poll-spots-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.poll-spots-head h3{font-size:18px;letter-spacing:-.5px;margin:0;font-weight:600}
.poll-add-spot{display:inline-flex;align-items:center;gap:3px;font-size:11px;color:#9e586a;min-height:36px;white-space:nowrap}
.poll-add-spot .icon{width:13px;height:13px}
.poll-spots-kicker{font-size:11px;color:#8d7f75;line-height:1.5;margin:4px 0 12px}
.poll-spot-filters{display:flex;gap:7px;margin:0 0 13px}
.poll-spot-filter{border:1px solid #e8e1d9;background:#faf6f0;border-radius:20px;font-size:10px;padding:8px 12px;color:#87766c;min-height:34px}
.poll-spot-filter[aria-pressed="true"]{border-color:#dec2c7;background:#f7e9ec;color:#995a6a}
.poll-spots-list{display:grid;gap:10px}
.poll-empty-spots{border:1px dashed #ded2c8;border-radius:15px;padding:17px;background:#f8f4ee;display:flex;align-items:center;gap:12px}
.poll-empty-spots>.icon{width:25px;height:25px;color:#b58d79;flex-shrink:0}
.poll-empty-spots strong{font-size:12px;font-weight:500;display:block;line-height:1.5}
.poll-empty-spots p{font-size:10px;line-height:1.6;margin:3px 0 0;color:#8b7b70}
.poll-spot-card{background:#fffdf8;border:1px solid #e9ded3;border-radius:16px;padding:15px 16px;position:relative}
.poll-spot-top{display:flex;align-items:flex-start;gap:10px;justify-content:space-between}
.poll-spot-title{font-size:14px;font-weight:600;line-height:1.4;letter-spacing:-.3px;overflow-wrap:anywhere}
.poll-spot-tag{display:inline-block;letter-spacing:.7px;font-size:8px;color:#947965;text-transform:uppercase;margin-bottom:5px}
.poll-spot-note{font-size:12px;line-height:1.65;color:#786b61;margin:8px 0 11px;overflow-wrap:anywhere;white-space:pre-wrap}
.poll-spot-actions{display:flex;align-items:center;justify-content:space-between;gap:8px}
.poll-map-link{font-size:10px;color:#686c56;display:inline-flex;align-items:center;gap:5px;min-height:32px;text-decoration:none;border-bottom:1px solid #ddd9c9;overflow-wrap:anywhere}
.poll-map-link .icon{height:12px;width:12px}
.poll-spot-save{border:1px solid #e5d9ce;width:34px;height:34px;flex-shrink:0;border-radius:50%;color:#9e7a65;display:grid;place-items:center}
.poll-spot-save .icon{width:15px;height:15px}
.poll-spot-save[aria-pressed="true"]{background:#f8e4e9;color:#a45368;border-color:#dfb7c1}
.poll-spot-save[aria-pressed="true"] .icon{fill:#e5a1b3}
.poll-remove-draft{font-size:9px;min-height:32px;color:#9c8b7e;padding:0 2px}
.poll-private-notice{font-size:10px;line-height:1.6;color:#8b7c72;margin:12px 0 0}
.poll-spot-form{margin-top:14px;padding:17px;background:#f4eee7;border:1px solid #e6d7cb;border-radius:17px}
.poll-spot-form[hidden]{display:none}
.poll-form-title{font-size:14px;font-weight:600;margin:0 0 4px}
.poll-spot-form .form-label{margin-top:13px;font-size:11px}
.poll-spot-form input,.poll-spot-form textarea{background:#fffdfa;min-width:0}
.poll-spot-form textarea{resize:vertical;min-height:75px;font:inherit;font-size:12px}
.poll-form-help{font-size:10px;color:#8a796b;line-height:1.6;margin:5px 0 0}
.poll-form-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:14px}
.poll-form-actions .primary-button{font-size:11px;min-height:40px;padding:10px 15px;background:#bc6f84}
.poll-cancel-form{font-size:11px;min-height:40px;color:#837367;padding:8px 10px}
.poll-bottom-actions{display:flex;align-items:center;justify-content:space-between;margin-top:22px;gap:12px}
.poll-bottom-actions>.secondary-button{font-size:11px;min-height:42px}
.poll-refresh{font-size:10px;color:#897b71;min-height:38px;padding:6px 0 6px 8px}
.saved-place-heading{font-size:11px;letter-spacing:1px;color:#8e7664;text-transform:uppercase;margin:24px 0 12px}
.saved-spot-list{display:grid;gap:11px}
@media(max-width:700px){
 .poll-card{padding-bottom:21px}
 .app-dialog[data-kind="poll"]{width:calc(100vw - 20px);max-height:90dvh;border-radius:24px}
 .app-dialog[data-kind="poll"] .dialog-shell{padding:28px 21px 23px}
 .poll-result-row{grid-template-columns:55px minmax(0,1fr) auto;gap:10px;padding:10px;border-radius:15px;min-height:82px}
 .poll-result-thumb{width:55px;height:55px;border-radius:11px}
 .poll-result-name{font-size:13px}
 .poll-percent{font-size:22px}
 .poll-result-numbers{min-width:43px}
 .poll-spots-head h3{font-size:17px}
 .poll-spots-section{margin-top:20px;padding-top:17px}
  .poll-spot-form{padding:14px}
 .poll-spot-form input,.poll-spot-form textarea{font-size:16px} /* avoids mobile focus zoom */
}
@media(max-width:360px){
 .app-dialog[data-kind="poll"] .dialog-shell{padding-left:17px;padding-right:17px}
 .poll-result-row{gap:8px;grid-template-columns:46px minmax(0,1fr) auto}
 .poll-result-thumb{width:46px;height:52px}
 .poll-result-name{font-size:12px}.poll-percent{font-size:20px}
}

/* Photo-first gallery · no prompt, no submission form, no nested popup. */
.poll-spots-head{margin-bottom:14px;min-height:28px}
.poll-gallery-back{display:inline-flex;align-items:center;gap:5px;min-height:36px;font-size:11px;color:#8c7068;padding:2px 0 2px 8px}
.poll-gallery-back[hidden],.poll-spot-filters[hidden]{display:none}
.poll-gallery-back .icon{width:14px;height:14px;transform:rotate(180deg)}
.poll-photo-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:17px 13px}
.poll-photo-card{min-width:0}
.poll-photo-frame{position:relative;aspect-ratio:1.18;overflow:hidden;border-radius:17px;background:#eee5d9}
.poll-photo-open{display:block;position:relative;width:100%;height:100%;text-align:left;border-radius:inherit;overflow:hidden}
.poll-photo-open .poll-place-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .3s ease;filter:saturate(.91)}
.poll-photo-fallback{display:grid;place-items:center;position:absolute;inset:0;color:#af998b;background:linear-gradient(145deg,#f0e7dd,#e7dbcd)}
.poll-photo-fallback .icon{width:28px;height:28px;stroke-width:1.25}
.poll-place-photo.is-unavailable{visibility:hidden}
.poll-photo-sample{position:absolute;left:10px;bottom:10px;background:rgba(255,252,248,.94);color:#705e51;font-size:9px;line-height:1;padding:6px 8px;border-radius:20px;letter-spacing:.15px;pointer-events:none}
.poll-photo-save{position:absolute;right:9px;top:9px;width:37px;height:37px;border-radius:50%;display:grid;place-items:center;background:rgba(255,252,248,.95);color:#6b6057;box-shadow:0 1px 8px #402b2010;transition:background .2s,transform .2s}
.poll-photo-save .icon{width:17px;height:17px;stroke-width:1.7}
.poll-photo-save[aria-pressed="true"]{background:#fae2e8;color:#a1546a}
.poll-photo-save[aria-pressed="true"] .icon{fill:#e7a2b4}
.poll-photo-caption{display:flex;align-items:center;justify-content:space-between;width:100%;gap:7px;text-align:left;padding:10px 2px 2px;min-height:34px}
.poll-photo-caption>span{min-width:0}
.poll-photo-caption strong{font-size:12px;line-height:1.4;font-weight:500;letter-spacing:-.15px;display:block;overflow-wrap:anywhere}
.poll-photo-caption small{display:block;font-size:10px;color:#8a7a6f;line-height:1.5;margin-top:3px}
.poll-photo-caption>.icon{width:13px;height:13px;flex-shrink:0;color:#968578}
.poll-gallery-empty{grid-column:1 / -1;display:flex;align-items:center;justify-content:center;gap:9px;min-height:100px;color:#948074;background:#f5efe8;border-radius:16px;font-size:12px}
.poll-gallery-empty .icon{width:20px;height:20px}
.poll-photo-detail{overflow:hidden;border:1px solid #eae0d6;border-radius:18px;background:#fffdf9}
.poll-detail-visual{position:relative;aspect-ratio:1.45;background:#eee5d9}
.poll-detail-visual>.poll-place-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.poll-detail-copy{padding:16px 18px 15px}
.poll-detail-copy h4{font-size:18px;font-weight:600;letter-spacing:-.45px;line-height:1.4;margin:0}
.poll-detail-korean{margin:5px 0 0;font-size:12px;color:#8c7c71;line-height:1.5}
.poll-detail-area{display:flex;align-items:center;gap:4px;font-size:11px;color:#938173;margin:6px 0 0}
.poll-detail-area>.icon{width:12px;height:12px}
.poll-detail-note{font-size:12px;line-height:1.7;color:#79695f;margin:12px 0 15px;overflow-wrap:anywhere;white-space:pre-wrap}
.poll-detail-meta{display:flex;align-items:center;justify-content:space-between;gap:7px;flex-wrap:wrap}
.poll-detail-meta small{font-size:9px;color:#948176;line-height:1.5}
.poll-detail-meta .poll-map-link{font-size:11px;min-height:38px}
.poll-saved-photo{position:relative;display:block;width:100%;height:160px;border-radius:11px;overflow:hidden;margin-bottom:13px;background:#ede2d5}
.poll-saved-photo>.poll-place-photo{height:100%;width:100%;object-fit:cover}
.poll-photo-save:focus-visible,.poll-photo-open:focus-visible,.poll-photo-caption:focus-visible,.poll-gallery-back:focus-visible{outline:2px solid #a1546a;outline-offset:3px}
@media(hover:hover){.poll-photo-open:hover .poll-place-photo{transform:scale(1.04)}.poll-photo-save:hover{background:#fff;transform:translateY(-1px)}}
@media(max-width:700px){.poll-photo-grid{gap:15px 11px}.poll-photo-frame{border-radius:14px;aspect-ratio:1.08}.poll-photo-save{width:35px;height:35px;top:7px;right:7px}.poll-photo-sample{left:8px;bottom:8px;font-size:8px;padding:6px 7px}.poll-photo-caption strong{font-size:11px}.poll-detail-copy{padding:14px}.poll-detail-copy h4{font-size:17px}.poll-spots-head{margin-bottom:11px}}
@media(prefers-reduced-motion:reduce){.poll-photo-open .poll-place-photo,.poll-photo-save{transition:none}}

/* Place cards v2: two-line caption, one quiet detail view, two HTTPS map choices. */
.poll-photo-caption{align-items:flex-start;padding-top:10px;padding-bottom:3px}
.poll-photo-caption>span{display:block;min-width:0}
.poll-photo-caption strong{display:block;font-size:14px;line-height:1.45;font-weight:600;letter-spacing:-.2px;overflow-wrap:anywhere}
.poll-photo-caption small{display:block;margin-top:3px;font-size:11px;line-height:1.4;font-weight:400;color:#8b7e74}
.poll-photo-caption>.icon{margin-top:2px;flex-shrink:0}
.app-dialog[data-kind="poll"].is-spot-detail .poll-title-mark,
.app-dialog[data-kind="poll"].is-spot-detail #dialog-title,
.app-dialog[data-kind="poll"].is-spot-detail #poll-result-rows,
.app-dialog[data-kind="poll"].is-spot-detail .poll-bottom-actions{display:none}
.app-dialog[data-kind="poll"].is-spot-detail .poll-spots-section{margin-top:0;padding-top:0;border-top:0}
.app-dialog[data-kind="poll"].is-spot-detail .poll-spots-head{padding-right:27px;min-height:36px;margin-bottom:14px}
.app-dialog[data-kind="poll"].is-spot-detail .poll-spots-head h3{font-size:15px;font-weight:500;letter-spacing:-.35px;color:#76675f}
.poll-photo-detail{border:0;background:transparent;overflow:visible;border-radius:0}
.poll-detail-visual{aspect-ratio:1.55;border-radius:20px;overflow:hidden}
.poll-detail-copy{padding:19px 2px 0}
.poll-detail-copy h4{font-size:24px;font-weight:600;line-height:1.3;letter-spacing:-.65px;margin:0;overflow-wrap:anywhere}
.poll-detail-english{font-size:13px;color:#6e6863;margin:5px 0 0;line-height:1.45;overflow-wrap:anywhere}
.poll-detail-branch{display:flex;flex-wrap:wrap;column-gap:6px;row-gap:2px;font-size:10px;line-height:1.5;color:#8a7d72;margin:9px 0 0;overflow-wrap:anywhere}
.branch-separator{color:#c9bdb2}
.poll-detail-area{display:flex;gap:4px;align-items:center;font-size:11px;line-height:1.5;color:#8a7d72;margin:5px 0 0}
.poll-detail-area .icon{width:13px;height:13px;flex-shrink:0}
.poll-contributor-note{padding:14px 15px;margin:16px 0;background:#f3eee7;border-radius:15px}
.poll-contributor-credit{display:flex;gap:9px;align-items:center}
.poll-contributor-avatar{width:30px;height:30px;background:#e9ddd5;color:#8b6c60;font-size:12px;font-weight:500;display:grid;place-items:center;flex-shrink:0;border-radius:50%}
.poll-contributor-credit strong{display:block;font-size:11px;font-weight:600;line-height:1.4;overflow-wrap:anywhere}
.poll-contributor-credit small{display:block;font-size:9px;color:#8f8075;line-height:1.45}
.poll-contributor-note p{font-size:12px;line-height:1.65;margin:9px 0 0;color:#6f6258;white-space:pre-wrap;overflow-wrap:anywhere}
.poll-map-buttons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:17px}
.poll-map-buttons:has(>a:only-child){grid-template-columns:1fr}
.poll-map-button{display:flex;align-items:center;gap:7px;justify-content:center;border:1px solid #e2ddd5;border-radius:13px;min-height:46px;padding:10px 11px;text-decoration:none;color:#536f59;background:#f1f5ee;font-size:12px;font-weight:500;line-height:1.4;transition:background .18s,border-color .18s}
.poll-map-button>span{white-space:nowrap}
.poll-map-button.is-google{color:#5a6c81;background:#f0f3f7;border-color:#dde3ea}
.poll-map-button:hover{background:#e5eddf;border-color:#a9b9a1}
.poll-map-button.is-google:hover{background:#e4ebf3;border-color:#afbdd0}
.poll-map-button .icon{width:14px;height:14px;flex-shrink:0;stroke-width:1.6}
.poll-map-button .icon:last-child{width:11px;height:11px;opacity:.65;margin-left:auto}
.poll-map-button .icon:first-child{margin-right:auto}
.poll-map-button:focus-visible{outline:2px solid #ba7587;outline-offset:3px}
.poll-map-notice{font-size:10px;line-height:1.6;color:#8a7c71;margin:10px 2px 0;overflow-wrap:anywhere}
.poll-saved-area{font-size:11px;color:#8b7e74;margin:4px 0 0;line-height:1.4}
.poll-saved-open{display:inline-flex;gap:5px;align-items:center;font-size:11px;min-height:34px;color:#8c7068;margin-top:4px}
.poll-saved-open .icon{width:13px;height:13px}
@media(max-width:700px){
 .poll-photo-caption strong{font-size:13px}.poll-photo-caption small{font-size:10px}
 .poll-detail-visual{aspect-ratio:1.4;border-radius:17px}
 .poll-detail-copy{padding-top:16px}.poll-detail-copy h4{font-size:22px}
 .poll-contributor-note{margin:14px 0;padding:12px 13px}
 .poll-map-buttons{gap:8px;margin-top:14px}.poll-map-button{font-size:11px;padding:10px;gap:6px;min-height:46px}
 .poll-map-notice{font-size:9px;line-height:1.65}
 .app-dialog[data-kind="poll"].is-spot-detail .poll-spots-head{padding-right:28px}
}
@media(max-width:360px){
 .poll-map-button{font-size:10px;gap:4px;padding:10px 8px}
 .poll-map-button .icon:first-child{display:none}
 .app-dialog[data-kind="poll"].is-spot-detail .poll-spots-head h3{font-size:13px}
}
@media(prefers-reduced-motion:reduce){.poll-map-button{transition:none}}
