/* ═══════════════════════════════════════════════════════════════
   TrustFem period tracker — mesh-gradient surface, frosted cards, glowing cycle dial, insight charts.
   ═══════════════════════════════════════════════════════════════ */
body.pt-page{background:#F5F3FA}
.pt{
  --ink:#1C1433; --ink-2:#4E4668; --muted:#8C84A6; --line:rgba(28,20,51,.08); --glass:rgba(255,255,255,.74); --glass-2:rgba(255,255,255,.56);
  --period:#EE4266; --period-soft:#FFE1E8; --fert:#12B5A6; --fert-soft:#D3F6F0; --foll:#FF9F7A; --lut:#7C6CF2; --lut-soft:#ECE9FE;
  --accent:#6A4CF0; --grad:linear-gradient(135deg,#FF6B8B 0%,#A36BFF 55%,#5EC8F0 100%);
  --r-xl:34px; --r:24px; --r-sm:16px;
  --shadow:0 1px 1px rgba(28,20,51,.03),0 8px 24px -6px rgba(60,40,120,.10),0 30px 60px -30px rgba(60,40,120,.18);
  position:relative; color:var(--ink); font-family:var(--f-text); isolation:isolate; overflow:hidden;
}
/* mesh background */
.pt-mesh{position:absolute;inset:0;z-index:-1;pointer-events:none;overflow:hidden}
.pt-mesh i{position:absolute;border-radius:50%;filter:blur(70px);opacity:.55}
.pt-mesh i:nth-child(1){width:560px;height:560px;left:-160px;top:-180px;background:#FFC2D1}
.pt-mesh i:nth-child(2){width:620px;height:620px;right:-200px;top:40px;background:#D6CCFF}
.pt-mesh i:nth-child(3){width:520px;height:520px;left:30%;top:640px;background:#C4F2EA;opacity:.45}
@media (prefers-reduced-motion:no-preference){
  .pt-mesh i{animation:ptDrift 26s ease-in-out infinite alternate}
  .pt-mesh i:nth-child(2){animation-duration:32s;animation-direction:alternate-reverse}
  .pt-mesh i:nth-child(3){animation-duration:38s}
}
@keyframes ptDrift{to{transform:translate(60px,40px) scale(1.08)}}

.pt-wrap{max-width:1160px;margin:0 auto;padding:22px 16px 56px}
.pt h1,.pt h2,.pt h3{color:var(--ink);letter-spacing:-.02em;font-family:var(--f-text)}
.pt-top{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin:6px 0 20px}
.pt-top h1{font:800 clamp(2rem,4.6vw,3rem)/1.02 var(--f-text);letter-spacing:-.04em;margin:0 0 6px;background:linear-gradient(100deg,#1C1433 30%,#6A4CF0 75%,#E2366B);-webkit-background-clip:text;background-clip:text;color:transparent}
.pt-top p{margin:0;color:var(--ink-2);font-size:.95rem;font-weight:500} .pt-top p i{color:var(--fert);margin-right:5px}
.pt-top-act{display:flex;gap:8px;flex-wrap:wrap}

/* buttons */
.pt-btn{display:inline-flex;align-items:center;gap:8px;border:0;border-radius:999px;padding:11px 18px;font:700 .92rem var(--f-text);cursor:pointer;text-decoration:none;white-space:nowrap;transition:transform .15s ease,box-shadow .2s,background .2s,color .2s}
.pt-btn:active{transform:scale(.96)}
.pt-btn.primary{background:var(--ink);color:#fff;box-shadow:0 8px 20px -8px rgba(28,20,51,.55)}
.pt-btn.primary:hover{background:#2E2152;color:#fff;transform:translateY(-1px)}
.pt-btn.ghost{background:var(--glass);color:var(--ink);box-shadow:inset 0 0 0 1px rgba(255,255,255,.9),0 2px 10px -4px rgba(60,40,120,.18);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.pt-btn.ghost:hover{color:var(--accent)}
.pt-btn.sm{padding:8px 16px}
.pt-icon{width:38px;height:38px;border-radius:50%;border:0;background:rgba(28,20,51,.05);color:var(--ink);cursor:pointer;transition:background .15s}
.pt-icon:hover{background:var(--lut-soft);color:var(--accent)}
.pt-link{display:inline-flex;align-items:center;gap:8px;background:none;border:0;padding:0;font:700 .9rem var(--f-text);color:var(--accent);cursor:pointer;text-decoration:none;margin-top:12px}
.pt-link:hover{text-decoration:underline}
.pt :focus-visible{outline:3px solid var(--accent);outline-offset:2px}

/* glass surfaces */
.pt-hero,.pt-card,.pt-sheet-panel{background:var(--glass);backdrop-filter:blur(22px) saturate(1.3);-webkit-backdrop-filter:blur(22px) saturate(1.3);box-shadow:var(--shadow),inset 0 0 0 1px rgba(255,255,255,.85)}

/* ══ Hero ══ */
.pt-hero{display:grid;grid-template-columns:minmax(300px,460px) 1fr;gap:32px;align-items:center;border-radius:var(--r-xl);padding:30px}
.pt-dial{position:relative;aspect-ratio:1;width:100%;max-width:460px;margin:0 auto}
.pt-dial svg{width:100%;height:100%;overflow:visible;display:block}
.pt-dial .arcs.grow .ph{stroke-dasharray:1000;stroke-dashoffset:1000;animation:ptArc 1.1s cubic-bezier(.2,.8,.2,1) forwards}
.pt-dial .arcs.grow .ph-follicular{animation-delay:.12s} .pt-dial .arcs.grow .ph-fertile{animation-delay:.24s} .pt-dial .arcs.grow .ph-luteal{animation-delay:.36s}
@keyframes ptArc{to{stroke-dashoffset:0}}
.pt-dial .arcs.ghost{opacity:.28;filter:saturate(.7)}
.pt-dial .tick-l{fill:var(--muted);font:700 10px var(--f-text);text-anchor:middle;font-variant-numeric:tabular-nums}
.pt-dial .ov-l{fill:var(--fert);font:700 13px var(--f-text);text-anchor:middle}
.pt-dial .knob{fill:var(--ink);stroke:#fff;stroke-width:4;filter:drop-shadow(0 4px 8px rgba(28,20,51,.35))}
.pt-dial .knob-pulse{fill:none;stroke:var(--ink);stroke-width:2;opacity:.5;transform-box:fill-box;transform-origin:center;animation:ptPulse 2.4s ease-out infinite}
@keyframes ptPulse{0%{transform:scale(1);opacity:.5}100%{transform:scale(1.9);opacity:0}}
.pt-dial .knob-t{fill:#fff;font:800 12px var(--f-text);text-anchor:middle;font-variant-numeric:tabular-nums;pointer-events:none}
.pt-dial .hits path{cursor:crosshair}
.pt-dial-tip{position:absolute;z-index:3;transform:translate(-50%,calc(-100% - 14px));pointer-events:none;background:var(--ink);color:#fff;padding:8px 12px;border-radius:12px;font-size:.8rem;line-height:1.4;white-space:nowrap;box-shadow:0 10px 24px -8px rgba(28,20,51,.5)}
.pt-dial-c{position:absolute;inset:24%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:2px;pointer-events:none}
.pt-dial-c > *{pointer-events:auto}
#pt-kicker{display:inline-block;padding:4px 10px;border-radius:999px;background:var(--lut-soft);color:#4B37C2;font-weight:800;font-size:.76rem;letter-spacing:.01em}
.pt-dial-c strong{font:800 clamp(1.35rem,3.6vw,2.05rem)/1.05 var(--f-text);letter-spacing:-.035em;margin:8px 0 2px;font-variant-numeric:tabular-nums}
.pt-dial-c .big-n{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;font-size:1.25em}
#pt-small{color:var(--ink-2);font-size:.88rem;font-weight:600}
.pt-dial-c .pt-btn{margin-top:14px}

.pt-side{display:flex;flex-direction:column;gap:18px;min-width:0}
.pt-phase{position:relative;display:flex;gap:16px;align-items:flex-start;padding:20px 22px;border-radius:var(--r);background:linear-gradient(135deg,color-mix(in srgb,var(--ph) 16%,#fff),color-mix(in srgb,var(--ph) 5%,#fff));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ph) 22%,transparent);overflow:hidden}
.pt-phase::after{content:"";position:absolute;right:-50px;top:-50px;width:160px;height:160px;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--ph) 30%,transparent),transparent 70%)}
.pt-phase-ico{flex:none;width:44px;height:44px;border-radius:14px;display:grid;place-items:center;background:var(--ph);box-shadow:0 8px 18px -6px var(--ph)}
.pt-phase-ico span{width:14px;height:14px;border-radius:50%;background:#fff;box-shadow:0 0 0 5px rgba(255,255,255,.35)}
.pt-phase-k{font-size:.76rem;font-weight:800;color:color-mix(in srgb,var(--ph) 70%,#1C1433)}
.pt-phase h2{font:800 1.3rem/1.2 var(--f-text);margin:2px 0 6px}
.pt-phase p{margin:0;color:var(--ink-2);font-size:.94rem;line-height:1.55;position:relative;z-index:1}
.pt-phase .pt-late{margin-top:8px;font-size:.88rem}
.pt-phase a{color:var(--accent);font-weight:700}
.pt-vibes{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;position:relative;z-index:1}
.pt-vibes span{padding:5px 11px;border-radius:999px;background:rgba(255,255,255,.75);font-size:.78rem;font-weight:700;color:var(--ink-2)}

/* week strip */
.pt-week{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.pt-wd{position:relative;display:flex;flex-direction:column;align-items:center;gap:5px;padding:10px 0 13px;border:0;border-radius:20px;background:rgba(255,255,255,.6);color:var(--ink);cursor:pointer;font-family:inherit;transition:transform .15s,background .15s;box-shadow:inset 0 0 0 1px rgba(255,255,255,.9)}
.pt-wd:hover{transform:translateY(-2px);background:#fff}
.pt-wd span{font-size:.72rem;font-weight:700;color:var(--muted)}
.pt-wd b{font-size:1.1rem;font-weight:800;width:38px;height:38px;display:grid;place-items:center;border-radius:50%;font-variant-numeric:tabular-nums}
.pt-wd.is-today{background:var(--ink);box-shadow:0 10px 22px -10px rgba(28,20,51,.7)} .pt-wd.is-today span{color:#C9C2E3} .pt-wd.is-today b{color:#fff}
.pt-wd.is-period b{background:linear-gradient(135deg,#FF6B8B,#E0315F);color:#fff;box-shadow:0 6px 14px -6px #E0315F}
.pt-wd.is-pred b{box-shadow:inset 0 0 0 2px var(--period);color:var(--period);background:var(--period-soft)}
.pt-wd.is-fert b{background:var(--fert-soft);color:#0B7468}
.pt-wd.is-ov b{background:linear-gradient(135deg,#5EEAD4,#0EA5A0);color:#fff}
.pt-wd.is-sel:not(.is-today){box-shadow:inset 0 0 0 2px var(--accent)}
.pt-logdot{position:absolute;bottom:5px;left:50%;width:5px;height:5px;margin-left:-2.5px;border-radius:50%;background:var(--accent)}
.pt-wd.is-today .pt-logdot{background:#fff}

/* tiles */
.pt-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.pt-tile{padding:14px 16px;border-radius:var(--r-sm);background:rgba(255,255,255,.66);box-shadow:inset 0 0 0 1px rgba(255,255,255,.9);min-width:0}
.pt-tile span{display:block;font-size:.76rem;font-weight:700;color:var(--muted)}
.pt-tile b{display:block;font:800 clamp(1.4rem,3vw,2rem)/1.1 var(--f-text);letter-spacing:-.04em;font-variant-numeric:tabular-nums;margin:4px 0 2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#pt-s-reg{font-size:clamp(1rem,2vw,1.25rem);letter-spacing:-.02em;padding:6px 0 4px}
#pt-s-reg.ok{color:#0B8A7E} #pt-s-reg.mid{color:#C2741B} #pt-s-reg.warn{color:#C42452}
.pt-tile em{font-style:normal;font-size:.76rem;color:var(--muted);font-weight:600}

/* ══ Insight charts ══ */
.pt-insights-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:18px}
.pt-wide{grid-column:1/-1}
.pt-card{border-radius:var(--r);padding:22px 24px;min-width:0}
.pt-card h2{font:800 1.1rem var(--f-text);margin:0 0 12px}
.pt-chart > header{display:flex;justify-content:space-between;align-items:baseline;gap:8px 16px;flex-wrap:wrap;margin-bottom:16px}
.pt-chart > header h2{margin:0}
.pt-sub{font-size:.82rem;color:var(--muted);font-weight:600}
.chart-empty{display:flex;align-items:center;gap:14px;padding:20px;border-radius:var(--r-sm);background:repeating-linear-gradient(135deg,rgba(124,108,242,.05) 0 10px,transparent 10px 20px);color:var(--ink-2);font-size:.92rem}
.chart-empty i{flex:none;width:42px;height:42px;border-radius:14px;display:grid;place-items:center;background:#fff;color:var(--lut);font-size:1.05rem;box-shadow:0 4px 12px -6px rgba(60,40,120,.3)}
.chart-empty p{margin:0}
.chart-note{margin:12px 0 0;font-size:.84rem;color:var(--ink-2)} .chart-note a{color:var(--accent);font-weight:700}
.dot-period{display:inline-block;width:10px;height:10px;border-radius:3px;background:var(--period-soft);box-shadow:inset 0 0 0 1px #FFB5C6;vertical-align:-1px;margin-right:4px}

/* history */
.hist{display:flex;flex-direction:column;gap:10px}
.hist-row{display:grid;grid-template-columns:72px 1fr 84px;align-items:center;gap:12px}
.hist-d{font-size:.8rem;font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums}
.hist-bar{position:relative;height:16px;border-radius:99px;background:rgba(28,20,51,.04)}
.hist-bar i{position:absolute;left:0;top:0;bottom:0;border-radius:99px}
.hb-cycle{background:linear-gradient(90deg,#FFD9C7 0%,#BDF1E8 45%,#D9D2FF 100%)}
.hb-period{background:linear-gradient(90deg,#FF6B8B,#E0315F);box-shadow:0 4px 10px -4px #E0315F}
.hist-row.current .hb-cycle{background:repeating-linear-gradient(90deg,#E4DEF7 0 6px,#F1EDFB 6px 10px)}
.hb-now{width:4px;margin-left:-2px;background:var(--ink)!important;top:-4px!important;bottom:-4px!important}
.hist-n{font-size:.82rem;color:var(--ink-2);text-align:right;white-space:nowrap} .hist-n b{font-size:1rem;color:var(--ink);font-variant-numeric:tabular-nums}
.hist-axis{position:relative;height:22px;margin-top:4px}
.hist-axis span{position:absolute;left:calc(84px + (100% - 180px) * var(--x));transform:translateX(-50%);font-size:.74rem;font-weight:800;color:var(--accent);padding:2px 8px;border-radius:99px;background:var(--lut-soft)}

/* mood */
.mood-svg{width:100%;height:auto;display:block;overflow:visible}
.mood-svg .grid{stroke:rgba(28,20,51,.06);stroke-dasharray:3 5}
.mood-svg .emo{font-size:12px}
.mood-svg .ax{font:600 10px var(--f-text);fill:var(--muted)}
.mood-svg .mb-period{fill:#FFE1E8;opacity:.8}
.mood-svg .mood-dot{fill:#fff;stroke:#8B7CF6;stroke-width:2.5}
.mood-svg .mood-line{filter:drop-shadow(0 6px 8px rgba(139,124,246,.35))}
@media (prefers-reduced-motion:no-preference){.mood-svg .mood-line{stroke-dasharray:2000;stroke-dashoffset:2000;animation:ptArc 1.6s .2s ease forwards}}

/* pain */
.pain{display:flex;align-items:flex-end;gap:3px;height:150px;padding-top:6px}
.pb{flex:1;height:100%;display:flex;align-items:flex-end;border-radius:6px;background:rgba(28,20,51,.035)}
.pb i{display:block;width:100%;height:var(--h);min-height:0;border-radius:6px;background:linear-gradient(180deg,#B9AEFF,#7C6CF2)}
.pb.per i{background:linear-gradient(180deg,#FF8FA8,#E0315F)}
.pb:hover i{filter:brightness(1.1) saturate(1.2)}
@media (prefers-reduced-motion:no-preference){.pb i{animation:ptGrow .8s cubic-bezier(.2,.8,.2,1) both;transform-origin:bottom}}
@keyframes ptGrow{from{transform:scaleY(0)}}
.pain-ax{display:flex;justify-content:space-between;font-size:.72rem;font-weight:700;color:var(--muted);margin-top:6px}

/* heat map */
.heat{display:grid;grid-template-columns:minmax(110px,150px) repeat(var(--n),minmax(0,1fr));gap:3px;align-items:center}
.heat-l{font-size:.8rem;font-weight:700;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:8px}
.heat-l i{color:var(--lut);margin-right:7px;width:14px;text-align:center}
.heat-c{aspect-ratio:1;border-radius:5px;background:rgba(28,20,51,.04);position:relative;overflow:hidden}
.heat-c::after{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(135deg,#9D8CFF,#6A4CF0);opacity:var(--a)}
.heat-c.per{background:rgba(238,66,102,.07)}
.heat-c.per::after{background:linear-gradient(135deg,#FF7E9A,#E0315F)}
.heat-x{font-size:.66rem;font-weight:700;color:var(--muted);text-align:center}
.pt-insights{margin-top:16px;display:grid;gap:8px}
.ins{display:flex;gap:10px;align-items:flex-start;margin:0;padding:12px 14px;border-radius:var(--r-sm);font-size:.9rem;line-height:1.5;color:var(--ink-2)}
.ins i{margin-top:3px}
.ins-ok{background:var(--fert-soft)} .ins-ok i{color:#0B8A7E}
.ins-warn{background:#FFF1E6} .ins-warn i{color:#D9711C}
.ins-info{background:var(--lut-soft)} .ins-info i{color:var(--accent)}

/* ══ Lower grid ══ */
.pt-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:18px;margin-top:18px;align-items:start}
.pt-col{display:flex;flex-direction:column;gap:18px;min-width:0}
.pt-muted{color:var(--muted);font-size:.92rem;margin:0 0 12px} .pt-muted.small{font-size:.82rem;margin:12px 0 0}
.pt-row{display:flex;gap:8px;flex-wrap:wrap}

/* month */
.pt-cal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.pt-cal-head h2{margin:0;font-size:1.15rem}
.pt-month{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}
.pt-dow{text-align:center;font-size:.72rem;font-weight:700;color:var(--muted);padding:4px 0 6px}
.pt-md{position:relative;aspect-ratio:1;border:0;border-radius:16px;background:none;color:var(--ink);font:700 .95rem var(--f-text);cursor:pointer;max-width:58px;justify-self:center;width:100%;font-variant-numeric:tabular-nums;transition:background .12s,transform .12s}
.pt-md:hover{background:rgba(124,108,242,.1)}
.pt-md.is-period{background:linear-gradient(135deg,#FF6B8B,#E0315F);color:#fff;box-shadow:0 6px 14px -8px #E0315F}
.pt-md.is-pred{background:var(--period-soft);color:#C42452;box-shadow:inset 0 0 0 1.5px #FF9DB2}
.pt-md.is-fert{background:var(--fert-soft);color:#0B7468}
.pt-md.is-ov{background:linear-gradient(135deg,#5EEAD4,#0EA5A0);color:#fff}
.pt-md.is-today{box-shadow:inset 0 0 0 2.5px var(--ink)}
.pt-md.is-sel{outline:2px solid var(--accent);outline-offset:2px}
.pt-md .pt-logdot{bottom:4px}
.pt-md.is-period .pt-logdot,.pt-md.is-ov .pt-logdot{background:#fff}
.pt-legend{display:flex;flex-wrap:wrap;gap:6px 16px;list-style:none;padding:0;margin:14px 0 0;font-size:.82rem;color:var(--ink-2);font-weight:600}
.pt-legend i{display:inline-block;width:12px;height:12px;border-radius:4px;margin-right:6px;vertical-align:-1px}
.lg-period{background:linear-gradient(135deg,#FF6B8B,#E0315F)} .lg-pred{background:var(--period-soft);box-shadow:inset 0 0 0 1.5px #FF9DB2}
.lg-fert{background:var(--fert-soft)} .lg-ov{background:linear-gradient(135deg,#5EEAD4,#0EA5A0)}

.pt-list{list-style:none;padding:0;margin:0} .pt-list li{border-top:1px solid var(--line)} .pt-list li:first-child{border-top:0}
.pt-list a{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:11px 0;color:var(--ink);font-weight:600;text-decoration:none;font-size:.93rem}
.pt-list a i{color:var(--muted);font-size:.8rem;transition:transform .15s} .pt-list a:hover{color:var(--accent)} .pt-list a:hover i{transform:translateX(3px);color:var(--accent)}
.pt-syncard .tf-syncbox{box-shadow:none;border:0;padding:0;margin:0;background:none}
.pt-syncard h3{font:800 1.1rem var(--f-text);margin:0 0 10px}
.pt-faq{max-width:780px;margin:40px auto 0} .pt-faq h2{font:800 1.6rem var(--f-text);letter-spacing:-.03em}
.pt-faq details{background:var(--glass);border-radius:var(--r-sm);box-shadow:inset 0 0 0 1px rgba(255,255,255,.85)}

/* ══ Day logger: side panel on desktop, bottom sheet on mobile ══ */
.pt-sheet-bg,.pt-sheet-grab{display:none}
.pt-sheet-panel{border-radius:var(--r);padding:22px 24px}
.pt-sheet-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.pt-sheet-head h2{font:800 1.25rem var(--f-text);margin:0}
.pt-done{display:none}
.pt-period-toggle{width:100%;display:flex;align-items:center;gap:14px;padding:14px 16px;border:0;border-radius:20px;background:linear-gradient(135deg,#FFF0F3,#FFE1E8);color:#B01E43;font:800 1rem var(--f-text);cursor:pointer;text-align:left;transition:transform .15s,box-shadow .2s;box-shadow:inset 0 0 0 1px #FFC9D5}
.pt-period-toggle:hover{transform:translateY(-1px)}
.pt-period-toggle small{display:block;font-weight:600;font-size:.78rem;opacity:.75;margin-top:1px}
.ppt-ico{flex:none;width:40px;height:40px;border-radius:13px;display:grid;place-items:center;background:#fff;color:var(--period);font-size:1.05rem;box-shadow:0 4px 10px -4px rgba(224,49,95,.45)}
.pt-period-toggle.on{background:linear-gradient(135deg,#FF6B8B,#E0315F);color:#fff;box-shadow:0 12px 24px -12px #E0315F}
.pt-period-toggle.on .ppt-ico{background:rgba(255,255,255,.22);color:#fff;box-shadow:none}
.pt-period-toggle .pt-check{margin-left:auto}
.pt-group{margin-top:20px}
.pt-group h3{font:800 .9rem var(--f-text);margin:0 0 9px;color:var(--ink)} .pt-group h3 small{color:var(--muted);font-weight:600} .pt-group h3 output{color:var(--accent);margin-left:6px;font-variant-numeric:tabular-nums}
.pt-flow,.pt-moods{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}
.pt-flow button,.pt-moods button{display:flex;flex-direction:column;align-items:center;gap:6px;padding:11px 4px;border:0;border-radius:var(--r-sm);background:rgba(255,255,255,.7);box-shadow:inset 0 0 0 1px rgba(28,20,51,.06);color:var(--ink-2);font:700 .74rem var(--f-text);cursor:pointer;transition:transform .12s,background .15s}
.pt-flow button:hover,.pt-moods button:hover{transform:translateY(-2px)}
.pt-flow .drops{display:flex;gap:1px;color:var(--period);height:16px;align-items:flex-end}
.pt-flow .drops i{font-size:.8rem} .pt-flow .drops i.sm{font-size:.45rem}
.pt-flow button.on{background:linear-gradient(135deg,#FF6B8B,#E0315F);color:#fff;box-shadow:0 8px 16px -8px #E0315F} .pt-flow button.on .drops{color:#fff}
.pt-moods button span{font-size:1.55rem;line-height:1;filter:grayscale(.7);opacity:.75;transition:filter .15s,transform .2s,opacity .15s}
.pt-moods button.on{background:var(--lut-soft);color:#4433A8;box-shadow:inset 0 0 0 2px var(--lut)} .pt-moods button.on span{filter:none;opacity:1;transform:scale(1.18)}
.pt-syms{display:flex;flex-wrap:wrap;gap:6px}
.pt-syms button{display:inline-flex;align-items:center;gap:7px;padding:8px 13px;border:0;border-radius:999px;background:rgba(255,255,255,.7);box-shadow:inset 0 0 0 1px rgba(28,20,51,.06);color:var(--ink-2);font:700 .84rem var(--f-text);cursor:pointer;transition:background .15s,color .15s}
.pt-syms button i{color:var(--lut);font-size:.85rem}
.pt-syms button.on{background:var(--ink);color:#fff;box-shadow:0 6px 14px -8px rgba(28,20,51,.7)} .pt-syms button.on i{color:#C9BEFF}
.pt-range{-webkit-appearance:none;appearance:none;width:100%;height:10px;border-radius:99px;background:linear-gradient(90deg,#FFC59E,#FF6B8B,#E0315F) 0/var(--v) 100% no-repeat,rgba(28,20,51,.07);cursor:pointer}
.pt-range::-webkit-slider-thumb{-webkit-appearance:none;width:26px;height:26px;border-radius:50%;background:#fff;box-shadow:0 0 0 3px var(--ink),0 4px 10px rgba(28,20,51,.3);cursor:pointer}
.pt-range::-moz-range-thumb{width:22px;height:22px;border-radius:50%;background:#fff;border:3px solid var(--ink);cursor:pointer}
.pt-range-l{display:flex;justify-content:space-between;font-size:.74rem;color:var(--muted);font-weight:600;margin-top:6px}
.pt-sheet textarea{width:100%;border:0;background:rgba(255,255,255,.75);box-shadow:inset 0 0 0 1px rgba(28,20,51,.08);border-radius:var(--r-sm);padding:12px 14px;font:inherit;color:var(--ink);resize:vertical}
.pt-sheet textarea:focus{outline:2px solid var(--accent)}
.pt-toast{position:fixed;left:50%;bottom:24px;z-index:90;transform:translate(-50%,20px);opacity:0;background:var(--ink);color:#fff;padding:12px 20px;border-radius:999px;font-weight:700;font-size:.9rem;transition:opacity .2s,transform .25s;pointer-events:none;box-shadow:0 14px 30px -10px rgba(28,20,51,.6)}
.pt-toast.show{opacity:1;transform:translate(-50%,0)}
.pt-sheet-panel.pt-flash{animation:ptFlash 1.1s ease}
@keyframes ptFlash{0%{box-shadow:0 0 0 0 rgba(106,76,240,.55),var(--shadow)}40%{box-shadow:0 0 0 8px rgba(106,76,240,.22),var(--shadow)}100%{box-shadow:var(--shadow),inset 0 0 0 1px rgba(255,255,255,.85)}}

@media (max-width:959px){
  .pt-hero{grid-template-columns:1fr;padding:22px 16px;gap:22px}
  .pt-dial{max-width:350px}
  .pt-grid,.pt-insights-grid{grid-template-columns:1fr}
  .pt-sheet{position:fixed;inset:0;z-index:80;pointer-events:none}
  .pt-sheet-bg{display:block;position:absolute;inset:0;background:rgba(28,20,51,.4);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);opacity:0;transition:opacity .2s}
  .pt-sheet-panel{position:absolute;left:0;right:0;bottom:0;max-height:88vh;overflow:auto;border-radius:30px 30px 0 0;padding:10px 18px 28px;transform:translateY(100%);transition:transform .3s cubic-bezier(.2,.8,.2,1);background:rgba(250,248,255,.97)}
  .pt-sheet-grab{display:block;width:44px;height:5px;border-radius:9px;background:rgba(28,20,51,.15);margin:4px auto 10px}
  .pt-sheet-head{position:sticky;top:-10px;background:rgba(250,248,255,.97);padding:6px 0 8px;z-index:1}
  .pt-done{display:inline-flex}
  .pt-sheet:not(.open) .pt-sheet-panel{visibility:hidden;transition:transform .3s cubic-bezier(.2,.8,.2,1),visibility 0s .3s}
  .pt-sheet.open{pointer-events:auto} .pt-sheet.open .pt-sheet-bg{opacity:1} .pt-sheet.open .pt-sheet-panel{transform:none}
  body.pt-lock{overflow:hidden}
  body.pt-page .quick-exit{bottom:16px}
}
@media (max-width:560px){
  .pt-card{padding:18px 16px}
  .pt-tiles{gap:6px} .pt-tile{padding:12px 10px}
  .hist-row{grid-template-columns:52px 1fr 64px;gap:8px} .hist-axis span{left:calc(60px + (100% - 132px) * var(--x))} .hist-n{font-size:.74rem}
  .heat{grid-template-columns:28px repeat(var(--n),minmax(0,1fr));gap:2px}
  .heat-l{font-size:0;padding:0} .heat-l i{font-size:.8rem;margin:0}
  .heat-c{border-radius:3px}
  .pain{gap:2px;height:120px}
}
@media (max-width:420px){.pt-wd b{width:32px;height:32px;font-size:1rem}.pt-flow button,.pt-moods button{font-size:.66rem}}
@media (prefers-reduced-motion:reduce){.pt-sheet-panel,.pt-sheet-bg{transition:none}.pt-sheet-panel.pt-flash{animation:none;outline:3px solid var(--accent)}.pt-dial .knob-pulse{display:none}}

/* timely tips */
.pt-tipcard{margin-top:18px;border-radius:var(--r);padding:22px 24px;background:linear-gradient(135deg,rgba(255,240,244,.92),rgba(238,233,254,.9));backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);box-shadow:var(--shadow),inset 0 0 0 1px rgba(255,255,255,.85)}
.pt-tip-head{display:flex;gap:14px;align-items:flex-start;margin-bottom:16px}
.pt-tip-ico{flex:none;width:44px;height:44px;border-radius:14px;display:grid;place-items:center;background:linear-gradient(135deg,#FF6B8B,#E0315F);color:#fff;box-shadow:0 8px 18px -8px #E0315F}
.pt-tip-head h2{font:800 1.2rem/1.25 var(--f-text);margin:0 0 4px} .pt-tip-head p{margin:0;color:var(--ink-2);font-size:.92rem}
.pt-tip-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.pt-tip{background:rgba(255,255,255,.82);border-radius:18px;padding:14px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.9)}
.pt-tip .ev{display:inline-block;font-size:.68rem;font-weight:800;padding:3px 9px;border-radius:999px;background:#EEE9FE;color:#4B37C2}
.pt-tip.ev-strong .ev{background:#D3F6F0;color:#0B6E62} .pt-tip.ev-small .ev{background:#FFF0E0;color:#9A520F} .pt-tip.ev-doc .ev{background:#FFE1E8;color:#A3173F}
.pt-tip b{display:block;margin:8px 0 4px;font-size:.92rem;line-height:1.3} .pt-tip p{margin:0;font-size:.82rem;line-height:1.5;color:var(--ink-2)}
.pt-tip-q{margin:14px 0 0;padding:14px 16px;border-radius:18px;background:rgba(255,255,255,.7);font-size:.92rem;color:var(--ink);line-height:1.5}
.pt-tip-q i{color:var(--period);margin-right:8px} .pt-tip-q cite{display:block;font-style:normal;font-size:.78rem;color:var(--muted);font-weight:700;margin-top:6px}
.pt-tip-foot{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-top:16px} .pt-tip-foot .pt-link{margin:0}
@media (max-width:959px){.pt-tip-grid{grid-template-columns:1fr 1fr}}
@media (max-width:420px){.pt-tip-grid{grid-template-columns:1fr}}

/* sync bar + PIN forms */
.tf-syncbar{display:flex;align-items:center;gap:14px;margin:0 0 16px;padding:14px 18px;border-radius:20px;background:linear-gradient(120deg,rgba(106,76,240,.12),rgba(226,54,107,.1));box-shadow:inset 0 0 0 1px rgba(106,76,240,.18)}
.tf-syncbar[hidden]{display:none}
.tf-syncbar > i{flex:none;width:40px;height:40px;border-radius:13px;display:grid;place-items:center;background:#fff;color:var(--accent)}
.tf-syncbar span{flex:1;font-size:.9rem;color:var(--ink-2)} .tf-syncbar b{display:block;color:var(--ink);font-size:.96rem}
.tf-pin-form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px;margin:10px 0}
.tf-pin{display:flex;flex-direction:column;gap:4px;font-size:.78rem;font-weight:700;color:var(--muted)}
.tf-pin input{width:156px;font:800 1.2rem var(--f-text);letter-spacing:.22em;padding:10px 12px;border-radius:12px;border:1.5px solid #E3DCEB;background:#fff;color:var(--ink);text-align:center}
.tf-pin input:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px rgba(106,76,240,.15)}
.tf-pin input[name=pass]{width:200px;letter-spacing:0;font-weight:600;font-size:1rem;text-align:left}
#tf-sync-status.bad,.tf-syncbox .bad{color:#B42318!important;font-weight:700}
.tf-sync-on{margin:0 0 4px} .tf-sync-acts{margin:8px 0 0}
@media (max-width:560px){.tf-syncbar{flex-wrap:wrap} .tf-syncbar .pt-btn{width:100%;justify-content:center}}
