*{margin:0;padding:0;box-sizing:border-box}:root{--bg: #0a0a0f;--surface: #141420;--surface-hover: #1c1c2e;--border: #2a2a3d;--text: #e8e8f0;--text-muted: #8888a0;--accent: #00d4aa;--accent-glow: rgba(0, 212, 170, .15);--fire: #ff6b35;--fire-glow: rgba(255, 107, 53, .15);--cold: #4ea8de;--wind: #a78bfa;--radius: 12px;--radius-lg: 20px;--transition-smooth: cubic-bezier(.25, .46, .45, .94)}html{scroll-behavior:smooth}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--bg);color:var(--text);line-height:1.5;min-height:100vh}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{cursor:pointer;font-family:inherit}.app{max-width:1280px;margin:0 auto;padding:0 24px}.nav{position:sticky;top:0;z-index:100;display:flex;align-items:center;justify-content:space-between;padding:16px 0;border-bottom:1px solid rgba(42,42,61,.6);margin-bottom:32px;background:#0a0a0fcc;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}.nav-logo{font-size:1.6rem;font-weight:800;letter-spacing:-.5px;background:linear-gradient(135deg,var(--accent),var(--fire));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.nav-links{display:flex;gap:8px}.nav-link{padding:8px 16px;border-radius:var(--radius);background:transparent;border:1px solid var(--border);color:var(--text-muted);font-size:.9rem;font-weight:500;transition:all .2s var(--transition-smooth)}.nav-link:hover,.nav-link.active{background:var(--surface);color:var(--text);border-color:var(--accent);text-decoration:none}.page-title{font-size:3rem;font-weight:800;letter-spacing:-1.5px;line-height:1.1;margin-bottom:12px;background:linear-gradient(135deg,#fff 0%,var(--text-muted) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.page-subtitle{color:var(--text-muted);margin-bottom:32px;font-size:1.1rem;max-width:560px;line-height:1.6}.sport-tabs{display:flex;gap:8px;margin-bottom:24px;flex-wrap:wrap}.sport-tab{padding:8px 18px;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--text-muted);font-size:.85rem;font-weight:600;transition:all .2s var(--transition-smooth)}.sport-tab:hover,.sport-tab.active{background:var(--accent-glow);border-color:var(--accent);color:var(--accent)}.discover-tab{border-style:dashed;margin-left:8px}.discover-tab.active{background:var(--fire-glow);border-color:var(--fire);color:var(--fire);border-style:solid}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:20px;margin-bottom:40px}.spot-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;transition:transform .35s var(--transition-smooth),box-shadow .35s var(--transition-smooth),border-color .35s}.spot-card:hover{border-color:var(--accent);transform:translateY(-4px);box-shadow:0 12px 40px #00d4aa1a}.spot-card-image-wrap{position:relative;width:100%;height:200px;overflow:hidden}.spot-card-image{width:100%;height:100%;object-fit:cover;transition:transform .5s var(--transition-smooth)}.spot-card:hover .spot-card-image{transform:scale(1.05)}.spot-card-image-overlay{position:absolute;inset:0;background:linear-gradient(to bottom,transparent 30%,rgba(10,10,15,.8) 100%);pointer-events:none}.spot-card-pin{position:absolute;bottom:12px;left:16px;display:flex;align-items:center;gap:5px;font-size:.8rem;color:#ffffffe6;font-weight:500;text-shadow:0 1px 4px rgba(0,0,0,.6)}.spot-card-body{padding:20px}.spot-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}.spot-card-name{font-size:1.2rem;font-weight:700}.spot-card-location{color:var(--text-muted);font-size:.85rem;margin-top:2px}.stoke-badge{display:inline-flex;flex-direction:column;align-items:center;padding:6px 12px;border-radius:12px;line-height:1.2}.stoke-badge-label{font-size:.6rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;opacity:.8}.stoke-badge-value{font-size:1.1rem;font-weight:800}.stoke-badge.high{background:var(--accent-glow);color:var(--accent);border:1px solid var(--accent)}.stoke-badge.mid{background:#eab30826;color:#eab308;border:1px solid #eab308}.stoke-badge.low{background:#8888a01a;color:var(--text-muted);border:1px solid var(--border)}.conditions{display:flex;gap:16px;margin:14px 0;flex-wrap:wrap}.condition{display:flex;align-items:center;gap:6px;font-size:.85rem;color:var(--text-muted)}.condition-value{font-weight:600;color:var(--text)}.sport-tag{display:inline-block;padding:3px 10px;border-radius:999px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.sport-tag.surf{background:#164e63;color:#22d3ee}.sport-tag.snow{background:#1e3a5f;color:#93c5fd}.sport-tag.kite{background:#3b1f6e;color:#c4b5fd}.sport-tag.climb{background:#4a2c17;color:#fbbf24}.sport-tag.bike{background:#1a3a1a;color:#86efac}.card-actions{display:flex;gap:8px;margin-top:16px}.btn{padding:8px 16px;border-radius:var(--radius);font-size:.85rem;font-weight:600;border:none;transition:all .2s var(--transition-smooth)}.btn-primary{background:var(--accent);color:#000}.btn-primary:hover{opacity:.9;transform:scale(1.02)}.btn-outline{background:transparent;border:1px solid var(--border);color:var(--text-muted)}.btn-outline:hover{border-color:var(--text);color:var(--text)}.forecast-row{display:flex;gap:4px;margin-top:14px}.forecast-day{flex:1;text-align:center;padding:8px 4px;background:#0a0a0f80;border-radius:10px;border:1px solid var(--border);transition:border-color .2s}.forecast-day:hover{border-color:var(--accent)}.forecast-day-label{color:var(--text-muted);margin-bottom:2px;font-size:.7rem;text-transform:uppercase;letter-spacing:.5px}.forecast-day-icon{font-size:.9rem;margin-bottom:1px;line-height:1}.forecast-day-temp{font-weight:700;font-size:.8rem}.skeleton-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:20px;margin-bottom:40px}.skeleton-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.skeleton-image{width:100%;height:200px;background:linear-gradient(90deg,var(--surface) 25%,var(--surface-hover) 50%,var(--surface) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite}.skeleton-body{padding:20px}.skeleton-line{height:14px;border-radius:7px;background:linear-gradient(90deg,var(--surface-hover) 25%,var(--border) 50%,var(--surface-hover) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;margin-bottom:10px}.skeleton-line.short{width:60%}.skeleton-line.medium{width:80%}.skeleton-line.long{width:100%}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.scroll-top-btn{position:fixed;bottom:24px;right:24px;width:44px;height:44px;border-radius:50%;background:var(--accent);color:#000;border:none;font-size:1.2rem;font-weight:700;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 20px #00d4aa4d;cursor:pointer;opacity:0;transform:translateY(20px);transition:opacity .3s,transform .3s;z-index:90;pointer-events:none}.scroll-top-btn.visible{opacity:1;transform:translateY(0);pointer-events:auto}.scroll-top-btn:hover{transform:translateY(-2px);box-shadow:0 6px 24px #00d4aa66}.user-airport-banner{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;margin-bottom:20px;background:var(--surface);border:1px solid var(--border);border-radius:999px;font-size:.85rem;color:var(--text-muted)}.user-airport-banner strong{color:var(--accent);font-weight:700}.airport-detecting{animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:.5}50%{opacity:1}}.pro-card{background:linear-gradient(135deg,#1a1a2e,#16213e);border:1px solid var(--accent);border-radius:var(--radius-lg);padding:32px;margin-bottom:24px}.pro-card h3{font-size:1.3rem;margin-bottom:12px;color:var(--accent)}.pro-features{list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:10px}.pro-features li{font-size:.9rem;color:var(--text-muted);padding-left:20px;position:relative}.pro-features li:before{content:"✓";position:absolute;left:0;color:var(--accent);font-weight:700}.share-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:24px;text-align:center}.share-card h3{margin-bottom:8px}.share-buttons{display:flex;gap:10px;justify-content:center;margin-top:16px}.crew-section{max-width:600px;margin:0 auto}.crew-header{text-align:center;margin-bottom:32px}.crew-header h2{font-size:1.8rem;margin-bottom:8px}.crew-header p{color:var(--text-muted)}.crew-form{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:24px;margin-bottom:20px}.crew-form label{display:block;font-weight:600;margin-bottom:6px;font-size:.9rem}.crew-form input,.crew-form select{width:100%;padding:10px 14px;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);font-size:.9rem;margin-bottom:16px}.crew-form input:focus,.crew-form select:focus{outline:none;border-color:var(--accent)}.vote-list{display:flex;flex-direction:column;gap:10px}.vote-item{display:flex;align-items:center;justify-content:space-between;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 18px}.vote-item-name{font-weight:600}.vote-bar{flex:1;height:6px;background:var(--bg);border-radius:3px;margin:0 16px;overflow:hidden}.vote-bar-fill{height:100%;background:var(--accent);border-radius:3px;transition:width .4s}.loading{text-align:center;padding:60px 20px;color:var(--text-muted)}.spinner{display:inline-block;width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;margin-bottom:12px}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:768px){.card-grid,.skeleton-grid,.pro-features{grid-template-columns:1fr}.nav{flex-direction:column;gap:12px;padding:12px 0}.page-title{font-size:2.2rem}.page-subtitle{font-size:1rem}.spot-card-image-wrap{height:180px}.sport-tabs{gap:6px}.sport-tab{padding:6px 14px;font-size:.8rem}.scroll-top-btn{bottom:16px;right:16px}}@media(max-width:480px){.app{padding:0 16px}.page-title{font-size:1.8rem}.forecast-row{gap:3px}.forecast-day{padding:6px 2px}.card-actions{flex-direction:column}.card-actions .btn{width:100%;text-align:center}}
