:root{--ink:#172331;--muted:#788087;--paper:#f8f4e9;--card:#fffdf8;--line:#e9e5db;--coral:#ff775f;--coral-dark:#e65e48;--mint:#83c9c0;--mint-dark:#3d9f94;--yellow:#f4d16e;--shadow:0 12px 34px rgba(31,37,43,.045)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;line-height:1.45}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:wait;opacity:.65}.grain{position:fixed;inset:0;pointer-events:none;opacity:.25;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.07'/%3E%3C/svg%3E");z-index:20}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.eyebrow{font-size:10px;font-weight:850;letter-spacing:.19em;color:var(--coral-dark)}.eyebrow.light{color:var(--yellow)}h1,h2,p{margin-top:0}h1,h2{letter-spacing:-.045em}h1{font-family:Georgia,serif;font-size:clamp(36px,4vw,58px);line-height:1.03}h1 em{font-weight:400;color:var(--coral);font-style:italic}h2{font-family:Georgia,serif;font-size:28px;font-weight:700;line-height:1.15;margin:7px 0 0}.muted{color:var(--muted)}.button{border:0;border-radius:10px;padding:15px 20px;font-size:14px;font-weight:800;display:flex;align-items:center;justify-content:center;gap:10px;transition:transform .2s,background .2s}.button:hover{transform:translateY(-2px)}.button:focus-visible,button:focus-visible,input:focus-visible{outline:3px solid #f4d16e;outline-offset:3px}.button-dark{background:var(--ink);color:white}.button-dark:hover{background:#2b3d4b}.button-coral{background:var(--coral);color:#18232b}.button-coral:hover{background:#ff8e79}.full{width:100%}.field-label{display:block;font-size:12px;font-weight:800;margin:21px 0 8px}.form-error{min-height:19px;color:#b43629;font-size:12px;margin:6px 0 5px}.login-shell{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(400px,.95fr)}.login-art{background:#172331;color:#fff;padding:38px clamp(35px,6vw,100px) 30px;display:flex;flex-direction:column;min-height:100vh;position:relative;overflow:hidden}.login-art:before,.login-art:after{content:"";position:absolute;border:1px solid rgba(255,255,255,.1);border-radius:50%;width:580px;height:580px;right:-290px;top:12%}.login-art:after{width:410px;height:410px;right:-200px;top:24%}.login-art-top{display:flex;align-items:center;justify-content:space-between;z-index:1}.brand-mark{display:inline-grid;place-items:center;width:42px;height:42px;border-radius:12px;background:var(--coral);color:var(--ink);font-family:Georgia,serif;font-size:32px;font-weight:900;line-height:1;letter-spacing:-.1em;padding-right:5px}.brand-mark span{color:white}.edition{font-size:10px;letter-spacing:.16em;font-weight:700;color:#b0b9bd}.login-art-content{margin:auto 0;max-width:600px;z-index:1}.login-art h1{font-size:clamp(54px,5.2vw,86px);letter-spacing:-.065em;margin:18px 0 23px}.login-art h1 em{color:var(--yellow)}.login-art p{color:#b4bec1;max-width:390px;font-size:16px;line-height:1.7}.login-race{margin-top:68px;position:relative;max-width:570px;padding-right:28px}.decor-lane{height:66px;border-top:1px dashed rgba(255,255,255,.25);display:flex;align-items:center;position:relative}.decor-lane:nth-child(2){border-bottom:1px dashed rgba(255,255,255,.25)}.decor-name{font-size:10px;font-weight:800;letter-spacing:.14em;color:#82919a}.decor-runner{position:absolute;top:12px;width:39px;height:39px;border-radius:12px;display:grid;place-items:center;color:var(--ink);font-weight:900;font-size:14px;box-shadow:0 7px 20px rgba(0,0,0,.25);transform:rotate(-8deg)}.runner-maxime{left:63%;background:var(--coral)}.runner-delphine{left:82%;background:var(--mint)}.decor-finish{position:absolute;right:-10px;top:-29px;bottom:0;writing-mode:vertical-rl;font-size:9px;font-weight:900;letter-spacing:.13em;color:var(--yellow);border-left:3px dashed var(--yellow);padding:5px 0 0 5px}.art-footer{color:#8e9aa1;font-size:12px;z-index:1}.login-panel{display:flex;align-items:center;justify-content:center;padding:50px clamp(25px,6vw,100px)}.login-card{width:min(100%,430px)}.mobile-brand{display:none}.login-card h2{font-size:40px;margin:13px 0}.login-help{font-size:14px;margin:0 0 30px}.player-options{border:0;padding:0;margin:0;display:grid;gap:10px}.player-option{border:1.5px solid var(--line);border-radius:13px;background:#fffdfa;padding:12px;display:flex;align-items:center;gap:13px;cursor:pointer;transition:border-color .2s,transform .2s,box-shadow .2s}.player-option:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.player-option:has(input:checked){border-color:var(--ink);box-shadow:0 0 0 2px var(--ink)}.player-option input{position:absolute;opacity:0}.player-option input:focus-visible+.player-avatar{outline:3px solid var(--yellow)}.player-avatar,.header-avatar,.track-avatar{display:grid;place-items:center;flex:none;font-weight:900}.player-avatar{width:47px;height:47px;border-radius:11px;background:#ffe4dc;color:#a44a3b}.player-option.delphine .player-avatar{background:#d9eeea;color:#347a73}.player-option strong,.player-option small{display:block}.player-option strong{font-size:14px}.player-option small{font-size:11px;color:var(--muted);margin-top:2px}.selection-dot{margin-left:auto;width:17px;height:17px;border:1.5px solid #c8ccc9;border-radius:50%}.player-option:has(input:checked) .selection-dot{border:5px solid var(--ink)}.login-card input[type=password],.input-card input{width:100%;height:50px;background:#fffdfa;border:1.5px solid #dddcd4;border-radius:9px;padding:0 14px;color:var(--ink);outline:none}.login-card input[type=password]:focus,.input-card input:focus{border-color:var(--ink)}.login-footnote{text-align:center;color:#a0a5a4;font-size:11px;margin-top:30px}
.site-shell{min-height:100vh}.topbar{height:80px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 max(30px,calc((100vw - 1320px)/2));background:rgba(255,253,248,.72)}.brand{display:flex;align-items:center;gap:12px;font-family:Georgia,serif;font-size:23px;font-weight:800;letter-spacing:-.06em;line-height:1}.brand small{display:block;font-family:Inter,ui-sans-serif,sans-serif;font-size:9px;letter-spacing:.16em;color:var(--muted);margin-top:4px}.brand-mark{width:36px;height:36px;border-radius:10px;font-size:28px}.topbar-right{display:flex;align-items:center;gap:13px;font-size:13px;font-weight:750}.today-pill{color:#5e6c70;font-size:12px;font-weight:650;background:#fff;border:1px solid var(--line);border-radius:30px;padding:9px 13px;display:flex;align-items:center;gap:8px}.live-dot{width:7px;height:7px;background:#6db79c;border-radius:50%;box-shadow:0 0 0 4px #e4f2eb}.header-divider{height:25px;width:1px;background:#deddd6;margin:0 4px}.header-avatar{width:32px;height:32px;border-radius:9px;background:#ffe0d8;color:#b54e3e}.header-avatar.delphine{background:#d3ece7;color:#3f8981}.logout{background:transparent;border:0;color:#7c898c;font-size:19px;transform:rotate(45deg);margin-left:7px}.logout:hover{color:var(--coral-dark)}.dashboard{max-width:1320px;margin:auto;padding:31px 30px 20px}.hero{background:var(--ink);color:white;border-radius:17px;padding:36px 42px;display:grid;grid-template-columns:1.3fr .72fr;gap:35px;position:relative;overflow:hidden;min-height:227px}.hero:before{content:"";position:absolute;width:440px;height:440px;border-radius:50%;border:1px solid rgba(255,255,255,.08);right:10%;top:-280px}.hero-left,.hero-stats{z-index:1}.hero h1{font-size:clamp(34px,3.1vw,52px);margin:10px 0 8px}.hero-left>p{color:#a8b5b8;font-size:14px;margin:0}.hero-result{display:inline-flex;align-items:center;gap:10px;background:#263747;border:1px solid #3a4b58;padding:9px 15px 9px 9px;border-radius:8px;font-size:12px;font-weight:800;margin-top:24px}.result-icon{background:var(--yellow);display:grid;place-items:center;width:25px;height:25px;border-radius:6px}.hero-stats{border-left:1px solid #43505b;padding-left:38px;align-self:center}.hero-stats span,.hero-stats strong,.hero-stats small{display:block}.hero-stats span{font-size:9px;letter-spacing:.16em;color:#abb9bc;font-weight:800}.hero-stats strong{font-family:Georgia,serif;font-size:43px;line-height:1.15;letter-spacing:-.06em;margin:4px 0}.hero-stats small{font-size:11px;color:#9faeb2}.hero-mini{border-top:1px solid #40505c;margin-top:16px;padding-top:15px}.hero-mini strong{font-family:Inter,ui-sans-serif,sans-serif;font-size:15px;letter-spacing:-.025em;margin:5px 0}.hero-ornament{position:absolute;font-size:220px;right:22%;bottom:-95px;color:#ffffff05;line-height:1}.main-grid{display:grid;grid-template-columns:minmax(0,1.54fr) minmax(310px,.75fr);gap:18px;margin-top:18px}.main-column,.side-column{display:flex;flex-direction:column;gap:18px}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:27px 30px}.section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.distance-note,.section-hint{font-size:11px;color:#929a9c;margin-top:10px}.race-card{padding-bottom:18px}.race-scale{display:flex;justify-content:space-between;margin:28px 72px 12px 148px;color:#919c9e;font-size:9px;font-weight:850;letter-spacing:.1em}.race-scale span:last-child{color:var(--coral-dark)}.track{background:#f7f5ee;border-radius:10px;padding:7px 15px}.track-lane{display:grid;grid-template-columns:128px minmax(0,1fr) 65px;gap:15px;align-items:center;min-height:91px}.track-lane+.track-lane{border-top:1px dashed #d8d9d3}.track-name{display:flex;align-items:center;gap:9px}.track-avatar{width:34px;height:34px;border-radius:9px;background:#ffddd3;color:#a65043}.delphine .track-avatar{background:#d0e9e4;color:#317c74}.track-name strong,.track-name small{display:block}.track-name strong{font-size:12px}.track-name small{font-size:10px;color:var(--muted);white-space:nowrap}.track-route{height:50px;position:relative;display:flex;align-items:center;margin-right:13px}.route-dashes{position:absolute;left:0;right:0;height:2px;background:repeating-linear-gradient(to right,#d9dcd6 0 10px,transparent 10px 18px)}.track-progress{position:absolute;left:0;height:3px;background:var(--coral);max-width:100%;transition:width .6s}.delphine .track-progress{background:var(--mint-dark)}.track-runner{position:absolute;top:4px;transform:translateX(-50%) rotate(-8deg);display:grid;place-items:center;background:var(--coral);border:3px solid var(--card);border-radius:12px;width:40px;height:40px;font-weight:900;box-shadow:0 4px 10px #0002;max-width:100%;transition:left .6s}.delphine .track-runner{background:var(--mint)}.finish-line{position:absolute;right:-17px;font-size:32px;top:2px;color:#bdc2bb}.track-km{text-align:right;font-weight:850;font-size:14px;white-space:nowrap}.track-km small{font-size:10px;color:var(--muted)}.race-bottom{display:flex;justify-content:space-between;font-size:11px;font-weight:750;color:#6f797c;padding:17px 0 0}.race-bottom span:first-child{color:var(--coral-dark)}.milestones-card{padding-bottom:10px}.milestone-list{display:grid;grid-template-columns:1fr 1fr;column-gap:25px;margin-top:20px}.milestone{display:flex;align-items:center;gap:11px;border-top:1px solid var(--line);padding:13px 0;min-width:0}.milestone-icon{width:34px;height:34px;border-radius:9px;background:#f5f1e6;display:grid;place-items:center;flex:none;font-size:16px;filter:grayscale(1);opacity:.7}.milestone.reached .milestone-icon{background:#fff1d4;filter:none;opacity:1}.milestone-copy{min-width:0}.milestone-copy strong,.milestone-copy small{display:block}.milestone-copy strong{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.milestone-copy small{font-size:10px;color:var(--muted);margin-top:2px}.milestone-status{margin-left:auto;color:#a5abad;font-size:9px;white-space:nowrap;font-weight:750}.milestone.reached .milestone-status{color:var(--mint-dark)}.input-card{background:#fffcf4}.input-card h2{font-size:27px}.input-card h2 span{font-family:initial;font-size:21px}.input-card>p{font-size:12px;color:var(--muted);margin:9px 0 15px}.input-card .field-label{margin:14px 0 7px}.step-input-wrap{position:relative}.step-input-wrap input{padding-right:55px;font-size:18px;font-weight:800}.step-input-wrap span{position:absolute;right:15px;top:17px;color:#9ca2a1;font-size:10px;font-weight:900;letter-spacing:.1em}.form-note{border-top:1px solid var(--line);margin-top:21px;padding-top:13px;text-align:center;color:#9da4a5;font-size:10px}.commentary-card h2{font-size:26px}.mic{font-size:20px}.comment-list{margin-top:19px}.comment{display:flex;gap:11px;padding:13px 0;border-top:1px solid var(--line)}.comment.featured{background:#fff5dc;padding:12px;margin:0 -12px;border-radius:9px;border-top:0}.comment-icon{font-size:16px;line-height:1.3}.comment strong,.comment small{display:block}.comment strong{font-size:11px;line-height:1.4}.comment small{font-size:10px;color:#8d9798;margin-top:4px}.empty-comment{padding:10px 0;color:var(--muted);font-size:12px}.history-card{margin-top:18px}.history-scroll{overflow:auto;margin-top:16px}table{border-collapse:collapse;width:100%;text-align:left;min-width:530px}th{font-size:10px;letter-spacing:.12em;color:#8e9798;padding:14px 12px;border-bottom:1px solid var(--line)}td{font-size:12px;font-weight:650;padding:14px 12px;border-bottom:1px solid #f0ede6}tr:last-child td{border:0}.table-dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:5px}.table-dot.coral{background:var(--coral)}.table-dot.mint{background:var(--mint)}.no-entry{color:#c2c6c4}.edit-day{background:transparent;border:0;color:var(--coral-dark);font-weight:800;font-size:11px;white-space:nowrap}.edit-day:hover{text-decoration:underline}.empty-history{text-align:center;color:var(--muted);padding:30px}footer{display:flex;justify-content:space-between;color:#a0a6a5;font-size:10px;padding:25px 2px 5px}.toast{position:fixed;z-index:30;bottom:25px;left:50%;transform:translate(-50%,20px);background:var(--ink);color:#fff;border-radius:10px;padding:13px 19px;box-shadow:0 10px 30px #0003;font-size:13px;font-weight:700;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s}.toast.visible{opacity:1;transform:translate(-50%,0)}
@media(max-width:1000px){.main-grid{grid-template-columns:1fr 330px}.milestone-list{grid-template-columns:1fr}.hero{grid-template-columns:1fr .75fr}.hero-stats{padding-left:25px}.hero-stats strong{font-size:34px}.track-lane{grid-template-columns:105px minmax(0,1fr) 55px;gap:8px}.race-scale{margin-left:120px;margin-right:60px}.card{padding:24px}.track-name small{font-size:9px}}
@media(max-width:900px){.login-shell{grid-template-columns:1fr}.login-art{min-height:345px;padding:24px 25px}.login-art-top .edition,.login-art p,.art-footer{display:none}.login-art-content{margin:38px 0 0}.login-art h1{font-size:53px;margin:11px 0}.login-race{margin:27px 0 0}.decor-lane{height:43px}.decor-runner{top:5px;width:32px;height:32px}.login-panel{padding:38px 25px 60px}.topbar{height:65px;padding:0 18px}.brand{font-size:19px}.brand small{font-size:7px}.today-pill,.header-name,.header-divider{display:none}.dashboard{padding:17px 14px}.hero{grid-template-columns:1fr;padding:25px;gap:18px}.hero h1{font-size:41px}.hero-stats{border-left:0;border-top:1px solid #43505b;padding:15px 0 0;display:grid;grid-template-columns:1fr 1fr;gap:15px}.hero-stats strong{font-size:32px}.hero-mini{border:0;margin:0;padding:0}.hero-mini strong{font-size:12px}.main-grid{grid-template-columns:1fr}.side-column{display:contents}.input-card{order:-1}.race-card{order:-2}.main-column,.side-column{display:contents}.main-grid{display:flex;flex-direction:column}.milestones-card{order:1}.commentary-card{order:2}.history-card{margin-top:18px}.milestone-list{grid-template-columns:1fr 1fr}.card{padding:21px}.race-scale{margin-left:120px;margin-right:60px}.track{padding:5px 9px}.track-lane{grid-template-columns:108px minmax(0,1fr) 50px;gap:5px}.track-avatar{width:29px;height:29px}.track-route{margin-right:10px}.track-runner{width:33px;height:33px;top:8px}.track-km{font-size:12px}}
@media(max-width:460px){.hero-stats{display:block}.hero-mini{border-top:1px solid #40505c;margin-top:14px;padding-top:12px}.milestone-list{grid-template-columns:1fr}.section-hint,.distance-note{display:none}.race-scale{margin-left:0;margin-right:30px;margin-top:24px}.track-lane{grid-template-columns:80px minmax(0,1fr) 42px;min-height:76px}.track-name{gap:4px}.track-name strong{font-size:10px}.track-name small{font-size:8px}.track-avatar{width:24px;height:24px;border-radius:6px;font-size:10px}.track-km{font-size:10px}.track-km small{font-size:8px}.track-route{margin-right:7px}.finish-line{right:-12px;font-size:23px;top:9px}.race-bottom{font-size:10px}.login-art h1{font-size:45px}footer{display:block;text-align:center}footer span{display:block;margin:5px 0}}
.trophy-card{background:#fffaf0}.trophy-card h2{font-size:25px}.trophy-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin-top:20px}.trophy{background:#fffdf8;border:1px solid #eee8da;border-radius:10px;padding:11px 8px;text-align:center;min-width:0}.trophy span,.trophy strong,.trophy small{display:block}.trophy span{font-size:17px}.trophy strong{font-family:Georgia,serif;font-size:23px;letter-spacing:-.04em;margin:4px 0}.trophy small{font-size:9px;line-height:1.2;color:#899192}.trophy-card>p{color:#9aa19e;font-size:10px;margin:12px 0 0;text-align:center}
.date-field{position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:50px;overflow:hidden;background:#fffdfa;border:1.5px solid #dddcd4;border-radius:9px;color:var(--ink);font-size:16px;font-weight:500}
.date-field:focus-within{border-color:var(--ink);outline:3px solid var(--yellow);outline-offset:3px}
.input-card .date-field input[type="date"]{position:absolute;inset:0;display:block;width:100%;height:100%;min-width:0;max-width:100%;margin:0;padding:0;border:0;opacity:0;cursor:pointer}
