:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#172d45;background:#f4f6f9;font-synthesis:none;--ink:#172d45;--green:#176b50;--muted:#526477;--line:#d7dfe7;--lime:#d9f176}
*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button,a,input,select,textarea{touch-action:manipulation}button{cursor:pointer;border:0;border-radius:9px;padding:11px 17px;font-weight:600;min-height:44px;background:#e6ecf1;color:var(--ink)}button:hover{background:#d5e0e8}button:disabled{cursor:wait;opacity:.6}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #187eaa;outline-offset:3px}[hidden]{display:none!important}.primary{background:var(--green);color:white}.primary:hover{background:#10513c}.quiet{background:transparent;padding:10px}.danger{background:#fae9e5;color:#94351e}.muted{color:var(--muted)}.error{color:#94351e;line-height:1.5}.error:empty{display:none}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(2rem,5vw,3.5rem);letter-spacing:-.035em;line-height:1.1;margin-bottom:14px}h2{font-size:1.5rem;letter-spacing:-.02em;margin-bottom:16px}h3{font-size:1.05rem;margin-bottom:8px}p{line-height:1.6;max-width:72ch}svg{display:block}a{color:var(--green)}label{display:grid;gap:8px;font-size:.93rem;font-weight:600;margin-bottom:18px}input,select,textarea{width:100%;min-height:46px;border:1px solid #a9b9c8;border-radius:8px;padding:11px 12px;color:var(--ink);background:white}textarea{resize:vertical;min-height:110px}input[type=checkbox]{width:21px;min-height:21px;accent-color:var(--green)}.check-label{display:flex;align-items:center;font-weight:500;gap:12px}input::placeholder,textarea::placeholder{color:#627487}
.topbar{background:var(--ink);color:white;display:flex;align-items:center;gap:35px;padding:20px max(24px,calc((100vw - 1180px)/2));min-height:100px}.brand{display:flex;align-items:center;gap:12px;color:white;text-decoration:none;font-size:1.35rem;font-weight:700}.brand svg,.brand-icon{width:43px;fill:none;stroke:var(--lime);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.brand-sub{display:block;font-size:.76rem;font-weight:400;color:#d3dce5;margin-top:2px}.topbar nav{display:flex;gap:5px;flex:1}.topbar button{color:#d8e3ed;background:transparent;font-size:.94rem}.topbar button:hover{background:#2b435d}.topbar button.active{background:var(--lime);color:var(--ink)}main{max-width:1180px;margin:auto;padding:42px 24px 56px;min-height:calc(100vh - 185px)}footer{display:flex;justify-content:space-between;gap:12px;max-width:1180px;margin:auto;padding:22px 24px;color:var(--muted);font-size:.83rem;border-top:1px solid var(--line)}.page-heading{display:flex;justify-content:space-between;gap:20px;align-items:start;margin-bottom:25px}.page-heading p{color:var(--muted);margin-bottom:0}.heading-actions{display:flex;gap:10px;flex-wrap:wrap}.week-toolbar{display:flex;align-items:center;gap:12px;margin:25px 0 12px}.week-toolbar strong{flex:1}.week-strip{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;margin-bottom:30px}.day{display:grid;gap:7px;text-align:left;padding:13px 15px;background:white;border:1px solid var(--line);font-weight:400;min-height:108px}.day span{font-size:.79rem;color:var(--muted)}.day b{font-size:1.45rem}.day small{font-size:.69rem;color:var(--green)}.day.selected{background:var(--ink);color:white;border-color:var(--ink)}.day.selected span,.day.selected small{color:#dce5ee}.day.today:not(.selected){background:#edf5d6}.plan-layout{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:36px}.section-title{display:flex;align-items:center;justify-content:space-between;gap:15px}.sheet{background:white;border-radius:14px;padding:24px}.event-list{margin-top:10px}.event{display:grid;grid-template-columns:48px 1fr auto;gap:15px;padding:20px 0;border-bottom:1px solid var(--line);align-items:start}.event:last-child{border-bottom:0}.event-icon{display:grid;place-items:center;width:44px;height:44px;border-radius:10px;background:#e8f2ed;color:var(--green)}.event-icon.climb{background:#e8eef9;color:#344d8c}.event-icon.rest{background:#edf0f3;color:#526477}.event-icon svg{width:23px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.event-title{background:none;padding:0;min-height:28px;text-align:left;font-size:1.08rem;color:var(--ink)}.event-title:hover{background:none;text-decoration:underline}.event p{font-size:.88rem;color:var(--muted);margin:5px 0 0;white-space:pre-wrap;overflow-wrap:anywhere}.event .done{color:var(--green);background:#e8f2ed}.event-check{min-width:44px;padding:10px;font-size:.86rem}.badge{display:inline-block;background:#e9edf2;padding:4px 8px;border-radius:5px;font-size:.75rem;font-weight:500;margin-top:8px;color:#41566c}.badge.pending{background:#fff1d2;color:#765017}.empty{padding:30px 0;color:var(--muted);max-width:50ch}.aside-note{padding-top:22px}.aside-note p{font-size:.9rem;color:var(--muted)}.aside-note a{display:block;margin-top:10px}.split{display:grid;grid-template-columns:1fr 1fr;gap:28px}.recipe-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.recipe{background:white;border-radius:14px;padding:24px;display:flex;flex-direction:column;gap:10px}.recipe h2{font-size:1.25rem;margin-bottom:0}.recipe p{font-size:.9rem;color:var(--muted);white-space:pre-wrap;overflow-wrap:anywhere;margin-bottom:0}.recipe details{margin-bottom:10px}.recipe summary{cursor:pointer;padding:8px 0;font-weight:600}.recipe .heading-actions{margin-top:auto}.shopping{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.8;margin:15px 0}.rule{padding:18px 0;border-bottom:1px solid var(--line)}.rule p{margin:0;color:var(--muted);font-size:.9rem}.role-note{background:#e6edf5;padding:14px 18px;border-radius:10px;margin-bottom:20px;font-size:.9rem}.chart{width:100%;height:200px;overflow:visible}.chart text{font-family:inherit;fill:#526477;font-size:12px}.chart line{stroke:#d7dfe7}.chart path{fill:none;stroke:var(--green);stroke-width:3}.chart circle{fill:var(--green);stroke:white;stroke-width:2}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:.9rem}th,td{text-align:left;padding:13px 10px;border-bottom:1px solid var(--line);white-space:nowrap}th{color:var(--muted);font-weight:600}.fields-row{display:grid;grid-template-columns:1fr 1fr;gap:15px}.history-row{padding:16px 0;border-bottom:1px solid var(--line)}.history-row p{font-size:.9rem;margin:8px 0 0;white-space:pre-wrap}.history-row .quiet{float:right}dialog{border:0;border-radius:16px;padding:28px;width:min(620px,calc(100vw - 28px));max-height:90vh;color:var(--ink);box-shadow:0 20px 80px #172d4530}dialog::backdrop{background:#172d4570}.form-heading{display:flex;justify-content:space-between;align-items:start;gap:15px;margin-bottom:15px}.form-actions{display:flex;justify-content:space-between;gap:10px;margin-top:25px}.hint{color:var(--muted);font-size:.85rem;line-height:1.6;margin-bottom:15px}#notice{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);z-index:10;background:var(--ink);color:white;border-radius:10px;max-width:calc(100vw - 32px);padding:13px 20px;box-shadow:0 8px 24px #172d4520;pointer-events:none}#notice:empty{display:none}.login-shell{min-height:100vh;display:grid;grid-template-columns:1fr 1fr;max-width:1050px;margin:auto;align-items:center;gap:85px;padding:40px}.login-intro h1{font-size:clamp(3rem,7vw,5.6rem);margin-top:26px}.login-intro .brand-icon{stroke:var(--green);width:60px}.login-intro p{font-size:1.2rem;color:var(--muted)}.login-week{display:flex;gap:12px;margin-top:30px}.login-week span{background:#e3ebf1;padding:16px 20px;border-radius:10px;font-size:.75rem;line-height:1.8}.login-week span:last-child{background:var(--lime)}.login-week b{font-size:.92rem}.login-shell form{background:white;padding:32px;border-radius:16px}.login-shell .primary{width:100%}.login-shell .muted{font-size:.83rem;margin:20px 0 0}.link-button{background:none;padding:0;min-height:30px;text-decoration:underline;color:var(--green)}
@media(max-width:900px){.topbar{gap:20px;padding:18px 24px;flex-wrap:wrap}.topbar nav{order:3;flex-basis:100%;justify-content:space-between}.topbar #logout{margin-left:auto}.plan-layout{grid-template-columns:1fr}.plan-aside{display:grid;grid-template-columns:1fr 1fr;gap:24px}.recipe-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.login-shell{gap:35px;padding:30px}.day{padding:12px 10px}}
@media(max-width:600px){main{padding:28px 16px 40px}.topbar{padding:16px;gap:15px}.topbar nav{gap:2px}.topbar nav button{padding:9px 8px;font-size:.83rem}.brand svg{width:34px}.brand{font-size:1.15rem}.page-heading{display:block;margin-bottom:20px}.heading-actions{margin-top:16px}h1{font-size:2.15rem}.week-strip{gap:4px}.day{min-height:84px;padding:10px 5px;text-align:center;gap:5px}.day b{font-size:1.2rem}.day span{font-size:.7rem}.day small{font-size:.6rem}.week-toolbar button{padding:10px}.week-toolbar strong{font-size:.88rem;text-align:center}.sheet{padding:20px}.plan-aside,.split,.recipe-grid{grid-template-columns:1fr}.event{grid-template-columns:36px minmax(0,1fr) auto;gap:10px}.event-icon{width:34px;height:38px}.event-check{font-size:.77rem;padding:9px 8px;min-width:44px}.event-title{font-size:1rem}.login-shell{display:block;padding:32px 20px;min-height:100vh}.login-intro{margin-bottom:28px}.login-intro h1{font-size:3.8rem;margin-top:12px}.login-intro .brand-icon{width:40px}.login-intro p{font-size:1rem}.login-week{display:none}.login-shell form{padding:24px}footer{display:block;padding:20px 16px;font-size:.77rem}footer span{display:block;margin-top:8px}dialog{padding:22px}.fields-row{gap:12px}.form-heading h2{font-size:1.25rem}.role-note{font-size:.83rem}}
@media(prefers-reduced-motion:no-preference){.day{transition:background-color .15s ease-out}.event-check{transition:background-color .15s ease-out}dialog[open]{animation:open .16s ease-out}@keyframes open{from{clip-path:inset(0 0 8% 0);opacity:.8}to{clip-path:inset(0);opacity:1}}}

.login-shell{display:flex;justify-content:center;max-width:none;gap:0;padding:24px}.login-shell form{width:100%;max-width:420px}.login-shell h1{font-size:1.65rem;letter-spacing:-.02em;margin-bottom:25px}
.workout-detail{margin-top:24px;padding-top:24px;border-top:1px solid var(--line)}.workout-detail .section-title{align-items:start}.workout-detail .badge{white-space:nowrap;margin:0}.warmup{background:#eef4f0;border-radius:10px;padding:18px;margin:18px 0}.warmup p{margin:0;font-size:.9rem}.exercise{display:grid;grid-template-columns:32px minmax(0,1fr);gap:13px;padding:18px 0;border-bottom:1px solid var(--line)}.exercise:last-child{border:0}.exercise-number{display:grid;place-items:center;align-self:start;background:#e5edf4;color:var(--ink);border-radius:8px;min-height:32px;font-weight:700}.exercise p{font-size:.9rem;color:var(--muted);margin:12px 0 0}.exercise-dose{display:flex;gap:8px 18px;flex-wrap:wrap;color:var(--muted);font-size:.8rem}.exercise-dose b{color:var(--ink)}.exercise-list{margin-bottom:25px}.meal-plan{display:grid;gap:18px}.meal-card{background:white;border-radius:14px;padding:25px}.meal-heading{display:flex;justify-content:space-between;gap:18px;align-items:start}.meal-heading h3{font-size:.82rem;font-weight:600;color:var(--green);margin-bottom:10px}.meal-heading h2{font-size:1.45rem;line-height:1.25;margin-bottom:10px}.meal-meta{font-size:.88rem;color:var(--muted);margin-bottom:15px}.meal-done{background:#f0f6f1}.meal-done .meal-heading button{background:var(--green);color:white}.recipe-details summary{cursor:pointer;font-weight:600;padding:12px 0;color:var(--green)}.recipe-details ul{padding-left:20px;line-height:1.8;font-size:.92rem;margin-top:0}.recipe-detail-grid{display:grid;grid-template-columns:1fr 1.25fr;gap:25px;margin-top:16px}.recipe-detail-grid h3{font-size:.95rem}.recipe-details .steps{white-space:pre-wrap;overflow-wrap:anywhere;font-size:.9rem}.recipe-details .hint{margin-top:14px}.recipe-library{padding:40px 0 10px}.recipe-library>.section-title{margin-bottom:18px}.recipe-library>.section-title .heading-actions{margin:0}.recipe-filter{max-width:300px;font-weight:500}.recipe .recipe-detail-grid{grid-template-columns:1fr;gap:12px}.recipe-excluded{background:#eef0f3}.recipe-excluded .primary{background:#526477}.recipe details ul{font-size:.85rem}.recipe details .hint{font-size:.8rem}.meal-card .heading-actions{margin-top:12px}.meal-card .heading-actions button{font-size:.86rem}fieldset{border:1px solid var(--line);border-radius:10px;margin:0 0 22px;padding:16px}legend{padding:0 8px;font-weight:600}fieldset .check-label{font-size:.9rem;margin:8px 0}.recipe-library .recipe-grid{margin-top:18px}
@media(max-width:600px){.meal-card{padding:20px}.meal-heading h2{font-size:1.2rem}.meal-heading button{font-size:.82rem;flex-shrink:0}.recipe-detail-grid{grid-template-columns:1fr;gap:10px}.recipe-library>.section-title{display:block}.recipe-library>.section-title .heading-actions{margin-top:15px}.section-title{flex-wrap:wrap}.exercise{gap:10px}.exercise-dose{gap:7px 12px}.workout-detail .section-title h2{font-size:1.3rem}.workout-detail .badge{font-size:.7rem}.meal-card .heading-actions{gap:6px}.meal-card .heading-actions button{padding:9px 11px}.meal-card .link-button{font-size:.8rem}.recipe-details ul{font-size:.88rem}.recipe-library{padding-top:35px}.topbar nav{justify-content:start;gap:10px}}

.food-picture{width:150px;max-width:100%;margin-bottom:16px}.food-picture svg{display:block;width:100%;height:auto}.meal-card{position:relative}.meal-card>.food-picture{float:right;margin:0 0 16px 20px}.meal-card .heading-actions{clear:both}.recipe-library>summary,.aside-note>summary{font-size:1.15rem;font-weight:700;cursor:pointer;padding:12px 0}.recipe-library[open]>summary{margin-bottom:20px}@media(max-width:600px){.meal-card>.food-picture{float:none;width:100%;max-width:220px;margin:0 0 18px}.meal-card .heading-actions{flex-wrap:wrap}}

.movement{max-width:430px;margin:18px 0}.movement svg{display:block;width:100%;height:auto;background:#f4f7fa;border-radius:12px}.movement figcaption{font-size:.8rem;color:var(--muted);margin-top:8px}

.signed-in{font-size:.8rem;overflow-wrap:anywhere}.calendar-add{display:inline-block;text-decoration:none;padding:12px 16px;border-radius:8px}.history-row{padding-bottom:18px}footer{flex-wrap:wrap;gap:12px}@media(max-width:600px){.signed-in{width:100%;font-size:.75rem}}
