:root{color:#e8f1ff;background:#050b16;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0;background:radial-gradient(circle at 22% 0%,rgba(91,128,190,.28),transparent 24rem),linear-gradient(180deg,#081327,#050b16 48%,#030711)}button,input{font:inherit}button{border:0;border-radius:8px;background:#b8d3ff;color:#071122;cursor:pointer;font-weight:900;padding:13px 15px}button:disabled{cursor:wait;opacity:.55}input{width:100%}.app-shell{width:min(1280px,calc(100% - 24px));min-height:100vh;margin:0 auto;padding:18px 0 24px}.top{display:flex;align-items:end;justify-content:space-between;gap:16px;margin-bottom:12px}.top p{margin:0 0 2px;color:#89a3c8;font-size:.75rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.top h1{margin:0;color:#edf5ff;font-size:clamp(2.6rem,9vw,6.8rem);line-height:.88;letter-spacing:0}.sun-count{display:grid;min-width:112px;border:1px solid rgba(184,211,255,.14);border-radius:8px;background:#0c192fd1;padding:12px;text-align:right}.sun-count strong{font-size:2.8rem;line-height:.92}.sun-count span{color:#89a3c8;font-weight:800}.search{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px;margin-bottom:10px}.search input{border:1px solid rgba(184,211,255,.16);border-radius:8px;outline:none;background:#0b1930db;color:#edf5ff;padding:13px 14px}.search input:focus{border-color:#b8d3ff;box-shadow:0 0 0 4px #8baee629}.submit,.score,.place-marker circle,.sample-point.clear{background:#9dbcf0;color:#061021}.time-card{display:grid;grid-template-columns:190px minmax(0,1fr);gap:16px;align-items:center;margin-bottom:12px;border:1px solid rgba(184,211,255,.14);border-radius:8px;background:#0c192fc7;padding:12px}.time-card strong{display:block;font-size:1.4rem;line-height:1}.time-card span{display:block;overflow:hidden;margin-top:4px;color:#8fa6c8;font-size:.84rem;font-weight:750;text-overflow:ellipsis;white-space:nowrap}input[type=range]{accent-color:#b8d3ff}.layout{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:12px;align-items:start}.map-panel,.results{border:1px solid rgba(184,211,255,.14);border-radius:8px;background:#0c192fc2}.map-panel{position:sticky;top:12px;overflow:hidden;padding:10px}.map-strip{display:flex;gap:10px;align-items:center;justify-content:space-between;padding:2px 2px 10px}.map-strip strong,.map-strip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.map-strip span{color:#8fa6c8;font-size:.84rem;font-weight:800}.map-frame{position:relative;overflow:hidden;min-height:680px;border-radius:8px;background:#0b1729;perspective:1200px}.sun-orb{position:absolute;z-index:4;width:48px;height:48px;border-radius:999px;background:radial-gradient(circle at 34% 32%,#fff4a6 0 16%,#ffd25a 34%,#ff9e2c 70%,#d85e11);box-shadow:0 0 28px #ffc74ac7,0 0 90px #ff8a206b;pointer-events:none;transform:translate(-50%,-50%)}.sun-wash{position:absolute;z-index:2;inset:0;background:radial-gradient(circle at 58% 24%,rgba(255,207,84,.34),transparent 20rem),linear-gradient(132deg,rgba(255,175,55,.26),transparent 46%);mix-blend-mode:screen;pointer-events:none}.map-tilt{position:absolute;z-index:1;inset:-14% -12% -28%;transform:translateY(-108px) rotateX(56deg) rotate(-16deg) scale(1.2);transform-origin:50% 48%}.map-svg{display:block;width:100%;height:100%;min-height:760px;filter:drop-shadow(0 24px 18px rgba(37,50,30,.13))}.radius-ring{fill:#8daee614;stroke:#b8d3ff4d;stroke-dasharray:10 9;stroke-width:3}.sunlit-area{fill:#ffc24894;filter:drop-shadow(0 0 28px rgba(255,146,37,.38));mix-blend-mode:screen}.map-feature.water{fill:#2f679db8;stroke:#81beef70;stroke-width:2}.map-feature.green{fill:#2560508f;stroke:#77bd9b47;stroke-width:1.6}.map-feature.street{fill:none;stroke:#9fb5d37a;stroke-linecap:round;stroke-linejoin:round;stroke-width:8}.map-feature.street+.map-feature.street{stroke-width:5}.shadow{fill:#02071061;stroke:#0207102e;stroke-width:1}.building-wall{fill:#30496f6b}.building-roof{fill:#1b3152;stroke:#b8d3ff47;stroke-width:2}.building-footprint{fill:#607fae2e;stroke:#b8d3ff24;stroke-width:1.4}.sample-point{stroke:#061021;stroke-width:2}.sample-point.clear{fill:#ffd25a;filter:drop-shadow(0 0 5px rgba(255,184,46,.65))}.sample-point.blocked{fill:#33435d}.user-pin circle:first-child{fill:#d7e7ff;stroke:#061021;stroke-width:5}.user-pin circle:last-child{fill:#061021}.place-marker{outline:none}.place-marker circle{fill:#ffd25a;stroke:#061021;stroke-width:5;filter:drop-shadow(0 6px 8px rgba(37,50,30,.24)) drop-shadow(0 0 10px rgba(255,181,43,.48))}.place-marker text{fill:#061021;font-size:15px;font-weight:950;pointer-events:none;text-anchor:middle}.place-marker.patchy circle{fill:#d4a84d}.place-marker.shade circle,.place-marker.night circle{fill:#324158}.place-marker.selected circle{stroke:#dbeaff;stroke-width:7}.results{display:grid;max-height:calc(100vh - 206px);overflow:auto}.spot{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px;border-bottom:1px solid rgba(184,211,255,.09);padding:13px}.spot:hover,.spot.selected{background:#162b4ddb;box-shadow:inset 4px 0 #b8d3ff}.score{display:grid;place-items:center;width:48px;height:48px;border-radius:8px;background:#9dbcf0;font-size:1.05rem;font-weight:950}.spot.shade .score,.spot.night .score{background:#26364f;color:#a9bfdf}.spot.patchy .score{background:#6f8fc4}.spot h2{margin:0;color:#edf5ff;font-size:1rem;line-height:1.2}.spot p{margin:6px 0 0;color:#8fa6c8;font-size:.86rem;font-weight:760;line-height:1.4}.spot a{display:inline-block;margin-top:7px;color:#c9dcff;font-size:.85rem;font-weight:900;text-decoration:none}@media(max-width:980px){.layout{grid-template-columns:1fr}.map-panel{position:static}.results{grid-template-columns:repeat(2,minmax(0,1fr));max-height:none}}@media(max-width:680px){.app-shell{width:min(100% - 16px,1280px);padding:10px 0 18px}.top,.map-strip{align-items:start}.search,.time-card,.results{grid-template-columns:1fr}.sun-count{min-width:88px}.map-frame{min-height:520px}.map-tilt{inset:4% -18% -12%;transform:rotateX(58deg) rotate(-14deg) scale(1.04)}}
