@font-face{font-family:Poppins;src:url(/fonts/poppins-400.woff2)format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Poppins;src:url(/fonts/poppins-500.woff2)format("woff2");font-weight:500;font-display:swap}@font-face{font-family:Poppins;src:url(/fonts/poppins-600.woff2)format("woff2");font-weight:600;font-display:swap}@font-face{font-family:Poppins;src:url(/fonts/poppins-700.woff2)format("woff2");font-weight:700;font-display:swap}@font-face{font-family:Kaushan;src:url(/fonts/kaushan-400.woff2)format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Caveat;src:url(/fonts/caveat-var.woff2)format("woff2");font-weight:400 700;font-display:swap}:root{--bg:#07060d;--bg2:#0b0913;--card:#181227;--card2:#211936;--line:#2f2247;--line2:#3d2c5c;--tx:#f7f2fb;--tx2:#bcafd2;--tx3:#8a7da4;--accent:#ff2d8b;--accent-d:#e0176f;--accent-l:#ff5fa8;--accent-tx:#ff8ac2;--warm:#ffc247;--calm:#22d3ee;--bad:#ff6b8a;--r:1rem;--r-lg:1.25rem;--r-sm:.8rem;--pill:99px;--tap:3.25rem;--glow:0 8px 26px #ff2d8b4d;--glow-soft:0 0 22px #ff2d8b73;--tint:#ff2d8b1f;--tint-line:#ff2d8b47;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html{font-size:clamp(16px,2.4vw,24px)}body{background:var(--bg);min-height:100dvh;color:var(--tx);padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);overscroll-behavior-y:contain;margin:0;font:400 1rem/1.5 Poppins,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none}input,select,textarea{font:inherit;color:inherit}h1,h2,h3{letter-spacing:-.02em;margin:0;font-weight:600}h1{font-size:1.625rem;line-height:1.2}p{margin:.5rem 0}a{color:var(--accent-tx)}:focus-visible{outline:2px solid var(--calm);outline-offset:2px;border-radius:4px}[hidden]{display:none!important}.wrap{isolation:isolate;flex-direction:column;max-width:38rem;min-height:100dvh;margin:0 auto;padding:1.25rem 1.1rem 2.5rem;display:flex;position:relative}.hd{padding-right:3rem}.mut{color:var(--tx2)}.dim{color:var(--tx3)}.tiny{font-size:.8125rem}.sm{font-size:.875rem}.hd{justify-content:space-between;align-items:baseline;gap:.5rem;margin-bottom:1.1rem;display:flex}.grow{flex:1}.row{align-items:center;gap:.6rem;display:flex}.col{flex-direction:column;gap:.6rem;display:flex}.center{text-align:center}.screen{flex-direction:column;flex:1;animation:.25s fade;display:flex;position:relative}@keyframes fade{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.art{z-index:-1;pointer-events:none;background:var(--bg);position:fixed;inset:0;overflow:hidden}.art .hero{object-fit:cover;object-position:50% 16%;width:100%;height:100%;position:absolute;inset:0}.art .ink{object-fit:cover;opacity:.11;mix-blend-mode:screen;width:124%;height:112%;position:absolute;top:-6%;left:-12%}.art .scrim{background:linear-gradient(180deg, #07060d1a 0%, #07060d73 34%, #07060de0 62%, var(--bg) 86%);position:absolute;inset:0}.art .scrim.even{background:linear-gradient(#07060db8,#07060deb)}.art .grain{opacity:.05;mix-blend-mode:overlay;background:url(/theme/grain.svg) 0 0/220px;position:absolute;inset:0}.art.wash .ink{opacity:.06}.art .hero.right{object-position:64% 12%}.art .scrim.left{background:linear-gradient(100deg,#07060df7 0%,#07060de6 34%,#07060d8c 62%,#07060d1a 100%)}.welcome,.affirm{flex-direction:column;flex:1;min-height:78dvh;padding-bottom:1.5rem;display:flex}.affirm{justify-content:flex-end}.welcome .wordmark{font-size:2.1rem}.rule{border-radius:var(--pill);background:linear-gradient(90deg, var(--accent), #ff2d8b00);width:6.5rem;height:4px;margin-top:.5rem}.wordmark{color:var(--accent-l);letter-spacing:.01em;text-shadow:0 0 16px #ff2d8b8c,0 0 46px #ff2d8b4d;font-family:Kaushan,cursive;font-size:3.2rem;font-weight:400;line-height:.95}.eyebrow{letter-spacing:.2em;text-transform:uppercase;color:var(--tx);font-size:.72rem;font-weight:600}.eyebrow.pink{color:var(--accent-tx)}.script{color:var(--accent-l);font-family:Caveat,cursive;font-size:1.6rem;font-weight:700;line-height:1.2}.card{border:1px solid var(--line);border-radius:var(--r-lg);background:#181227d1;margin-bottom:1rem;padding:1.15rem}.card.sub{background:var(--card2);border-radius:var(--r);margin-bottom:.65rem;padding:.85rem .95rem}.card.sub.preq{border-color:var(--tint-line)}.badge{letter-spacing:.12em;text-transform:uppercase;color:var(--accent-tx);background:var(--tint);border:1px solid var(--tint-line);border-radius:var(--pill);padding:.25rem .65rem;font-size:.69rem;font-weight:600;display:inline-block}.badge.warm{color:var(--warm);background:#ffc2471a;border-color:#ffc24747}.badge.calm{color:var(--calm);background:#22d3ee1a;border-color:#22d3ee47}.dayline{letter-spacing:.2em;text-transform:uppercase;color:var(--accent-tx);margin:.85rem 0 .35rem;font-size:.72rem;font-weight:600}.btn{min-height:var(--tap);border-radius:var(--pill);background:linear-gradient(135deg, var(--accent-d), var(--accent-l));color:#fff;letter-spacing:-.01em;width:100%;box-shadow:var(--glow), inset 0 1px 0 #ffffff47;justify-content:center;align-items:center;gap:.5rem;padding:.85rem 1.2rem;font-weight:600;display:flex}.btn:active{transform:scale(.985)}.btn:disabled{opacity:.45;box-shadow:none}.btn.ghost{color:var(--tx);border:1px solid var(--line2);box-shadow:none;background:#211936b8;font-weight:500}.btn.quiet{border:1px solid var(--line);color:var(--tx2);min-height:2.75rem;box-shadow:none;background:0 0;font-weight:500}.btn.warm{background:linear-gradient(135deg, #e0a52e, var(--warm));color:#2a1b00}.btn.sm{width:auto;min-height:2.5rem;padding:.5rem .95rem;font-size:.875rem}.linkbtn{color:var(--tx2);margin:-.5rem;padding:.5rem;font-size:.875rem}.btnsub{opacity:.8;margin-top:.15rem;font-size:.75rem;font-weight:500;display:block}.btn:has(.btnsub){flex-direction:column;gap:0;padding:.8rem 1rem}.btn:has(.btnsub)>span{text-align:center;display:block}.chips{flex-wrap:wrap;gap:.5rem;display:flex}.chip{border-radius:var(--pill);background:var(--card2);border:1px solid var(--line);min-height:2.9rem;color:var(--tx2);padding:.6rem .95rem;font-size:.9375rem}.chip[aria-pressed=true],.chip[aria-checked=true]{background:var(--tint);border-color:var(--accent);color:var(--tx);box-shadow:0 0 0 1px #ff2d8b40}.chip.big{flex:5rem;justify-content:center;align-items:center;display:flex}.opts{flex-direction:column;gap:.6rem;display:flex}.opt{text-align:left;border-radius:var(--r);border:1px solid var(--line);width:100%;min-height:3.6rem;color:var(--tx);background:#181227d1;align-items:center;gap:.85rem;padding:.7rem .9rem;display:flex}.opt .ico{border-radius:var(--r-sm);width:2.5rem;height:2.5rem;color:var(--accent-tx);background:var(--tint);border:1px solid #ff2d8b33;flex:none;place-items:center;display:grid}.opt .lb{flex:1;min-width:0;font-weight:500}.opt .mark{border:1.5px solid var(--line2);color:#0000;border-radius:50%;flex:none;place-items:center;width:1.45rem;height:1.45rem;display:grid}.opt[aria-pressed=true]{border-color:var(--accent);background:linear-gradient(#ff2d8b26,#ff2d8b0a);box-shadow:0 0 0 1px #ff2d8b4d,0 10px 26px #ff2d8b1f}.opt[aria-pressed=true] .ico{color:var(--accent-l);background:#ff2d8b2e}.opt[aria-pressed=true] .mark{background:var(--accent);border-color:var(--accent);color:#fff}.ic{flex:none;width:1.25em;height:1.25em}.week{gap:.4rem;margin-bottom:1rem;display:flex}.wd{border:1px solid var(--line);text-align:center;background:#181227d1;border-radius:.75rem;flex:1;padding:.55rem .2rem}.wd b{letter-spacing:.1em;text-transform:uppercase;color:var(--tx3);font-size:.63rem;font-weight:600;display:block}.wd i{background:var(--card2);border-radius:50%;width:.5rem;height:.5rem;margin:.4rem auto 0;font-style:normal;display:block}.wd.hard i{background:var(--accent);box-shadow:var(--glow-soft)}.wd.counted i{background:var(--accent-d)}.wd.recorded i{border:1.5px solid var(--calm);background:0 0}.wd.today{border-color:var(--tint-line);background:#ff2d8b12}.wd.today b{color:var(--accent-tx)}.bar{background:var(--card2);border-radius:var(--pill);height:.45rem;overflow:hidden}.bar i{border-radius:var(--pill);background:linear-gradient(90deg, var(--accent-d), var(--accent-l));height:100%;box-shadow:var(--glow-soft);transition:width .5s cubic-bezier(.4,0,.2,1);display:block}.facts{color:var(--tx2);flex-wrap:wrap;gap:1rem;margin-top:.6rem;font-size:.875rem;display:flex}.greet{align-items:center;gap:.7rem;margin-bottom:1rem;padding-right:3rem;display:flex}.avatar{object-fit:cover;width:2.9rem;height:2.9rem;box-shadow:var(--glow);border:1.5px solid #ff2d8b73;border-radius:50%;flex:none}.greet b{font-size:1.05rem;font-weight:600;display:block}.greet .tiny{margin:0}.heart{color:var(--accent-l);vertical-align:-.1em}.station{flex-direction:column;flex:1;display:flex}.exname{margin:.3rem 0 .1rem;font-size:1.55rem}.reps{letter-spacing:-.04em;background:linear-gradient(180deg, #fff 30%, var(--accent-tx));color:#0000;-webkit-background-clip:text;background-clip:text;margin:.6rem 0 .2rem;font-size:3.6rem;font-weight:700;line-height:1}.repsunit{color:var(--tx2);letter-spacing:0;-webkit-text-fill-color:var(--tx2);font-size:1rem;font-weight:500}.cue{color:var(--tx2);margin-top:.5rem;font-size:.9375rem}.ring{filter:drop-shadow(0 0 14px #ff2d8b59);margin:.5rem auto;display:block}.ring text{font-variant-numeric:tabular-nums}.progress{gap:3px;margin:.8rem 0 1rem;display:flex}.progress i{background:var(--line);border-radius:2px;flex:1;height:3px}.progress i.on{background:var(--accent-d)}.progress i.now{background:var(--accent);box-shadow:var(--glow-soft)}.stationbar{color:var(--tx3);letter-spacing:.14em;text-transform:uppercase;justify-content:space-between;align-items:baseline;padding-right:3rem;font-size:.72rem;display:flex}.demo{margin-top:1rem}.demo summary{cursor:pointer;color:var(--accent-tx);padding:.7rem 0;font-size:.875rem;list-style:none}.demo summary::-webkit-details-marker{display:none}.frame{aspect-ratio:16/9;border-radius:var(--r-sm);border:1px solid var(--line);background:#000;width:100%;margin-top:.3rem;position:relative;overflow:hidden}.frame iframe{border:0;width:100%;height:100%;position:absolute;inset:0}.imgs{gap:.5rem;margin-top:.5rem;display:flex}.imgs img{border-radius:var(--r-sm);background:var(--card2);width:50%}.vote{gap:.6rem;margin-top:.6rem;display:flex}.feel{gap:.4rem;display:flex}.feel button{min-height:var(--tap);border-radius:var(--r-sm);background:var(--card2);border:1px solid var(--line);flex:1;font-size:1.35rem;font-weight:600}.feel button[aria-pressed=true]{border-color:var(--accent);background:var(--tint);box-shadow:0 0 0 1px #ff2d8b40}.langtoggle{z-index:30;top:calc(.55rem + env(safe-area-inset-top));right:calc(.55rem + env(safe-area-inset-right));border-radius:var(--pill);border:1px solid var(--line2);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);min-width:2.6rem;min-height:2.2rem;color:var(--tx2);letter-spacing:.08em;background:#0b0913b8;padding:.3rem .55rem;font-size:.72rem;font-weight:700;position:fixed;box-shadow:0 2px 10px #00000059}.langtoggle:active{transform:scale(.94)}.wrap{padding-top:3.1rem}.login{flex-direction:column;flex:1;justify-content:flex-end;min-height:78dvh;padding-bottom:1.5rem;display:flex}.login-title{letter-spacing:-.03em;margin-top:.9rem;font-size:1.9rem;line-height:1.12}.login-sub{color:var(--accent-tx);letter-spacing:-.01em;margin:.35rem 0 0;font-size:1.0625rem;font-weight:500}.login-form{margin-top:1.5rem}.login-form .field{padding:0 .95rem}@media (prefers-reduced-motion:no-preference){.login-title,.login-sub,.wordmark{animation:.45s cubic-bezier(.2,.7,.3,1) both rise}.login-sub{animation-delay:60ms}.login-form{animation:.45s cubic-bezier(.2,.7,.3,1) .12s both rise}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}}.field{border-radius:var(--r-sm);border:1px solid var(--line);width:100%;color:var(--tx);background:#110d1cb8;padding:.8rem .9rem}.field:focus,.field:focus-within{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #ff2d8b29}.field::placeholder{color:var(--tx3)}label.field{min-height:3.1rem;color:var(--tx3);align-items:center;gap:.7rem;padding:0 .95rem;display:flex}label.field input{min-width:0;min-height:3.1rem;color:var(--tx);background:0 0;border:0;outline:none;flex:1;padding:0}label.field input::placeholder{color:var(--tx3)}textarea.field{resize:vertical;min-height:5rem}.err{color:var(--bad);font-size:.875rem}.toast{left:50%;bottom:calc(1.2rem + env(safe-area-inset-bottom));background:var(--card2);border:1px solid var(--line2);border-radius:var(--pill);z-index:20;text-align:center;max-width:90vw;padding:.6rem 1.1rem;font-size:.875rem;position:fixed;transform:translate(-50%);box-shadow:0 6px 24px #00000073}.stats{grid-template-columns:repeat(auto-fit,minmax(5.5rem,1fr));gap:.5rem;display:grid}.stat{border:1px solid var(--line);border-radius:var(--r);background:#181227d1;padding:.7rem .8rem}.stat b{font-size:1.35rem;font-weight:600;display:block}.stat span{color:var(--tx3);margin-top:.1rem;font-size:.72rem;display:block}.hist{border-bottom:1px solid var(--line);padding:.7rem 0}.hist:last-child{border-bottom:0}ul.plain{margin:.4rem 0;padding:0;list-style:none}ul.plain li{color:var(--tx2);padding:.2rem 0;font-size:.9375rem}.sep{border:0;border-top:1px solid var(--line);margin:1rem 0}.right{margin-left:auto}.confetti{pointer-events:none;z-index:5;position:fixed;inset:0;overflow:hidden}.confetti i{opacity:0;border-radius:2px;animation:3s cubic-bezier(.3,.6,.6,1) both confetti-fall;display:block;position:absolute;top:-6vh}@keyframes confetti-fall{0%{opacity:0;transform:translateY(0)rotate(0)}8%{opacity:1}to{opacity:.85;transform:translateY(112vh)rotate(540deg)}}@media (prefers-reduced-motion:reduce){.confetti{display:none}.screen{animation:none}.bar i{transition:none}}.bday-float{z-index:40;opacity:.88;background:#fff6e8;border:2px solid #f1e3cf;border-radius:50%;place-items:center;width:46px;height:46px;text-decoration:none;animation:70s linear infinite bday-drift,2.5s ease-out both bday-fade;display:grid;position:fixed;top:0;left:0;box-shadow:0 6px 18px #78503240}.bday-float svg{width:30px;height:30px;animation:3.2s ease-in-out infinite bday-bob}.bday-float:hover,.bday-float.tip{opacity:1;animation-play-state:paused}.bday-float:hover svg,.bday-float.tip svg{animation-play-state:paused}.bday-tip{white-space:nowrap;color:#4a3a33;opacity:0;pointer-events:none;background:#fffdf8;border:2px solid #f1e3cf;border-radius:999px;padding:.35rem .8rem;font-family:Nunito,system-ui,sans-serif;font-size:.85rem;font-weight:700;transition:opacity .25s,transform .25s;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%)translateY(4px);box-shadow:0 6px 18px #78503233}.bday-float:hover .bday-tip,.bday-float:focus-visible .bday-tip,.bday-float.tip .bday-tip{opacity:1;transform:translate(-50%)translateY(0)}.bday-float.at-left .bday-tip{left:0;transform:translateY(4px)}.bday-float.at-right .bday-tip{left:auto;right:0;transform:translateY(4px)}.bday-float.at-left:hover .bday-tip,.bday-float.at-left.tip .bday-tip,.bday-float.at-left:focus-visible .bday-tip,.bday-float.at-right:hover .bday-tip,.bday-float.at-right.tip .bday-tip,.bday-float.at-right:focus-visible .bday-tip{transform:none}.bday-flame{transform-origin:32px 10px;animation:1.2s ease-in-out infinite bday-flick}@keyframes bday-drift{0%{transform:translate(calc(100vw - 70px),62vh)}18%{transform:translate(60vw,86vh)}35%{transform:translate(18px,70vh)}52%{transform:translate(24px,34vh)}70%{transform:translate(45vw,18vh)}86%{transform:translate(calc(100vw - 64px),28vh)}to{transform:translate(calc(100vw - 70px),62vh)}}@keyframes bday-fade{0%{opacity:0}to{opacity:.88}}@keyframes bday-bob{0%,to{transform:translateY(0)rotate(-6deg)}50%{transform:translateY(-3px)rotate(6deg)}}@keyframes bday-flick{0%,to{transform:scale(1)}50%{transform:scale(.8,1.1)}}@media (width>=720px){@keyframes bday-drift{0%{transform:translate(calc(100vw - 90px),60vh)}25%{transform:translate(55vw,82vh)}50%{transform:translate(40px,50vh)}75%{transform:translate(30vw,16vh)}to{transform:translate(calc(100vw - 90px),60vh)}}}@media (prefers-reduced-motion:reduce){.bday-float{animation:none;transform:translate(calc(100vw - 70px),70vh)}.bday-float svg,.bday-flame{animation:none}}.preview summary{cursor:pointer;list-style:none}.preview summary::-webkit-details-marker{display:none}.preview[open] summary .mut{color:var(--accent-tx)}
