
:root{--bg:#F5F8FA;--card:#fff;--ink:#0F2A33;--mute:#4C6670;--line:#D5E0E6;--accent:#17678A;--sun:#F2B84B;--on-accent:#fff;
--head:"Bricolage Grotesque","Trebuchet MS",sans-serif;--body:"Figtree","Segoe UI",Arial,sans-serif;
box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]){--bg:#0A1B22;--card:#10262E;--ink:#E8F0F3;--mute:#9BB2BB;--line:#223941;--accent:#6CC0E0;--on-accent:#0A1B22}}
:root[data-theme="dark"]{--bg:#0A1B22;--card:#10262E;--ink:#E8F0F3;--mute:#9BB2BB;--line:#223941;--accent:#6CC0E0;--on-accent:#0A1B22}
html{scroll-behavior:smooth;scroll-padding-top:calc(4.5rem + env(safe-area-inset-top,0px))}
*,*::before,*::after{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:400 1.0625rem/1.65 var(--body)}
img{max-width:100%;display:block}
a{color:var(--accent)}
a:focus-visible,summary:focus-visible{outline:3px solid var(--sun);outline-offset:3px;border-radius:4px}
h1,h2,h3{font-family:var(--head);line-height:1.08;margin:0;letter-spacing:-.02em}
h2{font-size:clamp(2rem,5vw,3.2rem);font-weight:800}
p{margin:0 0 1.1em;max-width:62ch}
.wrap{width:min(1080px,100% - 2.5rem);margin-inline:auto}
section{padding:clamp(3rem,7vw,5rem) 0}
nav{position:sticky;top:env(safe-area-inset-top,0px);z-index:5;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
nav .wrap{display:flex;align-items:center;justify-content:space-between;gap:1rem;height:3.5rem}
.logo{display:block;flex:none}.logo img{height:1.35rem;width:auto}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) .logo img{filter:invert(1)}}
:root[data-theme="dark"] .logo img{filter:invert(1)}
.kbd{font:600 .8rem var(--body);color:var(--mute);background:transparent;border:1px solid var(--line);border-radius:.5rem;padding:.3rem .6rem;cursor:pointer}
.kbd:hover{color:var(--ink);border-color:var(--mute)}
.burger{display:none;width:2.6rem;height:2.6rem;border:0;background:transparent;color:var(--ink);cursor:pointer;align-items:center;justify-content:center;border-radius:.6rem}
.burger span,.burger span::before,.burger span::after{display:block;width:1.4rem;height:2px;background:currentColor;border-radius:2px;transition:transform .25s,opacity .2s}
.burger span{position:relative}.burger span::before,.burger span::after{content:"";position:absolute;left:0}
.burger span::before{top:-7px}.burger span::after{top:7px}
.burger[aria-expanded="true"] span{background:transparent}
.burger[aria-expanded="true"] span::before{top:0;transform:rotate(45deg)}
.burger[aria-expanded="true"] span::after{top:0;transform:rotate(-45deg)}
.burger:focus-visible,.kbd:focus-visible{outline:3px solid var(--sun);outline-offset:2px}
dialog{border:1px solid var(--line);border-radius:1rem;background:var(--card);color:var(--ink);padding:0;width:min(520px,92vw);margin:12vh auto 0;overflow:hidden}
dialog::backdrop{background:rgba(6,20,28,.55)}
dialog input{width:100%;border:0;border-bottom:1px solid var(--line);background:transparent;color:inherit;font:inherit;padding:1rem 1.2rem;outline:none}
dialog ul{list-style:none;margin:0;padding:.4rem;max-height:50vh;overflow:auto;display:block;white-space:normal}
dialog li a,dialog li span{display:block;padding:.65rem .8rem;border-radius:.6rem;color:var(--ink);text-decoration:none;font-size:1rem}
dialog li a.on,dialog li a:hover{background:var(--accent);color:var(--on-accent)}
dialog .hint{margin:0;padding:.6rem 1.2rem;border-top:1px solid var(--line);font-size:.8rem;color:var(--mute);max-width:none}
nav ul{display:flex;gap:1.3rem;list-style:none;margin:0;padding:0;overflow-x:auto;white-space:nowrap}
nav a{text-decoration:none;color:var(--mute);font-weight:500;font-size:.95rem}
nav a:hover{color:var(--ink)}
.hero{position:relative;min-height:min(88vh,780px);display:flex;align-items:flex-end;color:#fff;padding:0;overflow:hidden;background:#12313f}
.hero img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:68% 40%}
.hero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(6,20,28,.15) 0%,rgba(6,20,28,.25) 45%,rgba(6,20,28,.85) 100%)}
.hero .wrap{position:relative;z-index:1;padding:0 0 clamp(2.5rem,6vw,4.5rem)}
.hero h1{font-size:clamp(3rem,10vw,7rem);font-weight:800;max-width:11ch}
.hero .tag{font:500 clamp(1.1rem,2.4vw,1.5rem)/1.4 var(--head);margin:1.2rem 0 1.8rem;max-width:34ch}
.btns{display:flex;flex-wrap:wrap;gap:.75rem}
.btn{display:inline-block;padding:.8rem 1.35rem;border-radius:999px;font-weight:600;text-decoration:none;border:2px solid currentColor;color:inherit}
.btn.main{background:var(--sun);border-color:var(--sun);color:#1a1405}
.btn:hover{transform:translateY(-2px)}
.btn{transition:transform .2s}
.status{display:inline-flex;gap:.6rem;align-items:center;background:rgba(255,255,255,.16);backdrop-filter:blur(6px);padding:.4rem .9rem;border-radius:999px;font-size:.95rem;margin-bottom:1.2rem}
.status i{width:.6rem;height:.6rem;border-radius:50%;background:#58e08a;box-shadow:0 0 0 0 #58e08a;animation:pulse 2.4s infinite}
@keyframes pulse{70%{box-shadow:0 0 0 .6rem transparent}100%{box-shadow:0 0 0 0 transparent}}
.rise{animation:rise .9s cubic-bezier(.2,.7,.2,1) both}
@keyframes rise{from{opacity:0;transform:translateY(24px)}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto}}
.about{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(2rem,6vw,5rem);align-items:start}
.about .pics{position:relative;padding-bottom:3rem}
.about .pics img{border-radius:1.2rem;aspect-ratio:1;object-fit:cover;width:100%}
.about .pics img+img{position:absolute;width:48%;right:-1rem;bottom:0;border:6px solid var(--bg);aspect-ratio:1/1}
.about h2{margin-bottom:1.5rem}
.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem;margin-top:2rem}
.facts div{border-left:3px solid var(--sun);padding-left:.9rem;font-size:.95rem;color:var(--mute)}
.facts strong{display:block;font:700 1.15rem var(--head);color:var(--ink)}
.alt{background:var(--card);border-block:1px solid var(--line)}
.lead{font-size:1.25rem;color:var(--mute)}
.areas{margin-top:2.5rem;border-top:1px solid var(--line)}
details{border-bottom:1px solid var(--line)}
summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1.35rem 0;font:700 clamp(1.3rem,3vw,1.8rem) var(--head);letter-spacing:-.01em}
summary::-webkit-details-marker{display:none}
summary::after{content:"+";font-size:1.8rem;color:var(--accent);transition:transform .25s}
details[open] summary::after{transform:rotate(45deg)}
details>div{padding:0 0 1.6rem;color:var(--mute)}
details>div p{max-width:70ch}
.cta{margin-top:3rem;padding:clamp(1.8rem,4vw,3rem);border-radius:1.4rem;background:var(--ink);color:var(--bg);display:flex;flex-wrap:wrap;gap:1.5rem;justify-content:space-between;align-items:center}
.cta h3{font-size:clamp(1.6rem,3.5vw,2.2rem)}
.cta p{margin:.5rem 0 0;opacity:.8}
.cta .btn.main{border-color:var(--sun)}
.note{font-size:.9rem;color:var(--mute);margin-top:1.5rem}
blockquote{margin:2.5rem 0;padding:0 0 0 1.5rem;border-left:4px solid var(--sun);font:500 clamp(1.3rem,3vw,1.9rem)/1.35 var(--head);max-width:30ch}
.tl{list-style:none;margin:2.5rem 0 0;padding:0;border-left:2px solid var(--line)}
.tl li{position:relative;padding:0 0 2rem 2rem}
.tl li::before{content:"";position:absolute;left:-.55rem;top:.45rem;width:1rem;height:1rem;border-radius:50%;background:var(--sun);border:3px solid var(--bg)}
.tl h3{font-size:1.4rem;margin-bottom:.3rem}
.tl p{color:var(--mute);margin:0}
.route{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-top:2.5rem;position:relative}
.stop{padding:1.5rem;border-radius:1.2rem;background:var(--card);border:1px solid var(--line)}
.stop small{color:var(--mute);font-weight:600}
.stop h3{font-size:1.5rem;margin-top:.4rem}
.stop.now{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}
.stop.now small{color:inherit;opacity:.85}
.links{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.8rem}
.links .btn{color:var(--ink)}
.gal{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:clamp(150px,19vw,230px);gap:1rem;margin-top:2.5rem}
.gal img{width:100%;height:100%;object-fit:cover;border-radius:1.1rem}
.gal .p{grid-row:span 2}
.gal .l{grid-column:span 2}
.gal .big{grid-row:span 2}
.leaf{display:inline-block;vertical-align:-3px;margin-left:.15rem}
@media(max-width:760px){.gal{grid-template-columns:1fr 1fr;grid-auto-rows:auto}.gal .p{grid-row:auto;aspect-ratio:3/4}.gal .l{grid-column:1/-1;aspect-ratio:16/10}.gal .big{grid-row:auto}}
.links .btn.main{color:#1a1405}
button.btn{font:inherit;font-weight:600;line-height:inherit;cursor:pointer}
.btn:disabled{opacity:.6;cursor:wait;transform:none}
.cform{max-width:760px;margin-top:2.2rem;padding:clamp(1.3rem,4vw,2.4rem);background:var(--bg);border:1px solid var(--line);border-radius:1.5rem;box-shadow:0 18px 40px -24px rgba(6,20,28,.35);position:relative}
.cform .row{display:grid;grid-template-columns:1fr 1fr;gap:1.1rem}
.cform .f{margin-bottom:1.1rem}
.cform .short{max-width:300px}
.cform label{display:block;margin-bottom:.4rem;font-size:.85rem;font-weight:600;letter-spacing:.02em;color:var(--mute)}
.cform input,.cform textarea{width:100%;padding:.85rem 1rem;font:inherit;color:var(--ink);background:var(--card);border:1.5px solid var(--line);border-radius:.85rem;transition:border-color .2s,box-shadow .2s}
.cform textarea{resize:vertical;min-height:9rem}
.cform ::placeholder{color:var(--mute);opacity:.65}
.cform input:hover,.cform textarea:hover{border-color:var(--mute)}
.cform input:focus,.cform textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 22%,transparent)}
.cform input:user-invalid,.cform textarea:user-invalid{border-color:#d1495b}
.cform .links{margin-top:.6rem;align-items:center}
#contact-status{margin:1rem 0 0;min-height:1.5em;font-weight:500;max-width:none}
#contact-status.ok{color:#1f8a4c}#contact-status.err{color:#d1495b}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) #contact-status.ok{color:#58e08a}:root:not([data-theme="light"]) #contact-status.err{color:#ff8a98}}
:root[data-theme="dark"] #contact-status.ok{color:#58e08a}:root[data-theme="dark"] #contact-status.err{color:#ff8a98}
@media(max-width:640px){.cform .row{grid-template-columns:1fr;gap:0}.cform .short{max-width:none}}
.mark{margin:.9rem 0 0}
footer{padding:2.5rem 0;border-top:1px solid var(--line);color:var(--mute);font-size:.9rem}
@media(max-width:760px){.about,.route{grid-template-columns:1fr}.about .pics{max-width:420px}}
@media(max-width:860px){.kbd{display:none}.burger{display:flex}nav ul{display:none;position:absolute;left:0;right:0;top:100%;flex-direction:column;gap:0;overflow:visible;background:var(--bg);border-bottom:1px solid var(--line);padding:.4rem 1.25rem 1rem}nav ul.open{display:flex}nav li a{display:block;padding:.9rem 0;font-size:1.1rem;border-bottom:1px solid var(--line)}}

/* ===================== BLOG ADDITIONS ===================== */
:root{--P:clamp(4rem,9vw,7rem);--sun-text:#9A6700;--src:#555;--quote:"Playfair Display",Georgia,"Times New Roman",serif}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]){--sun-text:#F2B84B;--src:#A9B6BC}}
:root[data-theme="dark"]{--sun-text:#F2B84B;--src:#A9B6BC}
[hidden]{display:none!important}
nav a.on{background:var(--sun);color:#1a1405;font-weight:600;padding:.2rem .8rem;border-radius:999px}
@media(max-width:860px){nav li a.on{padding:.9rem 1rem;border-radius:.6rem;border-bottom-color:transparent}}
.hero.half{min-height:min(44vh,390px)}
.hero.half img{object-position:50% 40%}
.hero.half h1{font-size:clamp(2rem,5.5vw,3.6rem);max-width:24ch;margin-bottom:.9rem}
.hero.half .tag{margin:.8rem 0 0}
.hero.half .status{margin-bottom:1rem}
.hero.half .status i{background:var(--c);box-shadow:0 0 0 2px rgba(255,255,255,.9);animation:none}
.meta{display:flex;align-items:center;gap:.5rem;margin:0;max-width:none;font-size:1rem}
.meta svg{width:1.05rem;height:1.05rem;fill:var(--sun)}
.c-public-safety{--c:#C0392B}.c-drones{--c:#17678A}.c-travel{--c:#1B7F5C}.c-kit{--c:#8A5A00}.c-food{--c:#B4540A}.c-technology{--c:#5B47C9}.c-life{--c:#B0356F}.c-general{--c:#4C6670}
.cat{display:inline-block;padding:.15rem .7rem;border-radius:999px;font:700 .75rem/1.6 var(--body);letter-spacing:.03em;color:#fff;background:var(--c,#4C6670)}
.intro{display:grid;grid-template-columns:auto 1fr;gap:2rem;align-items:center}
.intro img{width:150px;height:150px;border-radius:50%;object-fit:cover}
.intro .links{margin-top:1.2rem}
.tools{display:flex;flex-wrap:wrap;gap:1rem;margin:2rem 0 .8rem}
.tools input,.tools select{font:inherit;color:var(--ink);background:var(--card);border:1.5px solid var(--line);border-radius:.85rem;padding:.75rem 1rem;transition:border-color .2s,box-shadow .2s}
.tools input{flex:1 1 260px}.tools select{flex:0 1 230px}
.tools input:focus,.tools select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 22%,transparent)}
.count{color:var(--mute);font-size:.9rem;margin:0 0 1.2rem}
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.4rem}
.card{border:1px solid var(--line);border-radius:1.2rem;overflow:hidden;background:var(--card);transition:transform .2s,box-shadow .2s}
.card:hover{transform:translateY(-4px);box-shadow:0 18px 36px -22px rgba(6,20,28,.5)}
.card a{display:grid;grid-template-rows:1fr 1fr;height:360px;color:inherit;text-decoration:none}
.card img{width:100%;height:100%;min-height:0;object-fit:cover}
.card .body{padding:1rem 1.2rem;display:flex;flex-direction:column;gap:.55rem;min-height:0}
.card .cat{align-self:flex-start}
.card h3{font-size:1.25rem;line-height:1.2;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.card .when{margin-top:auto;display:flex;align-items:center;gap:.4rem;font-size:.88rem;color:var(--mute)}
.card .when svg{width:.95rem;height:.95rem;fill:var(--accent);flex:none}
.none{margin-top:1rem;color:var(--mute)}
.notify-card{margin:0}
.notify-card h3{font-size:1.4rem;margin-bottom:.5rem}
.notify-row{display:flex;flex-wrap:wrap;gap:.8rem}
.notify-row input{flex:1 1 260px;width:auto}
#notify-status{margin:1rem 0 0;min-height:1.5em;font-weight:500;max-width:none}
#notify-status.ok{color:#1f8a4c}#notify-status.err{color:#d1495b}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) #notify-status.ok{color:#58e08a}:root:not([data-theme="light"]) #notify-status.err{color:#ff8a98}}
:root[data-theme="dark"] #notify-status.ok{color:#58e08a}:root[data-theme="dark"] #notify-status.err{color:#ff8a98}
.post{padding:calc((clamp(2.5rem,6vw,4rem) + 1.6rem)/2 - .9rem) 0 calc(clamp(2.5rem,6vw,4rem)/2 + .6rem)}
/* Spacing = halfway between the first design (main-site section padding --P plus 2.4rem) and the tight version (1.2rem).
   Every block gets .9rem top and bottom; text blocks add half of --P. Change --P at the top of this file to loosen or tighten everything. */
.post>.blk{width:min(760px,100% - 2.5rem);margin:0 auto;padding-block:.9rem}
.post>section.blk{padding-block:calc(.9rem + var(--P)/2)}
.blk{margin:0}
.blk h3{font-size:1.4rem;margin:0 0 .3rem}
.text p{font-size:1.15rem;max-width:none;margin:0 0 .9em}.text p:last-child{margin-bottom:0}
.quote{margin-inline:0}
.quote .bar{width:min(260px,45%);height:6px;background:var(--sun);border-radius:3px;margin-bottom:1.3rem}
.quote blockquote{margin:0;padding:0;border:0;max-width:none;font:italic 600 clamp(1.5rem,3.4vw,2.2rem)/1.35 var(--quote);color:var(--ink)}
.quote .by{margin:1rem 0 0;font:700 .85rem var(--body);color:var(--sun-text)}
.band{background:var(--card);border-block:1px solid var(--line);padding:1.5rem 0;margin:.9rem 0}
.film{position:relative;overflow:hidden;background:#111}
.film-track .frame:first-child{margin-left:auto}.film-track .frame:last-child{margin-right:auto}
.film-track{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x proximity;padding:26px 14px;scrollbar-width:none;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='18'%3E%3Crect x='7' y='4' width='14' height='10' rx='2.5' fill='%23e9e9e4'/%3E%3C/svg%3E") repeat-x left top/28px 18px,url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='18'%3E%3Crect x='7' y='4' width='14' height='10' rx='2.5' fill='%23e9e9e4'/%3E%3C/svg%3E") repeat-x left bottom/28px 18px,#111;background-attachment:local,local,local}
.film-track::-webkit-scrollbar{display:none}
.frame{flex:none;width:240px;height:170px;padding:0;border:0;border-radius:3px;overflow:hidden;background:#222;cursor:zoom-in;scroll-snap-align:start}
.frame img{width:100%;height:100%;object-fit:cover;transition:transform .3s}
.frame:hover img{transform:scale(1.06)}
.film-btn{position:absolute;top:50%;transform:translateY(-50%);z-index:2;width:2.6rem;height:2.6rem;border:0;border-radius:50%;background:rgba(255,255,255,.92);color:#111;font-size:1.4rem;line-height:1;cursor:pointer;box-shadow:0 2px 10px rgba(0,0,0,.28)}
.film-prev{left:.6rem}.film-next{right:.6rem}
.film-btn:focus-visible,.frame:focus-visible,.lb button:focus-visible{outline:3px solid var(--sun);outline-offset:2px}
dialog.lb{width:100vw;height:100vh;max-width:none;max-height:none;margin:0;padding:0;border:0;border-radius:0;background:rgba(4,10,14,.96);color:#fff;overflow:hidden}
dialog.lb::backdrop{background:transparent}
.lb img{position:absolute;left:4.5rem;right:4.5rem;top:3.5rem;bottom:3.5rem;width:calc(100% - 9rem);height:calc(100% - 7rem);object-fit:contain}
.lb button{position:absolute;z-index:2;width:3rem;height:3rem;border:0;border-radius:50%;background:rgba(255,255,255,.16);color:#fff;font-size:1.6rem;line-height:1;cursor:pointer}
.lb button:hover{background:rgba(255,255,255,.3)}
.lb .x{top:.8rem;right:.8rem}.lb .pv,.lb .nx{top:50%;transform:translateY(-50%)}.lb .pv{left:.8rem}.lb .nx{right:.8rem}
.lb .cap{position:absolute;left:0;right:0;bottom:.9rem;margin:0;max-width:none;text-align:center;font-size:.9rem;opacity:.85}
.ptext{display:grid;grid-template-columns:minmax(0,240px) 1fr;gap:1.6rem;align-items:start}
.ptext figure{margin:0}
.ptext img{display:block;width:100%;aspect-ratio:3/4;object-fit:cover;border-radius:.8rem}
.ptext figcaption{margin-top:.5rem;font-size:.85rem;line-height:1.4;color:var(--mute)}
@media(max-width:700px){.ptext{grid-template-columns:1fr}.ptext figure{max-width:320px}}
.sig img{height:2.6rem;width:auto}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) .sig img{filter:invert(1)}}
:root[data-theme="dark"] .sig img{filter:invert(1)}
.ctas{display:flex;flex-wrap:wrap;gap:.75rem}
.post>section.sources{margin-top:.9rem;padding-block:1.2rem .9rem}
.sources{font-size:.85rem;color:var(--src);border-top:1px solid var(--line);margin-bottom:0}
.sources h4{font:700 .8rem var(--body);text-transform:uppercase;letter-spacing:.06em;margin:0 0 .6rem}
.sources ol{margin:0;padding-left:1.2rem}.sources li{margin-bottom:.3rem}.sources a{color:inherit}
@media(max-width:900px){.grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){.lb img{left:.5rem;right:.5rem;width:calc(100% - 1rem)}.frame{width:70vw;height:50vw}.intro{grid-template-columns:1fr}}
@media(max-width:600px){.grid{grid-template-columns:1fr}}
