/* Repère TV 1920 × 1080, mis à l'échelle par fit() en 720p et 4K. */
*{box-sizing:border-box}
html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#050d18;color:#edf4fc;font-family:Arial,Helvetica,sans-serif}
button,input{font:inherit}
button{cursor:pointer;color:inherit;border:1px solid #36516d;background:#142b43;border-radius:10px;padding:12px 20px;transition:background .15s,border-color .15s}
button:hover{background:#234665;border-color:#6b9bc4}
button:focus,input:focus{outline:4px solid #ffc75b;outline-offset:3px}
.hidden{display:none!important}
#stage{position:absolute;width:1920px;height:1080px;transform-origin:0 0;background:radial-gradient(ellipse at 35% 0%,#153b5a 0%,#0b1c30 58%,#081524 100%);overflow:hidden;outline:0}
#stage.night{background:linear-gradient(135deg,#0d2135,#050e1b)}
.header{position:absolute;left:48px;right:48px;top:24px;height:114px;display:flex;align-items:center}
.logo{width:108px;height:108px;object-fit:contain}
.identity{margin-left:26px;flex:1;min-width:0}
.eyebrow{margin:0 0 12px;color:#a6bed2;font-size:17px;font-weight:700;letter-spacing:1.2px;text-transform:uppercase}
#club-name{font-size:18px;letter-spacing:1.7px}
h1{font-size:46px;margin:0 0 9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:700;letter-spacing:-1px}
#airfield-code{font-size:24px;color:#7acaff;margin-left:14px;padding:5px 12px;border:1px solid #39617e;border-radius:8px;vertical-align:middle;letter-spacing:1px}
#station-note{font-size:18px;color:#b2c6d8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.clock{width:250px;text-align:right;flex-shrink:0}
.clock strong{font-size:49px;display:block;font-variant-numeric:tabular-nums;letter-spacing:1px}
.clock span{font-size:15px;color:#9eb8cd;display:block;margin-top:9px;letter-spacing:1.4px}
.clock.utc{width:178px;margin-left:32px;padding-left:26px;border-left:1px solid #304b63}
.clock.utc strong{font-size:39px;color:#a9c9e1}
#status{position:absolute;top:148px;left:48px;right:48px;font-size:16px;color:#b2c9db;height:28px;line-height:28px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#status:before{content:'';display:inline-block;width:8px;height:8px;margin-right:10px;border-radius:50%;background:#73d8c0}
#status.warn{color:#ffcd76}#status.warn:before{background:#ffcd76}
.page{position:absolute;left:48px;right:48px;top:188px;height:790px}
.conditions,.compass-wrap,.clouds-wrap{position:absolute;top:0;height:448px;border:1px solid #2b465f;border-radius:18px;background:rgba(10,27,45,.52)}
.conditions{left:0;width:438px;padding:24px}
.section-label{margin:0 0 8px}
.temperature-row{display:flex;align-items:center;height:131px}
.temperature-row svg{width:112px;height:112px}
.temperature-row>div{margin-left:18px}
#temperature{font-size:80px;letter-spacing:-3px}
.unit{font-size:29px;color:#b6ccdc;vertical-align:top;display:inline-block;margin-top:16px;margin-left:6px}
#dewpoint{font-size:18px;color:#b5c9da;margin:0;white-space:nowrap}
.conditions #summary{font-size:25px;font-weight:500;line-height:1.25;margin:12px 0 14px;min-height:42px;max-height:62px;overflow:hidden}
.reading{display:flex;align-items:center;height:53px;border-top:1px solid #294157;white-space:nowrap}
.reading i{width:7px;height:7px;border-radius:50%;background:#79cafa;margin-right:12px;flex-shrink:0}
.reading strong{font-size:24px}
.reading span{font-size:17px;color:#b0c6d9;margin-left:auto;padding-left:10px}
.compass-wrap{left:454px;width:492px;padding:24px 20px 12px}
.compass-wrap svg{display:block;width:374px;height:374px;margin:-5px auto -10px}
#wind-reference{text-align:center;font-size:14px;color:#a4bed2;white-space:nowrap}
.clouds-wrap{left:962px;width:384px;padding:24px 18px 10px}
.clouds-wrap svg{display:block;width:326px;height:375px;margin:auto}
.sidebar{position:absolute;right:0;top:0;width:456px;height:790px;border:1px solid #2b465f;border-radius:18px;padding:22px;background:rgba(10,27,45,.52)}
.category{height:72px;border-radius:12px;text-align:center;font-size:43px;line-height:72px;font-weight:700;letter-spacing:2px}
.category-note{font-size:14px;color:#b0c6d9;text-align:center;margin:11px 0 18px}
.vfr{background:#238044}.mvfr{background:#1266aa}.ifr{background:#b42e43}.lifr{background:#a32871}.unknown{background:#52677c}
.light{height:26px;line-height:26px;margin:4px 0;padding:0 12px;border-radius:5px;font-size:15px;color:#94adc2;background:rgba(255,255,255,.035)}
.light:before{content:'○';margin-right:9px}.light.on{background:#584626;color:#ffe0a2}.light.on:before{content:'●'}.light.danger{background:#62303c;color:#ffcad2}
.panel{background:rgba(26,49,72,.78);border:1px solid #304c65;border-radius:12px}
#qr-card{margin-top:20px;height:319px;text-align:center;padding:17px;background:#132c43}
#qr-card .eyebrow{font-size:16px;margin-bottom:12px}
#qr{height:224px;width:224px;margin:auto;background:#fff;border-radius:8px;overflow:hidden}
#qr img{display:block;width:100%;height:100%;image-rendering:pixelated}
#qr-card p{font-size:17px;color:#bcd0df;margin:12px 0}
.stats{position:absolute;top:464px;left:0;width:1346px;display:flex}
.stat{flex:1;min-width:0;height:92px;padding:15px;margin-right:12px}.stat:last-child{margin-right:0}
.stat .label{font-size:14px;color:#a9c2d6;text-transform:uppercase;white-space:nowrap;letter-spacing:.4px}
.stat strong{font-size:30px;display:inline-block;margin-top:9px;font-variant-numeric:tabular-nums}
.stat .suffix{font-size:16px;color:#b9cede;margin-left:5px}
.forecast-wrap{position:absolute;top:577px;left:0;width:1346px}
.forecast-wrap .eyebrow{font-size:15px;margin-bottom:10px}
#forecast{display:flex}
.forecast-cell{flex:1;min-width:0;height:99px;margin-right:9px;text-align:center;border-top:3px solid #60778a;padding:11px 4px}.forecast-cell:last-child{margin-right:0}
.forecast-cell strong{font-size:22px;font-variant-numeric:tabular-nums}
.forecast-cell .wx{font-size:16px;margin:10px 0 7px;white-space:nowrap}
.forecast-cell .tempo{font-size:11px;color:#ffd58c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.forecast-cell .pill{font-size:13px;font-weight:bold;padding:3px 5px;border-radius:4px;margin-right:5px}
.raw{position:absolute;left:0;width:1346px;text-align:left;font-size:16px;line-height:1.4;font-family:Consolas,'Courier New',monospace;padding:5px 15px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:block;color:#c1d4e4;border-radius:9px}
#raw-metar{top:714px;height:34px}#raw-taf{top:756px;height:34px}
footer{position:absolute;top:997px;left:48px;right:48px;display:flex;align-items:center;justify-content:space-between;height:55px;font-size:19px}
.page-tabs{display:flex;padding:4px;background:#071725;border:1px solid #2a445b;border-radius:12px}
.page-tabs button{border:0;background:transparent;color:#aac2d6;padding:11px 20px;font-size:19px;border-radius:8px}
.page-tabs .active{background:#225579;color:#fff}
.remote-help{font-size:16px;color:#94b0c6}
.footer-actions,.video-actions{display:flex;align-items:center;gap:10px}
.footer-actions button{font-size:18px;padding:12px 16px}
#fullscreen{display:flex;align-items:center;background:#215d7d;border-color:#4082a2}#fullscreen:hover{background:#2c7599}
#fullscreen svg{width:22px;height:22px;margin-right:10px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.bottom-note{position:absolute;bottom:10px;left:48px;font-size:11px;letter-spacing:.3px;color:#8faabd}
#progress-track{position:absolute;bottom:0;left:0;right:0;height:4px;background:#172c40}
#progress{height:4px;background:#78d3df;width:0;transition:width .6s linear}
.page-heading{height:48px;display:flex;align-items:center;justify-content:space-between}
.page-heading h2{font-size:28px;margin:0;font-weight:600}.page-heading span{font-size:18px;color:#bdd0df}
#maps-message{max-width:950px}#maps-retry{font-size:18px}
#maps-grid{display:flex;flex-wrap:wrap;height:726px;margin-top:16px;justify-content:space-between}
.map-card{position:relative;width:calc(50% - 8px);height:355px;border-radius:14px;overflow:hidden;background:#0c2237;margin-bottom:16px;border:1px solid #37546b}
.map-card h3{margin:0;padding:12px 16px;font-size:18px;height:44px;font-weight:500}
.map-card iframe{border:0;position:absolute;top:44px;left:0;width:calc(100% + 56px);height:311px;pointer-events:none}
.map-card .crosshair{position:absolute;left:calc(50% + 28px);top:55%;color:#ffca5b;font-size:27px;pointer-events:none}
.map-card .map-empty{font-size:20px;color:#a9bdcc;text-align:center;margin-top:100px}
.map-credit{position:absolute;right:16px;top:15px;font-size:13px;color:#bed1df}
.map-loading{position:absolute;top:100px;left:40px;right:40px;font-size:24px;text-align:center;color:#c8dbe9;line-height:1.5;pointer-events:none}
.map-loading.failed{top:80px;z-index:2;padding:20px;background:#0c2237}
#video-message{max-width:730px;font-size:18px;text-align:center}
.video-actions button{font-size:18px}#video-sound{border-color:#52849c;background:#19415a}
#video.needs-action #video-play{border-color:#ffc75b;color:#ffe0a2}
#video-frame{position:absolute;left:336px;top:62px;width:1152px;height:648px;margin:0;background:#000;border-radius:12px;overflow:hidden;box-shadow:0 16px 45px #0004}
/* Commandes natives YouTube masquées via controls=0 ; commandes LysTV hors vidéo. */
#youtube-player,#video-frame iframe{width:1152px;height:648px;border:0;pointer-events:none}
#video-weather{position:absolute;left:0;top:726px;width:1824px;height:64px;margin:0;padding:10px 20px;display:flex;align-items:center;justify-content:space-between;text-align:left}
.bar-category{font-size:25px;font-weight:bold;border-radius:9px;padding:8px 24px;margin-right:16px;flex-shrink:0}
.bar-metric{min-width:0;margin:0 10px}
.bar-metric span{display:block;font-size:12px;font-weight:bold;text-transform:uppercase;color:#a8c1d6;margin-bottom:4px;letter-spacing:.5px}
.bar-metric strong{display:block;font-size:22px;white-space:nowrap}.bar-metric:last-child{margin-right:0}
.media-placeholder{position:absolute;left:0;top:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;text-align:center;padding:100px;font-size:30px;line-height:1.5;background:#0b1f32;color:#c8dbe9;pointer-events:none}
.frame-probe{position:absolute;left:-10px;top:-10px;width:1px;height:1px;opacity:0;pointer-events:none;border:0}
#toast{position:absolute;bottom:112px;left:440px;right:440px;z-index:6;padding:22px;text-align:center;font-size:23px;background:#e0edfa;color:#092337;border-radius:12px;box-shadow:0 12px 40px #0006}
.overlay{position:absolute;inset:0;left:0;top:0;width:1920px;height:1080px;background:rgba(1,9,19,.88);z-index:10;display:flex;align-items:center;justify-content:center}
.dialog{width:1210px;max-height:950px;background:#10283e;border:1px solid #587890;border-radius:20px;padding:34px;box-shadow:0 28px 100px #0008}
.dialog h2{font-size:34px;margin:0 0 22px}.dialog p{font-size:22px;line-height:1.5;color:#c2d5e4}
.dialog pre{white-space:pre-wrap;word-break:break-word;font-size:25px;line-height:1.7;max-height:680px;overflow:auto;margin:0}
.settings-list{height:650px;overflow-y:auto;padding:8px 12px 8px 4px}
.setting{display:flex;align-items:center;justify-content:space-between;min-height:68px;border-bottom:1px solid #35526a;padding:8px 0}
.setting label{font-size:23px;width:420px}.setting button{width:620px;text-align:right;font-size:22px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.settings-hint{font-size:18px!important;margin:0 0 16px!important}
#modal-actions{margin-top:24px;display:flex;justify-content:flex-end}#modal-actions button{font-size:23px;margin-left:15px}#modal-actions button.primary{background:#286c9e}
#keyboard{z-index:12}.keyboard-dialog{width:1300px}
#keyboard-value{width:100%;border:1px solid #7494ad;background:#05182a;color:white;padding:18px;font-size:30px;margin-bottom:26px}
#keyboard-keys{display:flex;flex-wrap:wrap}#keyboard-keys button{width:calc(10% - 12px);margin:6px;height:64px;font-size:25px}#keyboard-keys .wide{width:calc(20% - 12px);font-size:22px}
.diagnostics{font-size:22px;line-height:1.6;word-break:break-word;max-height:670px;overflow:auto}.diagnostics dt{color:#9bb7ce;margin-top:15px}.diagnostics dd{margin:0}
.key-value{font-size:32px;color:#ffca5b}.demo-label{color:#ffcb62}.error-message{color:#ffd18a!important}
@media(prefers-reduced-motion:reduce){button,#progress{transition:none}}

/* Trois cartes aéronautiques ; documents complets, cartouches et légendes conservés. */
.charts-grid{display:flex;height:726px;margin-top:16px}
.chart-card{display:flex;flex-direction:column;align-items:stretch;width:calc((100% - 32px)/3);min-width:0;margin-right:16px;padding:0;overflow:hidden;background:#10283e;border-radius:14px;text-align:left}
.chart-card:last-child{margin-right:0}
.chart-heading{display:block;padding:18px 20px;border-bottom:1px solid #36516d}
.chart-heading strong{display:block;font-size:27px;margin-bottom:7px}
.chart-heading>span{font-size:16px;color:#afc7db}
.chart-image{display:flex;align-items:center;justify-content:center;flex:1;min-height:0;padding:12px;font-size:23px;line-height:1.5;text-align:center;color:#b7ccdc}
.chart-image img{display:block;width:100%;height:100%;object-fit:contain;background:#fff;border-radius:4px}
.chart-status{display:block;padding:16px 18px;border-top:1px solid #36516d;font-size:17px;color:#d6e7f4;text-align:center;min-height:55px}
.chart-overlay .dialog{width:1650px;max-height:1000px;padding:24px}
.chart-overlay .dialog h2{font-size:26px;margin-bottom:14px}
.chart-detail{height:790px;overflow:auto;background:#fff;border-radius:8px;text-align:center}
.chart-detail img{display:block;width:100%;height:auto;margin:auto}
.chart-overlay #modal-actions{margin-top:14px}
#charts .page-heading span{font-size:17px}
