:root{--stage: #EAD3AE;--stage-ink: #7E664A;--s: #FDE8CE;--card: #FFFFFF;--card-tint: #FCE0D0;--ink: #14100A;--ink-2: #8C7350;--line: #F3E1C8;--track: #F6DDBB;--period: #E0100B;--period-soft: #FBDDD3;--fertile: #12A08F;--fertile-soft: #D6EFEA;--ovul: #0A8574;--pms: #4A5AD0;--pms-soft: #E2E4FA;--flow-l: #F0846A;--flow-m: #E0100B;--flow-h: #B00E08;--flow-text-l: #5A1206;--flow-text-m: #fff;--flow-text-h: #fff;--shadow: 0 18px 44px rgba(80, 40, 10, .18)}@media(prefers-color-scheme:dark){:root{--stage: #140E07;--stage-ink: #BB9C7C;--s: #241A11;--card: #30231A;--card-tint: #3C241C;--ink: #FBEEDD;--ink-2: #BB9C7C;--line: #3E2F20;--track: #3E2F20;--period: #FF4536;--fertile: #2AA595;--pms: #7280E4;--period-soft: #4A231C;--fertile-soft: #14332F;--pms-soft: #26264A;--ovul: #38B8A6;--flow-l: #A85045;--flow-m: #F03A2A;--flow-h: #FF7D68;--flow-text-l: #FBEEDD;--flow-text-m: #fff;--flow-text-h: #241A11;--shadow: 0 18px 44px rgba(0, 0, 0, .5)}}:root[data-theme=dark]{--stage: #140E07;--stage-ink: #BB9C7C;--s: #241A11;--card: #30231A;--card-tint: #3C241C;--ink: #FBEEDD;--ink-2: #BB9C7C;--line: #3E2F20;--track: #3E2F20;--period: #FF4536;--fertile: #2AA595;--pms: #7280E4;--period-soft: #4A231C;--fertile-soft: #14332F;--pms-soft: #26264A;--ovul: #38B8A6;--flow-l: #A85045;--flow-m: #F03A2A;--flow-h: #FF7D68;--flow-text-l: #FBEEDD;--flow-text-m: #fff;--flow-text-h: #241A11;--shadow: 0 18px 44px rgba(0, 0, 0, .5)}:root[data-theme=light]{--stage: #EAD3AE;--stage-ink: #7E664A;--s: #FDE8CE;--card: #FFFFFF;--card-tint: #FCE0D0;--ink: #14100A;--ink-2: #8C7350;--line: #F3E1C8;--track: #F6DDBB;--period: #E0100B;--fertile: #12A08F;--pms: #4A5AD0;--period-soft: #FBDDD3;--fertile-soft: #D6EFEA;--pms-soft: #E2E4FA;--ovul: #0A8574;--flow-l: #F0846A;--flow-m: #E0100B;--flow-h: #B00E08;--flow-text-l: #5A1206;--flow-text-m: #fff;--flow-text-h: #fff;--shadow: 0 18px 44px rgba(80, 40, 10, .18)}*{box-sizing:border-box}html,body{height:100%;overflow:hidden;overscroll-behavior:none;touch-action:manipulation}button,.chip,.tab,.theme-btn,.backbtn,.logbtn,.cell,.ringbox svg{-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}[hidden]{display:none!important}body{margin:0;background:var(--s);font-family:Avenir Next,Avenir,Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--ink);-webkit-font-smoothing:antialiased}.app{width:100%;max-width:430px;height:100dvh;margin:0 auto;background:var(--s);display:flex;flex-direction:column;position:relative}.appbar{display:flex;align-items:center;justify-content:space-between;padding:calc(22px + env(safe-area-inset-top)) 24px 6px}.appbar .date{font-size:.74rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2)}.appbar .brand{font-family:Iowan Old Style,Palatino,Georgia,serif;font-weight:600;font-size:1.05rem}.appbar .actions{display:flex;align-items:center;gap:8px}.theme-btn{border:1px solid var(--line);background-color:var(--card);color:var(--ink);width:36px;height:36px;border-radius:50%;cursor:pointer;background-repeat:no-repeat;background-position:center;background-size:20px}#settingsBtn{border-color:transparent;background-color:transparent;background-size:30px}.theme-btn:focus-visible{outline:2px solid var(--period);outline-offset:2px}main{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:4px 20px 16px;overscroll-behavior:contain}.view{display:none;flex-direction:column;gap:12px}.view.on{display:flex}#view-vandaag{padding-bottom:76px}.ringwrap{display:grid;place-items:center;padding:4px 0 0}.ringbox{position:relative;width:252px;height:252px}.ringbox svg{width:100%;height:100%;display:block;touch-action:none;cursor:grab}.ringbox svg:active{cursor:grabbing}.ringbox svg:focus-visible{outline:2px solid var(--period);outline-offset:4px;border-radius:50%}.ringcenter{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;text-align:center;pointer-events:none}.ringcenter .dt{font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2)}.ringcenter .d{font-family:Iowan Old Style,Palatino,Georgia,serif;font-size:2.45rem;font-weight:600;line-height:1.1}.ringcenter .f{font-size:.7rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2);margin-top:3px}.legend{display:flex;flex-wrap:wrap;gap:8px 14px;justify-content:center;font-size:.68rem;color:var(--ink-2);padding:0 12px}.legend i{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:5px}.legend .grad{width:22px;border-radius:5px;background:linear-gradient(90deg,var(--flow-l),var(--flow-h))}.card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:14px 16px;display:flex;flex-direction:column;gap:3px}.card.tint{background:var(--card-tint);border-color:transparent}.card .t{font-weight:600;font-size:.93rem}.card .st{font-size:.79rem;color:var(--ink-2)}.card .big{font-family:Iowan Old Style,Palatino,Georgia,serif;font-size:1.5rem;font-weight:600;font-variant-numeric:tabular-nums}.daycard{flex-direction:row;align-items:center;justify-content:space-between;gap:10px}.daycard .info{display:flex;flex-direction:column;gap:3px;min-width:0}.backbtn{border:1px solid var(--line);background:var(--s);color:var(--ink);padding:7px 13px;border-radius:999px;font-size:.74rem;font-weight:600;cursor:pointer;font-family:inherit;white-space:nowrap}.backbtn[hidden]{display:none}.backbtn:focus-visible{outline:2px solid var(--period);outline-offset:2px}button:disabled{opacity:.5;cursor:default}.transfer-panel{display:flex;flex-direction:column;gap:10px;padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--card)}.transfer-panel .backbtn,#undoImport{white-space:normal;min-height:40px}.transfer-confirm{display:flex;gap:10px;align-items:flex-start;font-size:.8rem;line-height:1.5}.transfer-confirm input{flex:0 0 auto;width:20px;height:20px;accent-color:var(--period)}.transfer-message{padding:12px;background:var(--fertile-soft);border-radius:12px;line-height:1.5}.transfer-message[data-error=true]{background:var(--period-soft);color:var(--ink)}#transferGrp p{margin:0}#preparedFilename,#buildInfo,#transferWebLink{overflow-wrap:anywhere}#backupReminder{gap:8px}.logbtn{border:none;cursor:pointer;margin-top:2px;padding:15px;border-radius:999px;text-align:center;background:var(--period);color:#fff;font-weight:600;font-size:.98rem;font-family:inherit}.logbtn:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.floating-log{position:absolute;right:20px;bottom:calc(78px + env(safe-area-inset-bottom));z-index:4;width:auto;margin:0;padding:13px 18px;box-shadow:var(--shadow)}.haptic-input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.monthnav{display:flex;align-items:center;justify-content:space-between;padding:8px 4px 0}.monthnav h4{margin:0;font-family:Iowan Old Style,Palatino,Georgia,serif;font-size:1.25rem;font-weight:600}.monthnav button{border:1px solid var(--line);background:var(--card);color:var(--ink);width:34px;height:34px;border-radius:50%;cursor:pointer;font-size:1rem}.monthnav button:disabled{opacity:.3;cursor:default}.calgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px 3px;text-align:center;font-size:.84rem;font-variant-numeric:tabular-nums;touch-action:pan-y}.calgrid{transition:transform .18s ease-out}.calgrid.dragging{transition:none}.calgrid.slide-next{animation:monthNext .22s ease-out}.calgrid.slide-prev{animation:monthPrev .22s ease-out}@keyframes monthNext{0%{opacity:.35;transform:translate(26px)}}@keyframes monthPrev{0%{opacity:.35;transform:translate(-26px)}}.calgrid .dow{font-size:.62rem;font-weight:700;color:var(--ink-2);letter-spacing:.06em;padding:6px 0 2px}.cell{position:relative;height:40px;display:grid;place-items:center;border-radius:12px}.cell.p-light{background:var(--flow-l);color:var(--flow-text-l);font-weight:700}.cell.p-medium{background:var(--flow-m);color:var(--flow-text-m);font-weight:700}.cell.p-heavy{background:var(--flow-h);color:var(--flow-text-h);font-weight:700}.cell.period-p{background:var(--period-soft);color:var(--period);font-weight:700;outline:1.5px dashed var(--period);outline-offset:-1.5px}.cell.fertile{background:var(--fertile-soft);color:var(--fertile);font-weight:600}.cell.ovul{background:var(--ovul);color:#fff;font-weight:800}.cell.today{outline:2px solid var(--ink);outline-offset:-2px;font-weight:800}.cell.lh-dot:after{content:"";position:absolute;right:3px;top:3px;width:5px;height:5px;border-radius:50%;background:var(--fertile)}.cell.logged:before{content:"";position:absolute;bottom:4px;left:50%;transform:translate(-50%);width:4px;height:4px;border-radius:50%;background:currentColor;opacity:.65}.cell.flash{outline:2px solid var(--ovul);outline-offset:-2px;animation:cellSaved 1.1s ease-out 2}@keyframes cellSaved{0%{box-shadow:0 0 color-mix(in srgb,var(--ovul) 70%,transparent)}to{box-shadow:0 0 0 9px transparent}}@media(prefers-reduced-motion:reduce){.calgrid,.calgrid.slide-next,.calgrid.slide-prev{transition:none;animation:none}.cell.flash{animation:none;box-shadow:0 0 0 2px var(--ovul)}}.calkeys{display:flex;flex-wrap:wrap;gap:8px 14px;font-size:.68rem;color:var(--ink-2);padding:4px 2px}.calkeys i{display:inline-block;width:10px;height:10px;border-radius:4px;margin-right:5px;vertical-align:-1px}.calkeys .grad{width:24px;background:linear-gradient(90deg,var(--flow-l),var(--flow-h))}.calkeys .lhkey{background:var(--fertile);border-radius:50%;width:6px;height:6px}.calkeys .loggedkey{background:var(--ink-2);border-radius:50%;width:5px;height:5px}.statrow{display:grid;grid-template-columns:1fr 1fr;gap:10px}.statrow .card{gap:1px}.statrow .lbl{font-size:.72rem;color:var(--ink-2)}.chartcard{position:relative}.chartcard h5{margin:0 0 2px;font-size:.95rem;font-weight:600}.chartcard .sub{font-size:.76rem;color:var(--ink-2);margin:0 0 8px}.chartcard svg{width:100%;height:auto;display:block}.tooltip{position:absolute;pointer-events:none;opacity:0;background:var(--ink);color:var(--s);font-size:.72rem;font-weight:600;padding:5px 9px;border-radius:8px;white-space:nowrap;transform:translate(-50%,-130%);transition:opacity .12s}.verdict{border-left:4px solid var(--fertile)}.tabbar{display:flex;justify-content:space-around;align-items:center;padding:10px 8px calc(14px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--s)}.tab{border:none;background:none;cursor:pointer;color:var(--ink);display:flex;flex-direction:column;align-items:center;gap:4px;font-size:.64rem;font-weight:600;opacity:.45;font-family:inherit}.tab.on{opacity:1}.tab .ico{width:26px;height:26px;background-repeat:no-repeat;background-position:center;background-size:contain}.tab:focus-visible{outline:2px solid var(--period);outline-offset:2px;border-radius:8px}.tab[data-view=vandaag] .ico{--ico-light: url(/icons/nav-vandaag-light.png);--ico-dark: url(/icons/nav-vandaag-dark.png)}.tab[data-view=kalender] .ico{--ico-light: url(/icons/nav-kalender-light.png);--ico-dark: url(/icons/nav-kalender-dark.png)}.tab[data-view=inzichten] .ico{--ico-light: url(/icons/nav-inzicht-light.png);--ico-dark: url(/icons/nav-inzicht-dark.png)}#themeBtn{--ico-light: url(/icons/theme-moon.png);--ico-dark: url(/icons/theme-sun.png)}#settingsBtn{--ico-light: url(/icons/settings-light.png);--ico-dark: url(/icons/settings-dark.png)}.tab .ico,#themeBtn,#settingsBtn{background-image:var(--ico-light)}@media(prefers-color-scheme:dark){.tab .ico,#themeBtn,#settingsBtn{background-image:var(--ico-dark)}}:root[data-theme=light] .tab .ico,:root[data-theme=light] #themeBtn,:root[data-theme=light] #settingsBtn{background-image:var(--ico-light)}:root[data-theme=dark] .tab .ico,:root[data-theme=dark] #themeBtn,:root[data-theme=dark] #settingsBtn{background-image:var(--ico-dark)}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;background:#14080e66;opacity:0;pointer-events:none;transition:opacity .2s}.sheet{position:fixed;left:50%;right:auto;bottom:0;z-index:11;width:min(100%,430px);background:var(--s);border-radius:28px 28px 0 0;padding:20px 22px calc(30px + env(safe-area-inset-bottom));transform:translate(-50%,105%);visibility:hidden;transition:transform .25s ease,visibility 0s .25s;display:flex;flex-direction:column;gap:16px;border-top:1px solid var(--line);overscroll-behavior:contain;max-height:min(calc(100vh - env(safe-area-inset-top) - 24px),720px);max-height:min(calc(100dvh - env(safe-area-inset-top) - 24px),720px);overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;touch-action:pan-y}.sheet>*{flex:0 0 auto;min-width:0}.app.sheet-open .scrim,.app.settings-open .scrim{opacity:1;pointer-events:auto}.app.sheet-open #logSheet,.app.settings-open #settingsSheet{transform:translate(-50%);visibility:visible;transition:transform .25s ease,visibility 0s 0s}@media(prefers-reduced-motion:reduce){.sheet,.scrim{transition:none}}.sheet h4{margin:0;font-family:Iowan Old Style,Palatino,Georgia,serif;font-size:1.2rem}.sheethead{display:flex;align-items:center;justify-content:space-between;gap:10px;position:sticky;top:-20px;z-index:1;background:var(--s);margin:-20px -22px 0;padding:20px 22px 8px}.sheetclose{border:1px solid var(--line);background:var(--card);color:var(--ink);width:34px;height:34px;border-radius:50%;flex:none;cursor:pointer;font-size:.9rem}.sheetclose:focus-visible{outline:2px solid var(--period);outline-offset:2px}.sheet .grp{display:flex;flex-direction:column;gap:8px}.sheet .grp .lbl{font-size:.72rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2)}.grptitle{display:flex;align-items:center;justify-content:space-between;gap:12px}.textbtn{border:0;background:none;color:var(--period);font:600 .78rem inherit;padding:4px;cursor:pointer}#quickPicker{display:flex;flex-direction:column;gap:8px;padding-top:4px}#quickPicker[hidden]{display:none}.logsection{border:1px solid var(--line);border-radius:16px;background:var(--card);overflow:clip}.logsection>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;cursor:pointer;list-style:none;font-size:.78rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2)}.logsection>summary::-webkit-details-marker{display:none}.logsection>summary:after{content:"›";font-size:1.25rem;line-height:1;transition:transform .15s}.logsection[open]>summary:after{transform:rotate(90deg)}.sectionmeta{margin-left:auto;font-size:.7rem;font-weight:500;letter-spacing:0;text-transform:none}.sectionbody{display:flex;flex-direction:column;gap:16px;padding:2px 16px 16px}.savebar{position:sticky;bottom:calc(-30px - env(safe-area-inset-bottom));z-index:2;margin:0 -22px calc(-30px - env(safe-area-inset-bottom));padding:10px 22px calc(18px + env(safe-area-inset-bottom));background:linear-gradient(to bottom,color-mix(in srgb,var(--s) 86%,transparent),var(--s) 22%);border-top:1px solid var(--line)}.savebar .logbtn{width:100%}.fieldform{display:flex;flex-direction:column;gap:8px}.fieldform input{padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--ink);font:inherit}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{border:1px solid var(--line);background:var(--card);color:var(--ink);padding:8px 14px;border-radius:999px;font-size:.82rem;cursor:pointer;font-family:inherit}.chip[aria-pressed=true]{background:var(--period);border-color:var(--period);color:#fff;font-weight:600}.chip.f[aria-pressed=true]{background:var(--fertile);border-color:var(--fertile)}.chip:disabled{opacity:.55;cursor:default}.toast{position:absolute;left:50%;bottom:110px;transform:translate(-50%) translateY(8px);background:var(--ink);color:var(--s);padding:9px 18px;border-radius:999px;font-size:.82rem;font-weight:600;opacity:0;transition:opacity .2s,transform .2s;pointer-events:none}.toast.show{opacity:1;transform:translate(-50%) translateY(0)}.lock{position:absolute;top:0;right:0;bottom:0;left:0;z-index:10;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;background:var(--s);padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}.lock-icon{width:72px;height:72px;border-radius:18px}.lock h4{margin:0;font-family:Iowan Old Style,Palatino,Georgia,serif;font-size:1.2rem}.pin-dots{display:flex;gap:12px}.pin-dots i{width:14px;height:14px;border-radius:50%;border:2px solid var(--ink-2)}.pin-dots i.on{background:var(--ink);border-color:var(--ink)}.pin-pad{display:grid;grid-template-columns:repeat(3,64px);gap:10px}.pin-pad button{height:64px;border-radius:50%;border:1px solid var(--line);background:var(--card);color:var(--ink);font-size:1.3rem;font-weight:600}.lock.shake .pin-dots{animation:pinshake .3s}@keyframes pinshake{25%{transform:translate(-6px)}75%{transform:translate(6px)}}@media(prefers-reduced-motion:reduce){.lock.shake .pin-dots{animation:none}}.intro{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;background:#fde8ce;transition:opacity .3s}.intro video{width:100%;height:100%;object-fit:cover}.intro.out{opacity:0;pointer-events:none}#ttcLog{display:flex;flex-direction:column;gap:16px}.temp-row{flex-direction:row;align-items:center}.temp-row input{flex:1;min-width:0;text-align:center;font-size:1.15rem;font-weight:600}.temp-step{width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:var(--card);color:var(--ink);font-size:1.2rem;flex:none}.chancehead{display:flex;justify-content:space-between;align-items:baseline}.chancehead .lvl{font-weight:700;color:var(--ovul)}.meter{display:flex;gap:5px;margin-top:8px}.meter span{flex:1;height:8px;border-radius:4px;background:var(--track)}.meter span.on{background:var(--fertile)}.meter span.on:last-child{background:var(--ovul)}.meterlbl{display:flex;justify-content:space-between;font-size:.65rem;color:var(--ink-2);margin-top:3px}.meterlbl span{flex:1;text-align:center}.meterlbl span:first-child{text-align:left}.meterlbl span:last-child{text-align:right}.bbthead{display:flex;justify-content:space-between;align-items:center}.chev{background:none;border:none;color:var(--ink-2);font-size:1rem;padding:4px 8px}#bbtChart{width:100%;height:auto}
