/* ==========================================================================
   CenterStage Pets — site extensions.
   New components built on top of styles.css (V15 design language).
   Same tokens, same typography, same feel.
   ========================================================================== */

/* ============ BUTTONS ============ */
.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  padding:14px 30px;
  border-radius:999px;
  font-family:var(--font-body);
  font-size:12px;
  font-weight:700;
  letter-spacing:.16em;
  text-transform:uppercase;
  cursor:pointer;
  border:1.5px solid transparent;
  transition:transform .2s,box-shadow .2s,background .2s,color .2s;
}
.btn:hover{transform:translateY(-2px);}
.btn:active{transform:translateY(0);}
.btn-gold{
  background:linear-gradient(140deg,var(--gold-light),var(--gold) 60%,var(--gold-deep));
  color:var(--plum-dark);
  box-shadow:0 10px 24px rgba(156,120,48,.35);
}
.btn-gold:hover{box-shadow:0 14px 30px rgba(156,120,48,.45);}
.btn-purple{
  background:linear-gradient(140deg,var(--purple),var(--purple-deep));
  color:#fff;
  box-shadow:0 10px 24px rgba(107,63,160,.35);
}
.btn-purple:hover{box-shadow:0 14px 30px rgba(107,63,160,.45);}
.btn-outline{
  border-color:var(--purple);
  color:var(--purple-deep);
  background:transparent;
}
.btn-outline:hover{background:var(--purple);color:#fff;}
.btn-outline-gold{
  border-color:var(--gold);
  color:var(--gold-light);
  background:transparent;
}
.btn-outline-gold:hover{background:var(--gold);color:var(--plum-dark);}
.btn-sm{padding:10px 20px;font-size:11px;}
.btn[disabled]{opacity:.5;cursor:not-allowed;transform:none;}

/* ============ NAV CART COUNT ============ */
.cart-count{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:18px;height:18px;
  padding:0 5px;
  margin-left:2px;
  border-radius:999px;
  background:var(--purple);
  color:#fff;
  font-size:10px;
  font-weight:700;
  letter-spacing:0;
}
.site-nav.is-dark .cart-count{background:var(--gold);color:var(--plum-dark);}

/* ============ PAGE HERO (interior pages) ============ */
.page-hero{
  background:radial-gradient(ellipse 90% 100% at 50% 30%,var(--plum-light) 0%,var(--plum) 58%,var(--plum-dark) 100%);
  color:var(--cream);
  text-align:center;
  padding:clamp(48px,6vw,76px) var(--gutter);
}
.page-hero .eyebrow{color:var(--gold-light);}
.page-hero h1{
  font-size:clamp(32px,4.4vw,50px);
  color:#fff;
  margin-bottom:16px;
}
.page-hero p{
  max-width:680px;
  margin-inline:auto;
  font-size:15.5px;
  line-height:1.8;
  color:#dccdd6;
}

/* ============ OCCASION BANDS + GREETING CARDS ============ */
.occasion{margin-bottom:clamp(44px,5vw,64px);}
.occasion-head{
  display:flex;
  align-items:center;
  gap:18px;
  margin-bottom:clamp(22px,3vw,32px);
}
.occasion-head h2{
  font-size:clamp(26px,3vw,36px);
  text-transform:uppercase;
  letter-spacing:.04em;
  white-space:nowrap;
}
.occasion-head::before,
.occasion-head::after{
  content:"";
  flex:1;
  height:1px;
  background:linear-gradient(90deg,transparent,var(--gold),transparent);
}
.occasion-empty{
  text-align:center;
  font-family:var(--font-display);
  font-size:19px;
  font-style:italic;
  color:var(--muted);
  padding:22px 0 8px;
}

.greet-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr));
  gap:clamp(22px,3vw,32px);
}
.greet-card{
  display:flex;
  flex-direction:column;
  background:var(--card);
  border:1px solid var(--line);
  border-radius:var(--radius);
  overflow:hidden;
  box-shadow:var(--shadow-sm);
  transition:transform .25s ease,box-shadow .25s ease;
}
.greet-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-md);}
/* Framed player: golden bezel around a white square stage. Portrait clips are
   centred on the white, so every card is the same height whatever the clip. */
