@font-face{font-family:Fraunces;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/fraunces-vietnamese-400-normal-CvGt0Ybw.woff2) format("woff2"),url(/assets/fraunces-vietnamese-400-normal-B65MOf9T.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/fraunces-latin-ext-400-normal-D8gbi3Gu.woff2) format("woff2"),url(/assets/fraunces-latin-ext-400-normal-UihxqfOe.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/fraunces-latin-400-normal-6IfK1voy.woff2) format("woff2"),url(/assets/fraunces-latin-400-normal-NUPT2cO8.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/fraunces-vietnamese-600-normal-BjlAJixd.woff2) format("woff2"),url(/assets/fraunces-vietnamese-600-normal-DlAl5EAR.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/fraunces-latin-ext-600-normal-BtzmzP0X.woff2) format("woff2"),url(/assets/fraunces-latin-ext-600-normal-B0Dy4lqi.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/fraunces-latin-600-normal-BFCDtZfi.woff2) format("woff2"),url(/assets/fraunces-latin-600-normal-DL5QCzvS.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/fraunces-vietnamese-400-italic-BTOWH4O7.woff2) format("woff2"),url(/assets/fraunces-vietnamese-400-italic-CO9zBbpA.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/fraunces-latin-ext-400-italic-jodr80a5.woff2) format("woff2"),url(/assets/fraunces-latin-ext-400-italic-CGHg0U1I.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/fraunces-latin-400-italic-ChpO6tcr.woff2) format("woff2"),url(/assets/fraunces-latin-400-italic-B7iDoVhm.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg-deep: #120d1c;--bg-mid: #1d1329;--ink: #f7ecdf;--ink-dim: rgba(247, 236, 223, .62);--ink-faint: rgba(247, 236, 223, .38);--gold: #ffc46b;--gold-hot: #ff9d3d;--rose: #ff8fa3;--violet: #b18cff;--card: rgba(34, 24, 48, .78);--card-edge: rgba(255, 214, 160, .14);--font-display: "Fraunces", Georgia, serif;--font-ui: system-ui, -apple-system, "Segoe UI", sans-serif;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px)}*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;overflow:hidden}body{font-family:var(--font-ui);color:var(--ink);background:radial-gradient(120% 90% at 75% 12%,rgba(255,140,90,.1),transparent 55%),radial-gradient(100% 80% at 15% 85%,rgba(150,90,255,.1),transparent 55%),radial-gradient(140% 120% at 50% 45%,var(--bg-mid),var(--bg-deep) 75%);overscroll-behavior:none;touch-action:manipulation;user-select:none;-webkit-user-select:none}input,textarea{user-select:text;-webkit-user-select:text;font-size:max(16px,1em)}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}.stage{position:fixed;inset:0}.cosmos-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:manipulation}.topbar{position:absolute;top:calc(var(--safe-top) + 14px);left:0;right:0;display:flex;justify-content:center;pointer-events:none;z-index:5}.wordmark{font-family:var(--font-display);font-weight:600;font-size:20px;letter-spacing:.04em;color:var(--ink);text-shadow:0 0 24px rgba(255,170,90,.35)}.wordmark em{font-style:italic;color:var(--gold)}.add-btn{position:absolute;right:18px;bottom:calc(var(--safe-bottom) + 22px);z-index:6;width:58px;height:58px;border-radius:50%;background:radial-gradient(circle at 32% 30%,#fff4dd,var(--gold) 45%,var(--gold-hot) 100%);color:#3a2007;font-size:30px;font-weight:300;line-height:1;display:grid;place-items:center;box-shadow:0 0 0 1px #ffdca059,0 6px 28px #ff963c73,0 0 60px #ff963c40;transition:transform .18s cubic-bezier(.34,1.56,.64,1);animation:addPulse 3.2s ease-in-out infinite}.add-btn:active{transform:scale(.9)}@keyframes addPulse{0%,to{box-shadow:0 0 0 1px #ffdca059,0 6px 28px #ff963c73,0 0 40px #ff963c33}50%{box-shadow:0 0 0 1px #ffdca080,0 6px 32px #ff963c99,0 0 80px #ff963c59}}.empty-hint{position:absolute;left:50%;bottom:calc(var(--safe-bottom) + 104px);transform:translate(-50%);z-index:4;text-align:center;color:var(--ink-dim);font-size:15px;line-height:1.5;width:min(78vw,340px);pointer-events:none;animation:fadeUp 1s ease .4s both}.empty-hint strong{color:var(--gold);font-family:var(--font-display);font-style:italic;font-weight:600}.scrim{position:fixed;inset:0;z-index:10;background:#0a061273;animation:fadeIn .25s ease both}.sheet{position:fixed;left:50%;bottom:0;transform:translate(-50%);width:min(100vw,480px);max-height:calc(100dvh - 60px - var(--safe-top));z-index:11;background:linear-gradient(rgba(255,190,120,.05),transparent 30%),var(--card);backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);border:1px solid var(--card-edge);border-bottom:none;border-radius:26px 26px 0 0;padding:10px 22px calc(var(--safe-bottom) + 22px);overflow-y:auto;overscroll-behavior:contain;animation:sheetUp .34s cubic-bezier(.32,.72,.25,1) both;box-shadow:0 -18px 60px #00000073}@keyframes sheetUp{0%{transform:translate(-50%,60%);opacity:.4}to{transform:translate(-50%);opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeUp{0%{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%)}}.sheet-grab{width:40px;height:4px;border-radius:2px;background:#ffecd240;margin:2px auto 14px}.sheet h2{font-family:var(--font-display);font-weight:600;font-size:24px;letter-spacing:.01em}.sheet-head{display:flex;align-items:center;gap:14px;margin-bottom:4px}.planet-chip{width:46px;height:46px;border-radius:50%;flex-shrink:0;box-shadow:0 0 22px var(--chip-glow, rgba(255, 180, 90, .4))}.zone-tag{font-size:12.5px;color:var(--ink-dim);margin-top:2px}.zone-tag b{color:var(--gold);font-weight:600}.orbit-meter{margin:16px 0 6px}.orbit-meter-track{position:relative;height:34px}.orbit-meter-line{position:absolute;top:50%;left:16px;right:6px;height:2px;transform:translateY(-50%);background:linear-gradient(90deg,#ffaa50b3,#ffecd214);border-radius:1px}.orbit-meter-sun{position:absolute;left:0;top:50%;transform:translateY(-50%);width:22px;height:22px;border-radius:50%;background:radial-gradient(circle at 35% 32%,#fff7e6,#ffd98a 50%,#ff9d3d);box-shadow:0 0 16px #ffa04699}.orbit-meter-dot{position:absolute;top:50%;transform:translate(-50%,-50%);width:15px;height:15px;border-radius:50%;transition:left .6s cubic-bezier(.34,1.3,.5,1)}.orbit-meter-ghost{position:absolute;top:50%;transform:translate(-50%,-50%);width:13px;height:13px;border-radius:50%;border:1.5px dashed currentColor;opacity:.7;transition:left .4s ease}.orbit-meter-labels{display:flex;justify-content:space-between;font-size:11px;color:var(--ink-faint);margin-top:2px;letter-spacing:.06em;text-transform:uppercase}.section-label{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);margin:20px 0 10px;font-weight:600}.orbs{display:flex;justify-content:space-between;gap:6px}.orb{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 2px 8px;border-radius:16px;transition:transform .2s cubic-bezier(.34,1.56,.64,1),opacity .2s ease,background .2s ease}.orb-face{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;font-size:22px;background:radial-gradient(circle at 35% 30%,#ffffff29,#ffffff08 70%);border:1px solid rgba(255,236,210,.14);transition:box-shadow .25s ease,border-color .25s ease}.orb span{font-size:10.5px;color:var(--ink-dim);letter-spacing:.02em}.orb.sel{transform:translateY(-4px) scale(1.08)}.orb.sel .orb-face{border-color:var(--orb-color, var(--gold));box-shadow:0 0 24px var(--orb-glow, rgba(255, 180, 90, .55))}.orb.sel span{color:var(--ink);font-weight:600}.orb.dim{opacity:.38;transform:scale(.94)}.orb-blurb{text-align:center;font-size:13px;color:var(--ink-dim);font-style:italic;font-family:var(--font-display);min-height:20px;margin-top:10px}.note-input{width:100%;margin-top:10px;background:#100a1a8c;border:1px solid rgba(255,236,210,.12);border-radius:14px;color:var(--ink);padding:12px 14px;resize:none;outline:none;line-height:1.45}.note-input:focus{border-color:#ffc46b73}.note-input::placeholder{color:var(--ink-faint)}.text-input{width:100%;background:#100a1a8c;border:1px solid rgba(255,236,210,.12);border-radius:14px;color:var(--ink);padding:13px 15px;outline:none}.text-input:focus{border-color:#ffc46b73}.btn-primary{width:100%;margin-top:14px;padding:15px;border-radius:16px;font-size:16px;font-weight:700;color:#331c05;background:linear-gradient(135deg,#ffe3ae,var(--gold) 45%,var(--gold-hot));box-shadow:0 4px 22px #ff963c66;transition:transform .15s ease,opacity .2s ease,box-shadow .2s ease}.btn-primary:active{transform:scale(.97)}.btn-primary:disabled{opacity:.45;box-shadow:none}.btn-ghost{width:100%;margin-top:10px;padding:12px;border-radius:14px;font-size:14px;color:var(--ink-dim);border:1px solid rgba(255,236,210,.14);transition:background .2s ease}.btn-ghost:active{background:#ffecd212}.btn-danger{color:#ff8fa3d9;border-color:#ff8fa340}.intent-row{display:flex;gap:8px}.intent-btn{flex:1;padding:11px 6px;border-radius:14px;font-size:13px;font-weight:600;color:var(--ink-dim);border:1px solid rgba(255,236,210,.12);transition:all .22s ease;line-height:1.3}.intent-btn small{display:block;font-weight:400;font-size:10.5px;opacity:.75}.intent-btn.sel-closer{color:#3a2007;background:linear-gradient(135deg,#ffe3ae,var(--gold));border-color:transparent;box-shadow:0 0 20px #ffb45a66}.intent-btn.sel-null{color:var(--ink);background:#ffecd21a;border-color:#ffecd240}.intent-btn.sel-drift{color:#f2ecff;background:linear-gradient(135deg,#b18cff8c,#785ac88c);border-color:transparent;box-shadow:0 0 20px #966eff59}.moments{display:flex;flex-direction:column;gap:2px}.moment{display:flex;gap:12px;padding:9px 2px;align-items:baseline;border-bottom:1px solid rgba(255,236,210,.06)}.moment:last-child{border-bottom:none}.moment-emoji{font-size:17px;flex-shrink:0}.moment-body{flex:1;min-width:0}.moment-note{font-size:14px;line-height:1.45;color:var(--ink);overflow-wrap:break-word}.moment-meta{font-size:11.5px;color:var(--ink-faint);margin-top:1px}.moment-delta{font-size:12px;font-weight:700;flex-shrink:0}.moment-delta.pos{color:var(--gold)}.moment-delta.neg{color:var(--violet)}.closeness-slider{width:100%;appearance:none;-webkit-appearance:none;height:34px;background:transparent;margin-top:4px}.closeness-slider::-webkit-slider-runnable-track{height:4px;border-radius:2px;background:linear-gradient(90deg,#ffecd21a,#ffaa50cc)}.closeness-slider::-webkit-slider-thumb{-webkit-appearance:none;width:26px;height:26px;border-radius:50%;margin-top:-11px;background:radial-gradient(circle at 35% 30%,#fff4dd,var(--gold) 55%,var(--gold-hot));box-shadow:0 0 16px #ffaa5099}.closeness-slider::-moz-range-track{height:4px;border-radius:2px;background:linear-gradient(90deg,#ffecd21a,#ffaa50cc)}.closeness-slider::-moz-range-thumb{width:26px;height:26px;border:none;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff4dd,var(--gold) 55%,var(--gold-hot));box-shadow:0 0 16px #ffaa5099}.swatches{display:flex;gap:10px;flex-wrap:wrap}.swatch{width:38px;height:38px;border-radius:50%;border:2px solid transparent;transition:transform .18s cubic-bezier(.34,1.56,.64,1),border-color .18s ease,box-shadow .18s ease}.swatch.sel{transform:scale(1.18);border-color:#fff6e6e6;box-shadow:0 0 18px var(--sw-glow)}.login{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px 26px calc(var(--safe-bottom) + 32px);text-align:center;z-index:20}.login-sun{width:92px;height:92px;border-radius:50%;background:radial-gradient(circle at 36% 32%,#fff9ea,#ffd98a 48%,#ff9138);box-shadow:0 0 70px #ffa0468c,0 0 140px #ff8c3c4d;animation:sunBreathe 4s ease-in-out infinite;margin-bottom:30px}@keyframes sunBreathe{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}.login h1{font-family:var(--font-display);font-size:40px;font-weight:600;letter-spacing:.01em}.login h1 em{font-style:italic;color:var(--gold)}.login .tagline{color:var(--ink-dim);font-size:15.5px;line-height:1.55;margin:12px 0 34px;max-width:320px;font-family:var(--font-display);font-style:italic}.login form{width:min(100%,340px)}.login .hint{margin-top:14px;font-size:13px;color:var(--ink-faint)}.login .err{margin-top:12px;font-size:13.5px;color:var(--rose)}.whisper{font-size:13px;color:var(--ink-dim);font-style:italic;font-family:var(--font-display);margin-top:14px;line-height:1.5}.whisper b{color:var(--gold);font-weight:600}.stats-row{display:flex;gap:10px;margin-top:16px}.stat{flex:1;background:#100a1a73;border:1px solid rgba(255,236,210,.1);border-radius:16px;padding:14px 8px;text-align:center}.stat b{display:block;font-family:var(--font-display);font-size:24px;color:var(--gold)}.stat span{font-size:11px;color:var(--ink-faint);letter-spacing:.08em;text-transform:uppercase}.toast{position:fixed;left:50%;top:calc(var(--safe-top) + 58px);transform:translate(-50%);z-index:30;background:var(--card);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--card-edge);color:var(--ink);padding:11px 20px;border-radius:999px;font-size:14px;white-space:nowrap;animation:toastIn .3s cubic-bezier(.34,1.4,.64,1) both;box-shadow:0 8px 30px #0006}@keyframes toastIn{0%{opacity:0;transform:translate(-50%,-10px) scale(.94)}to{opacity:1;transform:translate(-50%) scale(1)}}.loading-veil{position:fixed;inset:0;display:grid;place-items:center;color:var(--ink-dim);font-family:var(--font-display);font-style:italic;font-size:16px}@media(max-width:380px){.orb-face{width:38px;height:38px;font-size:19px}.sheet{padding-left:16px;padding-right:16px}}.lean-row{display:flex;gap:8px}.lean-chip{flex:1;padding:9px 6px;border-radius:12px;border:1px solid rgba(255,235,210,.14);background:#ffffff0a;color:inherit;font:inherit;font-size:12px;cursor:pointer;transition:border-color .15s ease,color .15s ease,background .15s ease}.lean-chip.sel-in{border-color:var(--gold);color:var(--gold);background:#ffb45a1a}.lean-chip.sel-away{border-color:var(--violet);color:var(--violet);background:#966eff1a}.lean-chip.sel-none{border-color:#ffebd259}.lean-badge.in{color:var(--gold)}.lean-badge.away{color:var(--violet)}.orbit-meter-their{position:absolute;top:50%;width:8px;height:8px;transform:translate(-50%,-50%) rotate(45deg);border:1.5px solid currentColor;border-radius:2px;opacity:.85;pointer-events:none}.time-btn{position:absolute;left:18px;bottom:calc(var(--safe-bottom) + 22px);z-index:6;width:48px;height:48px;border-radius:50%;display:grid;place-items:center;color:var(--ink-dim);background:var(--card);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--card-edge);box-shadow:0 6px 24px #00000059;transition:transform .18s cubic-bezier(.34,1.56,.64,1),color .2s ease}.time-btn:hover{color:var(--gold)}.time-btn:active{transform:scale(.9)}.time-veil{position:absolute;inset:0;z-index:3;pointer-events:none;opacity:0;transition:opacity .7s ease;background:radial-gradient(120% 100% at 50% 50%,transparent 55%,rgba(120,80,220,.16) 100%),linear-gradient(#5a3ca00d,#5a3ca00d)}.time-veil.on{opacity:1}.time-dock{position:absolute;left:50%;bottom:calc(var(--safe-bottom) + 18px);transform:translate(-50%);z-index:7;width:min(92vw,560px);display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:22px;background:var(--card);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border:1px solid var(--card-edge);box-shadow:0 10px 40px #00000073,0 0 60px #966eff14;animation:dockIn .35s cubic-bezier(.34,1.4,.64,1) both}@keyframes dockIn{0%{opacity:0;transform:translate(-50%,16px) scale(.96)}to{opacity:1;transform:translate(-50%) scale(1)}}.time-play{flex:none;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;color:#3a2007;background:radial-gradient(circle at 32% 30%,#fff4dd,var(--gold) 55%,var(--gold-hot) 100%);box-shadow:0 0 0 1px #ffdca04d,0 4px 18px #ff963c59;transition:transform .15s ease}.time-play:active{transform:scale(.9)}.time-track-wrap{flex:1;min-width:0;display:flex;flex-direction:column;gap:7px}.time-readout{display:flex;align-items:baseline;gap:8px;line-height:1}.time-date{font-family:var(--font-display);font-style:italic;font-size:15px;color:var(--ink)}.time-ago{font-size:11px;letter-spacing:.06em;color:var(--ink-faint)}.time-track{position:relative;height:22px}.time-rail{position:absolute;left:0;right:0;top:50%;height:3px;transform:translateY(-50%);border-radius:2px;background:#ffebd21f}.time-fill{position:absolute;left:0;top:50%;height:3px;transform:translateY(-50%);border-radius:2px;background:linear-gradient(90deg,rgba(177,140,255,.55),var(--gold));box-shadow:0 0 10px #ffc46b59;pointer-events:none}.time-tick{position:absolute;top:50%;width:4px;height:4px;transform:translate(-50%,-50%);border-radius:50%;background:#f7ecdf40;pointer-events:none;transition:background .2s ease,box-shadow .2s ease}.time-tick.lit{background:var(--gold);box-shadow:0 0 6px #ffc46bb3}.time-range{position:absolute;inset:0;width:100%;height:100%;margin:0;appearance:none;-webkit-appearance:none;background:transparent;cursor:pointer}.time-range::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:16px;height:16px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff9ea,var(--gold) 60%,var(--gold-hot));box-shadow:0 0 0 3px #120d1cd9,0 0 14px #ffc46bcc;border:none}.time-range::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff9ea,var(--gold) 60%,var(--gold-hot));box-shadow:0 0 0 3px #120d1cd9,0 0 14px #ffc46bcc;border:none}.time-range::-moz-range-track{background:transparent}.time-now{flex:none;padding:8px 14px;border-radius:999px;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--gold);border:1px solid rgba(255,196,107,.35);background:#ffb45a14;transition:background .15s ease,transform .15s ease}.time-now:active{transform:scale(.94)}@media(max-width:420px){.time-dock{gap:9px;padding:10px 11px}.time-date{font-size:14px}}
