:root,[data-theme=dark]{--bg-primary:#0f172a;--bg-card:#1e293b;--bg-input:#0f172a;--bg-hover:#334155;--border:#334155;--border-hover:#2563eb;--text-primary:#f1f5f9;--text-secondary:#94a3b8;--text-muted:#64748b;--text-heading:#f8fafc;--accent-blue:#3b82f6;--accent-green:#22c55e;--accent-orange:#f59e0b;--accent-red:#ef4444;--accent-yellow:#eab308;--green-bg:#052e16;--green-border:#16a34a;--red-bg:#450a0a;--red-border:#dc2626;--yellow-bg:#422006;--yellow-border:#ca8a04;--tag-bg:#334155;--amenity-bg:#1e3a5f;--amenity-color:#7dd3fc;--btn-green:#16a34a;--btn-green-hover:#22c55e;--stars-color:#fbbf24;--ad-bg:#1e293b;--ad-border:#334155;--ad-text:#475569;--card-shadow:0 1px 3px #0000004d;--focus-ring:0 0 0 3px #3b82f640}[data-theme=light]{--bg-primary:#f8fafc;--bg-card:#fff;--bg-input:#f1f5f9;--bg-hover:#e2e8f0;--border:#cbd5e1;--border-hover:#2563eb;--text-primary:#0f172a;--text-secondary:#475569;--text-muted:#94a3b8;--text-heading:#0f172a;--accent-blue:#2563eb;--accent-green:#16a34a;--accent-orange:#d97706;--accent-red:#dc2626;--accent-yellow:#ca8a04;--green-bg:#dcfce7;--green-border:#16a34a;--red-bg:#fef2f2;--red-border:#dc2626;--yellow-bg:#fef9c3;--yellow-border:#ca8a04;--tag-bg:#e2e8f0;--amenity-bg:#dbeafe;--amenity-color:#1d4ed8;--btn-green:#16a34a;--btn-green-hover:#22c55e;--stars-color:#d97706;--ad-bg:#fff;--ad-border:#e2e8f0;--ad-text:#cbd5e1;--card-shadow:0 1px 3px #0000001a, 0 1px 2px #0000000f;--focus-ring:0 0 0 3px #2563eb33}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg-primary);color:var(--text-primary);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.6}.page-wrapper{justify-content:center;gap:1.25rem;max-width:1600px;margin:0 auto;padding:1.25rem;display:flex}.app{flex:1;min-width:0;max-width:1100px;padding:1.25rem .75rem}.ad-rail{flex-direction:column;flex-shrink:0;align-self:flex-start;gap:1rem;width:180px;height:fit-content;padding-top:4rem;display:flex;position:sticky;top:1rem}.ad-slot{background:var(--ad-bg);border:1px dashed var(--ad-border);border-radius:12px;flex-direction:column;justify-content:center;align-items:center;display:flex;overflow:hidden}.ad-slot-tall{width:160px;height:600px}.ad-slot-square{width:160px;height:250px}.ad-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.1em;margin-bottom:.25rem;font-size:.6rem}.ad-placeholder{color:var(--ad-text);font-size:.75rem;font-weight:500}.ad-banner{background:var(--ad-bg);border:1px dashed var(--ad-border);border-radius:12px;flex-direction:column;justify-content:center;align-items:center;height:90px;margin-top:2rem;display:flex}.site-header{background:var(--bg-card);border:1px solid var(--border);box-shadow:var(--card-shadow);border-radius:14px;margin-bottom:1.5rem;padding:1rem 1.5rem}.header-inner{justify-content:space-between;align-items:center;display:flex}.header-brand{align-items:center;gap:.85rem;display:flex}.site-logo{flex-shrink:0}.header-text{flex-direction:column;display:flex}.brand-name{letter-spacing:-.03em;font-size:1.55rem;font-weight:800;line-height:1.1}.brand-stay{color:var(--text-heading)}.brand-by{color:var(--text-muted);font-size:1rem;font-weight:400}.brand-rail{color:#2563eb}.subtitle{color:var(--text-secondary);margin-top:.1rem;font-size:.82rem}.header-actions{align-items:center;gap:.75rem;display:flex}.header-region{color:var(--text-secondary);font-size:.9rem;font-weight:500}.header-region:before{content:""}.search-form{background:var(--bg-card);border:1px solid var(--border);box-shadow:var(--card-shadow);border-radius:12px;margin-bottom:2rem;padding:1.75rem}.form-row{flex-wrap:wrap;align-items:flex-end;gap:1rem;margin-bottom:1.25rem;display:flex}.field{flex-direction:column;flex:1;min-width:140px;display:flex}.field label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.4rem;font-size:.78rem;font-weight:600}.field select,.field input[type=date],.field input[type=number]{background:var(--bg-input);border:1px solid var(--border);color:var(--text-primary);border-radius:8px;padding:.65rem .85rem;font-size:.9rem;transition:border-color .15s,box-shadow .15s}.field select:focus,.field input:focus{border-color:var(--border-hover);box-shadow:var(--focus-ring);outline:none}.checkbox-field{justify-content:flex-end}.checkbox-field label{color:var(--text-primary);text-transform:none;letter-spacing:0;cursor:pointer;align-items:center;gap:.5rem;font-size:.9rem;display:flex}.nights-badge{background:var(--amenity-bg);border:1px solid var(--border);color:var(--accent-blue);white-space:nowrap;border-radius:20px;padding:.45rem .95rem;font-size:.85rem;font-weight:500;display:inline-block}button[type=submit]{color:#1a1a1a;cursor:pointer;letter-spacing:.01em;background:#f59e0b;border:none;border-radius:8px;width:100%;padding:.85rem;font-size:1rem;font-weight:700;transition:background .15s,transform .1s}button[type=submit]:hover:not(:disabled){background:#fbbf24;transform:translateY(-1px)}button[type=submit]:active:not(:disabled){transform:translateY(0)}button[type=submit]:disabled{opacity:.5;cursor:not-allowed}.loading{text-align:center;color:var(--text-secondary);padding:3rem 0}.spinner{border:3px solid var(--border);border-top-color:var(--accent-blue);border-radius:50%;width:40px;height:40px;margin:0 auto 1rem;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.btn-loading{opacity:.9;justify-content:center;align-items:center;gap:.6rem;display:flex}.btn-spinner{border:2.5px solid #0003;border-top-color:#0f172a;border-radius:50%;flex-shrink:0;width:18px;height:18px;animation:.7s linear infinite spin}.form-loading-hint{text-align:center;color:var(--text-muted);margin-top:.5rem;font-size:.78rem;animation:2s ease-in-out infinite pulse}@keyframes pulse{0%,to{opacity:.5}50%{opacity:1}}.loading-hint{color:var(--text-muted);margin-top:.25rem;font-size:.78rem}.error-banner{background:var(--red-bg);border:1px solid var(--red-border);color:var(--accent-red);border-radius:8px;margin-bottom:1.5rem;padding:.85rem 1.1rem}.results-header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem;margin-bottom:1.5rem;display:flex}.results-header h2{color:var(--text-heading);letter-spacing:-.01em;font-size:1.4rem}.results-meta{color:var(--text-secondary);font-size:.9rem}.no-results{text-align:center;padding:3rem 0}.no-results h2{color:var(--text-secondary)}.station-group{margin-bottom:2.5rem}.station-name{color:var(--text-heading);border-bottom:1px solid var(--border);align-items:center;gap:.5rem;margin-bottom:1.25rem;padding-bottom:.6rem;font-size:1.15rem;display:flex}.station-icon{font-size:1.2rem}.popular-badge{background:var(--amenity-bg);color:var(--accent-blue);text-transform:uppercase;letter-spacing:.03em;border-radius:20px;padding:.2rem .6rem;font-size:.7rem;font-weight:600}.hotel-grid{flex-direction:column;gap:1rem;display:flex}.hotel-card{background:var(--bg-card);border:1px solid var(--border);box-shadow:var(--card-shadow);border-radius:12px;transition:border-color .2s,box-shadow .2s;display:flex;overflow:hidden}.hotel-card:hover{border-color:var(--border-hover);box-shadow:var(--card-shadow), 0 4px 12px #0000001a}.hotel-thumb{flex-shrink:0;width:180px}.hotel-thumb img{object-fit:cover;width:100%;height:100%}.hotel-info{flex-direction:column;flex:1;gap:.6rem;padding:1.15rem 1.4rem;display:flex}.hotel-header{flex-wrap:wrap;align-items:baseline;gap:.75rem;display:flex}.hotel-header h4{color:var(--text-heading);font-size:1.05rem;font-weight:600}.hotel-type{color:var(--text-secondary);background:var(--tag-bg);border-radius:6px;padding:.15rem .55rem;font-size:.75rem}.stars{color:var(--stars-color);letter-spacing:1px;font-size:.85rem}.hotel-pricing{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.price-link{background:var(--yellow-bg);border:1px solid var(--yellow-border);border-radius:8px;align-items:center;gap:1rem;padding:.6rem 1.15rem;text-decoration:none;transition:border-color .15s,background .15s,box-shadow .15s;display:flex}.price-link:hover{border-color:var(--accent-orange);box-shadow:0 2px 8px #f59e0b26}.price-per-night{flex-direction:column;display:flex}.price-amount{color:var(--accent-green);font-size:1.35rem;font-weight:700}.price-total{flex-direction:column;display:flex}.total-amount{color:var(--accent-orange);font-size:1.35rem;font-weight:700}.price-label{color:var(--text-secondary);font-size:.75rem}.book-now-badge{color:#1a1a1a;white-space:nowrap;background:#f59e0b;border-radius:6px;padding:.35rem .8rem;font-size:.78rem;font-weight:700}.hotel-meta{color:var(--text-secondary);flex-wrap:wrap;gap:1.25rem;font-size:.85rem;display:flex}.rating{color:var(--text-primary)}.review-count{color:var(--text-secondary);margin-left:.2rem}.hotel-tags{flex-wrap:wrap;gap:.4rem;display:flex}.tag{background:var(--tag-bg);color:var(--text-secondary);border-radius:6px;padding:.18rem .55rem;font-size:.72rem}.fridge-yes{background:var(--green-bg);color:var(--accent-green);border:1px solid var(--green-border)}.fridge-no{background:var(--red-bg);color:var(--accent-red);border:1px solid var(--red-border)}.fridge-unknown{background:var(--yellow-bg);color:var(--accent-yellow);border:1px solid var(--yellow-border)}.amenity-tag{background:var(--amenity-bg);color:var(--amenity-color)}.check-times{color:var(--text-muted);font-size:.78rem}.wishlist-section{margin-bottom:1.25rem}.wishlist-toggle{background:var(--bg-input);border:1px solid var(--border);color:var(--text-primary);cursor:pointer;text-align:left;border-radius:8px;align-items:center;gap:.5rem;width:100%;padding:.55rem .85rem;font-size:.85rem;transition:border-color .15s;display:flex}.wishlist-toggle:hover{border-color:var(--border-hover)}.wishlist-preview{color:var(--accent-blue);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:.8rem;overflow:hidden}.wishlist-arrow{color:var(--text-muted);font-size:.7rem}.wishlist-grid{background:var(--bg-input);border:1px solid var(--border);border-radius:8px;flex-wrap:wrap;gap:.45rem;margin-top:.7rem;padding:.85rem;display:flex}.wishlist-chip{background:var(--tag-bg);color:var(--text-secondary);border:1px solid var(--border);cursor:pointer;border-radius:20px;padding:.35rem .75rem;font-size:.78rem;transition:all .15s}.wishlist-chip:hover:not(.chip-disabled){border-color:var(--border-hover);color:var(--text-primary)}.chip-selected{background:var(--green-bg);color:var(--accent-green);border-color:var(--green-border)}.chip-disabled{opacity:.35;cursor:not-allowed}.wishlist-badge{border-radius:6px;margin-left:auto;padding:.12rem .5rem;font-size:.7rem;font-weight:700}.wb-perfect{background:var(--green-bg);color:var(--accent-green);border:1px solid var(--green-border)}.wb-partial{background:var(--yellow-bg);color:var(--accent-yellow);border:1px solid var(--yellow-border)}.wb-none{background:var(--red-bg);color:var(--accent-red);border:1px solid var(--red-border)}.wishlist-results{flex-wrap:wrap;gap:.35rem;display:flex}.wl-yes{background:var(--green-bg);color:var(--accent-green);border:1px solid var(--green-border)}.wl-no{background:var(--red-bg);color:var(--accent-red);border:1px solid var(--red-border)}.wl-unknown{background:var(--yellow-bg);color:var(--accent-yellow);border:1px solid var(--yellow-border)}.sort-select{background:var(--bg-input);border:1px solid var(--border);color:var(--text-primary);cursor:pointer;border-radius:8px;padding:.45rem .85rem;font-size:.85rem;transition:border-color .15s}.sort-select:focus{border-color:var(--border-hover);outline:none}.theme-toggle{background:var(--bg-card);border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;margin-left:auto;padding:.45rem;transition:border-color .15s,color .15s;display:flex}.theme-toggle:hover{border-color:var(--border-hover);color:var(--text-primary)}.results-controls{background:var(--bg-card);border:1px solid var(--border);box-shadow:var(--card-shadow);border-radius:12px;flex-wrap:wrap;align-items:flex-end;gap:2rem;margin-bottom:1.5rem;padding:1.15rem 1.4rem;display:flex}.control-group{flex-direction:column;gap:.4rem;display:flex}.control-group>label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;font-size:.78rem;font-weight:600}.control-group>label strong{color:var(--accent-blue);text-transform:none}.toggle-group{border:1px solid var(--border);border-radius:8px;display:flex;overflow:hidden}.toggle-btn{background:var(--bg-input);color:var(--text-secondary);cursor:pointer;border:none;padding:.45rem 1.1rem;font-size:.85rem;transition:background .15s,color .15s}.toggle-btn:not(:last-child){border-right:1px solid var(--border)}.toggle-btn.active{background:var(--btn-green);color:var(--text-heading)}.toggle-btn:hover:not(.active){background:var(--amenity-bg);color:var(--text-primary)}.slider-group{flex:1;min-width:200px}.walk-slider{appearance:none;cursor:pointer;background:#30363d;border-radius:3px;outline:none;width:100%;height:6px}.walk-slider::-webkit-slider-thumb{appearance:none;cursor:pointer;background:#58a6ff;border:2px solid #0d1117;border-radius:50%;width:18px;height:18px}.walk-slider::-moz-range-thumb{cursor:pointer;background:#58a6ff;border:2px solid #0d1117;border-radius:50%;width:18px;height:18px}.slider-labels{color:var(--text-muted);justify-content:space-between;margin-top:.15rem;font-size:.7rem;display:flex}.station-count{color:var(--text-secondary);margin-left:auto;font-size:.8rem;font-weight:400}.hotel-map-container{border:1px solid var(--border);border-radius:10px;margin-bottom:1.5rem;overflow:hidden}.map-link{color:var(--accent-blue);font-size:.85rem;text-decoration:none}.map-link:hover{text-decoration:underline}.booking-link{color:var(--text-heading);background:#003580;border-radius:4px;padding:.2rem .6rem;font-size:.8rem;font-weight:600;text-decoration:none;transition:background .15s}.booking-link:hover{background:#00487a}.sources-banner{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:1rem;padding:.6rem 1rem;font-size:.82rem;display:flex}.sources-label{color:var(--text-secondary);margin-right:.25rem;font-weight:500}.source-chip{border-radius:20px;align-items:center;gap:.35rem;padding:.2rem .6rem;font-size:.78rem;display:inline-flex}.source-active{background:var(--green-bg);color:var(--accent-green);border:1px solid var(--green-border)}.source-inactive{background:var(--tag-bg);color:var(--text-muted);border:1px solid var(--border)}.source-dot{border-radius:50%;width:6px;height:6px;display:inline-block}.dot-on{background:#3fb950}.dot-off{background:#6e7681}.source-count{background:#ffffff1a;border-radius:8px;margin-left:.15rem;padding:0 .35rem;font-size:.7rem}.source-tag{letter-spacing:.02em;font-weight:600}.source-google_hotels{color:#4285f4;background:#1a2332;border:1px solid #4285f4aa}.source-booking-com{color:#5b9bd5;background:#1a2332;border:1px solid #003580aa}.source-tripadvisor{color:#00af87;background:#1a2818;border:1px solid #00af87aa}.settings-panel{margin-bottom:1rem}.settings-toggle{background:var(--bg-card);border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;border-radius:8px;align-items:center;gap:.5rem;padding:.45rem .9rem;font-size:.85rem;transition:border-color .15s,color .15s;display:inline-flex}.settings-toggle:hover{border-color:var(--border-hover);color:var(--text-primary)}.settings-indicator{border-radius:50%;width:8px;height:8px;display:inline-block}.ind-on{background:#3fb950;box-shadow:0 0 4px #3fb95088}.ind-off{background:#6e7681}.settings-body{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;margin-top:.5rem;padding:1.25rem}.settings-row{margin-bottom:.75rem}.settings-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.4rem;font-size:.8rem;font-weight:500;display:block}.settings-input-group{gap:.5rem;display:flex}.settings-input{background:var(--bg-input);border:1px solid var(--border);color:var(--text-primary);border-radius:6px;flex:1;padding:.55rem .75rem;font-family:monospace;font-size:.85rem}.settings-input:focus{border-color:var(--border-hover);outline:none;box-shadow:0 0 0 2px #58a6ff26}.settings-save-btn{background:var(--btn-green);color:var(--text-heading);cursor:pointer;white-space:nowrap;border:none;border-radius:6px;padding:.55rem 1.1rem;font-size:.85rem;font-weight:600;transition:background .15s}.settings-save-btn:hover:not(:disabled){background:var(--btn-green-hover)}.settings-save-btn:disabled{opacity:.5;cursor:not-allowed}.settings-footer{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.settings-status{border-radius:20px;align-items:center;gap:.4rem;padding:.2rem .6rem;font-size:.82rem;display:inline-flex}.status-active{background:var(--green-bg);color:var(--accent-green);border:1px solid var(--green-border)}.status-inactive{background:var(--red-bg);color:var(--accent-red);border:1px solid var(--red-border)}.status-dot{border-radius:50%;width:6px;height:6px;display:inline-block}.settings-hint{color:var(--text-muted);font-size:.8rem}.settings-hint a{color:var(--accent-blue);text-decoration:none}.settings-hint a:hover{text-decoration:underline}.settings-msg{border-radius:6px;margin-top:.75rem;padding:.5rem .75rem;font-size:.82rem}.msg-ok{background:var(--green-bg);border:1px solid var(--green-border);color:var(--accent-green)}.msg-err{background:var(--red-bg);border:1px solid var(--red-border);color:var(--accent-red)}@media (width<=1400px){.ad-rail{width:160px}}@media (width<=1200px){.ad-rail{display:none}.page-wrapper{padding:0}.app{padding:1.5rem}}@media (width<=768px){.app{padding:.75rem}.site-header{border-radius:10px;margin-bottom:1rem;padding:.75rem 1rem}.header-inner{gap:.5rem}.site-logo{width:28px;height:30px}.brand-name{font-size:1.2rem}.brand-by{font-size:.8rem}.subtitle{font-size:.72rem}.search-form{border-radius:10px;margin-bottom:1rem;padding:1rem}.form-row{flex-direction:column;gap:.65rem;margin-bottom:.75rem}.field{min-width:100%}.field select,.field input[type=date],.field input[type=number]{padding:.7rem .85rem;font-size:1rem}button[type=submit]{border-radius:10px;padding:.9rem;font-size:1.05rem}.nights-badge{text-align:center;width:100%}.wishlist-toggle{padding:.65rem .85rem;font-size:.9rem}.wishlist-grid{gap:.5rem}.wishlist-chip{padding:.4rem .8rem;font-size:.82rem}.results-controls{border-radius:10px;flex-direction:column;gap:1rem;padding:1rem}.control-group,.toggle-group{width:100%}.toggle-btn{text-align:center;flex:1;padding:.5rem}.sort-select{width:100%;padding:.55rem .75rem}.slider-group{min-width:100%}.hotel-map-container{border-radius:10px}.hotel-card{border-radius:10px;flex-direction:column}.hotel-thumb{width:100%;height:180px}.hotel-info{gap:.5rem;padding:.85rem 1rem}.hotel-header h4{font-size:1rem}.hotel-pricing{flex-direction:column;gap:.5rem}.price-link{border-radius:10px;justify-content:space-between;width:100%;padding:.65rem 1rem}.price-amount,.total-amount{font-size:1.2rem}.book-now-badge{padding:.4rem .85rem;font-size:.82rem}.hotel-meta{flex-direction:column;gap:.5rem;font-size:.85rem}.booking-link{text-align:center;padding:.35rem .75rem;font-size:.82rem;display:inline-block}.hotel-tags{gap:.4rem}.tag{padding:.2rem .6rem;font-size:.75rem}.wishlist-results{gap:.4rem}.sources-banner{border-radius:8px;padding:.5rem .75rem;font-size:.75rem}.settings-toggle{padding:.4rem .75rem;font-size:.8rem}.settings-body{padding:1rem}.settings-input-group{flex-direction:column}.settings-input{font-size:.8rem}.settings-footer{flex-direction:column;align-items:flex-start;gap:.5rem}.settings-hint{font-size:.72rem}.results-header{flex-direction:column;gap:.25rem;margin-bottom:1rem}.results-header h2{font-size:1.15rem}.ad-banner{border-radius:8px;margin-top:1.5rem}}
