/* Timing Perfection 2026 editorial homepage. Loaded only when $homeDesign is true. */
body:has(.tp-home) { background:#080808; }
body:has(.tp-home) .site-header { background:rgba(8,8,8,.96); border-bottom:1px solid rgba(212,175,55,.2); }
body:has(.tp-home) .site-header.is-scrolled { background:rgba(8,8,8,.98); }
body:has(.tp-home) .site-header .btn-primary { border-radius:0; font-size:11px; letter-spacing:.14em; }
.tp-home { --tp-black:#080808; --tp-cream:#f3efe7; --tp-gold:#d4af37; --tp-gold-light:#efd278; --tp-teal:#315e61; font-family:Arial,Helvetica,sans-serif; background:var(--tp-black); color:#fafaf8; overflow:hidden; line-height:1.65; }
.tp-home * { box-sizing:border-box; }
.tp-home h1,.tp-home h2,.tp-home h3,.tp-home p { margin:0; }
.tp-home a { text-decoration:none; }
.tp-container { width:min(1240px,calc(100% - 48px)); margin-inline:auto; }
.tp-display { font-family:Georgia,'Times New Roman',serif; font-weight:400; letter-spacing:-.045em; }
.tp-display em { font-weight:400; }
.tp-kicker { font-size:11px; color:var(--tp-gold-light); text-transform:uppercase; letter-spacing:4px; font-weight:400; margin-bottom:20px!important; }
.tp-kicker-line { display:flex; align-items:center; gap:14px; }
.tp-kicker-line::before { content:''; width:38px; height:1px; background:var(--tp-gold); }
.tp-actions { display:flex; flex-wrap:wrap; align-items:center; gap:12px; margin-top:26px; }
.tp-button { display:inline-flex; align-items:center; justify-content:center; min-height:52px; padding:13px 27px; border:1px solid var(--tp-gold); background:transparent; color:#fafaf8; font-size:10px; font-weight:600; letter-spacing:2px; line-height:1.3; text-transform:uppercase; transition:background .25s,color .25s; }
.tp-button:hover { background:var(--tp-gold); color:#080808; }
.tp-button-outline { border-color:rgba(255,255,255,.6); }
.tp-button-outline:hover { border-color:#fff; background:#fff; color:#111; }
.tp-home a:focus-visible { outline:2px solid #f1d477; outline-offset:4px; }
.tp-hero { min-height: min(850px,88vh); display:flex; align-items:flex-end; position:relative; background:linear-gradient(90deg,rgba(0,0,0,.83),rgba(0,0,0,.5) 47%,rgba(0,0,0,.15)),linear-gradient(0deg,rgba(0,0,0,.75),transparent 50%),url('../img/home/hero-skyline.jpg') center/cover no-repeat; }
.tp-hero-inner { position:relative; padding:145px 0 95px; }
.tp-hero h1 { max-width:790px; font-size:clamp(60px,8.4vw,114px); line-height:.87; }
.tp-hero h1 em { display:block; color:var(--tp-gold-light); }
.tp-lead { max-width:575px; margin-top:30px!important; font-size:15px; line-height:1.85; color:#deddd8; }
.tp-feature-strip { background:#0d0d0d; border-block:1px solid #292929; }
.tp-features { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); }
.tp-feature { min-height:116px; display:flex; align-items:center; gap:17px; padding:22px; border-right:1px solid #2c2c2c; color:#fff; }
.tp-feature:last-child { border-right:0; }
.tp-feature-number { font-family:Georgia,serif; font-size:28px; color:var(--tp-gold); }
.tp-feature strong,.tp-feature small { display:block; }
.tp-feature strong { font-size:10px; text-transform:uppercase; letter-spacing:2px; }
.tp-feature small { font-size:11px; font-weight:400; color:#999; margin-top:6px; }
.tp-intro { padding:125px 0; background:var(--tp-cream); color:#111; }
.tp-intro-grid { display:grid; grid-template-columns:.7fr 1.3fr; gap:90px; }
.tp-intro .tp-kicker,.tp-retail .tp-kicker,.tp-final .tp-kicker { color:#94701f; }
.tp-intro h2 { font-size:clamp(43px,5.8vw,78px); line-height:1; }
.tp-intro h2 em { color:#8c6a24; }
.tp-intro-grid > div > p { max-width:650px; margin-top:32px; color:#565656; font-size:15px; line-height:1.9; }
.tp-studios { padding:120px 0; background:#0b0b0b; }
.tp-section-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:35px; margin-bottom:54px; }
.tp-section-heading h2 { font-size:clamp(46px,6vw,80px); line-height:.95; }
.tp-section-heading > p { max-width:365px; font-size:13px; color:#999; }
.tp-studio-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:18px; }
.tp-studio-card { position:relative; min-height:610px; overflow:hidden; background:linear-gradient(145deg,#333,#141414); }
.tp-studio-card:nth-child(2) { background:linear-gradient(145deg,#323439,#101112); }
.tp-studio-card:nth-child(3) { background:linear-gradient(145deg,#3c3530,#101010); }
.tp-studio-card > img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:transform .6s; }
.tp-studio-card:hover > img { transform:scale(1.035); }
.tp-studio-card::after { content:''; position:absolute; inset:0; background:linear-gradient(0deg,rgba(0,0,0,.94),rgba(0,0,0,.08) 65%); pointer-events:none; }
.tp-studio-copy { position:absolute; z-index:1; bottom:35px; left:32px; right:25px; }
.tp-studio-number { font:italic 15px Georgia,serif; color:var(--tp-gold); }
.tp-studio-copy h3 { font:400 34px Georgia,serif; margin:9px 0 7px; }
.tp-studio-copy p { color:#c7c7c7; font-size:12px; margin-bottom:18px; }
.tp-text-link { display:inline-flex; gap:12px; align-items:center; color:var(--tp-gold-light); font-size:10px; text-transform:uppercase; letter-spacing:2px; }
.tp-text-link:hover { text-decoration:underline; }
.tp-retail { display:grid; grid-template-columns:1fr 1fr; min-height:680px; background:var(--tp-cream); color:#111; }
.tp-retail-image,.tp-workshop-image { min-height:580px; background:linear-gradient(135deg,#b8b1a6,#514d4b); }
.tp-retail-image img,.tp-workshop-image img { width:100%; height:100%; object-fit:cover; }
.tp-retail-content { display:flex; flex-direction:column; justify-content:center; padding:80px clamp(40px,7vw,110px); }
.tp-retail h2 { font-size:clamp(50px,6vw,84px); line-height:.9; }
.tp-retail h2 em { display:block; color:#997529; }
.tp-retail-content > p:not(.tp-kicker) { font-size:14px; line-height:1.8; color:#5e5e5e; margin-top:27px; max-width:490px; }
.tp-button-dark-text { color:#111; }
.tp-dark-link { color:#6d551b; }
.tp-jph { position:relative; overflow:hidden; padding:125px 0; background:linear-gradient(120deg,#1d3d3f,#315e61 58%,#527a78); }
.tp-jph::before { content:'JPH'; position:absolute; right:-35px; bottom:-95px; font:400 min(33vw,470px) Georgia,serif; line-height:1; color:rgba(255,255,255,.04); pointer-events:none; }
.tp-jph-grid { position:relative; display:grid; grid-template-columns:1.1fr .9fr; gap:100px; align-items:center; }
.tp-jph .tp-kicker { color:#b8d0cd; }
.tp-jph h2 { font-size:clamp(55px,7vw,95px); line-height:.9; margin:20px 0 25px; }
.tp-jph h2 em { color:#d8e5e2; }
.tp-jph-grid > div > p:not(.tp-kicker) { max-width:570px; color:#d2dfdd; font-size:14px; line-height:1.85; margin-bottom:28px; }
.tp-jph blockquote { padding:45px 0 45px 50px; border-left:1px solid rgba(255,255,255,.3); margin:0; }
.tp-jph blockquote p { font:italic clamp(30px,4vw,47px)/1.1 Georgia,serif; margin-bottom:25px; }
.tp-jph cite { font:normal 10px Arial,sans-serif; text-transform:uppercase; letter-spacing:3px; color:#b8d0cd; }
.tp-workshops { padding:125px 0; background:#101010; }
.tp-workshop-grid { display:grid; grid-template-columns:.8fr 1.2fr; gap:90px; align-items:center; }
.tp-workshop-image { height:630px; background:linear-gradient(140deg,#303030,#121212); }
.tp-workshop-copy h2 { font-size:clamp(50px,6vw,82px); line-height:.95; margin-bottom:25px; }
.tp-workshop-copy h2 em { display:block; color:var(--tp-gold-light); }
.tp-workshop-copy > p:not(.tp-kicker) { max-width:530px; font-size:14px; line-height:1.8; color:#aaa; }
.tp-workshop-list { margin:38px 0; border-top:1px solid #303030; }
.tp-workshop-list a { display:flex; justify-content:space-between; align-items:center; gap:20px; padding:19px 0; border-bottom:1px solid #303030; color:#f7f7f5; font:18px Georgia,serif; }
.tp-workshop-list a span { color:var(--tp-gold); }
.tp-workshop-list a:hover { color:var(--tp-gold-light); }
.tp-final { text-align:center; padding:145px 0; background:var(--tp-cream); color:#111; }
.tp-final h2 { max-width:950px; margin:auto; font-size:clamp(55px,8vw,105px); line-height:.9; }
.tp-final h2 em { color:#92701e; }
.tp-final > .tp-container > p:not(.tp-kicker) { max-width:550px; margin:25px auto 30px; font-size:14px; color:#666; }
.tp-final .tp-actions { justify-content:center; }
.tp-button-filled { background:#111; border-color:#111; color:#fff; }
.tp-button-filled:hover { background:var(--tp-gold); border-color:var(--tp-gold); }
/* The shared five-column footer uses the same layout as the interior pages. */
@media(max-width:1100px) { .tp-jph-grid { gap:45px; } }
@media(max-width:900px) { .tp-features { grid-template-columns:repeat(2,1fr); } .tp-feature:nth-child(2) { border-right:0; } .tp-feature:nth-child(-n+2) { border-bottom:1px solid #292929; } .tp-intro-grid,.tp-jph-grid,.tp-workshop-grid { grid-template-columns:1fr; gap:44px; } .tp-studio-grid { grid-template-columns:1fr; } .tp-studio-card { min-height:560px; } .tp-retail { grid-template-columns:1fr; } .tp-retail-image { min-height:460px; } .tp-section-heading { align-items:flex-start; } }
@media(max-width:600px) { .tp-container { width:calc(100% - 32px); } .tp-hero { min-height:700px; } .tp-hero-inner { padding:110px 0 65px; } .tp-hero h1 { font-size:clamp(50px,13vw,68px); } .tp-lead { font-size:14px; } .tp-feature { padding:18px 12px; gap:10px; min-height:100px; } .tp-feature-number { font-size:22px; } .tp-feature strong { font-size:9px; letter-spacing:1px; } .tp-intro,.tp-studios,.tp-jph,.tp-workshops,.tp-final { padding:85px 0; } .tp-section-heading { display:block; } .tp-section-heading > p { margin-top:20px; } .tp-studio-card { min-height:490px; } .tp-retail-content { padding:75px 25px; } .tp-jph blockquote { border-left:0; border-top:1px solid rgba(255,255,255,.3); padding:35px 0 0; } .tp-workshop-image { height:430px; min-height:0; } }
@media(prefers-reduced-motion:reduce) { .tp-home * { scroll-behavior:auto!important; transition:none!important; } }
/* Preserve the round Book pill on the homepage. */
body:has(.tp-home) .site-header .header-book {border-radius:999px}

/* Homepage revisions: photo-led intro and six square studio tiles */
.tp-intro-with-photo {grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(35px,6vw,100px);align-items:center}
.tp-intro-photo {position:relative;min-width:0;margin:0;aspect-ratio:4/5;max-height:580px;overflow:hidden;background:linear-gradient(145deg,#7d6f5e,#262626)}
.tp-intro-photo img {display:block;width:100%;height:100%;object-fit:cover}
.tp-intro-photo figcaption {position:absolute;left:12px;bottom:12px;right:12px;padding:8px 10px;width:fit-content;background:rgba(0,0,0,.7);color:#fff;font:10px/1.5 Arial,Helvetica,sans-serif;letter-spacing:.02em}
.tp-intro-copy {min-width:0}
.tp-intro-copy > p:not(.tp-kicker) {margin-top:32px;color:#565656;font-size:15px;line-height:1.9}
.tp-studio-card {min-height:0;aspect-ratio:1/1}
.tp-studio-card > img {display:block}
.tp-studio-copy {bottom:25px;left:24px;right:22px}
.tp-studio-copy h3 {font-size:clamp(25px,2.5vw,36px);line-height:1.08;margin:10px 0 17px}
.tp-studio-copy .tp-text-link {font-size:10px;letter-spacing:.13em}
.tp-studio-number {font-size:12px;letter-spacing:.04em}
.tp-studio-photo-note {position:absolute;top:16px;left:16px;z-index:1;padding:6px 9px;background:rgba(0,0,0,.58);color:#e9e3d8;font-size:10px;letter-spacing:.04em}
.tp-studio-soon::after {background:linear-gradient(0deg,rgba(0,0,0,.92),rgba(0,0,0,.3) 78%)}
.tp-studio-coming {display:inline-block;color:#e8c775;font-size:11px;letter-spacing:.12em;text-transform:uppercase}
.tp-studio-section-actions {display:flex;justify-content:center;margin-top:40px}
/* The events preview is populated from the existing events table. */
.tp-upcoming {padding-top:72px;margin-top:74px;border-top:1px solid #343434}
.tp-upcoming-header {display:flex;align-items:end;justify-content:space-between;gap:35px;margin-bottom:30px}
.tp-upcoming-header h3 {font-size:clamp(43px,5vw,68px);line-height:1.02}
.tp-upcoming-header h3 em {color:var(--tp-gold-light)}
.tp-upcoming-header > p {max-width:360px;color:#aaa;font-size:13px;line-height:1.8}
.tp-upcoming-grid {display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.tp-upcoming-card {display:flex;flex-direction:column;min-width:0;min-height:320px;background:#191919;border:1px solid #38332b}
.tp-upcoming-date {display:flex;justify-content:space-between;align-items:center;gap:10px;padding:17px 20px;background:#27221a;border-bottom:1px solid #4a4030}
.tp-upcoming-date > span {color:#ccb87c;font:600 10px/1.2 Arial,sans-serif;letter-spacing:.13em}
.tp-upcoming-date strong {font:400 23px/1.15 Georgia,serif;color:#f2d889;white-space:nowrap}
.tp-upcoming-info {display:flex;flex-direction:column;align-items:start;gap:14px;padding:24px 20px;flex:1}
.tp-upcoming-type {font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:#d7be80}
.tp-upcoming-info h4 {font:400 25px/1.14 Georgia,serif;color:#fff;letter-spacing:-.02em;margin:0}
.tp-upcoming-description {color:#bdb9b0;font-size:12px;line-height:1.65;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.tp-upcoming-location {color:#a6a19a;font-size:11px}
.tp-upcoming-info .tp-text-link {margin-top:auto;font-size:10px;letter-spacing:.11em}
.tp-upcoming-empty {padding:40px;border:1px solid #353535;background:#191919;color:#c5c0b6;font-size:14px}
.tp-upcoming-actions {display:flex;justify-content:center;margin-top:32px}
.tp-workshop-copy .tp-actions {margin-top:30px}
@media (max-width:1050px) {.tp-upcoming-grid {grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:900px) {
  .tp-intro-with-photo {grid-template-columns:1fr 1.15fr;gap:30px}
  .tp-studio-grid {grid-template-columns:repeat(2,minmax(0,1fr))}
  .tp-studio-card {min-height:0;aspect-ratio:1/1}
  .tp-workshop-grid {grid-template-columns:1fr 1fr;gap:38px}
}
@media (max-width:700px) {
  .tp-intro-with-photo,.tp-workshop-grid {grid-template-columns:1fr}
  .tp-intro-photo {max-height:490px;aspect-ratio:5/4}
  .tp-upcoming-header {align-items:start;flex-direction:column;gap:15px}
  .tp-upcoming {padding-top:56px;margin-top:58px}
  .tp-workshop-image {height:360px;min-height:0}
}
@media (max-width:600px) {
  .tp-studio-grid,.tp-upcoming-grid {grid-template-columns:1fr}
  .tp-studio-card {aspect-ratio:1/1;min-height:0}
  .tp-studio-copy {bottom:27px}
  .tp-upcoming-card {min-height:0}
  .tp-upcoming-info {min-height:210px}
}
/* Keep footer columns identical to the interior pages at every breakpoint. */
@media (max-width:1100px) {body:has(.tp-home) .site-footer .footer-grid {grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:700px) {body:has(.tp-home) .site-footer .footer-grid {grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:450px) {body:has(.tp-home) .site-footer .footer-grid {grid-template-columns:1fr}}

.tp-intro-copy > .tp-kicker {margin-top:0}
