@import url("https://fonts.googleapis.com/css2?family=Baloo+2:wght@500;600;700&family=Nunito:ital,wght@0,400;0,600;0,700;1,400&display=swap");:root{--font-display:"Baloo 2";--font-body:"Nunito";--ink:#534764;--ink-soft:#8e84a3;--faint:#b6aec6;--mist:#faf5fc;--cloud:#fff;--line:#efe8f6;--line2:#f6f1fa;--lavender:#b9a4ed;--lavender-soft:#e9e0fb;--lavender-mid:#d3c4f4;--peach:#ffb59c;--peach-soft:#ffe3d8;--rose:#f2879f;--rose-soft:#fbd7e0;--mint:#8fd7c8;--mint-soft:#d6f1eb;--gold:#f6c56e;--gold-soft:#fbe6be;--m-dry:#e1daec;--m-sticky:#f4d6b8;--m-creamy:#cde7c8;--m-watery:#aedfe4;--m-egg:#8fd7c8;--f-spot:#fad9e1;--f-light:#f4b0c0;--f-med:#ee8aa0;--f-heavy:#e06a86;--grad:linear-gradient(120deg,#c2abf0,#ffb59c);--shadow-s:0 2px 6px rgba(118,93,158,.08);--shadow:0 10px 30px rgba(118,93,158,.12);--r:22px;--r-s:16px}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--mist);color:var(--ink);font-family:var(--font-body),system-ui,-apple-system,sans-serif;font-size:15.5px;line-height:1.5;-webkit-font-smoothing:antialiased;position:relative;overflow-x:hidden;min-height:100vh}body:after,body:before{content:"";position:fixed;border-radius:50%;filter:blur(70px);opacity:.5;z-index:0;pointer-events:none}body:before{width:420px;height:420px;background:var(--lavender-soft);top:-120px;left:-100px}body:after{width:380px;height:380px;background:var(--peach-soft);bottom:-120px;right:-80px}a{color:inherit;text-decoration:none}.wrap{max-width:1000px;margin:0 auto;padding:0 20px 60px;position:relative;z-index:1}h1,h2,h3{font-family:var(--font-display),Georgia,serif;font-weight:600;margin:0;letter-spacing:.1px}.appbar{padding:30px 0 20px;display:flex;align-items:center;gap:13px}.logo{width:46px;height:46px;flex:none}.brand h1{font-size:30px;line-height:1;font-weight:700;background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.brand p{margin:3px 0 0;color:var(--ink-soft);font-size:13px}.grid{display:grid;grid-template-columns:1fr;grid-gap:20px;gap:20px}@media(min-width:820px){.grid{grid-template-columns:minmax(300px,360px) 1fr}}.card{background:var(--cloud);border-radius:var(--r);box-shadow:var(--shadow);padding:22px;border:1px solid hsla(0,0%,100%,.7);animation:rise .55s cubic-bezier(.22,1,.36,1) both}.card h2{font-size:19px}.card .sub{color:var(--ink-soft);font-size:12.5px;margin-top:2px}.hero-card{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px}.ring-wrap{width:100%;max-width:300px;margin:4px auto 6px}svg.ring{width:100%;height:auto;display:block}svg.ring text{font-family:var(--font-display),serif}.hero-sub{color:var(--ink-soft);font-size:13px;max-width:240px}.hero-sub b{color:var(--ink)}.phase-pills{display:flex;gap:7px;flex-wrap:wrap;justify-content:center;margin-top:10px}.pill{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;color:var(--ink-soft);background:var(--line2);padding:5px 10px;border-radius:999px;font-weight:600}.pill i{width:9px;height:9px;border-radius:50%}.seg{margin-top:18px}.seg:first-child{margin-top:0}.seg>label{display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:700;color:var(--ink-soft);margin-bottom:9px}.seg>label svg{width:16px;height:16px;color:var(--lavender)}input[type=date],textarea{width:100%;border:1.5px solid var(--line);border-radius:13px;padding:11px 13px;font:inherit;color:var(--ink);background:var(--mist);outline:none;transition:.15s}input:focus,textarea:focus{border-color:var(--lavender);background:#fff;box-shadow:0 0 0 4px rgba(185,164,237,.18)}textarea{resize:vertical;min-height:52px}.temp-field{display:flex;align-items:center;gap:10px;border:1.5px solid var(--line);border-radius:14px;padding:8px 14px;background:var(--mist);transition:.15s}.temp-field:focus-within{border-color:var(--lavender);background:#fff;box-shadow:0 0 0 4px rgba(185,164,237,.18)}.temp-field svg{width:22px;height:22px;color:var(--peach);flex:none}.temp-field input{border:none;background:none;outline:none;font:inherit;font-size:22px;font-weight:700;width:100%;color:var(--ink);font-family:var(--font-display),serif}.temp-field .u{color:var(--ink-soft);font-weight:700;font-size:16px}.tiles{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:9px;gap:9px}.tile{border:1.5px solid var(--line);background:var(--cloud);border-radius:18px;padding:14px 6px 11px;cursor:pointer;transition:.16s;display:flex;flex-direction:column;align-items:center;gap:6px;color:var(--ink);position:relative}.tile:hover{transform:translateY(-2px);box-shadow:var(--shadow-s)}.tile .ic{width:32px;height:32px}.tile span{font-size:11px;font-weight:700;color:var(--ink-soft);line-height:1.1;text-align:center}.tile .chk{position:absolute;top:7px;right:7px;width:17px;height:17px;border-radius:50%;background:var(--lavender);color:#fff;font-size:10px;font-weight:700;display:none;align-items:center;justify-content:center}.tile[aria-pressed=true]{border-color:transparent;box-shadow:var(--shadow-s);animation:pop .32s ease}.tile[aria-pressed=true] span{color:var(--ink)}.tile[aria-pressed=true] .chk{display:flex}.tile.m[aria-pressed=true]{background:var(--mint-soft)}.tile.m[aria-pressed=true] .chk{background:var(--mint)}.tile.f[aria-pressed=true]{background:var(--rose-soft)}.tile.f[aria-pressed=true] .chk{background:var(--rose)}.date-row{display:flex;align-items:center;gap:8px}.date-row input{flex:1 1}.step{width:44px;height:44px;border:1.5px solid var(--line);background:var(--cloud);border-radius:14px;cursor:pointer;font-size:18px;color:var(--lavender);font-weight:700;flex:none}.step:hover{border-color:var(--lavender-mid)}.today-btn{border:1.5px solid var(--line);background:var(--cloud);border-radius:14px;padding:0 15px;height:44px;cursor:pointer;font:inherit;font-weight:700;color:var(--ink-soft);flex:none}.today-btn:hover{border-color:var(--lavender-mid);color:var(--ink)}.heart-toggle{display:flex;gap:10px}.heart{flex:1 1;border:1.5px solid var(--line);background:var(--cloud);border-radius:15px;padding:11px;cursor:pointer;transition:.16s;display:flex;align-items:center;justify-content:center;gap:8px;font-weight:700;color:var(--ink-soft);font-size:13.5px}.heart .ic{width:20px;height:20px}.heart:hover{transform:translateY(-2px);box-shadow:var(--shadow-s)}.heart[aria-pressed=true]{background:var(--rose-soft);border-color:transparent;color:var(--rose)}.save-row{display:flex;gap:10px;margin-top:22px}.btn-primary{flex:1 1;border:none;border-radius:15px;padding:14px;font:inherit;font-weight:700;font-size:15.5px;color:#fff;background:var(--grad);cursor:pointer;transition:.16s;box-shadow:0 6px 18px rgba(185,164,237,.4);font-family:var(--font-display),serif}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(185,164,237,.5)}.btn-soft{border:1.5px solid var(--line);background:var(--cloud);border-radius:15px;padding:0 16px;font:inherit;font-weight:700;color:var(--ink-soft);cursor:pointer}.btn-soft:hover{border-color:var(--lavender-mid);color:var(--ink)}.chart-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.nav{display:flex;gap:7px}.nav button{width:36px;height:36px;border:1.5px solid var(--line);background:var(--cloud);border-radius:12px;cursor:pointer;font-size:17px;color:var(--lavender);font-weight:700}.nav button:hover{border-color:var(--lavender-mid)}.nav button:disabled{opacity:.3;cursor:default}svg.cycle{width:100%;height:auto;display:block;font-family:var(--font-body),sans-serif}.legend{display:flex;flex-wrap:wrap;gap:10px 16px;margin-top:14px;font-size:11.5px;color:var(--ink-soft)}.legend span{display:inline-flex;align-items:center;gap:6px;font-weight:600}.legend i{width:13px;height:13px;border-radius:5px}.empty{color:var(--ink-soft);padding:22px 6px;font-style:italic;text-align:center}.insights{display:grid;grid-template-columns:1fr 1fr;grid-gap:11px;gap:11px;margin-top:18px}@media(min-width:560px){.insights{grid-template-columns:repeat(4,1fr)}}.stat{border-radius:15px;padding:13px 14px;background:var(--line2)}.stat .k{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);font-weight:700}.stat .v{font-family:var(--font-display),serif;font-size:19px;margin-top:4px;font-weight:600}.stat.glow{background:linear-gradient(135deg,var(--mint-soft),var(--gold-soft))}.stat.glow .v{color:#2fa68f}.stat.wide{grid-column:1/-1;background:transparent;padding:3px}.stat.wide .k{text-align:center}.hist{margin-top:20px}.hist h2{margin-bottom:14px}.hrow{display:flex;align-items:center;gap:13px;padding:11px 10px;border-radius:14px;cursor:pointer;transition:.12s}.hrow:hover{background:var(--line2)}.hrow .d{width:92px;font-weight:700;font-size:13.5px}.hrow .d small{display:block;color:var(--ink-soft);font-weight:600;font-size:11px}.hrow .t{width:60px;font-family:var(--font-display),serif;font-weight:600;color:var(--lavender);font-size:15px}.hrow .b{display:flex;gap:6px;flex-wrap:wrap;flex:1 1;align-items:center}.hrow .b .ic{width:26px;height:26px;flex:none}.hrow .n{color:var(--ink-soft);font-size:12px;font-style:italic;max-width:170px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.foot{display:flex;gap:9px;flex-wrap:wrap;margin-top:18px}.foot button{border:1.5px solid var(--line);background:var(--cloud);border-radius:12px;padding:9px 15px;font:inherit;font-size:13px;cursor:pointer;color:var(--ink-soft);font-weight:700}.foot button:hover{border-color:var(--lavender-mid);color:var(--ink)}.disc{margin-top:24px;color:var(--faint);font-size:11.5px;text-align:center;line-height:1.7}.toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%) translateY(20px);opacity:0;background:var(--ink);color:#fff;padding:13px 22px;border-radius:14px;font-size:14px;font-weight:600;pointer-events:none;transition:.28s;z-index:60;box-shadow:var(--shadow)}.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}.land{max-width:760px;margin:0 auto;padding:0 24px;position:relative;z-index:1;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:8px}.land .logo{width:84px;height:84px;margin-bottom:10px}.land h1{font-size:clamp(44px,9vw,76px);line-height:.98;font-weight:700;background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.land .lead{font-size:clamp(17px,2.6vw,21px);color:var(--ink-soft);max-width:480px;margin:6px 0 4px;line-height:1.55}.cta{display:inline-block;margin-top:18px;background:var(--grad);color:#fff;font-family:var(--font-display),serif;font-weight:700;font-size:18px;padding:16px 34px;border-radius:18px;box-shadow:0 10px 28px rgba(185,164,237,.5);transition:.18s}.cta:hover{transform:translateY(-2px);box-shadow:0 16px 36px rgba(185,164,237,.6)}.feats{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;margin-top:38px}.feat{background:var(--cloud);border-radius:18px;box-shadow:var(--shadow-s);padding:18px 20px;max-width:210px;border:1px solid hsla(0,0%,100%,.7)}.feat .e{font-size:26px}.feat h3{font-size:16px;margin:8px 0 4px}.feat p{font-size:13px;color:var(--ink-soft);margin:0;line-height:1.45}.land .disc{margin-top:34px;max-width:520px}@keyframes rise{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}@keyframes pop{0%{transform:scale(.92)}55%{transform:scale(1.07)}to{transform:scale(1)}}@keyframes bead{0%{opacity:0;transform:scale(.5)}to{opacity:1;transform:none}}@keyframes draw{to{stroke-dashoffset:0}}@keyframes fadein{0%{opacity:0}to{opacity:1}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}svg.ring path{transform-box:fill-box;transform-origin:center}.cycle .tline{stroke-dasharray:1400;stroke-dashoffset:1400;animation:draw 1.2s ease forwards}.cycle .tarea{animation:fadein 1.3s ease both}.glowdot{animation:pulse 2.4s ease-in-out infinite}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}.cycle .tline{stroke-dashoffset:0}}