:root{--bg:#070b1a;--panel:#101834c7;--panel-solid:#141d3d;--line:#a0beff2e;--text:#f4f6ff;--muted:#aab6dc;--sun:#ffc62e;--sky:#5fb3ff;--mint:#5ce1a0;--pink:#ff7b9c;--night:#7aa7ff;--radius:20px;--tap:48px;color:var(--text);background:var(--bg);font-family:Fredoka,ui-rounded,SF Pro Rounded,system-ui,sans-serif}*{box-sizing:border-box}html,body{overscroll-behavior:none;background:var(--bg);-webkit-tap-highlight-color:transparent;height:100%;margin:0;overflow:hidden}button,input{font:inherit;color:inherit}button{cursor:pointer}[hidden]{display:none!important}#app{position:fixed;inset:0}.stage{position:absolute;inset:0;overflow:hidden}.scene-canvas{touch-action:none;cursor:grab;width:100%;height:100%;display:block}.scene-canvas:active{cursor:grabbing}body[data-grab=spin] .scene-canvas{cursor:ew-resize}.no-webgl{text-align:center;place-items:center;height:100%;padding:2rem;font-size:1.4rem;display:grid}.label-layer{pointer-events:none;position:absolute;inset:0;overflow:hidden}.label{white-space:nowrap;pointer-events:none;-webkit-user-select:none;user-select:none;border:0;border:1px solid var(--line);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);will-change:transform;background:#0a1028b8;border-radius:999px;padding:3px 10px;font-size:.85rem;line-height:1.3;position:absolute;top:0;left:0}.label-body{padding:4px 12px;font-size:1rem;font-weight:600}.label-city{color:#e6ecff;margin-top:-4px;font-size:.75rem}.label-clickable{box-shadow:0 0 0 1px #ffffff14}.label-phase{transform-origin:50%;background:#0a10288c;padding:2px 6px;font-size:1.3rem}.label-phase.main{background:#141e46d9;border-color:#ffffff47;padding:4px 10px;font-size:.95rem;font-weight:600}.label-phase-arc{padding:4px 12px;font-size:.9rem;font-weight:600}.label-phase-arc.waxing{color:#03281a;background:#5ce1a0d9}.label-phase-arc.waning{color:#2a0010;background:#ff7b9cd9}.label-mark{color:#fff6c9;font-size:.8rem}.label-apsis{text-align:center;border-radius:12px;padding:4px 10px;font-size:.8rem;font-weight:600;line-height:1.25}.label-apsis small{font-size:.72rem;font-weight:400}.label-apsis.near{border-color:#ff9f43b3}.label-apsis.far{border-color:#7cc8ffb3}.label-explain{transform-origin:50%;padding:6px 16px;font-size:1.15rem;font-weight:600}.label-explain.day{color:#3a2800;background:#ffc62ee6}.label-explain.night{color:#dfe8ff;background:#283c8ce6}.ui{pointer-events:none;padding:max(10px, env(safe-area-inset-top)) max(10px, env(safe-area-inset-right)) max(10px, env(safe-area-inset-bottom)) max(10px, env(safe-area-inset-left));grid-template:"top top top""left mid right"1fr"bottom bottom bottom"/minmax(0,320px) 1fr minmax(0,320px);gap:10px;display:grid;position:absolute;inset:0}.ui>*{pointer-events:auto}.side{pointer-events:none;flex-direction:column;gap:10px;min-height:0;display:flex}.side>*{pointer-events:auto}.side-left{grid-area:left}.side-right{grid-area:right;align-items:stretch}.panel,.toolbar,.timebar,.explain-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);-webkit-backdrop-filter:blur(12px);box-shadow:0 10px 30px #00000059}.toolbar{flex-wrap:wrap;grid-area:top;justify-self:stretch;align-items:center;gap:10px;padding:6px;display:flex}.tabs{background:#00000040;border-radius:999px;gap:4px;padding:4px;display:flex}.tab{min-height:42px;color:var(--muted);background:0 0;border:0;border-radius:999px;padding:0 16px;font-size:1rem;font-weight:600}.tab.active{background:var(--sun);color:#2b1d00}.abacus-badge{color:#2b1d00;white-space:nowrap;background:linear-gradient(135deg,#ffd65a,#ff9f43);border-radius:999px;align-items:center;gap:4px;min-height:34px;padding:0 12px;font-size:.85rem;font-weight:600;text-decoration:none;transition:transform .12s;display:inline-flex;box-shadow:0 2px 10px #ff9f4359}.abacus-badge small{background:#ffffff8c;border-radius:999px;padding:0 6px;font-size:.7rem;font-weight:600}.abacus-badge:hover{transform:translateY(-1px)scale(1.03)}.focus-row{align-items:center;gap:6px;margin-left:auto;display:flex}.focus-label{color:var(--muted);font-size:.9rem}.tool-buttons{gap:6px;margin-left:auto;display:flex}.focus-row+.tool-buttons{margin-left:12px}.round-btn{width:var(--tap);height:var(--tap);border:1px solid var(--line);background:#ffffff12;border-radius:50%;place-items:center;font-size:1.35rem;transition:transform .12s,background .12s;display:grid}.round-btn:hover{background:#ffffff29}.round-btn:active{transform:scale(.92)}.round-btn.active{background:var(--sky);border-color:#0000;box-shadow:0 0 0 3px #5fb3ff59}.menu-wrap{position:relative}.menu{z-index:5;background:var(--panel-solid);border:1px solid var(--line);border-radius:16px;flex-direction:column;min-width:240px;padding:6px;display:flex;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 10px 30px #00000080}.menu-item{text-align:left;min-height:var(--tap);background:0 0;border:0;border-radius:12px;padding:12px 14px;font-size:1rem}.menu-item:after{content:"⬜";float:right}.menu-item.active:after{content:"✅"}.menu-item:hover{background:#ffffff14}.panel{scrollbar-width:thin;flex-direction:column;min-height:0;max-height:100%;display:flex;overflow:auto}.panel-toggle{text-align:left;min-height:44px;color:var(--muted);background:0 0;border:0;padding:12px 16px 4px;font-size:1rem;font-weight:600}.panel-toggle:after{content:"▾";float:right}.panel.collapsed .panel-toggle{padding-bottom:12px}.panel.collapsed .panel-toggle:after{content:"▸"}.panel.collapsed .panel-body{display:none}.panel.collapsed{align-self:flex-start}.panel-body{flex-direction:column;gap:10px;padding:4px 16px 16px;display:flex}.place-title{font-size:1.3rem;font-weight:600}.place-clock{letter-spacing:.5px;font-size:2.4rem;font-weight:600;line-height:1}.place-date{color:var(--muted);font-size:.9rem}.place-note{color:var(--muted);font-size:.8rem}.place-note:empty{display:none}.sky-status{border-radius:14px;flex-direction:column;gap:2px;padding:10px 12px;display:flex}.sky-status strong{font-size:1.25rem}.sky-status span{opacity:.9;font-size:.85rem}.sky-status.day{color:#3a2600;background:linear-gradient(135deg,#ffd65a,#ff9f43)}.sky-status.twilight{background:linear-gradient(135deg,#ff8a65,#7e57c2)}.sky-status.night{background:linear-gradient(135deg,#1e2b6b,#3949ab)}.place-facts,.moon-stats,.seasons-info{gap:4px;display:grid}.place-facts>div,.moon-stats>div,.seasons-info>div,.moon-upcoming li{border-bottom:1px dashed var(--line);justify-content:space-between;gap:10px;padding:4px 0;font-size:.92rem;display:flex}.place-facts span,.moon-stats span,.seasons-info span,.moon-upcoming span{color:var(--muted)}.section-label{text-transform:uppercase;letter-spacing:1px;color:var(--muted);margin-top:4px;font-size:.8rem}.chip-row{flex-wrap:wrap;gap:6px;display:flex}.chip{border:1px solid var(--line);background:#ffffff12;border-radius:999px;min-height:40px;padding:8px 12px;font-size:.9rem}.chip:hover{background:#ffffff26}.chip.active{background:var(--sky);color:#04122a;border-color:#0000;font-weight:600}.chip-loc{background:#5ce1a02e;border-color:#5ce1a080}.hint{color:var(--muted);font-size:.8rem}.hint:empty{display:none}.moon-pic{place-items:center;padding-top:4px;display:grid}.moon-pic svg{filter:drop-shadow(0 0 18px #c8dcff40)}.moon-name{text-align:center;font-size:1.35rem;font-weight:600}.moon-name small{color:var(--muted);font-size:.85rem;font-weight:400;display:block}.moon-upcoming{margin:0;padding:0;list-style:none}.seasons-orbit-note{color:#d6dcff;margin-top:8px;font-size:.88rem;display:block}.seasons-caption{background:#ffc62e1a;border-radius:14px;margin:0;padding:10px 12px;font-size:.98rem;line-height:1.45}.explain-card{background:#1e1646d9;border-color:#ffc62e73;grid-area:mid;place-self:start center;max-width:560px;padding:12px 44px 12px 16px;position:relative}.explain-card .icon-btn{position:absolute;top:6px;right:6px}.explain-text p{margin:0 0 6px;font-size:1.08rem;line-height:1.4}.explain-text .explain-sub{color:#d6dcff;margin:0;font-size:.92rem}.icon-btn{background:#ffffff1a;border:0;border-radius:50%;width:40px;height:40px;font-size:1rem}.icon-btn:hover{background:#fff3}.timebar{flex-direction:column;grid-area:bottom;justify-self:center;gap:8px;width:min(1180px,100%);padding:10px 14px 8px;display:flex}.tb-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.tb-clock{min-width:200px;margin-right:auto}.tb-time{font-size:2rem;font-weight:600;line-height:1}.tb-date-row{align-items:center;gap:8px;display:flex}.tb-date{color:var(--muted);font-size:.88rem}.tb-live{color:#ff5f7a;font-size:.78rem;font-weight:600;animation:1.6s infinite pulse}@keyframes pulse{50%{opacity:.4}}.tb-steps,.tb-play-group{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.tb-btn{border:1px solid var(--line);white-space:nowrap;background:#ffffff14;border-radius:14px;min-height:44px;padding:0 12px;font-size:.95rem;font-weight:600;transition:transform .1s,background .12s}.tb-btn:hover{background:#ffffff29}.tb-btn:active{transform:scale(.95)}.tb-btn.active{background:var(--sky);color:#04122a;border-color:#0000}.tb-now{background:var(--mint);color:#03281a;border-color:#0000}.tb-play{background:var(--sun);color:#2b1d00;border-color:#0000;min-width:104px}.tb-play.active{background:var(--pink);color:#2a0010}.tb-speed{font-size:.85rem;font-weight:400}.tb-datepicker{border:1px solid var(--line);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;background:#ffffff14;border-radius:14px;min-height:44px;padding:0 10px}.tb-sliders{gap:8px 18px}.slider-wrap{flex:320px;align-items:center;gap:10px;display:flex}.slider-name{white-space:nowrap;color:var(--muted);font-size:.9rem}.slider-value,.slider-ends{color:var(--muted);white-space:nowrap;text-align:right;min-width:84px;font-size:.8rem}.slider{appearance:none;touch-action:none;background:0 0;flex:1;height:36px}.slider::-webkit-slider-runnable-track{background:linear-gradient(90deg,#3b4a8a,#5fb3ff,#3b4a8a);border-radius:999px;height:12px}.slider-hour::-webkit-slider-runnable-track{background:linear-gradient(90deg,#111a44 0%,#2d3d8a 20%,#ff9f43 26%,#7cc8ff 40%,#9ad8ff 50%,#7cc8ff 60%,#ff9f43 74%,#2d3d8a 80%,#111a44 100%)}.slider::-moz-range-track{background:linear-gradient(90deg,#3b4a8a,#5fb3ff,#3b4a8a);border-radius:999px;height:12px}.slider-hour::-moz-range-track{background:linear-gradient(90deg,#111a44 0%,#2d3d8a 20%,#ff9f43 26%,#7cc8ff 40%,#9ad8ff 50%,#7cc8ff 60%,#ff9f43 74%,#2d3d8a 80%,#111a44 100%)}.slider::-webkit-slider-thumb{-webkit-appearance:none;background:var(--sun);border:4px solid #fff;border-radius:50%;width:32px;height:32px;margin-top:-10px;box-shadow:0 2px 10px #00000073}.slider::-moz-range-thumb{background:var(--sun);border:4px solid #fff;border-radius:50%;width:26px;height:26px}.slider:focus-visible{outline:3px solid var(--sky);outline-offset:2px;border-radius:999px}.tb-bottom{border-top:1px solid var(--line);flex-wrap:nowrap;gap:12px;padding-top:6px}.tb-modes{flex:none;align-items:center;gap:8px;display:flex}.tb-explain.active{background:var(--sun);color:#2b1d00}.seg{background:#00000040;border-radius:16px;gap:3px;padding:3px;display:flex}.seg .tb-btn{background:0 0;border:0}.seg .tb-btn.active{background:var(--sky)}.timebar.seasons-mode .tb-bottom{display:none}.tb-more{order:10;font-size:.85rem;font-weight:400}.timebar.compact .tb-sliders,.timebar.compact .phase-strip{display:none}.timebar.compact .tb-bottom{border-top:0;padding-top:0}.phase-strip{flex:auto;align-items:center;gap:10px;min-width:0;display:flex}.strip-head{align-items:center;gap:4px;display:flex}.strip-month{text-align:center;min-width:118px;font-size:.9rem;font-weight:600}.strip-days{scrollbar-width:thin;touch-action:pan-x;flex:1;gap:2px;padding-bottom:2px;display:flex;overflow-x:auto}.strip-day{background:0 0;border:0;border-radius:12px;flex-direction:column;flex:none;align-items:center;gap:1px;width:44px;padding:3px 0 2px;display:flex;position:relative}.strip-day:hover{background:#ffffff14}.strip-day.today{box-shadow:inset 0 0 0 2px var(--sky);background:#5fb3ff47}.strip-num{color:var(--muted);font-size:.72rem}.strip-tag{background:var(--sun);color:#2b1d00;border-radius:6px;padding:0 3px;font-size:.55rem;font-weight:600;display:none;position:absolute;top:-2px;right:0}.strip-day.quarter .strip-num{color:var(--sun);font-weight:600}.strip-day.quarter .strip-moon svg{filter:drop-shadow(0 0 4px #ffc62ecc)}body.hide-ui .ui{display:none}.mini-bar{left:50%;bottom:max(12px, env(safe-area-inset-bottom));z-index:10;background:var(--panel);border:1px solid var(--line);-webkit-backdrop-filter:blur(12px);border-radius:999px;align-items:center;gap:6px;max-width:calc(100vw - 16px);padding:6px;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 10px 30px #00000059}.mini-btn{min-width:var(--tap);height:var(--tap);border:1px solid var(--line);background:#ffffff14;border-radius:999px;padding:0 10px;font-size:1.2rem}.mini-btn.active{background:var(--pink)}.mini-show{background:var(--sun);color:#2b1d00;white-space:nowrap;border-color:#0000;font-size:.95rem;font-weight:600}.mini-abacus{place-items:center;text-decoration:none;display:grid}.mini-clock{white-space:nowrap;flex-direction:column;padding:0 8px;line-height:1.15;display:flex}.mini-clock b{font-size:.95rem}.mini-clock span{color:var(--muted);font-size:.78rem}.chip-watch{background:var(--sun);color:#2b1d00;border-color:#0000;align-self:center;font-weight:600}@media (width<=520px){.mini-clock span{display:none}}.modal{z-index:20;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#03061299;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal-card{background:var(--panel-solid);border:1px solid var(--line);border-radius:28px;width:min(560px,100%);max-height:calc(100vh - 32px);padding:24px;animation:.2s ease-out pop;position:relative;overflow:auto;box-shadow:0 20px 60px #0009}@keyframes pop{0%{opacity:0;transform:scale(.94)}}.modal-close{position:absolute;top:12px;right:12px}.modal-card h2{text-align:center;margin:4px 0 8px;font-size:1.6rem}.fact-emoji{text-align:center;font-size:3.4rem}.fact-text{text-align:center;place-items:center;min-height:5.5em;margin:8px 0;font-size:1.3rem;line-height:1.45;display:grid}.fact-nav{justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px;display:flex}.fact-counter{color:var(--muted)}.fact-tabs{border-top:1px solid var(--line);justify-content:center;padding-top:12px}.help{line-height:1.5}.help h3{margin:14px 0 4px;font-size:1.1rem}.help ul{margin:0;padding-left:20px}.help table td{padding:3px 12px 3px 0}.help a{color:var(--sky)}kbd{text-align:center;background:#ffffff1f;border-bottom:2px solid #ffffff40;border-radius:6px;min-width:26px;padding:1px 6px;font-family:inherit;display:inline-block}@media (width<=1100px){.ui{grid-template-columns:minmax(0,280px) 1fr minmax(0,280px)}.tb-clock{flex:100%;min-width:0}.tb-bottom{flex-wrap:wrap}.tb-modes{flex:100%;justify-content:space-between}}@media (width<=760px){.ui{grid-template:"top top""left right""mid mid"1fr"bottom bottom"/1fr 1fr;gap:6px;padding:6px}.toolbar{gap:4px;padding:4px}.tab{padding:0 10px;font-size:.85rem}.focus-label{display:none}.round-btn{width:42px;height:42px;font-size:1.1rem}.focus-row,.tool-buttons,.focus-row+.tool-buttons{margin-left:0}.panel:not(.collapsed){z-index:8;background:var(--panel-solid);position:fixed;inset:120px 6px 50%}.tb-time{font-size:1.5rem}.tb-btn{padding:0 9px;font-size:.85rem}.tb-speed,.tb-datepicker{display:none}.tb-clock{flex:auto}.tb-more{order:0}.timebar{gap:6px;padding:8px 10px}.slider-value,.slider-ends{display:none}.strip-head .strip-month{min-width:80px;font-size:.8rem}.explain-text p{font-size:.95rem}.explain-text .explain-sub{display:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
