/*
Theme Name: Windhorse
Description: Standalone classic theme for windhorse.aero (no parent theme): the Preflight design system in light and Graphite dark.
Version: 0.1.0
Requires at least: 7.1
Requires PHP: 8.4
Text Domain: windhorse
*/

/* ---------- Fonts: self-hosted Public Sans (text) and Barlow Condensed (display), OFL (assets/fonts/), latin subset ---------- */
@font-face{font-family:"Public Sans";font-style:normal;font-weight:400;font-display:swap;src:url(assets/fonts/public-sans-400-normal.woff2) format("woff2")}
@font-face{font-family:"Public Sans";font-style:italic;font-weight:400;font-display:swap;src:url(assets/fonts/public-sans-400-italic.woff2) format("woff2")}
@font-face{font-family:"Public Sans";font-style:normal;font-weight:600;font-display:swap;src:url(assets/fonts/public-sans-600-normal.woff2) format("woff2")}
@font-face{font-family:"Public Sans";font-style:normal;font-weight:700;font-display:swap;src:url(assets/fonts/public-sans-700-normal.woff2) format("woff2")}
@font-face{font-family:"Barlow Condensed";font-style:normal;font-weight:600;font-display:swap;src:url(assets/fonts/barlow-condensed-600-latin.woff2) format("woff2")}
@font-face{font-family:"Barlow Condensed";font-style:normal;font-weight:700;font-display:swap;src:url(assets/fonts/barlow-condensed-700-latin.woff2) format("woff2")}
@font-face{font-family:"Barlow Condensed";font-style:normal;font-weight:800;font-display:swap;src:url(assets/fonts/barlow-condensed-800-latin.woff2) format("woff2")}
@font-face{font-family:"Barlow Semi Condensed";font-style:normal;font-weight:600;font-display:swap;src:url(assets/fonts/barlow-semi-condensed-600-latin.woff2) format("woff2")}
/* Fallback faces: plain Arial scaled to each face's advance widths (the median over the site's own headings and button
   labels) and vertical metrics, so the swap moves nothing. No narrower local face first: Arial Narrow exists on some
   Macs only, and a scale fitted to Arial made it 10% too narrow there (a masthead line less, history at 390). */
@font-face{font-family:"Public Sans Fallback";src:local("Arial"),local("ArialMT"),local("Liberation Sans");size-adjust:103.8%;ascent-override:91.5%;descent-override:21.7%;line-gap-override:0%}
@font-face{font-family:"Barlow Condensed Fallback";src:local("Arial"),local("ArialMT"),local("Liberation Sans");size-adjust:70.6%;ascent-override:141.6%;descent-override:28.3%;line-gap-override:0%}
@font-face{font-family:"Barlow Semi Condensed Fallback";src:local("Arial"),local("ArialMT"),local("Liberation Sans");size-adjust:88.5%;ascent-override:113.0%;descent-override:22.6%;line-gap-override:0%}

/* ---------- Tokens: light ---------- */
:root{
	--f-body:"Public Sans","Public Sans Fallback",sans-serif;
	--f-cond:"Barlow Condensed","Barlow Condensed Fallback",sans-serif;
	--f-semi:"Barlow Semi Condensed","Barlow Semi Condensed Fallback",sans-serif;
	--gut:32px;
	--ground:#EDF0EB;--band:#EDF0EB;--paper:#FFFFFF;--control:#FFFFFF;
	--ink:#101412;--ink-line:#101412;--solid:#101412;--on-solid:#FFFFFF;--fixed-ink:#101412;--band-solid:#101412;
	--ink-soft:#47514B;--soft-line:#47514B;--rule:#CBD2CC;--leader:#8D978F;
	--go:#17A34A;--go-ink:#0B6B2E;--go-pale:#E3F4E8;
	--caution:#FFB400;--caution-ink:#8A5A00;--caution-pale:#FFF2CC;
	--no-go:#C8281C;--no-go-ink:#B42318;--no-go-pale:#FCE4E1;
	--cobalt:#1F4FD6;--cobalt-hover:#163A9E;
	--sheet:#F6F8F4;--grid-minor:#E8ECE6;--grid-major:#D6DCD5;--water:#E3EAEE;
	--day:#FFFFFF;--on-day:#101412;--twilight:#8D978F;--night:#101412;
	--foot:#101412;--foot-line:#101412;--foot-ink:#FFFFFF;--foot-soft:#CBD2CC;--foot-rule:#47514B;
	color-scheme:light;
}
/* ---------- Tokens: Graphite dark (device setting, or the manual choice) ---------- */
@media (prefers-color-scheme:dark){
	:root:not([data-theme=light]){
		--ground:#1D1E20;--band:#34373A;--paper:#27292B;--control:#1D1E20;
		--ink:#EEEFF0;--ink-line:#80858B;--solid:#EEEFF0;--on-solid:#1D1E20;--band-solid:#1D1E20;
		--ink-soft:#B7BBBF;--soft-line:#80858B;--rule:#3F4246;--leader:#6E7379;
		--go-ink:#62D690;--go-pale:#1F3B2F;--caution-ink:#FFC247;--caution-pale:#453710;
		--no-go:#D23A2D;--no-go-ink:#FFA193;--no-go-pale:#4C231E;
		--cobalt:#9DBAFF;--cobalt-hover:#C2D4FF;
		--sheet:#222426;--grid-minor:#2A2C2F;--grid-major:#373A3E;--water:#25353F;
		--day:#EEEFF0;--on-day:#1D1E20;--twilight:#6E7379;--night:#131415;
		--foot:#131415;--foot-line:#3F4246;--foot-ink:#EEEFF0;--foot-soft:#B7BBBF;--foot-rule:#80858B;
		color-scheme:dark;
	}
	:root:not([data-theme=light]) .wh-ic-sun{display:none}
	:root:not([data-theme=light]) .wh-ic-moon{display:block}
}
:root[data-theme=dark]{
	--ground:#1D1E20;--band:#34373A;--paper:#27292B;--control:#1D1E20;
	--ink:#EEEFF0;--ink-line:#80858B;--solid:#EEEFF0;--on-solid:#1D1E20;--band-solid:#1D1E20;
	--ink-soft:#B7BBBF;--soft-line:#80858B;--rule:#3F4246;--leader:#6E7379;
	--go-ink:#62D690;--go-pale:#1F3B2F;--caution-ink:#FFC247;--caution-pale:#453710;
	--no-go:#D23A2D;--no-go-ink:#FFA193;--no-go-pale:#4C231E;
	--cobalt:#9DBAFF;--cobalt-hover:#C2D4FF;
	--sheet:#222426;--grid-minor:#2A2C2F;--grid-major:#373A3E;--water:#25353F;
	--day:#EEEFF0;--on-day:#1D1E20;--twilight:#6E7379;--night:#131415;
	--foot:#131415;--foot-line:#3F4246;--foot-ink:#EEEFF0;--foot-soft:#B7BBBF;--foot-rule:#80858B;
	color-scheme:dark;
}
:root[data-theme=dark] .wh-ic-sun{display:none}
:root[data-theme=dark] .wh-ic-moon{display:block}

/* ---------- Base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;background:var(--ground);color:var(--ink);font:400 17px/1.55 var(--f-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
a{color:var(--cobalt);text-underline-offset:3px}
a:hover{color:var(--cobalt-hover)}
::selection{background:#1F4FD6;color:#FFFFFF}
:focus-visible{outline:3px solid var(--cobalt);outline-offset:2px}
button,input,select{font:inherit;color:inherit}
button{cursor:pointer}
img,svg{flex:none}
h1,h2,h3,p,ul,ol,dl,dd,figure{margin:0}
ul,ol{padding:0}
summary{list-style:none}
summary::-webkit-details-marker{display:none}
strong{font-weight:600}

/* Visibility: phone-only and wide-only pieces, the rulebook variants, JS-only controls */
@media (min-width:760px){.wh-m{display:none!important}}
@media (max-width:759.98px){.wh-d{display:none!important}}
@media (min-width:968px){.wh-s2{display:none!important}}
@media (max-width:967.98px){.wh-s1{display:none!important}}
html[data-rules="107"] .wh-only-rec,html:not([data-rules="107"]) .wh-only-107{display:none!important}
html:not(.wh-js) .wh-js-only{display:none!important}
.wh-vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.wh-ic-moon{display:none}

.wh-skip{position:absolute;left:12px;top:-100px;z-index:100;display:inline-flex;align-items:center;min-height:48px;padding:0 20px;border-radius:8px;background:var(--solid);color:var(--on-solid);font:600 19px/1.1 var(--f-cond);text-decoration:none}
.wh-skip:focus{top:12px;color:var(--on-solid)}

.wh-wrap{max-width:1312px;margin:0 auto}
.wh-sec{padding:72px var(--gut) 80px}
.wh-sec--paper{background:var(--paper);border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}
.wh-h2{font:700 48px/1 var(--f-cond);text-transform:uppercase;text-wrap:balance}
.wh-lede{margin-top:12px;max-width:56ch;color:var(--ink-soft)}
.wh-h3{font:700 28px/1.1 var(--f-cond)}
.wh-label{font:600 14px/20px var(--f-semi);letter-spacing:.03em;text-transform:uppercase}
.wh-small{font-weight:500;font-size:15px;line-height:1.4;color:var(--ink-soft)}

/* ---------- Buttons ---------- */
.wh-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 20px;border:0;border-radius:8px;font:600 19px/1.1 var(--f-cond);text-decoration:none;white-space:nowrap}
.wh-btn--solid{background:var(--solid);color:var(--on-solid)}
.wh-btn--solid:hover{color:var(--on-solid);background:var(--ink-soft)}
.wh-btn--outline{padding:0 16px;border:1.5px solid var(--ink);background:var(--control);color:var(--ink)}
.wh-btn--outline:hover{color:var(--ink);background:var(--band)}
.wh-btn--step{min-height:44px;padding:8px 14px;font-size:18px;white-space:normal;text-align:center}
.wh-btn svg{display:block}
.wh-textbtn{display:inline-flex;align-items:center;min-height:44px;padding:0 4px;border:0;background:none;color:var(--cobalt);font-weight:600;font-size:15px;text-decoration:underline;text-underline-offset:3px}
.wh-more{font-weight:600;font-size:16px;white-space:nowrap}
.wh-more svg{margin-left:4px;vertical-align:-3px}
/* A stand-alone text link keeps a 44 px touch height without moving the layout. */
.wh-more,.wh-models h3 a{position:relative}
.wh-more::after,.wh-models h3 a::after{content:"";position:absolute;left:0;right:0;top:50%;height:44px;transform:translateY(-50%)}

/* ---------- Inputs ---------- */
.wh-field{display:block;min-width:0}
.wh-field>.wh-label{display:block;margin-bottom:4px;color:var(--ink-soft)}
.wh-input{width:100%;height:48px;padding:0 12px;border:1px solid var(--soft-line);border-radius:8px;background:var(--control);font-weight:500;font-size:17px;caret-color:var(--cobalt)}
/* The browser grey reads 3.5:1 on the dark field; soft ink at .8 keeps 4.8:1 light and 6:1 dark, still lighter than typed text. */
.wh-input::placeholder{color:var(--ink-soft);opacity:.8}
.wh-select{position:relative;display:block}
.wh-select select{appearance:none;-webkit-appearance:none;padding-right:36px}
.wh-select svg{position:absolute;right:10px;top:14px;pointer-events:none}

/* ---------- Status tags ---------- */
.wh-tag{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px 0 8px;border-radius:6px;font:600 14px/1 var(--f-semi);letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;color:var(--fixed-ink)}
.wh-tag svg{display:block}
.wh-tag--go{background:var(--go)}
.wh-tag--caution{background:var(--caution)}
.wh-tag--nogo{background:var(--no-go);color:#FFFFFF}
.wh-tag--ink{background:var(--solid);color:var(--on-solid)}
.wh-tag--word{padding:0 10px}
.wh-tag--sample{padding:0 10px;border:1px solid var(--soft-line);background:var(--control);color:var(--ink-soft)}
.wh-tag--example{padding:0 10px;border:1px solid var(--ink-line);background:var(--control);color:var(--ink)}

/* ---------- Drafting sheet ---------- */
.wh-sheet{background-color:var(--sheet);background-image:linear-gradient(var(--grid-major) 1px,#0000 1px),linear-gradient(90deg,var(--grid-major) 1px,#0000 1px),linear-gradient(var(--grid-minor) 1px,#0000 1px),linear-gradient(90deg,var(--grid-minor) 1px,#0000 1px);background-size:80px 80px,80px 80px,16px 16px,16px 16px;border:1px solid var(--rule);border-radius:8px;overflow:hidden}
.wh-sheet>svg{display:block}
/* Drawings (relabel.py): geometry scales with the sheet, labels keep a 14 px floor. --dw is the drawing width. */
.wh-sheet:has(>.wh-dwg){container-type:inline-size}
.wh-dwg{--dw:100cqw;width:100%;height:auto;margin-inline:auto;overflow:visible}
.wh-lab{font-size:max(14px,var(--dw)*14/var(--vbw))}
/* Narrow sheets: the phone map's caption and the register zone labels move out of the drawing, two map labels shift. */
.wh-dwgcap,.wh-dwgkey{display:none;margin:0;font:600 14px/20px var(--f-semi);letter-spacing:.03em;color:var(--ink)}
.wh-dwgcap span{display:block}
.wh-dwgkey span{display:inline-flex;align-items:center;gap:6px;text-wrap:balance}
.wh-dwgkey svg{flex:none}
.wh-dwgkey__go{color:var(--go-ink)}
@container (max-width:355.98px){.wh-lab--cap{display:none}.wh-dwgcap{display:block;padding:0 10px 8px}}
@container (max-width:327.98px){.wh-lab--n1>svg>*{transform:translateY(8px)}.wh-lab--n2>svg>*{transform:translateY(-4px)}}
.wh-lab--alt-b{display:none}
@container (max-width:315.98px){.wh-lab--zone,.wh-lab--main-b{display:none}.wh-lab--alt-b{display:inline}.wh-dwgkey{display:flex;flex-wrap:wrap;gap:2px 16px;padding:0 10px 10px;font-weight:700}}
/* Drawings keep the approved light colours as attributes; the theme maps each to its token. */
.wh-svgt{font:600 14px var(--f-semi);letter-spacing:.03em;fill:var(--ink)}
.wh-halo{paint-order:stroke;stroke:var(--sheet);stroke-width:4px;stroke-linejoin:round}
svg[stroke="#101412"],svg [stroke="#101412"]{stroke:var(--ink)}
svg[fill="#101412"],svg [fill="#101412"]{fill:var(--ink)}
svg [fill="#fff"],svg [fill="#FFF"],svg [fill="#FFFFFF"]{fill:var(--paper)}
svg [fill="#F6F8F4"]{fill:var(--sheet)}
svg [stroke="#47514B"]{stroke:var(--ink-soft)}
svg [fill="#47514B"]{fill:var(--ink-soft)}
svg [stroke="#8D978F"]{stroke:var(--leader)}
svg [stroke="#E3EAEE"]{stroke:var(--water)}
svg [fill="#E3EAEE"]{fill:var(--water)}
svg [stroke="#0B6B2E"]{stroke:var(--go-ink)}
svg [fill="#0B6B2E"]{fill:var(--go-ink)}
svg [fill="#E3F4E8"]{fill:var(--go-pale)}
svg [stroke="#8A5A00"]{stroke:var(--caution-ink)}
svg [fill="#8A5A00"]{fill:var(--caution-ink)}
svg [fill="#FFF2CC"]{fill:var(--caution-pale)}
svg [stroke="#B42318"]{stroke:var(--no-go-ink)}
svg [fill="#B42318"]{fill:var(--no-go-ink)}
svg [fill="#FCE4E1"]{fill:var(--no-go-pale)}
svg [stroke="#1F4FD6"]{stroke:var(--cobalt)}
svg [fill="#1F4FD6"]{fill:var(--cobalt)}
.wh-logo-tile rect{fill:#17A34A}
.wh-logo-tile path{fill:none;stroke:#FFFFFF}
.wh-tag svg,.wh-btn svg,.wh-more svg{flex:none}

/* ---------- Leader rows ---------- */
.wh-rows{font:600 19px var(--f-cond);letter-spacing:.04em;text-transform:uppercase;font-variant-numeric:tabular-nums}
.wh-row{display:flex;align-items:center;gap:12px;min-height:53px;border-top:1px solid var(--rule)}
.wh-row:last-child{border-bottom:1px solid var(--rule)}
.wh-row dt{flex:1 0 auto;display:flex;align-items:center;gap:12px}
.wh-leader{flex:1;min-width:16px;margin-top:12px;border-bottom:2px dotted var(--leader)}
.wh-row dd{font:500 16px/1.35 var(--f-body);letter-spacing:0;text-transform:none;text-align:right}
.wh-row .wh-row__tag{flex:none;display:flex}

/* ---------- Header ---------- */
.wh-top{position:relative;z-index:20;background:var(--paper);border-bottom:2px solid var(--ink);padding:0 var(--gut)}
.wh-top__in{max-width:1312px;margin:0 auto;display:flex;align-items:center;flex-wrap:wrap;column-gap:28px;min-height:72px}
.wh-logo{display:flex;align-items:center;gap:9px;min-height:44px;font:800 28px/1 var(--f-cond);letter-spacing:.02em;text-transform:uppercase;color:var(--ink);text-decoration:none}
.wh-logo:hover{color:var(--ink)}
.wh-logo svg{display:block;width:36px;height:36px}
.wh-tabs{display:flex;align-self:flex-end;gap:2px}
.wh-tabs a{display:flex;align-items:center;height:46px;padding:0 14px;border-radius:8px 8px 0 0;color:var(--ink);font:600 18px/1 var(--f-cond);letter-spacing:.04em;text-transform:uppercase;text-decoration:none}
.wh-tabs a:hover{background:var(--band);color:var(--ink)}
.wh-tabs a[aria-current]{padding:0 16px;background:var(--solid);color:var(--on-solid)}
.wh-tabs a:focus-visible{outline-offset:-3px}
.wh-top__tools{display:flex;align-items:center;gap:12px;margin-left:auto}
.wh-rules{display:flex;border:1.5px solid var(--ink);border-radius:8px}
.wh-rules button{position:relative;height:44px;padding:0 14px;border:0;background:var(--control);color:var(--ink);font:600 16px/1 var(--f-cond);letter-spacing:.04em;text-transform:uppercase}
.wh-rules button:first-child{border-radius:6.5px 0 0 6.5px}
.wh-rules button:last-child{border-radius:0 6.5px 6.5px 0}
.wh-rules button[aria-pressed=true]{background:var(--solid);color:var(--on-solid)}
.wh-rules button:focus-visible{z-index:1}
.wh-tool{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:47px;padding:0 14px;border:1.5px solid var(--ink);border-radius:8px;background:var(--control);color:var(--ink);font:600 16px/1 var(--f-cond);letter-spacing:.04em;text-transform:uppercase;text-decoration:none}
.wh-tool:hover,.wh-tool[aria-expanded=true]{color:var(--ink);background:var(--band)}
.wh-tool svg{display:block}
.wh-tool--icon{width:47px;padding:0}
.wh-theme{position:relative}
.wh-menu{position:absolute;right:0;top:calc(100% + 8px);z-index:30;width:232px;display:grid;gap:2px;padding:6px;border:1.5px solid var(--ink);border-radius:8px;background:var(--paper)}
.wh-menu[hidden]{display:none}
.wh-menu button{display:flex;align-items:center;gap:10px;width:100%;min-height:44px;padding:0 10px;border:0;border-radius:6px;background:transparent;color:var(--ink);font:600 16px/1.2 var(--f-body);text-align:left}
.wh-menu button:hover{background:var(--band)}
.wh-menu button[aria-checked=true]{background:var(--band)}
.wh-menu button:focus-visible{outline-offset:-3px}
.wh-menu .wh-tick{visibility:hidden}
.wh-menu button[aria-checked=true] .wh-tick{visibility:visible}
.wh-menu span:not(.wh-tick){flex:1}
.wh-menu .wh-tick svg{display:block}
.wh-menu-btn{display:none}

.wh-search{display:none;padding:16px var(--gut);background:var(--paper);border-bottom:1px solid var(--rule)}
.wh-search:target,.wh-search.is-open{display:block}
.wh-searchform{max-width:1312px;margin:0 auto;display:flex;align-items:flex-end;gap:10px}
.wh-searchform .wh-field{flex:1 1 auto;max-width:520px}

.wh-drawer{display:none}
@media (max-width:759.98px){
	.wh-drawer:target,.wh-drawer.is-open{display:block;padding:8px 16px 20px;background:var(--paper);border-bottom:2px solid var(--ink)}
}
.wh-drawer__nav a{display:flex;align-items:center;justify-content:space-between;min-height:48px;border-bottom:1px solid var(--rule);color:var(--ink);font:600 19px/1 var(--f-cond);letter-spacing:.04em;text-transform:uppercase;text-decoration:none}
.wh-drawer__nav a[aria-current]{color:var(--cobalt)}
.wh-drawer__rules{margin-top:16px}
.wh-drawer__rules .wh-rules{display:inline-flex;margin-top:6px}
.wh-drawer .wh-searchform{margin-top:16px;flex-wrap:wrap}

/* Bottom tab bar (phones) */
.wh-tabbar{display:none}

/* ---------- Main ---------- */
.wh-main:focus{outline:0}

/* ---------- Hero: Can I fly here? ---------- */
.wh-hero{padding:20px var(--gut) 0}
.wh-hero__card{max-width:1312px;margin:0 auto;background:var(--paper);border:1px solid var(--ink-line);border-radius:12px;overflow:hidden}
.wh-ask{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 20px;min-height:104px;padding:14px 24px}
.wh-ask__title{display:flex;align-items:center;gap:14px}
.wh-h1{font:800 64px/1 var(--f-cond);letter-spacing:-.005em;text-transform:uppercase;white-space:nowrap}
.wh-ask__form{flex:1 1 640px;min-width:0;display:flex;align-items:flex-end;justify-content:flex-end;gap:10px}
.wh-ask__place{flex:1 1 180px;max-width:260px}
.wh-ask__drone{flex:0 1 176px}
.wh-ask__form .wh-btn{flex:none}

.wh-band{display:flex;flex-wrap:wrap;align-items:stretch;gap:16px 28px;min-height:232px;padding:20px 28px 22px;background:var(--go);color:var(--fixed-ink);border-top:1px solid var(--fixed-ink);border-bottom:1px solid var(--fixed-ink)}
.wh-band :focus-visible{outline-color:var(--fixed-ink)}
.wh-band__verdict{flex:none;align-self:flex-end;display:flex;align-items:flex-end;gap:10px}
.wh-verdict{margin:0 0 -6px -6px;font:800 220px/.8 var(--f-cond);text-transform:uppercase;color:#FFFFFF}
.wh-band__verdict svg{margin-bottom:6px}
.wh-band__say{flex:1 1 300px;min-width:0;display:flex;flex-direction:column;justify-content:flex-end}
.wh-answer{font:700 32px/1.1 var(--f-cond);text-wrap:balance}
.wh-band__ctx{margin-top:10px;font-weight:500;font-size:16px;line-height:1.45;font-variant-numeric:tabular-nums}
.wh-band__why{display:flex;align-items:center;gap:8px;margin-top:12px;padding-top:12px;border-top:1px solid var(--fixed-ink);font-weight:500;font-size:16px;line-height:1.4}
.wh-band__why svg{color:var(--fixed-ink)}
.wh-band__hours{flex:0 1 476px;min-width:0;display:flex;flex-direction:column;justify-content:flex-end}
.wh-band__hours>.wh-label{margin-bottom:6px}
.wh-band__acts{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}
.wh-band .wh-btn--solid{background:var(--band-solid);color:#FFFFFF}
.wh-band .wh-btn--solid:hover{background:#47514B}
.wh-band .wh-btn--outline{border-color:var(--fixed-ink);background:transparent;color:var(--fixed-ink)}
.wh-band .wh-btn--outline:hover{background:rgba(255,255,255,.25)}

.wh-hours{display:grid;grid-template-columns:1.45fr repeat(5,minmax(0,1fr));gap:6px;align-items:end;font:600 14px/20px var(--f-semi);letter-spacing:.03em;text-transform:uppercase;white-space:nowrap;font-variant-numeric:tabular-nums;list-style:none}
.wh-hour{padding:6px 6px 8px;border-radius:8px;background:var(--paper);color:var(--ink)}
.wh-hour--now{padding:6px 8px 8px;border:2px solid var(--ink)}
.wh-hour__top{display:flex;align-items:center;justify-content:space-between;gap:4px}
.wh-hour__fig{font:600 22px/28px var(--f-body);letter-spacing:0}
.wh-hour--now .wh-hour__fig{font-size:36px;line-height:40px}
.wh-hour__bar{display:grid;place-items:center;height:24px;margin-top:4px;border-radius:4px;letter-spacing:.02em;color:var(--fixed-ink)}
.wh-bar--go{background:var(--go)}
.wh-bar--caution{background:var(--caution)}
.wh-bar--nogo{background:var(--no-go);color:#FFFFFF}
.wh-bar--ink{background:var(--solid);color:var(--on-solid)}
.wh-mark--go{color:var(--go-ink)}
.wh-mark--caution{color:var(--caution-ink)}
.wh-mark--nogo{color:var(--no-go-ink)}

.wh-why{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,540px),1fr));gap:20px 28px;padding:20px 24px 20px 28px}
.wh-why>*{min-width:0}
/* The map fills its sheet: the phone drawing up to a 540 px sheet, the wide one from there, at any viewport. */
.wh-map>.wh-dwg.wh-m{max-width:none!important;--dw:100cqw!important}
@container (min-width:540px){.wh-map>.wh-dwg.wh-d{display:block!important}.wh-map>.wh-m{display:none!important}}
@container (min-width:628px){.wh-map>.wh-dwg.wh-d{max-width:none!important;--dw:100cqw!important}}
.wh-place,.wh-hoursec__head{display:none}

/* ---------- Disclosure row ---------- */
.wh-discsec{padding:16px var(--gut) 0}
.wh-disc{max-width:1312px;margin:0 auto;background:var(--paper);border:1px solid var(--rule);border-radius:12px}
.wh-disc>summary{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;min-height:60px;padding:8px 20px 8px 24px;border-radius:12px;cursor:pointer}
.wh-disc>summary:hover .wh-disc__more{color:var(--ink)}
.wh-disc__lead{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}
.wh-disc__h{margin-right:8px;font:700 23px/1.1 var(--f-cond)}
.wh-disc__tags{display:flex;flex-wrap:wrap;gap:8px 12px}
.wh-disc__more{margin-left:auto;display:inline-flex;align-items:center;gap:8px;font-weight:500;font-size:15px;color:var(--ink-soft)}
.wh-disc__more svg{color:var(--ink);transition:transform .2s cubic-bezier(.2,.8,.2,1)}
.wh-disc[open] .wh-disc__more svg{transform:rotate(180deg)}
.wh-disc__body{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-top:1px solid var(--rule)}
.wh-ex{min-width:0;padding:20px 24px 24px}
.wh-ex+.wh-ex{border-left:1px solid var(--rule)}
.wh-ex__tags{display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.wh-ex__row{display:flex;flex-wrap:wrap;gap:20px 24px;margin-top:16px}
.wh-ex__map{flex:none;width:282px}
.wh-ex__text{flex:1 1 220px;min-width:0;display:flex;flex-direction:column}
.wh-ex__say{margin-top:8px;font:700 24px/1.15 var(--f-cond);text-wrap:balance}
.wh-ex__go{margin-top:auto;padding-top:16px}

/* ---------- Tool cards ---------- */
.wh-tools{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:24px;margin-top:32px}
.wh-card{min-width:0;display:flex;flex-direction:column;padding:28px;background:var(--paper);border:1px solid var(--rule);border-radius:12px}
.wh-card--7{grid-column:span 7}
.wh-card--5{grid-column:span 5}
.wh-card--12{grid-column:span 12}
.wh-card__head{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:4px 16px}
.wh-card__desc{margin-top:6px;font-size:16px;color:var(--ink-soft)}

.wh-chart{flex:1 1 auto;position:relative;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));column-gap:12px;align-items:end;min-height:284px;margin-top:20px;border-bottom:2px solid var(--ink);font-weight:600;font-size:17px;line-height:1;font-variant-numeric:tabular-nums}
.wh-chart__bar{display:flex;align-items:flex-start;justify-content:space-between;padding:8px 8px 0 10px;border-radius:6px 6px 0 0;color:var(--fixed-ink)}
.wh-chart__bar svg{display:block}
.wh-chart__bar.wh-bar--nogo{color:#FFFFFF}
.wh-chart__limit{position:absolute;left:0;right:0;bottom:215px;border-top:2px dashed var(--ink)}
.wh-chart__limitlabel{position:absolute;left:0;bottom:224px;padding:0 6px;background:var(--paper)}
.wh-chart__hours{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));column-gap:12px;margin-top:8px;text-indent:10px}
.wh-daybar{display:flex;height:32px;margin-top:12px;border:1px solid var(--ink-line);border-radius:6px;overflow:hidden;white-space:nowrap}
.wh-daybar>span{display:flex;align-items:center;gap:6px;padding-left:10px;overflow:hidden}
.wh-daybar__day{flex:0 0 43.3%;background:var(--day);color:var(--on-day)}
.wh-daybar__tw{flex:0 0 6.9%;padding:0!important;background:var(--twilight)}
.wh-daybar__night{flex:1;background:var(--night);color:#FFFFFF}
.wh-daynote{display:flex;align-items:flex-start;gap:8px;margin-top:10px;font-size:15px;line-height:1.45;color:var(--ink-soft)}
.wh-daynote svg{flex:none;margin-top:3px;color:var(--ink)}

/* The picker card (owner, 2026-11-15: it must work): radio chips with the picker's own questions; the top match
   with its studio cutout. Checked chips show in CSS; theme/windhorse/assets/js/cards.js redraws the match. */
.wh-qset{min-width:0;margin:16px 0 0;padding:0;border:0}
.wh-q{padding:0;font-weight:600;font-size:16px;line-height:22px}
.wh-q+.wh-chips{margin-top:6px}
.wh-chips{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;font-weight:500;font-size:16px;line-height:1.2}
.wh-chips--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.wh-opt{position:relative;display:flex;align-items:center;gap:6px;min-height:44px;padding:4px 10px;border:1px solid var(--soft-line);border-radius:8px;background:var(--control);cursor:pointer;transition:border-color .15s,background-color .15s}
.wh-opt:hover{border-color:var(--ink)}
.wh-opt input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:inherit}
.wh-opt svg{display:none;flex:none}
.wh-opt:has(:checked){border-color:var(--solid);background:var(--solid);color:var(--on-solid)}
.wh-opt:has(:checked) svg{display:block}
.wh-opt:has(:focus-visible){outline:3px solid var(--cobalt);outline-offset:2px}
.wh-opt:has(:disabled){border-style:dashed;opacity:.5;cursor:default}
.wh-opt:has(:disabled:checked){border-color:var(--soft-line);background:var(--control);color:var(--ink)}
.wh-opt:has(:disabled:checked) svg{display:none}
.wh-qset__note{display:none;margin-top:6px;font-size:15px;color:var(--ink-soft)}
.wh-picker.is-work .wh-qset__note{display:block}
.wh-pick{display:grid;grid-template-columns:132px minmax(0,1fr);align-items:center;gap:4px 16px;margin-top:auto;padding-top:14px;border-top:1px solid var(--rule)}
.wh-qset+.wh-pick{margin-top:20px}
.wh-picker .wh-qset:last-of-type{margin-bottom:0}
.wh-pick__fig{aspect-ratio:3/2;display:grid;place-items:center;border-radius:8px;background:var(--sheet) linear-gradient(var(--grid-minor) 1px,transparent 1px) 0 0/12px 12px,var(--sheet) linear-gradient(90deg,var(--grid-minor) 1px,transparent 1px) 0 0/12px 12px}
.wh-pick__fig img{width:100%;height:auto}
.wh-pick__k{font:600 14px/20px var(--f-semi);letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft)}
.wh-pick__v{font:700 24px/1.1 var(--f-cond)}
.wh-pick__then{margin-top:2px;font-size:15px;line-height:1.35;color:var(--ink-soft)}
/* The link wraps beside the photo on a 320 px phone; its arrow stays after the last word. */
.wh-pick__txt .wh-more{display:inline-block;margin-top:6px;white-space:normal;text-wrap:balance}

/* The Part 107 sample: three answers to pick; the right one, a wrong pick and the reason show in CSS. */
.wh-quiz__q{margin-top:14px;font-weight:500;font-size:20px;line-height:1.4;font-variant-numeric:tabular-nums}
.wh-quiz__a{display:grid;gap:8px;min-width:0;margin:18px 0 0;padding:0;border:0;font-variant-numeric:tabular-nums}
.wh-quiz__a label{position:relative;display:flex;align-items:center;gap:12px;min-height:52px;padding:0 12px;border:1px solid var(--soft-line);border-radius:8px;background:var(--control);font-weight:500;font-size:17px;cursor:pointer;transition:border-color .15s,background-color .15s}
.wh-quiz__a label:hover{border-color:var(--ink)}
.wh-quiz__a input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:inherit}
.wh-quiz__a label:has(:focus-visible){outline:3px solid var(--cobalt);outline-offset:2px}
.wh-quiz__k{flex:0 0 28px;display:inline-grid;place-items:center;height:28px;border-radius:6px;background:var(--band);font:700 18px var(--f-cond)}
.wh-quiz__t{flex:1}
.wh-quiz__ok,.wh-quiz__no{display:none;align-items:center;gap:6px}
.wh-quiz__ok{color:var(--go-ink)}
.wh-quiz__no{color:var(--no-go-ink)}
.wh-q107:has(.wh-quiz__a :checked) .is-right{border:2px solid var(--go-ink);background:var(--go-pale);font-weight:600}
.wh-q107:has(.wh-quiz__a :checked) .is-right .wh-quiz__k{background:var(--go);color:var(--fixed-ink)}
.wh-q107:has(.wh-quiz__a :checked) .is-right .wh-quiz__ok{display:inline-flex}
.wh-quiz__a label:not(.is-right):has(:checked){border:2px solid var(--no-go-ink);background:var(--no-go-pale)}
.wh-quiz__a label:not(.is-right):has(:checked) .wh-quiz__no{display:inline-flex}
.wh-quiz__hint{margin-top:14px}
.wh-quiz__why{display:none;margin-top:14px;font-size:16px;line-height:1.5}
.wh-q107:has(.wh-quiz__a :checked) .wh-quiz__why{display:block}
.wh-q107:has(.wh-quiz__a :checked) .wh-quiz__hint{display:none}
.wh-q107:not(:has(.wh-quiz__a :checked)) .wh-q107__ans{visibility:hidden}
.wh-quiz__fig{margin-top:16px}

/* The compare card (owner, 2026-11-15: the drone boxes must work): two selects over the two studio cutouts and
   their weight bars against the 0.55 lb line, then head-to-head rows, the label between the two values. */
.wh-cmp__say{margin-top:12px;max-width:62ch;font:700 22px/1.2 var(--f-cond);text-wrap:balance}
.wh-vs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 24px;margin-top:18px}
.wh-vs__col{min-width:0;display:flex;flex-direction:column}
.wh-vs__pick .wh-label{display:flex;align-items:center}
.wh-vs__fig{aspect-ratio:2/1;display:grid;place-items:center;margin-top:10px;padding:6px 12px;border:1px solid var(--rule);border-radius:8px;background:var(--sheet) linear-gradient(var(--grid-minor) 1px,transparent 1px) 0 0/16px 16px,var(--sheet) linear-gradient(90deg,var(--grid-minor) 1px,transparent 1px) 0 0/16px 16px}
.wh-vs__fig img{width:auto;max-width:100%;height:100%;min-height:0;object-fit:contain}
.wh-vs .wh-wt{margin-top:10px;padding-top:0}
.wh-vs__rows{margin-top:16px;border-top:2px solid var(--ink);font-variant-numeric:tabular-nums}
.wh-vs__row{display:grid;grid-template-columns:minmax(0,1fr) 9.5em minmax(0,1fr);grid-template-areas:"a k b";align-items:center;gap:0 12px;min-height:48px;padding:8px 0;border-bottom:1px solid var(--rule)}
.wh-vs__row dt{grid-area:k;text-align:center;font:600 14px/1.25 var(--f-semi);letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft)}
.wh-vs__row dd{grid-area:a;text-align:right;font-weight:500;font-size:16px;line-height:1.3}
.wh-vs__row dd:last-child{grid-area:b;text-align:left}
.wh-vs__row dd small{display:block;font-size:14px;font-weight:500;color:var(--ink-soft)}
.wh-vs__row .wh-tag{height:26px}
.wh-vs__go{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 16px;margin-top:14px}
.wh-key{display:inline-block;width:14px;height:0;margin-right:6px;vertical-align:4px;border-top:2px solid var(--ink)}
.wh-key--2{border-top-color:var(--cobalt)}
.wh-pair{display:grid;gap:10px;margin-top:18px}
.wh-pair__box{display:flex;align-items:center;gap:8px;height:48px;padding:0 12px;border:1px solid var(--soft-line);border-radius:8px;background:var(--control);font-weight:500;font-size:17px}

.wh-reg{flex-direction:row;flex-wrap:wrap;gap:28px 48px}
.wh-reg__text{flex:1 1 320px;min-width:0;display:flex;flex-direction:column}
.wh-reg__fig{flex:2.4 1 760px;min-width:0}
.wh-ctx{display:flex;align-items:center;flex-wrap:wrap;gap:0 8px;margin-top:16px;font-weight:500;font-size:15px;line-height:1.4;color:var(--ink-soft)}
.wh-ans{display:flex;align-items:center;gap:10px;margin-top:2px;font:700 32px/1.1 var(--f-cond)}
.wh-ans svg{color:var(--go-ink)}
.wh-ans--ink svg{color:var(--ink)}
.wh-ans__why{margin-top:8px;max-width:36ch;color:var(--ink-soft)}
.wh-reg__go{margin-top:auto;padding-top:20px}
.wh-reg__note{margin-top:12px;font-size:15px;line-height:1.5}
.wh-reg .wh-s2{max-width:324px;--dw:min(100cqw,324px)}
.wh-row107{display:none}

/* ---------- Rules route ---------- */
.wh-route__head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:20px 40px}
.wh-route__head>div{flex:1 1 420px;min-width:0}
.wh-route__ctx{margin:0 0 -2px;font-weight:500;font-size:15px;line-height:1.4;color:var(--ink-soft)}
.wh-route{position:relative;display:grid;grid-template-columns:40px repeat(5,minmax(0,1fr));margin-top:56px;list-style:none}
.wh-route::before{content:"";position:absolute;left:12px;right:0;top:19px;height:2px;background:var(--ink)}
.wh-route::after{content:"";position:absolute;left:4px;top:12px;width:16px;height:16px;border-radius:50%;background:var(--ink)}
.wh-route>li{position:relative;min-width:0;display:flex;flex-direction:column;padding:0 28px 0 0}
.wh-route>li:first-child{grid-column:2}
.wh-step__n{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--solid);color:var(--on-solid);font:700 21px/1 var(--f-cond)}
.wh-step__t{margin-top:20px;font:700 26px/1.1 var(--f-cond);text-wrap:balance}
.wh-step__r{margin-top:10px;font-size:16px;line-height:1.55;color:var(--ink-soft)}
.wh-step__go{margin-top:auto;padding-top:24px}
.wh-route__tag{display:none}
.wh-fork{display:flex;flex-wrap:wrap;align-items:center;gap:12px 24px;min-height:88px;margin-top:40px;padding:16px 24px 16px 0;background:var(--band);border-radius:8px}
.wh-fork svg{flex:none;color:var(--ink)}
.wh-fork p{flex:1 1 560px;min-width:0;font-size:16px;line-height:1.5}
.wh-fork__soft{color:var(--ink-soft)}
.wh-fork .wh-btn{flex:none}
.wh-fork--m{display:none}

/* ---------- Drones at one scale ---------- */
.wh-scale{position:relative;margin-top:32px;padding:64px 40px}
.wh-scale__grid{display:grid;grid-template-columns:minmax(157px,1fr) minmax(373px,1fr) minmax(212px,1fr);column-gap:40px;align-items:end}
.wh-scale__fig{min-width:0;display:flex;flex-direction:column;align-items:center}
.wh-scale__fig--over{position:relative;align-self:stretch;justify-content:flex-end}
.wh-scale__line{position:absolute;top:-8px;bottom:-12px;left:-20px;border-left:1px dashed var(--ink-line)}
.wh-scale__box{position:absolute;top:-48px;left:-20px;transform:translateX(-50%);display:inline-flex;align-items:center;height:26px;padding:0 8px;border:1px solid var(--ink-line);border-radius:4px;background:var(--control);white-space:nowrap}
.wh-scale__under,.wh-scale__over{position:absolute;top:20px;display:flex;align-items:center;gap:6px}
.wh-scale__under{left:40px;color:var(--go-ink)}
.wh-scale__over{top:-44px;left:56px;white-space:nowrap}
.wh-scale__fig figcaption{margin-top:8px}
.wh-dim{margin-top:6px;overflow:visible}
.wh-scale__note{position:absolute;left:40px;bottom:18px;display:flex;align-items:center;gap:12px}
.wh-scale__note svg{display:block}
.wh-models{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:40px;margin-top:28px;padding:0 40px}
.wh-models>div{min-width:0}
.wh-models h3 a,.wh-dcard h3 a{color:var(--ink);text-decoration:none}
.wh-models h3 a:hover,.wh-dcard h3 a:hover{color:var(--cobalt);text-decoration:underline}
.wh-models__sub{margin-top:4px;font-size:16px;color:var(--ink-soft)}
.wh-models .wh-rows{margin-top:12px}
.wh-models .wh-row dd,.wh-dcard .wh-row dd{text-align:left}
.wh-paper{display:flex;align-items:flex-start;gap:10px;margin-top:14px;font-size:16px;line-height:1.45}
.wh-paper>span:last-child{padding-top:3px;text-wrap:balance}
.wh-guides{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));column-gap:24px;margin-top:48px}
.wh-arrowlink{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:64px;border-top:2px solid var(--ink);color:var(--ink);font:700 24px/1.1 var(--f-cond);text-decoration:none}
.wh-arrowlink:hover{color:var(--cobalt)}
.wh-arrowlink svg{flex:none;color:var(--cobalt)}
.wh-dcard{display:none}

/* ---------- Guides by job ---------- */
.wh-jobs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:40px;margin-top:32px}
.wh-job{min-width:0;padding-top:16px;border-top:2px solid var(--ink)}
/* Each job column opens with a photo of the job (owner, 2026-11-14: every block that can show a photo does). */
.wh-job__fig{margin:0 0 16px;aspect-ratio:16/9;overflow:hidden;border-radius:10px;background:var(--band)}
.wh-job__fig img{display:block;width:100%;height:100%;object-fit:cover}
.wh-job__sub{margin-top:4px;font-size:16px;color:var(--ink-soft)}
.wh-job .wh-btn{margin-top:16px;padding:0 18px 0 20px}
.wh-job ul{margin-top:16px;list-style:none;border-bottom:1px solid var(--rule);font-weight:500}
.wh-job li{border-top:1px solid var(--rule)}
.wh-job li a{display:flex;align-items:center;justify-content:space-between;min-height:52px;color:var(--ink);text-decoration:none}
.wh-job li a:hover{color:var(--cobalt)}
.wh-job li svg{color:var(--cobalt)}

/* ---------- Trackers ---------- */
.wh-track{margin-top:32px;padding:0 28px;list-style:none;background:var(--paper);border:1px solid var(--rule);border-radius:12px}
.wh-track li{position:relative;display:flex;align-items:center;flex-wrap:wrap;gap:8px 24px;min-height:88px;padding:16px 0}
.wh-track li+li{border-top:1px solid var(--rule)}
.wh-track h3{flex:0 1 340px}
.wh-track__fig{flex:0 0 112px;aspect-ratio:4/3;overflow:hidden;border-radius:8px;background:var(--band)}
.wh-track__fig img{display:block;width:100%;height:100%;object-fit:cover}
.wh-track h3 a{color:var(--ink);text-decoration:none}
.wh-track h3 a::after{content:"";position:absolute;inset:0}
.wh-track li:hover h3 a{color:var(--cobalt);text-decoration:underline}
.wh-track p{flex:1 1 320px;min-width:0;max-width:56ch;font-size:16px;line-height:1.45;color:var(--ink-soft)}
.wh-track .wh-tag{margin-left:auto}
.wh-track li>svg{color:var(--cobalt)}
.wh-newsline{margin-top:20px}
.wh-newsline a{font-weight:600;white-space:nowrap}

/* ---------- Home: how the check decides, questions, sources ---------- */
/* The method: leader rows whose response is a paragraph, the label and its leader on the left; on phones the
   paragraph goes under the label, as in the verdict's reasons. */
.wh-how{margin-top:32px}
.wh-how .wh-row{align-items:flex-start;gap:24px;padding:14px 0 16px}
.wh-how dt{flex:0 0 36%;align-items:flex-end;line-height:26px}
.wh-how .wh-leader{margin:0 0 7px}
.wh-how dd{flex:1 1 0;min-width:0;max-width:64ch;font:400 17px/1.55 var(--f-body);text-align:left}
.wh-nw{white-space:nowrap}
.wh-prov--how{justify-content:space-between;padding:0;border-top:0}
.wh-prov--how p{padding:10px 0}
.wh-prov--how a{display:inline-flex;align-items:center;min-height:44px}
.wh-faq{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 48px;margin-top:32px}
.wh-faq__item{padding:20px 0 24px;border-top:1px solid var(--rule)}
.wh-faq__item p{margin-top:10px;max-width:62ch;color:var(--ink-soft)}
.wh-srcs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px 48px;margin-top:32px}
.wh-srcs h3{color:var(--ink-soft)}
.wh-srcs ul{margin-top:10px;padding:0;list-style:none;border-bottom:1px solid var(--rule)}
.wh-srcs li{padding:12px 0;border-top:1px solid var(--rule);font-size:16px;line-height:1.45;color:var(--ink-soft)}
.wh-srcs [data-source-doc]{font-weight:600;color:var(--ink)}
@media (max-width:967.98px){.wh-faq,.wh-srcs{grid-template-columns:1fr}}

/* ---------- Footer ---------- */
.wh-foot{padding:64px var(--gut) 40px;background:var(--foot);border-top:1px solid var(--foot-line);color:var(--foot-ink)}
.wh-foot a{color:var(--foot-ink);text-decoration:none}
.wh-foot a:hover{text-decoration:underline}
.wh-foot :focus-visible{outline-color:#9DBAFF}
.wh-foot__top{display:flex;flex-wrap:wrap;gap:40px 56px}
.wh-foot__brand{flex:1 1 200px;min-width:0}
.wh-foot__logo{display:flex;align-items:center;gap:9px;font:800 28px/1 var(--f-cond);letter-spacing:.02em;text-transform:uppercase}
.wh-foot__logo svg{display:block;width:36px;height:36px}
.wh-foot__tag{margin-top:12px;max-width:28ch;font-size:15px;line-height:1.5;color:var(--foot-soft)}
.wh-foot__nav{flex:5 1 760px;min-width:0;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:32px 24px;font-size:15px;line-height:1.35}
.wh-foot__nav h2{margin:0 0 4px;font:600 18px/1.2 var(--f-cond);letter-spacing:.04em;text-transform:uppercase}
.wh-foot__nav ul{list-style:none}
.wh-foot__nav a{display:flex;align-items:center;min-height:44px;padding:4px 0}
.wh-foot__row{display:flex;flex-wrap:wrap;gap:0 32px;margin-top:40px;padding-top:12px;border-top:1px solid var(--foot-rule);font-size:15px;line-height:1.35}
.wh-foot__row>*{display:flex;align-items:center;min-height:44px}
.wh-foot__legal{margin-top:16px;max-width:90ch;font-size:14px;line-height:1.5;color:var(--foot-soft)}

/* ---------- Search results and plain pages ---------- */
.wh-page{padding:48px var(--gut) 80px}
/* Breadcrumb trail of an inner page (functions.php, wh_breadcrumbs): small type, a slash between steps, 44 px links. */
.wh-crumbs ol{display:flex;flex-wrap:wrap;align-items:center;gap:0 8px;margin:-12px 0 8px;list-style:none;font-weight:500;font-size:15px;line-height:1.3;color:var(--ink-soft)}
.wh-crumbs li{display:flex;align-items:center;gap:8px;min-height:44px}
.wh-crumbs li+li::before{content:"/";color:var(--leader)}
.wh-crumbs a{display:flex;align-items:center;min-height:44px;font-weight:600}
.wh-page__h1{font:800 72px/.95 var(--f-cond);text-transform:uppercase;text-wrap:balance}
.wh-page__intro{margin-top:16px;max-width:62ch;font-size:19px;color:var(--ink-soft)}
.wh-prose{margin-top:32px;max-width:70ch}
.wh-prose>*+*{margin-top:1em}
.wh-prose h2{margin-top:1.6em;font:700 32px/1.1 var(--f-cond)}
.wh-results{margin-top:32px;max-width:70ch;list-style:none;border-bottom:1px solid var(--rule)}
.wh-results li{padding:16px 0;border-top:1px solid var(--rule)}
.wh-results a{font:700 24px/1.15 var(--f-cond)}
.wh-results p{margin-top:4px;font-size:16px;color:var(--ink-soft)}
.wh-page .wh-searchform{margin:24px 0 0;justify-content:flex-start}

/* ---------- Provenance bar (reading and model pages) ---------- */
.wh-prov{display:flex;flex-wrap:wrap;align-items:center;gap:8px 20px;padding:10px 0;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);font-weight:500;font-size:15px;line-height:1.4}

/* ---------- Inner pages: guides and hubs (page.php with wh_type), shared by every reading page type ---------- */
/* The lead answers the page's question under the H1 (Answer role); a guide's provenance bar follows it. Each part of
   the bar is one 44 px line: the tick and "Last checked" date, the link to Sources, the report address as text. */
.wh-lead{margin-top:20px;max-width:25em;font:700 32px/1.1 var(--f-cond);text-wrap:pretty}
.wh-prov--page{margin-top:28px;padding:0 0 0;column-gap:28px;row-gap:0}
.wh-prov--page p{display:flex;align-items:center;gap:8px;min-height:44px}
.wh-prov--page svg{color:var(--go-ink)}
.wh-prov--page a{display:inline-flex;align-items:center;min-height:44px}
/* The text column (800 px, ~70ch measure) and, from 1200 px, the 256 px on-page link column beside it. */
.wh-doc{margin-top:48px}
.wh-doc__main{min-width:0;max-width:800px}
.wh-doc__main>*+*{margin-top:20px}
.wh-doc__main>h2{margin-top:80px;font:700 48px/1 var(--f-cond);text-transform:uppercase;text-wrap:balance}
.wh-doc__main>h2:first-child{margin-top:0}
.wh-doc__main>h3{margin-top:40px;font:700 28px/1.1 var(--f-cond)}
.wh-doc__main>h2+*{margin-top:28px}
.wh-doc__main>h2+p,.wh-doc__main>h3+p{margin-top:12px}
.wh-doc__main>p,.wh-doc__main>ul{max-width:70ch}
.wh-doc__main>ul{padding-left:22px}
.wh-doc__main>ul>li+li{margin-top:8px}
.wh-notes{font-weight:500;font-size:15px;line-height:1.45;color:var(--ink-soft)}
.wh-notes strong{color:var(--ink)}
.wh-guides--doc{grid-template-columns:repeat(2,minmax(0,1fr))}
.wh-doc .wh-faq,.wh-doc .wh-srcs{grid-template-columns:1fr}
.wh-doc .wh-faq__item p{max-width:70ch}
/* Rule card: what the rule says, quoted, with its document named as text (never a link) and what it means. */
.wh-rulecard{padding:28px;background:var(--paper);border:1px solid var(--rule);border-radius:12px}
.wh-rulecard>.wh-label{display:block;color:var(--ink-soft)}
.wh-rulecard blockquote{margin:12px 0 0;font:500 19px/1.5 var(--f-body)}
.wh-rulecard__doc{margin-top:12px;font-weight:500;font-size:15px;line-height:1.4;color:var(--ink-soft)}
.wh-rulecard__doc cite{font-style:normal;font-weight:600;color:var(--ink)}
.wh-rulecard__means{margin-top:16px;padding-top:16px;border-top:1px solid var(--rule)}
/* Data table: label-role header over a 2 px Ink rule, 52 px rows on 1 px Rule, data role, the caption says what was
   read and when. On phones a --fold table becomes one card per row: the row header as its title, each labelled cell
   a leader row (label, dotted leader, value), so five word columns never scroll sideways at 320 px. */
.wh-table{width:100%;border-collapse:collapse;font:500 16px/1.4 var(--f-body);font-variant-numeric:tabular-nums}
.wh-table caption{padding-bottom:12px;text-align:left;font-weight:500;font-size:15px;line-height:1.4;color:var(--ink-soft)}
.wh-table th,.wh-table td{padding:14px 16px 14px 0;border-bottom:1px solid var(--rule);text-align:left;vertical-align:top}
.wh-table tr>:last-child{padding-right:0}
.wh-table thead th{padding-top:0;padding-bottom:10px;border-bottom:2px solid var(--ink);font:600 14px/20px var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft);vertical-align:bottom}
.wh-table tbody tr{height:52px}
.wh-table tbody tr[hidden]{display:none}
.wh-table tbody th{font-weight:600}
.wh-table tbody th a{display:inline-flex;align-items:center;min-height:44px;margin:-10px 0}
.wh-table__src{display:block;margin-top:4px;font-size:15px;color:var(--ink-soft)}
.wh-table--log tbody th{width:1%;white-space:nowrap}
.wh-table--hub tbody th{width:34%;font:700 24px/1.15 var(--f-cond)}
.wh-table--hub td:last-child{white-space:nowrap}
.wh-filter{max-width:400px}
.wh-filter__n{min-height:21px;margin-top:6px}
@media (max-width:759.98px){
	.wh-lead{margin-top:16px;font-size:24px;line-height:1.15}
	.wh-prov--page{display:block;margin-top:20px}
	.wh-doc{margin-top:32px}
	.wh-doc__main>h2{margin-top:56px;font-size:34px}
	.wh-doc__main>h3{margin-top:32px;font-size:24px}
	.wh-doc__main>h2+*{margin-top:20px}
	.wh-doc__main>h2+p,.wh-doc__main>h3+p{margin-top:8px}
	.wh-rulecard{padding:20px 16px}
	.wh-rulecard blockquote{font-size:17px}
	.wh-table--fold,.wh-table--fold caption,.wh-table--fold tbody,.wh-table--fold tr,.wh-table--fold th,.wh-table--fold td{display:block;width:auto}
	.wh-table--fold thead{display:none}
	.wh-table--fold tbody{border-top:2px solid var(--ink)}
	.wh-table--fold tbody tr{height:auto;padding:14px 0 16px;border-bottom:1px solid var(--rule)}
	.wh-table--fold tbody th,.wh-table--fold td{width:auto;padding:0;border:0;white-space:normal}
	.wh-table--fold tbody th{font:700 24px/1.15 var(--f-cond)}
	.wh-table--fold td{margin-top:8px}
	.wh-table--fold td[data-label]{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:12px;margin-top:4px;min-height:32px}
	.wh-table--fold td[data-label]::before{content:attr(data-label);order:-2;font:600 14px/20px var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft)}
	.wh-table--fold td[data-label]::after{content:"";order:-1;flex:1 0 16px;border-bottom:2px dotted var(--leader)}
	.wh-table--fold td[data-label]>span{margin-left:auto;text-align:right}
	.wh-table--log tbody th{font:600 19px/1.2 var(--f-cond);letter-spacing:.04em;text-transform:uppercase}
	.wh-filter{max-width:none}
}
/* Part 107 practice test (/tools/part-107-practice-test/): the tool box spans the text and link columns; its screens
   (start, question, finish check, result, review) are engine/quiz-view.mjs, the start screen and the samples
   design/scripts/build_part_107.py. Choices are quiz options (52 px, 1 px Ink Soft, letter chips on the kneeboard
   tint); the picked one takes a 2 px Ink outline; in a review the right one is GO Ink on GO Pale and a wrong pick
   NO-GO Ink on NO-GO Pale, each with its word and mark. Answered questions in the jump list are Ink filled, the
   current one ringed. Parts are boxes or tints, never a one-sided rule. */
.wh-qz{padding:28px;border:1px solid var(--rule);border-radius:12px;background:var(--paper)}
.wh-qz__screen>*+*{margin-top:16px}
.wh-qz__msg:empty{margin:0}
html.wh-js .wh-qz__nojs{display:none}
.wh-qz [tabindex="-1"]:focus{outline:0}
.wh-qz__modes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 48px}
.wh-qz__mode{display:flex;flex-direction:column;align-items:flex-start;gap:10px}
.wh-qz__mode p{max-width:46ch}
.wh-qz__mode .wh-btn{margin-top:auto}
.wh-qz__facts,.wh-qz__n,.wh-qz__clock{font:700 24px/1.2 var(--f-cond);font-variant-numeric:tabular-nums}
.wh-qz__bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px 20px;padding:8px 16px;border-radius:8px;background:var(--band)}
.wh-qz__time{display:flex;align-items:baseline;gap:10px}
.wh-qz__time .wh-label{color:var(--ink-soft)}
.wh-qz__run{display:grid;gap:32px;margin-top:24px}
.wh-qz__q{font-weight:600;font-size:20px;line-height:1.4}
h3.wh-qz__q{font-size:22px;line-height:1.35;text-wrap:pretty}
.wh-qz__set{display:grid;gap:8px;min-width:0;margin:20px 0 0;padding:0;border:0}
.wh-qz__c{display:flex;align-items:center;gap:12px;min-height:52px;padding:10px 12px;border:1px solid var(--soft-line);border-radius:8px;background:var(--control);font-weight:500;font-size:17px;line-height:1.35;cursor:pointer}
.wh-qz__c:hover{background:var(--band)}
.wh-qz__c:has(input:checked){padding:9px 11px;border:2px solid var(--ink);font-weight:600}
.wh-qz__c input,.wh-qz__mark input{flex:none;width:20px;height:20px;margin:0;accent-color:var(--solid)}
.wh-qz__k{flex:0 0 28px;display:inline-grid;place-items:center;height:28px;border-radius:6px;background:var(--band);font:700 18px/1 var(--f-cond)}
.wh-qz__c:has(input:checked) .wh-qz__k{background:var(--solid);color:var(--on-solid)}
.wh-qz__t{flex:1 1 12em;min-width:0}
.wh-qz__mark{display:inline-flex;align-items:center;gap:10px;min-height:44px;margin-top:12px;font-weight:500;cursor:pointer}
.wh-qz__nav{display:flex;gap:12px;margin-top:12px}
.wh-qz__nav .wh-btn{flex:1 1 0;max-width:200px}
.wh-qz .wh-btn:disabled{border:1.5px solid var(--rule);background:transparent;color:var(--ink-soft);cursor:default}
.wh-qz__side{display:flex;flex-direction:column;align-items:flex-start;gap:12px}
.wh-qz__side>.wh-label{color:var(--ink-soft)}
.wh-qz__jump{display:grid;grid-template-columns:repeat(auto-fill,44px);gap:8px;width:100%;list-style:none}
.wh-qz__j{position:relative;display:grid;place-items:center;width:44px;height:44px;padding:0;border:1px solid var(--soft-line);border-radius:8px;background:var(--control);color:var(--ink);font:600 16px/1 var(--f-body);font-variant-numeric:tabular-nums;cursor:pointer}
.wh-qz__j:not(.is-done):hover{background:var(--band)}
.wh-qz__j.is-done{border-color:var(--solid);background:var(--solid);color:var(--on-solid)}
.wh-qz__j.is-done:hover{border-color:var(--ink-soft);background:var(--ink-soft)}
.wh-qz__j[aria-current]{outline:2px solid var(--ink);outline-offset:2px}
.wh-qz__j svg{display:none;position:absolute;top:3px;right:3px;width:12px;height:12px}
.wh-qz__j.is-mark svg{display:block}
.wh-qz__key{display:flex;flex-wrap:wrap;gap:6px 16px;list-style:none;font-weight:500;font-size:15px;line-height:1.4;color:var(--ink-soft)}
.wh-qz__key li{display:flex;align-items:center;gap:8px}
.wh-qz__key .wh-qz__j{width:24px;height:24px;cursor:default}
.wh-qz__key .wh-qz__j svg{top:2px;right:2px;width:10px;height:10px}
.wh-qz__fin{margin-top:4px}
.wh-qz__confirm{width:100%;padding:16px;border:1px solid var(--ink);border-radius:8px}
.wh-qz__acts{display:flex;flex-wrap:wrap;gap:12px}
.wh-qz__confirm .wh-qz__acts{margin-top:12px}
.wh-qz__result>*+*{margin-top:16px}
.wh-qz__note{padding:12px 16px;border-radius:8px;background:var(--band);font-weight:500}
.wh-qz__score{display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px}
.wh-qz__big{font:700 40px/1.05 var(--f-cond);font-variant-numeric:tabular-nums}
.wh-qz__result .wh-qz__areas,.wh-qz__result .wh-qz__acts{margin-top:24px}
.wh-qz__areas td{white-space:nowrap}
.wh-qz__review{margin-top:56px}
.wh-qz__sum{margin-top:8px;max-width:70ch;color:var(--ink-soft)}
.wh-qz__items{display:grid;gap:16px;margin-top:20px;list-style:none}
.wh-qz__item{padding:20px 24px 24px;border:1px solid var(--rule);border-radius:12px;background:var(--paper)}
.wh-qz__head{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}
.wh-qz__head .wh-label{color:var(--ink-soft)}
.wh-qz__item .wh-qz__q{margin-top:12px;font-size:19px}
.wh-qz__opts{display:grid;gap:8px;margin-top:14px;list-style:none}
.wh-qz__opts li{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;min-height:52px;padding:10px 12px;border:1px solid var(--soft-line);border-radius:8px;background:var(--control);font-weight:500;font-size:17px;line-height:1.35}
.wh-qz__opts .is-right,.wh-qz__opts .is-wrong{padding:9px 11px;border-width:2px;font-weight:600}
.wh-qz__opts .is-right{border-color:var(--go-ink);background:var(--go-pale)}
.wh-qz__opts .is-wrong{border-color:var(--no-go-ink);background:var(--no-go-pale)}
.wh-qz__opts .is-right .wh-qz__k{background:var(--go);color:var(--fixed-ink)}
.wh-qz__opts .is-wrong .wh-qz__k{background:var(--no-go);color:#FFFFFF}
.wh-qz__w{display:inline-flex;align-items:center;gap:6px;font:600 14px/20px var(--f-semi);letter-spacing:.03em;text-transform:uppercase}
.is-right>.wh-qz__w{color:var(--go-ink)}
.is-wrong>.wh-qz__w{color:var(--no-go-ink)}
.wh-qz__why{margin-top:14px;max-width:70ch;font-size:16px;line-height:1.5}
.wh-qz__src{margin-top:8px;font-weight:500;font-size:15px;line-height:1.4;color:var(--ink-soft)}
.wh-qz__src cite{font-style:normal;font-weight:600;color:var(--ink)}
.wh-qz__ans{margin-top:8px}
.wh-qz__ans>summary{display:inline-flex;align-items:center;gap:6px;min-height:44px;font-weight:600;color:var(--cobalt);cursor:pointer}
.wh-qz__ans>summary:hover{color:var(--cobalt-hover);text-decoration:underline;text-underline-offset:3px}
.wh-qz__ans>summary svg{flex:none;transition:transform .2s}
.wh-qz__ans[open]>summary svg{transform:rotate(180deg)}
.wh-qz__ans .wh-qz__opts{margin-top:4px}
@media (min-width:960px){
	.wh-qz__run{grid-template-columns:minmax(0,1fr) 264px;column-gap:48px;align-items:start}
	.wh-qz__samples{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}
}
@media (max-width:759.98px){
	.wh-qz{padding:20px 16px}
	.wh-qz__modes{grid-template-columns:1fr}
	.wh-qz__mode .wh-btn{width:100%}
	.wh-qz__facts,.wh-qz__n,.wh-qz__clock{font-size:21px}
	h3.wh-qz__q{font-size:20px}
	.wh-qz__nav .wh-btn{max-width:none}
	.wh-qz__big{font-size:32px}
	.wh-qz__item{padding:16px}
	.wh-qz__item .wh-qz__q{font-size:18px}
}
/* Model page limits (W-Model): the home page's plan view at one scale on its sheet (1 px = 1 mm from 760 px, the
   1 px = 2 mm drawing below), beside the leader rows or above them where the column is narrower than the two; the
   sheet states its scale in the caption. */
.wh-limits{display:flex;flex-wrap:wrap;align-items:flex-start;gap:32px 40px}
.wh-limits__fig{flex:none;padding:24px 24px 16px}
.wh-limits__fig>svg{margin-inline:auto}
.wh-limits__fig figcaption{display:flex;align-items:center;gap:12px;margin-top:12px}
.wh-limits__fig figcaption svg{display:block;flex:none}
.wh-limits__fig--m{display:none}
.wh-limits>.wh-rows{flex:1 1 320px;min-width:0}
.wh-limits .wh-row{min-height:56px}
/* Full spec table (W-Model "Full specifications"): one tbody per group, the group named once in a rowgroup cell, a
   2 px Ink rule between groups; on phones each group is a titled list of label and value pairs. */
.wh-spec th[scope=rowgroup]{width:150px;font:700 24px/1.15 var(--f-cond)}
.wh-spec tbody+tbody>tr:first-child>*{border-top:2px solid var(--ink)}
.wh-spec tbody th[scope=row]{width:40%;font:600 19px/1.2 var(--f-cond);letter-spacing:.04em;text-transform:uppercase}
.wh-spec__k{display:flex;align-items:baseline;gap:12px}
.wh-spec__k::after{content:"";flex:1 0 16px;border-bottom:2px dotted var(--leader)}
/* A numbered list in the text column (criteria in order). */
.wh-doc__main>ol{max-width:70ch;padding-left:22px}
.wh-doc__main>ol>li+li{margin-top:8px}
@media (max-width:759.98px){
	.wh-limits__fig--d{display:none}
	.wh-limits__fig--m{display:block;flex:1 1 100%;padding:16px 16px 12px}
	.wh-limits>.wh-rows{flex-basis:100%}
	.wh-spec,.wh-spec caption,.wh-spec tbody,.wh-spec tr,.wh-spec th,.wh-spec td{display:block;width:auto}
	.wh-spec thead{display:none}
	.wh-spec th[scope=rowgroup]{margin:16px 0 0;padding:0 0 8px;border-bottom:2px solid var(--ink);font-size:24px}
	.wh-spec tbody tr{height:auto;padding:12px 0 14px;border-bottom:1px solid var(--rule)}
	.wh-spec tbody tr>*{border-top:0}
	.wh-spec tbody th[scope=row],.wh-spec td{width:auto;padding:0;border:0}
	.wh-spec td{margin-top:4px}
	.wh-spec__k::after{display:none}
}
/* State table (build_state_tables.py): one card per state at every width, since its cells are sentences; each
   labelled cell is a row of the card, the label beside the text, above it on phones. */
.wh-table--states,.wh-table--states caption,.wh-table--states tbody,.wh-table--states tr,.wh-table--states th,.wh-table--states td{display:block;width:auto}
.wh-table--states thead{display:none}
.wh-table--states tbody{border-top:2px solid var(--ink)}
.wh-table--states tbody tr{height:auto;padding:20px 0 24px;border-bottom:1px solid var(--rule)}
.wh-table--states tbody th,.wh-table--states td{padding:0;border:0}
.wh-table--states tbody th{font:700 28px/1.1 var(--f-cond)}
.wh-table--states td{display:grid;grid-template-columns:200px minmax(0,1fr);column-gap:24px;margin-top:12px;line-height:1.45}
.wh-table--states td::before{content:attr(data-label);font:600 14px/20px var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft)}
.wh-table--states td:first-of-type{font-weight:600}
@media (max-width:759.98px){
	.wh-table--states td{grid-template-columns:minmax(0,1fr);row-gap:2px;margin-top:10px}
	.wh-table--states tbody th{font-size:24px}
}
/* News log (build_news.py): the topic choice as radio chips above the text filter (one choice, 44 px, Ink fill when
   chosen, wrapping on phones), each entry's link to the page on this site that covers it (a 44 px target), and the
   note under a status tag in normal weight. The log's status tags stay neutral (Ink, outlined): GO, CAUTION and NO-GO
   report a flight state only. */
.wh-topics{min-width:0;margin-inline:0;padding:0;border:0}
.wh-topics>legend{margin-bottom:4px;padding:0;color:var(--ink-soft)}
.wh-topics__opts{display:flex;flex-wrap:wrap;gap:8px}
.wh-topics label{position:relative;display:inline-flex;align-items:center;min-height:44px;padding:0 14px;border:1px solid var(--soft-line);border-radius:8px;background:var(--control);font-weight:500;font-size:16px;line-height:1.2;cursor:pointer}
.wh-topics input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.wh-topics label:has(:checked){border-color:var(--solid);background:var(--solid);color:var(--on-solid)}
.wh-topics label:has(:focus-visible){outline:3px solid var(--cobalt);outline-offset:2px}
.wh-table__go{display:inline-flex;align-items:center;min-height:44px;margin:-10px 0}
.wh-table--states .wh-tag+.wh-table__src{font-weight:500}
/* Drone weather forecast (/tools/drone-weather/): the tool box (form, rulebook, the line for readers without script)
   and its answer, engine/drone-weather-view.mjs: the summary line, the context line, two band-tinted boxes (best
   daylight window, now), the hours table with one band-tinted day row per local date (a --fold table: below 1024 px
   one card per hour, since eight columns do not fit a tablet), what was not read with "Check again", and what each
   number is as a two-column list. States are the shared tags, word and mark; nothing else carries a state colour.
   The ratings table below is design/scripts/build_drone_weather.py's, its source line under the model name. */
.wh-fc{padding:28px;border:1px solid var(--rule);border-radius:12px;background:var(--paper)}
.wh-fc>*+*{margin-top:16px}
.wh-fc__form{position:relative;display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px}
.wh-fc__place{flex:1 1 260px;min-width:0}
.wh-fc__drone{flex:0 1 240px;min-width:0}
.wh-fc__form .wh-btn{flex:none}
.wh-fc__msg{font-weight:600;font-size:16px;line-height:1.4}
.wh-fc__picks:not([hidden]){display:flex;flex-wrap:wrap;gap:8px}
.wh-fc__picks .wh-btn{max-width:100%;white-space:normal;text-align:center}
.wh-fc__rules{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}
.wh-fc__rules>.wh-label{color:var(--ink-soft)}
.wh-fc__nojs{font-weight:500;font-size:15px;line-height:1.4;color:var(--ink-soft)}
html.wh-js .wh-fc__nojs{display:none}
.wh-fc__out:empty{margin-top:0}
.wh-fc__ans>*+*{margin-top:16px}
.wh-fc__say{font:700 28px/1.15 var(--f-cond)}
.wh-fc__say:focus{outline:0}
.wh-fc__ctx,.wh-fc__scope,.wh-fc__note{font-weight:500;font-size:15px;line-height:1.4;color:var(--ink-soft)}
.wh-fc__boxes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.wh-fc__box{padding:16px 20px;border-radius:8px;background:var(--band)}
.wh-fc__box>*+*{margin-top:8px}
.wh-fc__box>.wh-label{color:var(--ink-soft)}
.wh-fc__big{font:700 24px/1.2 var(--f-cond);font-variant-numeric:tabular-nums}
.wh-fc__line{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px}
.wh-fc__ans>.wh-fc__wrap{margin-top:28px}
.wh-fc__table th,.wh-fc__table td{padding-right:12px}
.wh-fc__table tbody th{white-space:nowrap}
.wh-fc__day th{padding:8px 12px;border-bottom:0;background:var(--band);font:600 14px/20px var(--f-semi);letter-spacing:.03em;text-transform:uppercase;white-space:normal}
.wh-fc__sub,.wh-fc__by{display:block;margin-top:2px;font-weight:500;font-size:15px;line-height:1.4;color:var(--ink-soft)}
.wh-fc__by{margin-top:6px}
.wh-fc__miss{display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px;padding:16px 20px;border-radius:8px;background:var(--band)}
.wh-fc__miss p{flex:1 1 320px}
.wh-fc__ans>.wh-fc__nh{margin-top:32px;color:var(--ink-soft)}
.wh-fc__notes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 32px;margin:0}
.wh-fc__notes dt{font-weight:600}
.wh-fc__notes dd{margin:4px 0 0;font-weight:500;font-size:15px;line-height:1.45;color:var(--ink-soft)}
.wh-fc__ratings .wh-table__src{font:500 15px/1.4 var(--f-body);letter-spacing:0;text-transform:none}
@media (max-width:1023.98px){
	.wh-fc__table,.wh-fc__table caption,.wh-fc__table tbody,.wh-fc__table tr,.wh-fc__table th,.wh-fc__table td{display:block;width:auto}
	.wh-fc__table thead{display:none}
	.wh-fc__table tbody{border-top:2px solid var(--ink)}
	.wh-fc__table tbody+tbody{margin-top:24px}
	.wh-fc__table tbody tr{height:auto;padding:14px 0 16px;border-bottom:1px solid var(--rule)}
	.wh-fc__table tbody th,.wh-fc__table td{padding:0;border:0;white-space:normal}
	.wh-fc__table tbody th{font:700 24px/1.15 var(--f-cond)}
	.wh-fc__table tbody th .wh-fc__sub{display:inline;margin-left:8px}
	.wh-fc__table td[data-label]{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:12px;margin-top:4px;min-height:32px}
	.wh-fc__table td[data-label]::before{content:attr(data-label);order:-2;font:600 14px/20px var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft)}
	.wh-fc__table td[data-label]::after{content:"";order:-1;flex:1 0 16px;border-bottom:2px dotted var(--leader)}
	.wh-fc__table td[data-label]>span{margin-left:auto;text-align:right}
	.wh-fc__table tr.wh-fc__day{padding:0;border-bottom:0}
	.wh-fc__table tr.wh-fc__day th{padding:8px 12px;font:600 14px/20px var(--f-semi)}
}
@media (max-width:759.98px){
	.wh-fc{padding:20px 16px}
	.wh-fc__place,.wh-fc__drone{flex:1 1 100%}
	.wh-fc__form .wh-btn{flex:1 1 auto}
	.wh-fc__say{font-size:24px}
	.wh-fc__boxes,.wh-fc__notes{grid-template-columns:1fr}
	.wh-fc__box,.wh-fc__miss{padding:16px}
}
/* Paired rulebooks (build_how_high_can_a_drone_fly.py): a --states table whose two cells are the recreational rules
   and Part 107 side by side, so neither cell is set heavier than the other. */
.wh-table--pair td:first-of-type{font-weight:inherit}
/* Drone picker (/tools/drone-picker/): the box (five questions as the shared answer chips, a question that counts
   only for some answers disabled in place with its line saying when, the switch, the line for readers without
   script, the status line) and its answer, engine/drone-picker-view.mjs: the list before any answer, three picks as
   band-tinted cards (one line per rule that placed the model, its rule id as a plain outlined tag, then the notes),
   the DJI line, Also fits and Left out as --fold tables, Compare with the Planned tag, next steps; when nothing fits,
   the answers to relax with their buttons. The three ready-made answers below print the same parts, one pick per
   row. The rules, camera, handling and price tables are design/scripts/build_drone_picker.py's. No state colour:
   rule ids, "Not stated by the maker" and a disabled question are words and outlines. */
.wh-pk{padding:28px;border:1px solid var(--rule);border-radius:12px;background:var(--paper)}
.wh-pk>*+*{margin-top:16px}
.wh-pk__form{display:grid;gap:20px}
.wh-pk__only{margin:-2px 0 8px}
.wh-pk__q:disabled label{border-style:dashed;color:var(--ink-soft);cursor:default}
.wh-pk__q:disabled label:has(:checked){border-color:var(--soft-line);background:var(--control);color:var(--ink-soft)}
.wh-pk__q:disabled input{cursor:default}
.wh-pk__switch{display:inline-flex;align-items:center;gap:10px;min-height:44px;font-weight:500;font-size:16px;line-height:1.3;cursor:pointer}
.wh-pk__switch input{flex:none;width:20px;height:20px;margin:0;accent-color:var(--solid);cursor:pointer}
.wh-pk__msg{font-weight:600;font-size:16px;line-height:1.4}
.wh-pk__nojs{font-weight:500;font-size:15px;line-height:1.4;color:var(--ink-soft)}
html.wh-js .wh-pk__nojs{display:none}
.wh-pk__status{font:700 28px/1.15 var(--f-cond)}
.wh-pk__status:focus{outline:0}
.wh-pk__out>*+*{margin-top:24px}
.wh-pk__out>.wh-h3+.wh-pk__own{margin-top:8px}
.wh-pk__own,.wh-pk__dji{font-weight:500;font-size:15px;line-height:1.45;color:var(--ink-soft)}
.wh-pk__price{font-weight:500;font-size:15px;line-height:1.45}
.wh-pk__sub{font:600 14px/20px var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft)}
.wh-pk__why,.wh-pk__notes,.wh-pk__relax,.wh-pk__near{padding:0;list-style:none;font-size:15px;line-height:1.45}
.wh-pk__why li+li,.wh-pk__notes li+li{margin-top:6px}
.wh-pk__rule{display:inline-block;margin-right:4px;padding:0 6px;border:1px solid var(--soft-line);border-radius:4px;font:600 14px/20px var(--f-semi);letter-spacing:.03em;white-space:nowrap;color:var(--ink-soft)}
.wh-pk__next{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;font:700 24px/1.1 var(--f-cond)}
.wh-pk__next .wh-arrowlink{flex:0 1 400px}
.wh-pk__exits{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:24px}
.wh-pk__copy{grid-column:1/-1;justify-self:start;margin-top:16px}
.wh-pk__relax{border-top:1px solid var(--rule)}
.wh-pk__relax li{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 16px;padding:10px 0;border-bottom:1px solid var(--rule)}
.wh-pk__near{display:flex;flex-wrap:wrap;gap:0 20px}
.wh-pk__near li{display:flex;align-items:center;min-height:44px}
.wh-pk__ready{margin-top:48px}
.wh-pk__ready>*+*{margin-top:16px}
.wh-pk__ready>.wh-h3+.wh-pk__asked{margin-top:8px}
.wh-pk__asked{font-weight:500;font-size:16px;line-height:1.45}
.wh-pk__asked .wh-pk__sub{margin-right:8px}
.wh-pk__rules tbody th{width:64px;white-space:nowrap}
.wh-pk__rules td>p+p{margin-top:6px}
.wh-pk__when{font-weight:600}
.wh-pk__reason,.wh-pk__src{font-size:15px;line-height:1.45;color:var(--ink-soft)}
@media (max-width:759.98px){
	.wh-pk{padding:20px 16px}
	.wh-pk__status{font-size:24px}
	.wh-pk__exits{grid-template-columns:1fr}
	.wh-pk__rules tbody th{width:auto}
}
/* Drone registration helper (/tools/drone-registration/): the picker's box (.wh-pk) with question 1 as a row of the
   model list, the weight field and its unit, the other questions as the shared answer chips; its answer,
   engine/drone-registration-view.mjs: the weight line, then one band-tinted card per track (only for fun, Part 107),
   side by side on a wide screen when "Not sure" shows both, each with its verdict, its facts as a dt/dd list, the two
   sides of the line as paper cards when the helper gives no verdict, and the steps. Before any answer, the pair table
   of both registrations. The page's steps run in two columns (fun, Part 107), the FAA's words for visitors are set
   as quotes. No state colour: a verdict is words, rule ids are the picker's outlined tags. */
.wh-rg__w .wh-input{font-variant-numeric:tabular-nums}
.wh-rg__weight{font-weight:600;font-size:17px;line-height:1.45}
.wh-rg__order,.wh-rg__total{font-weight:500;font-size:16px;line-height:1.45}
.wh-rg__own{font-weight:500;font-size:15px;line-height:1.45;color:var(--ink-soft)}
.wh-rg__tracks{display:grid;gap:16px}
.wh-rg__track{min-width:0;padding:16px 20px 20px;border-radius:8px;background:var(--band)}
.wh-rg__track>*+*{margin-top:12px}
.wh-rg__verdict{font:700 28px/1.1 var(--f-cond)}
.wh-rg__track p,.wh-rg__branch p{font-size:16px;line-height:1.45}
.wh-rg__facts>div{display:grid;grid-template-columns:150px minmax(0,1fr);column-gap:16px;padding:10px 0;border-top:1px solid var(--rule)}
.wh-rg__facts>div:last-child{padding-bottom:0}
.wh-rg__facts dt{font:600 14px/22px var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft)}
.wh-rg__facts dd{font-size:16px;line-height:1.45}
.wh-rg__branches{display:grid;gap:12px}
.wh-rg__branch{min-width:0;padding:16px;border-radius:8px;background:var(--paper)}
.wh-rg__branch>*+*{margin-top:10px}
.wh-rg__if{font:700 24px/1.15 var(--f-cond)}
.wh-rg__quote{max-width:70ch;margin:0;font:500 17px/1.5 var(--f-body)}
.wh-rg__one{padding-top:16px;border-top:2px solid var(--ink)}
.wh-rg__one>*+*{margin-top:16px}
.wh-rg__cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 32px}
.wh-rg__cols>section>*+*{margin-top:12px}
.wh-rg__cols .wh-h3{font-size:24px}
@media (min-width:1024px){
	.wh-rg__tracks--two{grid-template-columns:repeat(2,minmax(0,1fr))}
	.wh-rg__tracks:not(.wh-rg__tracks--two) .wh-rg__branches{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:759.98px){
	.wh-rg__model{grid-column:1/-1}
	.wh-rg__track{padding:16px}
	.wh-rg__verdict{font-size:24px}
	.wh-rg__facts>div{grid-template-columns:minmax(0,1fr);row-gap:2px}
	.wh-rg__cols{grid-template-columns:minmax(0,1fr)}
	.wh-rg__quote{font-size:16px}
}

/* ---------- Narrower desktops and tablets ---------- */
@media (max-width:1339.98px){
	.wh-top__in{column-gap:20px}
	.wh-tabs a{padding:0 10px}
	.wh-tabs a[aria-current]{padding:0 12px}
	.wh-search-btn .wh-search-word{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
	.wh-search-btn{width:47px;padding:0}
}
@media (min-width:1200px) and (max-width:1339.98px){
	.wh-chips--4{grid-template-columns:repeat(2,minmax(0,1fr))}
}
/* Below the one-row band the hour strip takes the full band width, the actions under it. */
@media (min-width:760px) and (max-width:1239.98px){.wh-band__hours{flex:1 1 100%}}
@media (max-width:1199.98px){
	.wh-top__in{min-height:64px;padding-top:10px}
	.wh-tabs{order:3;flex-basis:100%;margin-top:8px}
	.wh-card--7,.wh-card--5{grid-column:span 12}
	.wh-ask__form{flex-wrap:wrap;justify-content:flex-start}
	.wh-ask__place{flex:1 1 240px;max-width:none}
	.wh-quiz__fig{max-width:560px}
}
@media (max-width:967.98px){
	.wh-scale,.wh-models{display:none}
	.wh-dcard{display:block;max-width:560px}
}

/* ---------- Phones: the W-Mobile composition ---------- */
@media (max-width:759.98px){
	:root{--gut:16px}
	body{font-size:16px;line-height:1.5;padding-bottom:calc(72px + env(safe-area-inset-bottom))}
	html{scroll-padding-bottom:88px}
	.wh-sec{padding:28px var(--gut) 0}
	.wh-sec--paper{margin-top:28px;padding-bottom:24px}
	.wh-h2{font-size:34px}
	.wh-lede{margin-top:8px}

	.wh-top{padding:0 16px}
	.wh-top__in{min-height:54px;padding-top:0;flex-wrap:nowrap;justify-content:space-between;column-gap:12px}
	.wh-logo{gap:8px;font-size:26px}
	.wh-logo svg{width:32px;height:32px}
	.wh-tabs,.wh-top__tools>.wh-rules,.wh-search-btn{display:none}
	.wh-top__tools{gap:8px}
	.wh-tool{height:44px;padding:0 12px}
	.wh-tool--icon{width:44px;padding:0}
	.wh-menu-btn{display:inline-flex}
	.wh-search{display:none!important}

	.wh-tabbar{position:fixed;left:0;right:0;bottom:0;z-index:20;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));column-gap:4px;padding:0 8px calc(12px + env(safe-area-inset-bottom));background:var(--paper);border-top:2px solid var(--ink);font:600 14px/1 var(--f-cond);letter-spacing:.04em;text-transform:uppercase}
	.wh-tabbar a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;height:58px;border-radius:0 0 8px 8px;color:var(--ink);text-decoration:none}
	.wh-tabbar a[aria-current]{background:var(--solid);color:var(--on-solid)}
	.wh-tabbar a:focus-visible{outline-offset:-3px}

	/* Hero: verdict first, then place, reasons, map, next hours */
	.wh-hero{padding:0}
	.wh-hero__card{display:flex;flex-direction:column;border:0;border-radius:0;overflow:visible;background:transparent}
	.wh-ask,.wh-band,.wh-band__say,.wh-band__hours,.wh-why,.wh-hoursec{display:contents}
	.wh-ask__title{order:1;flex-wrap:wrap;justify-content:space-between;gap:8px 6px;padding:16px 16px 0;background:var(--go);color:var(--fixed-ink)}
	.wh-h1{font-size:34px}
	.wh-ask__title .wh-tag--sample{border-color:var(--fixed-ink);background:transparent;color:var(--fixed-ink)}
	.wh-band__verdict{order:2;align-self:auto;gap:12px;padding:10px 16px 0;background:var(--go)}
	.wh-verdict{margin:0 0 0 -4px;font-size:150px}
	.wh-band__verdict svg{width:48px;height:48px;margin-bottom:2px}
	.wh-answer{order:3;padding:16px 16px 0;background:var(--go);color:var(--fixed-ink);font-size:28px}
	.wh-band__ctx{order:4;margin:0;padding:8px 16px 0;background:var(--go);color:var(--fixed-ink);font-size:15px}
	.wh-band__acts{order:5;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0;padding:16px 16px 20px;background:var(--go);border-bottom:1px solid var(--fixed-ink)}
	.wh-band__acts .wh-btn{padding:0 10px}
	.wh-band__acts .wh-btn--outline{border-width:1px;background:var(--paper);border-color:var(--ink-line);color:var(--ink)}
	.wh-band__acts .wh-btn--outline:hover{background:var(--band)}
	.wh-band :focus-visible{outline-color:var(--fixed-ink)}
	.wh-place{order:6;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;background:var(--paper);border-bottom:1px solid var(--rule)}
	.wh-place p{min-width:0;font-size:15px;line-height:1.4}
	.wh-place b{display:block;font-weight:600;font-size:17px}
	.wh-place p>span{display:block;color:var(--ink-soft)}
	.wh-place .wh-btn{min-height:44px;padding:0 16px}
	.wh-ask__form{order:7;flex:none;flex-wrap:wrap;align-items:flex-end;align-content:flex-start;justify-content:flex-start;gap:12px;padding:16px;background:var(--paper);border-bottom:1px solid var(--rule)}
	html.wh-js .wh-ask__form:not(.is-open){display:none}
	.wh-ask__place,.wh-ask__drone{flex:1 1 100%;max-width:none}
	.wh-ask__form .wh-btn{flex:1 1 auto}
	.wh-why__rows{order:8;padding:0 16px;background:var(--paper)}
	.wh-rows.wh-why__rows .wh-row{flex-wrap:wrap;gap:0 12px;min-height:0;padding:7px 0 9px}
	.wh-why__rows .wh-row:first-child{border-top:0}
	.wh-why__rows .wh-row:last-child{border-bottom:0}
	.wh-why__rows .wh-leader{min-width:12px}
	.wh-why__rows .wh-row__tag{order:1}
	.wh-why__rows .wh-row__val{order:2;flex:1 0 100%;margin-top:1px;text-align:left}
	.wh-why__map{order:9;padding:16px;background:var(--paper);border-top:1px solid var(--rule)}
	.wh-why__map>.wh-label{margin-bottom:10px;color:var(--ink-soft)}
	.wh-hoursec__head{order:10;display:flex;color:var(--ink);align-items:baseline;justify-content:space-between;gap:12px;padding:20px 16px 0;background:var(--paper);border-top:1px solid var(--ink)}
	.wh-hoursec__head h2{font:700 24px/1.1 var(--f-cond)}
	.wh-hoursec__head .wh-label{margin:0}
	.wh-hours{order:11;grid-template-columns:repeat(6,minmax(0,1fr));gap:4px;padding:12px 16px 0;background:var(--paper)}
	.wh-hour{padding:6px 4px;text-align:center}
	.wh-hour--now{padding:6px 4px;border:2px solid var(--ink)}
	.wh-hour__top{justify-content:center}
	.wh-hour__fig{line-height:32px}
	.wh-hour--now .wh-hour__fig{font-size:28px;line-height:32px}
	.wh-hour__bar{margin-top:0}
	.wh-hour__bar .wh-hour__word{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
	.wh-band__why{order:12;align-items:flex-start;margin:0;padding:12px 16px 20px;background:var(--paper);border-top:0;border-bottom:1px solid var(--ink);color:var(--ink);font-size:15px}
	.wh-band__why svg{margin-top:2px;color:var(--caution-ink)}

	.wh-discsec{padding:28px 16px 0}
	.wh-disc>summary{flex-wrap:nowrap;align-items:center;min-height:56px;padding:12px 12px 14px 16px}
	.wh-disc__lead{display:block;flex:1;min-width:0}
	.wh-disc__more svg{width:24px;height:24px}
	.wh-disc__tags{display:flex}
	.wh-disc__h{margin:0;font-size:20px;line-height:1.2}
	.wh-disc__tags{margin-top:8px;gap:8px}
	.wh-disc__more{margin:0}
	.wh-disc__body{display:block}
	.wh-ex{padding:16px}
	.wh-ex+.wh-ex{border-left:0;border-top:1px solid var(--rule)}
	.wh-ex__row{display:block;margin-top:12px}
	.wh-ex__map{width:auto}
	.wh-ex__map>svg{width:100%;height:auto}
	.wh-ex__text{margin-top:12px}
	.wh-ex__say{margin-top:4px;font-size:22px}
	.wh-ex__go{padding-top:4px}
	.wh-ex__go a,.wh-card__head .wh-more{display:inline-flex;align-items:center;min-height:44px}

	.wh-tools{display:flex;flex-direction:column;gap:12px;margin-top:14px}
	.wh-card{padding:18px 16px}
	.wh-card .wh-h3{font-size:24px}
	.wh-card__head{align-items:center;gap:0 12px}
	.wh-card--reg{order:1}.wh-card--wx{order:2}.wh-card--pick{order:3}.wh-card--cmp{order:4}.wh-row107{order:5}
	.wh-reg{gap:0}
	.wh-reg__text,.wh-reg__fig{flex:1 1 100%}
	.wh-ctx{margin-top:6px}
	.wh-ans{gap:8px;margin:0;font-size:28px}
	.wh-ans svg{width:24px;height:24px}
	.wh-reg__fig{margin-top:12px}
	.wh-reg__note{margin-top:10px;line-height:1.45}
	.wh-reg .wh-s2{max-width:none;--dw:100cqw}
	.wh-wx__say{margin-top:6px;font:700 24px/1.15 var(--f-cond);text-wrap:balance}
	.wh-wx__why{margin-top:6px;font-size:16px;line-height:1.45;color:var(--ink-soft);text-wrap:balance}
	.wh-thinbar{display:flex;height:14px;margin-top:14px;border:1px solid var(--ink-line);border-radius:4px;overflow:hidden}
	.wh-thinbar span:nth-child(1){flex:0 0 52%;background:var(--day)}
	.wh-thinbar span:nth-child(2){flex:0 0 8.3%;background:var(--twilight)}
	.wh-thinbar span:nth-child(3){flex:1;background:var(--night)}
	.wh-thinlab{display:flex;justify-content:space-between;flex-wrap:wrap;gap:0 12px;margin-top:6px;font-variant-numeric:tabular-nums}
	.wh-thinlab span{display:inline-flex;align-items:center;gap:6px}
	.wh-q{margin-top:6px;font-size:17px;line-height:24px}
	.wh-q+.wh-chips{margin-top:8px}
	.wh-qset{margin-top:12px}
	.wh-picker .wh-chips{display:flex;flex-wrap:wrap}
	.wh-opt{padding:0 12px}
	.wh-qset--reg{display:none}
	.wh-pick{grid-template-columns:104px minmax(0,1fr);margin-top:16px}
	.wh-pick__v{font-size:21px}
	.wh-cmp__say{margin-top:2px;font-size:20px;text-wrap:pretty}
	.wh-vs{gap:12px}
	.wh-vs__fig{padding:4px 6px}
	.wh-vs .wh-wt p{font-size:14px}
	.wh-vs .wh-wt b{font-size:19px}
	.wh-vs__row{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-areas:"k k" "a b";gap:2px 12px}
	.wh-vs__row dt{text-align:left;font-size:14px}
	.wh-vs__row dd,.wh-vs__row dd:last-child{text-align:left;font-size:15px}
	.wh-row107{display:block;padding:4px 16px;background:var(--paper);border:1px solid var(--rule);border-radius:12px}
	.wh-row107 a{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:64px;color:var(--ink);text-decoration:none}
	.wh-row107 b{display:block;font:700 21px/1.15 var(--f-cond)}
	.wh-row107 small{display:block;margin-top:2px;font-weight:500;font-size:15px;line-height:1.4;color:var(--ink-soft)}
	.wh-row107 svg{color:var(--cobalt)}

	.wh-route__head{display:block}
	.wh-route__ctx,.wh-route__lede{display:none}
	.wh-route__wrap{position:relative;margin-top:16px}
	.wh-route__wrap::before{content:"";position:absolute;left:4px;top:7px;bottom:58px;width:16px;border-left:1px dashed var(--ink-line);border-top:1px dashed var(--ink-line);border-top-left-radius:8px}
	.wh-route__tag{position:relative;display:flex;align-items:center;gap:10px;height:16px;padding-left:12px}
	.wh-route__tag::before{content:"";width:16px;height:16px;border-radius:50%;background:var(--ink)}
	.wh-route__tag::after{content:"";position:absolute;left:19px;top:16px;height:14px;width:2px;background:var(--ink)}
	.wh-route__tag>span,.wh-fork--m .wh-chip{display:inline-flex;align-items:center;height:24px;padding:0 8px;border:1px solid var(--ink-line);border-radius:4px;background:var(--control)}
	.wh-route{display:block;margin-top:14px}
	.wh-route::before,.wh-route::after{display:none}
	.wh-route>li{display:block;padding:0 0 16px 52px}
	.wh-route>li:not(:last-child)::before{content:"";position:absolute;left:19px;top:36px;bottom:-4px;width:2px;background:var(--ink)}
	.wh-route>li:last-child{padding-bottom:0}
	.wh-step__n{position:absolute;left:4px;top:0;width:32px;height:32px;font-size:19px}
	.wh-step__t{margin:0;padding-top:3px;font-size:22px;line-height:1.15}
	.wh-step__r{display:none}
	.wh-step__go{padding-top:6px}
	.wh-fork{display:none}
	.wh-fork--m{position:relative;display:flex;align-items:flex-end;gap:10px;margin-top:20px;padding-left:20px}
	.wh-fork--m::before{content:"";position:absolute;left:4px;top:-20px;width:12px;height:42px;border-left:1px dashed var(--ink-line);border-bottom:1px dashed var(--ink-line);border-bottom-left-radius:8px}
	.wh-fork--m .wh-chip{border-color:var(--soft-line);color:var(--ink-soft)}
	.wh-fork--m .wh-btn{display:flex;width:max-content;margin-top:8px}

	.wh-dcard{max-width:none;margin-top:14px;background:var(--paper);border:1px solid var(--rule);border-radius:12px;overflow:hidden}
	.wh-guides{grid-template-columns:1fr;margin-top:12px}
	.wh-guides .wh-arrowlink{min-height:56px;font-size:21px}
	.wh-jobs{grid-template-columns:1fr;row-gap:28px;margin-top:20px}
	.wh-track{margin-top:16px;padding:0 16px}
	.wh-track h3{flex:1 1 0;min-width:0;font-size:24px}
	.wh-track li{gap:12px 16px}
	.wh-track__fig{flex-basis:76px}
	.wh-job__fig{aspect-ratio:2/1}
	.wh-track .wh-tag{margin-left:0}
	.wh-track li>svg{display:none}
	.wh-how{margin-top:16px}
	.wh-how .wh-row{flex-wrap:wrap;gap:0 12px;padding:10px 0 12px}
	.wh-how dt{flex:1 0 100%}
	.wh-how .wh-leader{min-width:12px}
	.wh-how dd{flex-basis:100%;margin-top:4px;font-size:16px;line-height:1.5}
	.wh-prov--how{display:block}
	.wh-faq{margin-top:16px}
	.wh-faq__item{padding:16px 0 20px}
	.wh-faq__item h3{font-size:24px}
	.wh-srcs{row-gap:24px;margin-top:16px}
	.wh-dcard h3 a,.wh-track h3 a,.wh-newsline a{display:inline-flex;align-items:center;min-height:44px}

	.wh-foot{margin-top:28px;padding:24px 16px 20px}
	.wh-foot__logo{gap:8px;font-size:26px}
	.wh-foot__logo svg{width:32px;height:32px}
	.wh-foot__tag{display:none}
	.wh-foot__row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-flow:dense;gap:0 16px;margin-top:12px;padding-top:0;border-top:0;line-height:1.3}
	.wh-foot__row>span{grid-column:1/-1}
	.wh-foot__legal{margin-top:12px}
	.wh-page{padding:28px 16px 40px}
	.wh-page__h1{font-size:44px}
}
@media (min-width:760px) and (max-width:967.98px){
	.wh-dcard{margin-top:32px;background:var(--paper);border:1px solid var(--rule);border-radius:12px;overflow:hidden}
	.wh-dcard h3 a{display:inline-flex;align-items:center;min-height:44px}
}
.wh-dcard__fig{padding:16px 16px 12px;border:0;border-bottom:1px solid var(--rule);border-radius:0}
.wh-dcard__fig>svg{margin:0 auto}
.wh-dcard__fig>svg+svg{margin-top:4px}
.wh-dcard__fig figcaption{display:flex;align-items:center;gap:10px;margin-top:10px}
.wh-dcard__fig figcaption svg{display:block}
.wh-dcard__body{padding:14px 16px 16px}
.wh-dcard .wh-h3{font-size:24px}
.wh-dcard .wh-rows{margin-top:8px}
.wh-dcard .wh-row{gap:10px;min-height:46px}
.wh-dcard .wh-leader{min-width:12px}
.wh-dcard+.wh-arrowlink{display:none}
@media (max-width:967.98px){
	.wh-dcard+.wh-arrowlink{display:flex;min-height:56px;margin-top:12px;max-width:560px;font-size:21px}
}
@media (max-width:759.98px){.wh-dcard+.wh-arrowlink{max-width:none}}

/* ---------- Can I fly here?: answer states (plugin engine/can-i-fly-view.mjs) ---------- */
/* State colours per rulebook: the band carries wh-band--rec-<state> and wh-band--107-<state>; the html[data-rules]
   switch picks one. The hero card repeats them through :has() for the phone title, which sits outside the band. */
.wh-band,.wh-hero__card{--v-bg:var(--go);--v-ink:var(--fixed-ink);--v-word:#FFFFFF;--v-layout:flex}
html:not([data-rules="107"]) :is(.wh-band--rec-caution,.wh-hero__card:has(.wh-band--rec-caution)),html[data-rules="107"] :is(.wh-band--107-caution,.wh-hero__card:has(.wh-band--107-caution)){--v-bg:var(--caution);--v-word:var(--fixed-ink);--v-layout:grid}
html:not([data-rules="107"]) :is(.wh-band--rec-nogo,.wh-hero__card:has(.wh-band--rec-nogo)),html[data-rules="107"] :is(.wh-band--107-nogo,.wh-hero__card:has(.wh-band--107-nogo)){--v-bg:var(--no-go);--v-ink:#FFFFFF;--v-layout:grid}
html:not([data-rules="107"]) :is(.wh-band--rec-ink,.wh-hero__card:has(.wh-band--rec-ink)),html[data-rules="107"] :is(.wh-band--107-ink,.wh-hero__card:has(.wh-band--107-ink)){--v-bg:var(--solid);--v-ink:var(--on-solid);--v-word:var(--on-solid);--v-layout:grid}
html:not([data-rules="107"]) :is(.wh-band--rec-wait,.wh-hero__card:has(.wh-band--rec-wait)),html[data-rules="107"] :is(.wh-band--107-wait,.wh-hero__card:has(.wh-band--107-wait)){--v-bg:var(--band);--v-ink:var(--ink);--v-word:var(--ink)}
.wh-band{background:var(--v-bg);color:var(--v-ink)}
.wh-hero [hidden]{display:none}
.wh-band__acts:not(:has(>:not([hidden]))){display:none}
.wh-band :focus-visible{outline-color:var(--v-ink)}
.wh-band .wh-btn--outline{border-color:var(--v-ink);color:var(--v-ink)}
.wh-band__verdict{min-height:176px}
.wh-verdict{color:var(--v-word)}
.wh-verdict--caution,.wh-verdict--nogo{font-size:150px}
.wh-verdict--ink{width:min-content;font-size:84px;line-height:.86}
/* CAUTION, NO-GO and CANNOT DECIDE are longer words: at full width the verdict keeps the left, and the answer with
   the hour strip and the buttons under it share the right, so the answer keeps a readable measure. */
@media (min-width:1240px){
	.wh-band{display:var(--v-layout);grid-template-columns:auto minmax(0,1fr);align-content:end}
	.wh-band__verdict{grid-row:span 2}
	.wh-band__hours{max-width:640px}
}
@media (min-width:760px){.wh-band__verdict:empty{display:none}}
.wh-hero [tabindex="-1"]:focus{outline:0}
.wh-band__why{border-top-color:var(--v-ink)}
.wh-band__why svg{color:var(--v-ink)}
.wh-why[aria-busy="true"]{opacity:.45}
.wh-rows--say .wh-row{flex-wrap:wrap;gap:0 12px;min-height:0;padding:10px 0 12px}
.wh-rows--say .wh-row__tag{order:1}
.wh-rows--say .wh-row__val,.wh-rows--say .wh-row__more{order:2;flex:1 0 100%;margin-top:2px;text-align:left}
.wh-row__more{color:var(--ink-soft)}
.wh-why__group{margin-top:24px}
.wh-why__line{margin-top:2px;font-weight:500;font-size:15px;line-height:1.4;color:var(--ink-soft)}
.wh-why__line+.wh-rows{margin-top:8px}
.wh-rows+.wh-why__line{margin-top:10px}
/* The map panel while its sheet is read, or when no map source answered: words in a box of the sheet's size (the
   phone sheet, the wide one from a 540 px panel; the phone caption under it below 356 px: two lines, three below
   304 px, where its first line of 284 px wraps), never an empty grid. */
.wh-mapbox{container-type:inline-size;border:1px solid var(--rule);border-radius:8px;background:var(--paper)}
.wh-mapbox>div{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;aspect-ratio:356/298;padding:16px;font-weight:500;font-size:15px;line-height:1.4;color:var(--ink-soft);text-align:center}
@container (max-width:355.98px){.wh-mapbox>div{aspect-ratio:auto;min-height:calc(100cqw * 298 / 356 + 48px)}}
@container (max-width:303.98px){.wh-mapbox>div{min-height:calc(100cqw * 298 / 356 + 68px)}}
@container (min-width:540px){.wh-mapbox>div{max-width:600px;margin-inline:auto;aspect-ratio:600/364}}
@container (min-width:628px){.wh-mapbox>div{max-width:none}}
.wh-map+.wh-why__line{margin-top:8px}
.wh-ask__nojs,.wh-ask__msg,.wh-ask__picks{flex:1 1 100%}
.wh-ask__nojs{font-weight:500;font-size:15px;line-height:1.4;color:var(--ink-soft)}
html.wh-js .wh-ask__nojs{display:none}
.wh-ask__msg{font-weight:600;font-size:16px;line-height:1.4;color:var(--ink)}
.wh-ask__picks:not([hidden]){display:flex;flex-wrap:wrap;gap:8px}
.wh-ask__picks .wh-btn{max-width:100%;white-space:normal;text-align:center}
@media (max-width:759.98px){
	.wh-ask__title,.wh-band__verdict,.wh-answer,.wh-band__ctx,.wh-band__acts{background:var(--v-bg);color:var(--v-ink)}
	.wh-ask__title .wh-tag--sample{border-color:var(--v-ink);color:var(--v-ink)}
	.wh-band__verdict{min-height:130px}
	/* CAUTION and its 48 px mark fit a 320 px screen */
	.wh-verdict--caution{font-size:min(96px,calc((100vw - 88px) / 3.2))}
	.wh-verdict--nogo{font-size:96px}
	.wh-verdict--ink{font-size:64px}
	.wh-band__why svg{color:var(--caution-ink)}
	.wh-rows--say .wh-row{padding:8px 0 10px}
	.wh-why__rows .wh-rows--say .wh-row:first-child{border-top:0}
	.wh-why__rows .wh-rows--say:last-of-type .wh-row:last-child{border-bottom:0}
	.wh-why__rows .wh-leader{min-width:12px}
	.wh-why__rows{padding-bottom:16px}
	.wh-ask__msg,.wh-ask__picks,.wh-ask__nojs{order:7;padding:0 16px 16px;background:var(--paper)}
	.wh-ask__picks .wh-btn{flex:1 1 auto}
	.wh-band__acts [data-wh-again]{grid-column:1/-1}
	.wh-band__acts .wh-btn--outline{border-color:var(--ink-line);color:var(--ink)}
}

/* ---------- Can I fly here?: saved spots and the full briefing (plugin engine/can-i-fly-more.mjs, -brief.mjs) ---------- */
/* Saved spots: chips under the form, each a 44 px check button and its own "Remove" (drawn by the loader as text).
   The chips are one row beside their label that scrolls sideways, as tall with eight spots as with one, so the row
   held before they are drawn (below) is exact at every width; a long name ends in an ellipsis, and its "Remove"
   names it in full. The focus ring is drawn inside a chip's buttons, which the row would clip. */
.wh-spots{flex:1 1 100%;display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;min-width:0}
.wh-spots>.wh-label{flex:none;color:var(--ink-soft)}
.wh-spots__list{display:flex;flex:1 1 0;gap:8px;list-style:none;min-width:0;overflow-x:auto;overscroll-behavior-x:contain}
.wh-spot{display:flex;flex:none;max-width:100%;border:1.5px solid var(--ink);border-radius:8px;background:var(--control)}
.wh-spot button{display:flex;align-items:center;min-height:44px;border:0;background:none;color:var(--ink)}
.wh-spot button:hover{background:var(--band)}
.wh-spot button:focus-visible{outline-offset:-3px}
.wh-spot .wh-spot__go{display:block;min-width:0;padding:0 12px;border-radius:6px 0 0 6px;font:600 16px/44px var(--f-body);text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wh-spot .wh-spot__x{flex:none;justify-content:center;width:44px;border-left:1px solid var(--rule);border-radius:0 6px 6px 0}
.wh-spot__x svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
.wh-spots__msg{flex:1 1 100%;font-weight:600;font-size:16px;line-height:1.4}
/* Until the deferred loader draws the chips, their row (a 44 px button in the chip's 1.5 px border, so it rounds to
   device pixels as a chip does) is held when the head flag says wh-spots holds a list (windhorse-tools.php), so
   what is below does not move when they appear. */
html[data-wh-spots] .wh-ask:not(:has(>.wh-spots))::after{content:"";flex:1 1 100%;box-sizing:content-box;height:44px;border-block:1.5px solid transparent}
/* Place suggestions (engine/can-i-fly-suggest.mjs): a listbox over the page under the place field, placed by the
   script at the field's left, bottom and width; each option 44 px or taller, long names wrap. */
.wh-ask__form{position:relative}
.wh-ask__list{position:absolute;z-index:25;margin:0;padding:4px;list-style:none;overflow-y:auto;background:var(--paper);border:1.5px solid var(--ink);border-radius:8px}
.wh-ask__opt{display:flex;align-items:center;min-height:44px;padding:6px 10px;border-radius:6px;font:500 16px/1.3 var(--f-body);color:var(--ink);overflow-wrap:anywhere;cursor:pointer}
.wh-ask__opt:hover{background:var(--band)}
.wh-ask__opt[aria-selected=true]{background:var(--band);outline:2px solid var(--ink);outline-offset:-2px}
/* The full briefing: a section under the hero, in the hero card's measure. */
.wh-brief{padding:20px var(--gut) 0}
.wh-brief__in{max-width:1312px;margin:0 auto;padding:24px 28px 28px;background:var(--paper);border:1px solid var(--ink-line);border-radius:12px}
.wh-brief__site{font:600 14px/20px var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft)}
.wh-brief__h{margin-top:4px;font:700 48px/1 var(--f-cond);text-transform:uppercase;text-wrap:balance;overflow-wrap:anywhere}
.wh-brief__verdict{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-top:16px;font:700 26px/1.15 var(--f-cond)}
.wh-brief__facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:12px 24px;margin-top:16px;padding-top:12px;border-top:1px solid var(--rule)}
.wh-brief__facts dt{font:600 14px/20px var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft)}
.wh-brief__facts dd{font-weight:500;font-size:16px;line-height:1.4;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.wh-brief__warn,.wh-brief__wait{margin-top:16px;font-weight:600;font-size:17px;line-height:1.4}
.wh-brief__sec{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,520px),1fr));column-gap:28px;margin-top:32px}
.wh-brief__sec>:not(.wh-brief__row){grid-column:1/-1}
.wh-brief__sec>h3{padding-bottom:8px;border-bottom:2px solid var(--ink);font:700 28px/1.1 var(--f-cond);text-transform:uppercase}
.wh-brief__line{margin-top:8px;font-weight:500;font-size:15px;line-height:1.45;color:var(--ink-soft)}
.wh-brief__row{min-width:0;padding:12px 0 14px;border-bottom:1px solid var(--rule)}
.wh-brief__top{display:flex;align-items:center;justify-content:space-between;gap:12px}
.wh-brief__top h4{margin:0;font:600 19px/1.2 var(--f-cond);letter-spacing:.04em;text-transform:uppercase}
.wh-brief__say{margin-top:6px;font-weight:500;font-size:17px;line-height:1.45}
.wh-brief__more,.wh-brief__rule,.wh-brief__src{margin-top:6px;font-size:15px;line-height:1.45;color:var(--ink-soft)}
.wh-brief__rule{color:var(--ink)}
.wh-brief__list{margin-top:12px;padding-left:22px;font-size:16px;line-height:1.45}
.wh-brief__list li+li{margin-top:6px}
.wh-brief__table{margin-top:12px}
.wh-brief__table table{width:100%;max-width:880px;border-collapse:collapse;font-size:16px;line-height:1.35;font-variant-numeric:tabular-nums}
.wh-brief__table th,.wh-brief__table td{padding:8px 12px 8px 0;border-bottom:1px solid var(--rule);text-align:left;vertical-align:middle}
.wh-brief__table thead th{border-bottom:2px solid var(--ink);font:600 14px/20px var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft)}
.wh-brief__table tbody th{font-weight:600;white-space:nowrap}
.wh-brief__num{font-weight:600}
.wh-brief__acts{display:flex;flex-wrap:wrap;gap:10px;margin-top:28px}
.wh-brief__copy{margin-top:12px;font-weight:600;font-size:16px;line-height:1.4}
.wh-brief__copy .wh-input{max-width:640px;margin-top:8px}
@media (max-width:759.98px){
	.wh-spots{padding:0 16px 16px;background:var(--paper)}
	.wh-hero .wh-spots{order:7}
	html[data-wh-spots] .wh-ask:not(:has(>.wh-spots))::after{order:7;flex:none;padding-bottom:16px;background:var(--paper)}
	.wh-brief{padding:16px var(--gut) 0}
	.wh-brief__in{margin:0 calc(-1*var(--gut));padding:20px var(--gut) 24px;border-width:1px 0;border-radius:0}
	.wh-brief__h{font-size:34px}
	.wh-brief__verdict{font-size:22px}
	.wh-brief__sec{margin-top:28px}
	.wh-brief__sec>h3{font-size:24px}
	.wh-brief__table th,.wh-brief__table td{padding:8px 8px 8px 0}
	.wh-brief__table .wh-tag{height:auto;min-height:28px;padding:4px 8px 4px 6px;white-space:normal;line-height:1.1}
	.wh-brief__table .wh-tag__w>span{white-space:nowrap}
	.wh-brief__acts .wh-btn{flex:1 1 auto}
}

@media (max-width:359.98px){.wh-top__in{column-gap:8px}.wh-logo{font-size:22px}.wh-menu-btn{padding:0 10px}}
@media (prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
@page{margin:0.5in}
@media print{
	.wh-top,.wh-tabbar,.wh-drawer,.wh-search{display:none!important}
	/* With the briefing open only the briefing prints: black on white, every state as its word. */
	html:has(#wh-brief:not([hidden])) :is(body>:not(.wh-main),.wh-main>:not(#wh-brief)){display:none!important}
	html:has(#wh-brief:not([hidden])) body{background:#FFFFFF;color:#000000}
	.wh-brief{padding:0}
	.wh-brief__in{max-width:none;margin:0;padding:0;border:0}
	.wh-brief,.wh-brief *{background:#FFFFFF!important;color:#000000!important;border-color:#000000!important}
	.wh-brief .wh-tag{border:1px solid #000000}
	.wh-brief__acts,.wh-brief__copy{display:none!important}
	.wh-brief__sec{display:block}
	.wh-brief__row,.wh-brief tr,.wh-brief__head{break-inside:avoid}
	.wh-brief__sec>h3{break-after:avoid}
	/* With a practice test's review on the page only the review prints, as the briefing does. */
	html:has(#wh-qz-review) body *:not(:has(#wh-qz-review)):not(#wh-qz-review):not(#wh-qz-review *){display:none!important}
	html:has(#wh-qz-review) body{background:#FFFFFF;color:#000000}
	html:has(#wh-qz-review) :is(.wh-page,.wh-wrap,.wh-doc,.wh-doc__main,.wh-qz,.wh-qz__screen){margin:0;padding:0;border:0;background:#FFFFFF}
	.wh-qz__review{margin:0}
	.wh-qz__review,.wh-qz__review *{background:#FFFFFF!important;color:#000000!important;border-color:#000000!important}
	.wh-qz__review :is(.wh-tag,.wh-qz__k){border:1px solid #000000}
	.wh-qz__item,.wh-qz__opts li{break-inside:avoid}
}

/* ---------- About, History and the archive pages (E5-S1) ---------- */
/* Head band of template-sections.php (trail, H1, lead); the page's own sections follow with their bands. */
.wh-page--sections{padding-top:40px;padding-bottom:56px}
.wh-lead{margin-top:16px;max-width:720px;font-weight:500;font-size:22px;line-height:1.4}
/* Drafting sheets: the SVG scales with the sheet, the labels are HTML at 14 px placed in % of the drawing box. A sheet
   too narrow for the labels hides them and their leaders and lists the label texts under the drawing instead. */
.wh-hd{min-width:0}
.wh-hd__sheet{position:relative;container-type:inline-size;background-position:calc(50% + 40px) 8px,calc(50% + 40px) 8px,calc(50% + 8px) 8px,calc(50% + 8px) 8px}
.wh-hd__box{position:relative;margin-inline:auto}
.wh-hd--plan .wh-hd__box{max-width:640px}
.wh-hd--glide .wh-hd__box{max-width:608px}
.wh-hd__box>svg{display:block;width:100%;height:auto}
.wh-hd__lab,.wh-hd__scale,.wh-mini__scale,.wh-hd__key{font:600 14px/20px var(--f-semi);letter-spacing:.03em;text-transform:uppercase;font-variant-numeric:tabular-nums;color:var(--ink)}
.wh-hd__lab,.wh-hd__scale,.wh-mini__scale{position:absolute;padding:0 4px;background:var(--sheet);white-space:nowrap}
.wh-hd__lab{transform:translate(-50%,-50%)}
.wh-hd__lab--l{transform:translateY(-50%)}
.wh-hd__lab--r{transform:translate(-100%,-50%)}
.wh-hd__lab--box{display:inline-flex;align-items:center;height:24px;padding:0 8px;background:var(--paper)}
.wh-hd__scale{left:12px;bottom:10px;color:var(--ink-soft)}
.wh-hd__key{display:none;flex-wrap:wrap;gap:4px 16px;margin:0;padding:10px 12px 12px;border-top:1px solid var(--rule);background:var(--sheet)}
.wh-hd figcaption{margin-top:12px}
@container (max-width:729.98px){.wh-hd--plan .wh-hd__lab,.wh-hd--plan .wh-hd__scale,.wh-hd--plan .wh-hd__wide{display:none}.wh-hd--plan .wh-hd__key{display:flex}}
@container (max-width:519.98px){.wh-hd--glide .wh-hd__lab,.wh-hd--glide .wh-hd__scale,.wh-hd--glide .wh-hd__wide{display:none}.wh-hd--glide .wh-hd__key{display:flex}}
.wh-mini{position:relative;flex:none;width:258px;height:182px}
.wh-mini .wh-hd__lab--box{height:22px;padding:0 6px}
.wh-mini__scale{left:8px;bottom:6px;color:var(--ink-soft)}
svg [stroke="#E8ECE6"]{stroke:var(--grid-minor)}
svg [stroke="#D6DCD5"]{stroke:var(--grid-major)}
/* History */
.wh-hist__row{display:flex;flex-wrap:wrap;align-items:flex-start;gap:24px 56px}
.wh-note{flex:1 1 320px;max-width:480px;display:flex;align-items:flex-start;gap:12px;padding:16px 20px;border:1px solid var(--ink);border-radius:12px;background:var(--paper);font-size:16px;line-height:1.5}
.wh-note>svg{margin-top:2px}
.wh-note a{font-weight:600}
.wh-hist__nums,.wh-hist__how{display:flex;flex-wrap:wrap;align-items:flex-start;gap:32px 56px;margin-top:32px}
.wh-hist__nums>.wh-hd{flex:1 1 700px}
.wh-hist__rows{flex:1 1 440px;min-width:0;font-variant-numeric:tabular-nums}
.wh-hist__rows .wh-row{min-height:56px}
.wh-hist__rows dd{max-width:62%;padding:6px 0;font-weight:500}
.wh-hist__src{margin-top:24px}
.wh-hist__how>.wh-hd,.wh-hist__steps{flex:1 1 560px;min-width:0}
.wh-hist__steps>h3{margin-top:36px}
.wh-hist__steps>h3:first-child{margin-top:6px}
.wh-hist__steps>p{max-width:540px;margin-top:8px}
.wh-hist__pull{max-width:28em;margin-top:56px;padding-top:28px;border-top:1px solid var(--ink);font:700 32px/1.15 var(--f-cond);text-wrap:balance}
/* The archive tables use the shared data table (.wh-table --fold); here only their place in these pages. */
.wh-sec .wh-wrap>.wh-table{margin-top:32px}
.wh-table__path{overflow-wrap:anywhere}
.wh-hist__para{max-width:70ch;margin-top:32px}
.wh-hist__close{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:24px 48px;margin-top:40px;padding-top:24px;border-top:1px solid var(--rule)}
.wh-hist__close>div{flex:1 1 360px;max-width:540px}
.wh-hist__close .wh-small{margin-top:8px}
@media (max-width:759.98px){
	.wh-page--sections{padding-top:28px;padding-bottom:28px}
	.wh-lead{font-size:19px}
	.wh-hist__nums,.wh-hist__how{gap:24px;margin-top:20px}
	/* A value too long to sit beside its label drops to its own line, right-aligned, instead of a narrow column. */
	.wh-hist__rows .wh-row{flex-wrap:wrap;gap:0 12px;padding:6px 0}
	.wh-hist__rows dd{max-width:none;margin-left:auto;text-wrap:balance}
	.wh-hist__pull{margin-top:32px;padding-top:20px;font-size:26px}
	.wh-hist__para{margin-top:20px}
	.wh-hist__close{margin-top:24px;padding-top:20px}
}

/* ---------- Planned items on the home page (E5-L1) ---------- */
/* An item whose page is not built yet keeps its words and shows the outlined Planned tag (wh-tag--sample) where its
   link was (design/scripts/build_home.py). It is text: no link color on hover, and a tracker row keeps its tag in line
   with the tags of the rows that end in an arrow. */
.wh-arrowlink.wh-planned:hover{color:var(--ink)}
.wh-models .wh-card__head{align-items:center}
.wh-job li.wh-planned{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:52px}
.wh-track li.wh-planned .wh-tag{margin-right:44px}
@media (max-width:759.98px){.wh-track li.wh-planned .wh-tag{margin-right:0}}

/* ---------- TFR map (/tools/tfr-map/, plugin engine/tfr-map-ui.mjs) ---------- */
/* The tool box lifted onto the masthead: head and status, filters, the map (about 62%) beside the summary card and
   the list sorted by start time. Map colours: red in force, amber starting later, a dashed outline for a TFR that
   starts above 400 ft; the "near" spot in cobalt. Strokes keep their width when the map zooms. */
.wh-tm{padding:28px 32px 32px;border:1.5px solid var(--ink-line);border-radius:var(--r);background:var(--paper);box-shadow:var(--shadow);scroll-margin-top:72px}
.wh-tm [hidden]{display:none!important}
.wh-tm__head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:8px 24px}
.wh-tm__h{font:800 clamp(36px,3.4vw,48px)/.95 var(--f-cond);text-transform:uppercase;scroll-margin-top:72px}
.wh-tm__lead{margin-top:6px;max-width:62ch;font-size:17px;line-height:1.5;color:var(--ink-soft)}
.wh-tm__statusrow{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;margin-top:16px;padding:10px 14px;border-radius:8px;background:var(--sheet);border:1px solid var(--rule)}
.wh-tm__status{flex:1 1 320px;font:500 16px/1.4 var(--f-body);color:var(--ink)}
.wh-tm__refresh{min-height:44px}
.wh-tm__controls{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:16px 24px;margin-top:20px}
.wh-tm__near{position:relative;display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px}
.wh-tm__near .wh-field{flex:1 1 240px}
.wh-tm__msg{flex:1 1 100%;font-weight:600;font-size:16px;line-height:1.4}
.wh-tm__picks{display:flex;flex-wrap:wrap;gap:8px;flex:1 1 100%}
.wh-tm__picks .wh-btn{min-height:44px;font-size:17px;white-space:normal;text-align:left}
.wh-tm__types{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0;padding:0;border:0}
.wh-tm__types legend{float:left;margin-right:8px;padding:0;color:var(--ink-soft)}
.wh-tm__type{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 12px 0 10px;border:1.5px solid var(--ink-line);border-radius:8px;background:var(--control);color:var(--ink-soft);font:600 17px/1.1 var(--f-semi);cursor:pointer}
.wh-tm__box{flex:none;display:flex;align-items:center;justify-content:center;width:18px;height:18px;border:1.5px solid var(--ink-line);border-radius:4px;background:var(--control);color:var(--on-solid)}
.wh-tm__box svg{display:none}
.wh-tm__type[aria-pressed=true]{color:var(--ink)}
.wh-tm__type[aria-pressed=true] .wh-tm__box{border-color:var(--solid);background:var(--solid)}
.wh-tm__type[aria-pressed=true] .wh-tm__box svg{display:block;width:14px;height:14px}
.wh-tm__type:hover{background:var(--band)}
.wh-tm__n{min-width:24px;padding:2px 6px;border-radius:6px;background:var(--band);font:600 14px/1.2 var(--f-semi);font-variant-numeric:tabular-nums;text-align:center;color:var(--ink)}
.wh-tm__n:empty{display:none}
.wh-tm__body{display:grid;grid-template-columns:minmax(0,62fr) minmax(0,38fr);gap:24px;align-items:start;margin-top:24px}
.wh-tm__map{position:relative;overflow:hidden;border:1px solid var(--rule);border-radius:10px;background:var(--map-water)}
.wh-tm__svg{display:block;width:100%;height:auto;aspect-ratio:960/530;touch-action:pan-y;cursor:zoom-in;user-select:none;-webkit-user-select:none}
.wh-tm.is-zoomed .wh-tm__svg{touch-action:none;cursor:grab}
.wh-tm__wait{display:flex;align-items:center;justify-content:center;aspect-ratio:960/530;padding:16px;font:500 16px/1.4 var(--f-body);color:var(--ink-soft);background:var(--map-land)}
.wh-tm__sea{fill:var(--map-water)}
.wh-tm__land path{fill:var(--map-land);stroke:var(--leader);stroke-width:.8px;vector-effect:non-scaling-stroke;stroke-linejoin:round}
.wh-tm__inset rect{fill:none;stroke:var(--leader);stroke-width:1px;stroke-dasharray:4 3;vector-effect:non-scaling-stroke}
.wh-tm__inset text{font:600 13px var(--f-semi);letter-spacing:.03em;fill:var(--map-label);text-anchor:middle}
.wh-tm__z{stroke-width:1.5px;vector-effect:non-scaling-stroke;stroke-linejoin:round}
.wh-tm__z--now{fill:color-mix(in srgb,var(--no-go) 26%,transparent);stroke:var(--no-go)}
.wh-tm__z--later{fill:color-mix(in srgb,var(--caution) 32%,transparent);stroke:var(--caution-ink)}
.wh-tm__z--above{fill:none;stroke:var(--ink-soft);stroke-dasharray:5 4}
.wh-tm__z.is-on{stroke:var(--ink);stroke-width:3px}
.wh-tm__m{stroke:var(--paper);stroke-width:1.5px;vector-effect:non-scaling-stroke}
.wh-tm__m--now{fill:var(--no-go)}
.wh-tm__m--later{fill:var(--caution)}
.wh-tm__m--above{fill:var(--paper);stroke:var(--ink-soft)}
.wh-tm__m.is-on{stroke:var(--ink);stroke-width:3px}
.wh-tm__ring{fill:color-mix(in srgb,var(--cobalt) 8%,transparent);stroke:var(--cobalt);stroke-width:1.5px;stroke-dasharray:6 4;vector-effect:non-scaling-stroke}
.wh-tm__dot{fill:var(--cobalt);stroke:var(--paper);stroke-width:2px;vector-effect:non-scaling-stroke}
.wh-tm__zoom{position:absolute;top:10px;right:10px;display:flex;flex-direction:column;gap:6px}
.wh-tm__zoom button{display:flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;border:1.5px solid var(--ink-line);border-radius:8px;background:var(--paper);color:var(--ink);font:700 22px/1 var(--f-cond);cursor:pointer;box-shadow:var(--shadow)}
.wh-tm__zoom button:hover{background:var(--band)}
.wh-tm__zoom .wh-tm__all-us{font-size:15px;letter-spacing:.02em}
.wh-tm__mapnote{position:absolute;left:10px;right:64px;bottom:10px;padding:6px 10px;border-radius:6px;background:var(--paper);font-size:14px;line-height:1.4;color:var(--ink-soft)}
.wh-tm__legend{display:flex;flex-wrap:wrap;gap:6px 18px;margin:10px 0 0;padding:0;list-style:none;font:500 15px/1.4 var(--f-body);color:var(--ink-soft)}
.wh-tm__legend li{display:inline-flex;align-items:center;gap:8px}
.wh-tm__key{flex:none;display:inline-block;width:16px;height:16px;border-radius:4px}
.wh-tm__key--now{background:color-mix(in srgb,var(--no-go) 26%,transparent);border:2px solid var(--no-go)}
.wh-tm__key--later{background:color-mix(in srgb,var(--caution) 32%,transparent);border:2px solid var(--caution-ink)}
.wh-tm__key--above{border:2px dashed var(--ink-soft)}
.wh-tm__key--you{border:2px dashed var(--cobalt);border-radius:50%;background:color-mix(in srgb,var(--cobalt) 10%,transparent)}
.wh-tm__mapcap{margin-top:6px;font-size:14px;line-height:1.45;color:var(--ink-soft)}
.wh-tm__side{display:grid;gap:16px;min-width:0}
.wh-tm__card{padding:18px 20px 20px;border:1.5px solid var(--ink-line);border-radius:10px;background:var(--paper)}
.wh-tm__many{font:600 14px/1.2 var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft)}
.wh-tm__one+.wh-tm__one{margin-top:16px;padding-top:16px;border-top:1px solid var(--rule)}
.wh-tm__many+.wh-tm__one{margin-top:10px}
.wh-tm__top{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;font:600 14px/1.2 var(--f-semi);letter-spacing:.03em;color:var(--ink-soft)}
.wh-tm__place{margin-top:10px;font:700 28px/1.05 var(--f-cond);text-transform:uppercase;text-wrap:balance;overflow-wrap:anywhere}
.wh-tm__place:focus{outline:0}
.wh-tm__place:focus-visible{outline:3px solid var(--cobalt);outline-offset:2px}
.wh-tm__facts{display:grid;gap:8px;margin-top:12px}
.wh-tm__facts>div{display:grid;grid-template-columns:72px minmax(0,1fr);gap:12px;align-items:baseline}
.wh-tm__facts dt{font:600 14px/1.3 var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft)}
.wh-tm__facts dd{font-size:16px;line-height:1.45}
.wh-tm__cite{font-size:14px;color:var(--ink-soft);white-space:nowrap}
.wh-tm__means{margin-top:12px;padding:12px 14px;border-radius:8px;background:var(--sheet);border:1px solid var(--rule);font-size:16px;line-height:1.5}
.wh-tm__fine{margin-top:10px;font-size:14px;line-height:1.45;color:var(--ink-soft)}
.wh-tm__close{margin-top:12px;min-height:44px}
.wh-tm__list{min-width:0}
.wh-tm__listh{padding-bottom:8px;font-size:15px;line-height:1.4;color:var(--ink-soft)}
.wh-tm__listh b{color:var(--ink);font-weight:700}
.wh-tm__rows{margin:0;padding:0;list-style:none;border-top:1px solid var(--rule)}
.wh-tm.is-live .wh-tm__rows{max-height:var(--tm-list,520px);overflow-y:auto;overscroll-behavior:contain}
.wh-tm__row{display:flex;align-items:flex-start;gap:12px;width:100%;min-height:56px;padding:12px 10px 12px 8px;border:0;border-bottom:1px solid var(--rule);background:none;color:var(--ink);text-align:left;font:inherit;cursor:pointer}
.wh-tm__row:hover{background:var(--band)}
.wh-tm__row[aria-pressed=true]{background:var(--band);box-shadow:inset 3px 0 0 var(--ink)}
.wh-tm__row:focus-visible{outline-offset:-3px}
.wh-tm__row .wh-tm__key{margin-top:3px}
.wh-tm__rowtext{display:flex;flex-direction:column;gap:2px;min-width:0}
.wh-tm__rowtext b{font-weight:700;font-size:17px;line-height:1.3;overflow-wrap:anywhere}
.wh-tm__rowtext span{font-size:15px;line-height:1.4;color:var(--ink-soft)}
.wh-tm__rowtext .wh-tm__when{color:var(--ink)}
.wh-tm__rowtext .wh-tm__far{font-weight:600;color:var(--cobalt)}
.wh-tm__all{margin-top:12px}
.wh-tm__empty{display:flex;flex-wrap:wrap;align-items:flex-start;gap:12px 16px;padding:16px 18px;border:1px dashed var(--soft-line);border-radius:10px;background:var(--sheet)}
.wh-tm__empty p{flex:1 1 220px;font-size:16px;line-height:1.5}
.wh-tm__empty--failed,.wh-tm__empty--offline{border:1.5px solid var(--no-go);background:var(--no-go-pale)}
.wh-tm__horse{flex:none;width:64px;height:64px}
.wh-tm__notices{margin-top:20px;border-top:1px solid var(--rule)}
.wh-tm__notices>summary{display:flex;align-items:center;min-height:48px;color:var(--cobalt);font:600 16px/1.3 var(--f-body);cursor:pointer}
.wh-tm__notices ul{margin:4px 0 0;padding-left:1.2em;max-width:90ch;font-size:15px;line-height:1.5;color:var(--ink-soft)}
.wh-tm__notices li+li{margin-top:6px}
.wh-tm__nojs{margin-top:20px;padding:16px 18px;border:1px solid var(--rule);border-radius:10px;background:var(--sheet);font-size:17px;line-height:1.5}
.wh-srcfold__h{font:inherit;scroll-margin-top:72px}
.wh-tm__note{margin-top:20px;font-size:14px;line-height:1.5;color:var(--ink-soft);max-width:110ch}
@media (max-width:967.98px){
	.wh-tm__controls{grid-template-columns:1fr}
	.wh-tm__body{grid-template-columns:1fr}
	.wh-tm.is-live .wh-tm__rows{max-height:none;overflow:visible}
}
@media (max-width:759.98px){
	.wh-tm{padding:20px 16px 24px}
	.wh-tm__zoom{top:8px;right:8px}
	.wh-tm__type{font-size:16px}
	.wh-tm__inset text{font-size:22px}
	.wh-tm__place{font-size:26px}
}

/* ---------- Density altitude calculator (/tools/density-altitude-calculator/, plugin engine/density-altitude-ui.mjs) ---------- */
/* The tool box lifted onto the masthead: two tabs (live weather: place field and a tap map; your own values) on the
   left, the answer on the right. The answer: the big number, one plain line, four facts, what it means for a drone
   (a word tag by band), the values used folded, and the buttons. */
.wh-da{padding:28px 32px 32px;border:1.5px solid var(--ink-line);border-radius:var(--r);background:var(--paper);box-shadow:var(--shadow);scroll-margin-top:72px}
.wh-da [hidden]{display:none!important}
.wh-da__h{font:800 clamp(36px,3.4vw,48px)/.95 var(--f-cond);text-transform:uppercase;scroll-margin-top:72px}
.wh-da__lead{margin-top:6px;max-width:66ch;font-size:17px;line-height:1.5;color:var(--ink-soft)}
.wh-da__body{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:28px;align-items:start;margin-top:20px}
.wh-da__in{min-width:0}
.wh-da__tabs{display:flex;gap:4px;border-bottom:1.5px solid var(--ink-line)}
.wh-da__tab{min-height:48px;margin-bottom:-1.5px;padding:0 18px;border:1.5px solid transparent;border-bottom:0;border-radius:8px 8px 0 0;background:none;color:var(--ink-soft);font:600 18px/1 var(--f-cond);letter-spacing:.04em;text-transform:uppercase;cursor:pointer}
.wh-da__tab:hover{background:var(--band);color:var(--ink)}
.wh-da__tab[aria-selected=true]{border-color:var(--solid);background:var(--solid);color:var(--on-solid)}
.wh-da__tab:focus-visible{outline-offset:-3px}
.wh-da__pane{padding-top:18px}
.wh-da__near{position:relative;display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px}
.wh-da__near .wh-field{flex:1 1 260px}
.wh-da__msg{flex:1 1 100%;font-weight:600;font-size:16px;line-height:1.4}
.wh-da__picks{display:flex;flex-wrap:wrap;gap:8px;flex:1 1 100%}
.wh-da__picks .wh-btn{min-height:44px;font-size:17px;white-space:normal;text-align:left}
.wh-da__map{position:relative;margin-top:16px;overflow:hidden;border:1px solid var(--rule);border-radius:10px;background:var(--map-water)}
.wh-da__svg{display:block;width:100%;height:auto;aspect-ratio:960/530;cursor:crosshair;touch-action:manipulation;user-select:none;-webkit-user-select:none}
.wh-da__svg [data-l=land] path{fill:var(--map-land);stroke:var(--leader);stroke-width:.8px;vector-effect:non-scaling-stroke;stroke-linejoin:round}
.wh-da__svg [data-l=land] path:hover{fill:color-mix(in srgb,var(--cobalt) 12%,var(--map-land))}
.wh-da__dot{fill:var(--cobalt);stroke:var(--paper);stroke-width:2.5px;vector-effect:non-scaling-stroke}
.wh-da__wait{display:flex;align-items:center;justify-content:center;aspect-ratio:960/530;padding:16px;font:500 16px/1.4 var(--f-body);color:var(--ink-soft);text-align:center;background:var(--map-land)}
.wh-da__mapnote{position:absolute;left:10px;right:10px;bottom:10px;padding:6px 10px;border-radius:6px;background:var(--paper);font-size:14px;line-height:1.4;color:var(--ink-soft)}
.wh-da__mapcap{margin-top:6px;font-size:14px;line-height:1.45;color:var(--ink-soft)}
.wh-da__manual{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 20px}
.wh-da__f{min-width:0}
.wh-da__tf{display:grid;grid-template-columns:minmax(0,1fr) 96px;gap:8px}
.wh-da__hint{margin-top:5px;font-size:14px;line-height:1.4;color:var(--ink-soft)}
.wh-da__err{margin-top:6px;font-weight:600;font-size:15px;line-height:1.4;color:var(--no-go-ink)}
.wh-da [aria-invalid=true]{border-color:var(--no-go);box-shadow:0 0 0 1px var(--no-go)}
.wh-da__go{grid-column:1/-1}
.wh-da__go .wh-btn{min-width:180px}
.wh-da__out{min-width:0}
.wh-da__res{padding:20px 22px 22px;border:1.5px solid var(--ink-line);border-radius:10px;background:var(--paper)}
.wh-da__res--wait{border-style:dashed;border-color:var(--soft-line);background:var(--sheet)}
.wh-da__res--problem{border-color:var(--caution-ink);background:var(--caution-pale)}
.wh-da__res.is-stale{opacity:.4}
.wh-da__kicker{font:600 14px/1.3 var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft);overflow-wrap:anywhere}
.wh-da__big{margin-top:6px;font:700 26px/1 var(--f-cond);font-variant-numeric:tabular-nums}
.wh-da__big strong{font-weight:800;font-size:clamp(60px,6vw,84px);line-height:.9;letter-spacing:-.01em}
.wh-da__big:focus{outline:0}
.wh-da__big:focus-visible{outline:3px solid var(--cobalt);outline-offset:2px}
.wh-da__say{margin-top:10px;font-size:18px;line-height:1.5}
.wh-da__say:focus{outline:0}
.wh-da__fine{margin-top:8px;font-size:14px;line-height:1.45;color:var(--ink-soft)}
.wh-da__facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px;margin-top:16px;padding:14px 0;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}
.wh-da__facts dt{font:600 14px/1.3 var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft)}
.wh-da__facts dd{margin-top:2px;font:700 22px/1.15 var(--f-cond);font-variant-numeric:tabular-nums}
.wh-da__fx{margin-top:16px}
.wh-da__fxh{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;font-weight:700;font-size:17px;line-height:1.3}
.wh-da__thin{margin-top:8px;font-size:16px;line-height:1.5}
.wh-da__fx ul{margin-top:8px;padding-left:1.2em;font-size:16px;line-height:1.5}
.wh-da__fx li+li{margin-top:6px}
.wh-da__used{margin-top:14px;border-top:1px solid var(--rule)}
.wh-da__used>summary{display:flex;align-items:center;min-height:48px;color:var(--cobalt);font:600 16px/1.3 var(--f-body);cursor:pointer}
.wh-da__used .wh-tbl{font-size:15px}
.wh-da__used .wh-tbl th,.wh-da__used .wh-tbl td{padding:8px 10px}
.wh-da__acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.wh-da__acts .wh-btn{min-height:44px}
.wh-da__empty{display:flex;align-items:flex-start;gap:16px;padding:18px 20px;border:1px dashed var(--soft-line);border-radius:10px;background:var(--sheet)}
.wh-da__empty p{flex:1 1 200px;font-size:16px;line-height:1.5}
.wh-da__horse{flex:none;width:64px;height:64px}
.wh-da__nojs{margin-top:20px;padding:16px 18px;border:1px solid var(--rule);border-radius:10px;background:var(--sheet);font-size:17px;line-height:1.5}
.wh-da__note{margin-top:20px;font-size:14px;line-height:1.5;color:var(--ink-soft);max-width:110ch}
.wh-da__eq{display:block;margin:8px 0;padding:10px 14px;border:1px solid var(--rule);border-radius:8px;background:var(--paper);font:500 16px/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;overflow-x:auto;white-space:nowrap;width:0;min-width:100%}
/* Equations and tables scroll inside the column instead of widening it (a one-column grid track grows to fit them). */
.wh-da__tw{width:0;min-width:100%}
.wh-da__eqline{margin-top:12px}
.wh-da__subsay{margin-top:8px;max-width:80ch;font-size:16px;line-height:1.5;color:var(--ink-soft)}
.wh-da__chart th,.wh-da__chart td{white-space:nowrap}
.wh-da__chart tbody th{width:auto}
@media (max-width:967.98px){
	.wh-da__body{grid-template-columns:1fr}
}
@media (max-width:759.98px){
	.wh-da{padding:20px 16px 24px}
	.wh-da__tab{flex:1 1 0;padding:0 10px;font-size:17px}
	.wh-da__res{padding:16px 16px 18px}
	.wh-da__eq{font-size:14px;white-space:normal;overflow-x:visible}
	/* The short tables stay tables, tightened to fit a 320 px screen without scrolling sideways. */
	.wh-da__tw .wh-tbl:not(.wh-tbl--picks) th,.wh-da__tw .wh-tbl:not(.wh-tbl--picks) td{padding:8px 6px;font-size:14px}
	.wh-da__tw .wh-tbl:not(.wh-tbl--picks) tr>:first-child{padding-left:12px}
	.wh-da__tw .wh-tbl:not(.wh-tbl--picks) tr>:last-child{padding-right:12px}
	.wh-da__tw .wh-tbl:not(.wh-tbl--picks) thead th{white-space:normal;vertical-align:bottom;font-size:14px;letter-spacing:0}
	.wh-da__tw .wh-tbl:not(.wh-tbl--picks) tbody th{width:auto}
	/* The wide chart restacks as one card per elevation (wh-tbl--picks), four columns of labelled numbers. */
	.wh-da__tw .wh-tbl--picks thead{display:none}
	.wh-da__tw .wh-tbl--picks caption{display:block}
	.wh-da__tw .wh-da__chart tr{grid-template-columns:minmax(0,1.2fr) repeat(3,minmax(0,1fr));gap:0 8px;padding:10px 12px 8px}
	.wh-da__tw .wh-da__chart tbody th{grid-column:auto;padding:3px 0;font-size:14px;font-weight:700;color:var(--ink)}
	.wh-da__tw .wh-da__chart td{padding:3px 0;font-size:14px}
	.wh-da__tw .wh-da__chart tbody th::before{content:attr(data-label);display:block;font:600 14px/1.3 var(--f-semi);text-transform:uppercase;color:var(--ink-soft)}
	.wh-da__tw .wh-da__chart td::before{font-size:14px;letter-spacing:0}
}
@media (max-width:479.98px){
	.wh-da__manual{grid-template-columns:1fr}
}

/* ---------- Drone sightings map (/tools/drone-sightings/, plugin engine/drone-sightings-ui.mjs) ---------- */
/* The TFR map's box (.wh-tm) with its own parts: states shaded in six cobalt steps by reports a year, report dots in
   ink, the 30-mile ring in cobalt; beside the map the summary card, a bar per quarter (the period picked in cobalt),
   the places with the most reports as buttons and the reports newest first. */
.wh-sg__sel{display:grid;gap:12px;align-content:start}
.wh-sg__land path{cursor:pointer}
.wh-sg__land path:hover{stroke:var(--ink);stroke-width:1.5px}
.wh-sg__land path.is-on{stroke:var(--ink);stroke-width:2.5px}
.wh-sg__land .wh-sg__c1,.wh-sg__k1{fill:color-mix(in srgb,var(--cobalt) 14%,var(--map-land));background:color-mix(in srgb,var(--cobalt) 14%,var(--map-land))}
.wh-sg__land .wh-sg__c2,.wh-sg__k2{fill:color-mix(in srgb,var(--cobalt) 30%,var(--map-land));background:color-mix(in srgb,var(--cobalt) 30%,var(--map-land))}
.wh-sg__land .wh-sg__c3,.wh-sg__k3{fill:color-mix(in srgb,var(--cobalt) 48%,var(--map-land));background:color-mix(in srgb,var(--cobalt) 48%,var(--map-land))}
.wh-sg__land .wh-sg__c4,.wh-sg__k4{fill:color-mix(in srgb,var(--cobalt) 68%,var(--map-land));background:color-mix(in srgb,var(--cobalt) 68%,var(--map-land))}
.wh-sg__land .wh-sg__c5,.wh-sg__k5{fill:color-mix(in srgb,var(--cobalt) 90%,var(--map-land));background:color-mix(in srgb,var(--cobalt) 90%,var(--map-land))}
.wh-sg__k0{background:var(--map-land)}
.wh-sg__legend .wh-tm__key{border:1px solid var(--leader)}
.wh-sg__legend .wh-tm__key--you{border:2px dashed var(--cobalt)}
.wh-sg__keyh{font-weight:600;color:var(--ink)}
.wh-sg__m{fill:color-mix(in srgb,var(--ink) 72%,transparent);stroke:var(--paper);stroke-width:1.5px;vector-effect:non-scaling-stroke}
.wh-sg__m--city{cursor:pointer}
.wh-sg__m--city:hover{fill:var(--ink)}
.wh-sg__legend .wh-sg__km{border-radius:50%;border-color:var(--paper);background:color-mix(in srgb,var(--ink) 72%,transparent)}
.wh-sg__kind{font:600 14px/1.2 var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft)}
.wh-sg__name{margin-top:8px;font:700 28px/1.05 var(--f-cond);text-transform:uppercase;text-wrap:balance;overflow-wrap:anywhere}
.wh-sg__name:focus{outline:0}
.wh-sg__name:focus-visible{outline:3px solid var(--cobalt);outline-offset:2px}
.wh-sg__big{margin-top:10px;font-size:18px;line-height:1.3}
.wh-sg__big b{font:800 44px/1 var(--f-cond);font-variant-numeric:tabular-nums;margin-right:4px}
.wh-sg__per{margin-top:4px;font-size:15px;line-height:1.4;color:var(--ink-soft)}
.wh-sg__more{margin-top:10px;font-size:16px;line-height:1.5}
.wh-sg__chart{margin-top:16px;padding-top:14px;border-top:1px solid var(--rule)}
.wh-sg__bars{display:grid;grid-template-rows:112px auto;column-gap:2px;align-items:end}
.wh-sg__bar{grid-row:1;align-self:end;height:var(--h);min-height:1px;border-radius:2px 2px 0 0;background:color-mix(in srgb,var(--ink-soft) 32%,transparent)}
.wh-sg__bar.is-on{background:var(--cobalt)}
.wh-sg__bars>span:not(.wh-sg__bar){grid-row:2;align-self:start;padding:4px 0 0 3px;border-left:1px solid var(--rule);font:600 14px/1.2 var(--f-semi);color:var(--ink-soft);white-space:nowrap;overflow:hidden}
.wh-sg__ya{display:none}
.wh-sg__cap{margin-top:8px;font-size:14px;line-height:1.45;color:var(--ink-soft)}
.wh-sg__cap b{color:var(--ink)}
.wh-sg__nums{margin-top:6px}
.wh-sg__nums>summary{display:flex;align-items:center;min-height:44px;color:var(--cobalt);font:600 15px/1.3 var(--f-body);cursor:pointer}
.wh-sg__nums .wh-tbl{font-size:15px}
.wh-sg__nums .wh-tbl th,.wh-sg__nums .wh-tbl td{padding:6px 10px}
.wh-sg__nums tbody tr:not(.is-on){color:var(--ink-soft)}
.wh-sg__tops{display:grid;gap:12px}
.wh-sg__tops:empty{display:none}
.wh-sg__topl{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}
.wh-sg__top{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 8px 0 12px;border:1.5px solid var(--ink-line);border-radius:8px;background:var(--control);color:var(--ink);font:600 16px/1.2 var(--f-semi);text-align:left;cursor:pointer}
.wh-sg__top:hover{background:var(--band)}
.wh-sg__rep{display:flex;flex-direction:column;gap:3px;padding:12px 8px;border-bottom:1px solid var(--rule)}
.wh-sg__rep b{font-weight:700;font-size:17px;line-height:1.3;overflow-wrap:anywhere}
.wh-sg__rep span{font-size:15px;line-height:1.4;color:var(--ink-soft)}
.wh-sg__rep .wh-tag{margin-left:6px;vertical-align:1px}
.wh-sg__rep .wh-tm__far{font-weight:600;color:var(--cobalt)}
.wh-tm.is-live .wh-sg__rows{max-height:none;overflow:visible}
@media (max-width:967.98px){
	.wh-sg__sel{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
}
@media (max-width:759.98px){
	.wh-sg__name{font-size:26px}
	.wh-sg__bars{grid-template-rows:88px auto}
	.wh-sg__bars>span:not(.wh-sg__bar){padding-left:2px}
	.wh-sg__ya{display:inline}
	.wh-sg__yc{display:none}
}
/* "Is drone delivery in my area?" (/work/drone-delivery/): the lookup card (the density calculator's frame: field,
   map and answer side by side), the answer's operator list, and the page's lists of places. */
.wh-dd{padding:28px 32px 32px;border:1.5px solid var(--ink-line);border-radius:var(--r);background:var(--paper);box-shadow:var(--shadow);scroll-margin-top:72px}
.wh-dd [hidden]{display:none!important}
.wh-dd__h{font:800 clamp(36px,3.4vw,48px)/.95 var(--f-cond);text-transform:uppercase;scroll-margin-top:72px}
.wh-dd__lead{margin-top:6px;max-width:66ch;font-size:17px;line-height:1.5;color:var(--ink-soft)}
.wh-dd__body{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,6fr);gap:28px;align-items:start;margin-top:20px}
.wh-dd__in,.wh-dd__out{min-width:0}
.wh-dd__near{position:relative;display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px}
.wh-dd__near .wh-field{flex:1 1 260px}
.wh-dd__msg{flex:1 1 100%;font-weight:600;font-size:16px;line-height:1.4}
.wh-dd__picks{display:flex;flex-wrap:wrap;gap:8px;flex:1 1 100%}
.wh-dd__picks .wh-btn{min-height:44px;font-size:17px;white-space:normal;text-align:left}
.wh-dd__map{position:relative;margin-top:16px;overflow:hidden;border:1px solid var(--rule);border-radius:10px;background:var(--map-water)}
.wh-dd__svg{display:block;width:100%;height:auto;aspect-ratio:960/530;cursor:crosshair;touch-action:manipulation;user-select:none;-webkit-user-select:none}
.wh-dd__svg [data-l=land] path{fill:var(--map-land);stroke:var(--leader);stroke-width:.8px;vector-effect:non-scaling-stroke;stroke-linejoin:round}
.wh-dd__svg [data-l=land] path:hover{fill:color-mix(in srgb,var(--cobalt) 12%,var(--map-land))}
.wh-dd__svg [data-l=areas]{pointer-events:none}
.wh-dd__dot{stroke:var(--paper);stroke-width:2px;vector-effect:non-scaling-stroke}
.wh-dd__dot--go{fill:var(--go)}
.wh-dd__dot--some{fill:var(--caution)}
.wh-dd__pin{fill:var(--cobalt);stroke:var(--paper);stroke-width:2.5px;vector-effect:non-scaling-stroke;pointer-events:none}
.wh-dd__wait{display:flex;align-items:center;justify-content:center;aspect-ratio:960/530;padding:16px;font:500 16px/1.4 var(--f-body);color:var(--ink-soft);text-align:center;background:var(--map-land)}
.wh-dd__mapnote{position:absolute;left:10px;right:10px;bottom:10px;padding:6px 10px;border-radius:6px;background:var(--paper);font-size:14px;line-height:1.4;color:var(--ink-soft)}
.wh-dd__mapcap{display:flex;flex-wrap:wrap;gap:4px 16px;margin-top:6px;font-size:14px;line-height:1.45;color:var(--ink-soft)}
.wh-dd__key{display:inline-flex;align-items:center;gap:6px}
.wh-dd__key i{display:inline-block;width:12px;height:12px;border-radius:50%;box-shadow:0 0 0 2px var(--paper),0 0 0 3px var(--rule)}
.wh-dd__key--go i{background:var(--go)}
.wh-dd__key--some i{background:var(--caution)}
.wh-dd__key--pin i{background:var(--cobalt)}
.wh-dd__res{padding:20px 22px 22px;border:1.5px solid var(--ink-line);border-radius:10px;background:var(--paper)}
.wh-dd__res--yes{border-color:var(--go-ink);box-shadow:inset 6px 0 0 var(--go)}
.wh-dd__res--some{border-color:var(--caution-ink);box-shadow:inset 6px 0 0 var(--caution)}
.wh-dd__res--wait{border-style:dashed;border-color:var(--soft-line);background:var(--sheet)}
.wh-dd__res--problem{border-color:var(--caution-ink);background:var(--caution-pale)}
.wh-dd__kicker{font:600 14px/1.3 var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft);overflow-wrap:anywhere}
.wh-dd__big{margin-top:6px;font:700 26px/1 var(--f-cond)}
.wh-dd__big strong{font-weight:800;font-size:clamp(52px,5vw,72px);line-height:.9;letter-spacing:-.01em}
.wh-dd__big:focus,.wh-dd__say:focus{outline:0}
.wh-dd__big:focus-visible{outline:3px solid var(--cobalt);outline-offset:2px}
.wh-dd__say{margin-top:10px;font-size:18px;line-height:1.5}
.wh-dd__list{margin-top:14px;list-style:none;padding:0;border-top:1px solid var(--rule)}
.wh-dd__op{padding:14px 0;border-bottom:1px solid var(--rule);font-size:16px;line-height:1.5}
.wh-dd__oph{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin-bottom:4px}
.wh-dd__oph>b{font:700 20px/1.2 var(--f-cond);letter-spacing:.02em;text-transform:uppercase}
.wh-dd__via{font-size:15px;color:var(--ink-soft)}
.wh-dd__oph .wh-tag{margin-left:auto}
.wh-dd__how{margin-top:6px}
.wh-dd__src{margin-top:6px;font-size:14px;line-height:1.45;color:var(--ink-soft)}
.wh-dd__subh{margin-top:18px;font:600 14px/1.3 var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft)}
.wh-dd__list--soon{margin-top:6px}
.wh-dd__fine{margin-top:12px;font-size:14px;line-height:1.45;color:var(--ink-soft)}
.wh-dd__acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.wh-dd__acts .wh-btn{min-height:44px}
.wh-dd__empty{display:flex;align-items:flex-start;gap:16px;padding:18px 20px;border:1px dashed var(--soft-line);border-radius:10px;background:var(--sheet)}
.wh-dd__empty p{flex:1 1 200px;font-size:16px;line-height:1.5}
.wh-dd__horse{flex:none;width:64px;height:64px}
.wh-dd__nojs{margin-top:20px;padding:16px 18px;border:1px solid var(--rule);border-radius:10px;background:var(--sheet);font-size:17px;line-height:1.5}
.wh-dd__note{margin-top:20px;font-size:14px;line-height:1.5;color:var(--ink-soft);max-width:110ch}
/* The page's lists of places by operator (written by build_drone_delivery.py). */
.wh-ddlist{margin-top:10px;padding-left:1.2em;font-size:17px;line-height:1.55}
.wh-ddlist>li+li{margin-top:8px}
.wh-ddwhere h3{margin-top:26px;font:800 24px/1.1 var(--f-cond);text-transform:uppercase}
.wh-ddwhere h3:first-child{margin-top:8px}
.wh-ddwhere h3 .wh-tag{margin-left:8px;vertical-align:4px}
.wh-ddwhere h3+p{margin-top:8px}
.wh-tbl.wh-ddops tbody th{width:17%;min-width:9em;color:var(--ink)}
.wh-ddops tbody th small{display:block;margin-top:4px;font:400 14px/1.4 var(--f-body);color:var(--ink-soft)}
@media (max-width:967.98px){
	.wh-dd__body{grid-template-columns:1fr}
}
@media (max-width:759.98px){
	.wh-dd{padding:20px 16px 24px}
	.wh-dd__res{padding:16px 16px 18px}
	.wh-dd__oph .wh-tag{margin-left:0}
}

/* ==========================================================================
   Field sheet: the page system the owner approved on 2026-11-14 (AGENTS.md "Page system").
   The ink masthead, the fact strip, the section index, parts and the 7/5 field, photo cards, answers, folds.
   ========================================================================== */

:root{
	--mast:#101412;--on-mast:#FFFFFF;--mast-soft:#C9D1CB;--mast-line:#3A423D;
	--read:18px;--read-lh:1.62;
	--r:12px;
	--shadow:0 1px 2px rgb(16 20 18 / .06),0 8px 24px -12px rgb(16 20 18 / .18);
}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--mast:#131415;--mast-line:#3F4246;--shadow:0 1px 2px rgb(0 0 0 / .3),0 10px 28px -14px rgb(0 0 0 / .6)}}
:root[data-theme=dark]{--mast:#131415;--mast-line:#3F4246;--shadow:0 1px 2px rgb(0 0 0 / .3),0 10px 28px -14px rgb(0 0 0 / .6)}

html{scroll-behavior:smooth;scroll-padding-top:72px}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{scrollbar-color:var(--leader) var(--ground)}
::selection{background:var(--cobalt);color:var(--paper)}
:root{accent-color:var(--cobalt)}

/* ---------- Masthead ---------- */
.wh-mast{position:relative;overflow:hidden;background:var(--mast);color:var(--on-mast)}
.wh-mast__in{position:relative;z-index:1;max-width:1312px;margin:0 auto;padding:12px var(--gut) 104px;min-height:540px;display:flex;flex-direction:column}
.wh-mast__text{max-width:600px;margin-block:auto;padding-top:8px}
.wh-mast .wh-crumbs ol{margin:0 0 20px;color:var(--mast-soft)}
.wh-mast .wh-crumbs a{color:var(--on-mast)}
.wh-mast .wh-crumbs li+li::before{color:var(--mast-soft)}
.wh-mast__h1{font:800 clamp(56px,6.2vw,92px)/.9 var(--f-cond);letter-spacing:-.005em;text-transform:uppercase;text-wrap:balance}
.wh-mast__say{margin-top:20px;max-width:23.25em;font:400 21px/1.45 var(--f-body);color:#E4E9E5;text-wrap:pretty}
.wh-mast__acts{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}
.wh-btn--go{background:var(--go);color:#101412}
.wh-btn--go:hover{background:#2BBD5F;color:#101412}
.wh-btn--ghost{padding:0 18px;border:1.5px solid rgb(255 255 255 / .7);background:transparent;color:var(--on-mast)}
.wh-btn--ghost:hover{background:rgb(255 255 255 / .1);color:var(--on-mast);border-color:#FFFFFF}
.wh-mast :focus-visible{outline-color:#9DBAFF}
.wh-mast__meta{display:flex;flex-wrap:wrap;gap:4px 18px;margin-top:22px;font:500 15px/1.4 var(--f-body);color:var(--mast-soft)}
.wh-mast__meta svg{vertical-align:-3px;margin-right:6px;color:#62D690}
.wh-mast__photo{position:absolute;inset:0 0 0 auto;width:min(62%,calc(50vw + 220px));margin:0}
.wh-mast__photo img{display:block;width:100%;height:100%;object-fit:cover;object-position:var(--focus,60% 50%);
	-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 34%);mask-image:linear-gradient(90deg,transparent 0,#000 34%)}
.wh-credit{font:500 14px/1.3 var(--f-body);color:var(--ink-soft)}
.wh-mast__photo .wh-credit{position:absolute;right:var(--gut);bottom:84px;padding:3px 8px;border-radius:4px;background:rgb(16 20 18 / .62);color:#E4E9E5}

/* ---------- Fact strip (sits on the masthead's lower edge) ---------- */
.wh-facts{position:relative;z-index:2;max-width:1312px;margin:-64px auto 0;padding:0 var(--gut)}
.wh-facts dl{display:grid;grid-template-columns:repeat(var(--n,5),minmax(0,1fr));background:var(--paper);border:1px solid var(--ink-line);border-radius:var(--r);box-shadow:var(--shadow)}
.wh-fact{display:flex;flex-direction:column-reverse;justify-content:flex-end;gap:6px;padding:20px 22px 22px;min-width:0}
.wh-fact+.wh-fact{border-left:1px solid var(--rule)}
.wh-fact dt{font:600 14px/1.25 var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft)}
.wh-fact dd{font:800 46px/.95 var(--f-cond);letter-spacing:-.01em;font-variant-numeric:tabular-nums;white-space:nowrap}
.wh-fact dd small{margin-left:3px;font-size:22px;font-weight:700;letter-spacing:0}
.wh-fact dd .wh-tag{vertical-align:8px}

/* ---------- Section index (sticky) ---------- */
.wh-index{position:sticky;top:0;z-index:15;margin-top:28px;background:color-mix(in srgb,var(--ground) 92%,transparent);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-bottom:1px solid var(--rule)}
.wh-index ol{max-width:1312px;margin:0 auto;padding:0 var(--gut);display:flex;gap:4px;list-style:none;overflow-x:auto;scrollbar-width:none}
.wh-index ol::-webkit-scrollbar{display:none}
.wh-index a{position:relative;display:flex;align-items:center;height:52px;padding:0 12px;color:var(--ink-soft);font:600 17px/1 var(--f-cond);letter-spacing:.04em;text-transform:uppercase;text-decoration:none;white-space:nowrap}
.wh-index a:hover{color:var(--ink)}
.wh-index a[aria-current]{color:var(--ink)}
.wh-index a[aria-current]::after{content:"";position:absolute;left:12px;right:12px;bottom:0;height:3px;border-radius:3px 3px 0 0;background:var(--ink)}
.wh-index a:focus-visible{outline-offset:-3px}

/* ---------- Parts and the 7/5 field ---------- */
.wh-part{padding:80px var(--gut)}
.wh-part--paper{background:var(--paper);border-block:1px solid var(--rule)}
.wh-part__in{max-width:1312px;margin:0 auto}
.wh-part__h{font:700 clamp(36px,3.6vw,52px)/1 var(--f-cond);text-transform:uppercase;text-wrap:balance;scroll-margin-top:72px}
.wh-part__say{margin-top:14px;max-width:46ch;font:400 21px/1.45 var(--f-body);color:var(--ink-soft);text-wrap:pretty}
.wh-split{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:56px;align-items:start;margin-top:40px}
.wh-split--top{margin-top:0}
.wh-split--rev{grid-template-columns:minmax(0,5fr) minmax(0,7fr)}
.wh-aside{display:grid;gap:20px;position:sticky;top:76px}

/* Reading text */
.wh-text{font-size:var(--read);line-height:var(--read-lh)}
.wh-text>*{max-width:68ch}
.wh-text>*+*{margin-top:1em}
.wh-text h3{margin-top:1.8em;font:700 28px/1.1 var(--f-cond);text-wrap:balance}
.wh-text h3+p{margin-top:.5em}
.wh-text ul{padding-left:1.2em}
.wh-text ol{padding-left:1.6em}
.wh-text li+li{margin-top:.4em}
.wh-text li::marker{color:var(--leader)}
.wh-h3{text-wrap:balance}

/* ---------- Answer rows: plain answer, tag, the exact rule folded ---------- */
.wh-reply{list-style:none;border-bottom:1px solid var(--rule)}
.wh-reply>li{display:grid;grid-template-columns:200px minmax(0,1fr) auto;gap:4px 24px;align-items:baseline;padding:22px 0 20px;border-top:1px solid var(--rule)}
.wh-reply__k{font:700 22px/1.1 var(--f-cond);text-transform:uppercase;letter-spacing:.02em}
.wh-reply__v{font-size:var(--read);line-height:1.5}
.wh-reply__v strong{font-weight:700}
.wh-reply__t{align-self:start}
.wh-reply .wh-fold{grid-column:2/4}
.wh-fold{margin-top:6px}
.wh-fold>summary{display:inline-flex;align-items:center;gap:6px;min-height:36px;color:var(--cobalt);font:600 15px/1.2 var(--f-body);cursor:pointer;border-radius:4px}
.wh-fold>summary:hover{color:var(--cobalt-hover)}
.wh-fold>summary svg{transition:transform .2s cubic-bezier(.2,.8,.2,1)}
.wh-fold[open]>summary svg{transform:rotate(90deg)}
.wh-fold__body{margin-top:6px;padding:14px 16px;border-radius:8px;background:var(--sheet);border:1px solid var(--rule);font-size:15px;line-height:1.55;color:var(--ink-soft)}
.wh-fold__body q{display:block;color:var(--ink);font-style:italic;quotes:"“" "”"}
.wh-fold__body cite{display:block;margin-top:6px;font:600 14px/1.3 var(--f-semi);font-style:normal;letter-spacing:.03em;text-transform:uppercase}
@media (prefers-reduced-motion:reduce){.wh-fold>summary svg{transition:none}}
/* Touch screens: the fold summaries and the crumb links reach the 44 px target in both directions */
@media (pointer:coarse){.wh-fold>summary{min-height:44px}.wh-crumbs a{min-width:44px}}

/* The one callout per part: a framed note with its own heading and action */
.wh-callout{padding:22px 24px 24px;border:1.5px solid var(--ink-line);border-radius:var(--r);background:var(--paper)}
.wh-callout h3{font:700 26px/1.1 var(--f-cond);text-transform:uppercase}
.wh-callout p{margin-top:8px;max-width:68ch;font-size:17px;line-height:1.5;color:var(--ink-soft)}
.wh-callout .wh-btn{margin-top:16px}
.wh-callout--ink{border-color:var(--mast);background:var(--mast);color:var(--on-mast)}
.wh-callout--ink p{color:var(--mast-soft)}

/* ---------- Photos ---------- */
.wh-shot{margin:0}
.wh-shot img{display:block;width:100%;height:auto;border-radius:var(--r);background:var(--band)}
.wh-shot figcaption{display:flex;flex-wrap:wrap;justify-content:space-between;gap:2px 12px;margin-top:8px;font-size:15px;line-height:1.4;color:var(--ink-soft)}
.wh-shot--crop img{aspect-ratio:var(--ar,4/3);object-fit:cover;object-position:var(--focus,50% 50%)}
.wh-gal{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}
.wh-gal>*{grid-column:span 3}
.wh-gal>.wh-gal__wide{grid-column:1/-1}
.wh-gal>.wh-gal__third{grid-column:span 2}
@media (max-width:759.98px){.wh-gal>.wh-gal__third{grid-column:1/-1}.wh-gal .wh-gal__third img{aspect-ratio:16/9}}
.wh-gal img{aspect-ratio:4/3;object-fit:cover}
.wh-gal .wh-gal__wide img{aspect-ratio:16/9}
/* A two-by-two gallery that stacks one photo per row on phones, so sample photos stay large there. */
@media (max-width:759.98px){.wh-gal--2>*{grid-column:1/-1}}
.wh-zoom{display:block;padding:0;border:0;background:none;border-radius:var(--r);cursor:zoom-in;width:100%}
.wh-zoom img{transition:filter .2s}
.wh-zoom:hover img{filter:brightness(1.06)}

/* Lightbox (dialog) */
.wh-lightbox{max-width:min(1400px,96vw);max-height:94vh;padding:0;border:0;border-radius:var(--r);background:#0B0E0C;color:#E4E9E5}
.wh-lightbox::backdrop{background:rgb(8 10 9 / .82)}
.wh-lightbox img{display:block;max-width:100%;max-height:84vh;margin:0 auto}
.wh-lightbox p{display:flex;justify-content:space-between;gap:12px;padding:10px 14px;font-size:15px}
.wh-lightbox button{min-height:40px;padding:0 14px;border:1px solid #47514B;border-radius:8px;background:none;color:#FFFFFF;font:600 16px/1 var(--f-cond);letter-spacing:.04em;text-transform:uppercase}

/* ---------- Two-camera pair ---------- */
.wh-pair2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:28px}
.wh-lens{padding:20px 20px 18px;border:1px solid var(--rule);border-radius:var(--r);background:var(--paper)}
.wh-lens h3{font:700 24px/1.1 var(--f-cond);text-transform:uppercase}
.wh-lens__mm{display:block;margin-top:10px;font:800 56px/.9 var(--f-cond);font-variant-numeric:tabular-nums}
.wh-lens__mm small{font-size:24px;margin-left:4px}
.wh-lens dl{margin-top:14px;display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:16px}
.wh-lens dt{color:var(--ink-soft)}
.wh-lens dd{font-weight:600;font-variant-numeric:tabular-nums}

/* ---------- Weight scale (the 0.55 lb line) ---------- */
.wh-wscale{padding:28px 28px 20px}
.wh-wscale__track{position:relative;height:170px;margin:0 8px}
.wh-wscale__axis{position:absolute;left:0;right:0;bottom:30px;height:2px;background:var(--ink)}
.wh-wscale__tick{position:absolute;bottom:22px;width:1px;height:18px;background:var(--ink)}
.wh-wscale__tick span{position:absolute;top:22px;left:50%;transform:translateX(-50%);font:600 14px/1 var(--f-semi);letter-spacing:.03em;color:var(--ink-soft);white-space:nowrap}
.wh-wscale__line{position:absolute;top:0;bottom:30px;width:0;border-left:2px dashed var(--caution-ink)}
.wh-wscale__line b{position:absolute;top:0;left:8px;font:700 15px/1.15 var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--caution-ink);white-space:nowrap}
.wh-wscale__dot{position:absolute;bottom:24px;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:6px}
.wh-wscale__dot i{display:block;width:14px;height:14px;border-radius:50%;background:var(--paper);border:2px solid var(--ink)}
.wh-wscale__dot span{position:relative;padding:1px 4px;border-radius:4px;background:var(--sheet);font:600 14px/1.1 var(--f-semi);letter-spacing:.02em;text-align:center;white-space:nowrap}
.wh-wscale__dot--me{bottom:21px}
.wh-wscale__dot--me i{width:20px;height:20px;background:var(--cobalt);border-color:var(--cobalt)}
.wh-wscale__dot--me span{color:var(--cobalt);font-weight:700;font-size:16px}
.wh-wscale__dot--up span{margin-bottom:30px}
.wh-wscale__dot--up span::after{content:"";position:absolute;left:50%;top:100%;height:30px;border-left:1px solid var(--leader)}
.wh-wscale__dot--end{transform:translateX(-86%);align-items:flex-end}
.wh-wscale__dot--end i{margin-right:-1px}
.wh-wscale+.wh-rows{margin-top:24px}
.wh-wscale__note{margin-top:14px;font-size:16px;color:var(--ink-soft)}

/* ---------- Tables ---------- */
.wh-tblwrap{overflow-x:auto;border:1px solid var(--rule);border-radius:var(--r);background:var(--paper)}
.wh-tbl{width:100%;border-collapse:collapse;font-size:16px;line-height:1.4;font-variant-numeric:tabular-nums}
.wh-tbl caption{caption-side:top;padding:14px 18px 10px;text-align:left;font:700 22px/1.1 var(--f-cond);text-transform:uppercase}
.wh-tbl th,.wh-tbl td{padding:12px 18px;text-align:left;vertical-align:top;border-top:1px solid var(--rule)}
.wh-tbl thead th{position:sticky;top:0;background:var(--sheet);font:600 14px/1.2 var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft);white-space:nowrap}
.wh-tbl tbody th{font-weight:600;color:var(--ink-soft);width:38%}
.wh-tbl tbody tr:hover{background:var(--sheet)}
.wh-tbl td.wh-n{text-align:right;white-space:nowrap}
.wh-tbl .wh-pickname{font:700 21px/1.1 var(--f-cond)}
.wh-tbl .wh-pickname a{color:var(--ink);text-decoration-color:var(--leader)}
.wh-tbl .wh-pickname a:hover{color:var(--cobalt)}
.wh-tbl .wh-kind{display:block;margin-top:3px;font-size:15px;color:var(--ink-soft)}
.wh-specgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;align-items:start}
.wh-more2{margin-top:20px}
.wh-more2>summary{display:inline-flex;align-items:center;gap:10px;min-height:48px;padding:0 18px;border:1.5px solid var(--ink);border-radius:8px;background:var(--control);font:600 19px/1 var(--f-cond);letter-spacing:.02em;cursor:pointer}
.wh-more2>summary:hover{background:var(--band)}
.wh-more2[open]>summary svg{transform:rotate(180deg)}
.wh-more2>div{margin-top:20px}

/* ---------- Photo cards (compare, guides, tools) ---------- */
.wh-pcards{display:grid;grid-template-columns:repeat(var(--cols,4),minmax(0,1fr));gap:20px}
.wh-pcards--3{--cols:3}
.wh-pcard{position:relative;display:flex;flex-direction:column;border:1px solid var(--rule);border-radius:var(--r);background:var(--paper);overflow:hidden;transition:box-shadow .2s,border-color .2s,transform .2s cubic-bezier(.2,.8,.2,1)}
.wh-pcard:hover{border-color:var(--ink-line);box-shadow:var(--shadow);transform:translateY(-2px)}
.wh-pcard:focus-within{border-color:var(--ink-line)}
.wh-pcard__img{position:relative;aspect-ratio:var(--ar,4/3);background:var(--band)}
.wh-pcard__img img{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover;object-position:var(--focus,50% 50%)}
.wh-pcard__img .wh-credit{position:absolute;right:8px;bottom:8px;padding:2px 6px;border-radius:4px;background:rgb(16 20 18 / .62);color:#E4E9E5;font-size:14px}
.wh-pcard__body{display:flex;flex-direction:column;gap:8px;flex:1;padding:18px 20px 20px}
.wh-pcard h3{font:700 26px/1.05 var(--f-cond);text-transform:uppercase;text-wrap:balance}
.wh-pcard h3 a{color:var(--ink);text-decoration:none}
.wh-pcard h3 a::after{content:"";position:absolute;inset:0;border-radius:var(--r)}
.wh-pcard h3 a:focus-visible{outline:0}
.wh-pcard:has(h3 a:focus-visible){outline:3px solid var(--cobalt);outline-offset:2px}
.wh-pcard p{font-size:16px;line-height:1.5;color:var(--ink-soft)}
.wh-pcard__nums{display:flex;flex-wrap:wrap;gap:4px 16px;margin-top:auto;padding-top:10px;font:600 16px/1.2 var(--f-semi);letter-spacing:.02em;font-variant-numeric:tabular-nums}
.wh-pcard__nums span{color:var(--ink-soft);font-weight:500}
.wh-pcard__go{margin-top:auto;padding-top:6px;color:var(--cobalt);font-weight:600;font-size:16px}
.wh-pcard__go svg{vertical-align:-4px;margin-left:4px;transition:transform .2s}
.wh-pcard:hover .wh-pcard__go svg{transform:translateX(3px)}
.wh-pcard--wide{grid-column:span 2;flex-direction:row}
.wh-pcard--wide .wh-pcard__img{flex:0 0 55%;aspect-ratio:auto;min-height:320px}
.wh-pcard--wide .wh-pcard__body{padding:28px 30px;justify-content:center}
.wh-pcard--wide h3{font-size:40px}
.wh-pcard--wide p{font-size:18px}
@media (prefers-reduced-motion:reduce){.wh-pcard,.wh-pcard__go svg{transition:none}.wh-pcard:hover{transform:none}}

/* ---------- Questions ---------- */
.wh-qa{border-bottom:1px solid var(--rule)}
.wh-qa details{border-top:1px solid var(--rule)}
.wh-qa summary{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:64px;padding:12px 0;font:700 24px/1.15 var(--f-cond);cursor:pointer}
.wh-qa summary:hover{color:var(--cobalt)}
.wh-qa summary svg{flex:none;transition:transform .2s cubic-bezier(.2,.8,.2,1)}
.wh-qa details[open] summary svg{transform:rotate(45deg)}
.wh-qa details>div{padding:0 0 22px;max-width:68ch;font-size:var(--read);line-height:var(--read-lh);color:var(--ink-soft)}
@media (prefers-reduced-motion:reduce){.wh-qa summary svg{transition:none}}

/* ---------- Sources (folded) ---------- */
.wh-srcfold>summary{display:flex;align-items:center;gap:10px;min-height:56px;font:700 24px/1 var(--f-cond);text-transform:uppercase;cursor:pointer}
.wh-srcfold>summary span{font:500 15px/1.3 var(--f-body);text-transform:none;color:var(--ink-soft)}
.wh-srcfold[open]>summary svg{transform:rotate(90deg)}
.wh-srclist{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px 40px;margin-top:16px;font-size:15px;line-height:1.5;color:var(--ink-soft)}
.wh-srclist h3{margin-bottom:6px;font:600 15px/1.2 var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink)}
.wh-srclist li{list-style:none}
.wh-srclist li+li{margin-top:6px}

/* ---------- Hub pieces: featured tool, tool when, steps, zones, penalties ---------- */
.wh-feature{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,6fr);border:1.5px solid var(--ink-line);border-radius:var(--r);background:var(--paper);overflow:hidden;box-shadow:var(--shadow)}
.wh-feature__text{padding:36px 40px;display:flex;flex-direction:column;gap:14px;justify-content:center}
.wh-feature__text h2{font:800 56px/.92 var(--f-cond);text-transform:uppercase}
.wh-feature__text p{font-size:19px;line-height:1.5;color:var(--ink-soft);max-width:44ch}
.wh-feature__demo{position:relative;background:var(--sheet);border-left:1px solid var(--rule);padding:28px;display:flex;flex-direction:column;justify-content:center;gap:12px}
.wh-minband{display:flex;align-items:center;gap:16px;padding:18px 20px;border-radius:10px;background:var(--go);color:#101412}
.wh-minband b{font:800 54px/.9 var(--f-cond);text-transform:uppercase}
.wh-minband span{font:600 17px/1.3 var(--f-body)}
.wh-minrows{display:grid;gap:0;border-radius:10px;background:var(--paper);border:1px solid var(--rule);padding:4px 16px}
.wh-minrows .wh-row{min-height:46px}
.wh-minrows .wh-row:first-child{border-top:0}
.wh-minrows .wh-row:last-child{border-bottom:0}

.wh-when{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.wh-when__col{padding:24px 24px 14px;border-radius:var(--r);background:var(--paper);border:1px solid var(--rule)}
.wh-when__col h3{font:700 28px/1 var(--f-cond);text-transform:uppercase}
.wh-when__col p{margin-top:6px;font-size:16px;color:var(--ink-soft)}
.wh-when ul{list-style:none;margin-top:12px}
.wh-when li{border-top:1px solid var(--rule)}
.wh-when li a{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:52px;color:var(--ink);font-weight:600;text-decoration:none}
.wh-when li a:hover{color:var(--cobalt)}
.wh-when li a svg{flex:none;color:var(--leader);transition:transform .2s}
.wh-when li a:hover svg{transform:translateX(3px);color:var(--cobalt)}

.wh-chooser{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:28px}
.wh-chooser button{display:grid;grid-template-columns:auto 1fr;gap:4px 16px;align-items:center;padding:20px 22px;border:1.5px solid var(--ink-line);border-radius:var(--r);background:var(--paper);color:var(--ink);text-align:left;transition:background .15s,border-color .15s}
.wh-chooser button:hover{background:var(--band)}
.wh-chooser button svg{grid-row:span 2}
.wh-chooser b{font:800 30px/1 var(--f-cond);text-transform:uppercase}
.wh-chooser span{font-size:16px;line-height:1.4;color:var(--ink-soft)}
.wh-chooser button[aria-pressed=true]{background:var(--solid);border-color:var(--solid);color:var(--on-solid)}
.wh-chooser button[aria-pressed=true] span{color:var(--on-solid);opacity:.82}

.wh-zones{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.wh-zone{padding:20px 22px 22px;border-radius:var(--r);border:1px solid var(--rule);background:var(--paper)}
.wh-zone p{margin-top:10px;font-size:16px;line-height:1.5;color:var(--ink-soft)}

.wh-pen{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border:1px solid var(--ink-line);border-radius:var(--r);background:var(--paper);overflow:hidden}
.wh-pen>div{padding:22px 22px 24px}
.wh-pen>div+div{border-left:1px solid var(--rule)}
.wh-pen b{display:block;font:800 52px/.9 var(--f-cond);font-variant-numeric:tabular-nums}
.wh-pen p{margin-top:10px;font-size:16px;line-height:1.45;color:var(--ink-soft)}
.wh-pen--nogo b{color:var(--no-go-ink)}

/* 400 ft drawing */
.wh-ceiling{padding:20px}
.wh-ceiling svg{display:block;width:100%;height:auto}

/* ---------- Narrower screens ---------- */
@media (max-width:1199.98px){
	.wh-split,.wh-split--rev{grid-template-columns:1fr;gap:40px}
	.wh-aside{position:static;grid-template-columns:repeat(2,minmax(0,1fr))}
	.wh-pcards{--cols:2}
	.wh-pcard--wide{grid-column:1/-1}
	.wh-feature{grid-template-columns:1fr}
	.wh-feature__demo{border-left:0;border-top:1px solid var(--rule)}
	.wh-zones{grid-template-columns:repeat(2,minmax(0,1fr))}
	.wh-pen{grid-template-columns:repeat(2,minmax(0,1fr))}
	.wh-pen>div:nth-child(3){border-left:0}
	.wh-pen>div:nth-child(n+3){border-top:1px solid var(--rule)}
	.wh-srclist{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:967.98px){
	.wh-mast__in{min-height:0;padding-bottom:92px}
	.wh-mast__photo{position:relative;width:auto;height:min(64vw,420px);margin:0}
	.wh-mast__photo img{-webkit-mask-image:linear-gradient(180deg,#000 70%,transparent);mask-image:linear-gradient(180deg,#000 70%,transparent)}
	.wh-mast__photo .wh-credit{bottom:12px}
	.wh-mast__text{margin:0}
	.wh-facts dl{grid-template-columns:repeat(3,minmax(0,1fr))}
	.wh-fact:nth-child(4){border-left:0}
	.wh-fact:nth-child(n+4){border-top:1px solid var(--rule)}
	.wh-when{grid-template-columns:1fr}
	.wh-specgrid{grid-template-columns:1fr}
}
@media (max-width:759.98px){
	:root{--read:17px}
	.wh-mast__photo{height:62vw}
	.wh-mast__in{padding:4px var(--gut) 84px}
	.wh-mast .wh-crumbs ol{margin-bottom:10px}
	.wh-mast__h1{font-size:clamp(44px,13vw,60px)}
	.wh-mast__say{margin-top:12px;font-size:18px}
	.wh-mast__acts{margin-top:20px}
	.wh-mast__acts .wh-btn{flex:1 1 auto}
	.wh-mast__meta{font-size:14px}
	.wh-facts{margin-top:-60px}
	.wh-facts dl{grid-template-columns:repeat(2,minmax(0,1fr))}
	.wh-fact{padding:14px 16px 16px}
	.wh-fact+.wh-fact{border-left:0}
	.wh-fact:nth-child(even){border-left:1px solid var(--rule)}
	.wh-fact:nth-child(n+3){border-top:1px solid var(--rule)}
	.wh-fact:last-child:nth-child(odd){grid-column:1/-1}
	.wh-fact dd{font-size:36px}
	.wh-fact dd small{font-size:18px}
	.wh-index{margin-top:20px}
	.wh-index a{height:48px;font-size:16px;padding:0 10px}
	.wh-part{padding:48px var(--gut)}
	.wh-part__say{font-size:18px}
	.wh-split{margin-top:28px}
	.wh-aside{grid-template-columns:minmax(0,1fr)}
	.wh-callout .wh-btn{max-width:100%;padding-block:12px;white-space:normal;text-align:center}
	.wh-reply>li{grid-template-columns:minmax(0,1fr) auto;gap:6px 12px;padding:18px 0}
	.wh-reply__v{grid-column:1/-1;grid-row:2}
	.wh-reply .wh-fold{grid-column:1/-1}
	.wh-pair2{grid-template-columns:1fr}
	.wh-pcards{--cols:1}
	.wh-pcard--wide{flex-direction:column}
	.wh-pcard--wide .wh-pcard__img{flex:none;min-height:0;aspect-ratio:4/3}
	.wh-pcard--wide .wh-pcard__body{padding:18px 20px 20px}
	.wh-pcard--wide h3{font-size:30px}
	.wh-feature__text{padding:24px 20px}
	.wh-feature__text h2{font-size:42px}
	.wh-chooser{grid-template-columns:1fr}
	.wh-zones{grid-template-columns:1fr}
	.wh-pen b{font-size:40px}
	.wh-pen>div{padding:16px}
	.wh-srclist{grid-template-columns:1fr}
	.wh-qa summary{font-size:21px}
	.wh-wscale{padding:20px 14px 14px}
	.wh-wscale__dot span{font-size:14px}
				}

/* ---------- Hub additions: shorter masthead, the lifted featured tool, paired photos ---------- */
.wh-mast--hub .wh-mast__in{min-height:480px;padding-bottom:136px}
.wh-lift{position:relative;z-index:2;max-width:1312px;margin:-96px auto 0;padding:0 var(--gut)}
.wh-feature__text .wh-feature__note{font-size:16px;color:var(--ink-soft)}
.wh-feature__eg{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;font:500 15px/1.3 var(--f-body);color:var(--ink-soft)}
.wh-pcard__img--pair{display:grid;grid-template-columns:1fr 1fr;gap:2px;background:var(--paper)}
.wh-pcard__img--pair img{position:static;min-width:0}

/* Picks table note, the one big link, the planned list */
.wh-tblnote{margin-top:10px;max-width:90ch;font-size:15px;line-height:1.5;color:var(--ink-soft)}
.wh-bigline{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:22px 24px;border:1.5px solid var(--ink);border-radius:var(--r);background:var(--paper);color:var(--ink);font:700 28px/1.1 var(--f-cond);text-decoration:none;text-wrap:balance}
.wh-bigline:hover{background:var(--band);color:var(--ink)}
.wh-bigline svg{flex:none;transition:transform .2s}
.wh-bigline:hover svg{transform:translateX(3px)}
.wh-planned{list-style:none;columns:2;column-gap:40px}
.wh-planned li{break-inside:avoid;display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:12px 0;border-top:1px solid var(--rule);font-weight:600}
.wh-planned span{font:600 14px/1.4 var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft)}
.wh-when--4{grid-template-columns:repeat(4,minmax(0,1fr))}
.wh-qa--2{max-width:880px}

/* The 400 ft drawing */
.wh-ceiling svg{color:var(--cobalt)}
.wh-ceiling text{font:600 15px var(--f-semi);letter-spacing:.03em;fill:var(--ink)}
.wh-ceiling .wh-ceil-small{font-weight:500;fill:var(--ink-soft)}
.wh-ceil-ground path{stroke:var(--ink);stroke-width:2}
.wh-ceil-limit path{stroke:var(--caution-ink);stroke-width:2;stroke-dasharray:8 6}
.wh-ceiling text.wh-ceil-top{fill:var(--caution-ink)}
.wh-ceil-zoneline{fill:none;stroke:var(--cobalt);stroke-width:1.5;stroke-dasharray:4 4}
.wh-ceiling .wh-only-107 text{fill:var(--cobalt)}
.wh-ceil-thing path{fill:none;stroke:var(--ink);stroke-width:2;stroke-linejoin:round}
.wh-ceil-drone path,.wh-ceil-drone rect{fill:var(--paper);stroke:var(--ink);stroke-width:2.5;stroke-linecap:round}
.wh-ceil-pilot *{fill:none;stroke:var(--ink);stroke-width:2.5;stroke-linecap:round}

/* State laws: one bar of 51 */
.wh-stack{padding:24px}
.wh-stack__cap{font:600 14px/1.3 var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft)}
.wh-stack__bar{display:flex;gap:2px;height:44px;margin-top:14px;border-radius:8px;overflow:hidden}
.wh-stack__bar span{flex:var(--w) 1 0;background:var(--c)}
.wh-stack__key{margin-top:16px}
.wh-stack__key>div{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:46px;border-top:1px solid var(--rule)}
.wh-stack__key dt{display:flex;align-items:center;gap:10px;font-size:17px}
.wh-stack__key i{flex:none;width:14px;height:14px;border-radius:3px;background:var(--c)}
.wh-stack__key dd{font:800 30px/1 var(--f-cond);font-variant-numeric:tabular-nums}
.wh-stack__note{margin-top:14px;font-size:16px;color:var(--ink-soft)}

@media (max-width:1199.98px){
	.wh-when--4{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:967.98px){
	.wh-mast--hub .wh-mast__in{padding-bottom:120px}
	.wh-lift{margin-top:-88px}
}
@media (max-width:759.98px){
	.wh-when--4{grid-template-columns:1fr}
	.wh-planned{columns:1}
	.wh-bigline{font-size:22px;padding:18px 18px}
	.wh-lift{margin-top:-72px}
	.wh-mast--hub .wh-mast__in{padding-bottom:96px}
	/* Picks table: each row becomes a small card on phones */
	.wh-tbl--picks thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
	.wh-tbl--picks,.wh-tbl--picks tbody{display:block}
	.wh-tbl--picks tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 16px;padding:14px 16px 10px;border-top:1px solid var(--rule)}
	.wh-tbl--picks tbody tr:first-child{border-top:0}
	.wh-tbl--picks tbody th{grid-column:1/-1;width:auto;padding:0 0 6px;border:0}
	.wh-tbl--picks td{padding:6px 0;border:0}
	.wh-tbl--picks td.wh-n{text-align:left;white-space:normal}
	.wh-tbl--picks td::before{content:attr(data-label);display:block;font:600 14px/1.3 var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft)}
	.wh-stack{padding:18px 16px}
}

/* ---------- Review fixes ---------- */
/* Drawings sit on a plain panel: no graph paper (owner: "the 18th century"). */
.wh-sheet{border-radius:var(--r)}
/* Rulebook chooser: the name over its one-line explanation. */
.wh-chooser button{display:flex;flex-direction:column;align-items:flex-start;gap:8px}
/* Wide photo card: the text block stays together instead of spreading to the card's height. */
.wh-pcard--wide .wh-pcard__nums{margin-top:8px}
.wh-pcard--wide .wh-pcard__go{margin-top:14px}
@media (max-width:759px){
	/* Answer rows: label over the value, so the value is not squeezed into a right-aligned sliver. */
	.wh-minrows .wh-row{flex-direction:column;align-items:flex-start;gap:2px;min-height:0;padding:9px 0 10px}
	.wh-minrows .wh-row dt{flex:none}
	.wh-minrows .wh-row dd{text-align:left}
}
.wh-ceiling .wh-ceil-n{display:none}
@media (max-width:759px){
	.wh-ceiling{padding:14px}
	.wh-ceil-w{display:none!important}
	.wh-ceil-n{display:block!important}
	.wh-ceil-n text{font-size:17px}
}
/* Photo credits: one quiet line at the end of the page instead of labels on the photos (owner, 2026-11-14). */
.wh-photocredits{max-width:1312px;margin:0 auto;padding:24px var(--gut) 32px;font-size:14px;line-height:1.5;color:var(--ink-soft)}
/* FPV picks: one card per kind. The panel shows the kind and the frame type; the bar shows the weight against 250 g. */
.wh-fpcards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;margin-top:36px}
.wh-fpcard{position:relative;display:flex;flex-direction:column;border:1px solid var(--rule);border-radius:var(--r);background:var(--paper);overflow:hidden;transition:box-shadow .2s,border-color .2s,transform .2s cubic-bezier(.2,.8,.2,1)}
.wh-fpcard:hover{border-color:var(--ink-line);box-shadow:var(--shadow);transform:translateY(-2px)}
.wh-fpcard:has(h3 a:focus-visible){outline:3px solid var(--cobalt);outline-offset:2px}
.wh-fpcard--wide{grid-column:span 2}
.wh-fpcard__fig{position:relative;display:grid;place-items:center;height:200px;border-bottom:1px solid var(--rule);color:var(--ink)}
.wh-fpcard__fig,.wh-pcard__img--cut{background-color:var(--sheet);background-image:linear-gradient(var(--grid-major) 1px,#0000 1px),linear-gradient(90deg,var(--grid-major) 1px,#0000 1px),linear-gradient(var(--grid-minor) 1px,#0000 1px),linear-gradient(90deg,var(--grid-minor) 1px,#0000 1px);background-size:80px 80px,80px 80px,16px 16px,16px 16px;background-position:center}
.wh-fpcard__fig--cut,.wh-pcard__img--cut{--sheet:#F6F8F4;--grid-minor:#E8ECE6;--grid-major:#D6DCD5}
.wh-fpcard__fig--cut{height:220px}
.wh-pcard__img--cut img{inset:12% 8% 14%;width:84%;height:74%;object-fit:contain;filter:drop-shadow(0 8px 8px rgb(24 30 24 / .18))}
.wh-fpcard__fig--cut img{position:absolute;inset:36px 12px 22px;width:calc(100% - 24px);height:calc(100% - 58px);object-fit:contain;filter:drop-shadow(0 8px 8px rgb(24 30 24 / .18))}
.wh-fpcard__fig--cut .wh-fpcard__guard{color:#596057}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]) :is(.wh-fpcard__fig--cut,.wh-pcard__img--cut){--sheet:#E4E8E2;--grid-minor:#D8DDD6;--grid-major:#C8CEC6}}
:root[data-theme=dark] :is(.wh-fpcard__fig--cut,.wh-pcard__img--cut){--sheet:#E4E8E2;--grid-minor:#D8DDD6;--grid-major:#C8CEC6}
.wh-fpcard--wide .wh-fpcard__fig{flex:1 0 200px;height:auto}
.wh-fpcard__kind{position:absolute;z-index:1;top:12px;left:12px;display:inline-flex;align-items:center;height:28px;padding:0 10px;border-radius:6px;background:var(--solid);color:var(--on-solid);font:600 14px/1 var(--f-semi);letter-spacing:.04em;text-transform:uppercase}
.wh-fpcard__guard{position:absolute;right:12px;bottom:10px;font:600 14px/1 var(--f-semi);letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft)}
.wh-fpcard__body{display:flex;flex-direction:column;gap:10px;flex:1;padding:18px 20px 20px}
.wh-fpcard h3{font:700 25px/1.05 var(--f-cond);text-transform:uppercase;text-wrap:balance}
.wh-fpcard h3 a{color:var(--ink);text-decoration:none}
.wh-fpcard h3 a::after{content:"";position:absolute;inset:0;border-radius:var(--r)}
.wh-fpcard h3 a:focus-visible{outline:0}
.wh-fpcard__body>p{font-size:16px;line-height:1.45;color:var(--ink-soft)}
.wh-wt{margin-top:auto;padding-top:6px}
.wh-wt p{font-size:15px;line-height:1.3;color:var(--ink-soft)}
.wh-wt b{font:700 22px/1 var(--f-cond);color:var(--ink);font-variant-numeric:tabular-nums}
.wh-wt__bar{position:relative;isolation:isolate;height:10px;margin:8px 0 2px;border-radius:5px;background:var(--band)}
.wh-wt__bar i{position:absolute;left:0;top:0;bottom:0;width:min(100%,calc(var(--g) / 750 * 100%));border-radius:5px;background:var(--go)}
.wh-wt__bar i+i{z-index:-1;width:calc(var(--g2) / 750 * 100%);background:var(--caution)}
.wh-wt--over .wh-wt__bar i{background:var(--caution)}
.wh-wt__bar::after{content:"";position:absolute;z-index:1;left:33.333%;top:-4px;bottom:-4px;width:2px;margin-left:-1px;border-radius:1px;background:var(--ink)}
.wh-fpcard__specs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 16px;padding-top:12px;border-top:1px solid var(--rule)}
.wh-fpcard--wide .wh-fpcard__specs{grid-template-columns:repeat(4,minmax(0,1fr))}
.wh-fpcard__specs dt{font:600 14px/1.3 var(--f-semi);letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft)}
.wh-fpcard__specs dd{font-size:15px;line-height:1.35;color:var(--ink);font-variant-numeric:tabular-nums}
.wh-wt-key i{display:inline-block;width:2px;height:16px;margin-right:8px;vertical-align:-3px;border-radius:1px;background:var(--ink)}
@media (max-width:1179px){.wh-fpcards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:639px){.wh-fpcards{grid-template-columns:minmax(0,1fr)}.wh-fpcard--wide{grid-column:auto}.wh-fpcard--wide .wh-fpcard__specs{grid-template-columns:repeat(2,minmax(0,1fr))}.wh-fpcard__fig{height:168px}.wh-fpcard__fig--cut{height:220px}}
@media (prefers-reduced-motion:reduce){.wh-fpcard{transition:none}.wh-fpcard:hover{transform:none}}
/* Notebook grid: the signature sheet, used as a section ground. */
.wh-part--grid{background-color:var(--sheet);background-image:linear-gradient(var(--grid-major) 1px,#0000 1px),linear-gradient(90deg,var(--grid-major) 1px,#0000 1px),linear-gradient(var(--grid-minor) 1px,#0000 1px),linear-gradient(90deg,var(--grid-minor) 1px,#0000 1px);background-size:80px 80px,80px 80px,16px 16px,16px 16px;background-position:center top;border-block:1px solid var(--rule)}
/* Two equal cards under the rulebook chooser. */
.wh-cardpair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:16px}
.wh-cardpair .wh-callout{display:flex;flex-direction:column;align-items:flex-start}
.wh-cardpair .wh-callout .wh-btn{margin-top:auto}
.wh-cardpair .wh-callout p+.wh-btn{margin-top:16px}
.wh-cardpair .wh-fold{margin-top:10px;align-self:stretch}
/* Before your first flight: a rail of steps, each with its picture, its key fact and its action. */
.wh-steps{list-style:none;counter-reset:st;display:grid;gap:18px;margin-top:36px}
.wh-steps>li{counter-increment:st;position:relative;display:grid;grid-template-columns:120px minmax(0,1fr) auto;align-items:center;border:1px solid var(--rule);border-radius:var(--r);background:var(--paper);box-shadow:var(--shadow)}
.wh-steps>li:not(:last-child)::after{content:"";position:absolute;left:59px;top:100%;width:3px;height:19px;background:var(--go)}
.wh-step__mark{align-self:stretch;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:16px 0;border-radius:calc(var(--r) - 1px) 0 0 calc(var(--r) - 1px);background:var(--go-pale);color:var(--go-ink)}
.wh-step__mark::before{content:counter(st,decimal-leading-zero);font:800 34px/1 var(--f-cond);letter-spacing:.02em}
.wh-step__body{padding:22px 26px}
.wh-step__head{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px}
.wh-steps h3{font:700 28px/1.05 var(--f-cond);text-transform:uppercase}
.wh-chip{display:inline-flex;align-items:center;height:28px;padding:0 12px;border-radius:14px;background:var(--band);font:600 15px/1 var(--f-semi);letter-spacing:.03em;color:var(--ink);font-variant-numeric:tabular-nums}
.wh-steps p{margin-top:8px;max-width:64ch;font-size:var(--read);line-height:1.5;color:var(--ink-soft)}
.wh-steps .wh-fold{margin-top:8px}
.wh-steps .wh-btn{margin-right:26px;align-self:center}
/* Places that stop any flight: one tile each, its picture, its verdict; the last tile sends you to the check. */
.wh-zone{display:flex;flex-direction:column;align-items:flex-start}
.wh-zone__top{display:flex;align-self:stretch;align-items:center;justify-content:space-between;gap:10px}
.wh-zone__ic{display:grid;place-items:center;width:56px;height:56px;border-radius:10px;background:var(--no-go-pale);color:var(--no-go-ink)}
.wh-zone--ask .wh-zone__ic{background:var(--caution-pale);color:var(--caution-ink)}
.wh-zone h3{margin-top:16px;font:700 26px/1.05 var(--f-cond);text-transform:uppercase}
.wh-zone--cta{border-color:var(--mast);background:var(--mast);color:var(--on-mast)}
.wh-zone--cta h3{margin-top:0}
.wh-zone--cta p{color:var(--mast-soft)}
.wh-zone--cta .wh-btn{margin-top:auto}
.wh-zone--cta p+.wh-btn{margin-top:18px}
@media (max-width:759px){
	.wh-cardpair{grid-template-columns:minmax(0,1fr)}
	.wh-steps>li{grid-template-columns:72px minmax(0,1fr);align-items:start}
	.wh-steps>li:not(:last-child)::after{left:35px}
	.wh-step__mark{grid-row:1/span 2;justify-content:flex-start;padding-top:18px}
	.wh-step__mark::before{font-size:26px}
	.wh-step__mark svg{width:28px;height:28px}
	.wh-step__body{padding:16px 16px 8px}
	.wh-steps h3{font-size:24px}
	.wh-steps .wh-btn{grid-column:2;justify-self:start;margin:4px 16px 18px}
}
/* Header: the section tabs sit on the same centre line as the logo and the tools, as pills (owner, 2026-11-14). */
.wh-tabs{align-self:center;gap:4px}
.wh-tabs a{height:40px;border-radius:8px}
@media (max-width:1199.98px){.wh-tabs{margin-top:6px;padding-bottom:10px}}
/* A long, query-bearing H1 keeps a short display line; the rest of the H1 runs as a quieter second line. */
.wh-mast__sub{display:block;margin-top:14px;max-width:12.2em;font:600 clamp(22px,2.1vw,30px)/1.15 var(--f-semi);letter-spacing:0;text-transform:none;opacity:.86}

/* Home: the masthead above the tool, the lifted tool card, the location message, the map restyle. */
.wh-mast--home .wh-mast__in{min-height:380px;padding-bottom:128px}
.wh-mast--home .wh-mast__h1{font-size:clamp(52px,5.6vw,84px)}
.wh-hero--lift{position:relative;z-index:2;margin-top:-104px;padding-top:0}
.wh-hero--lift .wh-hero__card{box-shadow:var(--shadow)}

/* "Use my location": say what to do, not just that it failed */
.wh-geo-msg{flex:1 0 100%;order:9;margin:0;padding:10px 14px;border-radius:8px;background:var(--sheet);border:1px solid var(--rule);font-size:16px;line-height:1.45;color:var(--ink)}
.wh-geo-msg--bad{border-color:var(--caution);background:color-mix(in srgb,var(--caution) 12%,var(--paper))}
/* Phones: the card stacks by order; keep the message right under the open form, not after the rows */
@media (max-width:759.98px){.wh-ask__msg.wh-geo-msg{order:7;margin:0;padding:12px 16px;border-width:0 0 1px;border-radius:0}}

/* "How the answer is decided", folded at the foot of the page */
.wh-howfold>summary{font-size:28px}
.wh-howfold__body{margin-top:12px}

@media (max-width:967.98px){
	.wh-mast--home .wh-mast__in{min-height:0;padding-bottom:112px}
	.wh-hero--lift{margin-top:-88px}
}
@media (max-width:759.98px){
	.wh-mast--home .wh-mast__in{padding-bottom:96px}
	.wh-hero--lift{margin-top:-72px}
}

/* ---------- Map: a modern basemap instead of ink on graph paper ----------
   Same SVG and data; only the paint changes. Land tint, blue water, white streets with a casing,
   amber highways, airspace and airports in chart blue, towns as soft built-up blocks. */
:root{--map-land:#F1F2EC;--map-water:#BBD8EE;--map-water-edge:#8DBBE0;--map-street:#FFFFFF;--map-street-edge:#B9C0B8;
	--map-hwy:#F3C25A;--map-hwy-edge:#C3922C;--map-air:#2F5FD8;--map-air-fill:rgb(47 95 216 / .07);--map-town:#D9DCD3;--map-label:#3A423D}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--map-land:#202326;--map-water:#1E3A52;--map-water-edge:#2C5577;--map-street:#3A3E42;--map-street-edge:#17191B;
	--map-hwy:#8A6A28;--map-hwy-edge:#5E4716;--map-air:#7F9CF5;--map-air-fill:rgb(127 156 245 / .08);--map-town:#34383C;--map-label:#D6DAD7}}
:root[data-theme=dark]{--map-land:#202326;--map-water:#1E3A52;--map-water-edge:#2C5577;--map-street:#3A3E42;--map-street-edge:#17191B;
	--map-hwy:#8A6A28;--map-hwy-edge:#5E4716;--map-air:#7F9CF5;--map-air-fill:rgb(127 156 245 / .08);--map-town:#34383C;--map-label:#D6DAD7}

.wh-map{background-color:var(--map-land);background-image:linear-gradient(var(--grid-major) 1px,#0000 1px),linear-gradient(90deg,var(--grid-major) 1px,#0000 1px),linear-gradient(var(--grid-minor) 1px,#0000 1px),linear-gradient(90deg,var(--grid-minor) 1px,#0000 1px);background-size:80px 80px,80px 80px,16px 16px,16px 16px;border-color:var(--rule);border-radius:var(--r)}
.wh-map .wh-halo{stroke:var(--map-land)}
.wh-map [fill="#F6F8F4"]{fill:var(--map-land)}
.wh-map .wh-svgt{font-weight:600;letter-spacing:.02em;fill:var(--map-label)}
/* water */
.wh-map path[fill="#E3EAEE"]{fill:var(--map-water);stroke:var(--map-water-edge);stroke-width:.8}
/* streets and highways, with a thin casing */
.wh-map path[stroke="#8D978F"][stroke-width="1.5"]{stroke:var(--map-street);stroke-width:2.6;filter:drop-shadow(0 0 .7px var(--map-street-edge))}
.wh-map path[stroke="#8D978F"][stroke-width="2.5"]{stroke:var(--map-hwy);stroke-width:3.6;filter:drop-shadow(0 0 .8px var(--map-hwy-edge))}
/* controlled airspace from the surface */
.wh-map path[stroke="#101412"][stroke-width="1.5"]:not([fill]){stroke:var(--map-air);stroke-width:2;fill:var(--map-air-fill)}
.wh-map path[stroke="#101412"][stroke-width="1"]:not([fill]){stroke:var(--map-air);stroke-width:1.2;stroke-dasharray:5 4;opacity:.8}
/* airports */
.wh-map circle[r="7"]{fill:var(--paper);stroke:var(--map-air);stroke-width:2}
.wh-map path[stroke-width="2.5"][stroke="#101412"]{stroke:var(--map-air)}
/* towns: soft blocks, no hatching */
.wh-map path[fill="#fff"][stroke-width="1"]{fill:var(--map-town);stroke:none}
.wh-map path[stroke-width="0.8"]{display:none}
.wh-map circle[r="4"]{fill:var(--paper);stroke:var(--map-label);stroke-width:1.2}
/* the 10 NM ring around the spot */
.wh-map circle[r="80"]{fill:var(--go-pale);fill-opacity:.45;stroke-width:2.5}

/* ---------- The answer: the reasons on the left, the map on the right at the same height (owner, 2026-11-15) ------
   He asked for exactly this on 14.11; that pass read it as "the map across the card" and put a half-page map under
   the reasons. The tall sheet (t, 400x448) sits beside the reasons at about their height and stays in view (sticky)
   while a long list of reasons scrolls past. Two group headings in one style: rules, then flying conditions. */
.wh-dwg.wh-t{display:none}
.wh-why__group{font:700 20px/1.2 var(--f-semi);letter-spacing:0;text-transform:none;color:var(--ink);padding-bottom:8px;border-bottom:2px solid var(--ink)}
.wh-why__group+.wh-rows .wh-row:first-child{border-top:0}
@media (min-width:968px){
	.wh-why{grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:0 40px;padding:24px 28px 28px;align-items:start}
	.wh-why__rows>.wh-why__group:first-child{margin-top:0}
	.wh-why__group{margin-top:28px}
	/* When the reasons run taller than the sheet, the map stays in view beside them as they scroll. */
	.wh-why__map{position:sticky;top:16px}
	/* The waiting box at the tall sheet's size, so the map arrives without a jump. */
	.wh-why .wh-mapbox>div{max-width:none;aspect-ratio:400/448}
	.wh-why .wh-map>.wh-dwg.wh-t{display:block!important;max-width:none!important;--dw:100cqw!important}
	.wh-why .wh-map>.wh-dwg.wh-d,.wh-why .wh-map>.wh-dwg.wh-m,.wh-why .wh-map>.wh-dwgcap.wh-m{display:none!important}
}
/* Wide: one line per reason (label, answer, tag), as a spec sheet reads; a step goes under the answer. */
@media (min-width:1200px){
	.wh-why{grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:0 48px}
	.wh-why .wh-rows--say .wh-row{display:grid;grid-template-columns:minmax(150px,12em) minmax(0,1fr) auto;column-gap:16px;align-items:baseline;padding:10px 0 11px}
	.wh-why .wh-rows--say .wh-row>dt{grid-column:1;grid-row:1}
	.wh-why .wh-rows--say .wh-row__val{grid-column:2;grid-row:1;margin:0}
	.wh-why .wh-rows--say .wh-row__tag{grid-column:3;grid-row:1;align-self:center}
	.wh-why .wh-rows--say .wh-row__more{grid-column:2/4;margin-top:4px}
	.wh-why .wh-rows--say .wh-leader{display:none}
}

/* The Windhorse mascot (owner, 2026-11-14): the W stays the logo and the favicon; the horse appears in the footer,
   on About and on the 404 page. */
.wh-foot__mascot{display:block;width:120px;height:auto;margin-top:22px}
.wh-404__mascot{display:block;width:120px;height:120px;margin-bottom:20px}
.wh-mascot{display:block;width:clamp(120px,14vw,180px);height:auto}
@media (max-width:759.98px){.wh-foot__mascot{display:none}}

/* ---------- Tool pages on the sheet (owner, 2026-11-14): the live tool fills the lifted card under the masthead,
   the guide follows in parts. The tool keeps its own markup; only its outer panel gives way to the card. ---------- */
.wh-feature--tool{display:block;padding:36px 40px 40px}
.wh-feature--tool>h2{max-width:26ch;font:800 clamp(34px,3.4vw,48px)/.95 var(--f-cond);text-transform:uppercase;text-wrap:balance;scroll-margin-top:24px}
.wh-feature--tool>*+*{margin-top:24px}
.wh-feature--tool>:is(.wh-fc,.wh-pk){padding:0;border:0;border-radius:0;background:none}
.wh-split>.wh-sheetdoc{max-width:none}
.wh-srcfold__lede{margin-top:4px;max-width:90ch;font-size:15px;line-height:1.5;color:var(--ink-soft)}
/* The open question's plus turns 45 degrees and its box grows by 4.6 px a side: keep that inside the column. */
.wh-qa summary svg{margin-right:5px}
@media (max-width:759.98px){
	.wh-feature--tool{padding:24px 16px 28px}
	.wh-feature--tool>h2{font-size:30px}
	.wh-feature--tool>*+*{margin-top:18px}
}

/* History and its archive pages: our drawing of the Pouncer on the grid stands where a photo would (owner decision 5a:
   no images from the old site, and no maker's photo of an aircraft it does not show). */
.wh-mast__photo--sheet{display:grid;place-items:center;width:min(42%,600px);padding:48px 48px 120px;border-left:1.5px solid var(--mast-line)}
.wh-mast__photo--sheet svg{width:100%;max-width:520px;height:auto}
@media (max-width:967.98px){
	.wh-mast__photo--sheet{width:auto;padding:24px var(--gut);border-left:0;border-bottom:1.5px solid var(--mast-line)}
	.wh-mast__photo--sheet svg{max-width:360px}
}
/* Model pages on the field sheet (drones-dji-air-3s and the model pages built on it): the Sources heading sits in
   its fold's summary, a fold's body holds more than one paragraph, a text block may open with its heading. */
.wh-srcfold>summary h2{font:inherit}
.wh-srcfold>summary+.wh-tblnote{margin-top:4px}
.wh-fold__body>p+p,.wh-fold__body>q+cite+p,.wh-fold__body>p+cite{margin-top:8px}
.wh-text>h3:first-child{margin-top:0}
/* A picks table turned into cards keeps its title at full width (a table caption inside a block table shrinks). */
@media (max-width:759.98px){.wh-tbl--picks caption{display:block}}
/* Model pages: three lens cards side by side (three-camera drones), and a pair of picture cards. */
.wh-pair2--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.wh-pcards--2{--cols:2}
@media (max-width:759.98px){.wh-pair2--3,.wh-pcards--2{grid-template-columns:1fr;--cols:1}}
/* Weight scale: the registration label set to the left of its line, for a line in the right half of the scale. */
.wh-wscale__line--l b{left:auto;right:8px;text-align:right}
/* A long H1 keeps the query's lowercase words after the colon (the H1 must read as the title, wp/setup/pages.php);
   on screen the second line starts with a capital, as the approved prototypes show it. */
.wh-mast__sub::first-letter{text-transform:uppercase}
/* Rules hub and guides (rollout D1). The note under a folded sources summary, before the source list. */
.wh-srcfold>p{margin-top:12px;max-width:72ch;font-size:15px;line-height:1.5;color:var(--ink-soft)}
/* The H1 sub keeps its query words in lower case (the page contract); the reader sees a capital. */
.wh-mast__sub::first-letter{text-transform:uppercase}
/* A place tile whose answer is yes. */
.wh-zone--go .wh-zone__ic{background:var(--go-pale);color:var(--go-ink)}
/* Folds that carry more than one paragraph or a list; table notes on a sheet. */
.wh-fold__body>p+p,.wh-fold__body>p+q,.wh-fold__body>ul,.wh-fold__body>table{margin-top:8px}
.wh-fold__body>ul{padding-left:1.2em}
.wh-part .wh-notes{display:grid;gap:8px;margin-top:20px;list-style:none}
/* Private property guide: state heights on the ceiling drawing, and the state counts as cards. */
.wh-ceil-state path{stroke:var(--cobalt);stroke-width:2}
.wh-ceil-case path{stroke:var(--ink-soft);stroke-width:2;stroke-dasharray:2 6;stroke-linecap:round}
.wh-ceiling text.wh-ceil-st{fill:var(--cobalt)}
.wh-counts>ul{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-block:24px 16px;list-style:none}
.wh-counts li{padding:16px 18px 18px;border:1px solid var(--rule);border-radius:var(--r);background:var(--ground);font-size:15px;line-height:1.5;color:var(--ink-soft)}
.wh-counts strong{display:block;margin-bottom:6px;font:700 20px/1.15 var(--f-cond);text-transform:uppercase;color:var(--ink)}
.wh-zone .wh-small{margin-top:auto;padding-top:10px;font-size:14px}
@media (max-width:967.98px){.wh-counts>ul{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:759.98px){.wh-counts>ul{grid-template-columns:minmax(0,1fr)}}
/* Drone license guide: a step that applies only if the one before fails, each step's facts folded, currency tiles. */
.wh-steps>li.wh-step--if{counter-increment:none}
.wh-step--if .wh-step__mark{background:var(--caution-pale);color:var(--caution-ink)}
.wh-step--if .wh-step__mark::before{content:"If"}
.wh-stepfacts{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:6px 16px}
.wh-stepfacts dt{font:600 14px/1.6 var(--f-semi);letter-spacing:.04em;text-transform:uppercase;color:var(--ink)}
.wh-stepfacts dd{margin:0}
.wh-zone>.wh-fold{align-self:stretch;margin-top:auto;padding-top:10px}
@media (max-width:759.98px){.wh-stepfacts{grid-template-columns:minmax(0,1fr);gap:2px}.wh-stepfacts dd+dt{margin-top:8px}}
/* A penalty strip of three figures. */
.wh-pen--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.wh-pen--3>div:nth-child(3){border-top:0;border-left:1px solid var(--rule)}
@media (max-width:759.98px){.wh-pen--3{grid-template-columns:minmax(0,1fr)}.wh-pen--3>div+div{border-left:0;border-top:1px solid var(--rule)}}
.wh-small+.wh-zones{margin-top:12px}
/* TRUST guide: the approved test administrators as name tiles. */
.wh-admins ul{list-style:none;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:24px 0 0;padding:0}
.wh-admins li{display:flex;align-items:center;min-height:64px;padding:12px 16px;border:1px solid var(--rule);border-radius:var(--r);background:var(--ground);font:600 17px/1.3 var(--f-semi);color:var(--ink)}
@media (max-width:959.98px){.wh-admins ul{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:479.98px){.wh-admins ul{gap:8px}.wh-admins li{min-height:0;padding:10px 12px;font-size:15px}}
/* Altitude guide: dimension lines on the structure drawing. */
.wh-ceil-dim path{fill:none;stroke:var(--ink-soft);stroke-width:1.5}
/* ---------- Model pages on the field sheet (AGENTS.md 9): parts the generators write ----------
   A spec column holding several tables, the "Can I fly it here?" heading inside the ink callout, the drawing and
   leader rows under the weight scale, and the set-up table under the rules. */
.wh-speccol{display:grid;gap:20px}
.wh-specs{margin-top:40px}
.wh-callout>h2{font:700 26px/1.1 var(--f-cond);text-transform:uppercase;text-wrap:balance}
.wh-wscale+.wh-limits{margin-top:24px}
.wh-limits__more{margin-top:24px}
.wh-setups{margin-top:48px}
.wh-setups+.wh-tblwrap{margin-top:20px}
/* The model's studio cutout as a photo: on the light grid of the cutout cards, light in both themes */
.wh-shot--cut{--sheet:#F6F8F4;--grid-minor:#E8ECE6;--grid-major:#D6DCD5}
.wh-shot--cut img{box-sizing:border-box;padding:4% 6%;background-color:var(--sheet);background-image:linear-gradient(var(--grid-major) 1px,#0000 1px),linear-gradient(90deg,var(--grid-major) 1px,#0000 1px),linear-gradient(var(--grid-minor) 1px,#0000 1px),linear-gradient(90deg,var(--grid-minor) 1px,#0000 1px);background-size:80px 80px,80px 80px,16px 16px,16px 16px;background-position:center}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .wh-shot--cut{--sheet:#E4E8E2;--grid-minor:#D8DDD6;--grid-major:#C8CEC6}}
:root[data-theme=dark] .wh-shot--cut{--sheet:#E4E8E2;--grid-minor:#D8DDD6;--grid-major:#C8CEC6}
/* The size drawing under a photo in the aside (folded or open): as wide as the aside, its caption wraps */
.wh-aside .wh-limits>.wh-limits__fig{flex:1 1 100%;min-width:0}
@media (max-width:759.98px){
	.wh-specs{margin-top:28px}
	.wh-setups{margin-top:36px}
	/* the rows turn into cards here; a table caption would shrink to its own anonymous table */
	.wh-tbl--picks caption{display:block}
	/* figure runs such as 24/25/30/48/50/60/120 fps wrap inside a phone-wide spec table instead of widening it */
	.wh-specgrid .wh-tbl td{overflow-wrap:anywhere}
	.wh-specgrid .wh-tbl th,.wh-specgrid .wh-tbl td{padding:10px 12px}
}
/* Rules II and Part 107 pages (Part 107 exam, study guide, practice test, airspace classes, Remote ID, national parks,
   night, renewal): a split column never grows past the screen for a wide table inside it (the 1fr track on tablets
   and phones would take the table's min-content width); a table whose column heads may wrap. */
.wh-split>*{min-width:0}
.wh-tbl--wrap thead th{white-space:normal}
/* Study guide tasks table: the documents to read as a short labelled list; each row becomes a card on phones. */
.wh-tbl .wh-docs{margin:0;padding:0;list-style:none}
.wh-tbl .wh-docs li+li{margin-top:8px}
.wh-tbl .wh-docs b{display:block;font:600 14px/1.3 var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft)}
.wh-tbl--cards tbody th{width:20%;color:var(--ink)}
.wh-callout ul{margin-top:10px;padding-left:1.1em;font-size:17px;line-height:1.5;color:var(--ink-soft)}
.wh-callout li+li{margin-top:6px}
.wh-callout--ink ul{color:var(--mast-soft)}
.wh-callout--ink a:not(.wh-btn){color:var(--on-mast)}
@media (max-width:759.98px){
	.wh-tbl--cards thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
	.wh-tbl--cards,.wh-tbl--cards caption,.wh-tbl--cards tbody,.wh-tbl--cards tr,.wh-tbl--cards tbody th,.wh-tbl--cards td{display:block;width:auto}
	.wh-tbl--cards .wh-docs{margin-top:4px}
	.wh-tbl--cards tr{padding:14px 16px 6px;border-top:1px solid var(--rule)}
	.wh-tbl--cards tbody th,.wh-tbl--cards td{padding:0 0 10px;border:0}
	.wh-tbl--cards td.wh-n{text-align:left;white-space:normal}
	.wh-tbl--cards td::before{content:attr(data-label);display:block;margin-bottom:2px;font:600 14px/1.3 var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft)}
}
/* Practice test: the live test in the lifted card. At rest the two tests stand as cards in the demo half; once a test
   runs or shows its result the card turns to one column, so the test has the full width. Only the review prints.
   A picks table's caption keeps the full width on phones, where the table turns to cards. */
.wh-feature--quiz .wh-qz{padding:0;border:0;background:none}
.wh-feature--quiz .wh-qz__modes{grid-template-columns:minmax(0,1fr);gap:16px}
.wh-feature--quiz .wh-qz__mode{padding:20px 24px 24px;border:1px solid var(--rule);border-radius:var(--r);background:var(--paper)}
.wh-feature--quiz:has(#wh-quiz[data-wh-state]){grid-template-columns:minmax(0,1fr)}
.wh-tbl thead th.wh-n{text-align:right}
.wh-feature--quiz:has(#wh-quiz[data-wh-state]) .wh-feature__demo{padding:32px 40px 40px;border-top:1px solid var(--rule);border-left:0}
@media (min-width:760px) and (max-width:1199.98px){
	.wh-feature--quiz .wh-qz__modes{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:759.98px){
	.wh-feature--quiz .wh-feature__demo,.wh-feature--quiz:has(#wh-quiz[data-wh-state]) .wh-feature__demo{padding:20px 16px 24px}
	.wh-feature--quiz .wh-qz__mode{padding:16px 16px 20px}
	.wh-tbl--picks caption{display:block}
}
@media print{
	html:has(#wh-qz-review) :is(.wh-lift,.wh-feature,.wh-feature__demo){display:block;margin:0;padding:0;border:0;box-shadow:none;background:#FFFFFF}
}
/* Rules guides: where a step happens and its documents, under the step's words; a numbered list in two columns. */
.wh-steps .wh-step__src{margin-top:6px;font-size:15px;line-height:1.45}
.wh-text .wh-cols{columns:2;column-gap:36px;padding-left:1.6em}
.wh-text .wh-cols li{break-inside:avoid}
.wh-text .wh-cols li::marker{font-weight:700}
@media (max-width:759.98px){
	.wh-text .wh-cols{columns:1}
}
/* A day and night bar (rules guides): outlined like the weather day bar, so the white day band shows on the sheet. */
.wh-stack--day .wh-stack__bar{gap:0;border:1px solid var(--ink-line)}
.wh-stack--day .wh-stack__key i{box-shadow:inset 0 0 0 1px var(--ink-line)}
/* A table under a split (rules guides) keeps clear of the photo caption above it. */
.wh-part__in>.wh-split+.wh-tblwrap{margin-top:40px}
/* Airspace classes guide: the classes in profile (a field sheet drawing; shaded = authorization needed, dashed = the
   chart's dashed boundaries), and a stack key that lists the class names under each label. */
.wh-air .wh-air-ask{fill:var(--caution-pale);stroke:var(--caution-ink);stroke-width:2;stroke-linejoin:round}
.wh-air .wh-air-dash{stroke-dasharray:7 5}
.wh-air .wh-air-line{fill:none;stroke:var(--leader);stroke-width:2;stroke-dasharray:3 5}
.wh-air text.wh-air-name{font:700 21px var(--f-cond);letter-spacing:.03em;text-transform:uppercase;fill:var(--ink)}
.wh-air .wh-ceil-n text.wh-air-name{font-size:26px}
.wh-stack--names .wh-stack__key>div{padding-block:10px}
.wh-stack--names .wh-stack__key dt{align-items:flex-start}
.wh-stack--names .wh-stack__key dt i{margin-top:4px}
.wh-stack--names .wh-stack__key small{display:block;margin-top:3px;font-size:15px;line-height:1.4;color:var(--ink-soft)}
@media (min-width:760px){#wh-classes tbody th,#wh-areas tbody th{width:13%}}
/* Remote ID guide: the broadcast table's "No" cells quiet and its element column wider on screens, and a table's
   notes list indented to its bullets (its green place tile uses .wh-zone--go above). */
.wh-tbl td.wh-dim{color:var(--ink-soft)}
.wh-notes.wh-tblnote{padding-left:1.1em}
@media (min-width:760px){#wh-elements tbody th{width:30%}}
/* National parks guide: the federal lands cards keep a readable line length inside their fold. */
#wh-lands td>span{max-width:76ch}
/* work-drone-mapping: numbered steps in running text (the GSD arithmetic), spaced paragraphs in one answer row (one
   per rulebook), and a picks table caption across the full width on phones (it shrank to one word a line). */
.wh-text ol{padding-left:1.4em}
.wh-reply__v>p+p{margin-top:12px}
@media (max-width:759.98px){.wh-tbl--picks caption{display:block}}

/* work-agriculture-drones: the figures table holds a short figure beside long text: a narrower first column with the
   figure in full ink on wide screens, and each cell across the whole card on phones. */
@media (min-width:760px){#wh-figures tbody th{width:22%}}
#wh-figures .wh-pickname{color:var(--ink)}
@media (max-width:759.98px){#wh-figures td{grid-column:1/-1}}

/* work-start-a-drone-business: a label over each steps rail and over the cutout cards, no doubled gap where a rail
   opens a fold, and the notes under the rails spaced as a short list. */
.wh-railh{margin-top:36px;color:var(--ink-soft)}
.wh-railh+.wh-steps,.wh-railh+.wh-pcards{margin-top:14px}
.wh-more2>div>.wh-steps:first-child{margin-top:0}
.wh-railnotes{display:grid;gap:6px;margin-top:28px;max-width:90ch}

/* work (hub): a link in a photo card's text sits above the card's own link (it was not clickable), and the FAA figures
   table keeps its figure column narrow on wide screens and its long "what it covers" cell across the card on phones. */
.wh-pcard__body p a{position:relative;z-index:1}
@media (min-width:760px){#wh-work-faa tbody th{width:24%}}
#wh-work-faa .wh-pickname{color:var(--ink)}
@media (max-width:759.98px){#wh-work-faa td:last-child{grid-column:1/-1}}

/* work-drone-inspections: the state laws table keeps the state column narrow and the read date short on wide screens,
   and on phones gives what each law says and when it was read the full card width. */
@media (min-width:760px){.wh-tbl--picks#wh-states tbody th{width:28%}.wh-tbl--picks#wh-states td:last-child{width:24%}}
.wh-tbl--picks#wh-states .wh-pickname{color:var(--ink)}
@media (max-width:759.98px){.wh-tbl--picks#wh-states td{grid-column:1/-1}}

/* work-drone-deer-recovery: the answer counts as cards (.wh-counts, from the private property guide above), two by
   two for the four answers, and the two thermal drone cards' notes. */
.wh-counts--4>ul{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (max-width:759.98px){.wh-counts--4>ul{grid-template-columns:minmax(0,1fr)}}
.wh-lens p{margin-top:12px;font-size:16px;line-height:1.5;color:var(--ink-soft)}
/* ---------- Pick lists and comparisons (agent C pages: /drones/best/…, /drones/compare/…) ----------
   wh-tbl--long: a generated table whose caption and cells are sentences (the picks tables of /drones/best/): the
   caption reads as body text, the row header carries the model name, and on phones every cell takes the full width. */
.wh-tbl tbody tr[hidden]{display:none}
.wh-tbl--long caption{padding:14px 18px 12px;font:500 15px/1.45 var(--f-body);text-transform:none;color:var(--ink-soft)}
.wh-tbl--long tbody th{width:auto;min-width:8.5em;font:700 20px/1.15 var(--f-cond);color:var(--ink)}
.wh-tbl--long tbody th a{color:var(--ink);text-decoration-color:var(--leader)}
.wh-tbl--long tbody th a:hover{color:var(--cobalt)}
.wh-tbl--long td{font-size:15px}
.wh-notes--sheet{margin-top:16px;max-width:96ch}
.wh-notes--sheet li{list-style:none}
.wh-notes--sheet li+li{margin-top:8px}
.wh-guides--sheet{margin-top:24px}
@media (max-width:759.98px){
	.wh-tbl--picks caption{display:block;padding:14px 16px 10px;border-bottom:1px solid var(--rule)} /* a block table keeps its caption full width */
	.wh-tbl--long caption{display:block;padding:14px 16px 12px;border-bottom:1px solid var(--rule)}
	.wh-tbl--long td{grid-column:1/-1}
}
/* A ranked list: three cards a row on wide screens (the lead card spans two), then each pick's write-up with its photo. */
@media (min-width:1180px){
	.wh-fpcards--3{grid-template-columns:repeat(3,minmax(0,1fr))}
	.wh-pcards--2{--cols:2}
	.wh-pcards--5{--cols:5}
	.wh-pcards--5 .wh-pcard__nums{gap:4px 10px;font-size:15px}
}
.wh-fpcards+.wh-tblnote{margin-top:16px}
.wh-split--pick{margin-top:48px;padding-top:40px;border-top:1px solid var(--rule);scroll-margin-top:72px}
/* The budget list: one pick per price band opens its part; a note under a table or a steps rail. */
.wh-split--band{scroll-margin-top:72px}
:is(.wh-tblwrap,.wh-steps)+.wh-tblnote{margin-top:16px}
:is(.wh-split--pick,.wh-split--band) .wh-text>h3:first-child{margin-top:0}
.wh-text ol{padding-left:1.5em}
.wh-text ol>li::marker{font-weight:700;color:var(--ink)}
/* A wh-table written by another page's generator, set on a plain panel. */
.wh-tblpanel{margin-top:32px;padding:20px 24px 8px;border:1px solid var(--rule);border-radius:var(--r);background:var(--paper)}
@media (max-width:759.98px){
	.wh-split--pick{margin-top:36px;padding-top:28px}
	.wh-tblpanel{padding:16px 16px 4px}
}
/* The DJI alternatives list: each DJI model beside its alternative, two studio cutouts on the grid (two a row on
   phones too), and a weight-scale line labelled on its left where the line sits right of centre. */
.wh-pair2--vs{margin-top:0;gap:12px}
.wh-pair2--vs .wh-pcard__body{gap:6px;padding:14px 16px 16px}
.wh-pair2--vs :is(h3,h4){margin:0;font:700 21px/1.05 var(--f-cond);text-transform:uppercase;text-wrap:balance}
.wh-pair2--vs .wh-pcard__nums{padding-top:4px;gap:2px 10px;font-size:15px}
.wh-wscale__line--left b{left:auto;right:8px;text-align:right}
@media (max-width:759.98px){
	.wh-pair2--vs{grid-template-columns:repeat(2,minmax(0,1fr))}
	.wh-pair2--vs :is(h3,h4){font-size:18px}
	.wh-pair2--vs .wh-pcard__body{padding:12px 12px 14px}
}
/* A wide table of sentences (the American-made list): its column heads wrap, so all its columns fit the page. */
.wh-tblwrap--words .wh-tbl thead th{white-space:normal}
/* A comparison's weight scale: a maker's tolerance as a band on the axis, and a dot whose label runs to its right. */
.wh-wscale__range{position:absolute;bottom:25px;height:12px;border-radius:6px;background:var(--caution);opacity:.6}
.wh-wscale__dot--start{transform:translateX(-7px);align-items:flex-start}
.wh-wscale__dot--start.wh-wscale__dot--me{transform:translateX(-10px)}
/* The DJI Care Refresh fees: one studio cutout per model with its two fees, four a row, two a row on phones. */
.wh-pcards--fees{gap:16px}
.wh-pcards--fees .wh-pcard__body{gap:6px;padding:14px 16px 16px}
.wh-pcards--fees h3{font-size:22px}
.wh-pcards--fees .wh-pcard__body>p{font-size:14px;line-height:1.35}
.wh-fee{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:auto;padding-top:8px}
.wh-fee dt{font:600 14px/1.3 var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft)}
.wh-fee dd{margin:2px 0 0;font:800 30px/1 var(--f-cond);font-variant-numeric:tabular-nums;color:var(--ink)}
@media (max-width:759.98px){
	.wh-pcards--fees{--cols:2;gap:12px}
	.wh-pcards--fees h3{font-size:18px}
	.wh-pcards--fees .wh-pcard__body{padding:12px 12px 14px}
	.wh-fee dd{font-size:24px}
}
/* A fact strip of ranges ("$89 to $1,069"): the figures scale with their cell, so a long range never runs into the next fact. */
.wh-facts--fit .wh-fact{container-type:inline-size}
.wh-facts--fit .wh-fact dd{font-size:min(46px,20cqi)}
.wh-facts--fit .wh-fact dd small{font-size:.48em}
@media (max-width:759.98px){
	.wh-facts--fit .wh-fact dd{font-size:min(36px,20cqi)}
}
/* Drone light shows (/work/drone-light-shows/): the show finder (.wh-ds) in the lifted card and the cost calculator
   (.wh-dc) in its part, both in the picker's box (.wh-pk); their answers, engine/drone-shows-view.mjs: shows and city
   prices as picks tables (cards on a phone), each cell's lines stacked, the empty state with the mascot tile. */
.wh-ds__form,.wh-dc__row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px;max-width:720px}
@media (min-width:760px){
	.wh-ds__shows tbody th{width:26%}
	.wh-ds__records tbody th,.wh-ds__vs tbody th{width:22%}
	.wh-ds__bands tbody th{width:20%}
}
:is(.wh-ds__shows,.wh-ds__records) td>span{display:block}
:is(.wh-ds__shows,.wh-ds__records) td>.wh-small{margin-top:2px}
.wh-ds__event{display:block;font:700 20px/1.15 var(--f-cond);color:var(--ink)}
.wh-ds__src{overflow-wrap:anywhere}
.wh-ds__none{display:flex;align-items:center;gap:16px;max-width:70ch;font-weight:500;font-size:17px;line-height:1.45}
.wh-ds__none img{flex:none;width:56px;height:56px}
.wh-ds__checked{max-width:90ch}
.wh-part__h .wh-ds__hsub{display:block;margin-top:12px;max-width:44ch;font:600 clamp(20px,1.9vw,27px)/1.2 var(--f-semi);letter-spacing:0;text-transform:none;opacity:.86}
@media (max-width:759.98px){
	.wh-ds__form,.wh-dc__row{grid-template-columns:minmax(0,1fr)}
	.wh-ds__none{align-items:flex-start;font-size:16px}
	.wh-ds__none img{width:44px;height:44px}
	:is(.wh-ds__bands,.wh-ds__records) td.wh-n{white-space:normal}
	:is(.wh-ds__shows,.wh-ds__records,.wh-ds__bands) caption{display:block}
	:is(.wh-ds__shows,.wh-ds__records) td{overflow-wrap:anywhere}
}
/* Drone repair lookup (/fly/drone-repair/): the picker's box (.wh-pk) with two selects side by side (one column on a
   phone); its answer, engine/drone-repair-view.mjs: up to three band-tinted cards (the maker's repair, near you, fix
   it yourself), the first across the full width on a wide screen and the other two side by side, each fact as a
   dt/dd row with its source under it. Before any answer, the folding table of DJI's terms per drone. */
.wh-rp__q{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px;align-items:end}
.wh-rp__ask{font-weight:500;font-size:16px;line-height:1.45}
.wh-rp__cards{display:grid;gap:16px}
.wh-rp__card{min-width:0;padding:16px 20px 20px;border-radius:8px;background:var(--band)}
.wh-rp__card>*+*{margin-top:12px}
.wh-rp__card p{font-size:16px;line-height:1.45}
.wh-rp__card>.wh-pk__sub+*{margin-top:4px}
.wh-rp__h{font:700 28px/1.1 var(--f-cond)}
.wh-rp__facts>div{display:grid;grid-template-columns:150px minmax(0,1fr);column-gap:16px;padding:10px 0;border-top:1px solid var(--rule)}
.wh-rp__facts>div:last-child{padding-bottom:0}
.wh-rp__facts dt{font:600 14px/22px var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft)}
.wh-rp__facts dd{font-size:16px;line-height:1.45}
.wh-rp__facts .wh-pk__src,.wh-rp__line{display:block;margin-top:2px}
.wh-rp__list{padding-left:1.2em;font-size:16px;line-height:1.45}
.wh-rp__list li+li{margin-top:4px}
.wh-rp__more{display:inline-flex;align-items:center;min-height:44px;font-weight:600}
.wh-rp__start td>span{max-width:60ch}
@media (min-width:1024px){
	.wh-rp__cards--3{grid-template-columns:repeat(2,minmax(0,1fr))}
	.wh-rp__cards--3>:first-child{grid-column:1/-1}
}
@media (max-width:759.98px){
	.wh-rp__q{grid-template-columns:minmax(0,1fr)}
	.wh-rp__card{padding:16px}
	.wh-rp__h{font-size:24px}
	.wh-rp__facts>div{grid-template-columns:minmax(0,1fr);row-gap:2px}
	/* The card tables' hidden heads: long column names would still lay out past the screen edge. */
	#wh-rp-parts thead th,#wh-rp-states thead th,#wh-rp-prices thead th,#wh-rp-labor thead th{display:block}
}
/* Drone simulators guide: the practice trainer on the lifted card (plugin windhorse-tools, assets/sim-trainer.js). Its
   field is a canvas, wide on screens (short enough to keep Start in view) and taller on phones, where two thumbs fly it; the page scrolls
   over it until a drill starts. Below, the simulator table's first column. */
.wh-sim{padding:28px 32px 32px;border:1.5px solid var(--ink-line);border-radius:var(--r);background:var(--paper);box-shadow:var(--shadow);scroll-margin-top:72px}
.wh-sim [hidden]{display:none!important}
.wh-sim__h{font:800 clamp(36px,3.4vw,48px)/.95 var(--f-cond);text-transform:uppercase;scroll-margin-top:72px}
.wh-sim__lead{margin-top:6px;max-width:76ch;font-size:17px;line-height:1.5;color:var(--ink-soft)}
.wh-sim__body{margin-top:20px}
.wh-sim__bar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px 16px}
.wh-sim__group{display:flex;flex-wrap:wrap;gap:4px;padding:4px;border:1.5px solid var(--ink-line);border-radius:10px}
.wh-sim__pick{min-height:44px;padding:0 14px;border:0;border-radius:7px;background:none;color:var(--ink-soft);font:600 17px/1 var(--f-cond);letter-spacing:.04em;text-transform:uppercase;cursor:pointer}
.wh-sim__pick:hover{background:var(--band);color:var(--ink)}
.wh-sim__pick[aria-pressed=true]{background:var(--solid);color:var(--on-solid)}
.wh-sim__rate{display:flex;flex-direction:column;gap:4px;min-width:150px}
.wh-sim__stage{position:relative;margin-top:16px;height:clamp(320px,58vh,600px);border:1.5px solid var(--ink-line);border-radius:10px;background:var(--sheet);overflow:hidden;outline-offset:3px}
.wh-sim__canvas{position:absolute;inset:0;display:block;width:100%;height:100%}
.wh-sim.is-flying .wh-sim__canvas{touch-action:none;-webkit-user-select:none;user-select:none}
.wh-sim__under{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;margin-top:14px}
.wh-sim__under .wh-btn{min-width:132px}
.wh-sim__hud{font-size:16px;line-height:1.4;font-variant-numeric:tabular-nums;color:var(--ink-soft)}
.wh-sim__msg{margin-top:12px;min-height:3em;max-width:84ch;font-size:17px;line-height:1.5}
.wh-sim__keys{margin-top:20px;padding-top:18px;border-top:1px solid var(--rule)}
.wh-sim__kh{font:700 20px/1.1 var(--f-cond);text-transform:uppercase}
.wh-sim__map{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 28px;margin-top:12px}
.wh-sim__map dt{font:600 14px/1.3 var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft)}
.wh-sim__map dd{margin:4px 0 0;font-size:16px;line-height:1.55}
.wh-sim kbd{display:inline-block;min-width:1.8em;padding:0 6px;border:1px solid var(--soft-line);border-bottom-width:2px;border-radius:5px;background:var(--sheet);font:600 14px/1.5 var(--f-semi);text-align:center;color:var(--ink)}
.wh-sim__nojs{margin-top:20px;padding:16px 18px;border:1px solid var(--rule);border-radius:10px;background:var(--sheet);font-size:17px;line-height:1.5}
.wh-sim__note{margin-top:20px;font-size:14px;line-height:1.5;color:var(--ink-soft);max-width:110ch}
@media (min-width:760px){#wh-sims tbody th{width:22%}}
@media (max-width:967.98px){
	.wh-sim__map{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:759.98px){
	.wh-sim{padding:20px 16px 24px}
	.wh-sim__group{flex:1 1 100%}
	.wh-sim__pick{flex:1 1 0;padding:0 8px;font-size:16px}
	.wh-sim__rate{flex:1 1 100%}
	.wh-sim__stage{height:min(118vw,66vh)}
	.wh-sim__map{grid-template-columns:1fr}
}
/* ---------- Sectional chart (/tools/sectional-chart/, plugin engine/sectional-chart-ui.mjs) ---------- */
/* The tool box lifted onto the masthead: the place field over the FAA chart (tiles this site keeps, dragged and
   zoomed by the viewer), the answer and the legend chips beside it, the edition line under it. The legend below:
   one folding card per symbol, our drawing on the chart's own light paper in both themes. */
.wh-sc{padding:28px 32px 32px;border:1.5px solid var(--ink-line);border-radius:var(--r);background:var(--paper);box-shadow:var(--shadow);scroll-margin-top:72px}
.wh-sc [hidden]{display:none!important}
.wh-sc__h{font:800 clamp(36px,3.4vw,48px)/.95 var(--f-cond);text-transform:uppercase;scroll-margin-top:72px}
.wh-sc__lead{margin-top:6px;max-width:72ch;font-size:17px;line-height:1.5;color:var(--ink-soft)}
.wh-sc__body{margin-top:20px}
.wh-sc__find{position:relative;display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px}
.wh-sc__find .wh-field{flex:1 1 300px}
.wh-sc__msg{flex:1 1 100%;font-weight:600;font-size:16px;line-height:1.4}
.wh-sc__picks{display:flex;flex-wrap:wrap;gap:8px;flex:1 1 100%}
.wh-sc__picks .wh-btn{min-height:44px;font-size:17px;white-space:normal;text-align:left}
.wh-sc__grid{display:grid;grid-template-columns:minmax(0,8fr) minmax(0,4fr);gap:24px;align-items:start;margin-top:16px}
.wh-sc__map{position:relative;height:clamp(360px,62vh,600px);overflow:hidden;border:1px solid var(--rule);border-radius:10px;background:#E9EDE4;cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none;contain:strict}
.wh-sc__map:active{cursor:grabbing}
.wh-sc__map:focus{outline:0}
.wh-sc__map:focus-visible{outline:3px solid var(--cobalt);outline-offset:2px}
.wh-sc__wait{display:flex;align-items:center;justify-content:center;height:100%;padding:16px;font:500 16px/1.4 var(--f-body);color:#4A524C;text-align:center}
.wh-sc__map.is-down::after{content:"The FAA chart could not be loaded just now.";position:absolute;inset:auto 10px 44px;padding:8px 12px;border-radius:6px;background:var(--caution-pale);color:var(--caution-ink);font-weight:600;font-size:15px;line-height:1.4}
.wh-sc__pane{position:absolute;inset:0}
.wh-sc__tile{position:absolute;max-width:none;opacity:0;transition:opacity .2s;image-rendering:auto;pointer-events:none}
.wh-sc__tile.is-in{opacity:1}
.wh-sc__tile.is-gone{visibility:hidden}
.wh-sc__pin{position:absolute;left:0;top:0;width:34px;height:44px;margin:-42px 0 0 -17px;pointer-events:none;filter:drop-shadow(0 2px 3px rgb(0 0 0 / .35))}
.wh-sc__pin svg{display:block}
.wh-sc__zoom{position:absolute;z-index:2;top:10px;right:10px;display:grid;border:1.5px solid #1F2421;border-radius:8px;overflow:hidden;background:#FFFFFF}
.wh-sc__zoom button{width:44px;height:44px;border:0;background:#FFFFFF;color:#1F2421;font:700 24px/1 var(--f-body);cursor:pointer}
.wh-sc__zoom button+button{border-top:1px solid #C9CEC6}
.wh-sc__zoom button:hover{background:#EEF1EC}
.wh-sc__zoom button:disabled{color:#9AA19B;cursor:default}
.wh-sc__zoom button:focus-visible{outline:3px solid var(--cobalt);outline-offset:-3px}
.wh-sc__src{position:absolute;z-index:2;right:8px;bottom:8px;padding:2px 8px;border-radius:4px;background:rgb(255 255 255 / .85);color:#1F2421;font:600 14px/1.4 var(--f-semi);letter-spacing:.03em;text-transform:uppercase;pointer-events:none}
.wh-sc__side{display:grid;gap:20px;min-width:0}
.wh-sc__out:empty{display:none}
.wh-sc__spot{padding:16px 18px 18px;border:1.5px solid var(--ink-line);border-radius:10px;background:var(--paper)}
.wh-sc__say{font-size:18px;line-height:1.45}
.wh-sc__say:focus{outline:0}
.wh-sc__ll{margin-top:4px;font:500 14px/1.4 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:var(--ink-soft)}
.wh-sc__next{margin-top:10px;font-size:15px;line-height:1.5;color:var(--ink-soft)}
.wh-sc__btns{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.wh-sc__btns .wh-btn{min-height:44px;white-space:normal;text-align:left}
.wh-sc__kh{font:700 22px/1.1 var(--f-cond);text-transform:uppercase}
.wh-sc__klist{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-top:10px;list-style:none}
.wh-sc__key{display:flex;align-items:center;gap:8px;min-height:44px;padding:4px 8px 4px 4px;border:1px solid var(--soft-line);border-radius:8px;background:var(--control);color:var(--ink);font-weight:500;font-size:15px;line-height:1.2;text-decoration:none}
.wh-sc__key:hover{border-color:var(--ink);color:var(--ink)}
.wh-sc__kpic{flex:none;display:block;width:40px;height:24px;border-radius:4px;background:#F4F1E6;box-shadow:inset 0 0 0 1px #D9D5C6}
.wh-sc__kpic svg{display:block}
.wh-sc__kall{margin-top:10px;font-weight:600;font-size:16px}
.wh-sc__kall a{display:inline-flex;align-items:center;gap:4px;min-height:44px}
.wh-sc__edbox{margin-top:14px}
.wh-sc__ed{font-size:15px;line-height:1.5;color:var(--ink-soft)}
.wh-sc__ed strong{color:var(--ink)}
.wh-sc__nojs{margin-top:20px;padding:16px 18px;border:1px solid var(--rule);border-radius:10px;background:var(--sheet);font-size:17px;line-height:1.5}
.wh-sc__note{margin-top:14px;max-width:110ch;font-size:14px;line-height:1.5;color:var(--ink-soft)}
.wh-sc__tnote{margin-top:10px;font-size:15px;line-height:1.5;color:var(--ink-soft)}
.wh-sc__nums{display:grid;gap:0;margin-top:12px}
.wh-sc__nums>div{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:10px 0;border-top:1px solid var(--rule)}
.wh-sc__nums dt{font:600 14px/1.3 var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft)}
.wh-sc__nums dd{font:700 24px/1.1 var(--f-cond);font-variant-numeric:tabular-nums;text-align:right}
.wh-sc__nums small{font-size:17px;color:var(--ink-soft)}
.wh-tbl tr.is-now th,.wh-tbl tr.is-now td{background:var(--band)}
.wh-tbl tr.is-now .wh-tag{margin-left:8px;height:26px;font-size:14px}
/* The legend: groups of symbol cards, two columns on screens. The drawing sits on light chart paper in both themes,
   since the chart's own blue and magenta read only on it. */
.wh-sym__about{margin-top:14px;max-width:80ch;font-size:16px;line-height:1.55;color:var(--ink-soft)}
.wh-sym__group{margin-top:40px}
.wh-sym__gh{font:800 28px/1.05 var(--f-cond);text-transform:uppercase}
.wh-sym__gsay{margin-top:6px;max-width:80ch;font-size:16px;line-height:1.5;color:var(--ink-soft)}
.wh-sym{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 16px;align-items:start;margin-top:14px}
.wh-sym__item{border:1px solid var(--rule);border-radius:10px;background:var(--paper);scroll-margin-top:84px}
.wh-sym__item[open]{border-color:var(--ink-line)}
.wh-sym__item:target{box-shadow:0 0 0 3px var(--cobalt)}
.wh-sym__item>summary{display:flex;align-items:center;flex-wrap:wrap;gap:8px 14px;min-height:72px;padding:10px 14px 10px 10px;cursor:pointer;list-style:none}
.wh-sym__item>summary::-webkit-details-marker{display:none}
.wh-sym__item>summary:hover .wh-sym__name{color:var(--cobalt)}
.wh-sym__pic{flex:none;display:block;width:80px;height:48px;border-radius:6px;background:#F4F1E6;box-shadow:inset 0 0 0 1px #D9D5C6}
.wh-sym__pic svg{display:block}
.wh-sym text,.wh-sc__kpic text{font-family:var(--f-cond);font-weight:700}
.wh-sym__name{flex:1 1 140px;min-width:0;font:700 20px/1.15 var(--f-cond)}
.wh-sym__item .wh-tag{height:26px;font-size:14px}
.wh-sym__open{flex:none;display:flex;margin-left:auto}
.wh-sym__open svg{transition:transform .2s cubic-bezier(.2,.8,.2,1)}
.wh-sym__item[open] .wh-sym__open svg{transform:rotate(45deg)}
.wh-sym__body{padding:2px 16px 16px;font-size:16px;line-height:1.55;color:var(--ink-soft)}
.wh-sym__body>p+p{margin-top:8px}
.wh-sym__body strong{color:var(--ink)}
.wh-sym__link{font-weight:600}
.wh-sym__link a{display:inline-flex;align-items:center;gap:4px;min-height:40px}
.wh-sym__body .wh-fold__body p+p{margin-top:6px}
@media (prefers-reduced-motion:reduce){.wh-sym__open svg,.wh-sc__tile{transition:none}}
@media (max-width:967.98px){
	.wh-sc__grid{grid-template-columns:1fr}
	.wh-sc__klist{grid-template-columns:repeat(3,minmax(0,1fr))}
	.wh-sym{grid-template-columns:1fr}
}
@media (max-width:759.98px){
	.wh-sc{padding:20px 16px 24px}
	.wh-sc__map{height:min(110vw,460px);margin-inline:-6px}
	.wh-sc__find .wh-btn{flex:1 1 auto}
	.wh-sc__klist{grid-template-columns:repeat(2,minmax(0,1fr))}
	.wh-sym__item>summary{padding:8px 10px 8px 8px;gap:6px 10px}
	.wh-sym__name{font-size:19px}
	.wh-sym__body{padding:2px 12px 14px}
}
/* Drone pilot jobs (/work/drone-pilot-jobs/): the board printed by [wh_jobs] (plugin/windhorse-tools/jobs.php), one
   card per posting on the notebook grid, the filter (assets/jobs-filter.js) shown only with script, the stale and
   empty states, and the counts and pay table of the pay part. */
.wh-jb{margin-top:28px}
.wh-jb__sum{font:600 19px/1.3 var(--f-semi);letter-spacing:.01em}
.wh-jb__stale{max-width:80ch;margin-top:16px;border-color:var(--caution-ink);background:var(--caution-pale);font-size:16px;line-height:1.45}
.wh-jb__filter{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px 24px;margin-top:20px}
.wh-jb__filter[hidden],.wh-jbcard[hidden],.wh-jb__none[hidden]{display:none}
.wh-jb__filter .wh-field{flex:0 1 280px}
.wh-jb__shown{flex-basis:100%;min-height:22px;font-weight:600;font-size:16px;color:var(--ink-soft)}
.wh-jb__shown:empty{display:none}
.wh-jb__list{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;margin:20px 0 0;padding:0;list-style:none}
.wh-jbcard{display:flex;flex-direction:column;padding:18px 20px 20px;border:1px solid var(--rule);border-radius:var(--r);background:var(--paper)}
.wh-jbcard__title{margin:0;font:700 23px/1.12 var(--f-cond);text-wrap:balance}
.wh-jbcard__who{margin-top:4px;font:600 17px/1.25 var(--f-semi);color:var(--ink-soft)}
.wh-jbcard__facts{display:grid;gap:4px;margin:14px 0 0;padding:0;list-style:none;font-size:16px;line-height:1.35}
.wh-jbcard__pay{font-weight:700}
.wh-jbcard__nopay,.wh-jbcard__facts time{color:var(--ink-soft)}
.wh-jbcard__foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-top:auto;padding-top:18px}
.wh-jbcard__apply{min-height:44px;margin-left:auto}
.wh-jb__none{margin-top:16px;font-weight:600}
.wh-jb__empty{display:flex;align-items:center;gap:16px;max-width:70ch;margin-top:20px;padding:20px 24px;border:1px solid var(--rule);border-radius:var(--r);background:var(--paper);font-size:17px;line-height:1.45}
.wh-jb__empty img{flex:none;width:72px;height:72px}
.wh-jb__note{max-width:90ch;margin-top:24px}
.wh-jb__counts{padding-left:1.2em}
.wh-jb__counts li+li{margin-top:6px}
@media (min-width:760px){.wh-jb__pay td{white-space:nowrap}}
.wh-jb__who li+li{margin-top:8px}
.wh-jb__n{color:var(--ink-soft)}
@media (max-width:759.98px){
	.wh-jb__list{grid-template-columns:minmax(0,1fr)}
	.wh-jb__filter .wh-field{flex-basis:100%}
	.wh-jb__empty{align-items:flex-start;font-size:16px}
	.wh-jb__empty img{width:52px;height:52px}
}

/* == finish tools and fly (2026-11-15) == */
/* A part's sub-topics as cards across the content width (two a row, three with --3), in place of one long column of
   h3s beside an aside that ends halfway down (owner, 2026-11-15: "who reads this?"). */
.wh-subs{display:grid;grid-template-columns:repeat(var(--cols,2),minmax(0,1fr));gap:20px;margin-top:40px}
.wh-subs--3{--cols:3}
.wh-split+.wh-subs,.wh-subs+.wh-subs{margin-top:24px}
.wh-sub{display:flex;flex-direction:column;gap:12px;min-width:0;padding:24px 26px 26px;border:1px solid var(--rule);border-radius:var(--r);background:var(--paper)}
.wh-part--paper .wh-sub{background:var(--sheet)}
.wh-sub--wide{grid-column:1/-1}
.wh-sub__h{display:flex;align-items:center;gap:14px;margin:0;font:700 26px/1.08 var(--f-cond);text-transform:uppercase;text-wrap:balance}
.wh-sub__ico{flex:none;display:grid;place-items:center;width:44px;height:44px;border-radius:10px;background:var(--band);color:var(--ink)}
.wh-part--paper .wh-sub__ico{background:var(--paper);border:1px solid var(--rule)}
.wh-sub>p,.wh-sub>ul,.wh-sub>ol{font-size:17px;line-height:1.55}
.wh-sub>ul{padding-left:1.2em}
.wh-sub>ol{padding-left:1.5em}
.wh-sub li+li{margin-top:.35em}
.wh-sub li::marker{color:var(--leader)}
.wh-sub>.wh-btn{align-self:flex-start;margin-top:auto}
.wh-sub>.wh-sub__note{font-size:15px;line-height:1.45;color:var(--ink-soft)}
.wh-sub .wh-fold{margin-top:auto}
.wh-sub .wh-tblwrap{margin-top:4px}
/* Label and tag rows inside a card (a rule per row: what, and its answer as a word tag). */
.wh-sub__rows{display:grid;margin:0;border-top:1px solid var(--rule)}
.wh-sub__rows>div{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;padding:6px 0;border-bottom:1px solid var(--rule)}
.wh-sub__rows dt{font:600 15px/1.25 var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft)}
.wh-sub__rows dd{margin:0;text-align:right}
/* Colour keys in a card (the TFR map's marks). */
.wh-keys{display:grid;gap:10px;margin:0;padding:0;list-style:none;font-size:17px;line-height:1.45}
.wh-keys li{display:grid;grid-template-columns:28px minmax(0,1fr);gap:12px;align-items:start}
.wh-keys i{display:block;width:22px;height:22px;margin-top:1px;border-radius:5px;border:2px solid transparent}
.wh-keys .k-red{background:var(--no-go);border-color:var(--no-go)}
.wh-keys .k-amber{background:var(--caution);border-color:var(--caution)}
.wh-keys .k-dash{border:2px dashed var(--ink)}
.wh-keys .k-ring{border-radius:50%;border:2px dashed var(--cobalt)}
/* The one ink callout as a strip across the part: text left, the action right. */
.wh-callout--row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px 40px;margin-top:24px;padding:24px 28px}
.wh-callout--row>div{flex:1 1 420px}
.wh-callout--row .wh-btn{margin-top:0}
/* Two columns of running text across the content width (a short part with no aside). */
.wh-text--cols{columns:2 420px;column-gap:56px;margin-top:40px}
.wh-text--cols>*{max-width:none;break-inside:avoid}
/* Bars on one scale: a figure per row against a marked line (watt-hours against 100 Wh, takeoff altitude). */
.wh-hbars{margin:0;padding:24px 28px 20px;border:1px solid var(--rule);border-radius:var(--r);background:var(--paper)}
.wh-part--paper .wh-hbars{background:var(--sheet)}
.wh-hbars__head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:6px 24px}
.wh-hbars__head h3{font:700 24px/1.1 var(--f-cond);text-transform:uppercase}
.wh-hbars__head p{font-size:15px;line-height:1.4;color:var(--ink-soft)}
.wh-hbars ol{position:relative;display:grid;gap:4px;margin:18px 0 0;padding:0;list-style:none}
.wh-hbars li{display:grid;grid-template-columns:minmax(0,15em) minmax(0,1fr) 7.5em;gap:16px;align-items:center;min-height:36px}
.wh-hbars__k{font-size:16px;line-height:1.3}
.wh-hbars__k small{display:block;font-size:14px;color:var(--ink-soft)}
.wh-hbars__bar{position:relative;height:14px;border-radius:7px;background:var(--band)}
.wh-hbars__bar i{position:absolute;left:0;top:0;bottom:0;width:calc(var(--v) / var(--max) * 100%);border-radius:7px;background:var(--go)}
/* A second, lower figure for the same row runs as a thin bar under the first (a larger battery, a guard). */
.wh-hbars__bar i.is-2{top:calc(100% + 4px);bottom:auto;height:6px;border-radius:3px;background:var(--caution)}
.wh-hbars li:has(.is-2){min-height:44px}
.wh-hbars--cobalt .wh-hbars__bar i:not(.is-2){background:var(--cobalt)}
.wh-hbars__k a{color:var(--ink);font-weight:600;text-decoration-color:var(--leader)}
.wh-hbars__foot{margin-top:10px;max-width:90ch;font-size:14px;line-height:1.45;color:var(--ink-soft)}
.wh-subs+.wh-hbars,.wh-split+.wh-hbars{margin-top:32px}
.wh-hbars__bar b{position:absolute;z-index:2;top:-6px;bottom:-6px;left:calc(var(--at) / var(--max) * 100%);width:2px;margin-left:-1px;border-radius:1px;background:var(--ink)}
.wh-hbars__v{font:700 20px/1 var(--f-cond);font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}
.wh-hbars__v small{display:block;margin-top:3px;font:500 14px/1.2 var(--f-body);color:var(--ink-soft)}
.wh-hbars__axis{display:grid;grid-template-columns:minmax(0,15em) minmax(0,1fr) 7.5em;gap:16px;margin-top:10px;font:600 14px/1.2 var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft)}
.wh-hbars__axis span{position:relative;height:16px}
.wh-hbars__axis em{position:absolute;left:calc(var(--at) / var(--max) * 100%);transform:translateX(-50%);font-style:normal;white-space:nowrap}
.wh-hbars__axis em.is-end{transform:translateX(-100%)}
.wh-hbars__axis em.is-start{transform:none}
.wh-hbars__key{display:flex;flex-wrap:wrap;gap:6px 20px;margin-top:14px;font-size:14px;line-height:1.3;color:var(--ink-soft)}
.wh-hbars__key i{display:inline-block;width:18px;height:10px;margin-right:8px;border-radius:5px;background:var(--go);vertical-align:0}
.wh-hbars__key i.is-2{background:var(--caution)}
.wh-hbars--cobalt .wh-hbars__key i:not(.is-2,.is-line){background:var(--cobalt)}
.wh-hbars__key i.is-line{width:2px;height:16px;border-radius:1px;background:var(--ink);vertical-align:-3px}
/* A heading over a row of cards (the cards then carry h4s). */
.wh-subs__h{margin-top:48px;font:700 30px/1.08 var(--f-cond);text-transform:uppercase;text-wrap:balance}
.wh-subs__h+.wh-subs{margin-top:18px}
/* Two columns inside one wide card. */
.wh-sub__cols{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:12px 48px;font-size:17px;line-height:1.55}
.wh-sub__cols>div>*+*{margin-top:.7em}
.wh-sub__cols ul{padding-left:1.2em}
.wh-sub__cols li+li{margin-top:.35em}
.wh-sub__cols li::marker{color:var(--leader)}
/* Numbered steps as cards (an ol keeps the order for screen readers). */
.wh-subs--steps{padding:0;list-style:none}
.wh-sub__num{background:var(--solid);color:var(--on-solid);font:800 24px/1 var(--f-cond)}
.wh-part--paper .wh-sub__num{background:var(--solid);border:0}
.wh-sub .wh-da__eq{margin:0;white-space:normal}
.wh-sub .wh-da__eqline{margin-top:0}
.wh-subs+.wh-callout--row{margin-top:24px}
/* The density altitude chart, shaded by the calculator's four bands. */
.wh-da__bands{display:flex;flex-wrap:wrap;align-items:center;gap:8px 20px;margin-top:28px;font-size:15px;line-height:1.3;color:var(--ink-soft)}
.wh-da__band{display:inline-flex;align-items:center;gap:8px}
.wh-da__band i{width:18px;height:18px;border:1px solid var(--rule);border-radius:4px;background:var(--paper)}
.wh-da__band.wh-da__b2 i,.wh-da__chart td.wh-da__b2{background:var(--go-pale)}
.wh-da__band.wh-da__b3 i,.wh-da__chart td.wh-da__b3{background:var(--caution-pale)}
.wh-da__band.wh-da__b4 i,.wh-da__chart td.wh-da__b4{background:var(--no-go-pale)}
.wh-subs--4{--cols:4}
/* Bar lists in a two-column grid: the label and the figure on one line, the bar under them. */
.wh-hbars--stack{padding:22px 24px 18px}
.wh-hbars--stack ol{gap:2px;margin-top:14px}
.wh-hbars--stack li{grid-template-columns:minmax(0,1fr) auto;gap:6px 16px;min-height:0;padding:6px 0}
.wh-hbars--stack .wh-hbars__bar{grid-column:1/-1;grid-row:2;height:10px}
.wh-hbars--stack .wh-hbars__k small,.wh-hbars--stack .wh-hbars__v small{display:inline;margin:0 0 0 8px}
.wh-hbars--stack .wh-hbars__v{font-size:19px}
.wh-specgrid>.wh-hbars{min-width:0}
.wh-specgrid+.wh-subs{margin-top:24px}
/* The sightings map's newest reports scroll beside the map, as the TFR map's list does, instead of running a
   screen and a half below it. */
@media (min-width:968px){.wh-tm.is-live .wh-sg__rows{max-height:440px;overflow-y:auto;overscroll-behavior:contain}}
/* Answer cards by job (drone simulators): the icon over a short uppercase line. */
.wh-subs--jobs .wh-sub__h{flex-direction:column;align-items:flex-start;gap:12px;font-size:23px}
.wh-subs--jobs .wh-sub>p{font-size:16px}
/* Short comparison tables by kind; the folded tail keeps the head's column widths. */
.wh-sims__read{margin-top:8px;font-size:16px;color:var(--ink-soft)}
.wh-sims__read+.wh-tblwrap{margin-top:18px}
.wh-more2--sims{margin-top:16px}
.wh-more2--sims>summary{min-height:48px;height:auto;padding:10px 18px;line-height:1.2;text-align:left}
.wh-more2--sims+.wh-tblwrap,.wh-tblwrap+.wh-tblwrap{margin-top:32px}
.wh-gal+.wh-subs__h{margin-top:56px}
@media (min-width:760px){
	.wh-tbl--sims5{table-layout:fixed}
	.wh-tbl--sims5 thead th:nth-child(1){width:24%}
	.wh-tbl--sims5 thead th:nth-child(2){width:17%}
	.wh-tbl--sims5 thead th:nth-child(3){width:22%}
	.wh-tbl--sims5 thead th:nth-child(5){width:11%}
	.wh-tbl--sims6{table-layout:fixed}
	.wh-tbl--sims6 thead th:nth-child(1){width:21%}
	.wh-tbl--sims6 thead th:nth-child(2){width:12%}
	.wh-tbl--sims6 thead th:nth-child(3){width:14%}
	.wh-tbl--sims6 thead th:nth-child(4){width:21%}
	.wh-tbl--sims6 thead th:nth-child(6){width:10%}
}
/* A card per drone with three figures (range and flight time); the full table folds under the cards. */
.wh-range{margin-top:36px}
.wh-range>.wh-fpcards{margin-top:0}
.wh-fpcard__specs.wh-fpcard__specs--rows{grid-template-columns:minmax(0,1fr);gap:0;margin-top:auto;padding-top:4px}
.wh-fpcard--wide .wh-fpcard__specs.wh-fpcard__specs--rows{grid-template-columns:repeat(3,minmax(0,1fr));column-gap:24px}
.wh-fpcard__specs--rows>div{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:2px 12px;padding:9px 0;border-bottom:1px solid var(--rule)}
.wh-fpcard__specs--rows>div:last-child{border-bottom:0}
.wh-fpcard--wide .wh-fpcard__specs--rows>div{flex-direction:column;align-items:flex-start;justify-content:flex-start;border-bottom:0}
.wh-fpcard--wide .wh-fpcard__specs--rows dd{margin-left:0;text-align:left}
.wh-fpcard__specs--rows dd{margin-left:auto;font:700 21px/1.1 var(--f-cond);text-align:right}
.wh-fpcard__specs--rows dd small{display:block;margin-top:3px;font:500 14px/1.3 var(--f-body);color:var(--ink-soft)}
.wh-more2--range{margin-top:24px}
.wh-split+.wh-hbars,.wh-text+div>.wh-hbars{margin-top:0}
/* The repair lookup before any answer: a card per DJI drone inside the tool; a fold sits above the card's link. */
.wh-rp__lead{font-size:16px;line-height:1.5;color:var(--ink-soft)}
.wh-fpcards.wh-fpcards--rp{margin-top:16px}
.wh-fpcards--rp .wh-fpcard__fig--cut{height:170px}
.wh-fpcards--rp .wh-fpcard__fig--cut img{inset:30px 10px 14px;height:calc(100% - 44px)}
.wh-fpcards--rp .wh-fpcard h3{font-size:23px}
.wh-fpcard .wh-fold{position:relative;z-index:1;margin-top:4px}
.wh-fpcard .wh-fold__body p+p{margin-top:8px}
.wh-fpcard .wh-fold__body strong{color:var(--ink)}
.wh-fpcard .wh-fold__body .wh-pk__src{font-size:14px}
@media (min-width:1180px){.wh-fpcards--rp{grid-template-columns:repeat(3,minmax(0,1fr))}}
/* Plane travel: the TSA's entries as cards (their two status rows line up at the foot), the 100/160 Wh lines and the
   airlines as place tiles with the rule as a tag; an airline's own words fold under its tile. */
.wh-subs--tsa .wh-sub__h{font-size:23px}
.wh-subs--tsa .wh-sub__rows{margin-top:auto}
.wh-subs+.wh-tblnote,.wh-zones+.wh-tblnote{margin-top:14px}
.wh-tblnote+.wh-callout--row{margin-top:28px}
.wh-zones--lines .wh-zone p strong,.wh-zones--air .wh-zone p strong{color:var(--ink)}
.wh-zones--lines .wh-zone h3,.wh-zones--air .wh-zone h3{text-wrap:balance}
.wh-zones--air .wh-fold__body dl{display:grid;gap:10px;margin:0}
.wh-zones--air .wh-fold__body dt{font:600 14px/1.3 var(--f-semi);letter-spacing:.03em;text-transform:uppercase}
.wh-zones--air .wh-fold__body dd{margin:2px 0 0;color:var(--ink)}
.wh-zones--air .wh-fold__body cite{margin-top:12px}
.wh-more2--bat>summary,.wh-more2--range>summary{height:auto;padding:10px 18px;line-height:1.2;text-align:left}
/* Aerial photography: a cutout card per drone camera, the two full tables folded under them; the makers' technique
   lines as a card per topic, flowing in columns with the part's photo and callout. */
.wh-cams{margin-top:28px}
.wh-cams>.wh-fpcards{margin-top:0}
.wh-more2--cams{margin-top:24px}
.wh-more2--cams>summary{height:auto;padding:10px 18px;line-height:1.2;text-align:left}
.wh-more2--cams .wh-tblwrap+.wh-tblwrap{margin-top:32px}
.wh-subs.wh-subs--flow{display:block;columns:3 300px;column-gap:20px}
.wh-subs--flow>*{break-inside:avoid;margin:0 0 20px}
.wh-sub>.wh-sub__lines{display:grid;margin:0;padding:0;list-style:none;font-size:16px;line-height:1.5}
.wh-sub>.wh-sub__lines>li{padding:12px 0;border-top:1px solid var(--rule)}
.wh-sub>.wh-sub__lines>li+li{margin-top:0}
.wh-sub>.wh-sub__lines>li:first-child{padding-top:0;border-top:0}
.wh-sub>.wh-sub__lines>li:last-child{padding-bottom:0}
.wh-sub__lines .wh-table__src{font-size:14px}
@media (max-width:1199.98px){.wh-subs--3,.wh-subs--4{--cols:2}}
@media (max-width:759.98px){
	.wh-subs,.wh-subs--3,.wh-subs--4{--cols:1;margin-top:28px}
	.wh-sub{padding:20px 18px 22px}
	.wh-sub__h{font-size:24px}
	.wh-sub__cols{grid-template-columns:minmax(0,1fr)}
	.wh-subs__h{margin-top:36px;font-size:26px}
	.wh-callout--row{padding:20px}
	.wh-callout--row .wh-btn{flex:1 1 100%}
	.wh-hbars{padding:18px 16px 16px}
	.wh-hbars li{grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;padding:6px 0}
	.wh-hbars__bar{grid-column:1/-1;grid-row:2}
	.wh-hbars__axis{grid-template-columns:minmax(0,1fr)}
	.wh-hbars__axis>:not(span){display:none}
}

/* Long card lists on a phone (repair, range, cameras: 11 to 14 cards). Each card opens with a short head row, the
   cutout on its grid tile beside the name and the kind label, and the spec rows run the full width below, so a card
   is about 300 px instead of 500. The figure box gives way (display:contents) and the tile is the card's ::before.
   Short pick lists (FPV, the best-of lists, /drones/) keep the stacked card. */
@media (max-width:639px){
	:is(.wh-fpcards--rp,.wh-fpcards--range,.wh-fpcards--cams){gap:12px}
	:is(.wh-fpcards--rp,.wh-fpcards--range,.wh-fpcards--cams) .wh-fpcard{display:grid;grid-template-columns:124px minmax(0,1fr);grid-template-rows:auto auto auto auto}
	:is(.wh-fpcards--rp,.wh-fpcards--range,.wh-fpcards--cams) .wh-fpcard::before{--sheet:#F6F8F4;--grid-minor:#E8ECE6;--grid-major:#D6DCD5;content:"";grid-column:1;grid-row:1/3;border-right:1px solid var(--rule);background-color:var(--sheet);background-image:linear-gradient(var(--grid-major) 1px,#0000 1px),linear-gradient(90deg,var(--grid-major) 1px,#0000 1px),linear-gradient(var(--grid-minor) 1px,#0000 1px),linear-gradient(90deg,var(--grid-minor) 1px,#0000 1px);background-size:80px 80px,80px 80px,16px 16px,16px 16px;background-position:center}
	:is(.wh-fpcards--rp,.wh-fpcards--range,.wh-fpcards--cams) :is(.wh-fpcard__fig,.wh-fpcard__body){display:contents}
	:is(.wh-fpcards--rp,.wh-fpcards--range,.wh-fpcards--cams) .wh-fpcard__fig--cut img{position:relative;z-index:0;inset:auto;grid-column:1;grid-row:1/3;align-self:center;width:100%;height:auto;padding:10px;filter:drop-shadow(0 5px 5px rgb(24 30 24 / .18))}
	:is(.wh-fpcards--rp,.wh-fpcards--range,.wh-fpcards--cams) .wh-fpcard h3{grid-column:2;grid-row:1;align-self:end;padding:14px 14px 0;font-size:21px}
	:is(.wh-fpcards--rp,.wh-fpcards--range,.wh-fpcards--cams) .wh-fpcard__kind{position:static;grid-column:2;grid-row:2;justify-self:start;align-self:start;height:auto;min-height:24px;margin:8px 14px 14px;padding:4px 8px;font-size:14px;line-height:1.15}
	:is(.wh-fpcards--rp,.wh-fpcards--range,.wh-fpcards--cams) .wh-fpcard__specs.wh-fpcard__specs--rows,:is(.wh-fpcards--rp,.wh-fpcards--range,.wh-fpcards--cams) .wh-fpcard--wide .wh-fpcard__specs.wh-fpcard__specs--rows{grid-column:1/-1;grid-row:3;grid-template-columns:minmax(0,1fr);margin:0;padding:2px 14px 0;border-top:1px solid var(--rule)}
	:is(.wh-fpcards--rp,.wh-fpcards--range,.wh-fpcards--cams) .wh-fpcard__specs--rows>div,:is(.wh-fpcards--rp,.wh-fpcards--range,.wh-fpcards--cams) .wh-fpcard--wide .wh-fpcard__specs--rows>div{flex-direction:row;align-items:baseline;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--rule)}
	:is(.wh-fpcards--rp,.wh-fpcards--range,.wh-fpcards--cams) .wh-fpcard__specs--rows>div:last-child{border-bottom:0}
	:is(.wh-fpcards--rp,.wh-fpcards--range,.wh-fpcards--cams) .wh-fpcard__specs--rows dd,:is(.wh-fpcards--rp,.wh-fpcards--range,.wh-fpcards--cams) .wh-fpcard--wide .wh-fpcard__specs--rows dd{margin-left:auto;font-size:19px;text-align:right}
	:is(.wh-fpcards--rp,.wh-fpcards--range,.wh-fpcards--cams) .wh-fpcard .wh-fold{grid-column:1/-1;grid-row:4;margin:0 14px 12px}
}
@media (max-width:639px) and (prefers-color-scheme:dark){:root:not([data-theme=light]) :is(.wh-fpcards--rp,.wh-fpcards--range,.wh-fpcards--cams) .wh-fpcard::before{--sheet:#E4E8E2;--grid-minor:#D8DDD6;--grid-major:#C8CEC6}}
@media (max-width:639px){:root[data-theme=dark] :is(.wh-fpcards--rp,.wh-fpcards--range,.wh-fpcards--cams) .wh-fpcard::before{--sheet:#E4E8E2;--grid-minor:#D8DDD6;--grid-major:#C8CEC6}}
/* == compare (2026-11-15) == */
/* Drone compare tool (/tools/compare/) and the pair pages' tables, engine/compare-view.mjs. The tool box is the weather
   tool's .wh-fc card with three labelled selects and the "Show only differences" switch (an outline button, Ink-filled
   while pressed); its feature card clips without scrolling (--cmp), so the table head can stay in view. The answer:
   the drones side by side (each studio cutout on the notebook grid, its name and takeoff weight, the weight as a bar
   on one scale with the dashed registration line), the mark legend, the wh-tbl table of the rows people compare first
   (a column per drone under its photo and name, the head in view while the table scrolls, under the section index on
   pages that have one; labels in one family, figures in another, left-aligned in tabular numbers; a difference is the
   small Ink diamond with words for screen readers, never a colour or a weight), the other rows in a second table
   under "Show N more rows" (wh-more2), the notes and the links out. Below 760 px each row's label spans the row and
   the cells sit side by side under the names in the sticky head (each cell's drone name kept for screen readers).
   The ready-made pairs are photo cards with every figure folded inside; the models in the tool are photo tiles. */
.wh-feature--cmp{overflow:clip}
.wh-cmp__picks{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px}
.wh-cmp__picks .wh-field{flex:1 1 200px}
.wh-cmp__diff{flex:none}
.wh-cmp__diff[aria-pressed=true],.wh-cmp__diff[aria-pressed=true]:hover{background:var(--solid);color:var(--on-solid)}
.wh-cmp--diff [data-wh-same]{display:none}
.wh-cmp__res>*+*{margin-top:20px}
.wh-cmp__page{margin-top:28px}
.wh-cmp__line{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:0;padding:0;list-style:none}
.wh-cmp__line.wh-cmp--n3{grid-template-columns:repeat(3,minmax(0,1fr))}
.wh-cmp__drone{display:flex;flex-direction:column;border:1px solid var(--rule);border-radius:var(--r);background:var(--paper);overflow:hidden}
.wh-cmp__cut{display:block;aspect-ratio:2/1}
.wh-cmp__dt{display:flex;flex-direction:column;gap:8px;padding:14px 18px 16px}
.wh-cmp__dn{font:700 24px/1.05 var(--f-cond);text-transform:uppercase;text-wrap:balance}
.wh-cmp__dn a{display:inline-block;padding:10px 0;margin:-10px 0;color:var(--ink);text-decoration:none}
.wh-cmp__dn a:hover{color:var(--cobalt);text-decoration:underline}
.wh-cmp__dw{display:flex;flex-direction:column;gap:2px}
.wh-cmp__dl{font:600 14px/1.2 var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft)}
.wh-cmp__dv{font:600 20px/1.25 var(--f-semi);font-variant-numeric:tabular-nums}
.wh-cmp__dx{font-size:15px;line-height:1.4;color:var(--ink-soft)}
.wh-cmp__bar{display:block;width:100%;height:18px;overflow:visible}
.wh-cmp__bt{fill:var(--band)}
.wh-cmp__b1{fill:var(--ink)}
.wh-cmp__b2{fill:var(--ink);opacity:.28}
.wh-cmp__bl{fill:none;stroke:var(--caution-ink);stroke-width:2;stroke-dasharray:3 2}
.wh-cmp__key,.wh-cmp__legend{display:flex;align-items:flex-start;gap:10px;color:var(--ink-soft)}
.wh-cmp__key svg{flex:none;margin-top:1px}
.wh-cmp__legend svg{flex:none;margin-top:6px}
.wh-cmp__panel{border:1px solid var(--rule);border-radius:var(--r);background:var(--paper);overflow:clip}
.wh-cmp__table{table-layout:fixed}
.wh-cmp__table caption{padding:14px 18px 12px;font:500 15px/1.45 var(--f-body);text-transform:none;color:var(--ink-soft)}
.wh-cmp__table thead th{top:0;z-index:2;padding:12px 18px;border-bottom:0;box-shadow:inset 0 -2px 0 var(--ink);background:var(--paper);vertical-align:top;white-space:normal}
.wh-index~.wh-part .wh-cmp__table thead th{top:52px}
.wh-cmp--n2 thead th:first-child{width:28%}
.wh-cmp--n3 thead th:first-child{width:22%}
.wh-cmp__hd{display:flex;align-items:center;gap:12px}
.wh-cmp__hd img{flex:none;width:60px;height:40px;object-fit:contain}
.wh-cmp__name{font:700 20px/1.05 var(--f-cond);letter-spacing:.01em;text-transform:uppercase;color:var(--ink)}
.wh-cmp__uk{display:block;margin-top:6px;font:500 14px/1.3 var(--f-body);letter-spacing:0;text-transform:none;color:var(--ink-soft)}
.wh-cmp__table tbody th{width:auto}
.wh-cmp__table td{overflow-wrap:anywhere}
.wh-cmp__table tbody tr.wh-cmp__grp:hover{background:none}
.wh-cmp__grp th{padding:24px 18px 8px;border-top:0;font:700 19px/1.1 var(--f-cond);letter-spacing:.02em;text-transform:uppercase;color:var(--ink)}
.wh-cmp__table tbody:first-of-type .wh-cmp__grp th{padding-top:16px}
.wh-cmp__table tbody .wh-cmp__grp th{color:var(--ink)}
.wh-cmp__v{display:block}
.wh-cmp__var,.wh-cmp__rec{display:block;margin-top:4px;font-size:15px;line-height:1.4;color:var(--ink-soft)}
.wh-cmp__rec{margin-top:6px;font-size:14px}
.wh-cmp__rule .wh-cmp__var{color:var(--ink)}
.wh-cmp__vl{color:var(--ink-soft)}
.wh-cmp__nil{color:var(--ink-soft)}
.wh-cmp__mk{display:inline-block;margin-left:6px;vertical-align:1px;color:var(--ink)}
.wh-cmp__notes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 28px;margin:28px 0 0;padding:0;list-style:none}
.wh-cmp__notes li{padding-top:10px;border-top:1px solid var(--rule);font-size:15px;line-height:1.45;color:var(--ink-soft)}
.wh-cmp__notes strong{font-weight:600;color:var(--ink)}
.wh-cmp__res>.wh-cmp__exits{margin-top:28px}
.wh-cmp__ndif,.wh-cmp--diff .wh-cmp__nall{display:none}
.wh-cmp--diff .wh-cmp__ndif{display:inline}
.wh-cmp__pairs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;align-items:start}
.wh-cmp__pair.wh-pcard{overflow:clip}
.wh-cmp__pair.wh-pcard:hover{transform:none}
.wh-cmp__pimg{display:grid;grid-template-columns:1fr 1fr;aspect-ratio:2/1}
.wh-cmp__pimg img{position:static;width:100%;height:100%;padding:10% 6% 12%;object-fit:contain}
.wh-cmp__pfold{position:relative;z-index:1;margin:0;padding:0 20px 20px}
.wh-cmp__pfold .wh-cmp__res>*+*{margin-top:16px}
.wh-cmp__pfold .wh-cmp__notes{grid-template-columns:minmax(0,1fr)}
.wh-cmp__fleet{margin-top:48px}
.wh-cmp__fleet>.wh-h3{margin-bottom:16px}
.wh-cmp__all{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:12px;margin:0;padding:0;list-style:none}
.wh-cmp__all li>*{display:flex;flex-direction:column;height:100%;border:1px solid var(--rule);border-radius:var(--r);background:var(--paper);overflow:hidden;color:var(--ink);text-decoration:none}
.wh-cmp__all a{transition:border-color .2s,box-shadow .2s}
.wh-cmp__all a:hover{border-color:var(--ink-line);box-shadow:var(--shadow)}
.wh-cmp__acut{display:block;aspect-ratio:3/2}
.wh-cmp__an{padding:8px 10px 10px;font:700 17px/1.1 var(--f-cond);text-transform:uppercase;text-wrap:balance}
/* The page around the tool: the three key cards over the explanation, the pairs, the "why" photos, the written
   comparisons and the related links (tools-compare.html). */
.wh-cmp__how{margin-top:32px}
.wh-cmp__how h3 svg{display:inline-block;margin-right:10px;vertical-align:3px}
.wh-cmp__pairbox,.wh-cmp__written{margin-top:32px}
.wh-cmp__after{margin-top:20px}
.wh-cmp__why{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:32px;margin-top:32px}
.wh-cmp__why h3{margin-top:18px}
.wh-cmp__why p{margin-top:8px;font-size:17px;line-height:1.55}
.wh-cmp__rel{margin-top:24px}
@media (prefers-reduced-motion:reduce){.wh-cmp__all a{transition:none}}
@media (max-width:1199.98px){
	.wh-cmp__all{grid-template-columns:repeat(5,minmax(0,1fr))}
	.wh-cmp__notes{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:759.98px){
	.wh-cmp__picks .wh-field{flex:1 1 100%}
	.wh-cmp__diff{flex:1 1 auto}
	.wh-cmp__line{gap:10px}
	.wh-cmp__dt{gap:6px;padding:10px 12px 12px}
	.wh-cmp__dn{font-size:19px}
	.wh-cmp__dv{font-size:16px}
	.wh-cmp__dx{font-size:14px}
	.wh-cmp__notes,.wh-cmp__pairs,.wh-cmp__why{grid-template-columns:minmax(0,1fr)}
	.wh-cmp__cut{aspect-ratio:3/2}
	.wh-cmp__table,.wh-cmp__table caption,.wh-cmp__table tbody{display:block;width:auto}
	.wh-cmp__table caption{padding:12px 14px 10px}
	.wh-cmp__table thead{display:block;position:sticky;top:0;z-index:2;border-bottom:2px solid var(--ink);background:var(--paper)}
	.wh-index~.wh-part .wh-cmp__table thead{top:48px}
	.wh-cmp__table tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:12px;padding:0 14px}
	.wh-cmp--n3 tr{grid-template-columns:repeat(3,minmax(0,1fr))}
	.wh-cmp__table th,.wh-cmp__table td{width:auto;padding:0;border:0}
	.wh-cmp__table thead th{position:static;padding:10px 0;border:0;background:none}
	.wh-cmp__table thead th:first-child{display:none}
	.wh-cmp__hd{flex-direction:column;align-items:flex-start;gap:4px}
	.wh-cmp__hd img{width:48px;height:32px}
	.wh-cmp__name{font-size:17px}
	.wh-cmp__table tbody tr{border-top:1px solid var(--rule)}
	.wh-cmp__table tbody tr.wh-cmp__grp{border-top:0}
	.wh-cmp__table th[scope=row]{grid-column:1/-1;padding-top:12px}
	.wh-cmp__table td{position:relative;padding:4px 0 12px}
	.wh-cmp__table td::before{content:attr(data-label) ": ";position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
	.wh-cmp__table tr.wh-cmp__long{grid-template-columns:minmax(0,1fr)}
	.wh-cmp__table .wh-cmp__long td{padding-bottom:10px}
	.wh-cmp__table .wh-cmp__long td::before{position:static;display:block;width:auto;height:auto;margin-bottom:2px;overflow:visible;clip-path:none;white-space:normal;font:600 14px/1.3 var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft)}
	.wh-cmp__grp th{grid-column:1/-1;padding:20px 0 6px}
	.wh-cmp__table tbody:first-of-type .wh-cmp__grp th{padding-top:14px}
	.wh-cmp__pfold{padding:0 14px 16px}
	.wh-cmp__all{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
	.wh-cmp__an{padding:6px 8px 8px;font-size:15px}
}
/* == finish rules, fpv and work (2026-11-15) == */
/* A wh-tbl caption that carries a title and a quieter line under it; a source line under a cell's words. */
.wh-tbl__sub{display:block;margin-top:6px;font:400 16px/1.45 var(--f-body);text-transform:none;color:var(--ink-soft);max-width:90ch}
.wh-tbl__src{display:block;margin-top:4px;font-size:14px;line-height:1.35;color:var(--ink-soft)}
/* Two rulebooks side by side (how high): the situation, then one column per rulebook. */
@media (min-width:760px){
	.wh-tbl--duo tbody th{width:26%}
	.wh-tbl--duo td{width:37%}
}
/* The makers' rated takeoff altitudes as model cards: the big figure, a bar on one scale (0 to 20,000 ft). */
.wh-altcap{max-width:90ch;margin-top:40px;font-size:16px;line-height:1.45;color:var(--ink-soft)}
.wh-altcards{margin-top:20px}
.wh-alt{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px}
.wh-alt b{font:800 34px/1 var(--f-cond);letter-spacing:.01em;font-variant-numeric:tabular-nums;color:var(--ink)}
.wh-alt span{font-size:15px;color:var(--ink-soft)}
.wh-alt--none{font:600 17px/1.3 var(--f-semi);color:var(--ink-soft)}
.wh-alt__bar{position:relative;height:8px;border-radius:4px;background:var(--band)}
.wh-alt__bar i{position:absolute;inset:0 auto 0 0;width:calc(var(--ft) / 20000 * 100%);border-radius:4px;background:var(--cobalt)}
.wh-alt__src{display:block;font-size:14px;line-height:1.35;color:var(--ink-soft)}
.wh-fpcard__body>p.wh-alt__src{font-size:14px}
dd .wh-alt__src{margin-top:3px}
.wh-altcard__specs{grid-template-columns:minmax(0,1fr);margin-top:auto}
.wh-fpcard--wide .wh-altcard__specs{grid-template-columns:repeat(2,minmax(0,1fr))}
.wh-altcard .wh-alt{margin-top:2px}
@media (max-width:639px){
	.wh-altcard{display:grid;grid-template-columns:116px minmax(0,1fr);column-gap:14px;align-items:start;padding-bottom:16px}
	.wh-altcard .wh-fpcard__body{display:contents}
	.wh-altcard .wh-fpcard__fig{grid-row:1/span 4;grid-column:1;align-self:stretch;height:auto;min-height:132px;border-bottom:0;border-right:1px solid var(--rule)}
	.wh-altcard .wh-fpcard__fig--cut img{inset:10px 8px;width:calc(100% - 16px);height:calc(100% - 20px)}
	.wh-altcard .wh-fpcard__body>*{grid-column:2;margin-right:16px}
	.wh-altcard h3{margin-top:14px;font-size:22px}
	.wh-altcard .wh-alt{margin-top:6px}
	.wh-altcard .wh-alt b{font-size:28px}
	.wh-altcard .wh-alt__bar{margin-top:8px}
	.wh-altcard .wh-fpcard__body>p.wh-alt__src{margin-top:6px;padding-bottom:12px}
	.wh-altcard .wh-altcard__specs{grid-column:1/-1;margin:0 16px;grid-template-columns:minmax(0,1fr)}
}
/* LAANC: one card per route to an authorization, the supplier marks as ticks */
.wh-ways{align-items:stretch}
.wh-small:has(+.wh-ways){margin-top:20px}
.wh-way .wh-zone__ic{background:var(--band);color:var(--ink)}
.wh-way__who{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}
.wh-way h3{text-wrap:balance}
.wh-way__dl{display:grid;gap:10px;margin-top:12px;font-size:16px;line-height:1.45}
.wh-way__dl dt{font:600 14px/1.3 var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft)}
.wh-way__dl dd{margin-top:2px;color:var(--ink)}
.wh-way>.wh-fold{align-self:stretch;margin-top:auto;padding-top:12px}
.wh-way .wh-fold__body p+p{margin-top:6px}
.wh-ways+.wh-tblnote{margin-top:16px}
.wh-tbl--marks thead th{white-space:normal;vertical-align:bottom}
.wh-tbl--marks thead th+th,.wh-tbl--marks td{text-align:center}
.wh-tbl--marks tbody th{width:22%;color:var(--ink)}
.wh-tbl--marks td{width:15%;vertical-align:middle}
.wh-mark{font-size:14px;color:var(--ink-soft)}
.wh-mark--yes{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--go-pale);color:var(--go-ink)}
@media (max-width:759.98px){
	/* A supplier per card: its marks as one short run of chips, a tick before the word; an unmarked one dashed. */
	.wh-tbl--marks tbody tr{display:flex;flex-wrap:wrap;gap:6px;padding-bottom:14px}
	.wh-tbl--marks tbody th{flex:1 0 100%;width:auto;padding-bottom:4px;font:700 21px/1.1 var(--f-cond)}
	.wh-tbl--marks td{display:inline-flex;align-items:center;gap:6px;width:auto;min-height:32px;padding:3px 10px 3px 4px;border:1px solid var(--rule);border-radius:6px;text-align:left}
	.wh-tbl--marks td::before{order:2;margin:0;font-size:14px}
	.wh-tbl--marks .wh-mark--yes{flex:none;width:24px;height:24px}
	.wh-tbl--marks td:has(>.wh-mark:not(.wh-mark--yes)){padding-left:10px;border-style:dashed}
	.wh-tbl--marks td:has(>.wh-mark:not(.wh-mark--yes))::before{order:0}
}
/* The route cards in three labelled groups, two to a row; each card's time as a key-fact chip under its name */
.wh-zones.wh-ways{grid-template-columns:repeat(2,minmax(0,1fr))}
.wh-ways__k{grid-column:1/-1;margin-top:20px;font:700 22px/1.1 var(--f-cond);letter-spacing:.02em;text-transform:uppercase;color:var(--ink)}
.wh-ways__k:first-child{margin-top:0}
.wh-way__time{margin-top:10px}
@media (max-width:639px){.wh-zones.wh-ways{grid-template-columns:minmax(0,1fr)}}
.wh-split__main>.wh-text+.wh-reply{margin-top:24px}
.wh-tbl--marks tbody th{vertical-align:middle}
/* Part 107 study guide: one short table per knowledge area beside a photo, its share of the test as a range bar;
   a task's documents by name, their chapters folded */
.wh-areas{display:grid;gap:48px;margin-top:40px}
.wh-area{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:32px;align-items:start}
.wh-area__shot{position:sticky;top:76px}
.wh-area__shot img{aspect-ratio:4/3;object-fit:cover}
.wh-docfold{margin-top:0}
.wh-docfold>summary{align-items:flex-start;padding:4px 0;font-size:16px;line-height:1.4}
.wh-docfold>summary svg{flex:none;margin-top:2px}
.wh-docfold .wh-fold__body{padding:12px 14px}
@media (max-width:1199.98px){
	.wh-area{grid-template-columns:minmax(0,1fr);gap:16px}
	.wh-area__shot{position:static;max-width:640px}
	.wh-area__shot img{aspect-ratio:16/9}
}
.wh-tbl--tasks caption{padding:18px 18px 14px}
.wh-area__cap{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:14px;align-items:center}
.wh-area__no{grid-row:span 3;display:grid;place-items:center;width:52px;height:52px;border-radius:10px;background:var(--solid);color:var(--on-solid);font:800 24px/1 var(--f-cond)}
.wh-tbl--tasks caption .wh-tbl__sub{margin-top:4px}
.wh-share{position:relative;display:block;max-width:420px;height:8px;margin-top:10px;border-radius:4px;background:var(--band)}
.wh-share i{position:absolute;top:0;bottom:0;left:calc(var(--lo) * 2%);width:calc((var(--hi) - var(--lo)) * 2%);border-radius:4px;background:var(--cobalt)}
.wh-tbl--tasks thead th{white-space:normal}
.wh-tbl--tasks tbody th{width:36%;color:var(--ink);font:700 21px/1.15 var(--f-cond)}
.wh-tbl--tasks tbody th .wh-kind{margin-top:6px;font:400 16px/1.45 var(--f-body)}
.wh-tbl--tasks td.wh-n{width:12%}
.wh-areas+.wh-tblnote{margin-top:16px}
@media (max-width:759.98px){
	.wh-tbl--tasks caption{padding:16px 16px 12px}
	.wh-area__no{width:44px;height:44px;font-size:21px}
	.wh-tbl--tasks tbody th{width:auto}
	.wh-tbl--tasks td.wh-n{display:flex;align-items:baseline;gap:8px;width:auto}
	.wh-tbl--tasks td.wh-n::before{margin:0}
}
/* Drone license: who needs what in two groups; the costs table */
.wh-tbl__group th{padding:16px 18px 8px;background:var(--sheet);font:700 19px/1.1 var(--f-cond);letter-spacing:.02em;text-transform:uppercase;color:var(--ink)}
.wh-tbl__group+tr>*{border-top:0}
.wh-tbl--who tbody th{width:30%;color:var(--ink)}
.wh-tbl--who tbody tr:hover>th{background:none}
.wh-tbl--costs tbody th{width:44%;color:var(--ink)}
.wh-tbl .wh-cost{font-weight:600;white-space:nowrap}
@media (max-width:759.98px){
	.wh-tbl--cards .wh-tbl__group th{padding:14px 16px 10px;border-top:1px solid var(--rule)}
	.wh-tbl--cards .wh-tbl__group{padding:0}
	.wh-tbl--who tbody th,.wh-tbl--costs tbody th{width:auto}
	.wh-tbl--who tbody tr:not(.wh-tbl__group){display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:12px}
	.wh-tbl--who tbody tr:not(.wh-tbl__group)>th{grid-column:1/-1}
	.wh-tbl .wh-cost{white-space:normal}
}
/* What is FPV: the kinds of FPV drone as pick cards, two to a row (the specs are words, not figures) */
.wh-split--mid{align-items:center}
.wh-split--mid .wh-notes{margin-top:16px}
.wh-split--mid+.wh-small{margin-top:40px}
.wh-fpcards--two{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
.wh-small+.wh-fpcards{margin-top:12px}
.wh-fpcards--two .wh-fpcard__body{padding:20px 24px 24px}
.wh-wt__k{display:block;font:600 14px/1.3 var(--f-semi);letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft)}
.wh-fpcards--two .wh-fpcard__specs{gap:14px 20px}
@media (max-width:639px){
	.wh-fpcards.wh-fpcards--two{grid-template-columns:minmax(0,1fr);gap:16px}
	.wh-fpcards--two .wh-fpcard__fig--cut{height:184px}
	.wh-fpcards--two .wh-fpcard__body{padding:16px 18px 20px}
}
/* Drone delivery: the operators as photo cards, the metro areas as tiles that flow in columns */
.wh-ddcards__cap{margin-top:28px}
.wh-ddcards{margin-top:12px}
.wh-ddcard .wh-pcard__body{gap:12px}
.wh-ddcard .wh-pcard__body>p{font-size:16px;line-height:1.4}
.wh-ddcard__k,.wh-ddcard__facts dt{display:block;font:600 14px/1.3 var(--f-semi);letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft)}
.wh-ddcard__where ul{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px;list-style:none}
.wh-ddcard__where li{padding:4px 10px;border-radius:6px;background:var(--band);font:600 14px/1.3 var(--f-semi);letter-spacing:.02em;color:var(--ink)}
.wh-ddcard__facts{display:grid;gap:10px;padding-top:12px;border-top:1px solid var(--rule)}
.wh-ddcard__facts dd{margin-top:2px;font-size:15px;line-height:1.4;color:var(--ink)}
.wh-ddcards__more{align-self:start;border-style:dashed}
.wh-ddcards__more h3{font-size:24px}
.wh-ddcards__more p{font-size:16px}
.wh-ddkey{display:flex;align-items:center;gap:10px;margin-top:28px}
.wh-ddkey__sw{flex:none;width:28px;height:18px;border:1px dashed var(--ink-line);border-radius:4px}
.wh-ddmetros{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;align-items:start;margin-top:16px}
.wh-ddmore>div>.wh-ddmetros{margin-top:0}
.wh-ddmetro{padding:18px 20px 20px;border:1px solid var(--rule);border-radius:var(--r);background:var(--paper)}
.wh-part--paper .wh-ddmetro{background:var(--ground)}
.wh-ddmetro h3{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 12px;font:700 23px/1.1 var(--f-cond);text-transform:uppercase}
.wh-ddmetro__n{font:600 14px/1.3 var(--f-semi);letter-spacing:.04em;color:var(--ink-soft)}
.wh-ddmetro ul{margin-top:10px;list-style:none;font-size:15px;line-height:1.5;color:var(--ink-soft)}
.wh-ddmetro li+li{margin-top:8px;padding-top:8px;border-top:1px solid var(--rule)}
.wh-ddmetro b{color:var(--ink)}
.wh-ddmetro--part{border-style:dashed;border-color:var(--ink-line)}
.wh-ddnotes{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:20px;align-items:start;margin-top:12px}
.wh-ddmore+.wh-ddnotes{margin-top:28px}
@media (max-width:899px){.wh-ddnotes,.wh-ddmetros{grid-template-columns:minmax(0,1fr)}}
@media (min-width:640px) and (max-width:899px){.wh-ddmetros{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Privacy and terms: one legal sheet, a wide text column and a quiet side card (mascot, contact, date) */
.wh-legal{display:grid;grid-template-columns:minmax(0,760px) minmax(260px,320px);justify-content:space-between;column-gap:56px;max-width:1312px;margin:0 auto;padding:16px var(--gut) 40px}
.wh-legal__part{grid-column:1;padding:56px 0;border-top:1px solid var(--rule)}
.wh-legal__part:first-child{border-top:0}
.wh-legal .wh-part__say{max-width:none}
.wh-legal .wh-text{margin-top:24px}
.wh-legal__side{grid-column:2;grid-row:1/span 12}
.wh-legal__stick{position:sticky;top:76px;display:grid;gap:20px;margin-top:56px}
.wh-legal__card{display:grid;grid-template-columns:56px minmax(0,1fr);gap:16px;align-items:start;padding:20px;border:1px solid var(--rule);border-radius:var(--r);background:var(--paper)}
.wh-legal__horse{display:block;width:56px;height:56px;border-radius:10px}
.wh-legal__card dl{display:grid;gap:12px}
.wh-legal__card dt{font:600 14px/1.3 var(--f-semi);letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft)}
.wh-legal__card dd{margin-top:2px;font-size:16px;line-height:1.4;overflow-wrap:anywhere}
.wh-legal__svc{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:20px}
.wh-legal__svc>ul{display:contents;list-style:none}
.wh-legal__svc li{display:flex;flex-direction:column;gap:4px;padding:16px 18px 18px;border:1px solid var(--rule);border-radius:var(--r);background:var(--paper);font-size:16px;line-height:1.45}
.wh-legal__svc li strong{font:700 20px/1.15 var(--f-cond);text-transform:uppercase}
.wh-legal__host{font-size:14px;color:var(--ink-soft);overflow-wrap:anywhere}
.wh-legal__svc li>span:last-child{margin-top:4px}
.wh-legal__svcnote{padding:16px 18px 18px;border:1px dashed var(--ink-line);border-radius:var(--r);font-size:16px;line-height:1.45;color:var(--ink-soft)}
@media (max-width:899px){
	.wh-legal{grid-template-columns:minmax(0,1fr);padding-top:8px}
	.wh-legal__side{grid-column:auto;grid-row:auto}
	.wh-legal__stick{position:static;margin:0 0 8px}
	.wh-legal__part{padding:40px 0}
	.wh-legal__side+.wh-legal__part{border-top:0;padding-top:32px}
}
@media (max-width:639px){.wh-legal__svc{grid-template-columns:minmax(0,1fr)}}

/* History archive pages: the History look, with the old site's renders all down the page */
.wh-arc__rows{margin-top:2px}
.wh-arc__rows .wh-row dd{max-width:60%}
.wh-arc__vs{display:grid;gap:14px;margin-top:14px}
.wh-arc__vs dt{font:600 14px/1.3 var(--f-semi);letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft)}
.wh-arc__vs dd{margin-top:2px;font-size:17px;line-height:1.45}
.wh-arc__vs+p{margin-top:16px}
.wh-arc__aid{margin-top:12px;padding-left:1.2em;font-size:17px;line-height:1.45;color:var(--ink-soft)}
.wh-arc__aid li+li{margin-top:6px}
.wh-arc-marks{display:grid;gap:12px}
.wh-arc-mark{display:grid;grid-template-columns:104px minmax(0,1fr) minmax(0,1fr);gap:6px 20px;align-items:start;padding:16px 20px 18px;border:1px solid var(--rule);border-radius:var(--r);background:var(--ground)}
.wh-arc-mark h3{font:800 30px/1 var(--f-cond);text-transform:uppercase}
.wh-arc-mark dl{display:contents}
.wh-arc-mark dt{font:600 14px/1.3 var(--f-semi);letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft)}
.wh-arc-mark dd{margin-top:4px;font-size:16px;line-height:1.45}
.wh-arc-marks+.wh-text{margin-top:24px}
.wh-arc-scen{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:28px}
.wh-arc-scen .wh-zone h3{margin-top:0}
.wh-arc__cards{margin-top:32px}
.wh-pcard .wh-arc__k{font:600 14px/1.3 var(--f-semi);letter-spacing:.04em;text-transform:uppercase}
.wh-arc__draw{position:absolute;inset:0;display:grid;place-items:center;border-radius:0}
.wh-arc__draw svg{width:64%;height:auto}
.wh-arc__draw--full svg{width:100%;height:100%}
.wh-arc__end{margin-top:24px}
.wh-arc__end .wh-small+.wh-small{margin-top:6px}
@media (max-width:639px){
	.wh-arc-scen{grid-template-columns:minmax(0,1fr)}
	.wh-arc-mark{grid-template-columns:minmax(0,1fr)}
	.wh-arc-mark h3{font-size:26px}
	.wh-arc__rows .wh-row dd{max-width:none}
}
/* Measure and ragged ends in the blocks above (detector pass) */
.wh-split--mid .wh-notes,.wh-ways+.wh-tblnote{max-width:72ch}
:is(.wh-ddcard p,.wh-ddmetro li,.wh-ddnotes .wh-callout p,.wh-fpcards--two .wh-fpcard__body>p,.wh-legal__svc li,.wh-legal__svcnote,.wh-arc-mark dd,.wh-arc__vs dd){text-wrap:pretty}
/* Design review pass: a callout that keeps to its text's measure; the costs words under their table; a compound kept on one line */
.wh-callout--measure{max-width:860px}
.wh-costs__text{margin-top:28px}
.wh-nobr{white-space:nowrap}
/* == news, shows and state lists (2026-11-15) == */
/* State list (.wh-stl, design/scripts/build_state_tables.py; PAGE-RECIPE.md "State list"): a find field, chips by
   answer or topic and a first-letter index on one sheet, then the states as compact cards, three across, two on a
   tablet, one on a phone. Until a choice is made only the first cards show (is-clipped, filter.js); the button under
   them shows all. Each card: the state, its word tags, the answer, the rest folded. */
.wh-stl{margin-top:8px}
.wh-stl__bar{display:grid;grid-template-columns:minmax(240px,340px) minmax(0,1fr);gap:16px 28px;align-items:start;padding:20px 22px 12px;border:1px solid var(--rule);border-radius:var(--r);background:var(--sheet)}
.wh-stl__az,.wh-stl__bar>.wh-filter__n{grid-column:1/-1}
.wh-stl__bar>.wh-filter__n{margin-top:-10px}
.wh-stl__opts .wh-topics__opts,.wh-stl__az .wh-topics__opts{gap:6px}
.wh-stl__n{margin-left:8px;font:600 14px/1 var(--f-semi);color:var(--ink-soft)}
.wh-topics label:has(:checked) .wh-stl__n{color:inherit}
.wh-stl__az label{justify-content:center;min-width:44px;padding:0 10px;font:600 16px/1 var(--f-semi)}
.wh-stl__cap{margin-top:20px;max-width:80ch}
.wh-stl__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;gap:16px;margin-top:12px;padding:0;list-style:none}
.wh-stl__grid.is-clipped>li:nth-child(n+10){display:none}
.wh-stc{display:flex;flex-direction:column;align-items:flex-start;min-width:0;padding:18px 20px 6px;border:1px solid var(--rule);border-radius:var(--r);background:var(--paper);scroll-margin-top:140px}
.wh-part--paper .wh-stc{background:var(--sheet)}
.wh-stc[hidden]{display:none}
.wh-stc:target{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.wh-stc__top{display:flex;flex-wrap:wrap;align-self:stretch;align-items:center;justify-content:space-between;gap:8px 12px}
.wh-stc__h{margin:0;font:700 26px/1.05 var(--f-cond);text-transform:uppercase}
.wh-stc__tags{display:flex;flex-wrap:wrap;gap:6px}
.wh-stc__say{margin-top:10px;font-size:16px;line-height:1.5}
.wh-stc__more{align-self:stretch;margin-top:auto;padding-top:14px}
.wh-stc__more>summary{display:flex;align-items:center;gap:6px;min-height:44px;border-top:1px solid var(--rule);color:var(--cobalt);font:600 15px/1.2 var(--f-body);cursor:pointer;list-style:none}
.wh-stc__more>summary::-webkit-details-marker{display:none}
.wh-stc__more>summary:hover{color:var(--cobalt-hover)}
.wh-stc__more>summary svg{flex:none;transition:transform .2s cubic-bezier(.2,.8,.2,1)}
.wh-stc__more[open]>summary svg{transform:rotate(90deg)}
.wh-stc__more dl{margin:2px 0 14px;font-size:15px;line-height:1.5}
.wh-stc__more dl>div+div{margin-top:10px}
.wh-stc__more dt{font:600 14px/20px var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft)}
.wh-stc__more dd{margin:2px 0 0;overflow-wrap:anywhere}
.wh-stl__foot{margin-top:20px;text-align:center}
.wh-stl__foot [data-wh-more][hidden]{display:none}
.wh-stl__bar>.wh-stl__clear{grid-column:1/-1;justify-self:start;margin:-4px 0 8px}
.wh-stl__bar>.wh-stl__clear[hidden]{display:none}
@media (max-width:967.98px){
	.wh-stl__bar{grid-template-columns:minmax(0,1fr)}
	.wh-stl__grid{grid-template-columns:repeat(2,minmax(0,1fr))}
	.wh-stl__grid.is-clipped>li:nth-child(n+7){display:none}
}
@media (max-width:759.98px){
	.wh-stl__bar{padding:16px 16px 8px}
	.wh-stl__opts .wh-topics__opts{flex-wrap:nowrap;margin-inline:-16px;padding:2px 16px 6px;overflow-x:auto;scrollbar-width:none;mask-image:linear-gradient(to right,#000 calc(100% - 40px),transparent)}
	.wh-stl__opts label{flex:none}
	.wh-stl__az .wh-topics__opts{display:grid;grid-template-columns:repeat(auto-fill,minmax(44px,1fr))}
	.wh-stl__az label{padding:0}
	.wh-stl__grid{grid-template-columns:minmax(0,1fr);gap:12px}
	.wh-stl__grid.is-clipped>li:nth-child(n+5){display:none}
	.wh-stc{padding:16px 16px 4px}
}
/* News log (.wh-nwl / .wh-nwc, design/scripts/build_news.py; PAGE-RECIPE.md "News log"): the State list's bar (word
   field, topic chips with counts), then one photo card per entry, three across, the newest one wide beside its photo;
   two across on a tablet, one on a phone. Until a choice is made only the first cards show (is-clipped, filter.js).
   Each card: date and topic, the entry's short label, its status tag, what changed, who it affects, the source, and
   the page on this site that covers it. */
.wh-newslog{margin-top:28px}
.wh-fact--wrap dd{white-space:normal}
.wh-nwl{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-top:12px;padding:0;list-style:none}
.wh-nwl.is-clipped>li:nth-child(n+8){display:none}
.wh-nwc{display:flex;flex-direction:column;min-width:0;border:1px solid var(--rule);border-radius:var(--r);background:var(--paper);overflow:hidden;scroll-margin-top:140px}
.wh-part--paper .wh-nwc{background:var(--sheet)}
.wh-nwc[hidden]{display:none}
.wh-nwc__img{position:relative;flex:none;aspect-ratio:3/2;border-bottom:1px solid var(--rule);background:var(--band)}
.wh-nwc__img img{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover;object-position:var(--focus,50% 50%)}
.wh-nwc__img.wh-pcard__img--cut img{inset:12% 8% 14%;width:84%;height:74%;object-fit:contain;filter:drop-shadow(0 8px 8px rgb(24 30 24 / .18))}
.wh-nwc__body{display:flex;flex-direction:column;align-items:flex-start;gap:10px;flex:1;padding:18px 20px 20px}
.wh-nwc__meta{display:flex;flex-wrap:wrap;gap:2px 14px;font:600 14px/1.3 var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft)}
.wh-nwc__meta time{color:var(--ink)}
.wh-nwc__h{margin:0;font:700 26px/1.05 var(--f-cond);text-transform:uppercase;text-wrap:balance}
.wh-nwc__tags{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}
.wh-nwc__note{font:600 14px/1.3 var(--f-semi);color:var(--ink-soft)}
.wh-nwc__note a{display:inline-block;padding-block:3px}
.wh-nwc__what{font-size:16px;line-height:1.55}
.wh-nwc__dl{align-self:stretch;margin:2px 0 0;padding-top:12px;border-top:1px solid var(--rule);font-size:15px;line-height:1.45}
.wh-nwc__dl>div+div{margin-top:8px}
.wh-nwc__dl dt,.wh-nwc__go span{font:600 14px/20px var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft)}
.wh-nwc__dl dd{margin:2px 0 0;overflow-wrap:anywhere}
.wh-nwc__dl div+div dd{color:var(--ink-soft)}
.wh-nwc__go{display:flex;flex-direction:column;margin-top:auto;padding-top:4px}
.wh-nwc__go a{display:inline-flex;align-items:center;gap:6px;min-height:44px;color:var(--cobalt);font-weight:600;font-size:16px;text-decoration:none}
.wh-nwc__go a:hover{color:var(--cobalt-hover);text-decoration:underline}
.wh-nwc__go svg{flex:none;transition:transform .2s cubic-bezier(.2,.8,.2,1)}
.wh-nwc__go a:hover svg{transform:translateX(3px)}
.wh-nwc--lead{grid-column:1/-1;flex-direction:row}
.wh-nwc--lead .wh-nwc__img{flex:0 0 55%;aspect-ratio:auto;min-height:380px;border-bottom:0;border-right:1px solid var(--rule)}
.wh-nwc--lead .wh-nwc__body{justify-content:center;padding:28px 32px}
.wh-nwc--lead .wh-nwc__h{font-size:40px}
.wh-nwc--lead .wh-nwc__what{font-size:18px}
.wh-nwc--lead .wh-nwc__go{margin-top:6px}
@media (prefers-reduced-motion:reduce){.wh-nwc__go svg,.wh-stc__more>summary svg{transition:none}.wh-nwc__go a:hover svg{transform:none}}
@media (max-width:967.98px){
	.wh-nwl{grid-template-columns:repeat(2,minmax(0,1fr))}
	.wh-nwl.is-clipped>li:nth-child(n+6){display:none}
	.wh-nwc--lead .wh-nwc__img{flex-basis:50%;min-height:320px}
	.wh-nwc--lead .wh-nwc__body{padding:22px 24px}
	.wh-nwc--lead .wh-nwc__h{font-size:32px}
	.wh-nwc--lead .wh-nwc__what{font-size:16px}
}
@media (max-width:759.98px){
	.wh-newslog{margin-top:20px}
	.wh-nwl{grid-template-columns:minmax(0,1fr);gap:12px}
	.wh-nwl.is-clipped>li:nth-child(n+5){display:none}
	.wh-nwc--lead{flex-direction:column}
	.wh-nwc--lead .wh-nwc__img{flex:none;aspect-ratio:3/2;min-height:0;border-right:0;border-bottom:1px solid var(--rule)}
	.wh-nwc__body,.wh-nwc--lead .wh-nwc__body{padding:16px 16px 18px}
	.wh-nwc__h,.wh-nwc--lead .wh-nwc__h{font-size:26px}
}
/* Drone light shows (/work/drone-light-shows/, design/scripts/build_drone_light_shows.py; PAGE-RECIPE.md "Show
   company prices"): the show companies' starting prices as price cards (.wh-shco, five across, three on a tablet,
   one on a phone), the prose as reply rows, photo cards and safety tiles beside a photo. .wh-pcard--still is a photo
   card that is not a link: it does not lift on hover. */
.wh-dsp__h3{margin-top:48px}
.wh-dsp__note{max-width:68ch;margin-top:20px}
.wh-dsp__lede{max-width:70ch;margin-top:28px;font-size:var(--read);line-height:var(--read-lh)}
.wh-dsp__cards{margin-top:20px}
.wh-dsp__col{min-width:0}
.wh-dsp__col>*+*{margin-top:20px}
.wh-dsp__col>h3{margin-top:48px}
.wh-dsp__col>h3:first-child{margin-top:0}
.wh-dsp__col>h3+*{margin-top:16px}
.wh-dsp__col>p{max-width:70ch}
.wh-pcard .wh-dsp__where{margin-top:auto;padding-top:8px;font:600 14px/20px var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft)}
.wh-pcard--still:hover{border-color:var(--rule);box-shadow:none;transform:none}
.wh-part--paper .wh-pcard--still{background:var(--sheet)}
.wh-shco{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:16px;margin-top:16px;padding:0;list-style:none}
.wh-shco__c{display:flex;flex-direction:column;gap:10px;min-width:0;padding:18px 18px 16px;border:1px solid var(--rule);border-radius:var(--r);background:var(--paper)}
.wh-shco__who{margin:0;font:700 20px/1.1 var(--f-cond);text-transform:uppercase;text-wrap:balance}
.wh-shco__price{display:flex;flex-direction:column;gap:4px;padding:12px 0;border-block:1px solid var(--rule);font:700 36px/1 var(--f-cond);font-variant-numeric:tabular-nums;text-wrap:balance}
.wh-shco__price small{font:600 14px/20px var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft)}
.wh-shco__what{font-size:15px;line-height:1.5}
.wh-shco__src{margin-top:auto;padding-top:2px;font-size:14px;line-height:20px;color:var(--ink-soft)}
.wh-sft{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:0;list-style:none}
.wh-sft>li{display:grid;grid-template-columns:28px minmax(0,1fr);gap:4px 14px;align-content:start;padding:18px 20px;border:1px solid var(--rule);border-radius:var(--r);background:var(--paper)}
.wh-sft>li:first-child{grid-column:1/-1}
.wh-sft svg{grid-row:1/3;color:var(--ink-soft)}
.wh-sft h3{margin:0;font:700 22px/1.1 var(--f-cond);text-transform:uppercase}
.wh-sft p{max-width:68ch;font-size:16px;line-height:1.5}
.wh-dsp__list{display:grid;gap:6px;margin-top:10px;padding:0;list-style:none;font-size:16px;line-height:1.45}
.wh-dsp__list>li{padding-left:12px;border-left:2px solid var(--rule)}
@media (max-width:1179.98px){
	.wh-shco{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (max-width:759.98px){
	.wh-dsp__h3,.wh-dsp__col>h3{margin-top:36px}
	.wh-shco{grid-template-columns:minmax(0,1fr);gap:12px}
	.wh-shco__price{flex-direction:row;flex-wrap:wrap;align-items:baseline;gap:4px 10px;font-size:32px}
	.wh-sft{grid-template-columns:minmax(0,1fr)}
	.wh-sft>li{padding:16px}
}

/* == quiz tools (2026-11-15) == */
/* Weather: the recorded sample's label line, the tiles of how an hour is judged (go and plain icons). */
.wh-fc__sample{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-bottom:14px;font-size:16px;line-height:1.4;color:var(--ink-soft)}
.wh-zone--info .wh-zone__ic{background:var(--band);color:var(--ink-soft)}
.wh-zones--wx .wh-zone h3,.wh-zones--dp .wh-zone h3,.wh-zones--dp4 .wh-zone h3{font-size:24px}
/* Weather: the G-scale table fits a phone (no sideways scroll). */
@media (max-width:759px){
	.wh-tbl--kp th,.wh-tbl--kp td{padding:10px 8px}
	.wh-tbl--kp thead th{white-space:normal}
	.wh-tbl--kp tbody th{width:auto}
}
/* Picker (/tools/drone-picker/): the questions as choice cards (a real radio under each card), the switch, and the
   answer as photo cards with the studio cutouts; the .wh-pk base it shares with other tools is left as it is. */
.wh-qc__form{grid-template-columns:repeat(2,minmax(0,1fr));gap:32px 40px}
.wh-qc__q{grid-column:1/-1;display:flex;flex-direction:column;min-width:0;margin:0;padding:0;border:0}
.wh-qc__q--half{grid-column:auto}
.wh-qc__legend{padding:0;font:700 26px/1.1 var(--f-cond);text-wrap:balance}
.wh-qc__n{color:var(--ink-soft)}
.wh-qc__q>.wh-pk__only{margin:6px 0 0}
.wh-qc__opts{--n:3;display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));gap:12px;margin-top:14px}
.wh-qc__opts--2{--n:2}
.wh-qc__opts--4{--n:4}
.wh-qc__q--half>.wh-qc__opts{margin-top:auto;padding-top:14px}
.wh-qc__opt{position:relative;display:flex;align-items:center;gap:14px;min-height:76px;padding:12px 50px 12px 14px;border:1px solid var(--soft-line);border-radius:10px;background:var(--control);color:var(--ink);font:600 17px/1.3 var(--f-body);cursor:pointer;transition:border-color .15s,background-color .15s,box-shadow .15s}
.wh-qc__opt input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.wh-qc__opt:hover{border-color:var(--ink-line);box-shadow:var(--shadow)}
.wh-qc__opt:has(input:focus-visible){outline:3px solid var(--cobalt);outline-offset:2px}
.wh-qc__ic{flex:none;display:grid;place-items:center;width:52px;height:52px;border-radius:50%;background:var(--band);color:var(--ink);transition:background-color .15s,color .15s}
.wh-qc__lab{min-width:0}
.wh-qc__tick{position:absolute;top:50%;right:14px;width:24px;height:24px;margin-top:-12px;padding:3px;border:1.5px solid var(--soft-line);border-radius:50%;background:var(--control);color:transparent}
.wh-qc__opt--photo{flex-direction:column;align-items:stretch;gap:0;padding:0;overflow:hidden}
.wh-qc__ph{display:block;aspect-ratio:3/2;background:var(--band)}
.wh-qc__ph img{display:block;width:100%;height:100%;object-fit:cover}
.wh-qc__opt--photo .wh-qc__lab{flex:1;display:flex;align-items:center;padding:12px 14px 14px}
.wh-qc__opt--photo .wh-qc__tick{top:12px;margin-top:0;border-color:var(--paper);box-shadow:0 1px 3px rgb(16 20 18 / .35)}
.wh-qc__opt:has(input:checked){border-color:var(--solid);background:var(--solid);color:var(--on-solid);box-shadow:none}
.wh-qc__opt:has(input:checked) .wh-qc__ic{background:var(--on-solid);color:var(--solid)}
.wh-qc__opt:has(input:checked) .wh-qc__tick{border-color:var(--on-solid);background:var(--on-solid);color:var(--solid)}
.wh-qc__q:disabled .wh-qc__legend{color:var(--ink-soft)}
.wh-qc__q:disabled .wh-qc__opt{border-style:dashed;background:var(--control);color:var(--ink-soft);box-shadow:none;cursor:default}
.wh-qc__q:disabled .wh-qc__opt input{cursor:default}
.wh-qc__q:disabled .wh-qc__opt .wh-qc__ic{background:var(--band);color:var(--ink-soft)}
.wh-qc__q:disabled .wh-qc__opt .wh-qc__tick{border-color:var(--soft-line);background:var(--control);color:transparent}
.wh-qc__q:disabled .wh-qc__opt:has(input:checked) .wh-qc__tick{color:var(--ink-soft)}
.wh-qc__switch{grid-column:1/-1;justify-self:start;position:relative;display:inline-flex;align-items:center;gap:12px;min-height:48px;font-weight:600;font-size:17px;line-height:1.3;cursor:pointer}
.wh-qc__switch input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.wh-qc__track{position:relative;flex:none;width:52px;height:30px;border-radius:15px;background:var(--leader);transition:background-color .15s}
.wh-qc__track::after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#FFFFFF;box-shadow:0 1px 2px rgb(0 0 0 / .3);transition:transform .15s}
.wh-qc__switch input:checked+.wh-qc__track{background:var(--go)}
.wh-qc__switch input:checked+.wh-qc__track::after{transform:translateX(22px)}
.wh-qc__switch input:focus-visible+.wh-qc__track{outline:3px solid var(--cobalt);outline-offset:2px}
.wh-qc__form~.wh-pk__status{padding-top:28px;border-top:2px solid var(--ink-line)}
/* The answer: the list before any answer, the picks, and the small cards of Also fits and Left out. */
.wh-dp__cap{max-width:80ch;font-size:16px;line-height:1.5;color:var(--ink-soft)}
.wh-dp__models,.wh-dp__picks{--cols:3;display:grid;grid-template-columns:repeat(var(--cols),minmax(0,1fr));gap:20px;padding:0;list-style:none}
.wh-dp__h3{font:700 28px/1.1 var(--f-cond)}
.wh-pk__out>.wh-dp__cap+.wh-dp__models{margin-top:16px}
.wh-pk__out>.wh-h3+.wh-dp__cap{margin-top:8px}
.wh-dp__model .wh-pcard__img,.wh-dp__pick .wh-pcard__img{--ar:16/10}
.wh-dp__model .wh-pcard__body,.wh-dp__pick .wh-pcard__body{gap:12px;padding:16px 18px 18px}
.wh-dp__model:not(:has(a)):hover,.wh-dp__pick:not(:has(a)):hover{border-color:var(--rule);box-shadow:none;transform:none}
.wh-dp__name{margin:0;font:700 26px/1.05 var(--f-cond);text-transform:uppercase;text-wrap:balance}
.wh-dp__name a{color:var(--ink);text-decoration:none}
.wh-dp__name a::after{content:"";position:absolute;inset:0;border-radius:var(--r)}
.wh-dp__name a:focus-visible{outline:0}
.wh-pcard:has(.wh-dp__name a:focus-visible){outline:3px solid var(--cobalt);outline-offset:2px}
.wh-dp__pick .wh-dp__rank{position:absolute;top:12px;left:12px;display:inline-flex;align-items:center;height:28px;padding:0 10px;border-radius:6px;background:var(--fixed-ink);color:#FFFFFF;font:700 15px/1 var(--f-semi);letter-spacing:.04em;text-transform:uppercase}
.wh-dp__stats{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr) minmax(0,1fr);gap:10px 12px;padding:12px 0;border-block:1px solid var(--rule)}
.wh-dp__stats>div{display:flex;flex-direction:column;justify-content:space-between;gap:4px;min-width:0}
.wh-dp__stats dt{font:600 14px/1.2 var(--f-semi);letter-spacing:.02em;text-transform:uppercase;color:var(--ink-soft)}
.wh-dp__stats dd{font:700 22px/1.05 var(--f-cond);font-variant-numeric:tabular-nums}
.wh-dp__stats dd small{display:block;margin-top:2px;font:500 14px/1.2 var(--f-body);color:var(--ink-soft)}
.wh-dp__stats .wh-dp__ns{font:500 14px/1.3 var(--f-body);color:var(--ink-soft)}
.wh-dp__facts{display:grid;gap:8px;font-size:15px;line-height:1.4}
.wh-dp__facts dt{font:600 14px/1.2 var(--f-semi);letter-spacing:.02em;text-transform:uppercase;color:var(--ink-soft)}
.wh-dp__facts dd{margin-top:2px;font-weight:500}
.wh-dp__pick p.wh-pk__sub{font-size:14px;line-height:20px}
.wh-dp__pick .wh-pk__price{font-size:15px;line-height:1.45;color:var(--ink)}
.wh-dp__pick .wh-pk__why{margin-top:-6px}
.wh-dp__know{position:relative;z-index:1;margin-top:auto;border-top:1px solid var(--rule)}
.wh-dp__know>summary{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:48px;font:600 19px/1.1 var(--f-cond);cursor:pointer}
.wh-dp__know>summary:hover{color:var(--cobalt)}
.wh-dp__know>summary svg{flex:none;transition:transform .2s}
.wh-dp__know[open]>summary svg{transform:rotate(180deg)}
.wh-dp__know .wh-pk__notes{padding-bottom:4px}
.wh-dp__h{margin-bottom:0;font:700 24px/1.1 var(--f-cond);text-transform:uppercase;text-wrap:balance}
.wh-pk__out>.wh-dp__h+.wh-dp__minis,.wh-dp__rest .wh-dp__h+.wh-dp__minis{margin-top:12px}
.wh-dp__rest>div>.wh-dp__minis+.wh-dp__h{margin-top:28px}
.wh-dp__minis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:0;list-style:none}
.wh-dp__mini{position:relative;display:grid;grid-template-columns:112px minmax(0,1fr);gap:14px;align-items:start;padding:10px 14px 12px 10px;border:1px solid var(--rule);border-radius:10px;background:var(--paper)}
.wh-dp__mini .wh-pcard__img{--ar:3/2;border-radius:6px;overflow:hidden}
.wh-dp__mini--out .wh-pcard__img img{filter:grayscale(1);opacity:.7}
.wh-dp__mname{font:700 20px/1.1 var(--f-cond)}
.wh-dp__mname a{color:var(--ink);text-decoration-color:var(--leader)}
.wh-dp__mname a::after{content:"";position:absolute;inset:0;border-radius:10px}
.wh-dp__mini:has(.wh-dp__mname a):hover{border-color:var(--ink-line)}
.wh-dp__mname a:focus-visible{outline:0}
.wh-dp__mini:has(.wh-dp__mname a:focus-visible){outline:3px solid var(--cobalt);outline-offset:2px}
.wh-dp__rest>summary{padding-block:10px;line-height:1.15}
.wh-dp__mname a:hover{color:var(--cobalt)}
.wh-dp__no{color:var(--ink-soft)}
.wh-dp__line{margin-top:6px;font-size:14px;line-height:1.4;color:var(--ink-soft)}
.wh-dp__line .wh-pk__sub{display:block;font-size:14px;line-height:18px}
.wh-dp__line--price{color:var(--ink)}
.wh-dp__ready{padding-top:32px;border-top:2px solid var(--ink-line)}
.wh-dp__asked{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.wh-dp__asked .wh-pk__sub{margin-right:4px}
.wh-dp__chip{display:inline-flex;align-items:center;min-height:32px;padding:4px 12px;border-radius:16px;background:var(--band);font-weight:600;font-size:15px;line-height:1.3}
/* The text parts around the tool: lead lines, the Remote ID tiles, the tables. */
.wh-dp__answers{margin-top:32px}
.wh-dp__lead{max-width:70ch;font-size:var(--read);line-height:var(--read-lh);color:var(--ink-soft)}
.wh-part__say+.wh-dp__lead{margin-top:20px}
.wh-dp__lead+.wh-zones,.wh-dp__mid+.wh-zones{margin-top:20px}
.wh-split+.wh-zones--dp{margin-top:36px}
.wh-zones+.wh-split{margin-top:40px}
.wh-dp__mid{margin-top:56px}
.wh-dp__mid>.wh-dp__h3{margin-top:0}
.wh-dp__exc:empty{display:none}
.wh-dp__table{margin-top:32px}
.wh-tbl--dp caption{font:500 16px/1.45 var(--f-body);text-transform:none;color:var(--ink-soft)}
.wh-dp__after{margin-top:24px}
.wh-zones--dp4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (prefers-reduced-motion:reduce){.wh-qc__opt,.wh-qc__ic,.wh-qc__track,.wh-qc__track::after,.wh-dp__know>summary svg{transition:none}}
@media (max-width:1199.98px){
	.wh-dp__models{--cols:2}
	.wh-dp__minis{grid-template-columns:repeat(2,minmax(0,1fr))}
	.wh-zones--dp4{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:967.98px){
	.wh-qc__opts--4{--n:2}
	.wh-dp__picks{--cols:1}
	.wh-dp__pick{flex-direction:row}
	.wh-dp__pick .wh-pcard__img{flex:0 0 40%;aspect-ratio:auto}
}
@media (max-width:759.98px){
	.wh-qc__form{grid-template-columns:minmax(0,1fr);gap:28px}
	.wh-qc__q--half{grid-column:1/-1}
	.wh-qc__q--half>.wh-qc__opts{margin-top:14px;padding-top:0}
	.wh-qc__legend{font-size:24px}
	.wh-qc__opts{--n:1;gap:10px}
	.wh-qc__opts--4{--n:2}
	.wh-qc__opt{min-height:64px;padding:10px 46px 10px 12px;font-size:16px}
	.wh-qc__ic{width:44px;height:44px}
	.wh-qc__ic svg{width:28px;height:28px}
	.wh-qc__tick{right:12px}
	.wh-qc__opt--photo{padding:0}
	.wh-qc__opt--photo .wh-qc__lab{padding:10px 12px 12px;font-size:15px}
	.wh-qc__opt--photo .wh-qc__tick{top:8px;right:8px}
	.wh-qc__switch{font-size:16px}
	.wh-qc__form~.wh-pk__status{padding-top:20px}
	.wh-dp__models{--cols:1;gap:12px}
	.wh-dp__model{flex-direction:row}
	.wh-dp__model .wh-pcard__img{flex:0 0 36%;aspect-ratio:auto}
	.wh-dp__model .wh-pcard__body{gap:10px;padding:12px 14px 14px}
	.wh-dp__model .wh-dp__name{font-size:22px}
	.wh-dp__stats{grid-template-columns:minmax(0,1fr);gap:6px;padding:8px 0}
	.wh-dp__stats>div{flex-direction:row;align-items:baseline;justify-content:space-between;gap:10px}
	.wh-dp__stats dd{font-size:19px;text-align:right}
	.wh-dp__stats dd small{display:inline;margin-left:4px;white-space:nowrap}
	.wh-dp__facts{gap:6px;font-size:14px}
	.wh-dp__facts dt{display:inline;margin-right:6px}
	.wh-dp__facts dd{display:inline;margin:0}
	.wh-dp__pick{flex-direction:column}
	.wh-dp__pick .wh-pcard__img{flex:none;aspect-ratio:16/9}
	.wh-dp__minis{grid-template-columns:minmax(0,1fr)}
	.wh-dp__mini{grid-template-columns:96px minmax(0,1fr)}
	.wh-dp__ready{padding-top:24px}
	.wh-zones--dp4{grid-template-columns:minmax(0,1fr)}
}
/* Registration (/tools/drone-registration/): the questions as choice cards, the models as cards with their studio
   cutouts; the answer as a card in its verdict's colour with the steps rail; the tables as wh-tbl tables; the text
   parts in splits, answer rows and tiles. The wh-rg rules above (the tool's own) are overridden here, not edited. */
.wh-qc__opts--cut{--n:7}
.wh-qc__opt--cut{flex-direction:column;align-items:stretch;gap:0;min-height:0;padding:0;overflow:hidden}
.wh-qc__cut{display:block;aspect-ratio:3/2;padding:6px 8px 0;background:#F6F8F4}
.wh-qc__cut img{display:block;width:100%;height:100%;object-fit:contain}
.wh-qc__opt--cut .wh-qc__lab{flex:1;display:flex;align-items:center;padding:8px 10px 10px;font-size:15px;line-height:1.2}
.wh-qc__opt--cut .wh-qc__tick{top:6px;right:6px;margin-top:0}
.wh-qc__opt:has(input:disabled){border-style:dashed;background:var(--control);color:var(--ink-soft);box-shadow:none;cursor:default}
.wh-qc__opt:has(input:disabled) .wh-qc__ic{background:var(--band);color:var(--ink-soft)}
.wh-qc__opt input:disabled{cursor:default}
.wh-rg__or{margin-top:22px;font:600 14px/20px var(--f-semi);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft)}
.wh-rg__other{margin-top:10px}
.wh-rg__weigh{display:grid;grid-template-columns:minmax(0,1fr) 92px;gap:8px 10px;align-items:end;padding:12px 14px 14px;border:1px solid var(--soft-line);border-radius:10px;background:var(--control)}
.wh-rg__weigh .wh-label{font-size:14px;line-height:1.3}
.wh-rg__weigh:focus-within{border-color:var(--ink-line)}
/* The answer card: a coloured head (no registration green, register yellow, no verdict of ours grey), the chips, the
   steps rail beside the facts, the later steps folded. */
.wh-rg__ans>*+*{margin-top:16px}
.wh-rg__track{padding:0 20px 20px;border:1px solid var(--rule);border-radius:var(--r);background:var(--paper);overflow:hidden}
.wh-rg__track>*+*{margin-top:16px}
.wh-rg__head{display:grid;grid-template-columns:52px minmax(0,1fr);gap:14px;align-items:start;margin:0 -20px;padding:16px 20px 18px;background:var(--band)}
.wh-rg__track--go .wh-rg__head{background:var(--go-pale)}
.wh-rg__track--reg .wh-rg__head{background:var(--caution-pale)}
.wh-rg__vic{display:grid;place-items:center;width:52px;height:52px;border-radius:50%;background:var(--paper);color:var(--ink-soft)}
.wh-rg__track--go .wh-rg__vic{color:var(--go-ink)}
.wh-rg__track--reg .wh-rg__vic{color:var(--caution-ink)}
.wh-rg__verdict{margin:0}
.wh-rg__head .wh-rg__verdict{margin-top:2px;text-wrap:balance}
.wh-rg__chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;padding:0;list-style:none}
.wh-rg__chips .wh-chip{background:var(--paper)}
.wh-rg__rail>.wh-pk__sub{margin-bottom:10px}
.wh-rg__grid{display:grid;gap:20px}
.wh-rg__grid .wh-rg__facts>div:first-child{border-top:0;padding-top:0}
.wh-rg__later{margin-top:12px}
.wh-rg__later>summary{min-height:44px}
.wh-rg__later .wh-fold__body{padding:8px 0 0;border:0;background:none}
.wh-rg__track .wh-rg__quote{font-style:italic;quotes:"“" "”"}
.wh-rg__track .wh-rg__quote>p::before{content:open-quote}
.wh-rg__track .wh-rg__quote>p::after{content:close-quote}
.wh-rg__track dd,.wh-rg__track p{max-width:75ch}
.wh-rg__branch{background:var(--band)}
/* The steps rail, compact: in the answer (h5 titles) and on the page (h4 titles under the h3 of each dashboard). */
.wh-steps--rg{gap:12px;margin-top:0}
.wh-steps--rg>li{grid-template-columns:56px minmax(0,1fr);box-shadow:none}
.wh-steps--rg>li:not(:last-child)::after{left:27px;height:13px}
.wh-steps--rg .wh-step__mark{padding:12px 0}
.wh-steps--rg .wh-step__mark::before{font-size:22px}
.wh-steps--rg .wh-step__body{padding:12px 16px 14px}
.wh-steps--rg h4,.wh-steps--rg h5{margin:0;font:700 21px/1.1 var(--f-cond);text-transform:uppercase;text-wrap:balance}
.wh-steps--rg p{margin-top:4px;font-size:16px;line-height:1.45}
.wh-steps--rg .wh-step__src{font-size:14px;line-height:1.4}
.wh-rg__rails{margin-top:48px}
.wh-rg__rails .wh-steps--rg>li{grid-template-columns:72px minmax(0,1fr)}
.wh-rg__rails .wh-steps--rg>li:not(:last-child)::after{left:35px}
.wh-rg__rails .wh-steps--rg .wh-step__mark::before{font-size:28px}
.wh-rg__rails .wh-steps--rg h4{font-size:23px}
.wh-rg__railh{font:700 26px/1.1 var(--f-cond);text-transform:uppercase;text-wrap:balance}
.wh-rg__railh+.wh-steps,.wh-rg__railh+.wh-tblwrap{margin-top:14px}
.wh-rg__rails>.wh-rg__cols{margin-top:40px}
.wh-rg__rails .wh-rg__cols{gap:40px 32px}
.wh-rg__rails .wh-rg__cols>section>*+*{margin-top:14px}
/* The tables: the two registrations side by side and the models, each model with its cutout. */
.wh-rg__start .wh-tbl caption,.wh-rg__mwrap .wh-tbl caption,.wh-rg__rules caption{font:500 16px/1.45 var(--f-body);text-transform:none;color:var(--ink-soft)}
.wh-rg__pair tbody th{width:20%;color:var(--ink)}
.wh-rg__colh{display:inline-flex;align-items:center;gap:8px}
.wh-rg__colh svg{width:22px;height:22px}
.wh-rg__src{display:block;margin-top:4px;font-size:14px;line-height:1.4;color:var(--ink-soft)}
.wh-rg__models tbody th{width:26%;color:var(--ink);font:700 19px/1.15 var(--f-cond)}
.wh-rg__models tbody th>span{vertical-align:middle}
.wh-rg__thumb{display:inline-block;width:72px;height:48px;margin-right:12px;border-radius:6px;background:#F6F8F4}
.wh-rg__thumb img{display:block;width:100%;height:100%;object-fit:contain}
.wh-rg__v{display:inline-flex;align-items:baseline;gap:8px}
.wh-rg__v::before{content:"";flex:none;width:10px;height:10px;border-radius:50%;background:var(--leader);transform:translateY(-1px)}
.wh-rg__v--go::before{background:var(--go)}
.wh-rg__v--reg::before{background:var(--caution)}
.wh-rg__rules tbody th{width:72px}
.wh-rg__rulesfold{margin-top:40px}
.wh-rg__rulesfold>div>.wh-rg__railh:not(:first-child){margin-top:36px}
/* The text parts: answer rows with the label above the answer, the tiles, the callouts and the ready answers. */
.wh-reply--stack>li{grid-template-columns:minmax(0,1fr) auto;gap:6px 16px;padding:18px 0}
.wh-reply--stack .wh-reply__k{font-size:20px}
.wh-reply--stack .wh-reply__v{grid-column:1/-1;grid-row:2}
.wh-doc__main>.wh-reply{max-width:none;padding-left:0}
.wh-doc__main>.wh-reply>li+li{margin-top:0}
.wh-zones--rg .wh-zone h3{font-size:24px}
.wh-part__say+.wh-zones--rg{margin-top:32px}
.wh-rg__have ul{display:grid;gap:8px;margin-top:12px;padding:0;list-style:none}
.wh-rg__have li{display:flex;gap:10px;align-items:baseline;font-size:17px;line-height:1.4}
.wh-rg__have li svg{flex:none;color:var(--go-ink);transform:translateY(2px)}
.wh-rg__lead{max-width:70ch;font-size:var(--read);line-height:var(--read-lh);color:var(--ink-soft)}
.wh-part__say+.wh-rg__lead{margin-top:20px}
.wh-rg__rulesfold+.wh-rg__lead{margin-top:24px}
.wh-rg__readys{display:grid;gap:24px;margin-top:28px}
.wh-rg__readys>.wh-pk__ready{margin-top:0;padding:24px;border:1px solid var(--rule);border-radius:12px;background:var(--paper)}
.wh-rg__related{margin-top:32px}
.wh-rg__related .wh-pcard__img{--ar:16/10}
.wh-rg__related .wh-pcard h3{font-size:24px}
@media (min-width:1024px){
	.wh-rg__tracks:not(.wh-rg__tracks--two) .wh-rg__grid{grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:32px}
	.wh-rg__tracks:not(.wh-rg__tracks--two) .wh-rg__grid .wh-rg__facts>div{grid-template-columns:minmax(0,1fr);row-gap:2px}
}
@media (max-width:1199.98px){
	.wh-qc__opts--cut{--n:5}
}
@media (max-width:967.98px){
	.wh-qc__opts--cut{--n:4}
	.wh-rg__weigh{grid-column:1/-1}
	.wh-rg__rails .wh-rg__cols{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:759.98px){
	.wh-qc__opts--cut{--n:3;gap:8px}
	.wh-qc__opt--cut{padding:0}
	.wh-qc__opt--cut .wh-qc__lab{padding:6px 8px 8px;font-size:14px}
	.wh-qc__opt--cut .wh-qc__tick{top:4px;right:4px;width:20px;height:20px;padding:2px}
	.wh-rg__track{padding:0 12px 14px}
	.wh-rg__head{grid-template-columns:44px minmax(0,1fr);gap:12px;margin:0 -12px;padding:14px 12px}
	.wh-rg__vic{width:44px;height:44px}
	.wh-steps--rg>li,.wh-rg__rails .wh-steps--rg>li{grid-template-columns:40px minmax(0,1fr)}
	.wh-steps--rg>li:not(:last-child)::after,.wh-rg__rails .wh-steps--rg>li:not(:last-child)::after{left:19px}
	.wh-steps--rg .wh-step__mark::before,.wh-rg__rails .wh-steps--rg .wh-step__mark::before{font-size:18px}
	.wh-steps--rg .wh-step__body{padding:10px 12px 12px}
	.wh-steps--rg h4,.wh-steps--rg h5,.wh-rg__rails .wh-steps--rg h4{font-size:19px}
	.wh-rg__railh{font-size:22px}
	.wh-rg__start .wh-tbl caption,.wh-rg__mwrap .wh-tbl caption{display:block}
	.wh-rg__pair tbody th,.wh-rg__models tbody th{width:auto}
	.wh-rg__thumb{width:84px;height:56px}
	.wh-rg__readys>.wh-pk__ready{padding:16px}
	.wh-reply--stack .wh-reply__k{font-size:19px}
}
