:root{color-scheme:light dark;--bg: #eef4f8;--bg-soft: #dcecf5;--surface: #ffffff;--surface-2: #f7fafc;--surface-3: #edf3f8;--text: #0f172a;--text-soft: #334155;--muted: #64748b;--border: rgba(148, 163, 184, .28);--border-strong: rgba(100, 116, 139, .35);--primary: #0284c7;--primary-soft: #e0f2fe;--water: #0ea5e9;--temp: #f59e0b;--level: #0284c7;--wind: #10b981;--pressure: #8b5cf6;--moon: #6366f1;--good: #16a34a;--warn: #d97706;--bad: #dc2626;--radius-lg: 22px;--radius-md: 16px;--radius-sm: 12px;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .06);--shadow-md: 0 12px 32px -18px rgba(15, 23, 42, .35);--container: 1180px;--font: "Segoe UI", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif}@media(prefers-color-scheme:dark){:root{--bg: #07131d;--bg-soft: #0b1c29;--surface: #0f2231;--surface-2: #132a3b;--surface-3: #0b1c29;--text: #e2e8f0;--text-soft: #cbd5e1;--muted: #94a3b8;--border: rgba(148, 163, 184, .18);--border-strong: rgba(148, 163, 184, .28);--primary: #38bdf8;--primary-soft: rgba(56, 189, 248, .14);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 20px 40px -24px rgba(0, 0, 0, .7)}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;min-height:100vh;font-family:var(--font);color:var(--text);line-height:1.5;background:radial-gradient(circle at 15% 0%,var(--bg-soft),var(--bg) 45%) fixed}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}button,select{font:inherit}h1,h2,h3,p{margin:0}.container{width:min(var(--container),calc(100% - 32px));margin:0 auto}.app-header{position:sticky;top:0;z-index:20;background:var(--surface);background:color-mix(in srgb,var(--surface) 88%,transparent);border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.header-inner{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:14px 0}.brand{display:flex;align-items:center;gap:12px}.brand-mark{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;font-weight:800;letter-spacing:.5px;color:#fff;background:linear-gradient(135deg,#0ea5e9,#0d9488);box-shadow:var(--shadow-sm)}.brand h1{font-size:1.05rem;letter-spacing:-.01em}.brand p{color:var(--muted);font-size:.8rem}.header-controls{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}.field{display:flex;flex-direction:column;gap:4px;font-size:.7rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.field select{min-width:132px;padding:9px 12px;border-radius:10px;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text)}.btn{border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text);padding:10px 16px;border-radius:10px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:8px}.btn:disabled{opacity:.7;cursor:wait}.btn-primary{border:none;color:#fff;background:linear-gradient(135deg,#0284c7,#0891b2);box-shadow:var(--shadow-sm)}.spinner{width:14px;height:14px;border-radius:50%;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;animation:spin .8s linear infinite}.header-meta{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:0 0 12px;font-size:.78rem;color:var(--muted)}.dashboard{display:grid;gap:18px;padding:24px 0 48px}.dashboard-grid{display:grid;grid-template-columns:1fr;gap:18px}@media(min-width:900px){.dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.span-2{grid-column:span 2}}.section-card{display:flex;flex-direction:column;gap:16px;min-width:0;padding:20px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.section-head h2{font-size:1.05rem;letter-spacing:-.01em}.section-head p{margin-top:2px;color:var(--muted);font-size:.82rem}.section-actions{display:flex;gap:8px}.score-card{display:grid;gap:20px;overflow:hidden;background:linear-gradient(135deg,var(--surface),var(--surface-2))}@media(min-width:900px){.score-card{grid-template-columns:minmax(280px,.9fr) 1.4fr;align-items:center}}.score-main{display:flex;align-items:center;gap:20px}.gauge{--score: 0;--score-color: #0ea5e9;position:relative;width:132px;height:132px;flex:0 0 auto;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--score-color) calc(var(--score) * 1%),var(--surface-3) 0);box-shadow:inset 0 0 0 1px var(--border)}.gauge:before{content:"";position:absolute;top:10px;right:10px;bottom:10px;left:10px;border-radius:50%;background:var(--surface)}.gauge-inner{position:relative;display:flex;align-items:baseline;gap:2px}.gauge-value{font-size:2.2rem;font-weight:800;letter-spacing:-.04em}.gauge-max{color:var(--muted);font-size:.8rem}.score-copy h2{font-size:1.6rem;letter-spacing:-.02em}.eyebrow{color:var(--primary);font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.score-desc{max-width:46ch;margin-top:6px;color:var(--text-soft);font-size:.9rem}.score-missing{margin-top:6px;color:var(--warn);font-size:.78rem}.factor-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}.factor{padding:10px 12px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm)}.factor-head{display:flex;justify-content:space-between;gap:8px;font-size:.8rem}.factor-label{font-weight:600}.factor-contribution{color:var(--good);font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}.factor-bar{height:6px;margin:8px 0 6px;border-radius:999px;background:var(--surface-3);overflow:hidden}.factor-bar span{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#0ea5e9,#10b981)}.factor-detail{color:var(--muted);font-size:.72rem}.score-note{grid-column:1 / -1;padding-top:10px;border-top:1px dashed var(--border);color:var(--muted);font-size:.72rem}.score-loading{display:flex;flex-direction:column;gap:10px}.metric-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}.metric-card{position:relative;display:flex;flex-direction:column;gap:6px;padding:14px;overflow:hidden;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-md)}.metric-card:before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:var(--accent, var(--water))}.accent-water{--accent: var(--water)}.accent-temp{--accent: var(--temp)}.accent-level{--accent: var(--level)}.accent-wind{--accent: var(--wind)}.accent-pressure{--accent: var(--pressure)}.accent-moon{--accent: var(--moon)}.metric-label{color:var(--muted);font-size:.72rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.metric-value{display:flex;align-items:baseline;gap:4px;font-size:1.6rem;font-weight:750;letter-spacing:-.03em;line-height:1.1}.metric-unit{color:var(--muted);font-size:.8rem;font-weight:600}.metric-hint{color:var(--muted);font-size:.72rem}.delta{display:inline-flex;align-items:center;gap:5px;color:var(--text-soft);font-size:.78rem;font-weight:600}.delta.muted{color:var(--muted)}.delta-arrow{font-size:.85rem}.delta-label{color:var(--muted);font-weight:500}.tabs{display:inline-flex;gap:4px;width:fit-content;padding:4px;background:var(--surface-3);border-radius:999px}.tab{border:none;border-radius:999px;padding:7px 14px;background:transparent;color:var(--muted);font-size:.8rem;font-weight:600;cursor:pointer}.tab.active{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm)}.chart-grid{display:grid;grid-template-columns:1fr;gap:16px}@media(min-width:1100px){.chart-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.chart-block{min-width:0}.chart-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:8px}.chart-head h3{font-size:.86rem;font-weight:650}.chart-unit{color:var(--muted);font-size:.72rem}.chart-wrap{position:relative;width:100%}.weather-top{display:flex;align-items:center;gap:16px}.weather-top .metric-grid{flex:1}@media(max-width:700px){.weather-top{flex-direction:column;align-items:stretch}}.wind-compass{position:relative;width:96px;height:96px;flex:0 0 auto;border-radius:50%;border:1px solid var(--border-strong);display:grid;place-items:center;background:radial-gradient(circle,var(--surface-2),var(--surface));color:var(--muted);font-size:.62rem;font-weight:700}.compass-arrow{font-size:1.8rem;line-height:1;color:var(--water);transition:transform .4s ease}.compass-n,.compass-e,.compass-s,.compass-o{position:absolute}.compass-n{top:6px}.compass-e{right:9px}.compass-s{bottom:6px}.compass-o{left:9px}.moon-grid{display:grid;grid-template-columns:1fr;gap:16px}@media(min-width:700px){.moon-grid{grid-template-columns:1fr 1.4fr;align-items:center}}.moon-card{display:flex;align-items:center;gap:16px;padding:16px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-md)}.moon-disc{width:72px;height:72px;flex:0 0 auto;border-radius:50%;box-shadow:inset 0 0 0 1px var(--border-strong)}.moon-card h3{font-size:1.1rem}.moon-times{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.moon-times>div{display:flex;flex-direction:column;gap:2px;padding:10px 12px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm)}.moon-times span{color:var(--muted);font-size:.72rem}.moon-times strong{font-size:1.05rem}.solunar-list{display:flex;flex-direction:column;gap:8px}.solunar-row{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:.82rem}.solunar-row.now{border-color:var(--good);box-shadow:inset 0 0 0 1px var(--good)}.solunar-row.next{border-color:var(--primary)}.solunar-type{padding:3px 7px;border-radius:999px;background:var(--surface-3);color:var(--muted);font-size:.66rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.solunar-type.major{background:var(--primary-soft);color:var(--primary)}.solunar-label{flex:1;font-weight:600}.solunar-time{color:var(--text-soft);font-variant-numeric:tabular-nums}.tag{padding:3px 7px;border-radius:999px;background:var(--good);color:#fff;font-size:.66rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.tag.subtle{background:var(--primary-soft);color:var(--primary)}@media(max-width:560px){.solunar-row{flex-wrap:wrap}.solunar-time{width:100%}}.notice{padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);font-size:.8rem}.notice.warning{border-color:#d9770659;background:#d977061a;color:var(--warn)}.planning-bar{gap:14px}.planning-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}.planning-head h2{font-size:1.2rem;letter-spacing:-.01em}.planning-head p{max-width:70ch;color:var(--muted);font-size:.82rem}.date-strip{display:flex;gap:8px;overflow-x:auto;padding:2px 0 6px;scrollbar-width:thin}.date-chip{position:relative;display:flex;flex:0 0 auto;flex-direction:column;align-items:center;gap:1px;min-width:76px;padding:10px 12px 8px;border:1px solid var(--border);border-radius:14px;background:var(--surface-2);color:var(--text);cursor:pointer;transition:border-color .15s ease,background .15s ease,transform .15s ease}.date-chip:hover{border-color:var(--border-strong);transform:translateY(-1px)}.date-chip.active{border-color:var(--primary);background:var(--primary-soft);box-shadow:inset 0 0 0 1px var(--primary)}.date-weekday{color:var(--muted);font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.date-day{font-size:1.35rem;font-weight:750;line-height:1.1}.date-month{color:var(--muted);font-size:.66rem;letter-spacing:.06em;text-transform:uppercase}.date-tag{position:absolute;top:-8px;right:6px;padding:1px 6px;border-radius:999px;background:var(--primary);color:#fff;font-size:.58rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.date-tag.subtle{background:var(--surface-3);color:var(--muted)}.planning-notice{border-color:#0ea5e959;background:#0ea5e914;color:var(--text-soft)}.planning-notice strong{color:var(--primary)}.chart-meta{display:flex;align-items:center;gap:8px}.chart-source{padding:2px 7px;border-radius:999px;background:var(--primary-soft);color:var(--primary);font-size:.64rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}.score-date{margin-top:4px;color:var(--muted);font-size:.78rem}.score-future-note{margin-top:6px;color:var(--warn);font-size:.76rem}.error-banner{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px;padding:10px 12px;border:1px solid rgba(220,38,38,.3);border-radius:var(--radius-sm);background:#dc262614;color:var(--bad);font-size:.8rem}.skeleton{position:relative;overflow:hidden;background:var(--surface-3);border-radius:8px}.skeleton:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.35),transparent);animation:shimmer 1.4s infinite}@media(prefers-color-scheme:dark){.skeleton:after{background:linear-gradient(90deg,transparent,rgba(255,255,255,.08),transparent)}}.skeleton-line{width:100%;height:12px}.skeleton-line.short{width:60%}.skeleton-title{width:40%;height:18px;margin-bottom:10px}.skeleton-value{width:70%;height:30px}.skeleton-card{display:flex;flex-direction:column;gap:10px;padding:12px}.muted{color:var(--muted)}.grow{flex:1}.site-footer{padding:24px 0 40px;border-top:1px solid var(--border);color:var(--muted);font-size:.78rem}.footer-inner{display:flex;flex-direction:column;gap:6px}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shimmer{to{transform:translate(100%)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
