:root{--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--sp-10: 40px;--sp-12: 48px;--fs-xs: .6875rem;--fs-sm: .8125rem;--fs-base: .9375rem;--fs-md: 1.0625rem;--fs-lg: 1.25rem;--fs-xl: 1.5rem;--fs-2xl: 2.125rem;--fs-3xl: 2.875rem;--font-sans: -apple-system, BlinkMacSystemFont, "SF Pro Text", "PingFang SC", "HarmonyOS Sans SC", "MiSans", "Segoe UI", "Microsoft YaHei UI", sans-serif;--font-display: ui-serif, "New York", "Georgia", "Palatino", "Songti SC", "Noto Serif SC", "SimSun", serif;--r-sm: 12px;--r-md: 16px;--r-lg: 22px;--r-xl: 28px;--r-full: 999px;--dur-fast: .16s;--dur: .26s;--dur-slow: .5s;--ease: cubic-bezier(.32, .72, .24, 1);--spring: cubic-bezier(.34, 1.45, .5, 1)}:root[data-theme=dark]{color-scheme:dark;--bg: hsl(336 34% 5%);--bg-glow: radial-gradient(120% 52% at 50% -16%, hsl(343 60% 13% / .85) 0%, transparent 62%), radial-gradient(80% 36% at 92% -6%, hsl(272 45% 12% / .5) 0%, transparent 55%), radial-gradient(120% 46% at 50% 114%, hsl(348 55% 9% / .85) 0%, transparent 62%);--surface: hsl(336 22% 9%);--surface-2: hsl(335 18% 13.5%);--surface-3: hsl(334 15% 18.5%);--hairline: hsl(340 40% 88% / .055);--hairline-2: hsl(340 45% 90% / .09);--border: hsl(340 50% 92% / .14);--highlight: hsl(20 60% 96% / .05);--text: hsl(345 40% 96%);--text-2: hsl(340 14% 71%);--text-3: hsl(338 9% 49%);--rose: hsl(349 84% 64%);--rose-soft: hsl(352 95% 74%);--rose-deep: hsl(339 76% 51%);--rose-dim: hsl(350 85% 62% / .12);--on-rose: hsl(0 0% 100%);--gold: hsl(37 70% 63%);--gold-dim: hsl(37 68% 58% / .13);--lav: hsl(266 58% 75%);--lav-dim: hsl(266 55% 68% / .13);--ok: hsl(158 42% 55%);--danger: hsl(4 72% 64%);--blood: hsl(358 62% 58%);--blood-dim: hsl(358 60% 54% / .15);--fertile: hsl(165 45% 52%);--shadow-float: 0 6px 18px hsl(338 50% 2% / .45), 0 24px 60px -18px hsl(338 50% 2% / .8);--shadow-sheet: 0 -8px 40px hsl(338 50% 2% / .55);--shadow-cta: 0 4px 18px hsl(349 84% 58% / .35), 0 1px 3px hsl(349 84% 45% / .4);--glow-rose: 0 0 26px hsl(349 84% 60% / .3);--scrim: hsl(336 40% 3% / .7);--glass: hsl(336 26% 8% / .78)}:root[data-theme=light]{color-scheme:light;--bg: hsl(24 50% 96%);--bg-glow: radial-gradient(110% 48% at 50% -14%, hsl(348 80% 92% / .9) 0%, transparent 60%), radial-gradient(80% 36% at 92% -6%, hsl(268 65% 93% / .7) 0%, transparent 55%), radial-gradient(120% 44% at 50% 114%, hsl(30 70% 92% / .8) 0%, transparent 60%);--surface: hsl(20 40% 99%);--surface-2: hsl(24 36% 93%);--surface-3: hsl(24 28% 86%);--hairline: hsl(340 25% 25% / .1);--hairline-2: hsl(340 25% 25% / .16);--border: hsl(340 25% 25% / .26);--highlight: hsl(0 0% 100% / .8);--text: hsl(340 32% 12%);--text-2: hsl(338 14% 33%);--text-3: hsl(336 10% 45%);--rose: hsl(348 74% 52%);--rose-soft: hsl(351 80% 62%);--rose-deep: hsl(340 72% 44%);--rose-dim: hsl(348 74% 52% / .09);--on-rose: hsl(0 0% 100%);--gold: hsl(35 65% 42%);--gold-dim: hsl(35 65% 42% / .11);--lav: hsl(266 45% 52%);--lav-dim: hsl(266 45% 52% / .1);--ok: hsl(158 48% 36%);--danger: hsl(4 70% 50%);--blood: hsl(358 62% 50%);--blood-dim: hsl(358 62% 50% / .1);--fertile: hsl(165 50% 36%);--shadow-float: 0 6px 18px hsl(28 35% 35% / .12), 0 24px 60px -18px hsl(28 35% 30% / .24);--shadow-sheet: 0 -8px 40px hsl(28 35% 30% / .18);--shadow-cta: 0 4px 16px hsl(348 74% 50% / .3);--glow-rose: 0 0 26px hsl(348 74% 55% / .2);--scrim: hsl(336 30% 12% / .44);--glass: hsl(22 45% 97% / .94)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;background:var(--bg)}body{font-family:var(--font-sans);font-size:var(--fs-base);line-height:1.55;background:var(--bg);color:var(--text);min-height:100dvh;-webkit-font-smoothing:antialiased}body:before{content:"";position:fixed;inset:0;z-index:-2;background:var(--bg-glow);pointer-events:none}body:after{content:"";position:fixed;inset:0;z-index:-1;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E");background-size:160px 160px;opacity:.05;mix-blend-mode:soft-light;pointer-events:none}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation}input,select,textarea{font:inherit;color:inherit}::selection{background:var(--rose-dim)}:focus-visible{outline:2px solid var(--rose);outline-offset:2px;border-radius:4px}.ic{width:1.25em;height:1.25em;display:inline-block;vertical-align:-.28em;flex-shrink:0}.ic-badge{width:38px;height:38px;border-radius:var(--r-sm);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;border:1px solid transparent}.ic-badge .ic{width:19px;height:19px}.ic-badge.rose{background:var(--rose-dim);color:var(--rose);border-color:#f0567224}.ic-badge.gold{background:var(--gold-dim);color:var(--gold);border-color:#e0aa5224}.ic-badge.lav{background:var(--lav-dim);color:var(--lav);border-color:#ad86df24}.ic-badge.dim{background:var(--surface-2);color:var(--text-2);border-color:var(--hairline)}.num,.stat-tile .num,.hero-num{font-variant-numeric:tabular-nums}.serif{font-family:var(--font-display)}#app{max-width:480px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:var(--sp-3);padding:calc(env(safe-area-inset-top) + var(--sp-4)) var(--sp-5) var(--sp-3);background:linear-gradient(to bottom,color-mix(in hsl,var(--bg) 92%,transparent),color-mix(in hsl,var(--bg) 55%,transparent));backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}.topbar .titles{flex:1;min-width:0}.topbar h1{font-family:var(--font-display);font-size:1.625rem;font-weight:700;letter-spacing:.005em;line-height:1.2}.topbar .sub{font-size:var(--fs-sm);color:var(--text-3);margin-top:1px}.topbar .back{width:36px;height:36px;border-radius:var(--r-full);display:inline-flex;align-items:center;justify-content:center;background:var(--surface-2);color:var(--text-2);border:1px solid var(--hairline);transition:transform var(--dur-fast) var(--spring)}.topbar .back:active{transform:scale(.9)}.topbar .tool{width:36px;height:36px;border-radius:var(--r-full);display:inline-flex;align-items:center;justify-content:center;color:var(--text-3);background:transparent;transition:background var(--dur-fast),color var(--dur-fast),transform var(--dur-fast) var(--spring)}.topbar .tool:active{background:var(--surface-2);color:var(--text-2);transform:scale(.9)}main.content{flex:1;padding:var(--sp-1) var(--sp-5) calc(128px + env(safe-area-inset-bottom))}@keyframes viewIn{0%{opacity:0;transform:translateY(10px)}}main.content>*{animation:viewIn .4s var(--ease) both}main.content>*:nth-child(2){animation-delay:45ms}main.content>*:nth-child(3){animation-delay:.09s}main.content>*:nth-child(4){animation-delay:.135s}main.content>*:nth-child(5){animation-delay:.18s}main.content>*:nth-child(n+6){animation-delay:.22s}.tabbar{position:fixed;bottom:calc(env(safe-area-inset-bottom) + 14px);left:50%;transform:translate(-50%);width:min(432px,calc(100% - 32px));z-index:30;display:grid;grid-template-columns:1fr 1fr 64px 1fr 1fr;align-items:center;padding:8px 10px;background:var(--glass);backdrop-filter:blur(24px) saturate(1.5);-webkit-backdrop-filter:blur(24px) saturate(1.5);border:1px solid var(--hairline-2);box-shadow:var(--shadow-float),inset 0 1px 0 var(--highlight);border-radius:var(--r-full)}.tabbar .tab{position:relative;display:flex;flex-direction:column;align-items:center;gap:2px;padding:var(--sp-2) 0 6px;border-radius:var(--r-full);font-size:.625rem;font-weight:500;letter-spacing:.04em;color:var(--text-3);transition:color var(--dur-fast),transform var(--dur-fast) var(--spring)}.tabbar .tab .ic{width:22px;height:22px}.tabbar .tab.active{color:var(--rose)}.tabbar .tab.active:before{content:"";position:absolute;top:3px;left:50%;transform:translate(-50%);width:42px;height:28px;background:var(--rose-dim);border-radius:var(--r-full);z-index:-1}.tabbar .tab:active{transform:scale(.88)}.tab-plus{justify-self:center;width:50px;height:50px;border-radius:var(--r-full);background:linear-gradient(145deg,var(--rose-soft),var(--rose) 45%,var(--rose-deep));color:var(--on-rose);display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-cta),inset 0 1px #ffffff59;transition:transform var(--dur-fast) var(--spring),box-shadow var(--dur)}.tab-plus .ic{width:24px;height:24px}.tab-plus:active{transform:scale(.88) rotate(90deg)}.card{background:linear-gradient(to bottom,color-mix(in hsl,var(--surface) 92%,white 1%),var(--surface));border:1px solid var(--hairline);border-radius:var(--r-lg);padding:var(--sp-5);box-shadow:inset 0 1px 0 var(--highlight)}.card+.card,.card+.section-label,.widgets+.card,.bento+.card{margin-top:var(--sp-4)}.card-head{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-4)}.card-head .t{font-size:var(--fs-md);font-weight:700;flex:1;letter-spacing:.01em}.card-head .hint{font-size:var(--fs-xs);color:var(--text-3);letter-spacing:.02em}.section-label{margin:var(--sp-6) var(--sp-1) var(--sp-3);font-size:var(--fs-xs);font-weight:600;color:var(--text-3);text-transform:uppercase;letter-spacing:.14em}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);min-height:46px;padding:0 var(--sp-5);border-radius:var(--r-full);font-weight:600;font-size:var(--fs-base);transition:transform var(--dur-fast) var(--spring),box-shadow var(--dur),opacity var(--dur-fast);user-select:none}.btn:active{transform:scale(.96)}.btn-primary{background:linear-gradient(145deg,var(--rose-soft),var(--rose) 45%,var(--rose-deep));color:var(--on-rose);box-shadow:var(--shadow-cta),inset 0 1px #ffffff4d}.btn-ghost{background:var(--surface-2);color:var(--text);border:1px solid var(--hairline)}.btn-outline{background:transparent;border:1px solid var(--border);color:var(--text-2)}.btn-danger{background:transparent;border:1px solid color-mix(in hsl,var(--danger) 45%,transparent);color:var(--danger)}.btn-sm{min-height:36px;padding:0 var(--sp-4);font-size:var(--fs-sm)}.btn-block{width:100%}.btn[disabled]{opacity:.45;pointer-events:none}.field{margin-bottom:var(--sp-5)}.field>label{display:block;margin-bottom:var(--sp-2);font-size:var(--fs-xs);font-weight:600;color:var(--text-3);text-transform:uppercase;letter-spacing:.12em}.input,textarea.input,select.input{width:100%;min-height:48px;padding:var(--sp-3) var(--sp-4);background:var(--surface-2);border:1px solid var(--hairline);border-radius:var(--r-md);color:var(--text);font-size:max(1em,16px);outline:none;transition:border-color var(--dur-fast),background var(--dur-fast),box-shadow var(--dur-fast)}.input:focus{border-color:color-mix(in hsl,var(--rose) 55%,transparent);background:var(--surface);box-shadow:0 0 0 3px var(--rose-dim)}textarea.input{resize:vertical;min-height:80px;line-height:1.6}.input::placeholder{color:var(--text-3)}.segment{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;background:var(--surface-2);border:1px solid var(--hairline);border-radius:var(--r-full);padding:3px;gap:3px}.segment button{min-height:38px;padding:0 var(--sp-3);border-radius:var(--r-full);font-size:var(--fs-sm);font-weight:600;color:var(--text-2);transition:background var(--dur-fast),color var(--dur-fast),box-shadow var(--dur-fast);white-space:nowrap;min-width:0;overflow:hidden;text-overflow:ellipsis}.segment button.active{background:var(--surface-3);color:var(--text);box-shadow:inset 0 1px 0 var(--highlight)}.segment button.active.rose{background:linear-gradient(145deg,var(--rose),var(--rose-deep));color:var(--on-rose);box-shadow:0 2px 10px #ed2c4f4d}.segment button.active.gold{background:var(--gold-dim);color:var(--gold)}.segment button.active.lav{background:var(--lav-dim);color:var(--lav)}.type-cards{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3)}.type-card{border:1px solid var(--hairline-2);border-radius:var(--r-md);background:var(--surface-2);padding:var(--sp-4);display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-1);text-align:left;transition:border-color var(--dur-fast),background var(--dur-fast),transform var(--dur-fast) var(--spring),box-shadow var(--dur)}.type-card:active{transform:scale(.96)}.type-card .ic{width:22px;height:22px;color:var(--text-3);margin-bottom:2px}.type-card .t{font-weight:700;font-size:var(--fs-base)}.type-card .d{font-size:var(--fs-xs);color:var(--text-3)}.type-card.active{border-color:color-mix(in hsl,var(--rose) 55%,transparent);background:var(--rose-dim);box-shadow:0 0 18px #ef43631f}.type-card.active .ic,.type-card.active .t{color:var(--rose)}.chips{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.chip{min-height:38px;padding:0 var(--sp-4);display:inline-flex;align-items:center;gap:6px;background:var(--surface-2);border:1px solid var(--hairline);border-radius:var(--r-full);font-size:var(--fs-sm);font-weight:500;color:var(--text-2);transition:all var(--dur-fast);user-select:none}.chip.on{background:var(--rose-dim);border-color:color-mix(in hsl,var(--rose) 50%,transparent);color:var(--rose);font-weight:600}.chip.gold.on{background:var(--gold-dim);border-color:color-mix(in hsl,var(--gold) 50%,transparent);color:var(--gold)}.chip.lav.on{background:var(--lav-dim);border-color:color-mix(in hsl,var(--lav) 50%,transparent);color:var(--lav)}.chip:active{transform:scale(.94)}.chip .x{opacity:.55;font-size:.8em}.stars{display:flex;gap:var(--sp-2)}.stars button{width:42px;height:42px;border-radius:var(--r-sm);display:inline-flex;align-items:center;justify-content:center;background:var(--surface-2);border:1px solid var(--hairline);color:var(--text-3);transition:all var(--dur-fast) var(--spring)}.stars button .ic{width:22px;height:22px}.stars button.on{background:var(--rose-dim);border-color:color-mix(in hsl,var(--rose) 35%,transparent);color:var(--rose)}.stars button.on .ic{fill:currentColor}.stars button:active{transform:scale(.86)}.stepper{display:inline-flex;align-items:center;gap:var(--sp-2)}.stepper button{width:38px;height:38px;border-radius:var(--r-full);background:var(--surface-2);border:1px solid var(--hairline);color:var(--text-2);font-size:var(--fs-lg);font-weight:600;line-height:1;display:inline-flex;align-items:center;justify-content:center;transition:transform var(--dur-fast) var(--spring)}.stepper button:active{transform:scale(.88)}.stepper .num{min-width:2.2ch;text-align:center;font-weight:700;font-size:var(--fs-md)}.overlay{position:fixed;inset:0;z-index:50;background:var(--scrim);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:flex-end;justify-content:center;animation:fadeIn .18s ease}.sheet{position:relative;width:100%;max-width:480px;max-height:92dvh;overflow-y:auto;overscroll-behavior:contain;scroll-padding-bottom:96px;background:color-mix(in hsl,var(--surface) 96%,white 1%);border:1px solid var(--hairline-2);border-bottom:none;border-radius:var(--r-xl) var(--r-xl) 0 0;padding:var(--sp-3) var(--sp-5) calc(env(safe-area-inset-bottom) + var(--sp-6));box-shadow:var(--shadow-sheet),inset 0 1px 0 var(--highlight);animation:sheetUp .42s var(--spring)}body.sheet-open{overflow:hidden}.sheet-x{position:absolute;top:14px;right:14px;z-index:2;width:32px;height:32px;border-radius:var(--r-full);display:inline-flex;align-items:center;justify-content:center;background:var(--surface-2);color:var(--text-3);border:1px solid var(--hairline);transition:background var(--dur-fast),color var(--dur-fast),transform var(--dur-fast) var(--spring)}.sheet-x .ic{width:14px;height:14px}.sheet-x:active{transform:scale(.88)}.sheet-handle{width:40px;height:4px;border-radius:var(--r-full);background:var(--surface-3);margin:var(--sp-1) auto var(--sp-4)}.sheet h2{font-family:var(--font-display);font-size:var(--fs-lg);font-weight:700;margin-bottom:var(--sp-4);padding-right:40px}.sheet-foot{position:sticky;bottom:calc(-1 * var(--sp-6) - env(safe-area-inset-bottom));margin:var(--sp-4) calc(-1 * var(--sp-5)) calc(-1 * var(--sp-6) - env(safe-area-inset-bottom));padding:var(--sp-3) var(--sp-5) calc(env(safe-area-inset-bottom) + var(--sp-4));background:var(--glass);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-top:1px solid var(--hairline);display:flex;gap:var(--sp-3);pointer-events:none}.sheet-foot .btn{pointer-events:auto}@keyframes fadeIn{0%{opacity:0}}@keyframes sheetUp{0%{transform:translateY(64px);opacity:.3}}.overlay.closing{animation:overlayOut .22s ease forwards;pointer-events:none}.overlay.closing .sheet{animation:sheetDown .24s var(--ease) forwards}@keyframes overlayOut{to{opacity:0}}@keyframes sheetDown{to{transform:translateY(105%);opacity:.5}}#toast-root{position:fixed;top:calc(env(safe-area-inset-top) + 14px);left:0;right:0;z-index:99;display:flex;flex-direction:column;align-items:center;gap:var(--sp-2);pointer-events:none}.toast{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-5);background:var(--glass);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);color:var(--text);border:1px solid var(--hairline-2);border-radius:var(--r-full);font-size:var(--fs-sm);font-weight:600;box-shadow:var(--shadow-float);animation:toastIn .34s var(--spring),toastOut .3s ease 2.3s forwards;max-width:88vw;pointer-events:auto;cursor:pointer}.toast.ok{border-color:color-mix(in hsl,var(--ok) 50%,transparent)}.toast.err{border-color:color-mix(in hsl,var(--danger) 55%,transparent);color:var(--danger)}@keyframes toastIn{0%{transform:translateY(-16px) scale(.96);opacity:0}}@keyframes toastOut{to{opacity:0;transform:translateY(-10px)}}.skel{border-radius:var(--r-md);background:linear-gradient(100deg,var(--surface-2) 35%,var(--surface-3) 50%,var(--surface-2) 65%);background-size:240% 100%;animation:shimmer 1.4s ease-in-out infinite}@keyframes shimmer{0%{background-position:120% 0}to{background-position:-120% 0}}.greeting{padding:var(--sp-2) var(--sp-1) var(--sp-4)}.greeting .hi{font-size:var(--fs-xl);font-weight:800;letter-spacing:.01em}.greeting .date{font-size:var(--fs-sm);color:var(--text-3);margin-top:2px}.hero{position:relative;overflow:hidden;background:radial-gradient(130% 90% at 50% -30%,hsl(349 80% 55% / .14),transparent 58%),linear-gradient(to bottom,color-mix(in hsl,var(--surface) 90%,white 1.5%),var(--surface));border:1px solid var(--hairline-2);border-radius:var(--r-xl);padding:var(--sp-6) var(--sp-5) var(--sp-5);display:flex;flex-direction:column;align-items:center;text-align:center;box-shadow:inset 0 1px 0 var(--highlight)}.hero:before{content:"";position:absolute;left:50%;top:-90px;transform:translate(-50%);width:280px;height:200px;border-radius:50%;background:radial-gradient(closest-side,hsl(349 84% 60% / .16),transparent);animation:heroGlow 5.5s ease-in-out infinite;pointer-events:none}@keyframes heroGlow{50%{transform:translate(-50%) scale(1.18);opacity:.75}}.hero-ring{position:relative;width:150px;height:150px;margin:var(--sp-3) 0 var(--sp-2)}.hero-ring svg{transform:rotate(-90deg);filter:drop-shadow(0 0 12px hsl(349 84% 60% / .25))}.hero-ring .track{stroke:color-mix(in hsl,var(--surface-3) 80%,transparent)}.hero-ring .fill{stroke:url(#ring-grad);transition:stroke-dashoffset .9s var(--ease)}.hero-ring .center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0}.hero-num{font-family:var(--font-display);font-size:3.25rem;font-weight:600;line-height:1;letter-spacing:-.02em;color:var(--text)}.hero-num .u{font-size:var(--fs-sm);font-weight:500;color:var(--text-3);font-family:var(--font-sans);letter-spacing:0}.hero-ring .cap{font-size:var(--fs-xs);color:var(--text-3);margin-top:5px;text-transform:uppercase;letter-spacing:.1em}.hero-body{display:contents}.hero-body .h,.hero-title{font-family:var(--font-display);font-size:1.35rem;font-weight:700;line-height:1.4;letter-spacing:.02em;margin-top:var(--sp-1)}.hero-body .s,.hero-meta{font-size:var(--fs-sm);color:var(--text-2);margin:var(--sp-1) 0 var(--sp-4)}.flame-chip{display:inline-flex;align-items:center;gap:5px;padding:4px 12px;border-radius:var(--r-full);font-size:var(--fs-xs);font-weight:700;letter-spacing:.04em;border:1px solid transparent}.flame-chip.l1{background:var(--surface-3);color:var(--text-2);border-color:var(--hairline-2)}.flame-chip.l2{background:var(--gold-dim);color:var(--gold);border-color:#e0aa5233}.flame-chip.l3{background:var(--rose-dim);color:var(--rose);border-color:#f0567238}.flame-chip.l4{background:linear-gradient(120deg,var(--rose-dim),var(--gold-dim));color:var(--rose);border-color:#f056724d;box-shadow:0 0 16px #ed2c4f47}.widgets{display:grid;grid-template-columns:1fr 1fr;margin-top:var(--sp-4);background:linear-gradient(to bottom,color-mix(in hsl,var(--surface) 92%,white 1%),var(--surface));border:1px solid var(--hairline);border-radius:var(--r-lg);box-shadow:inset 0 1px 0 var(--highlight);overflow:hidden}.widget{padding:var(--sp-4) var(--sp-5)}.widget:nth-child(odd){border-right:1px solid var(--hairline)}.widget:nth-child(-n+2){border-bottom:1px solid var(--hairline)}.widget .v{font-family:var(--font-display);font-size:var(--fs-2xl);font-weight:600;line-height:1.15;letter-spacing:-.01em}.widget .v.rose{color:var(--rose)}.widget .v.gold{color:var(--gold)}.widget .v.lav{color:var(--lav)}.widget .k{font-size:var(--fs-xs);color:var(--text-3);white-space:nowrap;text-transform:uppercase;letter-spacing:.08em;margin-top:2px}.list-row{width:100%;display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) 0;text-align:left}.list-row+.list-row{border-top:1px solid var(--hairline)}.list-row .body{flex:1;min-width:0}.list-row .t{font-weight:600;font-size:var(--fs-base)}.list-row .d{font-size:var(--fs-sm);color:var(--text-3)}.list-row .chev{color:var(--text-3)}.list-row:active .t{opacity:.7}.rec-item{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) 0}.rec-item+.rec-item{border-top:1px solid var(--hairline)}.rec-item .body{flex:1;min-width:0}.rec-item .l1{font-weight:600;font-size:var(--fs-base);display:flex;gap:var(--sp-2);align-items:baseline;flex-wrap:wrap}.rec-item .l1 .time{font-size:var(--fs-sm);color:var(--text-3);font-weight:400}.rec-item .l2{font-size:var(--fs-sm);color:var(--text-2);overflow-wrap:anywhere}.rec-item .ops{display:flex;gap:var(--sp-1)}.rec-item .ops button{width:36px;height:36px;border-radius:var(--r-sm);display:inline-flex;align-items:center;justify-content:center;color:var(--text-3);transition:background var(--dur-fast)}.rec-item .ops button:active{background:var(--surface-2)}.rec-item .ops .ic{width:17px;height:17px}.cal-card{padding:var(--sp-4) var(--sp-4) var(--sp-5)}.cal-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--sp-4);padding:0 var(--sp-1)}.cal-nav .title{font-family:var(--font-display);font-size:var(--fs-xl);font-weight:700;letter-spacing:.01em}.cal-nav .title .y{color:var(--text-3);font-weight:500;font-size:var(--fs-sm);margin-left:6px;font-family:var(--font-sans)}.cal-nav .navs{display:flex;gap:var(--sp-2)}.cal-nav .navs button{width:36px;height:36px;border-radius:var(--r-full);background:var(--surface-2);border:1px solid var(--hairline);color:var(--text-2);display:inline-flex;align-items:center;justify-content:center;transition:transform var(--dur-fast) var(--spring)}.cal-nav .navs button:active{transform:scale(.88)}.cal-nav .navs .today-btn{width:auto;padding:0 var(--sp-3);font-size:var(--fs-sm);font-weight:600}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.cal-grid .dow{text-align:center;font-size:var(--fs-xs);color:var(--text-3);padding:var(--sp-1) 0 var(--sp-2);text-transform:uppercase;letter-spacing:.06em}.cal-cell{aspect-ratio:1;border-radius:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;position:relative;transition:transform var(--dur-fast) var(--spring),background var(--dur-fast)}.cal-cell:active{transform:scale(.88)}.cal-cell.empty{visibility:hidden}.cal-cell .d{font-size:var(--fs-sm);font-weight:500;color:var(--text-2);line-height:1;font-variant-numeric:tabular-nums}.cal-cell.future .d{color:var(--text-3);opacity:.45}.cal-cell.today{box-shadow:inset 0 0 0 1.5px var(--rose)}.cal-cell.today .d{color:var(--rose);font-weight:700}.cal-cell.sex{background:linear-gradient(145deg,var(--rose-soft),var(--rose) 50%,var(--rose-deep));box-shadow:0 2px 10px #eb143c4d,inset 0 1px #ffffff4d}.cal-cell.sex .d{color:var(--on-rose);font-weight:700}.cal-cell.sex .cal-dots i{background:#ffffffd9!important}.cal-cell.sex.today{box-shadow:0 0 0 2px var(--bg),0 0 0 3.5px var(--rose),0 2px 12px #eb143c66}.cal-dots{display:flex;gap:3px;height:5px}.cal-dots i{width:5px;height:5px;border-radius:50%}.cal-dots i.him{background:var(--gold)}.cal-dots i.her{background:var(--lav)}.cal-cell .cnt{position:absolute;top:3px;right:5px;font-size:.5625rem;font-weight:800;line-height:1;color:var(--rose)}.cal-cell.sex .cnt{color:#fffffff2}.cal-legend{display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-4);justify-content:center;margin-top:var(--sp-4);padding-top:var(--sp-3);border-top:1px solid var(--hairline);font-size:var(--fs-xs);color:var(--text-3)}.cal-legend>span{display:inline-flex;align-items:center}.cal-legend .sw{display:inline-block;width:8px;height:8px;border-radius:3px;margin-right:5px}.cal-legend .sw.sex{background:var(--rose)}.cal-legend .sw.him{background:var(--gold);border-radius:50%}.cal-legend .sw.her{background:var(--lav);border-radius:50%}.signal-banner{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:linear-gradient(120deg,var(--rose-dim),var(--lav-dim));border:1px solid color-mix(in hsl,var(--rose) 35%,transparent);border-radius:var(--r-md);font-size:var(--fs-sm);animation:signalIn .45s var(--spring)}@keyframes signalIn{0%{opacity:0;transform:scale(.96)}}.range-tabs{margin-bottom:var(--sp-4)}.stat-cards{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--sp-3)}.stat-tile{background:linear-gradient(to bottom,color-mix(in hsl,var(--surface) 92%,white 1%),var(--surface));border:1px solid var(--hairline);border-radius:var(--r-md);padding:var(--sp-4);box-shadow:inset 0 1px 0 var(--highlight)}.stat-tile .num{font-family:var(--font-display);font-size:var(--fs-2xl);font-weight:600;line-height:1.2;letter-spacing:-.01em}.stat-tile .num.rose{color:var(--rose)}.stat-tile .num.gold{color:var(--gold)}.stat-tile .num.lav{color:var(--lav)}.stat-tile .lbl{font-size:var(--fs-xs);color:var(--text-3);margin-top:3px;letter-spacing:.02em}.card .stat-cards{gap:0;margin:0 calc(-1 * var(--sp-2))}.card .stat-cards .stat-tile{background:none;border:none;box-shadow:none;border-radius:0;padding:var(--sp-3) var(--sp-4)}.card .stat-cards .stat-tile:nth-child(odd){border-right:1px solid var(--hairline)}.card .stat-cards .stat-tile:not(:nth-last-child(-n+2)){border-bottom:1px solid var(--hairline)}.stat-tile.feature{grid-column:span 2;padding:var(--sp-5);position:relative;overflow:hidden;background:radial-gradient(120% 130% at 85% -30%,hsl(349 80% 55% / .12),transparent 55%),linear-gradient(to bottom,color-mix(in hsl,var(--surface) 90%,white 1.5%),var(--surface));border-color:var(--hairline-2)}.stat-tile.feature .num{font-size:3.5rem;line-height:1.05;letter-spacing:-.02em}.stat-tile.feature .lbl{font-size:var(--fs-sm);margin-top:var(--sp-1)}.stat-tile.feature .lbl b{color:var(--text);font-variant-numeric:tabular-nums}.insight-line{display:flex;align-items:flex-start;gap:var(--sp-2);font-size:var(--fs-sm);color:var(--text-2);padding:var(--sp-2) var(--sp-1) 0;line-height:1.6}.insight-line .ic{width:15px;height:15px;color:var(--rose);margin-top:3px}.insight-line b{color:var(--text)}.insight-card{margin-top:var(--sp-4);padding:var(--sp-3) var(--sp-5) var(--sp-4)}.insight-card .insight-line{padding:var(--sp-2) 0 0}.insight-card .insight-line+.insight-line{border-top:1px dashed var(--hairline);margin-top:var(--sp-2);padding-top:var(--sp-3)}.chart-box{position:relative;width:100%}.heatmap{display:grid;grid-auto-flow:column;grid-template-rows:repeat(7,1fr);gap:3px;overflow-x:auto;padding-bottom:var(--sp-2);scrollbar-width:none}.heatmap::-webkit-scrollbar{display:none}.heatmap i{width:11px;height:11px;border-radius:3.5px;background:var(--surface-2)}.heatmap i[data-l="1"]{background:color-mix(in hsl,var(--rose) 30%,var(--surface-2))}.heatmap i[data-l="2"]{background:color-mix(in hsl,var(--rose) 62%,var(--surface-2))}.heatmap i[data-l="3"]{background:var(--rose);box-shadow:0 0 6px #ed2c4f66}.phase-row{display:grid;grid-template-columns:52px 1fr 44px 46px;align-items:center;gap:var(--sp-3);padding:7px 0}.phase-row .ph-name{font-size:var(--fs-sm);font-weight:700}.phase-row .ph-bar{height:12px;border-radius:var(--r-full);background:var(--surface-2);overflow:hidden}.phase-row .ph-bar i{display:block;height:100%;border-radius:var(--r-full);opacity:.75}.phase-row .ph-n{font-size:var(--fs-sm);font-weight:700;text-align:right;font-variant-numeric:tabular-nums}.phase-row .ph-r{font-size:var(--fs-xs);color:var(--text-2);text-align:right;font-variant-numeric:tabular-nums}.vs-row{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) 0}.vs-row .k{width:76px;font-size:var(--fs-sm);color:var(--text-2);flex-shrink:0}.vs-row .track{flex:1;height:20px;display:flex;border-radius:var(--r-full);overflow:hidden;background:var(--surface-2)}.vs-row .a{background:linear-gradient(90deg,color-mix(in hsl,var(--gold) 70%,transparent),var(--gold))}.vs-row .b{background:linear-gradient(90deg,var(--lav),color-mix(in hsl,var(--lav) 70%,transparent))}.vs-row .n{width:30px;font-size:var(--fs-sm);font-weight:700;text-align:right;flex-shrink:0;font-variant-numeric:tabular-nums}.vs-row .n.gold{color:var(--gold)}.vs-row .n.lav{color:var(--lav)}.wish-item{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) 0}.wish-item+.wish-item{border-top:1px solid var(--hairline)}.wish-check{width:26px;height:26px;border-radius:var(--r-full);border:1.5px solid var(--border);flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;color:transparent;transition:all var(--dur-fast) var(--spring)}.wish-check .ic{width:15px;height:15px}.wish-item.done .wish-check{background:linear-gradient(145deg,var(--rose),var(--rose-deep));border-color:transparent;color:var(--on-rose);box-shadow:0 2px 8px #ed2c4f59}.wish-item .body{flex:1;min-width:0}.wish-item .t{font-weight:600;font-size:var(--fs-base);overflow-wrap:anywhere}.wish-item.done .t{color:var(--text-3);text-decoration:line-through;text-decoration-color:color-mix(in hsl,var(--rose) 55%,transparent)}.wish-item .c{font-size:var(--fs-xs);color:var(--text-3)}.wish-item .del,.coupon .del{width:34px;height:34px;border-radius:var(--r-sm);color:var(--text-3);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.wish-item .del .ic,.coupon .del .ic{width:16px;height:16px}.dice-zone{text-align:center;padding:var(--sp-2) 0 var(--sp-3)}.dice-btn{width:74px;height:74px;border-radius:var(--r-md);background:var(--surface-2);border:1px solid var(--hairline);color:var(--rose);display:inline-flex;align-items:center;justify-content:center;transition:transform .5s var(--ease)}.dice-btn .ic{width:36px;height:36px}.dice-btn.rolling,.rolling{animation:diceRoll .7s ease}@keyframes diceRoll{0%{transform:rotate(0) scale(1)}50%{transform:rotate(360deg) scale(1.25)}to{transform:rotate(720deg) scale(1)}}.dice-result{margin-top:var(--sp-3);font-size:var(--fs-md);font-weight:700;color:var(--rose);min-height:1.7em}.milestone{display:flex;gap:var(--sp-4);padding:var(--sp-2) 0 var(--sp-2) var(--sp-4);border-left:1.5px solid color-mix(in hsl,var(--rose) 30%,transparent);margin-left:5px;position:relative}.milestone:before{content:"";position:absolute;left:-5px;top:18px;width:8.5px;height:8.5px;border-radius:50%;background:var(--rose);box-shadow:0 0 8px #ee3a5b80}.milestone .what{font-weight:600;font-size:var(--fs-base)}.milestone .when{font-size:var(--fs-sm);color:var(--text-3)}.badge-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-3)}.badge-item{text-align:center;padding:var(--sp-4) var(--sp-2);background:var(--surface-2);border:1px solid var(--hairline);border-radius:var(--r-md);transition:transform var(--dur-fast) var(--spring)}.badge-item:active{transform:scale(.94)}.badge-item .emo{font-size:1.7rem;filter:grayscale(1) opacity(.3)}.badge-item.unlocked .emo{filter:none}.badge-item.unlocked{background:var(--rose-dim);border-color:color-mix(in hsl,var(--rose) 30%,transparent)}.badge-item .t{font-size:var(--fs-xs);font-weight:600;margin-top:var(--sp-1)}.badge-item .d{font-size:.625rem;color:var(--text-3)}.couple-card{position:relative;overflow:hidden;background:radial-gradient(130% 110% at 50% -35%,hsl(349 80% 55% / .13),transparent 58%),linear-gradient(to bottom,color-mix(in hsl,var(--surface) 90%,white 1.5%),var(--surface));border:1px solid var(--hairline-2);border-radius:var(--r-xl);padding:var(--sp-8) var(--sp-5) var(--sp-6);text-align:center;box-shadow:inset 0 1px 0 var(--highlight)}.couple-card:before{content:"";position:absolute;top:14px;left:24px;width:2px;height:2px;border-radius:50%;background:#f9e9c8e6;box-shadow:52px 26px 0 -.4px #f994a7cc,118px 8px #f9e9c88c,186px 34px 0 -.7px #d2baf3cc,246px 12px #f9e9c8b3,300px 40px 0 -.5px #fa9eafa6,338px 18px #f9e9c880,22px 64px 0 -.6px #d2baf399,88px 52px #f9e9c866,158px 70px 0 -.7px #fa9eaf80,282px 62px #f9e9c873;animation:twinkle 3.6s ease-in-out infinite alternate;pointer-events:none}@keyframes twinkle{0%{opacity:.5}to{opacity:1}}.couple-card .names{font-family:var(--font-display);font-size:var(--fs-xl);font-weight:700;display:flex;align-items:center;justify-content:center;gap:var(--sp-3)}.couple-card .names .amp{color:var(--rose);filter:drop-shadow(0 0 8px hsl(349 84% 58% / .5))}.couple-card .names .amp .ic{width:22px;height:22px}.couple-card .since{font-size:var(--fs-sm);color:var(--text-2);margin-top:var(--sp-2);text-wrap:balance}.couple-card .since b{font-family:var(--font-display);font-size:1.35rem;color:var(--rose);font-variant-numeric:tabular-nums;letter-spacing:-.01em;padding:0 2px}.login-page{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--sp-8);position:relative}.login-mark{position:relative;width:88px;height:88px;border-radius:30px;background:linear-gradient(145deg,var(--rose-soft),var(--rose) 45%,var(--rose-deep));color:var(--on-rose);display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-cta),var(--glow-rose),inset 0 1px #ffffff59;animation:heartbeat 2s ease-in-out infinite}.login-mark .ic{width:44px;height:44px}@keyframes heartbeat{0%,to{transform:scale(1)}10%{transform:scale(1.08)}20%{transform:scale(1)}30%{transform:scale(1.05)}40%{transform:scale(1)}}.login-page h1{font-family:var(--font-display);margin:var(--sp-6) 0 var(--sp-1);font-size:1.75rem;font-weight:700;letter-spacing:.08em}.login-page .hint{color:var(--text-3);font-size:var(--fs-sm);margin-bottom:var(--sp-8);letter-spacing:.06em}.login-form{width:100%;max-width:300px;display:flex;flex-direction:column;gap:var(--sp-3)}.login-form .input{text-align:center;letter-spacing:.25em}.burst{position:fixed;inset:0;z-index:98;pointer-events:none;display:flex;align-items:center;justify-content:center}.burst span{position:absolute;font-size:1.4rem;animation:burstFly .9s var(--ease) forwards}@keyframes burstFly{0%{transform:translate(0) scale(.4);opacity:1}to{transform:translate(var(--dx),var(--dy)) scale(1.1);opacity:0}}.muted{color:var(--text-3);font-size:var(--fs-sm)}.center{text-align:center}.row{display:flex;align-items:center;gap:var(--sp-3)}.row.between{justify-content:space-between}.grow{flex:1}.mt-2{margin-top:var(--sp-2)}.mt-4{margin-top:var(--sp-4)}.mt-6{margin-top:var(--sp-6)}.mb-2{margin-bottom:var(--sp-2)}.mb-4{margin-bottom:var(--sp-4)}.empty-hint{text-align:center;color:var(--text-3);padding:var(--sp-10) var(--sp-5);font-size:var(--fs-sm);line-height:2;letter-spacing:.01em}.empty-hint .ic{width:34px;height:34px;opacity:.4;display:block;margin:0 auto var(--sp-3)}.empty-hint b{color:var(--text-2);font-weight:600}.grad-text{background:linear-gradient(120deg,var(--rose-soft) 10%,var(--lav) 90%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}#view{view-transition-name:view}::view-transition-old(view),::view-transition-new(view){animation-duration:.28s;animation-timing-function:var(--ease)}.vt-fwd::view-transition-old(view){animation-name:vtOutL}.vt-fwd::view-transition-new(view){animation-name:vtInR}.vt-back::view-transition-old(view){animation-name:vtOutR}.vt-back::view-transition-new(view){animation-name:vtInL}@keyframes vtOutL{to{opacity:0;transform:translate(-30px)}}@keyframes vtInR{0%{opacity:0;transform:translate(30px)}}@keyframes vtOutR{to{opacity:0;transform:translate(30px)}}@keyframes vtInL{0%{opacity:0;transform:translate(-30px)}}.qa-q{font-family:var(--font-display);font-size:1.2rem;font-weight:700;line-height:1.6;letter-spacing:.01em;padding:var(--sp-2) 0 var(--sp-3)}.qa-cat{display:inline-block;padding:1px 9px;border-radius:var(--r-full);font-size:var(--fs-xs);font-weight:700;background:var(--lav-dim);color:var(--lav);margin-right:var(--sp-2);vertical-align:2px}.qa-ans{display:flex;gap:var(--sp-2);align-items:flex-start;padding:var(--sp-2) var(--sp-3);border-radius:var(--r-md);font-size:var(--fs-sm);line-height:1.6;margin-top:var(--sp-2);border:1px solid transparent}.qa-ans .who{font-weight:700;flex-shrink:0}.qa-ans.him{background:var(--gold-dim);border-color:#e0aa521f}.qa-ans.him .who{color:var(--gold)}.qa-ans.her{background:var(--lav-dim);border-color:#ad86df1f}.qa-ans.her .who{color:var(--lav)}.qa-ans.sealed{position:relative;overflow:hidden;cursor:pointer}.qa-ans.sealed>span:not(.who){filter:blur(7px);user-select:none}.qa-ans.sealed:after{content:"💌 " attr(data-seal);position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:var(--fs-xs);font-weight:600;color:var(--text-2);background:color-mix(in hsl,var(--surface) 25%,transparent)}.care-banner{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:linear-gradient(120deg,var(--blood-dim),transparent 70%);border:1px solid color-mix(in hsl,var(--blood) 32%,transparent);border-radius:var(--r-md);font-size:var(--fs-sm)}.anni-banner{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:linear-gradient(120deg,var(--gold-dim),transparent 70%);border:1px solid color-mix(in hsl,var(--gold) 30%,transparent);border-radius:var(--r-md);font-size:var(--fs-sm)}.anni-banner .t{font-weight:700}.anni-banner .d{margin-left:auto;flex-shrink:0;font-family:var(--font-display);font-weight:700;color:var(--gold);font-variant-numeric:tabular-nums}.cal-cell.period{background:var(--blood-dim)}.cal-cell.period .d{color:color-mix(in hsl,var(--blood) 75%,var(--text));font-weight:700}.cal-cell.pred{box-shadow:inset 0 0 0 1px color-mix(in hsl,var(--blood) 42%,transparent)}.cal-cell.pred .d{color:color-mix(in hsl,var(--blood) 60%,var(--text-3))}.cal-dots i.fert{background:var(--fertile)}.cal-legend .sw.period{background:color-mix(in hsl,var(--blood) 55%,transparent)}.cal-legend .sw.fert{background:var(--fertile);border-radius:50%}.coupon{position:relative;display:flex;align-items:center;gap:var(--sp-3);border-radius:var(--r-md);padding:var(--sp-4);margin-top:var(--sp-3);overflow:hidden}.coupon.him{background:linear-gradient(120deg,var(--gold-dim),transparent 75%);border:1px solid color-mix(in hsl,var(--gold) 32%,transparent)}.coupon.her{background:linear-gradient(120deg,var(--lav-dim),transparent 75%);border:1px solid color-mix(in hsl,var(--lav) 32%,transparent)}.coupon:before{content:"";position:absolute;left:54px;top:6px;bottom:6px;border-left:1.5px dashed var(--border)}.coupon .tick{width:40px;text-align:center;font-size:1.4rem;flex-shrink:0}.coupon .body{flex:1;min-width:0;padding-left:var(--sp-3)}.coupon .t{font-weight:700;font-size:var(--fs-base)}.coupon .d{font-size:var(--fs-xs);color:var(--text-3)}.coupon.redeemed{opacity:.55}.coupon.redeemed .t{text-decoration:line-through}.ic-badge.rolling{animation:diceRoll .7s ease}.deck-stage{position:relative;height:300px;margin:var(--sp-4) 0}.deck-card{position:absolute;inset:0;border-radius:var(--r-lg);background:radial-gradient(120% 100% at 85% -10%,var(--rose-dim),transparent 55%),var(--surface-2);border:1px solid var(--hairline-2);box-shadow:var(--shadow-float),inset 0 1px 0 var(--highlight);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-3);padding:var(--sp-6);text-align:center;user-select:none;will-change:transform}.deck-card.top{z-index:3;cursor:grab;touch-action:none}.deck-card.top:active{cursor:grabbing}.deck-card.back1{transform:scale(.95) translateY(14px);opacity:.65;z-index:2}.deck-card.back2{transform:scale(.9) translateY(28px);opacity:.35;z-index:1}.deck-card .txt{font-family:var(--font-display);font-size:var(--fs-lg);font-weight:700;line-height:1.7}.deck-card .lvl{padding:2px 12px;border-radius:var(--r-full);font-size:var(--fs-xs);font-weight:700}.deck-card .lvl.l1{background:var(--surface-3);color:var(--text-2)}.deck-card .lvl.l2{background:var(--gold-dim);color:var(--gold)}.deck-card .lvl.l3{background:var(--rose-dim);color:var(--rose)}.deck-stamp{position:absolute;top:18px;padding:4px 14px;border-radius:10px;font-weight:800;letter-spacing:.12em;font-size:var(--fs-md);border:2.5px solid;opacity:0;pointer-events:none}.deck-stamp.like{left:16px;color:var(--rose);border-color:var(--rose);transform:rotate(-12deg)}.deck-stamp.pass{right:16px;color:var(--text-3);border-color:var(--text-3);transform:rotate(12deg)}.deck-card.fly-left{transition:transform .35s ease,opacity .35s ease;transform:translate(-130%) rotate(-18deg)!important;opacity:0}.deck-card.fly-right{transition:transform .35s ease,opacity .35s ease;transform:translate(130%) rotate(18deg)!important;opacity:0}.deck-actions{display:flex;justify-content:center;gap:var(--sp-10);margin-top:var(--sp-2)}.deck-btn{width:58px;height:58px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;box-shadow:var(--shadow-float);transition:transform var(--dur-fast) var(--spring)}.deck-btn:active{transform:scale(.86)}.deck-btn.pass{background:var(--surface-2);border:1px solid var(--hairline-2);color:var(--text-2)}.deck-btn.like{background:linear-gradient(145deg,var(--rose-soft),var(--rose) 45%,var(--rose-deep));color:#fff;box-shadow:var(--shadow-cta)}.deck-btn .ic{width:24px;height:24px}.stamp-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-3)}.stamp{border:1.5px dashed var(--border);border-radius:var(--r-md);padding:var(--sp-3) var(--sp-2);text-align:center;color:var(--text-3)}.stamp .p{font-weight:600;font-size:var(--fs-sm)}.stamp .n{font-size:var(--fs-xs)}.stamp.got{border-style:solid;border-color:color-mix(in hsl,var(--rose) 45%,transparent);background:var(--rose-dim);color:var(--text)}.stamp.got .n{color:var(--rose);font-weight:700}.tl-card{position:relative}.tl-card .tl-head{position:sticky;top:calc(env(safe-area-inset-top) + 62px);z-index:5;margin:calc(-1 * var(--sp-5)) calc(-1 * var(--sp-5)) var(--sp-2);padding:var(--sp-3) var(--sp-5);background:var(--glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:var(--r-lg) var(--r-lg) 0 0;border-bottom:1px solid var(--hairline)}.tl-card .tl-head .t{font-family:var(--font-display)}.cycle-rows{margin:var(--sp-2) 0 var(--sp-5)}.cycle-row{display:flex;align-items:center;gap:var(--sp-3);padding:5px 0}.cycle-row .dt{width:62px;font-size:var(--fs-xs);color:var(--text-3);flex-shrink:0}.cycle-row .bar{height:13px;border-radius:var(--r-full);background:var(--blood-dim);overflow:hidden;display:block;min-width:40px}.cycle-row .bar i{display:block;height:100%;background:color-mix(in hsl,var(--blood) 55%,transparent);border-radius:var(--r-full)}.cycle-row .n{margin-left:auto;flex-shrink:0;font-size:var(--fs-sm);font-weight:700;font-variant-numeric:tabular-nums}.cycle-row .n.odd{color:var(--gold)}.kv-row{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-4);padding:10px 0;border-bottom:1px solid var(--hairline)}.kv-row:last-of-type{border-bottom:none}.kv-row .k{color:var(--text-3);font-size:var(--fs-sm);flex-shrink:0}.kv-row .v{font-weight:600;text-align:right;overflow-wrap:anywhere}.kv-note{margin-top:var(--sp-4);padding:var(--sp-3) var(--sp-4);background:var(--surface-2);border-left:2.5px solid color-mix(in hsl,var(--rose) 55%,transparent);border-radius:var(--r-sm);font-size:var(--fs-sm);line-height:1.7}.privacy-shield{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;background:color-mix(in hsl,var(--bg) 58%,transparent);backdrop-filter:blur(30px) saturate(.75);-webkit-backdrop-filter:blur(30px) saturate(.75)}.privacy-shield.out{animation:shieldOut .24s ease forwards}@keyframes shieldOut{to{opacity:0}}.stealth{position:fixed;inset:0;z-index:150;background:#f4f6f8;color:#22303f;display:flex;flex-direction:column;padding:calc(env(safe-area-inset-top) + 22px) 20px calc(env(safe-area-inset-bottom) + 20px);overflow-y:auto;font-family:var(--font-sans)}.stealth .st-head{display:flex;align-items:baseline;justify-content:space-between;margin:0 auto 18px;width:100%;max-width:440px}.stealth h1{font-size:1.45rem;font-weight:800;color:#17324d;user-select:none;-webkit-user-select:none}.stealth .st-date{font-size:.8rem;color:#7b8794}.stealth .st-list{width:100%;max-width:440px;margin:0 auto}.stealth .st-item{width:100%;display:flex;align-items:center;gap:14px;background:#fff;border-radius:14px;padding:15px 16px;margin-bottom:10px;box-shadow:0 1px 3px #172b4d12;font-size:.95rem;font-weight:600;color:#2a3a4d;text-align:left;transition:transform .14s ease}.stealth .st-item:active{transform:scale(.98)}.stealth .st-emoji{font-size:1.25rem}.stealth .st-t{flex:1}.stealth .st-check{width:24px;height:24px;border-radius:50%;border:2px solid #cbd5e0;position:relative;flex-shrink:0;transition:background .14s ease,border-color .14s ease}.stealth .st-item.on .st-check{background:#26a269;border-color:#26a269}.stealth .st-item.on .st-check:after{content:"✓";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fff;font-size:13px;font-weight:700}.stealth .st-item.on .st-t{color:#93a1b0;text-decoration:line-through}.stealth .st-tip{width:100%;max-width:440px;margin:10px auto 0;text-align:center;color:#8795a5;font-size:.8rem}.stealth .st-tip b{color:#26a269}:root[data-theme=light] .couple-card:before{background:#c32243b3;box-shadow:52px 26px 0 -.4px #c3224399,118px 8px #a8712480,186px 34px 0 -.7px #7343b199,246px 12px #a871248c,300px 40px 0 -.5px #d0254780,338px 18px #a8712466,22px 64px 0 -.6px #7343b173,88px 52px #a8712452,158px 70px 0 -.7px #d0254766,282px 62px #a871245c}:root[data-theme=light] .tabbar,:root[data-theme=light] .sheet-foot,:root[data-theme=light] .toast{backdrop-filter:blur(20px) saturate(.9);-webkit-backdrop-filter:blur(20px) saturate(.9)}:root[data-theme=light] .topbar{background:linear-gradient(to bottom,color-mix(in hsl,var(--bg) 96%,transparent),color-mix(in hsl,var(--bg) 78%,transparent))}:root[data-theme=light] .qa-ans.sealed:after{background:color-mix(in hsl,var(--surface) 62%,transparent)}.game-hint{text-align:center;color:var(--text-3);padding:var(--sp-8) 0;font-size:var(--fs-sm);line-height:2}.game-hint b{color:var(--text);font-size:var(--fs-md)}.game-draw{margin-top:var(--sp-4);padding:var(--sp-6) var(--sp-5);border-radius:var(--r-lg);background:radial-gradient(120% 100% at 85% -10%,var(--rose-dim),transparent 55%),var(--surface-2);border:1px solid var(--hairline-2);text-align:center;box-shadow:inset 0 1px 0 var(--highlight);animation:drawIn .32s var(--spring)}@keyframes drawIn{0%{opacity:0;transform:translateY(10px) scale(.97)}}.game-draw .txt{font-family:var(--font-display);font-size:var(--fs-lg);font-weight:700;line-height:1.7;margin-top:var(--sp-3)}.game-draw .kind{font-size:var(--fs-xs);color:var(--text-3);letter-spacing:.1em}.game-draw .lvl{display:inline-block;padding:2px 12px;margin-right:var(--sp-2);border-radius:var(--r-full);font-size:var(--fs-xs);font-weight:700}.game-draw .lvl.l1{background:var(--surface-3);color:var(--text-2)}.game-draw .lvl.l2{background:var(--gold-dim);color:var(--gold)}.game-draw .lvl.l3{background:var(--rose-dim);color:var(--rose)}.game-draw.matched{border-color:color-mix(in hsl,var(--rose) 45%,transparent);box-shadow:0 0 22px #ed2c4f2e,inset 0 1px 0 var(--highlight)}.dice-trio{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-3);margin-top:var(--sp-3)}.die{aspect-ratio:1;border-radius:var(--r-md);background:var(--surface-2);border:1px solid var(--hairline-2);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:var(--sp-2)}.die .k{font-size:var(--fs-xs);color:var(--text-3);letter-spacing:.08em}.die .v{font-family:var(--font-display);font-size:var(--fs-md);font-weight:700;text-align:center;line-height:1.3}.die.hit{animation:dieHit .35s var(--spring);border-color:color-mix(in hsl,var(--rose) 45%,transparent)}.die.hit .v{color:var(--rose)}@keyframes dieHit{50%{transform:scale(1.1)}}.game-result{min-height:2.2em;margin:var(--sp-4) 0;font-size:var(--fs-md);font-weight:600}.game-result b{color:var(--rose);font-family:var(--font-display)}.who-opts{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3);margin-top:var(--sp-4)}.who-opts button{min-height:64px;border-radius:var(--r-md);font-size:var(--fs-md);font-weight:700;background:var(--surface-2);border:1px solid var(--hairline-2);transition:transform var(--dur-fast) var(--spring),border-color var(--dur-fast)}.who-opts button:active{transform:scale(.95)}.who-opts button.him{color:var(--gold)}.who-opts button.her{color:var(--lav)}.who-reveal{display:flex;justify-content:center;gap:var(--sp-5);margin-top:var(--sp-4);font-size:var(--fs-sm);color:var(--text-2);flex-wrap:wrap}.who-reveal b.gold{color:var(--gold)}.who-reveal b.lav{color:var(--lav)}@media(hover:hover)and (pointer:fine){.tabbar .tab:hover{color:var(--text-2)}.tabbar .tab.active:hover{color:var(--rose)}.tab-plus:hover{transform:scale(1.06);box-shadow:var(--shadow-cta),var(--glow-rose)}.btn-primary:hover{filter:brightness(1.07)}.btn-ghost:hover,.btn-outline:hover,.segment button:not(.active):hover{background:var(--surface-3);color:var(--text)}.btn-danger:hover{background:color-mix(in hsl,var(--danger) 10%,transparent)}.chip:not(.on):hover{border-color:var(--border);color:var(--text)}.topbar .tool:hover,.rec-item .ops button:hover{background:var(--surface-2);color:var(--text-2)}.topbar .back:hover,.cal-nav .navs button:hover,.stepper button:hover,.sheet-x:hover{background:var(--surface-3);color:var(--text)}.cal-cell:not(.sex):not(.empty):hover{background:var(--surface-2)}.cal-cell.sex:hover{filter:brightness(1.08)}.stars button:not(.on):hover{color:var(--rose);border-color:color-mix(in hsl,var(--rose) 30%,transparent)}.wish-item .del:hover,.coupon .del:hover{color:var(--danger)}.wish-check:hover{border-color:var(--rose)}.list-row:hover .chev{color:var(--text-2);transform:translate(2px)}.list-row .chev{transition:color var(--dur-fast),transform var(--dur-fast) var(--ease)}.type-card:not(.active):hover{border-color:var(--border);background:var(--surface-3)}.badge-item:hover,.deck-btn:hover{transform:translateY(-2px)}.toast:hover{animation-play-state:running,paused}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