.greet-screen{
  position:relative;
  aspect-ratio:1/1;
  min-height:0;          /* else the flex item grows to the clip's own height */
  background:#fff;
  border:8px solid var(--frame-gold);
  border-radius:12px;
  overflow:hidden;
  cursor:pointer;
}
/* Absolutely placed so the clip's portrait size never dictates the frame. */
.greet-screen video,
.greet-screen img{
  position:absolute;
  inset:0;
  width:100%;height:100%;
  object-fit:contain;
  background:transparent;   /* the frame's fill shows through the letterbox */
  pointer-events:none;      /* the whole frame opens the theater instead */
}
/* A series ("Bath", "Bath 2", …) sits side by side on one row; each new
   series or lone title starts a fresh row. On phones the grid is a single
   column anyway, so this changes nothing there. */
.greet-card.row-first{grid-column-start:1;}
/* Play badge — the frame is the button, so keep it light on the white stage. */
.screen-play{
  position:absolute;
  left:50%;top:50%;
  transform:translate(-50%,-50%);
  width:64px;height:64px;
  border-radius:50%;
  background:rgba(180,116,26,.9);
  box-shadow:0 6px 20px rgba(42,18,32,.35);
  display:flex;align-items:center;justify-content:center;
  transition:transform .2s ease,background .2s ease;
}
.screen-play::after{
  content:"";
  margin-left:5px;
  border-style:solid;
  border-width:11px 0 11px 17px;
  border-color:transparent transparent transparent #fff;
}
.greet-screen:hover .screen-play,
.greet-screen:focus-visible .screen-play{
  background:var(--frame-gold);
  transform:translate(-50%,-50%) scale(1.08);
}
.greet-screen:focus-visible{outline:3px solid var(--purple);outline-offset:3px;}
.greet-body{
  flex:1;
  display:flex;
  flex-direction:column;
  padding:22px 22px 24px;
  text-align:left;
}
.greet-line{
  font-size:9.5px;
  font-weight:700;
  letter-spacing:.22em;
  text-transform:uppercase;
  margin-bottom:8px;
}
.greet-line.is-traditional{color:var(--blue-deep);}
.greet-line.is-attitude{color:var(--purple);}
.greet-body h3{font-size:23px;margin-bottom:8px;}
.greet-excerpt{
  font-size:13.5px;
  line-height:1.75;
  color:var(--body-gray);
  margin-bottom:16px;
}
.greet-foot{
  margin-top:auto;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}
.greet-price{
  font-family:var(--font-display);
  font-size:24px;
  font-weight:700;
  color:var(--heading-purple);
}

/* ============ GREETING DETAIL / PERSONALIZE ============ */
.detail-grid{
  display:grid;
  grid-template-columns:1.15fr .85fr;
  gap:clamp(28px,4vw,52px);
  align-items:start;
}
@media (max-width:900px){.detail-grid{grid-template-columns:1fr;}}
.detail-video .theater-screen{margin-bottom:22px;}
/* Thumbnail standing in for the clip on the detail page's screen. */
.theater-screen img{
  display:block;
  width:100%;height:100%;
  object-fit:contain;
  border-radius:6px;
}
.detail-message{
  padding:clamp(20px,2.6vw,28px);
  border:1px solid var(--line);
  border-radius:var(--radius);
  background:var(--card);
  box-shadow:var(--shadow-sm);
  font-size:15px;
  line-height:1.85;
  color:var(--body-gray);
}
.detail-message .msg-label{
  font-size:10.5px;
  font-weight:700;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:var(--gold-deep);
  margin-bottom:10px;
}

/* ============ FORMS (V15 language) ============ */
.panel{
  background:var(--card);
  border:1px solid var(--line);
  border-radius:var(--radius-lg);
  padding:clamp(24px,3.4vw,38px);
  box-shadow:var(--shadow-md);
}
.panel > h2{font-size:clamp(24px,2.8vw,30px);margin-bottom:6px;}
.panel .panel-sub{
  font-size:13.5px;
  color:var(--body-gray);
  margin-bottom:22px;
}
.field{margin-bottom:18px;}
.field label{
  display:block;
  font-size:11px;
  font-weight:700;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:var(--gold-deep);
  margin-bottom:7px;
}
.field input[type=text],
.field input[type=email],
.field input[type=tel],
.field input[type=number],
.field select,
.field textarea{
  width:100%;
  padding:13px 16px;
  font:inherit;
  font-size:14.5px;
  color:var(--ink);
  background:var(--peach-tint);
  border:1px solid rgba(156,120,48,.35);
  border-radius:12px;
  transition:border-color .2s,box-shadow .2s,background .2s;
}
.field input:focus,
.field select:focus,
.field textarea:focus{
  outline:none;
  background:#fff;
  border-color:var(--purple);
  box-shadow:0 0 0 3px rgba(107,63,160,.15);
}
.field textarea{min-height:110px;resize:vertical;}
.field .hint{font-size:12px;color:var(--muted);margin-top:6px;}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
@media (max-width:560px){.field-row{grid-template-columns:1fr;}}

