:root{
  --paper:#E8ECEF; --panel:#FFFFFF; --ink:#16232D; --ink2:#4A5A66; --rule:#CBD3D9;
  --low:#2E8B57; --mod:#D19B14; --high:#D8622E; --sev:#B4302A;
  --smooth:#2E8B57; --light:#8CB74A; --modchop:#D19B14; --sevchop:#B4302A;
  --sky:#2F5D8A;
  --sans:"IBM Plex Sans",system-ui,sans-serif; --mono:"IBM Plex Mono",ui-monospace,monospace;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.45}
a{color:var(--sky)}
.wrap{max-width:1040px;margin:0 auto;padding:20px 16px 56px}

/* top nav */
.nav{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:6px 0 16px}
.nav .brand{font-weight:700;font-size:18px;letter-spacing:-.3px;color:var(--ink);text-decoration:none;display:flex;align-items:center;gap:8px}
.nav .brand i{width:10px;height:10px;border-radius:2px;background:var(--sky);display:inline-block;transform:rotate(45deg)}
.nav .links{font-size:14px;display:flex;gap:16px}
.nav .links a{color:var(--ink2);text-decoration:none}
.nav .links a:hover{color:var(--ink)}

/* landing */
.hero{padding:36px 0 24px;border-bottom:2px solid var(--ink)}
.hero h1{font-size:36px;line-height:1.1;letter-spacing:-.8px;margin:0 0 10px;max-width:720px}
.hero p.lede{font-size:17px;color:var(--ink2);max-width:640px;margin:0 0 22px}
.lookup{display:grid;grid-template-columns:1.4fr 1fr auto;gap:10px;max-width:640px}
@media (max-width:560px){.lookup{grid-template-columns:1fr}}
.lookup input{font:inherit;font-size:16px;padding:11px 12px;border:1px solid var(--rule);border-radius:6px;background:#fff;color:var(--ink)}
.lookup input:focus{outline:2px solid var(--sky);outline-offset:1px;border-color:var(--sky)}
.lookup button,.btn{font:inherit;font-weight:600;font-size:15px;padding:11px 18px;border:none;border-radius:6px;background:var(--ink);color:#fff;cursor:pointer}
.lookup button:hover,.btn:hover{background:#2a3b48}
.hint{font-size:13px;color:var(--ink2);margin-top:8px}
.hint a{color:var(--ink2)}
.err{color:var(--sev);font-size:14px;margin-top:8px;min-height:1.2em}

.feat{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:24px}
@media (max-width:760px){.feat{grid-template-columns:1fr}}
.feat .panel h3{margin:0 0 6px;font-size:15px}
.feat .panel p{margin:0;font-size:14px;color:var(--ink2)}
.bands{display:flex;gap:0;margin:18px 0 6px;border-radius:4px;overflow:hidden;max-width:520px}
.bands span{flex:1;padding:6px 8px;color:#fff;font-size:12px;font-weight:600;text-align:center}
.bands span:nth-child(1){background:var(--low);flex:.1}
.bands span:nth-child(2){background:var(--mod);flex:.2}
.bands span:nth-child(3){background:var(--high);flex:.25}
.bands span:nth-child(4){background:var(--sev);flex:.45}
.section{margin-top:28px}
.section h2{font-size:20px;margin:0 0 8px;letter-spacing:-.3px}
.section p{color:var(--ink2);max-width:720px}
.section ol{color:var(--ink2);max-width:720px;padding-left:20px}
.section li{margin-bottom:6px}

/* report header */
header.rep{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px 24px;padding-bottom:14px;border-bottom:2px solid var(--ink)}
header.rep h1{font-size:15px;font-weight:600;margin:0 0 2px;color:var(--ink2)}
header.rep .flt{font-size:34px;font-weight:700;letter-spacing:-.5px;line-height:1.05;margin:0}
header.rep .flt span{font-weight:400;color:var(--ink2)}
header.rep .sub{font-size:13px;color:var(--ink2);margin-top:4px}
.stamp{font-size:13px;color:var(--ink2);text-align:right;line-height:1.5}
@media (max-width:760px){.stamp{text-align:left}}
.stamp b{color:var(--ink);font-weight:600}
.live{display:inline-flex;align-items:center;gap:6px}
.live i{width:8px;height:8px;border-radius:50%;background:var(--low);display:inline-block}
.live.off i{background:var(--rule)}

.grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:16px}
@media (max-width:760px){.grid{grid-template-columns:1fr}}
.panel{background:var(--panel);border:1px solid var(--rule);border-radius:6px;padding:16px 18px}
.panel h2{font-size:15px;font-weight:600;margin:0 0 10px}
.panel h2 small{font-weight:400;color:var(--ink2);margin-left:8px}

/* score */
.num{font-size:64px;font-weight:700;line-height:1;letter-spacing:-2px}
.num sub{font-size:16px;font-weight:500;letter-spacing:0;vertical-align:baseline;color:var(--ink2);margin-left:4px}
.band{display:inline-block;padding:3px 9px;border-radius:4px;color:#fff;font-weight:600;font-size:13px;margin-top:8px}
.meaning{margin:8px 0 0;color:var(--ink2);font-size:14px}
.ladder{width:100%;max-width:360px;height:auto;display:block;margin-top:14px}
.cut{font-size:12px;color:var(--ink2)}
.why{list-style:none;margin:12px 0 0;padding:0;border-top:1px solid var(--rule)}
.why li{display:grid;grid-template-columns:44px 1fr;gap:10px;padding:8px 0;border-bottom:1px solid var(--rule);font-size:14px}
.why li b{font-variant-numeric:tabular-nums;font-weight:600;text-align:right;padding-right:4px}
.why li b.z{color:var(--ink2);font-weight:400}
.why li span em{color:var(--ink2);font-style:normal;display:block;font-size:13px}
.why li.total{border-bottom:none;font-weight:600}

/* airports */
.apt{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media (max-width:520px){.apt{grid-template-columns:1fr}}
.apt .card{border:1px solid var(--rule);border-radius:6px;padding:12px 14px;position:relative}
.apt .card.done{background:#F4F6F7}
.apt .role{font-size:12px;color:var(--ink2)}
.apt .code{font-size:26px;font-weight:700;line-height:1.1}
.apt .cat{position:absolute;top:12px;right:12px;font-size:12px;font-weight:600;color:#fff;background:var(--low);padding:2px 7px;border-radius:3px}
.cat.MVFR{background:var(--sky)!important}.cat.IFR{background:var(--high)!important}.cat.LIFR{background:var(--sev)!important}
.kv{display:grid;grid-template-columns:auto 1fr;gap:3px 12px;font-size:14px;margin-top:8px}
.kv span{color:var(--ink2)}
.raw{font-family:var(--mono);font-size:11.5px;color:var(--ink2);margin-top:10px;word-break:break-word;line-height:1.4;border-top:1px dashed var(--rule);padding-top:8px}
.faa{margin-top:10px;font-size:13px;display:flex;gap:8px;align-items:flex-start}
.faa i{flex:none;width:10px;height:10px;border-radius:50%;margin-top:5px;background:var(--low)}
.faa.bad i{background:var(--sev)}
.nbr{font-size:12px;color:var(--ink2);margin-top:10px}

/* route */
.route svg{width:100%;height:auto;display:block}
.legend{display:flex;flex-wrap:wrap;gap:14px;font-size:13px;color:var(--ink2);margin-top:6px}
.legend i{display:inline-block;width:12px;height:12px;border-radius:2px;margin-right:5px;vertical-align:-1px}
.phases{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}
@media (max-width:640px){.phases{grid-template-columns:1fr}}
.phase{border-left:4px solid var(--rule);padding:2px 0 2px 12px}
.phase h3{margin:0;font-size:14px;font-weight:600}
.phase .lvl{font-size:13px;font-weight:600}
.phase p{margin:4px 0 0;font-size:13px;color:var(--ink2)}
.pirep{font-family:var(--mono);font-size:11px;color:var(--ink2);margin-top:6px;line-height:1.5}

/* timing */
.tl svg{width:100%;height:auto;display:block}
.tl p{margin:8px 0 0;font-size:14px;color:var(--ink2)}

/* sources */
.src{font-size:13px;color:var(--ink2)}
.src table{border-collapse:collapse;width:100%}
.src td{padding:4px 0;border-bottom:1px solid var(--rule);vertical-align:top}
.src td:first-child{font-weight:600;color:var(--ink);width:150px;padding-right:12px}
.note{margin-top:14px;font-size:13px;color:var(--ink2)}
footer{margin-top:24px;font-size:12px;color:var(--ink2);border-top:1px solid var(--rule);padding-top:10px}
.loading{padding:48px 0;color:var(--ink2);font-size:15px}
.loading i{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--sky);margin-right:8px;vertical-align:-1px}
@media (prefers-reduced-motion:no-preference){.live i,.loading i{animation:pulse 2s infinite}}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}
.notes{margin-top:10px;font-size:12px;color:var(--high)}
