:root{--bg:#fafafa;--surface:#fff;--surface-soft:#fff8f8;--text:#171717;--muted:#707070;--line:#e9e9e9;--accent:#ce2d4f;--accent-soft:#ffe7ed;--radius:16px}*{box-sizing:border-box}html,body{background:radial-gradient(circle at top right,#fff4f7 0%,var(--bg)38%),var(--bg);color:var(--text);margin:0;padding:0;font-family:Avenir Next,Segoe UI,sans-serif}a{color:inherit}.page-shell{max-width:1100px;min-height:100vh;margin:0 auto;padding:40px 20px 20px}.page-shell.narrow{max-width:760px}.topbar{justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:24px;display:flex}.topbar h1{letter-spacing:-.02em;margin:0;font-size:clamp(2rem,5vw,3rem)}.topbar p{color:var(--muted);max-width:640px;margin:8px 0 0}.submit-link,.form button,.unlock-form button,.yes-button{border:1px solid var(--line);background:var(--surface);cursor:pointer;border-radius:999px;padding:10px 16px;font-size:.95rem;text-decoration:none;transition:all .2s}.submit-link:hover,.form button:hover,.unlock-form button:hover,.yes-button:hover{border-color:var(--accent);transform:translateY(-1px)}.filter-bar{gap:10px;margin-bottom:18px;display:grid}.filter-input{width:100%}.filter-controls{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;display:grid}.tile{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);cursor:pointer;transition:transform .2s,box-shadow .2s;overflow:hidden}.tile:hover{transform:translateY(-4px);box-shadow:0 10px 30px #0000000f}.tile-image{object-fit:cover;width:100%;height:170px;display:block}.tile-content{padding:14px}.tile-content h2{margin:0 0 6px;font-size:1.04rem}.tile-content p{color:var(--muted);margin:0}.tile-neighborhood{margin-bottom:8px}.outlet-stars{letter-spacing:.02em}.outlet-stars .stars-filled{color:#dd9b16}.outlet-stars .stars-empty{color:#c9c9c9}.rating-badge{text-align:center;border-radius:999px;min-width:44px;padding:4px 8px;font-weight:700;display:inline-block}.rating-excellent{color:#0c6d2c;background:#ddf7e6}.rating-good{color:#8a6a00;background:#fff5d6}.rating-fair{color:#915400;background:#ffe8cc}.rating-low{color:#8a1f2d;background:#ffe1e5}.empty-state{color:var(--muted);margin:16px 0 0}.footer{border-top:1px solid var(--line);color:var(--muted);text-align:center;margin-top:36px;padding-top:20px}.easter-egg-link{letter-spacing:.35em;color:#c8c8c8;text-decoration:none}.modal-backdrop{z-index:50;background:#00000059;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:var(--surface);border-radius:var(--radius);border:1px solid var(--line);width:min(560px,100%);max-height:min(88vh,900px);padding:48px 18px 18px;position:relative;overflow-y:auto}.modal-image{object-fit:cover;border-radius:12px;width:100%;height:220px;margin-bottom:12px}.modal h2{margin:0}.meta{color:var(--muted);margin:4px 0 14px}.details-list{gap:10px;margin:0;padding:0;list-style:none;display:grid}.details-list li{border-bottom:1px solid var(--line);justify-content:space-between;gap:12px;padding-bottom:10px;display:flex}.details-list span{color:var(--muted)}.details-list a{text-align:right;color:#0b4f8a;text-decoration:none}.close-button{cursor:pointer;color:#7f7f7f;background:0 0;border:0;font-size:1.6rem;position:absolute;top:14px;right:16px}.form{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);gap:12px;padding:18px;display:grid}.success-panel{border-radius:var(--radius);background:#f3fcf6;border:1px solid #d9efdf;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;padding:14px 16px;display:flex}.form label{gap:6px;font-size:.95rem;display:grid}input,select,textarea{border:1px solid var(--line);font:inherit;background:#fff;border-radius:10px;padding:10px}textarea{resize:vertical}.status-success{color:#0a7b39;margin:0}.status-error{color:#b2163d;margin:0}.secondary-button{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:999px;padding:8px 12px}.valentine-shell{background:radial-gradient(circle at 0 0,#fff3f6,#fff 52%);place-items:center;min-height:100vh;padding:24px;display:grid;position:relative;overflow:hidden}.valentine-shell.locked{background:linear-gradient(#fff,#fff7f9)}.valentine-card{background:var(--surface-soft);text-align:center;z-index:2;border:1px solid #f0d5dc;border-radius:24px;width:min(680px,100%);padding:26px;position:relative}.valentine-card.small{width:min(420px,100%)}.valentine-card h1{margin:0;font-size:clamp(1.8rem,6vw,2.8rem)}.valentine-card p{color:#7d5660}.choice-zone{background:#fff;border:1px dashed #edc2cb;border-radius:16px;height:250px;margin:26px auto 20px;position:relative}.yes-button{background:#fff;border-color:#e5a8b5;position:absolute;top:55%;left:22%;transform:translate(-50%,-50%)}.no-button{cursor:pointer;background:#fff;border:1px solid #e5a8b5;border-radius:999px;padding:10px 18px;transition:all .2s;position:absolute;top:55%;left:70%;transform:translate(-50%,-50%)}.unlock-form{grid-template-columns:1fr auto;gap:8px;margin:14px 0;display:grid}.unlock-form input{text-align:center;letter-spacing:.28em;font-size:1.1rem}.plain-link{color:#865b67;margin-top:8px;text-decoration:none;display:inline-block}.floating-hearts{pointer-events:none;position:absolute;inset:0}.heart{color:#de6f89;opacity:0;font-size:1.1rem;animation:3s linear infinite floatHeart;position:absolute;bottom:-20px}.valentine-modal{border-color:#efc2cd;animation:.35s popIn}.card-text{color:#63434c;line-height:1.6}.card-signoff{color:#8a5c68;margin-top:24px}.no-popup-image{object-fit:cover;border:1px solid #efc2cd;border-radius:12px;width:100%;max-height:420px;margin-bottom:12px}.no-popup-caption{color:#8a1f2d;margin:0 0 14px;font-weight:700}@keyframes popIn{0%{opacity:0;transform:scale(.84)}to{opacity:1;transform:scale(1)}}@keyframes floatHeart{0%{opacity:0;transform:translateY(0)scale(.8)}10%{opacity:.9}90%{opacity:.35}to{opacity:0;transform:translateY(-100vh)scale(1.15)}}@media (max-width:740px){.topbar{flex-direction:column}.filter-controls{grid-template-columns:1fr}.success-panel{flex-direction:column;align-items:flex-start}.choice-zone{height:220px}.yes-button{left:30%}}
