:root{--paper:#f7f2e8;--ink:#1a2330;--ink-muted:#4a5568;--line:#c5b8a4;--line-strong:#8b7355;--accent:#2f5d50;--fertile:#2f5d501f;--danger:#8b3a3a;--day-col:2.15rem;--label-w:11.5rem;--axis-w:3rem;--days-width:calc(40 * var(--day-col));--bbt-row:1.25rem;--font:"Heebo", "Segoe UI", Tahoma, sans-serif;--display:"Frank Ruhl Libre", "Times New Roman", serif;color:var(--ink);background:radial-gradient(ellipse at 20% 0%, #efe6d6 0%, transparent 55%), radial-gradient(ellipse at 90% 20%, #e4ddd0 0%, transparent 45%), linear-gradient(180deg, #ebe4d6 0%, var(--paper) 40%, #e8e0d2 100%);font-family:var(--font);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased}*,:before,:after{box-sizing:border-box}html{direction:rtl}body{min-height:100vh;margin:0}#root{min-height:100vh}.sr-only{clip:rect(0, 0, 0, 0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.app{max-width:96rem;margin:0 auto;padding:1rem 1rem 3rem}.toolbar{border:1px solid var(--line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#fffcf6d9;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem 1rem;margin-bottom:.75rem;padding:.75rem 1rem;display:flex}.toolbar-brand{flex-direction:column;gap:.1rem;display:flex}.toolbar-brand strong{font-family:var(--display);letter-spacing:.02em;font-size:1.35rem}.toolbar-brand span{color:var(--ink-muted);font-size:.85rem}.toolbar-actions{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.toolbar-actions button,.cycle-select select,.meta-grid input,.notes-grid input,.notes-grid textarea,.cell-input,.cell-select{font:inherit;color:var(--ink);border:1px solid var(--line);background:#fffdf8;border-radius:2px}.toolbar-actions button{cursor:pointer;background:var(--accent);color:#f8f6f1;border-color:var(--accent);padding:.35rem .7rem}.toolbar-actions button:hover{filter:brightness(1.08)}.toolbar-actions button.danger{color:var(--danger);border-color:var(--danger);background:0 0}.cycle-select{align-items:center;gap:.35rem;font-size:.9rem;display:flex}.cycle-select select{min-width:10rem;padding:.3rem .4rem}.disclaimer{color:var(--ink-muted);margin:0 0 1rem;font-size:.82rem;line-height:1.45}.chart-sheet{background:var(--paper);border:1px solid var(--line-strong);padding:1.25rem 1rem 1.5rem;box-shadow:0 12px 40px #281e0f14}.chart-header{border-bottom:1px solid var(--line);margin-bottom:1rem;padding-bottom:1rem}.chart-brand h1{font-family:var(--display);color:var(--accent);letter-spacing:.01em;margin:0;font-size:clamp(1.8rem,4vw,2.6rem);font-weight:700}.chart-subtitle{color:var(--ink-muted);margin:.2rem 0 1rem;font-size:.95rem}.meta-grid{grid-template-columns:repeat(auto-fill,minmax(9.5rem,1fr));gap:.55rem .75rem;display:grid}.meta-grid label,.notes-grid label{color:var(--ink-muted);flex-direction:column;gap:.2rem;font-size:.78rem;display:flex}.meta-grid input,.notes-grid input,.notes-grid textarea{padding:.35rem .45rem;font-size:.92rem}.meta-span{grid-column:span 2}.chart-scroll{-webkit-overflow-scrolling:touch;direction:rtl;margin:0 -.25rem;padding-bottom:.5rem;overflow:auto visible}.chart-body{min-width:calc(var(--days-width) + var(--axis-w) + var(--label-w) + 1rem);direction:ltr}.marker-row,.bbt-block,.bbt-values-row{grid-template-columns:var(--days-width) var(--axis-w) var(--label-w);border-bottom:1px solid var(--line);direction:ltr;align-items:stretch;display:grid}.marker-row>.day-cells,.bbt-block>.bbt-grid-wrap,.bbt-values-row>.day-cells{width:var(--days-width);min-width:var(--days-width);max-width:var(--days-width);grid-area:1/1}.marker-row>.axis-gutter,.bbt-block>.bbt-y-axis,.bbt-values-row>.axis-gutter{grid-area:1/2}.marker-row>.row-label,.bbt-block>.row-label,.bbt-values-row>.row-label{direction:rtl;grid-area:1/3}.axis-gutter{border-inline-end:1px solid var(--line);background:#f3ecdf}.sticky-days{z-index:3;background:var(--paper);position:sticky;top:0}.row-label,.sticky-label{color:var(--ink-muted);border-inline-end:1px solid var(--line);z-index:2;background:#f3ecdf;flex-direction:column;justify-content:center;align-items:stretch;padding:.25rem .4rem;font-size:.72rem;line-height:1.2;display:flex;position:sticky;inset-inline-end:0}.day-cells{grid-template-columns:repeat(40, minmax(0, var(--day-col)));box-sizing:border-box;direction:rtl;display:grid}.day-cell{border-inline-start:1px solid var(--line);box-sizing:border-box;justify-content:center;align-items:center;min-width:0;min-height:1.7rem;font-size:.7rem;display:flex;overflow:hidden}.day-cell.is-fertile{background:var(--fertile)}.day-num{font-size:.78rem;font-weight:700}.derived{color:var(--ink);font-variant-numeric:tabular-nums}.cell-input,.cell-select{text-align:center;box-sizing:border-box;background:0 0;border:none;width:100%;min-width:0;max-width:100%;height:100%;min-height:1.7rem;padding:0;font-size:.62rem}input[type=number].cell-input{appearance:textfield;min-width:0}input[type=number].cell-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number].cell-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.cell-input:focus,.cell-select:focus{outline:2px solid var(--accent);outline-offset:-2px;z-index:1;background:#fff}.cell-input.is-default{color:var(--ink-muted);font-style:italic}.toggle-dot{cursor:pointer;width:100%;height:100%;min-height:1.7rem;font:inherit;color:var(--ink-muted);background:0 0;border:none;padding:0}.toggle-dot.on{color:var(--accent);font-weight:700}.toggle-dot.peak.on{background:#2f5d502e}.bbt-hint{color:var(--ink-muted);margin-top:.15rem;font-size:.62rem;font-weight:400;display:block}.bbt-grid-wrap{width:var(--days-width);min-width:var(--days-width);max-width:var(--days-width);direction:ltr;position:relative}.bbt-y-axis{border-inline-end:1px solid var(--line);direction:ltr;background:#f3ecdf;flex-direction:column;display:flex}.bbt-y-tick{height:var(--bbt-row);color:var(--ink-muted);font-variant-numeric:tabular-nums;border-bottom:1px solid #c5b8a473;justify-content:center;align-items:center;font-size:.55rem;display:flex}.bbt-grid{box-sizing:border-box;background-image:linear-gradient(to right, var(--line) 1px, transparent 1px), linear-gradient(to bottom, #c5b8a48c 1px, transparent 1px);background-size:var(--day-col) var(--bbt-row);direction:ltr;background-color:#fffdf8;width:100%;position:relative;transform:scaleX(-1)}.bbt-grid-readonly{cursor:default;touch-action:auto;-webkit-user-select:none;user-select:none;pointer-events:none}.bbt-fertile-cols{pointer-events:none;z-index:0;position:absolute;inset:0}.bbt-fertile-col{background:var(--fertile);position:absolute;top:0;bottom:0}.bbt-line{pointer-events:none;width:100%;height:100%;color:var(--accent);z-index:1;position:absolute;inset:0}.bbt-values-row{border-top:1px solid var(--line)}.bbt-value-cell{flex-direction:column;gap:.05rem;min-height:2.8rem;padding:.1rem 0}.bbt-value-cell.has-value{background:#2f5d500f}.bbt-value-cell .cell-input{font-variant-numeric:tabular-nums;color:var(--accent);min-height:1.35rem;font-size:.58rem;font-weight:600}.bbt-clear{border:1px solid var(--danger);width:100%;color:var(--danger);font:inherit;cursor:pointer;box-sizing:border-box;background:#fff8f8;border-radius:2px;min-width:0;min-height:1.15rem;margin:0;padding:.15rem 0;font-size:.52rem;font-weight:700;line-height:1.1}.bbt-clear:active{background:#8b3a3a26}.bbt-clear-placeholder{min-height:1.25rem;display:block}.chart-notes{border-top:1px solid var(--line);margin-top:1.25rem;padding-top:1rem}.chart-notes h2,.mucus-legend h3{font-family:var(--display);color:var(--accent);margin:0 0 .75rem;font-size:1.15rem}.notes-grid{grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));gap:.6rem;display:grid}.notes-full{grid-column:1/-1}.mucus-legend{border:1px dashed var(--line-strong);background:#f3ecdf;margin-top:1.25rem;padding:.85rem 1rem;font-size:.85rem;line-height:1.5}.mucus-legend ul{margin:0;padding-inline-start:1.1rem}.mucus-legend li+li{margin-top:.4rem}@media (width<=700px){:root{--day-col:1.85rem;--label-w:7.5rem}.app{padding:.5rem .35rem 2rem}.chart-sheet{padding:.75rem .35rem 1rem}.row-label{font-size:.62rem}}@media print{:root{--paper:white;--day-col:1.55rem;--label-w:9rem;--bbt-row:.85rem;background:#fff}body{background:#fff}.no-print{display:none!important}.app{max-width:none;padding:0}.chart-sheet{box-shadow:none;border:none;padding:0}.chart-scroll{overflow:visible}.toolbar-actions button,.cell-input,.cell-select,.toggle-dot,.bbt-grid{-webkit-print-color-adjust:exact;print-color-adjust:exact}.day-cell.is-fertile,.bbt-fertile-col{background:#e8f0ed!important}}html,body,#root{min-height:100%}
