:root{--color-space-dark:#0a0e27;--color-space-mid:#1a1f3a;--color-space-light:#2d3561;--color-moon-light:#f4f1de;--color-moon-shadow:#3d405b;--color-moon-glow:#f4f1de4d;--color-excellent:#3fba6d;--color-good:#5b9bdb;--color-fair:#e6a835;--color-poor:#e08856;--color-none:#8b7f9e;--color-stars:#fff;--color-text-primary:#e2e8f0;--color-text-secondary:#94a3b8;--color-text-muted:#64748b;--spacing-xs:.5rem;--spacing-sm:1rem;--spacing-md:1.5rem;--spacing-lg:2rem;--spacing-xl:3rem;--chart-height:120px;--chart-padding:var(--spacing-sm);--timeline-indicator-offset:55px;--radius-sm:.5rem;--radius-md:1rem;--radius-lg:1rem;--shadow-sm:0 2px 8px #0003;--shadow-md:0 4px 16px #0000004d;--shadow-lg:0 8px 32px #0006, inset 0 1px 0 #ffffff1a;--font-heading:"Space Grotesk", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-body:"Work Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-size-xs:.75rem;--font-size-sm:.875rem;--font-size-base:1rem;--font-size-lg:1.125rem;--font-size-xl:1.5rem;--font-size-2xl:2rem;--font-size-3xl:3rem}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading-spinner{animation:1s linear infinite spin}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.city-card:first-child{animation-delay:.1s}.city-card:nth-child(2){animation-delay:.2s}.city-card:nth-child(3){animation-delay:.3s}.city-card:nth-child(4){animation-delay:.4s}.city-card:nth-child(5){animation-delay:.5s}@keyframes moonGlow{0%,to{filter:drop-shadow(0 0 8px var(--color-moon-glow))}50%{filter:drop-shadow(0 0 16px var(--color-moon-glow))}}.moon-canvas{animation:4s ease-in-out infinite moonGlow}html{scroll-behavior:smooth}@keyframes twinkle{0%,to{opacity:.5}50%{opacity:1}}body:before{animation:5s ease-in-out infinite twinkle}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}html{background:var(--color-space-dark)}body{font-family:var(--font-body);background:radial-gradient(ellipse at 20% 30%, #5856d61a 0%, transparent 50%), radial-gradient(ellipse at 80% 70%, #8b5cf614 0%, transparent 50%), linear-gradient(180deg, var(--color-space-dark) 0%, var(--color-space-mid) 100%);color:var(--color-text-primary);min-height:100vh;padding:var(--spacing-md);background-attachment:fixed;position:relative;overflow-x:hidden}body:before{content:"";opacity:.6;z-index:0;pointer-events:none;background-image:radial-gradient(2px 2px at 20% 30%,#fff,#0000),radial-gradient(2px 2px at 60% 70%,#c8dcffe6,#0000),radial-gradient(3px 3px,#fff,#0000),radial-gradient(1px 1px at 80% 10%,#fff0dce6,#0000),radial-gradient(2px 2px at 90% 60%,#fff,#0000),radial-gradient(1px 1px at 33% 80%,#dcdcffcc,#0000),radial-gradient(2px 2px at 15% 90%,#ffffffe6,#0000),radial-gradient(2px 2px at 75% 25%,#fff,#0000),radial-gradient(1px 1px at 10% 60%,#c8dcffe6,#0000),radial-gradient(1px 1px at 45% 15%,#fff,#0000),radial-gradient(2px 2px at 85% 85%,#fff0dccc,#0000),radial-gradient(1px 1px at 25% 45%,#fff,#0000),radial-gradient(1px 1px at 70% 55%,#ffffffb3,#0000),radial-gradient(2px 2px at 35% 65%,#c8dcffd9,#0000),radial-gradient(1px 1px at 55% 35%,#fff,#0000),radial-gradient(1px 1px at 15% 20%,#fff0dcbf,#0000),radial-gradient(2px 2px at 92% 40%,#fff,#0000),radial-gradient(1px 1px at 40% 90%,#dcdcffb3,#0000),radial-gradient(1px 1px at 65% 12%,#fff,#0000),radial-gradient(2px 2px at 12%,#ffffffd9,#0000);background-position:0 0;background-size:100% 100%;width:100%;height:100%;position:fixed;top:0;left:0}body:after{content:"";pointer-events:none;z-index:9999;opacity:0;background:radial-gradient(circle,#8b5cf626 0%,#0000 70%);border-radius:50%;width:400px;height:400px;transition:opacity .3s;position:fixed;transform:translate(-50%,-50%)}#app{z-index:1;max-width:1400px;margin:0 auto;position:relative}.header{text-align:center;margin-bottom:var(--spacing-xl)}.title{font-family:var(--font-heading);font-size:var(--font-size-3xl);margin-bottom:var(--spacing-xs);text-shadow:0 0 30px #f4f1de66;letter-spacing:-.02em;font-weight:700}.subtitle{font-size:var(--font-size-lg);color:var(--color-text-secondary);letter-spacing:.01em;font-weight:400}.city-selector{gap:var(--spacing-sm);margin-bottom:var(--spacing-xl);flex-wrap:wrap;justify-content:center;display:flex}.city-selector-btn{color:var(--color-text-secondary);padding:var(--spacing-xs) var(--spacing-md);border-radius:var(--radius-sm);cursor:pointer;font-size:var(--font-size-sm);letter-spacing:.02em;background:#ffffff0d;border:1px solid #ffffff1a;font-weight:500;transition:all .3s cubic-bezier(.4,0,.2,1)}.city-selector-btn:hover{color:var(--color-text-primary);background:#ffffff1a;border-color:#fff3;transform:translateY(-2px)}.city-selector-btn.active{color:var(--color-text-primary);background:#8b5cf633;border-color:#8b5cf666}.city-display{max-width:900px;padding:0 var(--spacing-md);margin:0 auto}.city-content{animation:.6s cubic-bezier(.4,0,.2,1) forwards fadeInUp}.city-header{text-align:center;margin-bottom:var(--spacing-xl)}.city-name{font-family:var(--font-heading);letter-spacing:-.02em;margin-bottom:var(--spacing-xs);background:linear-gradient(135deg,#e2e8f0 0%,#94a3b8 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:3rem;font-weight:700;transition:all .3s}.city-name:hover{transform:scale(1.05)}.city-time{font-size:var(--font-size-base);color:var(--color-text-secondary);font-weight:400}.moon-section{gap:var(--spacing-xl);margin-bottom:var(--spacing-xl);grid-template-columns:1fr 1fr;align-items:center;display:grid}@media (max-width:768px){.moon-section{gap:var(--spacing-lg);grid-template-columns:1fr}.visibility-info{text-align:center;align-items:center}}.moon-canvas-container{justify-content:center;align-items:center;gap:var(--spacing-sm);flex-direction:column;transition:transform .3s;display:flex}.moon-canvas-container:hover{transform:scale(1.05)}.moon-phase-label{font-family:var(--font-heading);font-size:var(--font-size-sm);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.1em;text-align:center;font-weight:600;transition:color .3s}.moon-canvas-container:hover .moon-phase-label{color:var(--color-text-primary)}.moon-folklore-name{font-family:var(--font-body);font-size:var(--font-size-xs);color:var(--color-text-muted);letter-spacing:.06em;text-align:center;opacity:.8;font-style:italic;transition:opacity .3s}.moon-canvas-container:hover .moon-folklore-name{opacity:1}.visibility-info{gap:var(--spacing-md);flex-direction:column;display:flex}.visibility-label{font-family:var(--font-heading);font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--spacing-xs);text-transform:uppercase;letter-spacing:.1em;font-weight:600}.visibility-value{font-family:var(--font-heading);margin-bottom:var(--spacing-sm);letter-spacing:-.03em;background:linear-gradient(135deg, var(--color-text-primary) 0%, var(--color-text-secondary) 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:4rem;font-weight:700;line-height:1;transition:all .3s}.visibility-value:hover{transform:scale(1.05)}.visibility-text{font-size:var(--font-size-base);padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-sm);opacity:.7;border:1px solid;font-weight:600;transition:all .3s;display:inline-block;background:0 0!important}.visibility-text:hover{opacity:1;transform:translate(4px)}.moon-times{font-size:var(--font-size-sm);color:var(--color-text-muted);gap:var(--spacing-xs);margin-top:var(--spacing-sm);flex-direction:column;display:flex}.moon-times span{cursor:default;padding:var(--spacing-xs);border-radius:var(--radius-sm);transition:all .3s}.moon-times span:hover{color:var(--color-text-primary);background:#ffffff0d;transform:translate(4px)}.timeline-section{margin-top:var(--spacing-xl)}.timeline-header{font-family:var(--font-heading);font-size:var(--font-size-xs);color:var(--color-text-muted);margin-bottom:var(--spacing-md);text-transform:uppercase;letter-spacing:.1em;text-align:center;font-weight:600}.day-boxes{gap:var(--spacing-lg);grid-template-columns:1fr 1fr;display:grid}@media (max-width:768px){.day-boxes{grid-template-columns:1fr}}.day-box{border-radius:var(--radius-md);padding:var(--spacing-md);background:#ffffff08;border:1px solid #ffffff1a;transition:all .3s}.day-box:hover{background:#ffffff0d;border-color:#ffffff26;transform:translateY(-4px);box-shadow:0 8px 24px #0000004d}.day-box-label{font-family:var(--font-heading);font-size:var(--font-size-lg);margin-bottom:var(--spacing-md);text-align:center;color:var(--color-text-primary);letter-spacing:.02em;font-weight:600}.day-box-chart-wrapper{position:relative}.day-box-chart{height:var(--chart-height);border-radius:var(--radius-sm);padding:var(--chart-padding);background:#0003;align-items:flex-end;gap:3px;display:flex;position:relative;overflow:hidden}.timeline-bar{cursor:pointer;border-radius:3px;flex:1;min-width:0;transition:all .2s cubic-bezier(.4,0,.2,1);position:relative}.timeline-bar:hover{opacity:.9;flex-basis:14px;transform:scaleY(1.05)}.timeline-bar-tooltip{color:#fff;padding:var(--spacing-xs);border-radius:var(--radius-sm);font-size:var(--font-size-xs);white-space:nowrap;pointer-events:none;opacity:0;z-index:10;background:#000000e6;margin-bottom:4px;transition:opacity .2s;position:absolute;bottom:100%;left:50%;transform:translate(-50%)}.timeline-bar:hover .timeline-bar-tooltip{opacity:1}.day-box-xaxis{height:24px;margin-top:var(--spacing-xs);padding:0 var(--spacing-sm);justify-content:space-between;display:flex;position:relative}.xaxis-marker{font-size:var(--font-size-xs);color:var(--color-text-muted);white-space:nowrap;opacity:.7;position:absolute;transform:translate(-50%)}.current-time-indicator{bottom:var(--chart-padding);pointer-events:none;z-index:5;background:linear-gradient(#0000 0%,#8b5cf64d 20%,#8b5cf699 50%,#8b5cf6cc 80%,#8b5cf6 100%);width:2px;height:40%;position:absolute;transform:translate(-50%);box-shadow:0 0 8px #8b5cf680}.loading{text-align:center;padding:var(--spacing-xl);color:var(--color-text-secondary)}.loading-spinner{border:3px solid #ffffff1a;border-top-color:var(--color-moon-light);width:40px;height:40px;margin:0 auto var(--spacing-md);border-radius:50%}.footer{text-align:center;padding:var(--spacing-lg) 0;color:var(--color-text-muted);font-size:var(--font-size-sm)}.footer a{color:var(--color-text-secondary);text-decoration:none;transition:color .2s}.footer a:hover{color:var(--color-text-primary)}
