:root{--cream:#F1ECE8;--paper:#FBF8F5;--plum:#3F2532;--plum-soft:#6E5560;--gold:#B0863F;--gold-deep:#8A6830;--gold-hi:#B0863F;--on-plum:#FBF8F5;--line:rgba(63,37,50,0.14);--track:#E3DAD5;--note:#F3E8D2;--shadow:0 24px 48px -28px rgba(63,37,50,0.35)}
@media (prefers-color-scheme:dark){:root{--cream:#241621;--paper:#382030;--plum:#F1ECE8;--plum-soft:#C9B4A8;--gold:#D9AE63;--gold-deep:#EAC17E;--gold-hi:#8A6830;--on-plum:#241621;--line:rgba(241,236,232,0.16);--track:#4A3042;--note:#4A3A2E;--shadow:0 24px 48px -24px rgba(0,0,0,0.55)}.illu{filter:brightness(0) invert(0.93)}}
*{box-sizing:border-box}
body{margin:0;font-family:'Inter',system-ui,sans-serif;color:var(--plum);background:var(--cream);-webkit-font-smoothing:antialiased}
button{font-family:inherit;cursor:pointer}
a{color:var(--gold-deep)}
h1,h2,h3{font-family:'Fraunces',Georgia,serif;font-weight:500;margin:0}
.muted{color:var(--plum-soft)}
.center{text-align:center}
.wrap{max-width:1240px;margin:0 auto;padding:0 24px}
.deep{--plum:#F1ECE8;--plum-soft:#D8C8C2;--gold:#D9AE63;--gold-deep:#D9AE63;--gold-hi:#D9AE63;--on-plum:#3F2532;--paper:rgba(251,248,245,0.07);--line:rgba(241,236,232,0.2);color:#F1ECE8;background:linear-gradient(135deg,#2E1A27 0%,#3F2532 55%,#5A3A48 100%);position:relative;overflow:hidden}
.topbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px;padding:18px 0}
.brand{display:flex;align-items:center;gap:14px}
.brand .logo{background:#3F2532;border:1px solid rgba(241,236,232,.22);border-radius:12px;padding:8px 12px;display:flex}
.brand img{height:36px;width:auto;display:block}
.brand span{font-family:'Fraunces',Georgia,serif;font-size:22px}
.who{display:flex;flex-wrap:wrap;align-items:center;gap:14px;font-size:14px}
.link-btn{background:none;border:0;border-bottom:1px solid var(--gold);color:var(--plum);font-size:14px;padding:0 0 1px}
.eyebrow{font-size:12px;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:var(--gold-deep)}
.card{background:var(--paper);border:1px solid var(--line);border-radius:24px;padding:28px;margin-top:32px}
.btn{min-height:52px;padding:0 32px;border-radius:999px;border:1.5px solid var(--plum);background:var(--plum);color:var(--on-plum);font-size:16px;font-weight:500}
.btn[disabled]{opacity:.6;cursor:default}
.field{width:100%;min-height:52px;padding:0 18px;border-radius:14px;border:1.5px solid var(--line);background:var(--paper);color:var(--plum);font-size:16px;font-family:inherit}
.field:focus,.btn:focus-visible,button:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.progress{margin-top:36px;background:var(--paper);border:1px solid var(--line);border-radius:20px;padding:22px 28px;display:flex;flex-wrap:wrap;align-items:center;gap:16px 32px}
.bar{flex:1 1 240px;height:8px;border-radius:999px;background:var(--track);overflow:hidden}
.bar>div{height:100%;border-radius:999px;background:var(--gold-deep)}
.weeks{max-width:880px;margin:32px auto 0;display:flex;flex-direction:column;gap:8px}
.wk{width:100%;min-height:56px;padding:10px 18px;border-radius:16px;border:1.5px solid var(--line);background:var(--paper);color:var(--plum);text-align:left;display:flex;align-items:center;gap:14px;font-size:14px}
.wk .n{flex:0 0 auto;font-family:'Fraunces',Georgia,serif;font-size:20px;width:26px;color:var(--gold-deep)}
.wk .t{flex:1 1 auto;line-height:1.35}
.wk.sel{border-color:var(--plum);background:var(--plum);color:var(--on-plum)}
.wk.sel .n{color:var(--on-plum)}
.wk.locked{border-style:dashed;background:transparent;color:var(--plum-soft);cursor:default}
.wk.locked small{display:block;margin-top:2px;font-size:12px;color:var(--gold-deep)}
.detail{padding:20px 4px 28px}
.video{border-radius:28px;aspect-ratio:16/9;position:relative;overflow:hidden;background:#2E1A27}
.video iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
h2.wt{margin-top:12px;font-size:clamp(30px,3.6vw,44px);line-height:1.1}
.note{margin-top:24px;background:var(--note);border-radius:16px;padding:16px 22px;font-size:15px;line-height:1.5}
.note .more{margin-top:10px;white-space:pre-line;color:var(--plum-soft)}
.info{display:flex;flex-direction:column;gap:10px;max-width:68ch;margin-top:14px}
.info h3{margin:14px 0 0;font-size:22px;line-height:1.2}
.info p{margin:0;font-size:15px;line-height:1.65;color:var(--plum-soft)}
.info .li{display:flex;gap:12px;font-size:15px;line-height:1.6}
.info .li i{font-style:normal;color:var(--gold-deep);flex:0 0 auto}
.info .img{display:flex;justify-content:center;margin:18px 0 10px}
.info .img img{width:100%;max-width:220px;height:auto}
.track{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px;padding:16px 0;border-top:1px solid var(--line)}
.track .l{flex:1 1 220px;min-width:0}
.track .nm{font-family:'Fraunces',Georgia,serif;font-size:19px}
.track .goal{margin-top:2px;font-size:14px;font-weight:500;color:var(--gold-deep)}
.track .nt{margin-top:4px;font-size:13px;line-height:1.5;color:var(--plum-soft)}
.ctr{display:flex;align-items:center;gap:12px}
.ctr button{width:44px;height:44px;border-radius:14px;border:1.5px solid var(--line);background:var(--paper);color:var(--plum);font-size:22px;line-height:1}
.ctr button.plus{border-color:var(--plum);background:var(--plum);color:var(--on-plum)}
.ctr .c{min-width:32px;text-align:center;font-family:'Fraunces',Georgia,serif;font-size:26px}
.two{margin-top:32px;display:flex;flex-wrap:wrap;gap:20px}
.two>div{flex:1 1 280px;background:var(--paper);border:1px solid var(--line);border-radius:24px;padding:28px}
.two h3{font-size:22px}
.two p{margin:12px 0 0;font-size:15px;line-height:1.65;color:var(--plum-soft)}
.mat{margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}
.mat a{display:inline-block;margin-top:8px;font-size:15px;color:var(--plum);text-decoration:none;border-bottom:1px solid var(--gold)}
.mat img{display:block;width:100%;height:auto;border-radius:14px;border:1px solid var(--line);margin-top:8px}
.pills{margin-top:16px;display:flex;flex-wrap:wrap;gap:10px}
.pill{min-height:44px;padding:0 18px;border-radius:999px;font-size:14px;border:1.5px solid var(--line);background:var(--paper);color:var(--plum)}
.pill.on{border-color:var(--plum);background:var(--plum);color:var(--on-plum)}
.bz{margin-top:24px;display:flex;flex-wrap:wrap;align-items:center;gap:32px}
.bshape{position:relative;width:220px;height:220px;flex:none}
.bcircle{position:absolute;left:10px;top:10px;width:200px;height:200px;border-radius:50%;border:1.5px solid var(--gold);background:var(--note);transform:scale(.55)}
.bsq{position:absolute;left:20px;top:20px;width:180px;height:180px;border:1.5px solid var(--gold);border-radius:14px;background:var(--note)}
.bdot{position:absolute;left:20px;top:200px;width:24px;height:24px;margin:-12px 0 0 -12px;border-radius:50%;background:var(--gold)}
.bphase{font-family:'Fraunces',Georgia,serif;font-size:28px}
.bcount{margin-top:6px;font-size:15px;color:var(--plum-soft)}
.small{font-size:13px;line-height:1.55;color:var(--plum-soft)}
audio{margin-top:16px;width:100%;max-width:520px}
.login{max-width:480px;margin:0 auto;padding:72px 24px}
.login h1{font-size:clamp(32px,5vw,44px);line-height:1.1}
.msg{margin-top:16px;padding:14px 18px;border-radius:14px;background:var(--note);font-size:15px;line-height:1.5}
.foot{margin:48px 0 0;padding:24px 0;border-top:1px solid var(--line);font-size:13px;color:var(--plum-soft);display:flex;flex-wrap:wrap;gap:8px 24px}
.foot a{color:var(--plum-soft)}
@media (prefers-reduced-motion:reduce){.bcircle,.bdot{transition:none!important}}
/* ---- ravitsemus ja ylläpito ---- */
.tabs{display:flex;gap:8px;padding:18px 0 0;flex-wrap:wrap}
.tab{min-height:44px;padding:0 22px;border-radius:999px;border:1.5px solid var(--line);background:var(--paper);color:var(--plum);font-size:15px;font-weight:500}
.tab.on{border-color:var(--plum);background:var(--plum);color:var(--on-plum)}
.btn.ghost{background:transparent;color:var(--plum)}
.fh{margin:30px 0 12px;font-size:21px}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}
.fb{display:flex;flex-direction:column;gap:6px;margin-top:14px}
.grid .fb{margin-top:0}
.fb label,.fb .lbl{font-size:14px;font-weight:500}
.opt{font-weight:400;font-size:12px;color:var(--plum-soft);margin-left:6px}
select.field{padding-right:12px}
.chks{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:4px 16px}
.chk{display:flex;gap:12px;align-items:flex-start;padding:10px 0;font-size:15px;line-height:1.45;cursor:pointer}
.chk input,.si input{width:22px;height:22px;flex:none;margin:0;accent-color:var(--gold-deep)}
.consent{background:var(--note);border-radius:16px;padding:18px 22px}
.consent p{margin:0 0 10px;font-size:14px;line-height:1.6}
.consent .chk{padding:6px 0 0;font-weight:500}
.macros{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:12px;margin-top:20px}
.mc{background:var(--cream);border-radius:16px;padding:16px 18px}
.mc .v{font-family:'Fraunces',Georgia,serif;font-size:30px;line-height:1.1}
.mc .v small{font-family:Inter,sans-serif;font-size:14px;color:var(--plum-soft)}
.mc .l{margin-top:4px;font-size:13px;color:var(--plum-soft)}
.days{margin-top:20px;display:flex;flex-direction:column;gap:8px}
details.day,details.adm{border:1.5px solid var(--line);border-radius:16px;background:var(--paper)}
details.day>summary,details.adm>summary{list-style:none;cursor:pointer;padding:14px 18px;display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px 16px;align-items:center}
details>summary::-webkit-details-marker{display:none}
.dn{font-family:'Fraunces',Georgia,serif;font-size:20px}
.dk{font-size:14px;color:var(--plum-soft)}
.dm{padding:0 18px 18px}
.meal{padding:14px 0;border-top:1px solid var(--line)}
.mh{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 14px}
.mn{font-size:12px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--gold-deep)}
.mk{font-size:13px;color:var(--plum-soft)}
.mr{margin-top:4px;font-family:'Fraunces',Georgia,serif;font-size:19px}
.hint{margin-top:4px;font-size:13px;color:var(--plum-soft)}
details.rc{margin-top:8px}
details.rc summary{cursor:pointer;font-size:14px;color:var(--gold-deep);padding:6px 0}
details.rc ul{margin:6px 0;padding-left:20px;font-size:14px;line-height:1.7}
details.rc p{margin:6px 0 0;font-size:14px;line-height:1.6;color:var(--plum-soft)}
.sc{margin:22px 0 4px;font-size:18px}
.si{display:flex;gap:12px;align-items:center;padding:9px 0;border-top:1px solid var(--line);font-size:15px;cursor:pointer}
.si input:checked+span{text-decoration:line-through;opacity:.55}
.ar{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px 18px;width:100%}
details.adm{margin-top:10px}
.adm .ar{padding:2px 0}
table.kv{width:calc(100% - 36px);margin:0 18px 12px;border-collapse:collapse;font-size:14px}
table.kv th{text-align:left;font-weight:500;color:var(--plum-soft);padding:8px 14px 8px 0;vertical-align:top;width:34%;border-top:1px solid var(--line)}
table.kv td{padding:8px 0;border-top:1px solid var(--line)}
table.hist{margin:4px 18px 18px;border-collapse:collapse;font-size:13px}
table.hist th,table.hist td{padding:5px 14px 5px 0;text-align:left}
div.adm{border:1.5px solid var(--line);border-radius:16px;background:var(--paper);padding:14px 18px;margin-top:10px}
@media print{.deep,.tabs,.foot,.pills,.btn,.link-btn,#shoplist~.card,.nut>.card:not(#shoplist){display:none!important}body{background:#fff}.card{border:0;padding:0}}
/* ---- kalenteri ---- */
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-top:16px}
.ch{text-align:center;font-size:12px;color:var(--plum-soft);padding:4px 0}
.cd{position:relative;aspect-ratio:1/1;min-height:42px;border-radius:12px;border:1.5px solid var(--line);background:var(--paper);color:var(--plum);font-size:15px}
.cd.f1{background:#D9B8C2;color:#3F2532;border-color:transparent}
.cd.f2{background:#B97A8C;color:#fff;border-color:transparent}
.cd.f3{background:#7E3A52;color:#fff;border-color:transparent}
.cd.pred{border:2px dashed var(--gold-deep)}
.cd.today{outline:2px solid var(--plum);outline-offset:1px}
.cd.sel{box-shadow:0 0 0 3px var(--gold)}
.cd .sd{position:absolute;right:6px;bottom:6px;width:6px;height:6px;border-radius:50%;background:var(--gold-deep)}
.ghost-tab{border-style:dashed;color:var(--plum-soft)}
@media (prefers-color-scheme:dark){.cd.f1{background:#8A5A68;color:#fff}}

.cd.fert{background:#F3E8D2;border-color:var(--gold)}
.cd.ovu::after{content:'';position:absolute;left:50%;bottom:5px;width:8px;height:8px;margin-left:-4px;border-radius:50%;background:var(--gold-deep)}
@media (prefers-color-scheme:dark){.cd.fert{background:#5A4630;color:#fff}}
