/* Stilo Fincan location picker: warm cream + wine, scoped to .location-* */
.location-field{position:relative;display:block;width:100%;min-width:0}
.location-trigger{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;min-height:50px;box-sizing:border-box;padding:0 14px;border:1px solid #d9c3cd;border-radius:12px;background:#fff;color:#30242b;font:inherit;font-size:1rem;font-weight:600;text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:border-color .15s,box-shadow .15s}
.location-trigger:hover{border-color:#bd7396}
.location-trigger:focus-visible{outline:3px solid #b34a7a;outline-offset:2px}
.location-trigger.is-placeholder{color:#8a7580;font-weight:500}
.location-trigger[aria-disabled="true"]{background:#faf5f3;color:#8a7580}
.location-trigger[aria-invalid="true"]{border-color:#b3261e;box-shadow:0 0 0 3px #b3261e22}
.location-trigger.is-busy .location-value{animation:location-pulse 1.3s ease-in-out infinite}
.location-value{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.location-chev{display:grid;flex:none;color:#78133f}
.location-native{position:absolute;left:0;bottom:0;width:100%;height:1px;margin:0;padding:0;border:0;opacity:0;pointer-events:none;overflow:hidden}
.location-error{margin:6px 2px 0;color:#a3231b;font-size:.8rem;font-weight:600;line-height:1.35}
.location-error[hidden]{display:none}

html:has(.location-dialog[open]){overflow:hidden}
.location-dialog{position:fixed;inset:auto 0 0 0;margin:0;padding:0;width:100%;max-width:none;height:min(86dvh,640px);max-height:86dvh;border:0;background:transparent;color:#30242b;overflow:hidden;font-family:inherit}
.location-dialog:not([open]){display:none}
.location-dialog::backdrop{background:#2a101d8c;backdrop-filter:blur(3px);animation:location-fade .2s ease-out}
.location-dialog:focus{outline:0}
.location-sheet{display:flex;flex-direction:column;box-sizing:border-box;height:100%;overflow:hidden;background:#fffaf5;border-radius:24px 24px 0 0;box-shadow:0 -12px 48px #29132140;padding-bottom:env(safe-area-inset-bottom);animation:location-rise .28s cubic-bezier(.2,.8,.2,1)}
.location-grip{flex:none;width:40px;height:4px;margin:9px auto 0;border-radius:4px;background:#dfcdd5}
.location-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:10px 12px 8px 20px}
.location-heading{min-width:0}
.location-head h2{margin:0;font-size:1.25rem;line-height:1.25;letter-spacing:-.02em;color:#78133f}
.location-sub{margin:3px 0 0;font-size:.82rem;line-height:1.4;color:#766770}
.location-close{flex:none;display:grid;place-items:center;width:44px;height:44px;padding:0;border:0;border-radius:50%;background:#f4e9ed;color:#62505b;cursor:pointer}
.location-close:hover{background:#ecd9e1}
.location-search{flex:none;padding:6px 16px 10px}
.location-search-input{display:block;width:100%;box-sizing:border-box;min-height:48px;padding:0 14px 0 42px;border:1px solid #e1ccd5;border-radius:14px;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%2378133f' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='9' cy='9' r='5.5'/%3E%3Cpath d='M13.5 13.5L17 17'/%3E%3C/svg%3E") no-repeat 13px center/20px;color:#30242b;font:inherit;font-size:1rem;appearance:none;-webkit-appearance:none}
.location-search-input::placeholder{color:#8a7580}
.location-search-input:focus{outline:3px solid #b34a7a55;border-color:#b34a7a}
.location-body{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:0 8px 12px}
.location-list{margin:0;padding:0;list-style:none}
.location-option{display:flex;align-items:center;gap:10px;width:100%;box-sizing:border-box;min-height:54px;padding:8px 12px;border:0;border-bottom:1px solid #f1e5e9;border-radius:0;background:transparent;color:#30242b;font:inherit;font-size:1.02rem;font-weight:550;text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent}
.location-list li:last-child .location-option{border-bottom:0}
.location-option:hover,.location-option:active{background:#f8ecf1}
.location-option:focus-visible{outline:3px solid #b34a7a;outline-offset:-3px;border-radius:12px}
.location-option[aria-selected="true"]{background:#f7e6ed;color:#78133f;font-weight:700;border-radius:12px;border-bottom-color:transparent}
.location-opt-name{flex:1;min-width:0;overflow-wrap:anywhere}
.location-opt-hint{flex:none;padding:2px 7px;border-radius:999px;background:#f4e9ed;color:#7a6671;font-size:.72rem;font-weight:650;font-variant-numeric:tabular-nums}
.location-check{flex:none;display:grid;place-items:center;width:24px;height:24px;color:#78133f}
.location-state{display:grid;gap:8px;justify-items:center;padding:36px 20px;text-align:center;color:#766770;font-size:.9rem;line-height:1.45}
.location-state strong{color:#30242b;font-size:1rem}
.location-retry{min-height:48px;margin-top:6px;padding:0 24px;border:1px solid #78133f;border-radius:13px;background:#78133f;color:#fff;font:inherit;font-weight:700;cursor:pointer}
.location-retry:hover{background:#5e0d30}
.location-retry:focus-visible{outline:3px solid #b34a7a;outline-offset:3px}
.location-skel{display:block;width:100%;height:46px;border-radius:12px;background:linear-gradient(90deg,#f4e9ed,#fbf3f0,#f4e9ed);background-size:200% 100%;animation:location-shimmer 1.4s linear infinite}

@media(min-width:640px){
 .location-dialog{inset:0;margin:auto;width:min(420px,calc(100% - 32px));height:min(560px,80dvh);max-height:80dvh}
 .location-sheet{border-radius:22px;box-shadow:0 24px 80px #29132155;animation-name:location-pop}
 .location-grip{display:none}
 .location-head{padding-top:18px}
}
@media(max-height:520px){.location-dialog{height:100dvh;max-height:100dvh}.location-sheet{border-radius:0}}
@keyframes location-rise{from{transform:translateY(40px);opacity:.4}to{transform:none;opacity:1}}
@keyframes location-pop{from{transform:scale(.97);opacity:0}to{transform:none;opacity:1}}
@keyframes location-fade{from{opacity:0}to{opacity:1}}
@keyframes location-shimmer{to{background-position:-200% 0}}
@keyframes location-pulse{50%{opacity:.5}}
@media(prefers-reduced-motion:reduce){.location-sheet,.location-dialog::backdrop,.location-skel,.location-trigger.is-busy .location-value{animation:none}}
