.city-memory-modal{position:fixed;inset:0;z-index:2100;display:grid;place-items:center;padding:28px;background:rgba(35,27,22,.62);backdrop-filter:blur(12px)}
.city-memory-modal.hidden{display:none}.city-memory-shell{position:relative;width:min(1060px,96vw);max-height:92vh;overflow:auto;border:1px solid rgba(119,83,48,.18);border-radius:30px;background:#f7f1e8;color:#34251d;box-shadow:0 30px 90px rgba(35,22,15,.28)}
.city-memory-close{position:absolute;right:22px;top:20px;z-index:2;width:42px;height:42px;border:1px solid rgba(73,48,33,.12);border-radius:50%;background:#fffaf3;color:#5d4637;font-size:26px;line-height:1;cursor:pointer}.city-memory-header{padding:36px 46px 22px;border-bottom:1px solid rgba(109,74,44,.12)}
.city-memory-header>span,.city-memory-preview-label{font-size:12px;font-weight:800;letter-spacing:.12em;color:#a17649}.city-memory-header h2{margin:8px 0 6px;font-size:34px}.city-memory-header p{margin:0;color:#7b6a5f}.city-memory-content{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(280px,.75fr);gap:26px;padding:28px 46px}
.city-memory-free-note{display:inline-flex;align-items:center;gap:8px;margin-top:12px;color:#416449;font-size:13px}.city-memory-free-note i{border:1px solid rgba(85,121,88,.2);border-radius:999px;background:#e8f0e6;padding:3px 9px;font-size:11px;font-style:normal;letter-spacing:.08em}
.city-memory-form{display:grid;gap:22px}.city-memory-field{display:grid;gap:10px;margin:0;padding:0;border:0}.city-memory-field b{display:flex;align-items:center;gap:10px;font-size:16px}.city-memory-field b i{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:#7f5738;color:white;font-size:13px;font-style:normal}.city-memory-field>span{font-size:13px;color:#806e61}
.city-memory-field input,.city-memory-field textarea{box-sizing:border-box;width:100%;border:1px solid rgba(104,73,48,.18);border-radius:14px;background:#fffdfa;padding:13px 15px;color:#34251d;font:inherit;outline:none}.city-memory-field input:focus,.city-memory-field textarea:focus{border-color:#b9844f;box-shadow:0 0 0 3px rgba(185,132,79,.12)}
.city-memory-location-row{display:flex;gap:10px}.city-memory-location-row input{min-width:0;flex:1}.city-memory-location-row button{flex:0 0 auto;border:1px solid rgba(104,73,48,.18);border-radius:14px;background:#f2e6d6;padding:0 18px;color:#61432f;font-weight:700;cursor:pointer}.city-memory-location-row button:disabled{opacity:.55;cursor:wait}.city-memory-location-result{margin-top:-12px;border:1px solid rgba(104,73,48,.13);border-radius:16px;background:#fffaf3;padding:13px 15px}.city-memory-location-result.hidden{display:none}.city-memory-location-state{display:block;color:#806b5d;font-size:12px;font-weight:700}.city-memory-location-result.success .city-memory-location-state{color:#39745e}.city-memory-location-result.error .city-memory-location-state{color:#b94932}.city-memory-location-result dl{display:grid;gap:6px;margin:10px 0 0}.city-memory-location-result dl>div{display:grid;grid-template-columns:88px minmax(0,1fr);gap:10px}.city-memory-location-result dt{color:#927b6b;font-size:12px}.city-memory-location-result dd{overflow-wrap:anywhere;margin:0;color:#3e2c22;font-size:13px}
.city-memory-memory-types{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.city-memory-memory-types button,.city-memory-styles button{border:1px solid rgba(104,73,48,.16);background:#fffdfa;color:#48352a;cursor:pointer}.city-memory-memory-types button{display:grid;gap:4px;min-height:68px;padding:10px 7px;border-radius:13px}.city-memory-memory-types small,.city-memory-styles small{color:#8b796c;font-size:11px;line-height:1.35}.city-memory-memory-types button.active,.city-memory-styles button.active{border-color:#bd8750;background:#fbf0df;box-shadow:inset 0 0 0 1px rgba(189,135,80,.2)}
.city-memory-styles{display:grid;gap:9px}.city-memory-styles button{display:flex;align-items:center;gap:12px;padding:12px;border-radius:15px;text-align:left}.city-memory-styles em{display:grid;place-items:center;flex:0 0 44px;height:44px;border-radius:13px;background:#efe1cf;color:#7f5738;font-size:17px;font-style:normal}.city-memory-styles span{display:grid;gap:3px}.city-memory-preview{align-self:start;position:sticky;top:20px;padding:18px;border:1px solid rgba(104,73,48,.14);border-radius:22px;background:#fffaf2}.city-memory-art{position:relative;isolation:isolate;display:flex;min-height:330px;flex-direction:column;justify-content:flex-end;overflow:hidden;margin-top:12px;padding:24px;border-radius:17px;background:linear-gradient(155deg,#e6d0a7 0 34%,#8fa8a1 34% 56%,#435b58 56%);color:white;box-shadow:inset 0 0 0 1px rgba(255,255,255,.35)}
.city-memory-copy-card{display:grid;gap:11px;padding:15px 16px;border:1px solid rgba(156,111,67,.18);border-radius:16px;background:linear-gradient(135deg,#fffaf2,#f5eadb)}.city-memory-copy-heading,.city-memory-copy-actions{display:flex;align-items:center;justify-content:space-between;gap:12px}.city-memory-copy-heading>span{color:#9d7047;font-size:12px;font-weight:850;letter-spacing:.08em}.city-memory-copy-card button{flex:0 0 auto;border:1px solid rgba(104,73,48,.16);border-radius:999px;background:#fffdfa;padding:6px 12px;color:#654631;font-size:12px;font-weight:750;cursor:pointer}.city-memory-copy-card button:disabled{opacity:.5;cursor:not-allowed}.city-memory-copy-card label{display:grid;gap:5px}.city-memory-copy-card label>span{color:#7b6556;font-size:11px;font-weight:750}.city-memory-copy-card input,.city-memory-copy-card textarea{box-sizing:border-box;width:100%;border:1px solid rgba(104,73,48,.16);border-radius:11px;background:rgba(255,253,250,.88);padding:10px 12px;color:#38271f;font:inherit;line-height:1.55;outline:none;resize:vertical}.city-memory-copy-card input{font-family:"STKaiti","KaiTi",serif;font-size:18px;font-weight:700}.city-memory-copy-card textarea{min-height:68px;font-size:13px}.city-memory-copy-card input:focus,.city-memory-copy-card textarea:focus{border-color:#b9844f;box-shadow:0 0 0 3px rgba(185,132,79,.12)}.city-memory-copy-actions small{color:#897368;font-size:10px;line-height:1.45}
.city-memory-art:before{content:"";position:absolute;z-index:-1;inset:25% -15% -25%;border:1px solid rgba(255,255,255,.45);border-radius:50%;transform:rotate(-12deg);box-shadow:0 0 0 20px rgba(255,255,255,.05),0 0 0 42px rgba(255,255,255,.05)}.city-memory-sun{position:absolute;right:26px;top:28px;width:58px;height:58px;border-radius:50%;background:#d8894d;box-shadow:0 0 0 12px rgba(255,240,205,.18)}.city-memory-lines{position:absolute;left:24px;top:30px;width:52%;height:1px;background:rgba(255,255,255,.68);box-shadow:0 8px rgba(255,255,255,.38),0 16px rgba(255,255,255,.18)}
.city-memory-art strong{font-size:31px;letter-spacing:.08em;text-shadow:0 2px 12px rgba(20,28,28,.22)}.city-memory-art span{margin-top:8px;font-size:13px}.city-memory-preview p{margin:14px 4px 2px;color:#89766a;font-size:12px;line-height:1.6}.city-memory-preview.is-saved{box-shadow:0 0 0 3px rgba(130,163,139,.16)}
.city-memory-footer{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:20px 46px 30px}.city-memory-footer p{margin:0;color:#7d6b5f;font-size:13px}.city-memory-footer p.error{color:#b94932}.city-memory-footer button{min-width:220px;border:0;border-radius:15px;background:#38251b;padding:15px 24px;color:white;font-size:16px;font-weight:800;cursor:pointer;box-shadow:0 12px 26px rgba(56,37,27,.18)}.city-memory-footer button:disabled{opacity:.55;cursor:wait}
@media(max-width:760px){.city-memory-modal{padding:10px}.city-memory-shell{max-height:96vh;border-radius:22px}.city-memory-header,.city-memory-content,.city-memory-footer{padding-left:20px;padding-right:20px}.city-memory-header{padding-top:28px}.city-memory-header h2{font-size:27px}.city-memory-content{grid-template-columns:1fr}.city-memory-memory-types{grid-template-columns:repeat(3,1fr)}.city-memory-preview{position:static}.city-memory-art{min-height:240px}.city-memory-footer{align-items:stretch;flex-direction:column}.city-memory-footer button{width:100%}.city-memory-location-row{align-items:stretch}.city-memory-location-row button{padding:0 13px}}
.city-memory-map-preview{margin-top:16px;padding-top:16px;border-top:1px solid rgba(104,73,48,.12)}
.city-memory-map-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;color:#4b3427;font-size:13px;font-weight:800}.city-memory-map-tools{display:flex;align-items:center;gap:5px}.city-memory-map-heading button{min-width:31px;border:1px solid rgba(104,73,48,.16);border-radius:10px;background:#f2e5d3;padding:7px 9px;color:#694832;font:inherit;cursor:pointer}.city-memory-map-heading [data-city-map-zoom="reset"]{min-width:52px;font-size:11px}.city-memory-map-heading button:disabled{opacity:.45;cursor:not-allowed}
.city-memory-map-canvas{display:grid;place-items:center;aspect-ratio:25/17;overflow:hidden;margin-top:10px;border:1px solid rgba(104,73,48,.12);border-radius:14px;background:#f0e8dd;color:#8b7768;font-size:12px;text-align:center}.city-memory-map-canvas>span{padding:20px}.city-memory-map-canvas svg{display:block;width:100%;height:100%;transform-origin:center;transition:transform .22s ease-out;will-change:transform}
.city-memory-map-canvas .map-background{fill:#f2eadf}.city-memory-map-canvas .map-landuse{fill:#e4ddc7;stroke:#c9bea0;stroke-width:1;opacity:.72}.city-memory-map-canvas .map-water{fill:#c5d9d4;stroke:#9bbab5;stroke-width:3}.city-memory-map-canvas .map-boundary{fill:none;stroke:#bd8d61;stroke-width:2;stroke-dasharray:9 8;opacity:.7}.city-memory-map-canvas .map-road{fill:none;stroke:#fffaf2;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.city-memory-map-canvas .map-road.map-rank-5,.city-memory-map-canvas .map-road.map-rank-6{stroke:#e0c19e;stroke-width:5}.city-memory-map-canvas .map-road.map-rank-7,.city-memory-map-canvas .map-road.map-rank-8,.city-memory-map-canvas .map-road.map-rank-9{stroke:#c99869;stroke-width:7}.city-memory-map-canvas .map-building{fill:#dbcdbd;stroke:#c7b49f;stroke-width:1}.city-memory-map-canvas .map-place{fill:#b77a4d;stroke:#fff7eb;stroke-width:2}.city-memory-map-canvas .map-center-ring{fill:#fff8ee;stroke:#9e5e38;stroke-width:5}.city-memory-map-canvas .map-center-dot{fill:#9e5e38}.city-memory-map-canvas .map-anchor-hit{fill:transparent;stroke:none}.city-memory-map-canvas .map-memory-anchor{cursor:grab;touch-action:none}.city-memory-map-canvas .map-memory-anchor:active{cursor:grabbing}.city-memory-map-canvas .map-memory-anchor .map-center-ring{filter:drop-shadow(0 3px 5px rgba(72,42,25,.35))}.city-memory-map-canvas.loading{animation:city-map-pulse 1.3s ease-in-out infinite}.city-memory-map-canvas.error{color:#b94932}
.city-memory-anchor-editor{display:grid;gap:6px;margin-top:10px;padding:10px 11px;border:1px solid rgba(104,73,48,.12);border-radius:12px;background:#fffaf3}.city-memory-anchor-editor label{color:#604332;font-size:12px;font-weight:800}.city-memory-anchor-editor input{box-sizing:border-box;width:100%;border:1px solid rgba(104,73,48,.15);border-radius:9px;background:#fff;padding:8px 10px;color:#3f2c22;font:inherit;font-size:12px;outline:none}.city-memory-anchor-editor input:focus{border-color:#bd8750;box-shadow:0 0 0 3px rgba(189,135,80,.12)}.city-memory-anchor-editor small{display:flex;justify-content:space-between;gap:10px;color:#8a7668;font-size:10px}.city-memory-anchor-editor b{white-space:nowrap;color:#a16b3f;font-weight:700}
.city-memory-map-meta{margin:9px 0 0!important;color:#766357!important;font-size:11px!important}.city-memory-map-attribution{display:inline-block;margin-top:5px;color:#927a68;font-size:10px;text-decoration:none}
@keyframes city-map-pulse{50%{opacity:.62}}
.city-memory-artwork-output{margin-top:16px;padding-top:16px;border-top:1px solid rgba(104,73,48,.12)}
.city-memory-artwork-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;color:#4b3427;font-size:13px;font-weight:800}.city-memory-artwork-heading button{border:0;border-radius:10px;background:#38251b;padding:8px 11px;color:#fff;font:inherit;cursor:pointer;box-shadow:0 7px 16px rgba(56,37,27,.14)}.city-memory-artwork-heading button:disabled{opacity:.46;cursor:not-allowed}
.city-memory-artwork-hint{display:block;margin-top:7px;color:#887467;font-size:10px;line-height:1.5}
.city-memory-artwork-canvas{display:grid;place-items:center;aspect-ratio:3/4;overflow:hidden;margin-top:10px;border:1px solid rgba(104,73,48,.12);border-radius:14px;background:#f0e8dd;color:#8b7768;font-size:12px;text-align:center}.city-memory-artwork-canvas>span{padding:20px}.city-memory-artwork-canvas img{display:block;width:100%;height:100%;object-fit:cover}.city-memory-artwork-canvas.loading{animation:city-map-pulse 1.3s ease-in-out infinite}.city-memory-artwork-canvas.error{color:#b94932}
.city-memory-artwork-meta{margin:9px 0 0!important;color:#766357!important;font-size:11px!important}.city-memory-artwork-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}.city-memory-artwork-actions.hidden{display:none}.city-memory-artwork-actions a,.city-memory-artwork-actions button{box-sizing:border-box;border:1px solid rgba(104,73,48,.16);border-radius:10px;padding:9px 8px;background:#fffaf3;color:#654631;font-size:12px;font-weight:750;text-align:center;text-decoration:none;cursor:pointer}.city-memory-artwork-actions button{background:#f0e1ce}
.city-memory-product-preview{margin-top:18px;padding-top:17px;border-top:1px solid rgba(104,73,48,.12)}.city-memory-product-preview.hidden{display:none}.city-memory-product-heading{display:flex;align-items:center;justify-content:space-between;color:#4b3427;font-size:13px;font-weight:850}.city-memory-product-heading small{color:#947c68;font-size:10px;font-weight:600}.city-memory-product-stage{display:grid;place-items:center;min-height:310px;margin-top:10px;border-radius:17px;background:radial-gradient(circle at 50% 34%,#fffdf8 0,#eee5d8 58%,#d7c8b6 100%);box-shadow:inset 0 0 0 1px rgba(99,68,43,.1)}.city-memory-product-frame{position:relative;width:185px;aspect-ratio:165/215;filter:drop-shadow(16px 18px 13px rgba(43,28,18,.24));transform:perspective(700px) rotateY(-8deg);transition:filter .4s ease}.city-memory-product-artwork{position:absolute;z-index:1;inset:7.2% 8.5% 6.5%;width:83%;height:86.5%;object-fit:cover;background:#eee}.city-memory-product-overlay{position:absolute;z-index:2;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none}.city-memory-product-preview.is-lit .city-memory-product-frame{filter:brightness(1.08) drop-shadow(0 0 20px rgba(255,196,84,.46)) drop-shadow(16px 18px 13px rgba(43,28,18,.2))}.city-memory-product-preview.is-lit .city-memory-product-artwork{filter:brightness(1.16) saturate(1.05);box-shadow:0 0 22px rgba(255,204,108,.58)}.city-memory-product-light{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}.city-memory-product-light button{border:1px solid rgba(104,73,48,.15);border-radius:999px;background:#fffaf3;padding:8px;color:#72543f;font-size:11px;font-weight:750;cursor:pointer}.city-memory-product-light button.active{border-color:#c39256;background:#f5e5c7;color:#4b321f}.city-memory-product-cta{width:100%;margin-top:9px;border:0;border-radius:12px;background:#38251b;padding:11px;color:#fff;font-size:12px;font-weight:850;cursor:pointer;box-shadow:0 8px 20px rgba(56,37,27,.18)}
.city-memory-styles button u{display:block;margin-top:5px;color:#a27046;font-size:10px;font-style:normal;font-weight:700;text-decoration:none}.city-memory-artwork-heading span{display:flex;align-items:center;gap:8px}.city-memory-artwork-heading i{display:grid;width:24px;height:24px;place-items:center;border-radius:50%;background:#82593a;color:#fff;font-size:11px;font-style:normal}.city-memory-artwork-actions{grid-template-columns:repeat(3,1fr)}.city-memory-product-entry{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;padding:13px;border:1px solid rgba(169,116,65,.2);border-radius:13px;background:linear-gradient(135deg,#f9edda,#fff9ef)}.city-memory-product-entry.hidden{display:none}.city-memory-product-entry span{display:grid;gap:3px;color:#4b3427}.city-memory-product-entry b{font-size:12px}.city-memory-product-entry small{color:#8c7565;font-size:10px}.city-memory-product-entry button{flex:0 0 auto;border:0;border-radius:11px;background:#38251b;padding:10px 13px;color:#fff;font-size:12px;font-weight:850;cursor:pointer;box-shadow:0 8px 20px rgba(56,37,27,.18)}.city-memory-footer button:disabled{opacity:.72;cursor:not-allowed}.city-memory-footer button:disabled:not(:active){background:#6f8d7e;box-shadow:none}
