/* tender.zone, Signpost. One stylesheet for every page; the drawn scene is only on the home page. Strict CSP: no inline styles. */
@view-transition{navigation:auto}
:root{
  --footer-skyline-height:clamp(72px,7.6vw,120px);
  --green:#00774a; --green-deep:#005c39; --green-tint:#e3efe8;
  --ink:#18201d; --muted:#55615c; --ground:#eef2ef; --sheet:#fff; --rule:#d2dad5;
  --yellow:#f6b500; --red:#b3261b; --brown:#6a4a2e; --brown-deep:#553a22;
  --sans:"Sofia Sans","Segoe UI",system-ui,sans-serif; --narrow:"Sofia Sans Semi Condensed","Sofia Sans",system-ui,sans-serif;
  --ease:cubic-bezier(.16,1,.3,1);
  /* type: five named steps, nothing in between */
  --t-label:14px; --t-meta:15px; --t-body:17px; --t-title:18px; --t-section:23px;
  /* the board: every list on the site uses these five columns */
  --cols:56px minmax(0,1fr) 138px 160px 76px; --gap:22px;
}
*{box-sizing:border-box;margin:0}
html{background:var(--ground);color:var(--ink);font:17px/1.5 var(--sans);-webkit-text-size-adjust:100%;scrollbar-color:#9fb0a7 var(--ground);accent-color:var(--green)}
body{min-height:100vh;display:flex;flex-direction:column}
::selection{background:var(--yellow);color:var(--ink)}
a{color:inherit;text-decoration:none}
[hidden]{display:none!important}
:focus-visible{outline:3px solid var(--ink);outline-offset:2px;box-shadow:0 0 0 6px var(--yellow);border-radius:4px}
.wrap{width:100%;max-width:1320px;margin:0 auto;padding:0 28px}
.num{font-variant-numeric:tabular-nums lining-nums}
svg.i{width:20px;height:20px;flex:none;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}

/* top bar */
.bar{background:var(--sheet);border-bottom:1px solid var(--rule)}
.bar .wrap{display:flex;align-items:center;gap:30px;min-height:66px}
.mark{display:flex;align-items:center;gap:10px;font:800 21px/1 var(--sans);letter-spacing:-.01em}
.mark i{display:grid;place-items:center;width:34px;height:24px;border-radius:5px;background:var(--green);border:2px solid #fff;outline:2px solid var(--green)}
.mark i svg{width:22px;height:15px;fill:none;stroke:#fff;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
nav.main{display:flex;gap:2px}
nav.main a{padding:21px 12px;font-weight:600;font-size:17px;color:var(--muted);transition:color .15s}
nav.main a:hover{color:var(--ink)}
nav.main a[aria-current]{color:var(--ink);box-shadow:inset 0 -3px 0 var(--green)}
.tools{margin-left:auto;display:flex;align-items:center;gap:18px}
.saved{display:flex;align-items:center;gap:7px;font-weight:600;font-size:15px;padding:10px 4px}
.saved b{min-width:22px;padding:0 6px;border-radius:999px;background:var(--green-tint);color:var(--green-deep);font-size:14px;text-align:center}
.langs{display:flex}
.langs a{padding:12px 8px;font-weight:600;font-size:15px;color:var(--muted)}
.langs a[aria-current]{color:var(--ink);text-decoration:underline;text-decoration-thickness:3px;text-underline-offset:7px;text-decoration-color:var(--green)}

/* the plate: one per screen */
.plate{position:relative;background:var(--green);color:#fff;border-radius:18px;padding:30px 34px 26px;margin-top:16px;animation:mount .6s var(--ease) backwards}
.plate::before{content:"";position:absolute;inset:7px;border:2.5px solid #fff;border-radius:12px;pointer-events:none}
@keyframes mount{from{transform:translateY(-12px)}}
.plate h1{font:800 clamp(28px,3.1vw,44px)/1.06 var(--sans);letter-spacing:-.018em;text-wrap:balance;max-width:22ch}
.find{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr) auto;gap:14px;align-items:end;margin-top:22px}
.find label{display:grid;gap:7px;font-weight:600;font-size:15px}
.find input{font:500 18px var(--sans);color:var(--ink);background:#fff;border:0;border-radius:9px;min-height:56px;padding:0 16px;width:100%;caret-color:var(--green)}
.find input::placeholder{color:#66726c}
.find input:focus{outline:3px solid var(--yellow);outline-offset:2px}
.go{min-height:56px;padding:10px 24px;border:0;border-radius:9px;background:#fff;color:var(--ink);font:800 18px var(--sans);display:flex;align-items:center;gap:10px;cursor:pointer;transition:background .15s}
.go:hover{background:var(--green-tint)}
.go svg{transition:transform .25s var(--ease)}
.go:hover svg{transform:translateX(4px)}
.live{display:flex;flex-wrap:wrap;gap:6px 28px;margin-top:18px;font-size:15px;color:#dff0e7}
.live b{color:#fff;font-weight:800}

/* board */
.work{display:grid;grid-template-columns:minmax(0,1fr) 292px;gap:48px;padding-top:6px;align-items:start}
.work.solo{grid-template-columns:minmax(0,1fr)}
h2{font:800 27px/1.15 var(--sans);letter-spacing:-.012em;text-wrap:balance}
.lead h2{font-size:25px}
.tabs{display:flex;gap:4px;flex-wrap:wrap}
.lead{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 24px;margin-bottom:4px}
.lead>*{min-width:0;max-width:100%}
.act{font-weight:500;color:var(--muted)}
.tabs a{padding:7px 14px;border-radius:999px;font-weight:600;font-size:15px;color:var(--muted);transition:background .15s,color .15s}
.tabs a:hover{background:#e2e8e4;color:var(--ink)}
.tabs a[aria-current]{background:var(--ink);color:#fff}
.tabs a span{font-weight:500;margin-left:5px}
.board-head,.row{display:grid;grid-template-columns:var(--cols);gap:var(--gap);align-items:center}
.board-head{position:sticky;top:0;z-index:2;background:var(--ground);padding:8px 0 6px;border-bottom:2px solid var(--ink);font:600 14px/1.2 var(--narrow);color:var(--muted)}
.board-head .r,.row .r{text-align:right}
.row{position:relative;padding:9px 0;border-bottom:1px solid var(--rule);min-height:70px}
.row::before{content:"";position:absolute;inset:0 -14px;border-radius:12px;background:var(--sheet);opacity:0;transition:opacity .15s;z-index:-1}
.row:hover::before{opacity:1}
.shield{display:grid;place-items:center;width:46px;height:30px;border-radius:6px;background:var(--green);border:2px solid #fff;outline:2px solid var(--green);color:#fff;font:800 15px/1 var(--narrow);letter-spacing:.02em}
.t a{font:700 18px/1.25 var(--sans);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.t a::after{content:"";position:absolute;inset:0}
.row:hover .t a{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:4px;text-decoration-color:var(--green)}
.t p{display:flex;flex-wrap:wrap;gap:0 16px;margin-top:3px;font-size:15px;color:var(--muted)}
.v b,.c b{display:block;font:700 17px/1.3 var(--sans)}
.v span,.c span{display:block;font-size:15px;color:var(--muted)}
.d{display:grid;justify-items:end;gap:1px}
.d b{font:800 34px/1 var(--sans);letter-spacing:-.02em;padding:3px 0}
.d span{font:600 14px/1 var(--narrow);color:var(--muted)}
.d.soon b{background:var(--yellow);border-radius:7px;padding:3px 9px;margin-right:-9px}
.onward{display:flex;flex-wrap:wrap;align-items:center;gap:12px 26px;margin-top:22px}
.onward p{max-width:46ch;color:var(--muted)}
.onward p a{color:var(--ink);font-weight:700;text-decoration:underline;text-decoration-color:var(--green);text-decoration-thickness:2px;text-underline-offset:4px}
.more{display:inline-flex;align-items:center;gap:9px;font-weight:700;padding:14px 20px;border:2px solid var(--ink);border-radius:9px;transition:background .15s,color .15s}
.more:hover{background:var(--ink);color:#fff}

/* side index */
.index h3{font:800 18px/1.2 var(--sans);padding-bottom:9px;border-bottom:2px solid var(--ink)}
.index ul{list-style:none;padding:0}
.index li a{display:flex;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid var(--rule);font-weight:600;font-size:17px}
.index li a:hover{color:var(--green-deep)}
.index li b{margin-left:auto;font-weight:700}
.index .shield{width:38px;height:25px;font-size:12.5px;border-radius:5px}
.index .all{display:inline-block;margin:14px 0 34px;font-weight:700;font-size:15px;text-decoration:underline;text-decoration-color:var(--green);text-decoration-thickness:2px;text-underline-offset:4px}

footer.foot{margin-top:auto;border-top:1px solid var(--rule);background:var(--sheet)}
footer.foot .wrap{display:flex;flex-wrap:wrap;gap:8px 28px;padding-top:20px;padding-bottom:22px;font-size:15px;color:var(--muted)}
footer.foot a{font-weight:600;color:var(--ink);text-decoration:underline;text-decoration-color:var(--rule);text-underline-offset:4px}

/* tender page */
.crumbs{display:flex;flex-wrap:wrap;gap:8px;padding-top:22px;font-size:15px;color:var(--muted);font-weight:600}
.crumbs a{text-decoration:underline;text-decoration-color:var(--rule);text-underline-offset:4px}
.crumbs a:hover{color:var(--ink)}
.tender{display:grid;grid-template-columns:minmax(0,1fr) 372px;gap:52px;align-items:start;padding-top:8px}
.ident{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;margin-top:16px;font-weight:600;font-size:15px;color:var(--muted)}
.tender h1{font:800 clamp(28px,3.2vw,44px)/1.08 var(--sans);letter-spacing:-.02em;text-wrap:balance;margin-top:18px;max-width:24ch}
.official{margin-top:12px;font-size:15px;color:var(--muted);max-width:60ch}
.official i{font-style:normal;color:var(--ink)}
.tender section{margin-top:44px}
.tender h2{font-size:23px;margin-bottom:14px}

/* the station line: the one drawn moment on this page */
.line{position:relative;margin-top:34px;padding:34px 0 62px}
.line .track{position:absolute;left:0;top:48px;height:8px;width:var(--w);background:var(--green);border-radius:4px;transform-origin:left;animation:draw 1s var(--ease) .15s backwards}
.line .after{position:absolute;left:var(--at);right:0;top:51px;border-top:2px dashed #93a39a}
.line .rest{position:absolute;left:var(--at);width:var(--w);top:48px;height:8px;background:var(--yellow);transform-origin:left;animation:draw .5s var(--ease) 1.050s backwards}
@keyframes draw{from{transform:scaleX(0)}}
.stop{position:absolute;top:40px;left:var(--at);width:24px;height:24px;margin-left:-12px;border-radius:50%;background:#fff;border:4px solid var(--ink);animation:pop .45s var(--ease) backwards;animation-delay:calc(.2s + var(--o,0) * .22s)}
.stop.next{border-color:#93a39a}
.stop span{position:absolute;top:32px;left:50%;transform:translateX(-50%);white-space:nowrap;text-align:center;font-size:15px;color:var(--muted);line-height:1.3}
.stop span b{display:block;font:700 15px/1.25 var(--sans);color:var(--ink)}
.stop span small{display:block;font-size:inherit}
.stop.first{margin-left:0}.stop.first span{left:0;transform:none;text-align:left}
.stop.last{margin-left:-24px}.stop.last span{left:auto;right:0;transform:none;text-align:right}
.here{position:absolute;top:0;left:var(--at);transform:translateX(-50%);display:grid;justify-items:center;animation:drop .5s var(--ease) 1s backwards}
.here b{background:var(--yellow);color:var(--ink);font:800 14px/1 var(--narrow);padding:6px 9px;border-radius:6px;white-space:nowrap}
.here::after{content:"";width:3px;height:22px;background:var(--ink);border-radius:2px;margin-top:2px}
@keyframes pop{from{transform:scale(.3)}}
@keyframes drop{from{transform:translateX(-50%) translateY(-10px)}}

.facts{display:grid;grid-template-columns:1fr 1fr;gap:0 40px;border-top:2px solid var(--ink)}
.facts div{padding:13px 0;border-bottom:1px solid var(--rule)}
.facts dt{font:600 15px/1.3 var(--narrow);color:var(--muted)}
.facts dd{font-weight:600;font-size:17px;margin-top:1px}
.facts dd a{text-decoration:underline;text-decoration-color:var(--green);text-decoration-thickness:2px;text-underline-offset:4px}
.facts dd small{font-weight:500;font-size:15px;color:var(--muted);margin-left:8px}
.facts .with-picto{display:flex;align-items:center;gap:12px}
.picto.big{width:44px;height:44px;border-radius:8px}
.picto.big svg{width:30px;height:30px}
.plain p{max-width:64ch;font-size:18px;line-height:1.55}
.plain p+p{margin-top:10px}
.note{font-size:15px;color:var(--muted);margin-top:10px}

/* the one sign that points off this road */
.post{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:26px;align-items:center;background:var(--brown);color:#fff;padding:24px 76px 24px 30px;border-radius:14px 0 0 14px;
  clip-path:polygon(0 0,calc(100% - 46px) 0,100% 50%,calc(100% - 46px) 100%,0 100%)}
.post h2{margin:0 0 6px;font-size:23px}
.post p{max-width:52ch;color:#f1e7dc;font-size:17px}
.post .go{white-space:nowrap}
.post .go:hover{background:#f3e9de}
.post small{display:block;margin-top:8px;font-size:14px;color:#e3d3c2}

.side{position:sticky;top:18px}
.side .plate{margin-top:26px;padding:26px 28px 24px}
.dist{display:flex;align-items:flex-end;gap:14px}
.dist b{font:800 92px/.82 var(--sans);letter-spacing:-.04em}
.dist.soon b{background:var(--yellow);color:var(--ink);border-radius:12px;padding:10px 14px 8px;margin-left:-4px}
.dist span{font:700 21px/1.1 var(--sans);padding-bottom:6px}
.dist span small{display:block;font:500 15px/1.3 var(--sans);color:#dff0e7}
.when{margin-top:16px;font-size:17px;font-weight:600}
.when small{display:block;font-weight:500;font-size:15px;color:#dff0e7}
.exit{margin-top:20px;width:100%;justify-content:space-between;min-height:64px;padding:13px 20px 14px 22px;text-align:left;line-height:1.3}
.exit small{display:block;font:500 15px/1.3 var(--sans);color:#4a3a00;margin-top:2px}
/* The way out to the buyer's notice is a yellow direction sign: black on yellow, like a local road sign. */
.exit,.mobile-exit .go{background:var(--yellow);color:#14130c;box-shadow:inset 0 0 0 2.5px #14130c}
.exit:hover,.mobile-exit .go:hover{background:#ffc72e}
.exit svg,.mobile-exit .go svg{color:#14130c}
.quiet{display:grid;grid-template-columns:auto 1fr;gap:10px;margin-top:10px}
.quiet button{font:inherit;color:inherit;background:none;cursor:pointer}
.quiet a,.quiet button{display:flex;align-items:center;justify-content:center;gap:7px;min-height:48px;padding:0 8px;border:2px solid #ffffff8c;border-radius:9px;font-weight:700;font-size:15px;transition:background .15s,border-color .15s}
.quiet button:hover,.quiet button[aria-pressed=true],.quiet a:hover{background:#ffffff1f;border-color:#fff}
.src{margin-top:16px;font-size:15px;color:var(--muted);padding:0 6px}
.src a{color:var(--ink);font-weight:600;text-decoration:underline;text-decoration-color:var(--rule);text-underline-offset:4px}
.won{margin-top:16px;max-width:64ch}
.mobile-exit{display:none}

@media (max-width:1040px){
  .bar .wrap{flex-wrap:wrap;gap:0 18px}
  nav.main{order:3;width:100%;overflow-x:auto;scrollbar-width:none;margin:0 -6px;border-top:1px solid var(--rule);mask-image:linear-gradient(90deg,#000 calc(100% - 44px),transparent)}
  nav.main a{padding:13px 10px;white-space:nowrap;font-size:15px}
  .work{grid-template-columns:minmax(0,1fr);gap:40px}
  .index{display:grid;grid-template-columns:1fr 1fr;gap:0 32px}
  .tender{grid-template-columns:minmax(0,1fr);gap:0}
  .side{position:static;grid-row:2}
  .tender>div:first-child{display:contents}
  .tender header{grid-row:1}
}
@media (max-width:720px){
  html{font-size:15px}
  .wrap{padding:0 16px}
  .bar .wrap{gap:12px;min-height:58px}
  .saved span{display:none}
  .tools{gap:6px}
  .langs a{padding:12px 6px}
  .mark{font-size:19px}
  .plate{border-radius:14px;padding:24px 22px 22px;margin-top:14px}
  .plate::before{inset:6px;border-radius:9px}
  .find{grid-template-columns:1fr}
  .go{justify-content:center}
  .live{gap:4px 18px;font-size:15px;margin-top:12px}
  .live span:nth-child(3){display:none}
  .plate h1{font-size:25px}
  .find{gap:10px;margin-top:14px}
  .find label{gap:5px;font-size:15px}
  .find input,.go{min-height:48px}
  h2{font-size:22px}
  .work{padding-top:18px}
  :root{--cols:44px minmax(0,1fr) 58px;--gap:12px}
  .board-head .v,.board-head .c{display:none}
  .row{align-items:start;padding:14px 0}
  .row .v,.row .c{grid-column:2;display:flex;gap:8px;align-items:baseline}
  .row .v b,.row .c b{font-size:15px}
  .row .d{grid-column:3;grid-row:1/span 3}
  .shield{width:40px;height:27px;font-size:13px}
  .t a{font-size:17px}
  .d b{font-size:28px}
  .index{grid-template-columns:1fr}
  .facts{grid-template-columns:1fr}
  .post{grid-template-columns:1fr;padding:22px 52px 22px 22px;clip-path:polygon(0 0,calc(100% - 30px) 0,100% 50%,calc(100% - 30px) 100%,0 100%)}
  .post .go{white-space:normal}
  .line{padding-bottom:70px}
  .stop span{font-size:14px}.stop span b{font-size:15px}
  .stop:not(.first):not(.last) span{left:auto;right:-10px;transform:none;text-align:right}
  .stop.last small{display:none}
  .dist b{font-size:76px}
  .side .exit{display:none}
  .mobile-exit{display:block;position:sticky;bottom:0;z-index:5;background:var(--green);padding:10px 16px;border-top:2.5px solid #fff}
  .mobile-exit .go{width:100%;justify-content:space-between;min-height:52px}
}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important}.plate,.line *{animation:none!important}@view-transition{navigation:none}}


/* The drawn scene: a European skyline with what public contracts build, the sign standing in front of it. CSS only. */
.sky{position:relative;overflow:hidden;padding-bottom:16px;min-height:calc(max(260px,16.25vw) + 40px);content-visibility:auto;contain-intrinsic-size:auto 340px;background:linear-gradient(#d6e7dc 0%,#e4eee7 55%,#eef2ef 100%)}
.sky::after{content:"";position:absolute;left:0;right:0;bottom:0;height:7px;background:#5f746a}
.town{position:absolute;left:0;bottom:6px;width:100%;height:max(260px,16.25vw);pointer-events:none} /* 1600x260 drawing: past 1600 px wide it grows in height too, so slice never crops the crane or the towers */
.town .sun{fill:#f6dc86}
.town .halo{fill:#f6dc86;opacity:.28}
.town .cloud{fill:#fff;opacity:.85}
.town .hills{fill:#cfe0d5}
.town .far{fill:#b5ccbf}
.town .near{fill:#6f9080}
.town .roof{fill:#a67f5d}
.town .crane{fill:#d9a514}
.town .lit{fill:#e4eee7}
.town .rim,.town .spoke,.town .cable{fill:none;stroke:#6f9080}
.town .rim{stroke-width:5}.town .spoke{stroke-width:1.6}.town .cable{stroke-width:3}
.town .bus rect{fill:#00774a}
.town .bus .glass{fill:#e4eee7}
.town .spin,.town .sail,.town .turn{transform-box:fill-box;animation:spin 9s linear infinite}
.town .spin{transform-origin:50% 66.6%}
.town .sail{transform-origin:50% 50%;animation-duration:13s}
.town .turn{transform-origin:50% 50%;animation-duration:40s}
.town .hook{transform-box:fill-box;transform-origin:50% 0;animation:sway 1.8s ease-in-out infinite alternate}
.town .bus{animation:ride 80s linear infinite}
.town .truck .box{fill:#f4f7f5}
.town .truck .cab{fill:#2f4a3e}
.town .truck .glass{fill:#cfe0d5}
.town .truck .tyre{fill:#22302a}
.town .truck{animation:haul 62s linear -24s infinite}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes sway{from{transform:rotate(-7deg)}to{transform:rotate(7deg)}}
@keyframes ride{from{transform:translateX(1640px)}to{transform:translateX(-80px)}}
@keyframes haul{from{transform:translateX(-90px)}to{transform:translateX(1660px)}}

/* the sign stands on two posts in front of the town */
.stand{position:relative;z-index:1;max-width:860px}
.stand::before,.stand::after{content:"";position:absolute;top:calc(100% - 14px);height:50px;width:12px;background:linear-gradient(90deg,#8ea198 0 4px,#5f746a 4px);border-radius:0 0 2px 2px;z-index:-1}
.stand::before{left:13%}
.stand::after{right:13%}
.sky .plate{box-shadow:0 14px 22px -16px #1f3a2e80;padding:18px 30px 18px}
.sky .plate h1{max-width:none;font-size:clamp(26px,2.6vw,36px)}
.sky .find{margin-top:12px}
.sky .live{margin-top:11px}

/* trade pictograms, drawn like service symbols on a sign */
.picto{display:grid;place-items:center;width:30px;height:30px;border-radius:6px;background:var(--green);color:#fff;flex:none}
.picto svg{width:19px;height:19px;stroke-width:2}

/* the ground the page ends on: the skyline cuts into it */
footer.ground{margin-top:auto;position:relative;background:#143326;color:#d7e6dd;padding:22px 0 26px}
footer.ground .edge{position:absolute;left:0;bottom:100%;width:100%;height:var(--footer-skyline-height);background:url('/skyline.svg') repeat-x left bottom;background-size:auto 100%;display:block;margin-bottom:-1px}
footer.ground .wrap{display:flex;flex-wrap:wrap;align-items:baseline;gap:10px 40px;font-size:15.5px}
footer.ground p{max-width:60ch}
footer.ground b{color:#fff;font-weight:800}
footer.ground nav{margin-left:auto;display:flex;gap:22px}
footer.ground a{color:#fff;font-weight:600;text-decoration:underline;text-decoration-color:#5f8a74;text-underline-offset:4px}
footer.ground a:hover{text-decoration-color:#fff}
/* Every page ends clear of the footer skyline: its full height plus breathing room, so no landmark covers a button. */
main{padding-bottom:calc(var(--footer-skyline-height) + 32px)}
.sky ~ .work{padding-top:48px} /* the same breathing room between the header (scene + rates band) and the board */
@media (max-width:720px){.sky ~ .work{padding-top:24px}}

@media (max-width:1040px){.stand{max-width:none}.town{height:210px}}
@media (max-width:720px){.sky{padding-bottom:64px}.town{height:150px}.stand::before,.stand::after{height:76px}.sky .plate{padding:22px 20px 20px}footer.ground nav{margin-left:0}.tender{padding-bottom:28px}}
/* The scene always plays (owner, 2026-10-06) and can always be paused with one click. */
.motion{position:absolute;right:14px;bottom:18px;z-index:2;display:flex;align-items:center;gap:7px;padding:7px 12px;border-radius:999px;background:#ffffffd9;font:600 14px/1 var(--sans);color:var(--ink);cursor:pointer}
.motion input{position:absolute;opacity:0;width:1px;height:1px}
.motion:has(input:focus-visible){outline:3px solid var(--ink);outline-offset:2px}
.motion .play,.motion:has(input:checked) .pause{display:none}
.motion:has(input:checked) .play{display:inline}
.sky:has(#motion:checked) .town *{animation-play-state:paused}

/* Positions on the station line come as classes (strict CSP forbids inline styles). */
.l-0{--at:0%}.w-0{--w:0%}.l-1{--at:1%}.w-1{--w:1%}.l-2{--at:2%}.w-2{--w:2%}.l-3{--at:3%}.w-3{--w:3%}.l-4{--at:4%}.w-4{--w:4%}.l-5{--at:5%}.w-5{--w:5%}.l-6{--at:6%}.w-6{--w:6%}.l-7{--at:7%}.w-7{--w:7%}.l-8{--at:8%}.w-8{--w:8%}.l-9{--at:9%}.w-9{--w:9%}.l-10{--at:10%}.w-10{--w:10%}.l-11{--at:11%}.w-11{--w:11%}.l-12{--at:12%}.w-12{--w:12%}.l-13{--at:13%}.w-13{--w:13%}.l-14{--at:14%}.w-14{--w:14%}.l-15{--at:15%}.w-15{--w:15%}.l-16{--at:16%}.w-16{--w:16%}.l-17{--at:17%}.w-17{--w:17%}.l-18{--at:18%}.w-18{--w:18%}.l-19{--at:19%}.w-19{--w:19%}.l-20{--at:20%}.w-20{--w:20%}.l-21{--at:21%}.w-21{--w:21%}.l-22{--at:22%}.w-22{--w:22%}.l-23{--at:23%}.w-23{--w:23%}.l-24{--at:24%}.w-24{--w:24%}.l-25{--at:25%}.w-25{--w:25%}.l-26{--at:26%}.w-26{--w:26%}.l-27{--at:27%}.w-27{--w:27%}.l-28{--at:28%}.w-28{--w:28%}.l-29{--at:29%}.w-29{--w:29%}.l-30{--at:30%}.w-30{--w:30%}.l-31{--at:31%}.w-31{--w:31%}.l-32{--at:32%}.w-32{--w:32%}.l-33{--at:33%}.w-33{--w:33%}.l-34{--at:34%}.w-34{--w:34%}.l-35{--at:35%}.w-35{--w:35%}.l-36{--at:36%}.w-36{--w:36%}.l-37{--at:37%}.w-37{--w:37%}.l-38{--at:38%}.w-38{--w:38%}.l-39{--at:39%}.w-39{--w:39%}.l-40{--at:40%}.w-40{--w:40%}.l-41{--at:41%}.w-41{--w:41%}.l-42{--at:42%}.w-42{--w:42%}.l-43{--at:43%}.w-43{--w:43%}.l-44{--at:44%}.w-44{--w:44%}.l-45{--at:45%}.w-45{--w:45%}.l-46{--at:46%}.w-46{--w:46%}.l-47{--at:47%}.w-47{--w:47%}.l-48{--at:48%}.w-48{--w:48%}.l-49{--at:49%}.w-49{--w:49%}.l-50{--at:50%}.w-50{--w:50%}.l-51{--at:51%}.w-51{--w:51%}.l-52{--at:52%}.w-52{--w:52%}.l-53{--at:53%}.w-53{--w:53%}.l-54{--at:54%}.w-54{--w:54%}.l-55{--at:55%}.w-55{--w:55%}.l-56{--at:56%}.w-56{--w:56%}.l-57{--at:57%}.w-57{--w:57%}.l-58{--at:58%}.w-58{--w:58%}.l-59{--at:59%}.w-59{--w:59%}.l-60{--at:60%}.w-60{--w:60%}.l-61{--at:61%}.w-61{--w:61%}.l-62{--at:62%}.w-62{--w:62%}.l-63{--at:63%}.w-63{--w:63%}.l-64{--at:64%}.w-64{--w:64%}.l-65{--at:65%}.w-65{--w:65%}.l-66{--at:66%}.w-66{--w:66%}.l-67{--at:67%}.w-67{--w:67%}.l-68{--at:68%}.w-68{--w:68%}.l-69{--at:69%}.w-69{--w:69%}.l-70{--at:70%}.w-70{--w:70%}.l-71{--at:71%}.w-71{--w:71%}.l-72{--at:72%}.w-72{--w:72%}.l-73{--at:73%}.w-73{--w:73%}.l-74{--at:74%}.w-74{--w:74%}.l-75{--at:75%}.w-75{--w:75%}.l-76{--at:76%}.w-76{--w:76%}.l-77{--at:77%}.w-77{--w:77%}.l-78{--at:78%}.w-78{--w:78%}.l-79{--at:79%}.w-79{--w:79%}.l-80{--at:80%}.w-80{--w:80%}.l-81{--at:81%}.w-81{--w:81%}.l-82{--at:82%}.w-82{--w:82%}.l-83{--at:83%}.w-83{--w:83%}.l-84{--at:84%}.w-84{--w:84%}.l-85{--at:85%}.w-85{--w:85%}.l-86{--at:86%}.w-86{--w:86%}.l-87{--at:87%}.w-87{--w:87%}.l-88{--at:88%}.w-88{--w:88%}.l-89{--at:89%}.w-89{--w:89%}.l-90{--at:90%}.w-90{--w:90%}.l-91{--at:91%}.w-91{--w:91%}.l-92{--at:92%}.w-92{--w:92%}.l-93{--at:93%}.w-93{--w:93%}.l-94{--at:94%}.w-94{--w:94%}.l-95{--at:95%}.w-95{--w:95%}.l-96{--at:96%}.w-96{--w:96%}.l-97{--at:97%}.w-97{--w:97%}.l-98{--at:98%}.w-98{--w:98%}.l-99{--at:99%}.w-99{--w:99%}.l-100{--at:100%}.w-100{--w:100%}.o-0{--o:0}.o-1{--o:1}.o-2{--o:2}.o-3{--o:3}
.symbols{position:absolute;width:0;height:0;overflow:hidden}
.plate .lede{margin-top:6px;max-width:62ch;font-size:17px;color:#e3f1e9}
.page-head{padding:34px 0 10px}.page-head h1{font:800 clamp(28px,3.2vw,40px)/1.1 var(--sans);letter-spacing:-.02em;text-wrap:balance}.page-head .sub{margin-top:8px;color:var(--muted);max-width:62ch}
.building{padding-bottom:60px}.building .more{margin-top:22px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:-9999px}.skip:focus{left:16px;top:10px;z-index:10;background:var(--sheet);padding:10px 14px;border-radius:8px}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%) translateY(20px);opacity:0;background:var(--ink);color:#fff;padding:12px 18px;border-radius:10px;font-weight:600;transition:opacity .2s,transform .25s var(--ease);pointer-events:none;z-index:20}
.toast.show{opacity:1;transform:translateX(-50%)}

/* Results: the filters sit in one row above the board, the places as tabs, numbered pages. */
.filters{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;margin:18px 0 10px;padding:16px;background:var(--sheet);border-radius:14px}
.filters .field{flex:1 1 170px;display:grid;gap:6px;font:600 14px/1.2 var(--narrow);color:var(--muted)}
.filters input,.filters select{font:500 16px var(--sans);color:var(--ink);background:var(--ground);border:2px solid transparent;border-radius:9px;min-height:48px;padding:0 12px;width:100%}
.filters select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--ink) 50%),linear-gradient(135deg,var(--ink) 50%,transparent 50%);background-position:calc(100% - 18px) 21px,calc(100% - 13px) 21px;background-size:5px 5px;background-repeat:no-repeat;padding-right:30px}
.filters .wide{flex:2 1 280px}
.filters input:focus,.filters select:focus{outline:none;border-color:var(--green)}
.filters .go{background:var(--green);color:#fff;min-height:48px}
.filters .go:hover{background:var(--green-deep)}
.tabs.places{margin:6px 0 4px;gap:6px}
.tabs.places a{background:var(--sheet)}
.tabs.places a[aria-current]{background:var(--ink)}
.pager{display:flex;flex-wrap:wrap;gap:6px;margin-top:22px;align-items:center}
.pager a{min-width:44px;min-height:44px;display:grid;place-items:center;padding:0 12px;border-radius:9px;font-weight:700;background:var(--sheet)}
.pager a:hover{background:var(--green-tint)}
.pager a[aria-current]{background:var(--ink);color:#fff}
.pager span{padding:0 4px;color:var(--muted)}
.empty-state{padding:40px 0 20px;max-width:60ch}
.empty-state h2{font-size:23px}
.empty-state p{margin-top:8px;color:var(--muted)}
.empty-state .more{margin-top:20px}
.page-head{padding:22px 0 4px}
@media (max-width:720px){.filters .go{flex:1 1 100%;justify-content:center}}
/* Road maps: plain land, visible borders, a green sign with the figure on every region that has open tenders. */
.atlas-row{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:40px;align-items:start;margin:18px 0 8px}
.mapbox{background:var(--sheet);border-radius:16px;padding:18px;position:relative}
.rmap{display:block;width:100%;height:auto;max-height:600px;overflow:visible}
.rmap .land{fill:#e4ece6;stroke:#7d9687;stroke-width:1;stroke-linejoin:round;transition:fill .15s}
.rmap .land.out{fill:#f0f3f1;stroke:#c3cfc7}
.rmap .land.on{fill:#ffe9a6}
.rmap a .land{cursor:pointer}
.rmap a:hover .land,.rmap a:focus .land{fill:#cfe3d6}
.rmap a:focus{outline:none}
.rmap a:focus-visible .land{fill:var(--yellow);stroke:var(--ink);stroke-width:2}
.rmap .sign{pointer-events:none}
.rmap .sign rect{fill:var(--green);stroke:#fff;stroke-width:1.5}
.rmap .sign text{font-family:var(--narrow);font-weight:700;fill:#fff;text-anchor:middle}
.rmap .sign .name{fill:var(--ink);font-weight:600;paint-order:stroke;stroke:#fff;stroke-width:3px;stroke-linejoin:round}
.rmap .sign.on rect{fill:var(--yellow);stroke:var(--ink)}
.rmap .sign.on text{fill:var(--ink)}
.rmap .pin{fill:var(--green);stroke:#fff;stroke-width:1}
.rmap.small{max-height:220px}
.rmap.small .land{stroke-width:1.4}
.map-switch{position:absolute;right:14px;top:14px;margin:0}
.tabbed{display:grid;gap:12px;align-content:start}
.tabbed .scroll{max-height:540px;overflow:auto;scrollbar-width:thin;padding-right:6px}
.tabbed .index li a span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tabs.switch{border:0;padding:0;margin:0}
.tabs.switch label{padding:9px 14px;border-radius:999px;font-weight:600;font-size:15px;color:var(--muted);cursor:pointer}
.tabs.switch label:has(input:checked){background:var(--ink);color:#fff}
.tabs.switch label:has(input:focus-visible){outline:3px solid var(--ink);box-shadow:0 0 0 6px var(--yellow)}
.tabs.switch input{position:absolute;opacity:0;width:1px;height:1px}
.tabbed:has(input[value=places]:checked) .panel-trades,.tabbed:has(input[value=trades]:checked) .panel-places{display:none}
.list-title{font-size:18px;padding-bottom:9px;border-bottom:2px solid var(--ink)}
.page-head h1 .shield{display:inline-grid;vertical-align:middle;margin:0 6px 6px 0}
.page-head h1 .picto{vertical-align:middle;display:inline-grid;margin-right:4px}
@media (max-width:1040px){.atlas-row{grid-template-columns:minmax(0,1fr)}.tabbed .scroll{max-height:420px}}
/* Lists that share the board: days on Closing soon, sources, stats, tables. */
.lead.day{margin-top:30px}
.lead.day:first-child{margin-top:8px}
.src-name{font:700 18px/1.3 var(--sans)}
.index .nolink{display:flex;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid var(--rule);font-weight:600}
.index .nolink b{margin-left:auto}
.stats{display:flex;flex-wrap:wrap;gap:16px 48px;margin:10px 0 20px}
.stats b{display:block;font:800 34px/1.1 var(--sans)}
.stats span{color:var(--muted);font-size:15px}
.per-month{margin:18px 0 6px}
.bars svg rect{fill:var(--green)}
.data{width:100%;border-collapse:collapse;font-size:15px}
.data th{text-align:left;font:600 14px/1.2 var(--narrow);color:var(--muted);padding:10px 12px 8px 0;border-bottom:2px solid var(--ink)}
.data td{padding:11px 12px 11px 0;border-bottom:1px solid var(--rule);vertical-align:top}
.data .r{text-align:right}
.data td small{display:block;color:var(--muted)}
.data a{text-decoration:underline;text-decoration-color:var(--rule);text-underline-offset:4px}
.table-wrap{overflow-x:auto}
.facts.legal{max-width:760px}
.d b.word{font-size:20px;line-height:1.2;padding:6px 9px}
.d.soon b.word{margin-right:-9px}
.d:not(.soon) b.word{font-size:17px;padding:4px 0}
.dist b.word{font-size:46px;line-height:1;padding:14px 16px}

/* Phones: the first tender reaches the first screen; the last crumb (the page itself) is already the heading. */
@media (max-width:720px){.plate .lede{font-size:15px;line-height:1.4}.sky .live span:nth-child(2){display:none}.sky{padding-bottom:44px}.sky .stand::before,.sky .stand::after{height:56px}.crumbs [aria-current]{display:none}.crumbs span:nth-last-child(2){display:none}.map-switch{position:static;margin-top:10px;justify-content:center}.work .tabs:not(.switch){flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0 -16px;padding:0 44px 0 16px;mask-image:linear-gradient(90deg,#000 calc(100% - 44px),transparent)}.work .tabs a{white-space:nowrap}}

/* Secondary filters: inline on wide screens, folded behind "More filters" on phones. */
.more-filters{flex:4 1 620px;min-width:0}
.more-filters summary{list-style:none;cursor:pointer;font-weight:700;min-height:44px;display:flex;align-items:center;gap:8px}
.more-filters summary::-webkit-details-marker{display:none}
.more-filters summary::after{content:"";width:8px;height:8px;border-right:2px solid var(--ink);border-bottom:2px solid var(--ink);transform:rotate(45deg) translateY(-3px);transition:transform .2s var(--ease)}
.more-filters[open] summary::after{transform:rotate(-135deg)}
.more-filters .fold{display:flex;flex-wrap:wrap;gap:12px}
@media (min-width:721px){.more-filters summary{display:none}.more-filters::details-content{content-visibility:visible;display:block}}
@media (max-width:720px){.more-filters{flex:1 1 100%}.more-filters .fold{padding-top:8px}.tabs.places{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:6px -16px 4px;padding:0 44px 0 16px;mask-image:linear-gradient(90deg,#000 calc(100% - 44px),transparent)}.tabs.places a{white-space:nowrap}}

/* Bar charts (contracts ending per month, award values). */
.bars svg{display:block;width:100%;height:200px;border-bottom:1px solid var(--ink)}
.bars rect{fill:#7fb09a}
.bars-labels{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;text-align:center;font-size:14px;color:var(--muted);margin-top:6px}
.bars-labels b{display:block;color:var(--ink);font-size:15px;font-variant-numeric:tabular-nums}
@media (min-width:721px){.t p{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.t p>span{margin-right:16px}}
/* The rates ticker: a green band under the scene that rolls the euro rates of the currencies tenders are priced in (CSS only). */
.ticker{position:relative;display:flex;background:var(--green);color:#fff;overflow:hidden;white-space:nowrap;font:600 15px/1 var(--narrow);box-shadow:inset 0 1px 0 #ffffff33}
.ticker .asof{position:relative;z-index:1;flex:none;margin:0;height:44px;line-height:44px;padding:0 18px 0 16px;background:#00603c;color:#d7eadf;font-weight:500;box-shadow:10px 0 12px -6px #00603c}
.ticker .roll{display:flex;width:max-content;animation:roll 80s linear infinite}
.ticker ul{display:flex;align-items:center;gap:0;margin:0;padding:0;list-style:none}
.ticker li{height:44px;line-height:44px;padding:0 26px 0 0}
.ticker li::after{content:"";display:inline-block;vertical-align:middle;width:5px;height:5px;border-radius:50%;background:var(--yellow);margin-left:20px}
.ticker li b{font-weight:800;font-variant-numeric:tabular-nums}
.ticker li span{color:#bfd9ca;font-size:13px}
.ticker .asof .short{display:none}
.ticker:hover .roll,body:has(#motion:checked) .ticker .roll{animation-play-state:paused}
@keyframes roll{to{transform:translateX(calc(-100% / 3))}}
@media (max-width:720px){.ticker{font-size:14px}.ticker .roll{animation-duration:55s}.ticker .asof{padding:0 12px;font-size:13px}.ticker .asof .long{display:none}.ticker .asof .short{display:inline}}
/* The language strip on the home sign: the four languages written out, as buttons; the top-bar codes stay for every page. */
.lang-row{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px}
.lang-row a{padding:7px 14px;border-radius:999px;border:2px solid #ffffff8c;color:#fff;font:700 15px/1.2 var(--sans);text-decoration:none;transition:background .15s,border-color .15s}
.lang-row a:hover{border-color:#fff;background:#ffffff1f}
.lang-row a[aria-current]{background:#fff;border-color:#fff;color:var(--green)}
.lang-row a:focus-visible{outline:3px solid var(--yellow);outline-offset:2px}
@media (max-width:720px){.lang-row{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:12px}.lang-row a{padding:7px 2px;font-size:13px;text-align:center}}
.m-only{display:none}
@media (max-width:900px){.tb-week .m-only{display:inline}}
/* All trades: one ruled board, the trade's pictogram, its open count, this week's closings, and the week's closings. */
.trades-board{margin:8px 0 0}
.tb-head,.tb-row{display:grid;grid-template-columns:52px minmax(0,1fr) 120px 190px;gap:var(--gap);align-items:center}
.tb-head{padding:10px 0 8px;border-bottom:2px solid var(--ink);font:600 14px/1.2 var(--narrow);color:var(--muted)}
.tb-head .r,.tb-row .r{text-align:right}
.tb-row{padding:14px 0;border-bottom:1px solid var(--rule)}
.tb-name{font:700 19px/1.25 var(--sans);color:var(--ink)}
.tb-name:hover{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:4px;text-decoration-color:var(--green)}
.tb-open b{font:800 22px/1 var(--sans)}
.tb-week{font-size:17px;color:var(--muted)}
@media (max-width:900px){.tb-head{display:none}.tb-row{grid-template-columns:52px minmax(0,1fr) auto;row-gap:8px}.tb-week{grid-column:2/4;grid-row:2;text-align:left!important;font-size:15px}}

/* Alerts: the sign-up form sits on the one green plate of the page; the signed-in view is plain sheets. */
.alert-link{display:inline-flex;align-items:center;gap:8px;margin-top:12px;font-weight:700;font-size:var(--t-meta);color:var(--green-deep);text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:4px}
.alert-link .i{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linejoin:round}
.alerts{padding-bottom:48px}
.alert-plate,.mine,.alerts .page-head{max-width:920px}
.alerts h2{font:800 var(--t-section)/1.2 var(--sans)}
.alerts .notice{margin:14px 0 4px;padding:12px 16px;border-radius:10px;background:var(--green-tint);color:var(--green-deep);font-weight:600;max-width:62ch}
.alerts .notice.bad{background:#fbe9e7;color:var(--red)}
.alert-plate{padding:30px 34px 24px;margin-top:22px}
.alert-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:end}
.alert-form label{display:grid;gap:7px;font-weight:600;font-size:var(--t-meta);min-width:0}
.alert-form .wide{grid-column:1/-1}
.alert-form input,.alert-form select{font:500 18px var(--sans);color:var(--ink);background:#fff;border:0;border-radius:9px;min-height:56px;padding:0 16px;width:100%;min-width:0}
.alert-form select{appearance:none;padding-right:40px;background-image:linear-gradient(45deg,transparent 50%,var(--ink) 50%),linear-gradient(135deg,var(--ink) 50%,transparent 50%);background-position:calc(100% - 22px) 26px,calc(100% - 17px) 26px;background-size:5px 5px;background-repeat:no-repeat}
.alert-form input::placeholder{color:#66726c}
.alert-form input:focus,.alert-form select:focus{outline:3px solid var(--yellow);outline-offset:2px}
.alert-form .go{grid-column:1/-1;justify-self:start}
.alert-form .trap{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.alert-plate .terms{position:relative;margin-top:18px;font-size:var(--t-meta);max-width:70ch}
.alert-form.plain{padding:18px;background:var(--sheet);border-radius:14px;margin-top:12px}
.alert-form.plain label{color:var(--muted);font:600 var(--t-label)/1.2 var(--narrow)}
.alert-form.plain input,.alert-form.plain select{background-color:var(--ground);border:2px solid transparent;min-height:50px;font-size:17px}
.alert-form.plain input:focus,.alert-form.plain select:focus{outline:none;border-color:var(--green)}
.alert-form.plain .go{background:var(--green);color:#fff;min-height:50px}
.alert-form.plain .go:hover{background:var(--green-deep)}
.alert-form.short{grid-template-columns:minmax(0,1fr) auto}
.alert-form.short .wide{grid-column:auto}
.alert-form.short .go{grid-column:auto}
.signin{margin-top:40px;max-width:640px}
.signin h2{font-size:var(--t-title)}
.mine{margin-top:22px}
.mine h2{margin-top:26px}
.alert-row{margin-top:12px;padding:20px 0 6px;border-top:2.5px solid var(--ink)}
.alert-row .label{font:800 var(--t-title)/1.3 var(--sans)}
.alert-row .when{color:var(--muted);font-size:var(--t-meta);margin-top:2px}
.alert-row .see{display:inline-flex;align-items:center;gap:8px;margin-top:8px;font-weight:700;color:var(--green-deep)}
.alert-row .see .i,.alert-card .go .i{width:18px;height:18px}
.text-btn{background:none;border:0;padding:8px 0;font:600 var(--t-meta) var(--sans);color:var(--ink);text-decoration:underline;text-underline-offset:4px;cursor:pointer}
.text-btn.danger{color:var(--red)}
.account-foot{display:flex;flex-wrap:wrap;align-items:center;gap:8px 24px;margin-top:30px;padding-top:14px;border-top:1px solid var(--rule);color:var(--muted);font-size:var(--t-meta)}
.alert-card{margin:34px 0 10px;max-width:640px}
.alert-card h1{font:800 clamp(28px,3.2vw,40px)/1.1 var(--sans);letter-spacing:-.02em}
.alert-card.done{padding:24px 28px;background:var(--sheet);border-radius:14px;border-left:8px solid var(--green)}
.alert-card p{margin-top:10px}
.alert-card .label{font-weight:800;font-size:var(--t-title)}
.alert-card form{margin-top:20px}
.alert-card .go{background:var(--green);color:#fff}
.alert-card .go:hover{background:var(--green-deep)}
.alert-card .more{margin-top:20px}
@media (max-width:720px){
  .alert-plate{padding:24px 20px 20px}
  .alert-form,.alert-form.short{grid-template-columns:1fr;gap:10px}
  .alert-form input,.alert-form select{min-height:48px}
  .alert-form .go{justify-self:stretch;justify-content:center}
}
/* The plan box: the paid offer as a brown-edged sheet (brown = the paid service colour on the site), the paid state as one quiet line. */
.plan{margin-top:34px;padding:22px 24px;background:var(--sheet);border-radius:14px;border-left:8px solid var(--brown);max-width:920px}
.plan h2{margin:0!important}
.plan p{margin-top:8px;max-width:62ch}
.plan form{margin-top:16px}
.plan .go{background:var(--brown);color:#fff}
.plan .go:hover{background:var(--brown-deep)}
.plan .go .i{width:18px;height:18px}
.plan.paid{display:flex;flex-wrap:wrap;align-items:center;gap:6px 24px;border-left-color:var(--green)}
.plan.paid p,.plan.paid form{margin:0}
.mine h2 .count{font:600 var(--t-meta) var(--sans);color:var(--muted);margin-left:8px}
.alert-row.paused .label,.alert-row.paused .see{opacity:.55}
.alert-row.paused .when{color:var(--brown-deep);font-weight:600}
/* Site search: a field in the top bar (not on the home page or the results page, which have their own).
   Where the bar is tight it folds to the magnifier and opens over the menu on focus; typed text keeps it open. */
.bar .wrap{position:relative}
.seek{margin-left:auto;display:flex;align-items:center;position:relative}
.seek+.tools{margin-left:0}
.seek label{position:absolute;left:12px;display:grid;place-items:center;color:var(--muted);cursor:text}
.seek input{font:500 var(--t-meta) var(--sans);color:var(--ink);background:var(--ground);border:1px solid var(--rule);border-right:0;border-radius:9px 0 0 9px;height:42px;width:250px;padding:0 12px 0 40px;caret-color:var(--green)}
.seek input::placeholder{color:#66726c}
.seek input:focus{outline:3px solid var(--yellow);outline-offset:0;background:#fff}
.seek input::-webkit-search-cancel-button{cursor:pointer}
.seek button{height:42px;padding:0 16px;border:0;border-radius:0 9px 9px 0;background:var(--green);color:#fff;font:800 var(--t-meta) var(--sans);cursor:pointer;transition:background .15s}
.seek button:hover{background:var(--green-deep)}
/* Folded: below 1280 px the English and Italian bars run out of room; from 801 px up the French and German menus
   (class .tight) and any bar showing the Saved link never leave room; under 800 px the field shares the first row. */
@media (min-width:1041px) and (max-width:1279px),(max-width:800px){
  .seek label{position:static;width:44px;height:44px;border-radius:9px;color:var(--ink);cursor:pointer}
  .seek label:hover{background:var(--ground)}
  .seek input{position:absolute;width:1px;padding:0;border:0;opacity:0}
  .seek button{display:none}
  .seek:is(:focus-within,:has(input:not(:placeholder-shown))){position:absolute;z-index:5;top:50%;right:28px;transform:translateY(-50%);width:min(560px,calc(100% - 56px));padding:6px;background:var(--sheet);border-radius:12px;box-shadow:0 0 0 1px var(--rule),0 12px 30px rgba(24,32,29,.14)}
  .seek:is(:focus-within,:has(input:not(:placeholder-shown))) label{position:absolute;left:18px;width:auto;height:auto;background:none;color:var(--muted)}
  .seek:is(:focus-within,:has(input:not(:placeholder-shown))) input{position:static;flex:1;width:auto;min-width:0;padding:0 12px 0 40px;border:1px solid var(--rule);border-right:0;opacity:1}
  .seek:is(:focus-within,:has(input:not(:placeholder-shown))) button{display:block}
}
@media (min-width:801px){
  .seek:is(.tight,.bar:has(.saved:not([hidden])) .seek) label{position:static;width:44px;height:44px;border-radius:9px;color:var(--ink);cursor:pointer}
  .seek:is(.tight,.bar:has(.saved:not([hidden])) .seek) label:hover{background:var(--ground)}
  .seek:is(.tight,.bar:has(.saved:not([hidden])) .seek) input{position:absolute;width:1px;padding:0;border:0;opacity:0}
  .seek:is(.tight,.bar:has(.saved:not([hidden])) .seek) button{display:none}
  .seek:is(.tight,.bar:has(.saved:not([hidden])) .seek):is(:focus-within,:has(input:not(:placeholder-shown))){position:absolute;z-index:5;top:50%;right:28px;transform:translateY(-50%);width:min(560px,calc(100% - 56px));padding:6px;background:var(--sheet);border-radius:12px;box-shadow:0 0 0 1px var(--rule),0 12px 30px rgba(24,32,29,.14)}
  .seek:is(.tight,.bar:has(.saved:not([hidden])) .seek):is(:focus-within,:has(input:not(:placeholder-shown))) label{position:absolute;left:18px;width:auto;height:auto;background:none;color:var(--muted)}
  .seek:is(.tight,.bar:has(.saved:not([hidden])) .seek):is(:focus-within,:has(input:not(:placeholder-shown))) input{position:static;flex:1;width:auto;min-width:0;padding:0 12px 0 40px;border:1px solid var(--rule);border-right:0;opacity:1}
  .seek:is(.tight,.bar:has(.saved:not([hidden])) .seek):is(:focus-within,:has(input:not(:placeholder-shown))) button{display:block}
}
/* Narrow desktops: tighter bar spacing and the Saved link as icon + count (as on phones), so the long French and German menus stay on one line beside the magnifier. */
@media (min-width:1041px) and (max-width:1279px){.bar .wrap{gap:18px}nav.main a{padding-left:10px;padding-right:10px}.tools{gap:12px}.saved span{display:none}}
@media (max-width:800px){.seek:is(:focus-within,:has(input:not(:placeholder-shown))){top:7px;transform:none}}
@media (min-width:801px) and (max-width:1040px){.seek:is(.tight,.bar:has(.saved:not([hidden])) .seek):is(:focus-within,:has(input:not(:placeholder-shown))){top:7px;transform:none}}
@media (max-width:720px){
  .seek:is(:focus-within,:has(input:not(:placeholder-shown))){right:16px;width:calc(100% - 32px)}
  .seek input,.seek button{height:44px}
  .seek input{font-size:16px} /* iOS zooms into smaller fields */
}
/* "Also on tender.zone": the index lists, side by side, above the board. */
.hits{margin:26px 0 8px}
.hits h2{font:800 var(--t-section)/1.2 var(--sans);margin-bottom:14px}
.hits-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:0 32px}
.hits li a span{min-width:0;line-height:1.3;overflow-wrap:anywhere}
.hits li a small{margin-left:8px;font-weight:500;font-size:var(--t-meta);color:var(--muted)}
.hits li a>svg.i{color:var(--green)}
.hits ul{margin-bottom:22px}
@media (max-width:720px){.hits li:nth-child(n+4){display:none}.hits{margin-top:18px}}
/* Plan choice on the alerts sign-up plate: two radio cards. The chosen one turns white; the paid one carries the
   brown edge of the paid service. The Stripe line under the form shows only while Paid is chosen. */
.plans{grid-column:1/-1;border:0;padding:0;margin:0 0 6px;min-width:0}
.plans legend{padding:0;margin-bottom:7px;font-weight:600;font-size:var(--t-meta)}
.plan-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.alert-form .plan-card{position:relative;display:grid;gap:4px;align-content:start;padding:16px 18px 16px 50px;border-radius:12px;background:rgba(255,255,255,.06);box-shadow:inset 0 0 0 2px rgba(255,255,255,.5);color:#fff;cursor:pointer;transition:background .15s,color .15s}
.alert-form .plan-card:hover{background:rgba(255,255,255,.14)}
.alert-form .plan-card input{position:absolute;left:18px;top:18px;width:20px;height:20px;min-height:0;padding:0;margin:0;border-radius:50%;accent-color:var(--green);cursor:pointer}
.alert-form .plan-card input:focus{outline:none}
.alert-form .plan-card:has(input:focus-visible){outline:3px solid var(--yellow);outline-offset:2px}
.alert-form .plan-card:has(input:checked){background:#fff;color:var(--ink);box-shadow:none}
.alert-form .plan-paid:has(input:checked){box-shadow:inset 8px 0 0 var(--brown)}
.pc-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:2px 12px}
.pc-head b{font:800 var(--t-title)/1.25 var(--sans)}
.pc-head .num{font-weight:800;font-size:var(--t-meta)}
.plan-paid:has(input:checked) .pc-head .num{color:var(--brown-deep)}
.pc-desc{font-weight:500;font-size:var(--t-meta);line-height:1.4}
.paid-note{display:none}
.alert-plate:has(.plan-paid input:checked) .paid-note{display:inline}
@media (max-width:720px){.plan-cards{grid-template-columns:1fr;gap:10px}}
