:root{--bg:#f6f1e9;--surface:#fffdf9;--ink:#221d17;--muted:#645b4f;--line:#e3dace;--sun:#ef9a2b;--sun-strong:#c86f0d;--sun-soft:#f7dcb2;--shade:#7b8da3;--night:#e7e1d7;--accent:#a3540a;--warn-ink:#8a4300;--warn-bg:#fbeedb;--radius:14px;--header-h:64px;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:15px;line-height:1.5}*{box-sizing:border-box}body{min-height:100dvh;margin:0}h1,h2,h3,p,ul{margin:0}ul{padding:0;list-style:none}button,input{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}[hidden]{display:none!important}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.top{height:var(--header-h);border-bottom:1px solid var(--line);background:var(--bg);justify-content:space-between;align-items:center;gap:16px;padding:0 20px;display:flex}.brand{align-items:center;gap:12px;min-width:0;display:flex}.brand-mark{fill:none;width:34px;height:34px;stroke:var(--sun-strong);stroke-width:1.8px;stroke-linecap:round;flex:none}.brand-mark circle{fill:var(--sun);stroke:none}.brand-mark .rail{stroke:var(--ink)}.title{letter-spacing:-.01em;font-size:1.05rem;font-weight:650}.tagline{color:var(--muted);font-size:.85rem}.lang{border:1px solid var(--line);background:var(--surface);border-radius:999px;flex:none;padding:2px;display:flex}.lang button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:999px;padding:4px 11px;font-size:.8rem;font-weight:600}.lang button[aria-pressed=true]{background:var(--ink);color:var(--surface)}.layout{height:calc(100dvh - var(--header-h));grid-template-columns:minmax(0,3fr) minmax(360px,2fr);display:grid}.viewer{background:#ece6dc;position:relative;overflow:hidden}.canvas-host{transition:opacity .3s;position:absolute;inset:0}.canvas-host.is-dim{opacity:.35}.scene-canvas{touch-action:none;cursor:crosshair;width:100%;height:100%;display:block}.panel{border-left:1px solid var(--line);flex-direction:column;gap:16px;padding:20px;display:flex;overflow-y:auto}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px}.viewer-overlay{pointer-events:none;place-items:center;padding:24px;display:grid;position:absolute;inset:0}.overlay-card{pointer-events:auto;text-align:center;border:1px solid var(--line);border-radius:var(--radius);background:#fffdf9eb;justify-items:center;gap:10px;max-width:380px;padding:22px 24px;display:grid;box-shadow:0 10px 30px #3c2d1914}.overlay-title{font-size:1.15rem;font-weight:650}.overlay-card p{color:var(--muted)}.progress{background:var(--line);border-radius:4px;width:180px;height:4px;overflow:hidden}.progress span{background:var(--sun);height:100%;transition:width .2s;display:block}.viewer-hint{border:1px solid var(--line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);pointer-events:none;background:#fffdf9eb;border-radius:12px;max-width:460px;padding:10px 14px;font-size:.9rem;position:absolute;top:12px;left:12px;right:12px}.viewer-hint.is-primary p:first-child{font-weight:600}.viewer-hint.is-warning{background:var(--warn-bg);color:var(--warn-ink);border-color:#efd3ad}.hint-sub{color:var(--muted);margin-top:2px;font-size:.8rem}.time-host{max-width:560px;position:absolute;bottom:12px;left:12px;right:12px}.time-controls{border:1px solid var(--line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#fffdf9f0;border-radius:12px;gap:4px;padding:10px 14px;display:grid}.range-row{grid-template-columns:4.6em minmax(0,1fr) 8.5em;align-items:center;gap:10px;font-size:.85rem;display:grid}.range-row label{color:var(--muted)}.range-row.wide{grid-template-columns:minmax(0,1fr);gap:4px}.range-value{font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.range-row.wide .range-value{text-align:left}.range-value.strong{font-weight:600}input[type=range]{width:100%;accent-color:var(--sun-strong);margin:6px 0}.time-foot{justify-content:space-between;align-items:center;gap:10px;display:flex}.sun-status{color:var(--muted);font-size:.85rem}.spot{color:var(--ink);white-space:nowrap;font-weight:600}.dot{vertical-align:0;border-radius:50%;width:9px;height:9px;margin-right:5px;display:inline-block}.spot-sunny .dot{background:var(--sun)}.spot-shaded .dot{background:var(--shade)}.spot-off .dot{background:#b9b0a3}.chip{border:1px solid var(--line);background:var(--surface);cursor:pointer;border-radius:999px;flex:none;padding:3px 12px;font-size:.8rem}.field-label{margin-bottom:6px;font-size:.85rem;font-weight:600;display:block}.search-box{position:relative}.search input{background:var(--surface);border:1px solid #d6ccbd;border-radius:12px;width:100%;padding:11px 14px;font-size:1rem}.search input:focus-visible{outline-offset:0;border-color:var(--accent)}.suggestions{z-index:5;background:var(--surface);border:1px solid var(--line);border-radius:12px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow:hidden;box-shadow:0 12px 30px #3c2d191f}.suggestion{cursor:pointer;padding:9px 14px;display:grid}.suggestion[aria-selected=true],.suggestion:hover{background:#f7efe2}.suggestion-main{font-weight:550}.suggestion-detail{color:var(--muted);font-size:.82rem}.search-status{min-height:1.4em;color:var(--muted);margin-top:6px;font-size:.85rem}.search-status:empty{min-height:0;margin:0}.search-status.is-warning{color:var(--warn-ink)}.section-title{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:.8rem;font-weight:600}.facade{gap:6px;display:grid}.facade-orientation{font-size:1.05rem;font-weight:600}.note{color:var(--muted);font-size:.82rem}.note.is-warning,.hint.is-warning{color:var(--warn-ink)}.notice{background:var(--warn-bg);border-radius:12px;padding:10px 14px}.tabs{background:#f1eadf;border-radius:11px;grid-template-columns:1fr 1fr;gap:4px;margin-bottom:16px;padding:3px;display:grid}.tabs [role=tab]{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:9px;padding:8px 10px;font-weight:600}.tabs [role=tab][aria-selected=true]{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px #3c2d191f}.tab-panel{gap:16px;display:grid}.empty,.loading{color:var(--muted)}.loading{align-items:center;gap:10px;display:flex}.error{color:var(--warn-ink);justify-items:start;gap:10px;display:grid}.button{background:var(--ink);color:var(--surface);cursor:pointer;border:0;border-radius:10px;padding:8px 16px;font-weight:600}.link{color:var(--accent);cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.headline{gap:4px;display:grid}.headline-value{letter-spacing:-.015em;font-size:1.45rem;font-weight:650;line-height:1.25}.headline-sub{color:var(--muted)}.month-list{font-variant-numeric:tabular-nums;gap:4px;display:grid}.month-list.key li{border-left:3px solid var(--sun-soft);padding-left:12px}.subhead{margin-bottom:-8px;font-size:.85rem;font-weight:600}.stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.stats.two{grid-template-columns:repeat(2,minmax(0,1fr))}.stat{background:#f8f2e8;border-radius:10px;gap:2px;padding:10px 12px;display:grid}.stat-label{color:var(--muted);font-size:.78rem}.stat-value{font-variant-numeric:tabular-nums;font-weight:600}.sun-grid{gap:12px;display:grid}.grid{gap:2px;display:grid}.grid-row{grid-template-columns:2.3em repeat(24,minmax(0,1fr));align-items:center;gap:2px;display:grid}.grid-month,.grid-hour{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.72rem}.grid-hour{text-align:left}.cell{aspect-ratio:1/1.2;cursor:pointer;border-radius:3px;display:block}.cell:hover{outline:1.5px solid var(--ink);outline-offset:0}.cell-sunny{background:rgb(239 154 43/var(--alpha,1))}.cell-shaded{background:rgb(123 141 163/var(--alpha,1))}.cell-off{background:var(--night)}.legend{color:var(--muted);flex-wrap:wrap;gap:6px 16px;font-size:.8rem;display:flex}.legend li{align-items:center;gap:6px;display:flex}.swatch{border-radius:3px;width:12px;height:12px;display:inline-block}.details{gap:14px;display:grid}.disclosure{border:1px solid var(--line);background:var(--surface);cursor:pointer;border-radius:10px;justify-self:start;padding:7px 14px;font-weight:600}.disclosure:after{content:" ▾";color:var(--muted)}.disclosure[aria-expanded=true]:after{content:" ▴"}.details-body{gap:14px;display:grid}.polar{justify-self:center;width:100%;max-width:320px}.polar-sky{fill:#fffaf1}.polar-obstacle{fill:#7b8da38c}.polar-wall{fill:#3c342bc7}.polar-ring,.polar-rim{fill:none;stroke:#d8cfc1;stroke-width:1px}.polar-rim{stroke:#b9ad9b}.polar-tick,.polar-sun-label{fill:var(--muted);font-size:9px}.polar-sun-label{fill:var(--sun-strong);font-weight:600}.polar-compass{fill:var(--ink);font-size:11px;font-weight:600}.polar-sun{fill:none;stroke:var(--sun-strong);stroke-width:2px;stroke-linecap:round}.polar-normal{stroke:var(--sun-strong);stroke-width:1.5px;stroke-dasharray:3 3}.inputs{grid-template-columns:1fr 1fr;gap:12px;display:grid}.field input{background:var(--surface);font-variant-numeric:tabular-nums;border:1px solid #d6ccbd;border-radius:10px;width:100%;padding:9px 12px}.field input[aria-invalid=true]{border-color:var(--warn-ink)}.hint{color:var(--muted);margin-top:4px;font-size:.78rem}.bars-wrap{gap:12px;display:grid}.bars{grid-template-columns:repeat(12,minmax(0,1fr));gap:6px;height:130px;display:grid}.bar{grid-template-rows:1fr auto;gap:4px;min-height:0;display:grid}.bar-track{position:relative}.bar-free,.bar-shaded{border-radius:3px 3px 0 0;position:absolute;bottom:0}.bar-free{background:var(--sun-soft);left:0;right:0}.bar-shaded{background:var(--sun-strong);left:22%;right:22%}.legend .bar-free,.legend .bar-shaded{border-radius:3px;position:static}.bar-label{color:var(--muted);text-align:center;font-size:.72rem}.foot{color:var(--muted);gap:6px;margin-top:auto;padding-top:8px;font-size:.75rem;display:grid}.spinner{vertical-align:-2px;border:2px solid var(--line);border-top-color:var(--sun-strong);border-radius:50%;width:14px;height:14px;margin-right:6px;animation:.8s linear infinite spin;display:inline-block}.spinner.large{border-width:3px;width:26px;height:26px;margin:0}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:2.4s}.canvas-host,.progress span{transition:none}}@media (max-width:768px){:root{--header-h:auto}.top{padding:10px 14px}.tagline{display:none}.layout{height:auto;display:block}.viewer{z-index:3;height:45vh;border-bottom:1px solid var(--line);height:45svh;position:sticky;top:0}.panel{border-left:0;padding:16px 14px 28px;overflow:visible}.viewer-hint{padding:8px 12px;top:8px;left:8px;right:8px}.hint-sub{display:none}.time-host{bottom:8px;left:8px;right:8px}.time-controls{gap:0;padding:6px 10px}.range-row{grid-template-columns:4.2em minmax(0,1fr) 7.6em;gap:8px;font-size:.8rem}input[type=range]{min-height:28px;margin:2px 0}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.inputs{grid-template-columns:1fr}.grid-row{grid-template-columns:2em repeat(24,minmax(0,1fr));gap:1px}.grid{gap:1px}}
