:root{--color-bg:#fafafa;--color-surface:#fff;--color-text-primary:#1a1a1a;--color-text-secondary:#6e6e6e;--color-text-tertiary:#9a9a9a;--color-accent:#9a848a;--color-accent-light:#ede8ea;--color-border:#e8e8e8;--color-fill:#f3f3f3;--color-success:#6b7f74;--color-warning:#b8a04a;--color-error:#b85c5c;--calendar-period:#c9b8be;--calendar-predicted:#efefef;--calendar-fertile:#e4ebe6;--calendar-ovulation:#7a8f82;--color-overlay:rgba(0,0,0,.4);--radius-sm:0.15rem;--radius-md:0.2rem;--radius-lg:0.3rem;--space-sm:0.2rem;--space-md:0.4rem;--space-lg:0.6rem;--space-xl:0.8rem;--font-ui:"PingFang SC","Source Han Sans SC",system-ui,sans-serif}page{background:var(--color-bg);color:var(--color-text-primary);font-family:var(--font-ui);font-size:.75rem;line-height:1.47}.page{-webkit-box-sizing:border-box;box-sizing:border-box;min-height:100vh;padding:1rem 1rem 3rem}.text-display{font-size:1.6rem;font-variant-numeric:tabular-nums;font-weight:300;line-height:2rem}.text-title{font-size:1rem;font-weight:500;line-height:1.4rem}.text-body{font-size:.75rem;line-height:1.1rem}.text-quote{font-size:.8rem;line-height:1.3rem}.text-caption{color:var(--color-text-secondary);font-size:.65rem;line-height:.9rem}.text-micro{color:var(--color-text-tertiary);font-size:.55rem;line-height:.8rem}.hairline-top{border-top:.025rem solid var(--color-border)}.btn-primary{-ms-flex-align:center;-ms-flex-pack:center;-webkit-align-items:center;align-items:center;background:var(--color-text-primary);border-radius:var(--radius-md);color:#fff;display:-webkit-flex;display:-ms-flexbox;display:flex;font-size:.75rem;font-weight:500;height:2.4rem;-webkit-justify-content:center;justify-content:center}.btn-primary:active{opacity:.85}.btn-secondary{-ms-flex-align:center;-ms-flex-pack:center;-webkit-align-items:center;align-items:center;background:transparent;border:.025rem solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-primary);display:-webkit-flex;display:-ms-flexbox;display:flex;font-size:.7rem;height:2rem;-webkit-justify-content:center;justify-content:center}.link-accent{color:var(--color-accent);font-size:.65rem}.section-gap{margin-top:var(--space-xl)}