/* Architectural competitions — shared homepage, directory and detail styles. */
.competitions{position:relative;background:var(--carbon);border-block:1px solid var(--line-1);overflow:hidden}
.competitions::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.45;background-image:linear-gradient(var(--line-1) 1px,transparent 1px),linear-gradient(90deg,var(--line-1) 1px,transparent 1px);background-size:64px 64px;mask-image:linear-gradient(to bottom,#000,transparent 78%)}
.competitions__head{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(240px,.36fr);gap:clamp(30px,7vw,110px);align-items:end;margin-bottom:42px}
.competitions__head .lede{max-width:720px}
.competitions__summary{border-left:1px solid var(--line-2);padding-left:24px}
.competitions__summary b{display:block;color:var(--agent);font:500 clamp(2.5rem,5vw,5rem)/.9 var(--f-mono);letter-spacing:-.08em;margin-bottom:10px}
.competitions__summary p{margin:0;color:var(--paper-mute);font-size:var(--step--1)}
.competitions__grid{position:relative;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(16px,2vw,28px);background:transparent;border:0}
.competition-card{min-width:0;background:var(--card);border:1px solid var(--line-2);display:flex;flex-direction:column;transition:transform .28s var(--ease),border-color .28s ease,box-shadow .28s ease}
.competition-card:hover{transform:translateY(-4px);border-color:var(--line-3);box-shadow:0 20px 45px rgba(0,0,0,.16)}
.competition-card__visual{position:relative;display:block;aspect-ratio:16/8;overflow:hidden;background:linear-gradient(145deg,var(--viz-a),var(--viz-b));border-bottom:1px solid var(--line-1)}
.competition-card__visual img{width:100%;height:100%;object-fit:cover;filter:saturate(.78) contrast(1.04);transition:transform .55s var(--ease),filter .4s ease}
.competition-card:hover .competition-card__visual img{transform:scale(1.025);filter:saturate(1) contrast(1.02)}
.competition-card__grid{position:absolute;inset:0;background-image:linear-gradient(var(--line-1) 1px,transparent 1px),linear-gradient(90deg,var(--line-1) 1px,transparent 1px);background-size:32px 32px}
.competition-card__grid::before{content:"";position:absolute;width:58%;aspect-ratio:1;right:-8%;bottom:-48%;border:1px solid var(--instrument);border-radius:50%;box-shadow:0 0 0 28px color-mix(in srgb,var(--instrument) 12%,transparent),0 0 0 62px color-mix(in srgb,var(--agent) 8%,transparent)}
.competition-card__grid::after{content:"OPEN CALL";position:absolute;right:20px;bottom:14px;color:var(--line-3);font:500 clamp(1.4rem,3vw,3rem)/1 var(--f-mono);letter-spacing:.08em}
.competition-card__grid i,.competition-card__grid em{position:absolute;left:18px;color:var(--paper-mute);font:500 .56rem/1 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;font-style:normal}
.competition-card__grid i{bottom:18px}.competition-card__grid em{top:52px;left:auto;right:18px;max-width:calc(100% - 112px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right;color:var(--instrument)}
.competition-card__deadline{position:absolute;left:16px;top:16px;width:64px;height:68px;background:var(--paper);color:var(--void);display:grid;place-content:center;text-align:center;z-index:1}
.competition-card__deadline b{font:600 1.55rem/1 var(--f-mono)}
.competition-card__deadline small{font:500 .63rem/1 var(--f-mono);letter-spacing:.18em;margin-top:6px}
.competition-card__featured{position:absolute;right:16px;top:16px;border:1px solid currentColor;color:var(--agent);padding:5px 8px;font:500 .6rem/1 var(--f-mono);letter-spacing:.12em;text-transform:uppercase}
.competition-card.is-ended{opacity:.78}
.competition-card.is-ended .competition-card__visual{filter:grayscale(.55)}
.competition-card__ended{color:var(--paper-mute);background:var(--void)}
.competition-card__body{padding:24px;display:flex;flex:1;flex-direction:column}
.competition-card__eyebrow{margin:0 0 14px;color:var(--instrument);font:500 .66rem/1.5 var(--f-mono);letter-spacing:.08em;text-transform:uppercase}
.competition-card h3{font-size:clamp(1.12rem,1.6vw,1.45rem);line-height:1.08;margin-bottom:13px}
.competition-card h3 a:hover{color:var(--instrument)}
.competition-card__body>p:not(.competition-card__eyebrow){margin:0;color:var(--paper-dim);font-size:.88rem;line-height:1.65;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.competition-card__tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:18px}
.competition-card__tags span{border:1px solid var(--line-2);padding:4px 7px;color:var(--paper-mute);font:500 .59rem/1.25 var(--f-mono);letter-spacing:.08em;text-transform:uppercase}
.competition-card__meta{display:flex;justify-content:space-between;gap:15px;align-items:end;border-top:1px solid var(--line-1);margin-top:22px;padding-top:16px;color:var(--paper-mute);font:400 .66rem/1.4 var(--f-mono)}
.competition-card__meta b{color:var(--paper-dim);font-weight:500}
.competition-card__meta a{flex:0 0 auto;color:var(--instrument)}
.competitions__foot{position:relative;display:flex;justify-content:space-between;align-items:center;gap:24px;margin-top:30px}
.competition-subscribe{position:relative;display:grid;grid-template-columns:minmax(0,.78fr) minmax(420px,1.22fr);gap:clamp(38px,7vw,110px);margin-top:clamp(55px,8vw,100px);padding:clamp(28px,5vw,64px);border:1px solid var(--line-2);background:color-mix(in srgb,var(--graphite) 72%,transparent)}
.competition-subscribe__copy h3{font-size:clamp(1.7rem,3.1vw,3.2rem);margin:20px 0}
.competition-subscribe__copy>p{max-width:520px;color:var(--paper-dim)}
.competition-subscribe__copy ul{display:grid;gap:8px;margin-top:24px;color:var(--paper-mute);font:400 .68rem/1.5 var(--f-mono)}
.competition-subscribe__copy li::before{content:"+";margin-right:9px;color:var(--instrument)}
.competition-subscribe__form{align-self:center}
.competition-subscribe__fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.competition-subscribe .field{display:grid;gap:7px}
.competition-subscribe label,.competition-subscribe legend{font:500 .63rem/1.4 var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--paper-mute)}
.competition-subscribe input[type="text"],.competition-subscribe input[type="email"]{width:100%;height:46px;border:1px solid var(--line-2);border-radius:0;background:var(--void);color:var(--paper);font:400 .82rem/1 var(--f-mono);padding:0 13px;outline:0}
.competition-subscribe input:focus{border-color:var(--instrument)}
.competition-subscribe__trap{position:absolute!important;left:-10000px!important;width:1px!important;height:1px!important;overflow:hidden!important}
.competition-subscribe__topics{border:0;padding:0;margin:20px 0 0;display:flex;flex-wrap:wrap;gap:12px 22px}
.competition-subscribe__topics legend{width:100%;margin-bottom:3px}
.competition-subscribe__topics label,.competition-subscribe__consent{display:flex;align-items:flex-start;gap:8px;text-transform:none;letter-spacing:0;color:var(--paper-dim)}
.competition-subscribe input[type="checkbox"]{accent-color:var(--instrument);margin:2px 0 0}
.competition-subscribe__consent{margin-top:18px;max-width:700px;font-size:.6rem!important}
.competition-subscribe__consent a{text-decoration:underline;text-underline-offset:3px}
.competition-subscribe__action{display:flex;align-items:center;gap:18px;margin-top:22px}
.competition-subscribe__action p{margin:0;color:var(--paper-mute)}
.competition-subscribe__action p.is-success{color:var(--ok)}
.competition-subscribe__action p.is-error{color:var(--agent)}
.competitions-empty{grid-column:1/-1;padding:clamp(42px,7vw,90px);background:var(--card);text-align:center}
.competitions-empty h2,.competitions-empty h3{margin:13px 0;font-size:var(--step-2)}
.competitions-empty p{max-width:620px;margin:0 auto;color:var(--paper-dim)}
.competitions-empty .btn{margin-top:24px}

.competitions-page{padding-top:var(--header-h);min-height:75vh}
.competitions-hero{padding:var(--page-hero-pad-top) 0 var(--page-hero-pad-bottom);border-bottom:1px solid var(--line-1);background:radial-gradient(circle at 75% 20%,var(--hero-wash),transparent 36%)}
.competitions-hero__inner{display:grid;grid-template-columns:minmax(0,1fr) minmax(220px,.33fr);gap:60px;align-items:end}
.competitions-hero h1{max-width:16ch;margin:0}
.competitions-hero .page-hero__sub{max-width:46ch}
.competitions-hero__note{border:1px solid var(--line-2);padding:22px;color:var(--paper-mute);font:400 .72rem/1.7 var(--f-mono)}
.competitions-directory{padding:clamp(60px,8vw,110px) 0}
.competitions-directory__bar{display:flex;justify-content:space-between;gap:25px;margin-bottom:25px;color:var(--paper-mute);font:400 .7rem/1.4 var(--f-mono);text-transform:uppercase;letter-spacing:.08em}
.competitions-directory .competitions__grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.competitions-directory--ended{padding-top:0;border-top:1px solid var(--line-1)}
[hidden]{display:none!important}

.competition-detail-page{padding-top:var(--header-h);min-height:78vh}
.competition-detail-wrap{padding:0 0 clamp(80px,10vw,150px)}
.competition-detail{display:grid;gap:clamp(18px,2.4vw,32px);background:transparent}
.competition-detail__hero{display:grid;grid-template-columns:minmax(0,1fr) 210px;gap:40px;padding:clamp(28px,5vw,74px);background:var(--void)}
.competition-detail__hero,.competition-detail__image,.competition-detail__content{border:1px solid var(--line-2);background-color:var(--void)}
.competition-detail__organiser{margin:0;color:var(--instrument);font:500 .75rem/1.4 var(--f-mono);letter-spacing:.1em;text-transform:uppercase}
.competition-detail h1{max-width:16ch;margin:0}
.competition-detail__copy .page-hero__sub{max-width:46ch}
.competition-detail__actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:32px}
.competition-detail__date{align-self:start;border:1px solid var(--line-2);padding:20px;display:flex;flex-direction:column;text-align:center;font-family:var(--f-mono)}
.competition-detail__date>span{font-size:.62rem;text-transform:uppercase;letter-spacing:.12em;color:var(--paper-mute)}
.competition-detail__date b{font-size:4.5rem;line-height:.95;margin:17px 0 5px;color:var(--agent)}
.competition-detail__date strong{font-size:1rem;letter-spacing:.18em}
.competition-detail__date small{margin-top:15px;color:var(--paper-mute)}
.competition-detail__image{margin:0;max-height:680px;overflow:hidden;background:var(--viz-a)}
.competition-detail__image img{width:100%;height:100%;max-height:680px;object-fit:cover}
.competition-detail__image--generated{min-height:clamp(300px,42vw,590px);padding:clamp(28px,6vw,78px);display:flex;flex-direction:column;justify-content:flex-end;position:relative;isolation:isolate;background:radial-gradient(circle at 72% 34%,color-mix(in srgb,var(--instrument) 26%,transparent),transparent 22%),radial-gradient(circle at 67% 62%,color-mix(in srgb,var(--agent) 20%,transparent),transparent 28%),linear-gradient(135deg,var(--viz-a),var(--viz-b))}
.competition-detail__image--generated::before,.competition-detail__image--generated::after{content:"";position:absolute;z-index:-1;inset:8%;border:1px solid var(--line-2);transform:skewY(-8deg)}
.competition-detail__image--generated::after{inset:18% 11% 13% 42%;border-color:var(--instrument);transform:skewY(12deg) rotate(-6deg)}
.competition-detail__image--generated span,.competition-detail__image--generated small{font:500 .64rem/1.4 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--instrument)}
.competition-detail__image--generated strong{max-width:17ch;margin:15px 0;font-size:clamp(2rem,5vw,5.5rem);line-height:.95;letter-spacing:-.055em}
.competition-detail__image--generated small{color:var(--paper-mute)}
.competition-detail__content{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,.36fr);gap:clamp(45px,8vw,120px);padding:clamp(30px,6vw,80px)}
.competition-detail__content section h2{font-size:var(--step-2);margin:20px 0}
.competition-detail__content section>p{max-width:760px;color:var(--paper-dim);font-size:var(--step-1);line-height:1.75}
.competition-detail__content aside{border-left:1px solid var(--line-2);padding-left:30px}
.competition-detail__content aside h2{font-size:1.05rem;margin-bottom:22px}
.competition-detail__content dl{margin:0}
.competition-detail__content dl>div{border-top:1px solid var(--line-1);padding:13px 0}
.competition-detail__content dt{color:var(--paper-mute);font:500 .62rem/1.4 var(--f-mono);letter-spacing:.09em;text-transform:uppercase}
.competition-detail__content dd{margin:5px 0 0;color:var(--paper-dim)}
.competition-disclaimer{border-top:1px solid var(--line-2);margin-top:38px!important;padding-top:22px;font-size:.78rem!important;color:var(--paper-mute)!important}
.competition-official{margin-top:32px;padding:22px;border:1px solid var(--line-2);display:grid;gap:8px;background:color-mix(in srgb,var(--instrument) 5%,transparent)}
.competition-official span{font:500 .62rem/1.4 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--paper-mute)}
.competition-official a{color:var(--instrument);overflow-wrap:anywhere}.competition-official a:hover{text-decoration:underline;text-underline-offset:4px}
.competition-not-found{padding:clamp(70px,12vw,180px) 0;text-align:center}
.competition-not-found h1{margin:20px auto;max-width:760px}
.competition-not-found p{color:var(--paper-dim);margin:0 auto 30px}

@media(max-width:980px){
  .competitions__grid,.competitions-directory .competitions__grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .competitions__head,.competitions-hero__inner{grid-template-columns:1fr}
  .competitions__summary{border-left:0;border-top:1px solid var(--line-2);padding:20px 0 0}
  .competition-detail__content{grid-template-columns:1fr}
  .competition-detail__content aside{border-left:0;border-top:1px solid var(--line-2);padding:30px 0 0}
  .competition-subscribe{grid-template-columns:1fr}
}
@media(max-width:640px){
  .competitions__grid,.competitions-directory .competitions__grid{grid-template-columns:1fr}
  .competitions__foot,.competitions-directory__bar{align-items:flex-start;flex-direction:column}
  .competition-detail__hero{grid-template-columns:1fr}
  .competition-detail__date{width:100%;display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:12px;text-align:left}
  .competition-detail__date b{font-size:2.6rem;margin:0}
  .competition-detail__date small{grid-column:1/-1;margin-top:0}
  .competition-subscribe__fields{grid-template-columns:1fr}
  .competition-subscribe__action{align-items:flex-start;flex-direction:column}
}
