:root{--ink:#243b32;--green:#265f4b;--bg:#f2f1eb;--line:#dce2d9;--muted:#68786e}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.7 system-ui,sans-serif}header,main,footer{max-width:1180px;margin:auto;padding:24px}header{display:flex;align-items:center;gap:20px;border-bottom:1px solid var(--line)}header span{font-size:11px;letter-spacing:.15em;color:var(--muted)}header button{margin-left:auto}h1{font-size:clamp(32px,4.5vw,54px);line-height:1.25;letter-spacing:-.04em;margin:15px 0}h2{font-size:21px;margin:0 0 16px}h3{margin:0;font-size:20px}p{margin:10px 0}.hero{display:grid;grid-template-columns:1fr 340px;gap:30px;align-items:center;padding:20px 0 32px}.eyebrow{font-size:12px;letter-spacing:.09em;font-weight:700;color:var(--green)}.goalbox{border-radius:20px;background:var(--green);color:white;padding:24px}.goalbox .eyebrow{color:#cedcd0}#goalTitle{font-size:35px;font-weight:800}#goalStatus{font-size:13px;min-height:28px}.goalbox button{background:#f0d68b;color:#233d30;margin-top:12px}.grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:22px}.panel{background:#fff;border:1px solid var(--line);border-radius:20px;padding:26px}.row{display:flex;align-items:center;justify-content:space-between;gap:12px}.row h2{margin:0}.chip{font-size:12px;background:#eaf1e8;color:var(--green);padding:5px 12px;border-radius:20px;white-space:nowrap}.monthnav{display:flex;align-items:center;gap:12px;margin:24px 0 14px}.monthnav button{padding:5px 12px}.monthnav h3{margin-right:auto}.weekdays,.calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.weekdays{font-size:12px;color:var(--muted);text-align:center;margin-bottom:8px}.day{min-height:74px;border:1px solid var(--line);background:#fafbf8;color:var(--ink);padding:7px 2px;border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:space-between;font-weight:600}.day small{font-size:10px}.day.recorded{background:var(--green);color:white}.day.today{outline:2px solid #bd9d48;outline-offset:1px}.day.candidate{border:2px dashed var(--green);background:#edf5e9}.day:disabled{opacity:.6;cursor:default}.legend{display:flex;gap:15px;flex-wrap:wrap;font-size:12px;margin:15px 0;color:var(--muted)}button,input,select{font:inherit}button{cursor:pointer;border:0;border-radius:9px;background:var(--green);color:white;padding:10px 16px;font-weight:650}button:hover{filter:brightness(.94)}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #d3b15d;outline-offset:2px}.quiet{background:#edf0e9;color:var(--green);font-size:13px}.danger{color:#9a4435}label{display:block;font-size:13px;font-weight:600;margin:10px 0}input,select{width:100%;border:1px solid #bdcbbf;border-radius:8px;padding:10px;background:white;color:var(--ink)}.help{padding-left:20px;font-size:13px;color:var(--muted);margin:16px 0}.help li{padding:4px 0}.small{font-size:12px;color:var(--muted)}.notice{background:#fbf2d8;padding:14px;border-radius:10px}.next-card{background:#eef4eb;padding:22px;border-radius:14px;margin:18px 0}.next-card strong{display:block;font-size:30px;line-height:1.4;margin:12px 0}.next-card h3{font-size:23px}.datebig{font-weight:700;color:var(--green)}.history{margin:24px 0}.history-row{display:grid;grid-template-columns:100px 1fr auto;gap:15px;align-items:center;padding:16px 0;border-bottom:1px solid var(--line);font-size:13px}.medal{display:inline-block;padding:6px 12px;background:#fbf1cf;border-radius:8px;margin:10px 8px 10px 0;font-size:13px}details{margin:24px 0}summary{cursor:pointer;font-weight:700}footer{font-size:12px;color:var(--muted)}a{color:var(--green)}dialog{border:0;border-radius:20px;width:min(620px,94vw);max-height:90dvh;overflow:auto;padding:25px;color:var(--ink)}dialog::backdrop{background:#14271f88}.fields{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}.set-row{display:grid;grid-template-columns:45px 1fr 1fr 45px;gap:10px;align-items:center}.set-row label{margin:4px 0}.set-row button{padding:6px}.check{display:flex;align-items:flex-start;gap:10px}.check input{width:20px;margin-top:5px}.error{color:#a43d32}dialog form>button{margin-top:14px;margin-right:8px}#status:empty{display:none}#status{padding:10px;background:#e8f0e3;border-radius:8px}@media(max-width:800px){.hero{grid-template-columns:1fr}.grid{grid-template-columns:1fr}header span{display:none}header,main,footer{padding:17px}.panel{padding:20px}.goalbox{padding:20px}.history-row{grid-template-columns:85px 1fr;gap:8px}.history-row button{grid-column:2}.day{min-height:66px}.row{flex-wrap:wrap}}@media(max-width:380px){.calendar{gap:3px}.day small{font-size:9px}.panel{padding:14px}.set-row{grid-template-columns:30px 1fr 1fr 32px;gap:5px}.monthnav{gap:6px}.fields{gap:10px}}@media(prefers-reduced-motion:no-preference){button{transition:background .15s}}@media print{header,button,dialog,.legend{display:none}.grid{display:block}.panel{break-inside:avoid}}

.rhythm{margin:20px 0 18px;border-bottom:1px solid var(--line);padding-bottom:18px}.field-title{display:block;font-size:13px;font-weight:700;margin-bottom:9px}.frequency-choices{display:flex;gap:6px;background:#f1f3ee;padding:5px;border-radius:12px}.frequency-choices button{flex:1;background:transparent;color:var(--muted);padding:9px 5px}.frequency-choices button[aria-pressed="true"]{background:var(--green);color:white;box-shadow:0 2px 5px #173e3214}.rhythm-plan{display:grid;grid-template-columns:repeat(auto-fit,minmax(90px,1fr));gap:7px}.rhythm-step{border:1px solid var(--line);border-radius:10px;padding:10px 9px;display:flex;flex-direction:column;gap:4px;font-size:11px;line-height:1.6;min-width:0}.rhythm-step>b{color:var(--green);font-size:17px}.rhythm-step>span{min-height:35px}.rhythm-step strong{font-size:12px}.rhythm-step small{font-size:10px;color:var(--muted)}.rhythm-step.is-next{background:#f1f6ed;border-color:#9db79f}.datebig{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:23px}.pace-label{font-size:12px;border:1px solid #bdcdbb;border-radius:20px;padding:2px 10px}.upcoming{margin-top:23px;border-top:1px solid var(--line);padding-top:14px}.upcoming h4{font-size:13px;margin:0 0 8px}.upcoming>div{display:grid;grid-template-columns:105px 1fr;gap:10px;font-size:12px;padding:7px 0}.upcoming time{font-weight:700}.upcoming b{color:var(--green)}.day.candidate:disabled{opacity:1}.next-card strong{font-variant-numeric:tabular-nums}.rhythm-plan[hidden]{display:none}@media(max-width:380px){.rhythm-plan{gap:4px;grid-template-columns:repeat(auto-fit,minmax(78px,1fr))}.rhythm-step{padding:8px 6px}.rhythm-step strong{font-size:11px}.rhythm-step small{font-size:9px}}

.set-row{grid-template-columns:24px minmax(0,1fr) minmax(0,1fr) minmax(0,1.2fr) 28px;gap:8px}.set-row input,.set-row select{min-width:0;padding:10px 6px}.set-row>span{font-size:13px}.set-row label{font-size:12px}#legacyRir{margin:10px 0}#legacyRir summary{font-size:12px}#legacyRir[hidden]{display:none}@media(max-width:380px){.set-row{grid-template-columns:18px minmax(0,1fr) minmax(0,1fr) minmax(0,1.2fr) 24px;gap:5px}.set-row select{font-size:12px;padding:11px 2px}}

.fields{grid-template-columns:repeat(2,minmax(0,1fr))}.fields>label{min-width:0}.fields input,.fields select{min-width:0}

@media(max-width:480px){#recordForm .fields{grid-template-columns:minmax(0,1fr)}}