/* ============ CONTACT ============ */
.contact-grid{
  display:grid;
  grid-template-columns:.9fr 1.1fr;
  gap:clamp(28px,4vw,52px);
  align-items:start;
}
@media (max-width:900px){.contact-grid{grid-template-columns:1fr;}}
.contact-intro h2{
  font-size:clamp(24px,3vw,32px);
  color:var(--heading-purple);
  margin-bottom:18px;
}
.contact-intro p{
  font-size:15px;
  line-height:1.85;
  color:var(--body-gray);
  margin-bottom:16px;
}
.contact-intro .contact-sign{
  font-size:17px;
  font-weight:700;
  color:var(--gold-deep);
}
.check{
  display:flex;align-items:center;gap:10px;
  font-size:13.5px;color:var(--body-gray);
}
.check input{width:17px;height:17px;accent-color:var(--purple);}
.form-error{
  background:#fdecea;
  border:1px solid #f5c6c0;
  color:#a33a2e;
  border-radius:10px;
  padding:12px 16px;
  font-size:13.5px;
  margin-bottom:18px;
}
.form-success{
  background:#eef7ee;
  border:1px solid #bcdfbc;
  color:#2e6b34;
  border-radius:10px;
  padding:12px 16px;
  font-size:13.5px;
  margin-bottom:18px;
}

/* ============ CART / CHECKOUT ============ */
.cart-table{width:100%;border-collapse:collapse;}
.cart-table th{
  text-align:left;
  font-size:10.5px;
  font-weight:700;
  letter-spacing:.2em;
  text-transform:uppercase;
  color:var(--gold-deep);
  padding:0 14px 14px;
  border-bottom:1px solid var(--line);
}
.cart-table td{
  padding:18px 14px;
  border-bottom:1px solid var(--line);
  font-size:14.5px;
  color:var(--body-gray);
  vertical-align:top;
}
.cart-table .item-title{
  font-family:var(--font-display);
  font-size:19px;
  font-weight:600;
  color:var(--heading-purple);
}
.cart-table .item-meta{font-size:12.5px;color:var(--muted);margin-top:3px;}
.cart-table .price-col{white-space:nowrap;font-weight:600;color:var(--ink);}
.cart-remove{
  font-size:11px;
  font-weight:700;
  letter-spacing:.12em;
  text-transform:uppercase;
  color:#a33a2e;
  cursor:pointer;
}
.cart-remove:hover{text-decoration:underline;}
.cart-summary{
  margin-top:24px;
  display:flex;
  justify-content:flex-end;
}
.cart-summary .box{
  min-width:280px;
  padding:22px 26px;
  background:var(--peach-tint);
  border:1px solid rgba(156,120,48,.3);
  border-radius:var(--radius);
}
.summary-row{
  display:flex;
  justify-content:space-between;
  font-size:14px;
  color:var(--body-gray);
  padding:5px 0;
}
.summary-row.total{
  margin-top:8px;
  padding-top:12px;
  border-top:1px solid rgba(156,120,48,.35);
  font-family:var(--font-display);
  font-size:22px;
  font-weight:700;
  color:var(--heading-purple);
}
.cart-empty{
  text-align:center;
  padding:clamp(30px,5vw,60px) 0;
}
.cart-empty p{
  font-family:var(--font-display);
  font-size:clamp(22px,2.6vw,28px);
  font-style:italic;
  color:var(--muted);
  margin-bottom:26px;
}
.checkout-grid{
  display:grid;
  grid-template-columns:1.1fr .9fr;
  gap:clamp(26px,4vw,48px);
  align-items:start;
}
@media (max-width:900px){.checkout-grid{grid-template-columns:1fr;}}
#paypal-button-container{margin-top:20px;}
.pay-note{
  font-size:12.5px;
  color:var(--muted);
  text-align:center;
  margin-top:14px;
}

