:root{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#16314d;background:#f5f7fa;font-synthesis:none;font-smooth:always}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer}a{color:inherit}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #59a2ee;outline-offset:3px}[hidden]{display:none!important}.wrap{width:min(1080px,calc(100% - 40px));margin-inline:auto}.skip-link{position:absolute;left:-9999px;top:0;padding:12px;background:white;z-index:100}.skip-link:focus{left:12px}.topbar{background:#fff;border-bottom:1px solid #e6ebf0}.header-inner{min-height:72px;display:flex;align-items:center;justify-content:space-between;gap:20px}.brand{text-decoration:none;font-size:24px;font-weight:800;letter-spacing:-1.6px;color:#18334e;display:flex;align-items:center;gap:9px}.brand-logo{display:inline-grid;place-items:center;width:31px;height:31px;border-radius:9px;background:#fcd34d;font-size:25px;font-weight:800;color:#16314d;line-height:1}.brand-accent{color:#1e76c9}.brand-dot{color:#e4aa2c}.header-note{font-size:12px;font-weight:650;letter-spacing:.02em;color:#7a8999}.hero{background:linear-gradient(112deg,#0a2645 0%,#153d63 80%,#1b4c6e);color:white;overflow:hidden}.hero-inner{position:relative;padding:50px 0 82px}.hero h1{font-size:clamp(39px,6vw,66px);line-height:1.075;letter-spacing:-2.5px;margin:16px 0 16px;font-weight:800}.hero h1 em{font-style:normal;color:#f8cd64}.hero p{font-size:16px;color:#c4d3df;max-width:490px;line-height:1.6;margin:0}.eyebrow{display:inline-flex;align-items:center;gap:9px;letter-spacing:.08em;color:#badbe6;font-size:11px;font-weight:700;text-transform:uppercase}.indicator{width:7px;height:7px;border-radius:50%;background:#57dab6;box-shadow:0 0 0 4px rgba(87,218,182,.12)}.hero-tracks{position:absolute;right:4%;bottom:0;width:290px;height:100%;transform:skew(-31deg);pointer-events:none;opacity:.13}.hero-tracks span{position:absolute;top:-30px;height:160%;width:2px;background:#e8f7ff}.hero-tracks span:nth-child(1){right:30px}.hero-tracks span:nth-child(2){right:90px}.hero-tracks span:nth-child(3){right:150px}.main-content{position:relative;margin-top:-43px;padding-bottom:32px}.panel{background:white;border:1px solid #e9edf2;border-radius:18px;box-shadow:0 9px 30px rgba(16,43,68,.055)}.station-panel{padding:26px 30px 22px;position:relative;z-index:5}.station-top,.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:14px}.overline{font-size:10px;color:#70869b;letter-spacing:.14em;font-weight:800;margin:0 0 8px}.station-top h2,.panel-heading h2{font-size:23px;letter-spacing:-.6px;margin:0}.favorite-button{display:inline-flex;align-items:center;gap:7px;border-radius:10px;padding:10px 13px;background:#f7f9fc;border:1px solid #e4eaf0;color:#51677e;font-size:13px;font-weight:650}.favorite-button>span:first-child{font-size:19px;color:#a0aaba}.favorite-button.is-favorite{color:#8b6310;background:#fff8e6;border-color:#f9df98}.favorite-button.is-favorite>span:first-child{color:#e5a62c}.station-picker{margin-top:21px;position:relative}.station-picker label{display:block;font-size:12px;font-weight:700;color:#587086;margin-bottom:8px}.station-input-wrap{position:relative}.station-input-wrap input{width:100%;height:53px;border:1px solid #dbe5ef;border-radius:11px;padding:0 42px;color:#17334d;background:#f9fbfe;font-size:15px;font-weight:550;outline:none}.station-input-wrap input:focus{border-color:#2a81c8;box-shadow:0 0 0 3px rgba(42,129,200,.12);background:white}.search-symbol{position:absolute;left:15px;top:8px;font-size:26px;color:#7792ad}.input-hint{position:absolute;right:17px;top:15px;font-size:16px;color:#71859b;pointer-events:none}.station-results{position:absolute;z-index:15;left:0;right:0;top:100%;background:#fff;box-shadow:0 14px 28px rgba(10,37,61,.15);border:1px solid #dae4ed;border-radius:10px;max-height:270px;overflow:auto;margin-top:4px}.station-option{display:flex;justify-content:space-between;gap:8px;width:100%;background:#fff;border:0;border-bottom:1px solid #eff2f5;text-align:left;padding:11px 14px;font-size:14px;color:#143451}.station-option:hover,.station-option:focus{background:#eaf4fd}.station-option small{color:#8a9aaa}.no-station{padding:14px;font-size:13px;color:#6e7c89}.selected-line{display:flex;align-items:center;gap:8px;margin-top:14px;color:#607a91;font-size:12px}.selected-line strong{color:#143b5d;font-size:13px}.small-circle{height:7px;width:7px;border-radius:50%;background:#40c4a0}.selected-hint{margin-left:auto}.schedules{margin-top:20px;padding:28px 30px 24px}.refresh-button{background:transparent;border:1px solid #dae5ef;border-radius:9px;color:#386990;font-weight:700;font-size:12px;padding:9px 12px}.refresh-button span{font-size:17px;margin-right:5px}.refresh-button:hover{background:#edf6fe}.tabs{margin-top:22px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-bottom:1px solid #e6ebf0;gap:5px}.tab{border:0;border-bottom:3px solid transparent;background:transparent;padding:13px 6px 14px;color:#77899a;font-size:14px;font-weight:700;display:flex;align-items:center;gap:8px;justify-content:center;white-space:nowrap}.tab.active{color:#126db2;border-bottom-color:#1d87cc}.tab:hover{color:#126db2}.date-controls{padding:17px 15px;margin-top:16px;border-radius:11px;background:#f5f9fc}.date-controls label{display:block;font-size:12px;font-weight:750;margin-bottom:8px}.date-control-row{display:flex;gap:10px}.date-control-row input,.date-control-row select{padding:10px;border:1px solid #dbe4ec;border-radius:8px;background:#fff;color:#123e61;min-width:0}.date-control-row input{flex:1}.date-controls small{display:block;margin-top:9px;color:#697f90}.data-summary{padding:18px 0 13px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.status-pill{display:inline-flex;align-items:center;border-radius:999px;padding:7px 12px;background:#e8f6f0;color:#17694d;font-size:11px;font-weight:800;letter-spacing:.02em}.status-pill.planned{background:#eff3f9;color:#5b7290}.status-pill.warning{background:#fff2dd;color:#926119}.data-updated{font-size:11px;color:#8092a3}.feedback{font-size:13px;color:#728297;min-height:16px}.feedback:not(:empty){margin:4px 0 10px}.feedback.error{color:#9e422f}.board{min-height:140px}.board-head{display:grid;grid-template-columns:82px minmax(0,1fr) 150px 95px;gap:16px;color:#899aab;background:#f6f8fa;border-radius:9px;font-size:10px;font-weight:750;letter-spacing:.1em;padding:13px 16px;text-transform:uppercase}.train-row{display:grid;grid-template-columns:82px minmax(0,1fr) 150px 95px;gap:16px;align-items:center;border-bottom:1px solid #eef1f5;padding:18px 16px}.train-time{font-weight:800;color:#123d63;font-size:21px;letter-spacing:-.5px;white-space:nowrap}.train-time small{display:block;font-weight:700;font-size:11px;color:#bc6c24;letter-spacing:0;margin-top:4px}.train-destination{min-width:0}.destination-name{color:#183c57;font-size:14px;font-weight:750;line-height:1.35;overflow-wrap:anywhere}.train-label{font-size:11px;color:#8698aa;margin-top:6px}.train-platform{text-align:center;font-weight:750;font-size:14px}.train-platform small{display:block;color:#8c9bac;font-size:11px;font-weight:500;margin-top:3px}.train-status{text-align:right;font-weight:700;font-size:11px;color:#1c916a}.train-status.delayed{color:#c47721}.train-status.cancelled{color:#b34c4c}.train-status.neutral{color:#8494a2}.empty-message{display:flex;min-height:150px;align-items:center;justify-content:center;flex-direction:column;text-align:center;gap:8px;padding:32px 18px;color:#647990}.empty-message strong{color:#2d506e}.empty-icon{width:42px;height:42px;display:grid;place-items:center;background:#edf5fa;border-radius:50%;font-size:22px;color:#2b6e9d}.board-disclaimer{margin:14px 0 0;color:#8593a1;font-size:11px;line-height:1.6}.explanation{margin-top:18px;padding:22px 25px;display:flex;gap:14px;align-items:start;background:#f9fbfd;box-shadow:none}.explanation-icon{display:grid;place-items:center;width:28px;height:28px;flex-shrink:0;background:#e8f0f9;border-radius:50%;color:#427bad;font-weight:800}.explanation h3{margin:2px 0 6px;font-size:13px;color:#244763}.explanation p{font-size:12px;line-height:1.65;color:#75889b;margin:0}.footer{border-top:1px solid #e2e8ef;padding:22px 0 35px;display:flex;justify-content:space-between;gap:16px;color:#718396;font-size:11px;line-height:1.8}.footer strong{font-size:16px;color:#214b71;letter-spacing:-1px}.footer p{margin:3px 0 0}.credits{text-align:right}.credits a{color:#246ca5}.filter-panel{margin-top:12px;background:#eef8fe;border:1px solid #d2e8fb;border-radius:9px;padding:10px 14px;display:flex;gap:12px;justify-content:space-between;align-items:center;font-size:12px;color:#245b83}.filter-panel button{border:0;color:#156caa;font-size:12px;background:transparent;text-decoration:underline}.favorite-empty{color:#64798d;padding:22px 8px}.favorite-section{padding:10px 0 24px}.favorite-section h3{font-size:14px;color:#1f496b}.favorite-card{border:1px solid #e3e9ef;border-radius:11px;padding:13px 14px;display:flex;gap:14px;align-items:center;justify-content:space-between;margin-bottom:9px}.favorite-card div strong{display:block;font-size:14px}.favorite-card div small{display:block;margin-top:4px;color:#758a9e}.favorite-actions{display:flex;gap:8px}.small-btn{background:#edf5fc;border:0;color:#256c9c;border-radius:7px;padding:8px 10px;font-size:12px;font-weight:700}.small-btn.remove{background:#f7f4f4;color:#ab5757}.route-form{display:grid;grid-template-columns:1fr 1fr auto;gap:9px;margin:10px 0 15px}.route-form select{min-width:0;max-width:100%;border:1px solid #d7e2ea;border-radius:8px;padding:9px;background:#fff;color:#27465d;font-size:12px}.route-form button{background:#145b92;color:white;border:0;border-radius:8px;font-size:12px;font-weight:750;padding:8px 12px}.route-warning{margin:12px 0 8px;color:#93641d;font-size:12px;background:#fff8e9;border-radius:9px;padding:11px}.skeleton{height:74px;border-bottom:1px solid #eaeff4;animation:pulse 1.4s infinite alternate;background:linear-gradient(90deg,transparent 0%,#f4f7fa 50%,transparent 100%)}@keyframes pulse{from{opacity:.4}to{opacity:1}}@media(max-width:700px){.wrap{width:min(100% - 28px,540px)}.header-inner{min-height:62px}.brand{font-size:22px}.header-note{font-size:10px;max-width:130px;text-align:right}.hero-inner{padding:37px 0 75px}.hero h1{letter-spacing:-1.8px}.hero p{font-size:14px}.station-panel,.schedules{padding:22px 17px}.station-top h2,.panel-heading h2{font-size:20px}.favorite-button{padding:8px 10px}.tabs{margin-top:17px;gap:0}.tab{font-size:12px;gap:5px;padding:12px 2px}.board-head{grid-template-columns:64px minmax(0,1fr) 59px;gap:10px;padding:12px 10px}.board-head span:nth-child(3){display:none}.train-row{grid-template-columns:64px minmax(0,1fr) 59px;gap:10px;padding:15px 9px}.train-time{font-size:18px}.train-platform{display:none}.train-status{font-size:10px}.destination-name{font-size:13px}.train-label{font-size:10px}.footer{display:block}.credits{text-align:left;margin-top:12px}.route-form{grid-template-columns:1fr 1fr}.route-form button{grid-column:1/-1}.favorite-card{align-items:flex-start}.favorite-actions{flex-direction:column}.selected-hint{display:none}}@media(prefers-reduced-motion:reduce){.skeleton{animation:none}}

/* MesTrains V0.2 — lisibilité et affichage progressif des horaires */
.brand{font-size:27px;letter-spacing:-1.2px}.brand-logo{width:35px;height:35px}.header-note{font-size:13px;color:#62798f}.hero-inner{padding:52px 0 84px}.hero p{font-size:18px;max-width:530px}.hero h1{max-width:600px}.hero-visual{position:absolute;top:45px;right:6%;width:280px;min-height:170px;padding:24px;border-radius:22px;color:#fff;background:linear-gradient(145deg,rgba(96,169,219,.22),rgba(6,32,60,.25));border:1px solid rgba(214,235,249,.22);box-shadow:0 15px 35px rgba(4,19,36,.18);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;transform:rotate(3deg)}.hero-visual-icon{font-size:46px}.hero-visual-title{font-size:21px;font-weight:850}.hero-visual-subtitle{font-size:13px;color:#d1e6f4}.hero-visual-route{font-size:17px;letter-spacing:7px;color:#f8cd64;margin-top:7px}.station-top h2,.panel-heading h2{font-size:26px}.station-input-wrap input{font-size:17px;height:58px}.tab{font-size:15px}.train-row{padding:20px 16px}.train-time{font-size:24px}.destination-name{font-size:17px}.train-label{font-size:12px}.train-platform{font-size:15px}.train-status{font-size:12px}.data-updated{font-size:12px}.feedback{font-size:13px;line-height:1.55}.board-actions{display:flex;justify-content:center;padding-top:17px}.more-button{border:1px solid #b6d8f1;border-radius:999px;background:#eaf5ff;color:#145f9b;padding:13px 25px;font-size:15px;font-weight:800;min-height:47px}.more-button:hover{background:#dcefff}.more-button:focus-visible{outline:3px solid #59a2ee;outline-offset:3px}
@media(max-width:850px){.hero-visual{display:none}}
@media(max-width:700px){.header-note{font-size:11px;max-width:145px}.brand{font-size:23px}.hero-inner{padding:38px 0 72px}.hero p{font-size:15px}.station-top h2,.panel-heading h2{font-size:22px}.station-input-wrap input{font-size:16px;height:56px}.tab{font-size:12px}.train-time{font-size:21px}.destination-name{font-size:15px}.train-label{font-size:11px}.train-status{font-size:11px}.train-row{padding:16px 9px}.more-button{width:100%;font-size:15px}}

/* MesTrains V0.3 — horaires 24 h, distinction clair direct/theorique, lisibilite */
.wrap{width:min(1180px,calc(100% - 40px))}.status-pill.mixed{background:#e9f1ff;color:#225a91}.data-updated{font-size:13px}.feedback{font-size:14px;line-height:1.6}.board-head{font-size:11px}.train-row{padding:21px 16px}.train-time{font-size:25px}.train-time .day-label{display:inline-block;background:#edf4ff;color:#285e9a;font-size:11px;font-weight:800;border-radius:6px;padding:2px 5px;margin-top:5px}.destination-name{font-size:18px}.train-label{font-size:13px}.train-status{font-size:13px}.train-platform{font-size:16px}
@media(max-width:700px){.wrap{width:min(100% - 28px,540px)}.data-updated{font-size:12px}.feedback{font-size:13px}.train-row{padding:16px 9px}.train-time{font-size:21px}.train-time .day-label{font-size:10px}.destination-name{font-size:15px}.train-label{font-size:11px}.train-status{font-size:11px}.train-platform{display:none}}

/* Recherche rapide et suggestions adaptées aux écrans mobiles. */
.station-help{margin:8px 0 0;font-size:12px;color:#71849a;line-height:1.5}
.station-results{max-height:min(320px,45vh);overscroll-behavior:contain}
.station-option{min-height:47px;align-items:center;font-size:15px}
.station-option small{font-size:11px;white-space:nowrap}
@media(max-width:700px){.station-help{font-size:12px}.station-option{min-height:52px;padding:12px}.station-input-wrap input{padding-right:36px;font-size:16px}.station-option small{font-size:10px}}
