:root{--paper:#f3f1ec;--ink:#090909;--navy:#0d173f;--teal:#00b7b2;--line:#17171755}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:Montserrat,Arial,sans-serif;overflow-x:hidden}body:before{content:"";position:fixed;inset:0;background:url('assets/prfest-paper-texture.jpg') center/cover repeat-y;opacity:.18;z-index:-4;pointer-events:none}a{color:inherit;text-decoration:none}button{font:inherit}.site-header{height:82px;padding:0 4.2vw;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:30;background:#f3f1ecee;backdrop-filter:blur(8px);border-bottom:1px solid #0001}.nav-brand img{width:230px;display:block}.nav-brand:hover img{opacity:.72}.menu{display:none;background:none;border:0;font-size:24px}nav[aria-label="Primary navigation"]{display:flex;gap:38px;font-size:12px;font-weight:700;letter-spacing:.16em}nav[aria-label="Primary navigation"] a{position:relative;padding:9px 0;transition:color .2s}nav[aria-label="Primary navigation"] a:after{content:"";position:absolute;left:0;right:0;bottom:1px;height:3px;background:var(--teal);transform:scaleX(0);transition:transform .2s}nav[aria-label="Primary navigation"] a:hover,nav[aria-label="Primary navigation"] a.active{color:var(--teal)}nav[aria-label="Primary navigation"] a:hover:after,nav[aria-label="Primary navigation"] a.active:after{transform:scaleX(1)}.section-shell{padding-left:4.2vw;padding-right:4.2vw}
.project-hero{min-height:calc(100svh - 82px);position:relative;display:flex;align-items:center;justify-content:center;padding:60px 4.2vw 72px;overflow:hidden}.hero-texture{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center top;opacity:.72;z-index:0;pointer-events:none;mask-image:linear-gradient(to bottom,#000 0%,#000 72%,rgba(0,0,0,.5) 88%,transparent 100%);-webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 72%,rgba(0,0,0,.5) 88%,transparent 100%)}.hero-composition{position:relative;z-index:1;width:min(1260px,100%);display:grid;grid-template-columns:minmax(0,560px) minmax(0,680px);align-items:center;justify-content:center;gap:24px}.hero-lockup{display:grid;grid-template-columns:28px 18px minmax(0,1fr);column-gap:15px;align-items:start;max-width:560px}.hero-logo{display:block;width:min(100%,500px);height:auto;max-width:100%}.hero-bar{width:18px;height:100%;min-height:190px;display:flex;flex-direction:column}.hero-bar span{flex:1}.hero-bar span:nth-child(1){background:#16a7c8}.hero-bar span:nth-child(2){background:#ec1770}.hero-bar span:nth-child(3){background:#f4d719}.hero-bar span:nth-child(4){background:#111}.hero-reg-wrap{display:flex;align-items:center;justify-content:center;align-self:stretch}.hero-reg{width:18px;height:18px;object-fit:contain}.hero-logo-wrap{min-width:0}.hero-logo-wrap p{font-size:9px;font-weight:600;letter-spacing:.095em;margin:-1px 0 0;padding-left:4%;white-space:nowrap}.hero-art{height:min(610px,45vw);display:flex;align-items:center;justify-content:center}.hero-art>img{height:min(610px,45vw);width:auto;max-width:100%;display:block;object-fit:contain}
.project-intro{display:grid;grid-template-columns:minmax(0,42%) minmax(0,58%);align-items:center;gap:0;padding-top:32px;padding-bottom:76px}.intro-copy{padding-right:3vw;max-width:560px}.intro-copy h2,.visual-language>h2{font-size:clamp(22px,2.2vw,32px);letter-spacing:.05em;margin:0 0 16px;font-weight:700}.intro-copy p{font-size:clamp(13px,1.05vw,16px);line-height:1.55;margin:0 0 30px;max-width:470px}.intro-copy h3{font-size:11px;letter-spacing:.13em;margin:0 0 9px}.intro-copy .role{font-size:10px;line-height:1.45;letter-spacing:.045em;margin:0}.intro-art{display:flex;justify-content:flex-end;min-width:0}.intro-art img{display:block;width:min(100%,780px);height:auto}
.visual-language{padding-bottom:72px}.visual-language>h2{margin:0 0 50px}.language-system{display:grid;grid-template-columns:1.15fr 1px 1.05fr 1px .9fr 1px 1.5fr;align-items:center;width:100%;min-height:150px}.language-divider{width:1px;height:92px;background:var(--line);justify-self:center}.language-piece{min-width:0;display:flex;align-items:center;justify-content:center;padding:0 22px}.language-logo{justify-content:flex-start;padding-left:0}.language-logo img{width:min(190px,100%);height:auto;display:block}.language-palette img{width:min(175px,100%);height:auto;display:block}.language-type img{width:min(190px,100%);height:auto;display:block}.language-floral{justify-content:flex-end;padding-right:0}.language-floral img{width:min(310px,100%);height:auto;display:block}
.portfolio{padding-bottom:8px}.portfolio-row{display:flex;align-items:stretch;gap:14px;margin-bottom:14px}.portfolio-piece{border:0;background:none;padding:0;overflow:hidden;min-width:0;position:relative;cursor:zoom-in}.portfolio-piece img{display:block;width:100%;height:100%;transition:transform .2s ease}.portfolio-piece:hover img{transform:scale(1.008)}
.stage-row{height:390px}.stage-piece{flex:2.35}.stage-piece img{object-fit:cover;object-position:center}.sign-piece{object-fit:contain}.sign-piece img{object-fit:contain;object-position:center}.viewing-piece{flex:0 0 16%}.cashless-piece{flex:0 0 14%}.portfolio-video-row{margin-bottom:14px}.video-frame{position:relative;width:100%;aspect-ratio:16/8.2;background:#0d173f;overflow:hidden}.video-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0}.video-fallback{position:absolute;right:16px;bottom:14px;background:#0d173f;color:#fff;padding:10px 14px;font-size:9px;font-weight:700;letter-spacing:.1em;opacity:.88}.video-fallback:hover{background:var(--teal)}
.menu-row{height:330px}.menu-row .portfolio-piece{height:100%;object-fit:contain}.menu-row .portfolio-piece:nth-child(1){flex:0.40 1 0}.menu-row .portfolio-piece:nth-child(2){flex:0.40 1 0}.menu-row .portfolio-piece:nth-child(3){flex:1.56 1 0}.menu-row .portfolio-piece:nth-child(4){flex:0.70 1 0}.menu-row .portfolio-piece img{object-fit:contain;object-position:center}
.wristband-row{height:250px}.wristband-row .portfolio-piece:first-child{flex:3.05 1 0}.wristband-row .wristband-mock{flex:1.25 1 0;display:flex;align-items:center;justify-content:center}.wristband-row .wristband-mock img{object-fit:contain;object-position:center}
.social-row{height:330px}.social-row .portfolio-piece:first-child{flex:1.43 1 0}.social-row .portfolio-piece:last-child{flex:1.08 1 0}.social-row .portfolio-piece img{object-fit:contain;object-position:center}
.portfolio-piece:focus-visible{outline:3px solid var(--teal);outline-offset:3px}.project-nav{display:flex;justify-content:space-between;align-items:flex-start;padding-top:64px;padding-bottom:96px;font-size:13px;font-weight:700;letter-spacing:.12em}.project-nav a{display:flex;flex-direction:column;gap:11px}.project-nav .next{text-align:right}.project-nav strong{font-size:13px;letter-spacing:.08em}.project-nav a:hover{color:var(--teal)}footer{min-height:440px;background:var(--teal);color:#fff;position:relative}.tear{position:absolute;top:-64px;left:0;right:0;height:90px;overflow:visible;z-index:2;pointer-events:none}.tear img{width:100%;height:90px;object-fit:fill;object-position:bottom;display:block}.foot{min-height:440px;padding:85px 4.2vw 24px;display:grid;grid-template-columns:1.2fr 1fr;grid-template-rows:1fr auto;column-gap:8vw;position:relative;z-index:3}.footer-logo{width:min(470px,48vw);max-height:220px;object-fit:contain;object-position:left top;align-self:start}.footer-links{display:grid;grid-template-columns:1fr 1.35fr;gap:5vw;align-self:start;padding-top:6px}.footer-links div{display:flex;flex-direction:column;gap:9px}.footer-links strong{font-size:9px;letter-spacing:.18em;margin-bottom:4px}.footer-links a{font-size:10px;font-weight:600;letter-spacing:.1em}.footer-links a:hover{color:#111}.foot-bottom{grid-column:1/-1;border-top:1px solid #ffffff66;padding-top:14px;align-self:end;font-size:9px;font-weight:700;letter-spacing:.1em}
.lightbox{position:fixed;inset:0;background:rgba(6,6,6,.9);z-index:100;display:flex;align-items:flex-start;justify-content:center;padding:45px 5vw;opacity:0;visibility:hidden;transition:.22s}.lightbox.open{opacity:1;visibility:visible}.lightbox-frame{width:min(100%,1100px);height:calc(100vh - 90px);overflow:auto;background:#111;box-shadow:0 25px 80px #0008}.lightbox-image{width:auto;max-width:100%;height:auto;display:block;margin:0 auto}.lightbox-close{position:fixed;top:18px;right:22px;width:42px;height:42px;border:1px solid #fff6;border-radius:50%;background:#111;color:#fff;font-size:30px;line-height:1;cursor:pointer;z-index:101}.lightbox-close:hover{background:var(--teal)}
@media (min-width:901px) and (max-width:1200px){.hero-composition{grid-template-columns:48% 52%;gap:0}.hero-logo{width:min(100%,460px)}.hero-art{height:44vw}.hero-art>img{height:44vw}.project-intro{grid-template-columns:40% 60%}.intro-copy{padding-right:4vw}.stage-row{height:330px}.menu-row{height:270px}.wristband-row{height:205px}.social-row{height:275px}}
@media(max-width:900px){.site-header{height:68px;padding:0 20px}.nav-brand img{width:190px}.menu{display:block}nav[aria-label="Primary navigation"]{display:none;position:absolute;top:68px;left:0;right:0;background:var(--paper);padding:18px 20px;flex-direction:column;gap:0}nav[aria-label="Primary navigation"].open{display:flex}nav[aria-label="Primary navigation"] a{padding:14px 0}.section-shell{padding-left:20px;padding-right:20px}.project-hero{min-height:690px;display:flex;flex-direction:column;align-items:stretch;padding:45px 20px 62px}.hero-composition{display:flex;flex-direction:column;align-items:stretch;width:100%;gap:0}.hero-lockup{grid-template-columns:16px 10px minmax(0,1fr);column-gap:8px;max-width:100%;align-items:start}.hero-logo{width:min(100%,360px)}.hero-bar{width:10px;min-height:130px}.hero-reg-wrap{align-self:stretch}.hero-reg{width:15px;height:15px}.hero-logo-wrap p{font-size:8px;letter-spacing:.06em;white-space:nowrap;line-height:1.3;margin:1px 0 0;padding-left:4%}.hero-art{margin-top:34px;height:auto;align-self:center;width:100%;display:flex;justify-content:center}.hero-art>img{width:min(100%,580px);height:auto}.project-intro{grid-template-columns:1fr;gap:32px;padding-top:35px;padding-bottom:68px}.intro-copy{padding-right:0}.intro-art{width:100%;justify-content:flex-start}.intro-art img{width:100%;height:auto}.intro-copy p{font-size:13px}.intro-copy .role{font-size:9px}.visual-language{padding-bottom:44px}.visual-language>h2{margin-bottom:28px}.language-system{grid-template-columns:repeat(6,1fr);grid-template-rows:auto auto;min-height:0;row-gap:12px;column-gap:4px}.language-divider{display:none}.language-piece{padding:0;justify-content:center;min-width:0}.language-logo{grid-column:1 / 3;grid-row:1}.language-type{grid-column:3 / 5;grid-row:1}.language-palette{grid-column:5 / 7;grid-row:1}.language-floral{grid-column:1 / 7;grid-row:2;justify-content:center}.language-logo img{width:min(112px,92%)}.language-type img{width:min(120px,92%)}.language-palette img{width:min(112px,92%)}.language-floral img{width:min(250px,92%)}.portfolio{padding-bottom:6px}.portfolio-row{display:grid;grid-template-columns:1fr;gap:10px;margin-bottom:10px}.stage-row,.menu-row,.wristband-row,.social-row{height:auto}.portfolio-piece img{width:100%;height:auto;object-fit:contain}.stage-piece{order:1}.sign-piece{width:100%;height:auto}.sign-piece img{height:auto;object-fit:contain}.viewing-piece,.cashless-piece{flex:none}.portfolio-video-row{margin-bottom:10px}.video-frame{aspect-ratio:16/9}.video-fallback{font-size:8px;right:10px;bottom:10px;padding:8px 10px}.menu-row{grid-template-columns:1fr 1fr}.menu-row .portfolio-piece{height:auto}.menu-row .portfolio-piece:nth-child(n){flex:none}.menu-row .portfolio-piece img{height:330px;object-fit:contain}.wristband-row{grid-template-columns:1fr}.wristband-row .portfolio-piece:first-child{width:100%}.wristband-row .wristband-mock{width:100%;min-height:340px}.wristband-row .wristband-mock img{max-width:480px;height:auto}.social-row{grid-template-columns:1fr}.social-row .portfolio-piece img{height:auto;width:100%;object-fit:contain}.project-nav{padding-top:52px;padding-bottom:88px;font-size:10px}.project-nav strong{font-size:11px}.foot{min-height:420px;padding:85px 20px 18px;grid-template-columns:1fr;grid-template-rows:auto auto 1fr;row-gap:40px}.footer-logo{width:78vw}.footer-links{grid-template-columns:1fr 1fr;gap:25px;padding-top:0}.foot-bottom{align-self:end;font-size:8px}.lightbox{padding:55px 12px 20px}.lightbox-frame{height:calc(100vh - 75px)}.lightbox-close{top:9px;right:10px}}
@media(max-width:520px){.hero-logo{width:min(100%,310px)}.hero-lockup p{font-size:7px}.menu-row .portfolio-piece img{height:250px}.stacked-signs .portfolio-piece img{height:250px}.language-system{gap:18px 10px}.project-nav{padding-bottom:84px}}

/* V4 surgical refinements */
@media (min-width: 901px){
  .language-system{grid-template-columns:1fr 1px 1fr 1px 1fr 1px 1fr}
  .language-piece{padding-left:10px;padding-right:10px}
  .language-logo img{width:min(150px,100%)}
  .language-palette img{width:min(135px,100%)}
  .language-type img{width:min(145px,100%)}
  .language-floral img{width:min(235px,100%)}

  .stage-row{height:390px}
  .stage-piece{flex:1.333 1 0}
  .viewing-piece,.cashless-piece{flex:0.415 1 0}
  .sign-piece img{object-fit:contain}

  .wristband-row .portfolio-piece:first-child{flex:2.25 1 0}
  .wristband-row .wristband-mock{flex:1.75 1 0}

  .social-row{height:330px}
  .social-row .portfolio-piece:first-child{flex:1.429 1 0}
  .social-row .portfolio-piece:last-child{flex:1.204 1 0}
  .social-row .portfolio-piece img{object-fit:cover}
}
@media (min-width: 901px) and (max-width: 1200px){
  .stage-row{height:330px}
  .wristband-row{height:205px}
  .social-row{height:275px}
}
@media (max-width: 900px){
  .language-logo img{width:min(96px,82%)}
  .language-type img{width:min(105px,82%)}
  .language-palette img{width:min(96px,82%)}
  .language-floral img{width:min(220px,82%)}
  .wristband-row .wristband-mock{min-height:390px}
  .wristband-row .wristband-mock img{max-width:560px}
  .social-row .portfolio-piece img{width:100%;height:auto;object-fit:contain}
}

/* V5 surgical refinements */
@media (min-width: 1201px){
  .hero-composition{width:min(1380px,100%);grid-template-columns:minmax(0,560px) minmax(0,760px);gap:24px}
  .hero-art{height:min(660px,48vw)}
  .hero-art>img{height:min(660px,48vw);max-width:760px}
}

/* Return Visual Language to the previous, more open treatment. */
@media (min-width: 901px){
  .language-system{grid-template-columns:1.15fr 1px 1.05fr 1px .9fr 1px 1.5fr}
  .language-piece{padding-left:22px;padding-right:22px}
  .language-logo{justify-content:flex-start;padding-left:0}
  .language-logo img{width:min(190px,100%)}
  .language-palette img{width:min(175px,100%)}
  .language-type img{width:min(190px,100%)}
  .language-floral{justify-content:flex-end;padding-right:0}
  .language-floral img{width:min(310px,100%)}

  /* Give the wristband mockup real height, not just a wider column. */
  .wristband-row{height:340px}
  .wristband-row .portfolio-piece:first-child{flex:2.4 1 0}
  .wristband-row .wristband-mock{flex:1.6 1 0}

  /* Preserve every pixel of the social/lower-third artwork. */
  .social-row .social-piece,
  .social-row .portfolio-piece img{object-fit:contain}
}

@media (min-width: 901px) and (max-width: 1200px){
  .wristband-row{height:285px}
}

@media (max-width: 900px){
  .language-logo img{width:min(112px,92%)}
  .language-type img{width:min(120px,92%)}
  .language-palette img{width:min(112px,92%)}
  .language-floral img{width:min(250px,92%)}
}

/* V6 surgical refinements: preserve the artwork, enlarge the 3D wristband, and match the mockup's final-row presentation. */
@media (min-width: 901px){
  /* Wristbands: the flat production strip stays contained while the 3D mockup gets the visual emphasis. */
  .wristband-row{
    height: 320px;
    align-items:center;
  }
  .wristband-row .portfolio-piece:first-child{
    flex: 2.8 1 0;
    height: auto;
    align-self:center;
  }
  .wristband-row .portfolio-piece:first-child img{
    width:100%;
    height:auto;
    object-fit:contain;
  }
  .wristband-row .wristband-mock{
    flex: 1.15 1 0;
    height:100%;
    align-self:center;
  }
  .wristband-row .wristband-mock img{
    width:100%;
    height:100%;
    object-fit:contain;
  }

  /* Final row: full-row presentation, but never crop the actual design work. */
  .social-row{
    height: auto;
    min-height: 430px;
    align-items:center;
  }
  .social-row .portfolio-piece{
    height: 430px;
    display:flex;
    align-items:center;
    justify-content:center;
    background: transparent;
  }
  .social-row .portfolio-piece:first-child{
    flex:1.143 1 0;
  }
  .social-row .portfolio-piece:last-child{
    flex:1.066 1 0;
  }
  .social-row .portfolio-piece img{
    width:100%;
    height:100%;
    object-fit:contain;
  }
}

@media (min-width: 901px) and (max-width: 1200px){
  .wristband-row{height:260px}
  .social-row{min-height:350px}
  .social-row .portfolio-piece{height:350px}
}

/* V7 surgical refinements: let the final row size to the artwork, and reduce type specimen weight. */
@media (min-width: 901px){
  /* The type specimen should support the visual language, not dominate it. */
  .language-type img{width:min(130px,100%)}

  /* Final row: use the artwork's natural proportions so nothing is cropped or distorted.
     The row fills the available width, while its height is allowed to grow with the images. */
  .social-row{
    height:auto;
    min-height:0;
    align-items:center;
  }
  .social-row .portfolio-piece{
    height:auto;
    display:flex;
    align-items:center;
    justify-content:center;
    background:transparent;
  }
  .social-row .portfolio-piece:first-child{flex:1.43 1 0}
  .social-row .portfolio-piece:last-child{flex:1.08 1 0}
  .social-row .portfolio-piece img{
    width:100%;
    height:auto;
    object-fit:contain;
  }
}

@media (min-width: 901px) and (max-width: 1200px){
  .social-row .portfolio-piece img{width:100%;height:auto}
}

/* V8: final presentation row — match the mockup exactly.
   The two source artworks have different widths but nearly identical aspect ratios.
   Give each column its native aspect-ratio share so both images reach the same height,
   fill the row, and remain completely uncropped. */
@media (min-width: 901px){
  .social-row{
    display:grid;
    grid-template-columns:minmax(0, 1.18919fr) minmax(0, 1.20408fr);
    gap:14px;
    height:auto;
    align-items:start;
  }
  .social-row .portfolio-piece,
  .social-row .portfolio-piece:first-child,
  .social-row .portfolio-piece:last-child{
    flex:none;
    width:100%;
    height:auto;
    min-height:0;
    display:block;
  }
  .social-row .portfolio-piece img{
    display:block;
    width:100%;
    height:auto;
    object-fit:contain;
    object-position:center;
  }
}