/* ============ POSTCARD TIERS ============ */
.tier-table{width:100%;max-width:520px;margin-inline:auto;border-collapse:collapse;}
.tier-table th,.tier-table td{
  padding:13px 18px;
  border-bottom:1px solid var(--line);
  font-size:14.5px;
  text-align:center;
}
.tier-table th{
  font-size:10.5px;
  font-weight:700;
  letter-spacing:.2em;
  text-transform:uppercase;
  color:var(--gold-deep);
}
.tier-table td:first-child{font-weight:600;color:var(--ink);}
.tier-table .tier-price{
  font-family:var(--font-display);
  font-size:20px;
  font-weight:700;
  color:var(--heading-purple);
}

/* ============ LIGHTBOX / THEATER (extends V15 modal) ============ */
.video-modal{background:#000;backdrop-filter:none;}
/* The marquee sign is the header; the title stays for screen readers only. */
.video-modal .modal-logo{
  display:block;
  width:min(460px,80%);
  height:auto;
  margin:0 auto 18px;
}
.video-modal .modal-title{
  position:absolute;
  width:1px;height:1px;
  padding:0;margin:-1px;
  overflow:hidden;
  clip-path:inset(50%);
  white-space:nowrap;
}
.video-modal .lightbox-screen{
  margin-bottom:0;
  border-radius:12px;
  box-shadow:
    0 0 0 8px var(--frame-gold),
    0 0 0 10px rgba(201,162,75,.5),
    0 0 44px 10px rgba(201,162,75,.22);
}
/* Square player, as large as the viewport allows (logo header + close button
   need roughly 200px of vertical room). */
.video-modal .modal-frame{width:min(900px,92vw,calc(100vh - 200px));}
.video-modal video{width:100%;max-height:none;background:transparent;}
@media (max-width:700px){
  .video-modal .modal-logo{width:min(300px,86%);margin-bottom:14px;}
  .video-modal .modal-frame{width:min(900px,92vw,calc(100vh - 160px));}
}

/* ============ HOME EXTRAS ============ */
.hero-video{
  align-self:center;
  filter:drop-shadow(0 30px 35px rgba(0,0,0,.45));
}
.hero-video video{width:100%;border-radius:14px;background:#000;}
.hero-cta{margin-top:26px;display:flex;gap:14px;flex-wrap:wrap;}
@media (max-width:1000px){.hero-cta{justify-content:center;}}
.postcard-photo{
  width:100%;
  max-width:800px;
  border-radius:10px;
  box-shadow:var(--shadow-md);
  margin-inline:auto;
}
.center{text-align:center;}
.mt-lg{margin-top:clamp(28px,4vw,44px);}

/* ============ QR SHARING ============ */
.qr-share{
  display:flex;
  align-items:center;
  gap:18px;
  margin-top:14px;
  padding:14px 16px;
  background:var(--peach-tint);
  border:1px solid rgba(156,120,48,.3);
  border-radius:12px;
  width:fit-content;
}
.qr-box{
  background:#fff;
  padding:8px;
  border-radius:8px;
  box-shadow:var(--shadow-sm);
  line-height:0;
}
.qr-box img,.qr-box canvas{width:110px;height:110px;}
.qr-label{
  font-size:11px;
  font-weight:700;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--gold-deep);
  margin-bottom:10px;
}

/* ============ THEATER EXTRAS ============ */
.from-secret{
  font-family:var(--font-script);
  font-size:clamp(28px,3.6vw,38px);
  color:var(--gold-light);
}

/* ============ TOAD'S NOTE — SECOND LAUNCH (homepage) ============ */
.toad-note{padding:var(--section-y) var(--gutter);}
.toad-note-card{
  max-width:var(--wrap);
  margin:0 auto;
  background:#f8f2e4;
  border:3px solid #232d63;
  border-radius:22px;
  padding:5px;
  box-shadow:var(--shadow-md);
}
.toad-note-inner{
  border:1px solid #232d63;
  border-radius:17px;
  padding:clamp(26px,4vw,52px) clamp(20px,4.5vw,64px);
}
.toad-note-head{
  display:flex;
  align-items:baseline;
  justify-content:center;
  gap:14px 34px;
  flex-wrap:wrap;
  margin-bottom:22px;
  text-align:center;
}
.toad-note-head h2{
  font-family:var(--font-display);
  font-size:clamp(26px,3.2vw,40px);
  font-weight:700;
  letter-spacing:.04em;
  text-transform:uppercase;
  color:#232d63;
  margin:0;
}
.toad-note-launch{
  font-family:var(--font-script);
  font-size:clamp(26px,3vw,38px);
  color:#b98c3a;
  line-height:1.1;
  padding-bottom:6px;
  border-bottom:2px solid #b98c3a;
  position:relative;
}
.toad-note-launch::after{
  content:'\2605';
  position:absolute;
  left:50%;
  bottom:-11px;
  transform:translateX(-50%);
  font-size:12px;
  color:#b98c3a;
  background:#f8f2e4;
  padding:0 6px;
}
.toad-note-intro,.toad-note-outro p{
  font-size:15.5px;
  line-height:1.85;
  color:#3a3550;
}
.toad-note-grid{
  display:grid;
  grid-template-columns:1fr 1fr 1fr;
  gap:clamp(22px,3vw,44px);
  margin:34px 0 30px;
}
.toad-note-col{
  text-align:center;
  padding:0 clamp(4px,1vw,14px);
}
.toad-note-col + .toad-note-col{border-left:1px solid rgba(185,140,58,.55);}
.toad-note-icon{
  width:70px;
  height:70px;
  border-radius:50%;
  background:#232d63;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  margin-bottom:14px;
}
.toad-note-icon svg{width:38px;height:38px;fill:#c9a24b;}
.toad-note-col h3{
  font-family:var(--font-display);
  font-size:clamp(20px,2vw,25px);
  font-weight:700;
  letter-spacing:.05em;
  text-transform:uppercase;
  color:#232d63;
  margin-bottom:12px;
  line-height:1.25;
}
.toad-note-col p{
  font-size:14.5px;
  line-height:1.75;
  color:#3a3550;
}
.toad-note-soon{
  display:block;
  margin-top:16px;
  font-family:var(--font-display);
  font-size:19px;
  font-weight:700;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:#b98c3a;
}
.toad-note-outro{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:24px 40px;
  flex-wrap:wrap;
}
.toad-note-sig{text-align:center;flex-shrink:0;}
.toad-note-sig .sig-name{
  font-family:var(--font-script);
  font-size:44px;
  color:#232d63;
  line-height:1;
}
.toad-note-sig .sig-paw{font-size:22px;color:#232d63;vertical-align:top;margin-left:8px;}
.toad-note-sig .sig-title{
  font-family:var(--font-display);
  font-style:italic;
  font-size:17px;
  color:#232d63;
  margin-top:6px;
}
@media (max-width:900px){
  .toad-note-grid{grid-template-columns:1fr;}
  .toad-note-col + .toad-note-col{
    border-left:0;
    border-top:1px solid rgba(185,140,58,.55);
    padding-top:26px;
  }
  .toad-note-outro{justify-content:center;text-align:center;}
}

/* ============ TOAD'S VOICE ============ */
/* Everything Toad "says" is set in Pacifico. Apply .toad-voice to the
   paragraph itself or to a wrapper (e.g. the Toad article on About). */
.toad-voice,
.toad-voice p{
  font-family:'Schoolbell', cursive;
  color: #500;
  line-height:1.9;
}
.toad-voice h2{
  font-family:'Schoolbell', cursive;
}

/* Theater demo — back link, top-left of the black stage */
.stage{position:relative;}
.stage-back{
  position:absolute;
  top:clamp(16px,2.5vw,28px);
  left:var(--gutter);
  font-family:var(--font-body);
  font-size:12px;
  font-weight:600;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--gold-light);
  text-decoration:none;
  border-bottom:1px solid transparent;
  transition:color .2s,border-color .2s;
}
.stage-back:hover,
.stage-back:focus-visible{color:#fff;border-bottom-color:#fff;}

/* Home "Traditional / Attitude" samples use the catalog's framed square
   player; capped so the square doesn't tower over the column. */
.studio-screen{max-width:460px;margin-inline:auto;}
