:root{font-family:'DM Sans',sans-serif;color:#193c34;background:#f4f6f3;font-synthesis:none;--green:#123b32;--lime:#c8f078;--muted:#62756e;--border:#dfe5df}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer;border:1px solid var(--border);background:#fff;color:var(--green);border-radius:8px;padding:11px 15px;font-weight:600;transition:background .16s}button:hover{background:#eaf0e7}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #719c45;outline-offset:3px}header{height:88px;background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 5vw;gap:20px}.brand{font-family:Manrope,sans-serif;font-size:23px;font-weight:800;color:var(--green);text-decoration:none;display:flex;gap:6px;align-items:center}.brand>span:last-child{font-weight:400}.brandmark{background:var(--green);color:var(--lime);width:37px;height:37px;display:grid;place-items:center;border-radius:10px;margin-right:6px}.header-note{font-size:14px;color:var(--muted)}.subtle{font-size:14px}main{max-width:1540px;margin:auto;padding:42px 5vw 20px}.heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:34px}.eyebrow{font-size:12px;letter-spacing:2px;font-weight:700;margin:0 0 12px;color:var(--muted)}h1,h2,strong{font-family:Manrope,sans-serif}h1{font-size:clamp(30px,3.1vw,46px);line-height:1.15;letter-spacing:-1.8px;margin:0;font-weight:800}h1>span{color:#80ac45}.heading-side{text-align:right;font-size:14px;color:var(--muted)}.heading-side>span{border:1px solid var(--border);padding:7px 12px;border-radius:30px;background:#fff}.workspace{display:grid;grid-template-columns:310px minmax(0,1fr);gap:26px;align-items:start}.panel{background:white;border:1px solid var(--border);border-radius:16px}.setup{padding:24px}.section-head{display:flex;align-items:center;gap:12px;margin-bottom:22px}.section-head h2{font-size:18px;margin:0;letter-spacing:-.5px}.step{font-size:12px;border:1px solid var(--border);border-radius:50%;width:28px;height:28px;display:grid;place-items:center;color:var(--muted)}label,legend{display:block;font-weight:500;font-size:14px;margin:19px 0 8px}input:not([type=checkbox]),select{width:100%;min-width:0;border:1px solid var(--border);border-radius:8px;padding:12px 10px;background:#fafbf9;color:var(--green);font-size:14px}input[type=checkbox]{accent-color:var(--green);width:17px;height:17px}.input-action{display:flex;gap:7px}.input-action button{background:var(--green);color:white}.helper{font-size:12px;line-height:1.7;color:var(--muted)}hr{border:0;border-top:1px solid var(--border);margin:26px 0}fieldset{padding:0;border:0;margin:0}legend{padding:0}.weekdays{display:flex;gap:5px}.weekday{margin:0;flex:1;position:relative;cursor:pointer}.weekday input{position:absolute;opacity:0}.weekday span{display:grid;place-items:center;border:1px solid var(--border);height:33px;border-radius:7px;font-size:12px}.weekday input:checked+span{background:var(--green);color:white;border-color:var(--green)}.weekday input:focus-visible+span{outline:3px solid #719c45}.two-fields{display:grid;grid-template-columns:1fr 1fr;gap:10px}.primary{background:var(--green);color:#fff;border-color:var(--green)}.primary:hover{background:#235849}.primary span{float:right;color:var(--lime)}.full{width:100%;margin-top:12px}.stats{display:grid;grid-template-columns:repeat(3,1fr);margin-bottom:22px;gap:16px}.stats>div{border-left:2px solid #d9e4d2;padding-left:18px}.stats span{font-size:12px;color:var(--muted)}.stats strong{display:block;font-size:30px;margin-top:7px;font-weight:800}.stats small{font-family:'DM Sans',sans-serif;font-size:12px;font-weight:400;color:var(--muted)}.calendar{padding:24px;margin-bottom:24px}.calendar-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:24px}.calendar-top h2{font-size:21px;margin:0;letter-spacing:-.8px}.calendar-top .eyebrow{font-size:11px;margin-bottom:8px}.week-nav{display:flex;gap:10px;align-items:center;font-size:12px;white-space:nowrap}.week-nav button{padding:7px 11px}.calendar-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px}.day{display:flex;flex-direction:column;align-items:flex-start;text-align:left;padding:12px 9px;min-height:138px;border-radius:9px;background:#fafbf9;font-weight:400;overflow-wrap:anywhere}.day .day-name{font-size:12px;color:var(--muted)}.day .day-num{font-size:23px;font-weight:700;margin:5px 0 19px}.day .day-kind{font-size:11px;line-height:1.4;min-height:31px}.day .day-distance{font-size:14px;font-weight:700;margin-top:5px}.day.training{background:#edf3e8;border-color:#d9e6cc}.day.selected{background:var(--green);color:white;border-color:var(--green)}.day.selected .day-name{color:#c4d2cb}.day.completed .day-distance:after{content:' ✓'}.calendar-bottom{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--muted);margin-top:18px;gap:10px}.calendar-bottom i{display:inline-block;width:7px;height:7px;background:#98b779;border-radius:50%;margin-right:4px}.rest-legend{margin-left:12px}.text-button{padding:0;background:none;border:0;color:var(--muted);font-size:12px}.route-panel{display:grid;grid-template-columns:1fr 1fr;overflow:hidden;min-height:340px}.route-info{padding:26px}.route-info h2{font-size:25px;letter-spacing:-1px;margin:0 0 14px}.route-info>p:not(.eyebrow){color:var(--muted);font-size:14px;line-height:1.65}.route-buttons{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.route-buttons button{font-size:12px}.checkline{display:flex;align-items:center;gap:7px}.map{min-height:340px;background:#e9efe5;position:relative;isolation:isolate}.map-empty{height:100%;min-height:340px;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:25px;background:radial-gradient(ellipse at center,transparent 35%,#dce7d8 36%,transparent 37%,transparent 49%,#dce7d8 50%,transparent 51%,transparent 66%,#dce7d8 67%,transparent 68%)}.map-empty>span{font-size:64px;color:#6c8f67}.map-empty strong{font-size:18px}.map-empty p{font-size:14px;color:var(--muted);line-height:1.6}.route-metrics{display:flex;gap:16px;margin-top:22px}.route-metrics strong{display:block;font-size:23px}.route-metrics span{font-size:12px;color:var(--muted)}.batch-row{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-top:20px}.batch-row p{font-size:14px;line-height:1.6}.batch-row p span{font-size:12px;color:var(--muted)}.batch-row button{font-size:12px}footer{display:flex;justify-content:space-between;margin-top:40px;border-top:1px solid var(--border);padding-top:20px;font-size:12px;color:var(--muted)}footer b{margin:0 10px}#notice{padding:14px 18px;border-radius:10px;background:#e7efde;border:1px solid #bcccac;margin-bottom:22px;font-size:14px}#notice.error{background:#fff0ea;color:#853c27;border-color:#edc4b4}#address-results button{font-size:12px;display:block;width:100%;text-align:left;margin-top:7px}dialog{max-width:480px;width:calc(100% - 32px);border:1px solid var(--border);border-radius:18px;padding:28px;color:var(--green)}dialog::backdrop{background:#102d2877;backdrop-filter:blur(4px)}dialog p{font-size:14px;line-height:1.6}dialog .section-head{justify-content:space-between}dialog .section-head button{border:0;font-size:24px;padding:0 6px}.leaflet-container{font-family:'DM Sans',sans-serif}
@media(min-width:1450px){.workspace{grid-template-columns:340px minmax(0,1fr)}}@media(max-width:1100px){main{padding:30px 3vw}.workspace{grid-template-columns:280px minmax(0,1fr);gap:18px}.calendar{padding:18px}.route-panel{grid-template-columns:1fr}.map{min-height:300px}.calendar-top{align-items:flex-start;flex-direction:column}.stats strong{font-size:25px}.stats small{display:block}.day{padding:10px 5px}.calendar-bottom{align-items:flex-start;flex-direction:column}}@media(max-width:740px){header{height:auto;min-height:76px;padding:16px 5vw}.header-note{display:none}.subtle{font-size:12px;max-width:160px}main{padding:28px 5vw}.heading-side{display:none}.heading{margin-bottom:25px}.workspace{grid-template-columns:1fr}.setup{padding:22px}.main-column{min-width:0}.stats{margin-top:9px}.calendar-days{gap:6px;grid-template-columns:1fr}.day{display:grid;grid-template-columns:32px 30px 1fr 62px;align-items:center;gap:6px;min-height:56px;padding:10px}.day .day-num{font-size:20px;margin:0}.day .day-kind{font-size:14px;min-height:0}.day .day-distance{font-size:14px;margin:0;text-align:right}.calendar{padding:15px}.route-panel{grid-template-columns:1fr}.batch-row{align-items:stretch;flex-direction:column;gap:0}footer{gap:12px;flex-direction:column}.stats>div{padding-left:10px}.stats strong{font-size:26px}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}

/* GPX Run — restrained training notebook, light and dark palettes */
:root{color-scheme:light;--bg:#f2f3f5;--surface:#fff;--surface-alt:#f7f8fa;--ink:#18212c;--muted:#68737f;--border:#dce1e7;--accent:#345ce6;--accent-text:#fff;--accent-soft:#edf1ff;--map:#e9edf3;--green:var(--ink);--lime:#b7c9ff;font-family:"Segoe UI",Arial,sans-serif;color:var(--ink);background:var(--bg)}
:root[data-theme=dark]{color-scheme:dark;--bg:#11151a;--surface:#191e25;--surface-alt:#20262f;--ink:#edf0f5;--muted:#a4adba;--border:#343c48;--accent:#93a9ff;--accent-text:#101731;--accent-soft:#252e49;--map:#222b36}
body{color:var(--ink);background:var(--bg)}
header{background:var(--surface);height:auto;min-height:82px;padding:16px 5vw}
.brand{font-family:inherit;color:var(--ink);letter-spacing:-1px}.brandmark{border-radius:3px;background:var(--accent);color:var(--accent-text);width:35px;height:35px}
.header-note,.eyebrow,.step,.week-nav,footer{font-family:Consolas,monospace}
.header-note{font-size:12px;letter-spacing:.4px}.header-actions{display:flex;gap:9px;align-items:center}
button{border-radius:4px;background:var(--surface);color:var(--ink);border-color:var(--border)}
button:hover{background:var(--surface-alt);border-color:var(--muted)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline-color:var(--accent)}
.subtle,#theme-toggle{font-size:13px;font-weight:500}#theme-toggle{background:var(--surface-alt)}
main{padding-top:32px}.heading{align-items:flex-end;margin-bottom:30px}
h1,h2,strong{font-family:inherit}h1{font-size:clamp(32px,3.2vw,46px);letter-spacing:-2px;line-height:1.03;font-weight:750}
h1>span{color:var(--muted);font-weight:450}.eyebrow{font-size:12px;letter-spacing:1.2px;font-weight:400}
.heading-side>span{background:none;border:0;border-left:2px solid var(--accent);border-radius:0;padding:3px 10px;font-family:Consolas,monospace}
.workspace{gap:28px}.panel{background:var(--surface);border-radius:6px;border-color:var(--border)}
.section-head h2{font-weight:600}.step{color:var(--accent);border:0;border-bottom:2px solid var(--accent);border-radius:0;width:22px;height:25px}
input:not([type=checkbox]),select{background:var(--surface-alt);color:var(--ink);border-color:var(--border);border-radius:4px}
.input-action button{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}
input[type=checkbox]{accent-color:var(--accent)}.weekday span{border-radius:3px;font-size:13px}
.weekday input:checked+span{background:var(--ink);color:var(--surface);border-color:var(--ink)}
.primary{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}
.primary:hover{background:var(--accent);border-color:var(--ink);filter:brightness(1.06)}.primary span{color:inherit}
.stats{gap:24px;padding:2px 0 21px;border-bottom:1px solid var(--border)}
.stats>div{padding:0;border:0}.stats>div+div{border-left:1px solid var(--border);padding-left:24px}
.stats strong{font-size:34px;font-weight:500;letter-spacing:-1px;font-variant-numeric:tabular-nums}.stats small{letter-spacing:0}
.day{border:1px solid transparent;border-top:2px solid var(--border);border-radius:2px;background:var(--surface-alt);min-height:160px}
.day .day-name{font:12px Consolas,monospace;text-transform:uppercase}
.day .day-num{font-weight:500;font-size:24px}.day .day-kind{font-size:12px;min-height:34px}
.day.training{background:var(--accent-soft);border-color:transparent;border-top-color:var(--accent)}
.day.selected{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}
.day.selected .day-name{color:inherit;opacity:.8}.calendar-bottom i{background:var(--accent);border-radius:0}
.text-button{color:var(--muted);border:0;border-bottom:1px solid var(--border);border-radius:0;padding-bottom:3px}
.route-info h2{font-size:26px;font-weight:600}.route-buttons button{font-size:13px}
.map{background:var(--map)}.map-empty{background:repeating-radial-gradient(ellipse at 40% 50%,transparent 0,transparent 48px,var(--border) 49px,transparent 50px)}
.map-empty>span{color:var(--accent)}.map-empty strong{font-weight:550}
.route-metrics strong{font-size:26px;font-weight:550}.batch-row button{font-size:13px;background:transparent}
#notice{border:0;border-left:3px solid var(--accent);background:var(--accent-soft);color:var(--ink);border-radius:0}
#notice.error{background:#fff0ea;color:#963d29;border-color:#963d29}
:root[data-theme=dark] #notice.error{background:#3d2725;color:#ffbcaa;border-color:#ffbcaa}
dialog{background:var(--surface);color:var(--ink);border-color:var(--border);border-radius:7px}
.login-origin{font-size:12px;overflow-wrap:anywhere;color:var(--muted)}
@media(max-width:1100px){.header-note{display:none}.stats{gap:14px}.stats>div+div{padding-left:14px}}
@media(max-width:740px){
 header{flex-wrap:wrap;gap:12px}.brand{font-size:21px}.brandmark{width:30px;height:30px}.header-actions{gap:6px}
 .subtle,#theme-toggle{font-size:12px;padding:9px 10px}.subtle{max-width:145px}
 h1{font-size:38px}.day{min-height:57px;border-top:0;border-left:2px solid var(--border)}
 .day.training{border-left-color:var(--accent)}.day .day-kind{font-size:14px;min-height:0}
 .day .day-num{font-size:20px}.stats strong{font-size:28px}.stats>div+div{padding-left:12px}
}
