/* Locally hosted fonts: SIL Open Font License 1.1; notices in HTML and FONT-LICENSES.txt. */
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('fonts/dm-sans-400.ttf') format('truetype');
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('fonts/dm-sans-500.ttf') format('truetype');
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('fonts/dm-sans-600.ttf') format('truetype');
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('fonts/dm-sans-700.ttf') format('truetype');
}
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('fonts/manrope-400.ttf') format('truetype');
}
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('fonts/manrope-500.ttf') format('truetype');
}
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('fonts/manrope-600.ttf') format('truetype');
}
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('fonts/manrope-700.ttf') format('truetype');
}
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url('fonts/manrope-800.ttf') format('truetype');
}

:root{color-scheme:dark;--bg:#160d11;--panel:#24151b;--border:#49303a;--muted:#bda4ae;--text:#fff1f4;--teal:#f0a4b7;--violet:#ddbb98}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:16px 'DM Sans',sans-serif}button,input,select{font:inherit}button,a,input,select,summary{-webkit-tap-highlight-color:transparent}button,summary{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible,#chart:focus-visible{outline:2px solid var(--teal);outline-offset:4px}header{max-width:1480px;margin:auto;padding:26px 42px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center}.brand{font:700 21px Manrope,sans-serif;text-decoration:none;color:var(--text);display:flex;align-items:center;gap:12px}.mark{font-family:Georgia,serif;background:var(--teal);color:#431322;border-radius:9px;padding:3px 10px;font-size:28px}.privacy{font-size:13px;color:var(--muted)}main{max-width:1480px;margin:auto;padding:38px 42px 0}.intro{display:flex;align-items:center;justify-content:space-between;margin-bottom:32px}.eyebrow{font-size:12px;letter-spacing:2px;color:var(--teal);font-weight:600;margin:0 0 12px}h1{font:600 clamp(28px,3vw,42px)/1.25 Manrope,sans-serif;letter-spacing:-1.4px;margin:0}h1 span{color:#c18b9c}.intro p:last-child{color:var(--muted);font-size:14px;margin-bottom:0}.quiet{background:transparent;border:1px solid var(--border);color:#ead0d9;padding:10px 16px;border-radius:8px;font-size:14px}.workspace{display:grid;grid-template-columns:320px minmax(0,1fr);gap:28px;align-items:start}.panel{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:24px;min-width:0}.panel-heading,.result-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}h2{font:600 18px Manrope,sans-serif;margin:0;letter-spacing:-.4px}.tag{font-size:11px;letter-spacing:.7px;color:var(--muted);white-space:nowrap}.switch{display:flex;background:#190e14;padding:4px;border-radius:9px;margin:22px 0}.switch button{width:50%;border:0;background:none;border-radius:6px;color:var(--muted);padding:9px;font-size:14px}.switch button[aria-pressed=true]{background:#5b2437;color:var(--teal)}.two{display:grid;grid-template-columns:1fr 1fr;gap:14px}.field{margin:21px 0}label{display:flex;align-items:center;gap:6px;font-size:14px;margin-bottom:10px}.info{padding:0;background:none;border:1px solid #a47888;color:#d1aaba;border-radius:50%;width:15px;height:15px;font-size:10px;flex-shrink:0}input[type=number],select{width:100%;min-width:0;border:1px solid #603747;background:#301b24;color:var(--text);padding:11px 12px;border-radius:7px;font-size:14px}input[type=range]{width:100%;margin:15px 0 8px;accent-color:var(--teal);cursor:pointer}.range-value{color:var(--teal);font-size:20px;font-weight:600;margin-top:14px}.ticks{display:flex;justify-content:space-between;color:var(--muted);font-size:12px;padding:0 7px}.hint{font-size:12px;color:var(--muted);line-height:1.65}.local-note{border-top:1px solid var(--border);padding-top:20px;font-size:13px;color:#dfb7c5;line-height:1.8}.local-note span{color:var(--muted);padding-left:17px}.divider{font-size:11px;letter-spacing:1.5px;border-top:1px solid var(--border);padding-top:22px;color:var(--teal)}.trait-value{color:var(--teal);font-size:14px}.result-heading{margin:3px 0 18px}.stats{display:grid;grid-template-columns:1.1fr 1fr 1fr;gap:14px}.stat{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:22px 20px;min-width:0}.stat p{font-size:13px;margin:0 0 18px;color:#e6cbd5}.stat strong{display:block;font:600 clamp(28px,3.2vw,43px) Manrope,sans-serif;letter-spacing:-1.5px;overflow-wrap:anywhere}.stat>span{display:block;font-size:12px;color:var(--muted);margin-top:8px}.stat-foot{font-size:11px;margin-top:22px;color:var(--muted);line-height:1.5}.stat.primary{background:#701f3b;border-color:#701f3b;color:#fff1f4}.primary p,.primary>span,.primary .stat-foot{color:#f0cad7}.chart-panel{margin-top:22px}.chart-panel .eyebrow{font-size:10px;margin-bottom:8px}.chart-tabs{display:flex;gap:3px;background:#190e14;padding:4px;border-radius:7px}.chart-tabs button{background:none;border:0;color:var(--muted);font-size:12px;padding:7px 9px;border-radius:5px}.chart-tabs button[aria-pressed=true]{background:#57283b;color:var(--text)}.legend{display:flex;flex-wrap:wrap;gap:18px;color:var(--muted);font-size:11px;margin:24px 0 10px}.dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:6px}.teal{background:var(--teal)}.violet{background:var(--violet)}#chart{width:100%;touch-action:pan-y}#chart svg{width:100%;height:auto;display:block;overflow:visible}#chartReadout{font-size:13px;color:var(--teal);min-height:20px;margin:0 0 12px}.chart-caption{border-top:1px solid var(--border);padding-top:15px;display:flex;justify-content:space-between;gap:10px;color:var(--muted);font-size:11px}.lower{display:grid;grid-template-columns:1.12fr 1fr;gap:20px;margin-top:20px}.lower h2{font-size:16px}.breakdown{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:24px 0 16px}.breakdown div{background:#361e29;padding:16px 10px;border-radius:8px;min-width:0}.breakdown strong{display:block;font:600 25px Manrope,sans-serif;overflow-wrap:anywhere}.breakdown span{font-size:12px;color:var(--muted);display:block;margin-top:7px}.perspective{background:#2e1923}.perspective h2{font-size:22px;line-height:1.4}.perspective>p:not(.eyebrow){font-size:14px;line-height:1.7;color:#d0acbb}.research{border-top:1px solid #563342;padding-top:18px;margin-top:23px}.research>span{font-size:10px;letter-spacing:1.6px;color:var(--violet)}.research p{font-size:12px;line-height:1.7;color:var(--muted)}a{color:var(--teal)}.research a{font-size:12px}details summary{font-size:13px;line-height:1.6}details p{font-size:14px;line-height:1.8;color:var(--muted)}.methodology{margin-top:20px;padding:20px 24px}.methodology summary{font-size:14px}.methodology summary span{float:right;color:var(--muted);font-size:12px}#season{font-size:13px;line-height:2.2;margin-top:14px}footer{display:flex;justify-content:space-between;padding:30px 0;color:#b18c9b;font-size:12px}#tooltip{position:fixed;z-index:10;max-width:290px;background:#f4d8e1;color:#421729;padding:14px 17px;border-radius:8px;font-size:13px;line-height:1.6;box-shadow:0 8px 30px #0008}#error{color:#ffb5aa;font-size:13px}.expanded{position:fixed;inset:5vh 5vw;z-index:5;overflow:auto;box-shadow:0 0 0 100vmax #000c}.expanded #chart{max-width:1100px;margin:auto}[hidden]{display:none!important}@media(min-width:1500px){main{padding-top:48px}}@media(max-width:1100px){.workspace{grid-template-columns:285px minmax(0,1fr);gap:20px}main,header{padding-left:24px;padding-right:24px}.stats{gap:9px}.stat{padding:18px 12px}.lower{grid-template-columns:1fr}.chart-caption{flex-direction:column}.stat strong{font-size:30px}}@media(max-width:760px){main{padding:25px 16px 0}header{padding:20px 16px}.privacy{font-size:11px}.brand{font-size:16px}.intro{align-items:flex-start;gap:16px}h1{font-size:28px}.intro .quiet{font-size:0;padding:10px}.intro .quiet:after{content:'Reset';font-size:12px}.workspace{grid-template-columns:1fr}.panel{padding:20px}.stats{grid-template-columns:1fr 1fr}.stat:last-child{grid-column:1/-1}.stat:last-child strong{display:inline}.stat strong{font-size:34px}.panel-heading{flex-wrap:wrap}.legend{gap:10px}.methodology summary span{float:none;display:block;margin-left:17px}footer{gap:20px;line-height:1.6}.chart-tabs button{font-size:12px}h1 span{letter-spacing:-1px}}@media(prefers-reduced-motion:no-preference){button{transition:background .18s}button:hover{filter:brightness(1.15)}}

input[type=date]{width:100%;min-width:0;border:1px solid #603747;background:#301b24;color:var(--text);padding:10px;border-radius:7px;font:inherit;font-size:14px}.relationship-fields{border-left:2px solid #b4607c;padding-left:14px;margin-bottom:22px}.check-label{align-items:flex-start;line-height:1.6}.check-label input{accent-color:var(--teal);margin-top:5px}.relationship-summary{margin-top:20px}.relationship-summary p{font-size:13px;line-height:1.7;color:var(--muted)}.period-breakdown{display:flex;flex-wrap:wrap;gap:20px;margin-top:16px}.period-breakdown strong{display:block;color:var(--teal);font-size:22px}.period-breakdown span{font-size:12px;color:var(--muted)}.preset-note{padding:0 0 12px;border-bottom:1px solid var(--border)}.preset-note button{font-size:12px} .results[aria-busy=true] .stat strong{visibility:hidden}

.mark{display:inline-flex;align-items:baseline;gap:0}.mark>span{display:inline-block}.mark .mark-first{transform:scaleX(-1)}

/* Mobile review: readable controls, responsive charts, and direct access to results. */
html{scroll-padding-top:18px} .results{scroll-margin-top:20px} .results:focus{outline:none}
.results.invalid>:not(#invalidResult){display:none!important}
#invalidResult{padding:24px;border:1px solid #a44e6c;border-radius:12px;line-height:1.6;color:#ffdce5}
.model-notice{font-size:14px;line-height:1.6;padding:16px;border-left:3px solid var(--teal);background:#301b24;border-radius:6px}
.hint,.stat>span,.stat-foot,.tag,.legend,.chart-caption,.ticks,.local-note,.research p,.research a,.period-breakdown span{font-size:13px}
input[type=number],input[type=date],select{min-height:44px}
input[type=range]{min-height:44px;margin:3px 0}
.switch button,.chart-tabs button,.quiet,summary{min-height:44px}
summary{padding:10px 0;font-size:14px!important}

label{line-height:1.5;min-height:32px;flex-wrap:wrap}
/* Keep age help icons beside their text and align paired inputs when labels wrap. */
.two > .field{min-width:0;align-self:end}
.two > .field > label{flex-wrap:nowrap}
.ticks{display:grid;grid-template-columns:1fr 1fr 1fr;gap:4px;line-height:1.4}
.ticks span:nth-child(2){text-align:center}.ticks span:last-child{text-align:right}
fieldset{padding:0;border:0;margin:12px 0 0;min-width:0}fieldset legend{font-size:14px;color:var(--muted)}
fieldset:disabled{display:none} .optional-context{border-top:1px solid var(--border);margin-top:16px}
#advancedFields{border-top:1px solid var(--border);margin-top:22px;padding-top:10px}
#scenarioStatus{display:block;color:var(--muted);font-size:12px;font-weight:400}
.check-label{min-height:44px;align-items:center;flex-wrap:nowrap}.check-label input{width:22px;height:22px;flex:0 0 22px}
.chart-age-label{justify-content:space-between;font-size:14px;margin-top:14px;margin-bottom:0}.chart-age-label output{color:var(--teal)}
.chart-open{overflow:hidden}.chart-open .mobile-dock{display:none}
.expanded{inset:12px;padding:18px;overscroll-behavior:contain}
.mobile-dock{display:none} .result-heading{flex-wrap:wrap}
@media(max-width:760px){
 input[type=number],input[type=date],select{font-size:16px}
 .info{width:32px;height:32px;font-size:14px;flex:0 0 32px;border-color:#a47888}
 header{padding:14px 16px;gap:12px;flex-wrap:wrap}.brand{font-size:18px}.privacy{font-size:12px}
 main{padding:18px 14px 0}.intro{margin-bottom:22px;gap:10px}h1{font-size:25px;letter-spacing:-.7px}.intro .eyebrow{font-size:11px;margin-bottom:8px}.intro p:last-child{font-size:14px;line-height:1.5}
 .panel{padding:18px}.two{gap:12px}.field{margin:17px 0}
 .intro .quiet{font-size:12px;white-space:nowrap}.intro .quiet:after{content:none}
 .stats{grid-template-columns:1fr}.stat:last-child{grid-column:auto}.stat:last-child strong{display:block}.stat{padding:20px}.stat strong{font-size:36px}.stat p{font-size:14px;margin-bottom:10px}.stat-foot{margin-top:12px}
 .lower{gap:16px}.chart-tabs{width:100%;justify-content:space-between}.chart-tabs button{font-size:14px;flex:1}.chart-tabs #expand{flex:0 0 44px}
 #chartReadout{font-size:14px;line-height:1.6;min-height:45px}.legend{line-height:1.5;gap:12px}.breakdown{gap:8px}.breakdown strong{font-size:23px}.breakdown div{padding:16px 9px}
 .tag{white-space:normal}.period-breakdown{gap:18px}.period-breakdown>div{flex:1 1 120px}
 .mobile-dock{display:flex;position:fixed;bottom:0;left:0;right:0;z-index:4;padding:10px 14px calc(10px + env(safe-area-inset-bottom));gap:10px;border-top:1px solid #774052;background:#211218;box-shadow:0 -6px 20px #0003}
 .mobile-dock a{min-height:44px;display:flex;align-items:center;justify-content:center;border:1px solid #754053;border-radius:8px;padding:10px 12px;text-decoration:none;font-size:14px;font-weight:600}
 .mobile-dock a:last-child{flex:1;background:#701f3b;color:#fff1f4;gap:8px}
 footer{padding-bottom:110px}.methodology{padding:16px}.methodology summary span{margin-left:0;float:none}
}
@media(max-width:350px){.two{grid-template-columns:1fr}.privacy{display:none}.intro{flex-wrap:wrap}.intro .quiet{padding:8px 12px}.breakdown{grid-template-columns:1fr}.breakdown div{display:flex;align-items:center;justify-content:space-between}.mobile-dock{padding-left:8px;padding-right:8px;gap:6px}.mobile-dock a{font-size:13px;padding-left:8px;padding-right:8px}}

.mobile-reset{display:none}
.frequency-comparison{margin-top:20px}
.comparison-result{font-size:clamp(18px,2.2vw,25px);font-weight:600;line-height:1.4;color:var(--teal);margin:16px 0}
.comparison-values{display:flex;flex-wrap:wrap;gap:14px 24px}
.comparison-values>div{flex:1 1 170px;min-width:0}
.comparison-values span{display:block;font-size:13px;line-height:1.5;color:var(--muted)}
.comparison-values strong{display:block;font-size:21px;line-height:1.5;margin-top:4px;overflow-wrap:anywhere}
.frequency-comparison details{border-top:1px solid var(--border);margin-top:14px;padding-top:4px}
@media(max-width:760px){.intro #reset,.desktop-age-badge{display:none}.mobile-reset{display:inline-block}}

.legal-notice{margin-top:26px;border-top:1px solid var(--border);padding-top:12px}.legal-notice summary{color:var(--muted)}.legal-notice details>div{max-width:900px}.legal-notice p{overflow-wrap:anywhere}.legal-notice a{overflow-wrap:anywhere}footer{flex-wrap:wrap}
