{"id":3542,"date":"2026-03-09T08:11:18","date_gmt":"2026-03-09T08:11:18","guid":{"rendered":"https:\/\/kobraentertainment.com\/?page_id=3542"},"modified":"2026-03-09T10:28:52","modified_gmt":"2026-03-09T10:28:52","slug":"test","status":"publish","type":"page","link":"https:\/\/kobraentertainment.com\/fi\/test\/","title":{"rendered":"Test"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"3542\" class=\"elementor elementor-3542\">\n\t\t\t\t\t\t<div class=\"elementor-inner\">\n\t\t\t\t<div class=\"elementor-section-wrap\">\n\t\t\t\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-aadd463 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"aadd463\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-48c7478\" data-id=\"48c7478\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-1915931 elementor-widget elementor-widget-html\" data-id=\"1915931\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\" \/>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/>\n  <title>Build Your Podcast Package<\/title>\n\n  <!--\n  \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557\n  \u2551            PODCAST PACKAGE BUILDER \u2014 SETUP GUIDE                \u2551\n  \u2560\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2563\n  \u2551                                                                  \u2551\n  \u2551  STEP 1 \u2014 EMAILJS                                                \u2551\n  \u2551  \u2022 Sign up free at https:\/\/www.emailjs.com                       \u2551\n  \u2551  \u2022 Create an Email Service + Template with these variables:      \u2551\n  \u2551      {{to_name}}   {{to_email}}  {{show_name}}  {{format}}       \u2551\n  \u2551      {{package}}   {{production}} {{shorts}}    {{location}}     \u2551\n  \u2551      {{total}}     {{studio_name}}                               \u2551\n  \u2551                                                                  \u2551\n  \u2551  STEP 2 \u2014 MAILCHIMP                                              \u2551\n  \u2551  \u2022 Audience \u2192 Signup Forms \u2192 Embedded Forms \u2192 get action URL     \u2551\n  \u2551  \u2022 Paste url, u= and id= values into CFG.mailchimp below         \u2551\n  \u2551                                                                  \u2551\n  \u2551  STEP 3 \u2014 CUSTOMIZE CFG below (studio name, currency, prices)    \u2551\n  \u2551                                                                  \u2551\n  \u255a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255d\n  -->\n\n  <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/@emailjs\/browser@4\/dist\/email.min.js\"><\/script>\n\n  <style>\n    \/* \u2500\u2500 ISOLATION \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    #ppb {\n      all: initial;\n      display: block;\n      font-family: 'Inter', 'Segoe UI', system-ui, -apple-system, sans-serif !important;\n      background-color: #0d0d0d !important;\n      color: #f2f2f2 !important;\n      min-height: 100vh;\n      box-sizing: border-box;\n      -webkit-font-smoothing: antialiased;\n    }\n    #ppb *, #ppb *::before, #ppb *::after {\n      box-sizing: border-box;\n      margin: 0;\n      padding: 0;\n    }\n    #ppb {\n      --bg:     #0d0d0d;\n      --s1:     #141414;\n      --s2:     #1c1c1c;\n      --s3:     #242424;\n      --border: #2e2e2e;\n      --gold:   #c9a84c;\n      --gold-l: #e5c56b;\n      --glow:   rgba(201,168,76,0.14);\n      --text:   #f2f2f2;\n      --muted:  #888;\n      --dim:    #444;\n      --red:    #e05555;\n    }\n\n    \/* \u2500\u2500 LAYOUT \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    #ppb-inner {\n      max-width: 780px;\n      margin: 0 auto;\n      padding: 56px 24px 140px;\n    }\n\n    \/* \u2500\u2500 TICKER \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    #ppb-ticker {\n      position: fixed;\n      top: 0; left: 0; right: 0;\n      z-index: 9999;\n      background: rgba(13,13,13,0.95);\n      backdrop-filter: blur(16px);\n      -webkit-backdrop-filter: blur(16px);\n      border-bottom: 1px solid var(--border);\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      gap: 10px;\n      padding: 11px 20px;\n      transform: translateY(-110%);\n      transition: transform 0.4s cubic-bezier(0.4,0,0.2,1);\n      font-family: inherit;\n    }\n    #ppb-ticker.show { transform: translateY(0); }\n    #ppb-ticker .tl { color: var(--muted); font-size: 12px; letter-spacing: 0.5px; }\n    #ppb-ticker .ta { color: var(--gold); font-size: 22px; font-weight: 800; letter-spacing: -0.5px; }\n\n    \/* \u2500\u2500 HEADER \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    #ppb-hdr {\n      text-align: center;\n      margin-bottom: 48px;\n    }\n    #ppb-hdr .eye {\n      color: var(--gold);\n      font-size: 11px;\n      font-weight: 700;\n      letter-spacing: 3px;\n      text-transform: uppercase;\n      margin-bottom: 16px;\n      display: block;\n      font-family: inherit;\n    }\n    #ppb-hdr h1 {\n      font-size: clamp(26px, 5vw, 42px);\n      font-weight: 800;\n      color: var(--text);\n      letter-spacing: -1px;\n      line-height: 1.1;\n      margin-bottom: 16px;\n      font-family: inherit;\n    }\n    #ppb-hdr p {\n      color: var(--muted);\n      font-size: 16px;\n      line-height: 1.75;\n      max-width: 500px;\n      margin: 0 auto;\n      font-family: inherit;\n    }\n\n    \/* \u2500\u2500 PROGRESS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    #ppb-prog { margin-bottom: 40px; min-height: 52px; }\n    #ppb-dots {\n      display: flex;\n      justify-content: center;\n      align-items: flex-start;\n      margin-bottom: 14px;\n      transition: opacity 0.3s;\n    }\n    .ppb-dot {\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      gap: 6px;\n      flex: 1;\n      max-width: 160px;\n      position: relative;\n    }\n    .ppb-dot:not(:last-child)::after {\n      content: '';\n      position: absolute;\n      top: 14px;\n      left: calc(50% + 16px);\n      right: calc(-50% + 16px);\n      height: 1px;\n      background: var(--border);\n      transition: background 0.4s;\n    }\n    .ppb-dot.done:not(:last-child)::after { background: var(--gold); }\n    .ppb-dot .dc {\n      width: 30px; height: 30px;\n      border-radius: 50%;\n      background: var(--s2);\n      border: 2px solid var(--border);\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      font-size: 12px;\n      font-weight: 700;\n      color: var(--muted);\n      transition: all 0.3s ease;\n      position: relative;\n      z-index: 1;\n      font-family: inherit;\n    }\n    .ppb-dot .dl {\n      font-size: 10px;\n      color: var(--muted);\n      letter-spacing: 0.5px;\n      text-align: center;\n      font-family: inherit;\n      transition: color 0.3s;\n    }\n    .ppb-dot.active .dc { background: var(--gold); border-color: var(--gold); color: #000; box-shadow: 0 0 20px var(--glow); }\n    .ppb-dot.active .dl { color: var(--gold); }\n    .ppb-dot.done   .dc { border-color: var(--gold); color: var(--gold); background: var(--s2); }\n    .ppb-dot.done   .dl { color: var(--gold); }\n    .ppb-bar { height: 2px; background: var(--border); border-radius: 99px; overflow: hidden; }\n    .ppb-fill {\n      height: 100%;\n      background: linear-gradient(90deg, var(--gold), var(--gold-l));\n      border-radius: 99px;\n      transition: width 0.5s cubic-bezier(0.4,0,0.2,1);\n      width: 0%;\n    }\n\n    \/* \u2500\u2500 CARD \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    .ppb-card {\n      background: var(--s1);\n      border: 1px solid var(--border);\n      border-radius: 22px;\n      padding: 52px 48px;\n      display: none;\n      animation: ppbIn 0.35s ease;\n    }\n    .ppb-card.active { display: block; }\n    @keyframes ppbIn {\n      from { opacity:0; transform:translateY(12px); }\n      to   { opacity:1; transform:translateY(0); }\n    }\n    .ppb-card h2 {\n      font-size: 24px;\n      font-weight: 800;\n      color: var(--text);\n      margin-bottom: 10px;\n      letter-spacing: -0.5px;\n      font-family: inherit;\n    }\n    .ppb-card .sub {\n      color: var(--muted);\n      font-size: 14px;\n      line-height: 1.7;\n      margin-bottom: 40px;\n      font-family: inherit;\n    }\n\n    \/* \u2500\u2500 OPTION CARDS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    .ppb-opts { display: flex; flex-direction: column; gap: 10px; margin-bottom: 0; }\n    .ppb-opts.rows { display: flex; flex-direction: column; gap: 10px; }\n    .ppb-opts.g1   { display: flex; flex-direction: column; gap: 10px; }\n\n    .ppb-opt {\n      position: relative;\n      background: var(--s2);\n      border: 2px solid var(--border);\n      border-radius: 18px;\n      \/* right padding reserves space for the check circle (24px wide at right:20px = 44px, +16px gap = 60px) *\/\n      padding: 20px 68px 20px 20px;\n      cursor: pointer;\n      transition: border-color 0.22s ease, background 0.22s ease, transform 0.22s ease, box-shadow 0.22s ease;\n      user-select: none;\n      display: flex;\n      flex-direction: row;\n      align-items: center;\n      gap: 16px;\n    }\n    .ppb-opt:hover { border-color: var(--dim); transform: translateY(-1px); box-shadow: 0 6px 24px rgba(0,0,0,0.3); }\n    .ppb-opt.sel {\n      border-color: var(--gold);\n      background: var(--glow);\n      box-shadow: 0 0 0 1px var(--gold), 0 6px 24px rgba(201,168,76,0.1);\n    }\n\n    \/* Check circle \u2014 absolute, vertically centred, clear of price *\/\n    .ppb-opt .oc {\n      position: absolute;\n      top: 50%; right: 20px;\n      transform: translateY(-50%);\n      width: 24px; height: 24px;\n      border-radius: 50%;\n      border: 2px solid var(--border);\n      background: var(--s1);\n      transition: all 0.2s;\n      pointer-events: none;\n    }\n    .ppb-opt.sel .oc { background: var(--gold); border-color: var(--gold); }\n    .ppb-opt.sel .oc::after {\n      content: '\u2713';\n      color: #000; font-size: 12px; font-weight: 800; font-family: inherit;\n      position: absolute; top: 50%; left: 50%;\n      transform: translate(-50%, -50%);\n    }\n\n    \/* Icon \u2014 inside a subtle rounded box so it reads as a distinct visual element *\/\n    .ppb-opt .oi {\n      width: 56px; height: 56px;\n      background: var(--s3);\n      border-radius: 14px;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      font-size: 26px;\n      flex-shrink: 0;\n      line-height: 1;\n    }\n\n    \/* Text body *\/\n    .ppb-opt .opt-body { flex: 1; min-width: 0; }\n    .ppb-opt .opt-body .badge {\n      display: inline-block;\n      background: var(--gold);\n      color: #000;\n      font-size: 9px;\n      font-weight: 700;\n      letter-spacing: 0.8px;\n      text-transform: uppercase;\n      padding: 2px 8px;\n      border-radius: 99px;\n      margin-bottom: 7px;\n      font-family: inherit;\n    }\n    .ppb-opt .ot {\n      font-size: 15px; font-weight: 800; color: var(--text);\n      margin-bottom: 4px; font-family: inherit; line-height: 1.25;\n    }\n    .ppb-opt .od {\n      font-size: 12.5px; color: var(--muted); line-height: 1.55;\n      font-family: inherit;\n    }\n\n    \/* Price \u2014 compact column to the right of text, left of check circle *\/\n    .ppb-opt .op {\n      font-size: 15px; font-weight: 800; color: var(--gold);\n      font-family: inherit; letter-spacing: -0.3px;\n      flex-shrink: 0; text-align: right; white-space: nowrap;\n    }\n    .ppb-opt .op-s { font-size: 11px; color: var(--muted); font-weight: 400; font-family: inherit; display: block; }\n\n    \/* \u2500\u2500 SHORTS COUNTER \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    .ppb-counter {\n      background: var(--s2);\n      border: 2px solid var(--border);\n      border-radius: 18px;\n      padding: 28px 28px;\n      margin-bottom: 14px;\n    }\n    .ppb-counter-top {\n      display: flex;\n      align-items: center;\n      gap: 16px;\n      margin-bottom: 22px;\n    }\n    .ppb-counter-top .ci { font-size: 30px; }\n    .ppb-counter-top .ct { flex: 1; }\n    .ppb-counter-top .ct strong {\n      display: block;\n      font-size: 16px;\n      font-weight: 700;\n      color: var(--text);\n      margin-bottom: 3px;\n      font-family: inherit;\n    }\n    .ppb-counter-top .ct span {\n      font-size: 13px;\n      color: var(--muted);\n      font-family: inherit;\n    }\n    .ppb-count-ctrl {\n      display: flex;\n      align-items: center;\n      gap: 0;\n    }\n    .ppb-cc-btn {\n      width: 48px; height: 48px;\n      background: var(--s3);\n      border: 1.5px solid var(--border);\n      color: var(--text);\n      font-size: 24px;\n      cursor: pointer;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      transition: all 0.2s;\n      font-family: inherit;\n      line-height: 1;\n    }\n    .ppb-cc-btn:first-child { border-radius: 12px 0 0 12px; }\n    .ppb-cc-btn:last-child  { border-radius: 0 12px 12px 0; }\n    .ppb-cc-btn:hover { background: var(--gold); color: #000; border-color: var(--gold); }\n    .ppb-cc-val {\n      min-width: 64px;\n      text-align: center;\n      font-size: 26px;\n      font-weight: 800;\n      color: var(--text);\n      font-family: inherit;\n      border-top: 1.5px solid var(--border);\n      border-bottom: 1.5px solid var(--border);\n      padding: 9px 0;\n    }\n    .ppb-count-summary {\n      font-size: 14px;\n      font-weight: 600;\n      color: var(--gold);\n      margin-top: 14px;\n      min-height: 20px;\n      font-family: inherit;\n    }\n\n    \/* \u2500\u2500 LOCATION \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    .ppb-locs { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }\n    @media(max-width:480px) { .ppb-locs { grid-template-columns: 1fr; } }\n    .ppb-loc {\n      background: var(--s2);\n      border: 2px solid var(--border);\n      border-radius: 14px;\n      padding: 22px 20px;\n      cursor: pointer;\n      transition: all 0.2s;\n      display: flex;\n      align-items: center;\n      gap: 14px;\n      user-select: none;\n    }\n    .ppb-loc:hover  { border-color: var(--dim); }\n    .ppb-loc.sel    { border-color: var(--gold); background: var(--glow); }\n    .ppb-loc .lc {\n      width: 20px; height: 20px;\n      border-radius: 50%;\n      border: 2px solid var(--border);\n      background: var(--s1);\n      flex-shrink: 0;\n      display: flex; align-items: center; justify-content: center;\n      transition: all 0.2s;\n    }\n    .ppb-loc.sel .lc { background: var(--gold); border-color: var(--gold); }\n    .ppb-loc.sel .lc::after { content:'\u2713'; color:#000; font-size:10px; font-weight:800; font-family:inherit; }\n    .ppb-loc .li  { font-size: 22px; flex-shrink: 0; }\n    .ppb-loc .lb  { flex: 1; }\n    .ppb-loc .lb strong { display:block; font-size:14px; font-weight:700; color:var(--text); font-family:inherit; }\n    .ppb-loc .lb span   { font-size:12px; color:var(--muted); font-family:inherit; }\n    .ppb-loc-note {\n      font-size: 12px;\n      color: var(--muted);\n      text-align: center;\n      padding: 14px 0 36px;\n      font-family: inherit;\n    }\n\n    \/* \u2500\u2500 SECTION LABEL \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    .sec-lbl {\n      font-size: 11px;\n      font-weight: 700;\n      color: var(--muted);\n      letter-spacing: 1.5px;\n      text-transform: uppercase;\n      margin-bottom: 16px;\n      font-family: inherit;\n    }\n\n    \/* \u2500\u2500 DIVIDER \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    .ppb-divider {\n      height: 1px;\n      background: var(--border);\n      margin: 36px 0;\n    }\n\n    \/* \u2500\u2500 QUOTE SUMMARY \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    .ppb-qbox {\n      background: var(--s2);\n      border: 2px solid var(--border);\n      border-radius: 18px;\n      overflow: hidden;\n      margin-bottom: 24px;\n    }\n    .ppb-qrow {\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      padding: 16px 24px;\n      border-bottom: 1px solid var(--border);\n      gap: 12px;\n    }\n    .ppb-qrow:last-child { border-bottom: none; }\n    .ppb-qr-l { font-size: 13px; color: var(--muted); font-family: inherit; }\n    .ppb-qr-v { font-size: 14px; font-weight: 600; color: var(--text); text-align: right; font-family: inherit; }\n    .ppb-qr-gold { color: var(--gold) !important; }\n\n    .ppb-total {\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      background: var(--glow);\n      border: 2px solid var(--gold);\n      border-radius: 18px;\n      padding: 28px 32px;\n      margin-bottom: 36px;\n    }\n    .ppb-tl { font-size: 12px; color: var(--muted); margin-bottom: 8px; font-family: inherit; letter-spacing: 0.5px; }\n    .ppb-ta { font-size: 38px; font-weight: 800; color: var(--gold); letter-spacing: -2px; font-family: inherit; }\n    .ppb-tn { font-size: 12px; color: var(--muted); text-align: right; line-height: 1.6; font-family: inherit; }\n\n    \/* \u2500\u2500 FORM \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    .ppb-fgrid { display: grid; gap: 16px; margin-bottom: 16px; }\n    .ppb-fgrid.g2 { grid-template-columns: 1fr 1fr; }\n    @media(max-width:520px) { .ppb-fgrid.g2 { grid-template-columns: 1fr; } }\n    .ppb-field { display: flex; flex-direction: column; gap: 7px; }\n    .ppb-field label {\n      font-size: 11px; font-weight: 700; color: var(--muted);\n      letter-spacing: 1.5px; text-transform: uppercase; font-family: inherit;\n    }\n    .ppb-field input {\n      background: var(--s2);\n      border: 1.5px solid var(--border);\n      border-radius: 11px;\n      color: var(--text);\n      padding: 14px 16px;\n      font-size: 15px;\n      font-family: inherit;\n      outline: none;\n      transition: border-color 0.2s, box-shadow 0.2s;\n      width: 100%;\n    }\n    .ppb-field input::placeholder { color: var(--dim); }\n    .ppb-field input:focus { border-color: var(--gold); box-shadow: 0 0 0 3px var(--glow); }\n    .ppb-field.invalid input { border-color: var(--red); }\n    .ppb-field .err { font-size: 12px; color: var(--red); display: none; font-family: inherit; }\n    .ppb-field.invalid .err { display: block; }\n\n    \/* \u2500\u2500 SUBSCRIBE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    .ppb-sub {\n      display: flex; align-items: center; gap: 12px;\n      background: var(--s2); border: 1.5px solid var(--border);\n      border-radius: 11px; padding: 16px 20px;\n      margin-bottom: 24px; cursor: pointer;\n      transition: border-color 0.2s;\n    }\n    .ppb-sub.on { border-color: var(--gold); }\n    .ppb-sub-cb {\n      width: 18px; height: 18px; border-radius: 4px;\n      border: 2px solid var(--dim); background: var(--s1);\n      flex-shrink: 0; display: flex; align-items: center;\n      justify-content: center; transition: all 0.2s;\n    }\n    .ppb-sub.on .ppb-sub-cb { background: var(--gold); border-color: var(--gold); }\n    .ppb-sub.on .ppb-sub-cb::after { content:'\u2713'; color:#000; font-size:10px; font-weight:800; font-family:inherit; }\n    .ppb-sub-txt { font-size: 13px; color: var(--muted); font-family: inherit; }\n\n    \/* \u2500\u2500 DISCLAIMER \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    .ppb-disc {\n      font-size: 12px; color: var(--dim);\n      text-align: center; line-height: 1.7;\n      margin-bottom: 28px; font-family: inherit;\n    }\n\n    \/* \u2500\u2500 BUTTONS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    .ppb-btns { display: flex; gap: 14px; margin-top: 8px; }\n    .ppb-btn {\n      padding: 16px 28px; border-radius: 12px;\n      font-size: 15px; font-weight: 700;\n      cursor: pointer; border: none;\n      transition: all 0.22s ease; font-family: inherit;\n    }\n    .ppb-btn-p { background: var(--gold); color: #000; flex: 1; letter-spacing: -0.2px; }\n    .ppb-btn-p:hover:not(:disabled) { background: var(--gold-l); transform: translateY(-2px); box-shadow: 0 8px 28px rgba(201,168,76,0.35); }\n    .ppb-btn-p:disabled { opacity:.5; cursor:not-allowed; transform:none; box-shadow:none; }\n    .ppb-btn-s { background: var(--s2); color: var(--text); border: 1.5px solid var(--border); }\n    .ppb-btn-s:hover { border-color: var(--dim); }\n    @media(max-width:480px) { .ppb-btns { flex-direction: column-reverse; } }\n    @media(max-width:480px) {\n      .ppb-opt { padding: 16px 50px 16px 14px; gap: 12px; }\n      .ppb-opt .oi { width: 46px; height: 46px; font-size: 22px; border-radius: 12px; }\n      .ppb-opt .op { font-size: 13px; }\n    }\n\n    \/* \u2500\u2500 SPINNER \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    .ppb-spin {\n      display: inline-block; width: 16px; height: 16px;\n      border: 2.5px solid rgba(0,0,0,0.25); border-top-color: #000;\n      border-radius: 50%; animation: ppbRot 0.65s linear infinite;\n      vertical-align: middle; margin-right: 8px;\n    }\n    @keyframes ppbRot { to { transform: rotate(360deg); } }\n\n    \/* \u2500\u2500 SUCCESS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    #ppb-success { text-align: center; padding: 80px 32px; display: none; }\n    #ppb-success .si { font-size: 80px; display:block; margin-bottom: 28px; }\n    #ppb-success h2  { font-size: 32px; font-weight: 800; color: var(--text); margin-bottom: 16px; letter-spacing: -0.5px; font-family: inherit; }\n    #ppb-success p   { color: var(--muted); font-size: 16px; line-height: 1.8; font-family: inherit; }\n    #ppb-success strong { color: var(--gold); font-family: inherit; }\n\n    @media(max-width:500px) { .ppb-card { padding: 32px 20px; } }\n  <\/style>\n<\/head>\n<body style=\"margin:0;padding:0;background:#0d0d0d;\">\n\n<div id=\"ppb\">\n  <!-- TICKER -->\n  <div id=\"ppb-ticker\">\n    <span class=\"tl\">ESTIMATED TOTAL<\/span>\n    <span class=\"ta\" id=\"ppb-tick\"><\/span>\n  <\/div>\n\n  <div id=\"ppb-inner\">\n    <!-- HEADER -->\n    <div id=\"ppb-hdr\">\n      <span class=\"eye\" id=\"ppb-studio-name\">Podcast -studio<\/span>\n      <h1>Build Your Package<\/h1>\n      <p>Professional podcast production, tailored to you. Tell us what you need and get a personalised quote in minutes.<\/p>\n    <\/div>\n\n    <!-- PROGRESS -->\n    <div id=\"ppb-prog\">\n      <div id=\"ppb-dots\"><\/div>\n      <div class=\"ppb-bar\"><div class=\"ppb-fill\" id=\"ppb-fill\"><\/div><\/div>\n    <\/div>\n\n    <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n    <!-- SCREEN: FORMAT (always first)                                 -->\n    <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n    <div class=\"ppb-card active\" id=\"sc-format\">\n      <h2>What are you looking for?<\/h2>\n      <p class=\"sub\">Choose the format that fits your goals \u2014 we'll build the right package from there.<\/p>\n\n      <div class=\"ppb-opts rows\" id=\"fmt-grid\">\n        <div class=\"ppb-opt\" onclick=\"pickFormat('audio',this)\">\n          <div class=\"oc\"><\/div>\n          <span class=\"oi\">\ud83c\udf99\ufe0f<\/span>\n          <div class=\"opt-body\">\n            <div class=\"ot\">Audio Episode<\/div>\n            <div class=\"od\">A fully produced podcast episode, mastered to broadcast standard and ready for every platform.<\/div>\n          <\/div>\n          <div class=\"op\">From <span id=\"fmt-audio-from\">\u2014<\/span><\/div>\n        <\/div>\n\n        <div class=\"ppb-opt\" onclick=\"pickFormat('video',this)\">\n          <div class=\"oc\"><\/div>\n          <span class=\"oi\">\ud83c\udfa5<\/span>\n          <div class=\"opt-body\">\n            <div class=\"badge\">Most Popular<\/div>\n            <div class=\"ot\">Video Episode<\/div>\n            <div class=\"od\">Everything in audio, plus professional video production. Perfected camera angles, colour grading, and motion graphics.<\/div>\n          <\/div>\n          <div class=\"op\">From <span id=\"fmt-video-from\">\u2014<\/span><\/div>\n        <\/div>\n\n        <div class=\"ppb-opt\" onclick=\"pickFormat('shorts',this)\">\n          <div class=\"oc\"><\/div>\n          <span class=\"oi\">\ud83d\udcf1<\/span>\n          <div class=\"opt-body\">\n            <div class=\"ot\">Just Shorts<\/div>\n            <div class=\"od\">Standalone short-form clips for Instagram Reels, TikTok &amp; YouTube Shorts. No episode needed.<\/div>\n          <\/div>\n          <div class=\"op\" id=\"fmt-shorts-price\">\u2014<\/div>\n        <\/div>\n      <\/div>\n\n      <!-- no continue button \u2014 auto-advances on selection -->\n    <\/div>\n\n    <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n    <!-- SCREEN: PACKAGE (episode paths)                               -->\n    <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n    <div class=\"ppb-card\" id=\"sc-pkg\">\n      <h2>How many episodes?<\/h2>\n      <p class=\"sub\">Every package includes full production \u2014 delivered to broadcast standard.<\/p>\n\n      <div class=\"ppb-opts rows\" id=\"pkg-grid\">\n        <div class=\"ppb-opt\" onclick=\"pickPkg('single',this)\">\n          <div class=\"oc\"><\/div>\n          <span class=\"oi\">\ud83c\udf99\ufe0f<\/span>\n          <div class=\"opt-body\">\n            <div class=\"ot\">Single Episode<\/div>\n            <div class=\"od\">Perfect for a pilot, a one-off event, or testing our quality before committing to a series.<\/div>\n          <\/div>\n          <div class=\"op\" id=\"pkg-single-p\">\u2014<\/div>\n        <\/div>\n\n        <div class=\"ppb-opt\" onclick=\"pickPkg('ten',this)\">\n          <div class=\"oc\"><\/div>\n          <span class=\"oi\">\ud83c\udfac<\/span>\n          <div class=\"opt-body\">\n            <div class=\"badge\">Best Value<\/div>\n            <div class=\"ot\">10-Episode Series<\/div>\n            <div class=\"od\">Includes dedicated concept planning sessions with our creative team. Built for brands serious about growth.<\/div>\n          <\/div>\n          <div class=\"op\" id=\"pkg-ten-p\">\u2014<\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"ppb-btns\">\n        <button class=\"ppb-btn ppb-btn-s\" onclick=\"ppbBack()\">\u2190 Back<\/button>\n        <!-- auto-advances on selection -->\n      <\/div>\n    <\/div>\n\n    <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n    <!-- SCREEN: PRODUCTION STANDARD (episode paths)                   -->\n    <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n    <div class=\"ppb-card\" id=\"sc-prod\">\n      <h2>Production standard<\/h2>\n      <p class=\"sub\">Both include full audio and video. The difference is in the depth of post-production.<\/p>\n\n      <div class=\"ppb-opts rows\" id=\"prod-grid\">\n        <div class=\"ppb-opt\" onclick=\"pickProd('live',this)\">\n          <div class=\"oc\"><\/div>\n          <span class=\"oi\">\u26a1<\/span>\n          <div class=\"opt-body\">\n            <div class=\"ot\">Live Edited<\/div>\n            <div class=\"od\">Edited in real-time during the session. Audio mastered, video cut and colour balanced \u2014 delivered fast. Ideal for consistent, high-frequency publishing.<\/div>\n          <\/div>\n          <div class=\"op\" id=\"prod-live-p\">\u2014<\/div>\n        <\/div>\n\n        <div class=\"ppb-opt\" onclick=\"pickProd('full',this)\">\n          <div class=\"oc\"><\/div>\n          <span class=\"oi\">\u2728<\/span>\n          <div class=\"opt-body\">\n            <div class=\"badge\">Most Popular<\/div>\n            <div class=\"ot\">Fully Post-Produced<\/div>\n            <div class=\"od\">Camera angles perfected in edit, motion graphics, colour grading, and audio mixed to radio broadcast standard. The premium experience your audience notices immediately.<\/div>\n          <\/div>\n          <div class=\"op\" id=\"prod-full-p\">\u2014<\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"ppb-btns\">\n        <button class=\"ppb-btn ppb-btn-s\" onclick=\"ppbBack()\">\u2190 Back<\/button>\n        <!-- auto-advances on selection -->\n      <\/div>\n    <\/div>\n\n    <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n    <!-- SCREEN: SHORTS + LOCATION (episode paths)                     -->\n    <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n    <div class=\"ppb-card\" id=\"sc-finish\">\n      <h2>Finishing touches<\/h2>\n      <p class=\"sub\">Shorts extend your reach far beyond the episode itself. Choose how many you want, and where you'd like to record.<\/p>\n\n      <!-- Shorts counter -->\n      <div class=\"ppb-counter\">\n        <div class=\"ppb-counter-top\">\n          <div class=\"ci\">\ud83d\udcf1<\/div>\n          <div class=\"ct\">\n            <strong>Short-form clips per episode<\/strong>\n            <span>Instagram Reels, TikTok &amp; YouTube Shorts \u2014 <span id=\"ep-short-price-label\">\u20ac150<\/span> each<\/span>\n          <\/div>\n        <\/div>\n        <div class=\"ppb-count-ctrl\">\n          <button class=\"ppb-cc-btn\" onclick=\"chgShorts('ep',-1)\">\u2212<\/button>\n          <div class=\"ppb-cc-val\" id=\"ep-shorts-val\">0<\/div>\n          <button class=\"ppb-cc-btn\" onclick=\"chgShorts('ep',1)\">+<\/button>\n        <\/div>\n        <div class=\"ppb-count-summary\" id=\"ep-shorts-cost\"><\/div>\n      <\/div>\n\n      <div class=\"ppb-divider\"><\/div>\n\n      <div class=\"sec-lbl\">Recording Location<\/div>\n      <div class=\"ppb-locs\" id=\"finish-loc-grid\">\n        <div class=\"ppb-loc\" onclick=\"pickLoc('studio',this,'finish-loc-grid')\">\n          <div class=\"lc\"><\/div>\n          <div class=\"li\">\ud83c\udfe2<\/div>\n          <div class=\"lb\">\n            <strong>Our Studio<\/strong>\n            <span>Fully equipped, acoustically treated<\/span>\n          <\/div>\n        <\/div>\n        <div class=\"ppb-loc\" onclick=\"pickLoc('location',this,'finish-loc-grid')\">\n          <div class=\"lc\"><\/div>\n          <div class=\"li\">\ud83d\udccd<\/div>\n          <div class=\"lb\">\n            <strong>Your Location<\/strong>\n            <span>We bring the full setup to you<\/span>\n          <\/div>\n        <\/div>\n      <\/div>\n      <div class=\"ppb-loc-note\">Travel is included \u2014 no extra cost regardless of location.<\/div>\n\n      <div class=\"ppb-btns\">\n        <button class=\"ppb-btn ppb-btn-s\" onclick=\"ppbBack()\">\u2190 Back<\/button>\n        <button class=\"ppb-btn ppb-btn-p\" onclick=\"ppbNext()\">See My Quote \u2192<\/button>\n      <\/div>\n    <\/div>\n\n    <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n    <!-- SCREEN: SHORTS QUANTITY + LOCATION (shorts-only path)         -->\n    <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n    <div class=\"ppb-card\" id=\"sc-shorts-setup\">\n      <h2>How many shorts do you need?<\/h2>\n      <p class=\"sub\">Tell us the volume and where you'd like to shoot. We'll have everything set up for you.<\/p>\n\n      <div class=\"ppb-counter\">\n        <div class=\"ppb-counter-top\">\n          <div class=\"ci\">\ud83d\udcf1<\/div>\n          <div class=\"ct\">\n            <strong>Number of shorts<\/strong>\n            <span><span id=\"so-short-price-label\">\u20ac250<\/span> per clip \u2014 fully produced and platform-ready<\/span>\n          <\/div>\n        <\/div>\n        <div class=\"ppb-count-ctrl\">\n          <button class=\"ppb-cc-btn\" onclick=\"chgShorts('so',-1)\">\u2212<\/button>\n          <div class=\"ppb-cc-val\" id=\"so-shorts-val\">1<\/div>\n          <button class=\"ppb-cc-btn\" onclick=\"chgShorts('so',1)\">+<\/button>\n        <\/div>\n        <div class=\"ppb-count-summary\" id=\"so-shorts-cost\"><\/div>\n      <\/div>\n\n      <div class=\"ppb-divider\"><\/div>\n\n      <div class=\"sec-lbl\">Shooting Location<\/div>\n      <div class=\"ppb-locs\" id=\"so-loc-grid\">\n        <div class=\"ppb-loc\" onclick=\"pickLoc('studio',this,'so-loc-grid')\">\n          <div class=\"lc\"><\/div>\n          <div class=\"li\">\ud83c\udfe2<\/div>\n          <div class=\"lb\">\n            <strong>Our Studio<\/strong>\n            <span>Fully equipped, professional lighting<\/span>\n          <\/div>\n        <\/div>\n        <div class=\"ppb-loc\" onclick=\"pickLoc('location',this,'so-loc-grid')\">\n          <div class=\"lc\"><\/div>\n          <div class=\"li\">\ud83d\udccd<\/div>\n          <div class=\"lb\">\n            <strong>Your Location<\/strong>\n            <span>We bring everything to you<\/span>\n          <\/div>\n        <\/div>\n      <\/div>\n      <div class=\"ppb-loc-note\">Travel is included \u2014 no extra cost regardless of location.<\/div>\n\n      <div class=\"ppb-btns\">\n        <button class=\"ppb-btn ppb-btn-s\" onclick=\"ppbBack()\">\u2190 Back<\/button>\n        <button class=\"ppb-btn ppb-btn-p\" onclick=\"ppbNext()\">See My Quote \u2192<\/button>\n      <\/div>\n    <\/div>\n\n    <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n    <!-- SCREEN: QUOTE + CONTACT FORM (all paths)                      -->\n    <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n    <div class=\"ppb-card\" id=\"sc-quote\">\n      <h2>Your personalised quote<\/h2>\n      <p class=\"sub\">Here's your estimate. Enter your details and we'll send the full breakdown to your inbox \u2014 our team follows up within 24 hours.<\/p>\n\n      <div class=\"ppb-qbox\" id=\"ppb-qbox\"><\/div>\n\n      <div class=\"ppb-total\">\n        <div>\n          <div class=\"ppb-tl\">ESTIMATED TOTAL<\/div>\n          <div class=\"ppb-ta\" id=\"ppb-total-amt\">\u20ac0<\/div>\n        <\/div>\n        <div class=\"ppb-tn\" id=\"ppb-total-note\"><\/div>\n      <\/div>\n\n      <div class=\"ppb-fgrid g2\">\n        <div class=\"ppb-field\" id=\"ppb-f-name\">\n          <label>Your Name *<\/label>\n          <input type=\"text\" id=\"ppb-name\" placeholder=\"Alex Johnson\" autocomplete=\"given-name\" \/>\n          <div class=\"err\">Please enter your name<\/div>\n        <\/div>\n        <div class=\"ppb-field\" id=\"ppb-f-email\">\n          <label>Email Address *<\/label>\n          <input type=\"email\" id=\"ppb-email\" placeholder=\"alex@example.com\" autocomplete=\"email\" \/>\n          <div class=\"err\">Please enter a valid email<\/div>\n        <\/div>\n      <\/div>\n      <div class=\"ppb-fgrid\">\n        <div class=\"ppb-field\">\n          <label>Show \/ Brand Name<\/label>\n          <input type=\"text\" id=\"ppb-show\" placeholder=\"The Morning Brief\" \/>\n        <\/div>\n      <\/div>\n\n      <div class=\"ppb-sub on\" id=\"ppb-sub\" onclick=\"togSub()\">\n        <div class=\"ppb-sub-cb\"><\/div>\n        <div class=\"ppb-sub-txt\">Keep me updated with studio news, podcast tips &amp; exclusive offers<\/div>\n      <\/div>\n\n      <p class=\"ppb-disc\">* This is a non-binding estimate. Our team will review your selections and send a formal proposal within 24 hours.<\/p>\n\n      <div class=\"ppb-btns\">\n        <button class=\"ppb-btn ppb-btn-s\" onclick=\"ppbBack()\">\u2190 Back<\/button>\n        <button class=\"ppb-btn ppb-btn-p\" id=\"ppb-submit\" onclick=\"ppbSubmit()\">Send My Quote \ud83d\udce7<\/button>\n      <\/div>\n    <\/div>\n\n    <!-- SUCCESS -->\n    <div id=\"ppb-success\">\n      <span class=\"si\">\ud83c\udf99\ufe0f<\/span>\n      <h2>Quote on its way!<\/h2>\n      <p>\n        We've sent your estimate to <strong id=\"ppb-succ-email\"><\/strong>.<br><br>\n        Our team will review your selection and reach out with a <strong>formal proposal within 24 hours<\/strong>.<br><br>\n        We're looking forward to creating something exceptional together.\n      <\/p>\n    <\/div>\n\n  <\/div><!-- \/inner -->\n<\/div><!-- \/ppb -->\n\n\n<script>\n\/\/ \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557\n\/\/ \u2551  CONFIGURATION                                                   \u2551\n\/\/ \u255a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255d\nconst CFG = {\n  studioName: 'YOUR STUDIO NAME',   \/\/ \u2190 displayed in header & emails\n  currency:   '\u20ac',\n\n  emailjs: {\n    publicKey:  'YOUR_EMAILJS_PUBLIC_KEY',\n    serviceId:  'YOUR_SERVICE_ID',\n    templateId: 'YOUR_TEMPLATE_ID',\n  },\n\n  mailchimp: {\n    baseUrl: 'https:\/\/YOUR_DOMAIN.us1.list-manage.com\/subscribe\/post-json',\n    u:       'YOUR_U_VALUE',\n    id:      'YOUR_LIST_ID',\n  },\n\n  prices: {\n    \/\/ Episode packages (audio or video \u2014 same price)\n    single:         1500,   \/\/ one-off single episode\n    ten:           13900,   \/\/ 10-episode series (incl. concept planning)\n    \/\/ Per-episode production rates (shown on quote for context)\n    livePerEp:      900,    \/\/ live edited, per episode\n    fullPerEp:     1200,    \/\/ fully post-produced, per episode\n    \/\/ Shorts added to an episode\n    shortWithEp:    150,    \/\/ per short, per episode, when bundled with episode\n    \/\/ Standalone shorts (no episode)\n    shortStandalone: 250,   \/\/ per short, when booking shorts only\n  },\n};\n\/\/ \u255a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255d\n\n\n\/\/ \u2500\u2500 PATHS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\/\/ Episode path: format \u2192 package \u2192 production \u2192 finish \u2192 quote\nconst EP_PATH = ['sc-format','sc-pkg','sc-prod','sc-finish','sc-quote'];\n\/\/ Shorts-only path: format \u2192 shorts setup \u2192 quote\nconst SO_PATH = ['sc-format','sc-shorts-setup','sc-quote'];\n\n\/\/ Progress labels per path (index matches path array position)\nconst EP_LABELS = ['Format','Package','Production','Finishing','Quote'];\nconst SO_LABELS = ['Format','Shorts','Quote'];\n\nlet PATH       = EP_PATH;   \/\/ default \u2014 updated after format pick\nlet PATH_LBLS  = EP_LABELS;\nlet PATH_IDX   = 0;\n\n\n\/\/ \u2500\u2500 STATE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nconst S = {\n  format:    null,   \/\/ 'audio' | 'video' | 'shorts'\n  pkg:       null,   \/\/ 'single' | 'ten'\n  prod:      null,   \/\/ 'live' | 'full'\n  epShorts:  0,      \/\/ shorts per episode (episode path)\n  soShorts:  1,      \/\/ total shorts (shorts-only path)\n  location:  null,   \/\/ 'studio' | 'location'\n  subscribe: true,\n};\n\n\n\/\/ \u2500\u2500 INIT \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nwindow.addEventListener('DOMContentLoaded', () => {\n  emailjs.init(CFG.emailjs.publicKey);\n\n  document.getElementById('ppb-studio-name').textContent = CFG.studioName;\n\n  const c = CFG.prices, cur = CFG.currency;\n  document.getElementById('fmt-audio-from').textContent  = cur + c.single.toLocaleString();\n  document.getElementById('fmt-video-from').textContent  = cur + c.single.toLocaleString();\n  document.getElementById('fmt-shorts-price').textContent = cur + c.shortStandalone.toLocaleString() + ' \/ clip';\n  document.getElementById('ep-short-price-label').textContent = cur + c.shortWithEp;\n  document.getElementById('so-short-price-label').textContent = cur + c.shortStandalone;\n\n  \/\/ Init shorts-only counter display\n  updateShortsCost('so');\n});\n\n\n\/\/ \u2500\u2500 PROGRESS BUILDER \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction buildProgress() {\n  const container = document.getElementById('ppb-dots');\n  container.innerHTML = '';\n  PATH_LBLS.forEach((lbl, i) => {\n    const div = document.createElement('div');\n    div.className = 'ppb-dot' + (i === 0 ? ' done' : i === PATH_IDX ? ' active' : '');\n    div.id = 'ppbd-' + i;\n    div.innerHTML = `<div class=\"dc\">${i < PATH_IDX ? '\u2713' : i + 1}<\/div><div class=\"dl\">${lbl}<\/div>`;\n    container.appendChild(div);\n  });\n  \/\/ progress fill\n  document.getElementById('ppb-fill').style.width = ((PATH_IDX \/ (PATH.length - 1)) * 100) + '%';\n}\n\nfunction updateProgress() {\n  PATH_LBLS.forEach((_, i) => {\n    const d = document.getElementById('ppbd-' + i);\n    if (!d) return;\n    d.className = 'ppb-dot';\n    if (i < PATH_IDX) { d.classList.add('done'); d.querySelector('.dc').textContent = '\u2713'; }\n    else if (i === PATH_IDX) { d.classList.add('active'); d.querySelector('.dc').textContent = i + 1; }\n    else { d.querySelector('.dc').textContent = i + 1; }\n  });\n  document.getElementById('ppb-fill').style.width = ((PATH_IDX \/ (PATH.length - 1)) * 100) + '%';\n}\n\n\n\/\/ \u2500\u2500 NAVIGATION \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction ppbNext() {\n  if (!ppbValidate()) return;\n\n  \/\/ After format is chosen, lock in the path\n  if (PATH_IDX === 0) {\n    if (S.format === 'shorts') {\n      PATH = SO_PATH; PATH_LBLS = SO_LABELS;\n    } else {\n      PATH = EP_PATH; PATH_LBLS = EP_LABELS;\n    }\n    buildProgress();\n  }\n\n  ppbGo(PATH_IDX + 1);\n}\n\nfunction ppbBack() {\n  ppbGo(PATH_IDX - 1);\n}\n\nfunction ppbGo(idx) {\n  document.getElementById(PATH[PATH_IDX]).classList.remove('active');\n  PATH_IDX = idx;\n  document.getElementById(PATH[PATH_IDX]).classList.add('active');\n\n  updateProgress();\n  refreshTicker();\n\n  \/\/ Update production prices when entering sc-prod\n  if (PATH[PATH_IDX] === 'sc-prod') updateProdPrices();\n\n  \/\/ Build quote when entering quote screen\n  if (PATH[PATH_IDX] === 'sc-quote') buildQuote();\n\n  window.scrollTo({ top: 0, behavior: 'smooth' });\n}\n\n\n\/\/ \u2500\u2500 VALIDATION \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction ppbValidate() {\n  const screen = PATH[PATH_IDX];\n\n  if (screen === 'sc-format' && !S.format) {\n    shake('fmt-grid'); return false;\n  }\n  if (screen === 'sc-pkg' && !S.pkg) {\n    shake('pkg-grid'); return false;\n  }\n  if (screen === 'sc-prod' && !S.prod) {\n    shake('prod-grid'); return false;\n  }\n  if (screen === 'sc-finish' && !S.location) {\n    shake('finish-loc-grid'); return false;\n  }\n  if (screen === 'sc-shorts-setup' && !S.location) {\n    shake('so-loc-grid'); return false;\n  }\n  if (screen === 'sc-quote') {\n    let ok = true;\n    const nf = document.getElementById('ppb-f-name');\n    const ef = document.getElementById('ppb-f-email');\n    const nv = document.getElementById('ppb-name').value.trim();\n    const ev = document.getElementById('ppb-email').value.trim();\n    if (!nv) { nf.classList.add('invalid'); ok=false; } else nf.classList.remove('invalid');\n    if (!\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(ev)) { ef.classList.add('invalid'); ok=false; } else ef.classList.remove('invalid');\n    return ok;\n  }\n  return true;\n}\n\nfunction shake(id) {\n  const el = document.getElementById(id);\n  el.style.animation = 'none'; el.offsetHeight;\n  el.style.animation = 'ppbShake 0.4s ease';\n  setTimeout(() => { el.style.animation = ''; }, 500);\n}\n\n\n\/\/ \u2500\u2500 FORMAT \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction pickFormat(fmt, el) {\n  S.format = fmt;\n  ppbSel('fmt-grid', el);\n  setTimeout(() => ppbNext(), 380);\n}\n\n\n\/\/ \u2500\u2500 PACKAGE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction pickPkg(key, el) {\n  S.pkg = key;\n  ppbSel('pkg-grid', el);\n  const c = CFG.prices, cur = CFG.currency;\n  document.getElementById('pkg-single-p').textContent = cur + c.single.toLocaleString();\n  document.getElementById('pkg-ten-p').textContent    = cur + c.ten.toLocaleString() + ' \/ series';\n  refreshTicker();\n  setTimeout(() => ppbNext(), 380);\n}\n\n\n\/\/ \u2500\u2500 PRODUCTION \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction pickProd(key, el) {\n  S.prod = key;\n  ppbSel('prod-grid', el);\n  refreshTicker();\n  setTimeout(() => ppbNext(), 380);\n}\n\nfunction updateProdPrices() {\n  const c = CFG.prices, cur = CFG.currency;\n  const isS  = S.pkg === 'single';\n  document.getElementById('prod-live-p').textContent =\n    isS ? cur + c.single.toLocaleString() : cur + c.livePerEp.toLocaleString() + ' \/ episode';\n  document.getElementById('prod-full-p').textContent =\n    isS ? cur + c.single.toLocaleString() : cur + c.fullPerEp.toLocaleString() + ' \/ episode';\n}\n\n\n\/\/ \u2500\u2500 SHORTS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction chgShorts(type, d) {\n  if (type === 'ep') {\n    S.epShorts = Math.max(0, Math.min(10, S.epShorts + d));\n    document.getElementById('ep-shorts-val').textContent = S.epShorts;\n  } else {\n    S.soShorts = Math.max(1, Math.min(20, S.soShorts + d));\n    document.getElementById('so-shorts-val').textContent = S.soShorts;\n  }\n  updateShortsCost(type);\n  refreshTicker();\n}\n\nfunction updateShortsCost(type) {\n  const c = CFG.prices, cur = CFG.currency;\n  if (type === 'ep') {\n    const eps  = S.pkg === 'ten' ? 10 : 1;\n    const cost = S.epShorts * eps * c.shortWithEp;\n    document.getElementById('ep-shorts-cost').textContent =\n      S.epShorts === 0 ? '' : `+${cur}${cost.toLocaleString()} total (${S.epShorts} clip${S.epShorts>1?'s':''} \u00d7 ${eps} episode${eps>1?'s':''})`;\n  } else {\n    const cost = S.soShorts * c.shortStandalone;\n    document.getElementById('so-shorts-cost').textContent =\n      `${cur}${cost.toLocaleString()} total`;\n  }\n}\n\n\n\/\/ \u2500\u2500 LOCATION \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction pickLoc(key, el, gridId) {\n  S.location = key;\n  document.querySelectorAll('#' + gridId + ' .ppb-loc').forEach(l => l.classList.remove('sel'));\n  el.classList.add('sel');\n  setTimeout(() => ppbNext(), 380);\n}\n\n\n\/\/ \u2500\u2500 TICKER \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction refreshTicker() {\n  const total = calcTotal();\n  if (total === 0 || PATH_IDX === 0) {\n    document.getElementById('ppb-ticker').classList.remove('show');\n    return;\n  }\n  document.getElementById('ppb-tick').textContent = CFG.currency + total.toLocaleString();\n  document.getElementById('ppb-ticker').classList.add('show');\n}\n\nfunction calcTotal() {\n  const p = CFG.prices;\n  if (S.format === 'shorts') {\n    return S.soShorts * p.shortStandalone;\n  }\n  \/\/ Episode path\n  if (!S.pkg) return 0;\n  const base  = S.pkg === 'single' ? p.single : p.ten;\n  const eps   = S.pkg === 'ten' ? 10 : 1;\n  const extra = S.epShorts * eps * p.shortWithEp;\n  return base + extra;\n}\n\n\n\/\/ \u2500\u2500 BUILD QUOTE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction buildQuote() {\n  const p = CFG.prices, cur = CFG.currency;\n  const total = calcTotal();\n  let rows = '';\n\n  if (S.format === 'shorts') {\n    \/\/ Shorts-only path\n    rows += qrow('Format',   'Standalone Shorts');\n    rows += qrow('Clips',    `${S.soShorts} clip${S.soShorts>1?'s':''}`);\n    rows += qrow('Price per clip', cur + p.shortStandalone.toLocaleString());\n    rows += qrow('Location', S.location === 'studio' ? 'Our Studio' : 'Your Location');\n    rows += qrow('Total', cur + total.toLocaleString(), true);\n  } else {\n    \/\/ Episode path\n    const fmtLabel  = S.format === 'audio' ? 'Audio Episode' : 'Video Episode';\n    const pkgLabel  = S.pkg === 'single' ? 'Single Episode' : '10-Episode Series';\n    const prodLabel = S.prod === 'live'  ? 'Live Edited'    : 'Fully Post-Produced';\n    const locLabel  = S.location === 'studio' ? 'Our Studio' : 'Your Location';\n    const base      = S.pkg === 'single' ? p.single : p.ten;\n    const eps       = S.pkg === 'ten' ? 10 : 1;\n    const shortCost = S.epShorts * eps * p.shortWithEp;\n\n    rows += qrow('Format',     fmtLabel);\n    rows += qrow('Package',    pkgLabel);\n    rows += qrow('Production', prodLabel);\n    rows += qrow('Location',   locLabel);\n    rows += qrow('Base price', cur + base.toLocaleString());\n\n    if (S.epShorts > 0) {\n      rows += qrow(\n        `Shorts (${S.epShorts}\/ep \u00d7 ${eps} ep${eps>1?'s':''})`,\n        `+${cur}${shortCost.toLocaleString()}`\n      );\n    }\n\n    if (S.pkg === 'ten') {\n      rows += qrow('Concept planning', 'Included \u2713', false, true);\n    }\n  }\n\n  document.getElementById('ppb-qbox').innerHTML = rows;\n  document.getElementById('ppb-total-amt').textContent = cur + total.toLocaleString();\n\n  \/\/ Note under total\n  const notes = [];\n  if (S.format !== 'shorts' && S.pkg === 'ten') notes.push('10-episode series');\n  if (S.format !== 'shorts' && S.epShorts > 0)  notes.push(`${S.epShorts} short${S.epShorts>1?'s':''}\/episode`);\n  if (S.format === 'shorts')                     notes.push(`${S.soShorts} clip${S.soShorts>1?'s':''}`);\n  document.getElementById('ppb-total-note').textContent = notes.join(' \u00b7 ');\n}\n\nfunction qrow(label, value, isBig = false, isGold = false) {\n  return `<div class=\"ppb-qrow\">\n    <span class=\"ppb-qr-l\">${label}<\/span>\n    <span class=\"ppb-qr-v${isGold ? ' ppb-qr-gold' : ''}\">${value}<\/span>\n  <\/div>`;\n}\n\n\n\/\/ \u2500\u2500 SUBSCRIBE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction togSub() {\n  S.subscribe = !S.subscribe;\n  document.getElementById('ppb-sub').classList.toggle('on', S.subscribe);\n}\n\n\n\/\/ \u2500\u2500 SUBMIT \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nasync function ppbSubmit() {\n  if (!ppbValidate()) return;\n\n  const name  = document.getElementById('ppb-name').value.trim();\n  const email = document.getElementById('ppb-email').value.trim();\n  const show  = document.getElementById('ppb-show').value.trim();\n  const btn   = document.getElementById('ppb-submit');\n  const total = calcTotal();\n  const p     = CFG.prices, cur = CFG.currency;\n\n  btn.disabled = true;\n  btn.innerHTML = '<span class=\"ppb-spin\"><\/span>Sending\u2026';\n\n  \/\/ Build template params\n  let params;\n  if (S.format === 'shorts') {\n    params = {\n      format:     'Just Shorts',\n      package:    `${S.soShorts} clip${S.soShorts>1?'s':''}`,\n      production: '\u2014',\n      shorts:     `${S.soShorts} \u00d7 ${cur}${p.shortStandalone} = ${cur}${total.toLocaleString()}`,\n      location:   S.location === 'studio' ? 'Your Studio' : 'Your Location',\n    };\n  } else {\n    const eps = S.pkg === 'ten' ? 10 : 1;\n    params = {\n      format:     S.format === 'audio' ? 'Audio Episode' : 'Video Episode',\n      package:    S.pkg === 'single' ? 'Single Episode' : '10-Episode Series',\n      production: S.prod === 'live' ? 'Live Edited' : 'Fully Post-Produced',\n      shorts:     S.epShorts > 0\n                    ? `${S.epShorts}\/episode \u00d7 ${eps} episodes = +${cur}${(S.epShorts*eps*p.shortWithEp).toLocaleString()}`\n                    : 'None',\n      location:   S.location === 'studio' ? 'Your Studio' : 'Your Location',\n    };\n  }\n\n  try {\n    await emailjs.send(CFG.emailjs.serviceId, CFG.emailjs.templateId, {\n      to_name:     name,\n      to_email:    email,\n      show_name:   show || 'My Project',\n      studio_name: CFG.studioName,\n      total:       cur + total.toLocaleString(),\n      ...params,\n    });\n\n    if (S.subscribe) mcSub(email, name);\n\n    \/\/ Success\n    document.getElementById('sc-quote').classList.remove('active');\n    document.getElementById('ppb-success').style.display = 'block';\n    document.getElementById('ppb-succ-email').textContent = email;\n    document.getElementById('ppb-ticker').classList.remove('show');\n    window.scrollTo({ top: 0, behavior: 'smooth' });\n\n  } catch (err) {\n    console.error('EmailJS error:', err);\n    btn.disabled = false;\n    btn.innerHTML = 'Send My Quote \ud83d\udce7';\n    alert('Something went wrong. Please try again or contact us directly.');\n  }\n}\n\n\n\/\/ \u2500\u2500 MAILCHIMP \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction mcSub(email, name) {\n  const parts = name.split(' ');\n  const url = `${CFG.mailchimp.baseUrl}?u=${CFG.mailchimp.u}&id=${CFG.mailchimp.id}`\n            + `&EMAIL=${encodeURIComponent(email)}`\n            + `&FNAME=${encodeURIComponent(parts[0]||'')}`\n            + `&LNAME=${encodeURIComponent(parts.slice(1).join(' ')||'')}`\n            + `&c=ppbMcCb`;\n  window.ppbMcCb = () => {};\n  const s = document.createElement('script');\n  s.src = url;\n  document.body.appendChild(s);\n  setTimeout(() => s.remove && s.remove(), 4000);\n}\n\n\n\/\/ \u2500\u2500 HELPER \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction ppbSel(gridId, el) {\n  document.querySelectorAll('#' + gridId + ' .ppb-opt').forEach(o => o.classList.remove('sel'));\n  el.classList.add('sel');\n}\n\n\/\/ Shake animation\nconst ss = document.createElement('style');\nss.textContent = `@keyframes ppbShake{0%,100%{transform:translateX(0)}20%{transform:translateX(-6px)}60%{transform:translateX(6px)}80%{transform:translateX(-4px)}}`;\ndocument.head.appendChild(ss);\n<\/script>\n<\/body>\n<\/html>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.10 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Test - Kobra Entertainment<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kobraentertainment.com\/fi\/test\/\" \/>\n<meta property=\"og:locale\" content=\"fi_FI\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Test - Kobra Entertainment\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kobraentertainment.com\/fi\/test\/\" \/>\n<meta property=\"og:site_name\" content=\"Kobra Entertainment\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kobraentertainment\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-09T10:28:52+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Arvioitu lukuaika\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minuuttia\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kobraentertainment.com\/test\/\",\"url\":\"https:\/\/kobraentertainment.com\/test\/\",\"name\":\"Test - Kobra Entertainment\",\"isPartOf\":{\"@id\":\"https:\/\/kobraentertainment.com\/#website\"},\"datePublished\":\"2026-03-09T08:11:18+00:00\",\"dateModified\":\"2026-03-09T10:28:52+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/kobraentertainment.com\/test\/#breadcrumb\"},\"inLanguage\":\"fi\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kobraentertainment.com\/test\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kobraentertainment.com\/test\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kobraentertainment.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Test\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kobraentertainment.com\/#website\",\"url\":\"https:\/\/kobraentertainment.com\/\",\"name\":\"Kobra Entertainment\",\"description\":\"Kobra Entertainment is a music marketing and management company.\",\"publisher\":{\"@id\":\"https:\/\/kobraentertainment.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kobraentertainment.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fi\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kobraentertainment.com\/#organization\",\"name\":\"Kobra Entertainment\",\"url\":\"https:\/\/kobraentertainment.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fi\",\"@id\":\"https:\/\/kobraentertainment.com\/#\/schema\/logo\/image\/\",\"url\":\"http:\/\/kobraentertainment.com\/wp-content\/uploads\/2021\/01\/cropped-kobra.pyorea.valkoinen.2.png\",\"contentUrl\":\"http:\/\/kobraentertainment.com\/wp-content\/uploads\/2021\/01\/cropped-kobra.pyorea.valkoinen.2.png\",\"width\":1753,\"height\":1240,\"caption\":\"Kobra Entertainment\"},\"image\":{\"@id\":\"https:\/\/kobraentertainment.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kobraentertainment\",\"https:\/\/www.linkedin.com\/company\/15860212\",\"https:\/\/www.instagram.com\/kobraentertainment\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Test - Kobra Entertainment","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kobraentertainment.com\/fi\/test\/","og_locale":"fi_FI","og_type":"article","og_title":"Test - Kobra Entertainment","og_url":"https:\/\/kobraentertainment.com\/fi\/test\/","og_site_name":"Kobra Entertainment","article_publisher":"https:\/\/www.facebook.com\/kobraentertainment","article_modified_time":"2026-03-09T10:28:52+00:00","twitter_card":"summary_large_image","twitter_misc":{"Arvioitu lukuaika":"3 minuuttia"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/kobraentertainment.com\/test\/","url":"https:\/\/kobraentertainment.com\/test\/","name":"Test - Kobra Entertainment","isPartOf":{"@id":"https:\/\/kobraentertainment.com\/#website"},"datePublished":"2026-03-09T08:11:18+00:00","dateModified":"2026-03-09T10:28:52+00:00","breadcrumb":{"@id":"https:\/\/kobraentertainment.com\/test\/#breadcrumb"},"inLanguage":"fi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kobraentertainment.com\/test\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/kobraentertainment.com\/test\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kobraentertainment.com\/"},{"@type":"ListItem","position":2,"name":"Test"}]},{"@type":"WebSite","@id":"https:\/\/kobraentertainment.com\/#website","url":"https:\/\/kobraentertainment.com\/","name":"Kobra Entertainment","description":"Kobra Entertainment is a music marketing and management company.","publisher":{"@id":"https:\/\/kobraentertainment.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kobraentertainment.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"fi"},{"@type":"Organization","@id":"https:\/\/kobraentertainment.com\/#organization","name":"Kobra Entertainment","url":"https:\/\/kobraentertainment.com\/","logo":{"@type":"ImageObject","inLanguage":"fi","@id":"https:\/\/kobraentertainment.com\/#\/schema\/logo\/image\/","url":"http:\/\/kobraentertainment.com\/wp-content\/uploads\/2021\/01\/cropped-kobra.pyorea.valkoinen.2.png","contentUrl":"http:\/\/kobraentertainment.com\/wp-content\/uploads\/2021\/01\/cropped-kobra.pyorea.valkoinen.2.png","width":1753,"height":1240,"caption":"Kobra Entertainment"},"image":{"@id":"https:\/\/kobraentertainment.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kobraentertainment","https:\/\/www.linkedin.com\/company\/15860212","https:\/\/www.instagram.com\/kobraentertainment"]}]}},"_links":{"self":[{"href":"https:\/\/kobraentertainment.com\/fi\/wp-json\/wp\/v2\/pages\/3542"}],"collection":[{"href":"https:\/\/kobraentertainment.com\/fi\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/kobraentertainment.com\/fi\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/kobraentertainment.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kobraentertainment.com\/fi\/wp-json\/wp\/v2\/comments?post=3542"}],"version-history":[{"count":9,"href":"https:\/\/kobraentertainment.com\/fi\/wp-json\/wp\/v2\/pages\/3542\/revisions"}],"predecessor-version":[{"id":3553,"href":"https:\/\/kobraentertainment.com\/fi\/wp-json\/wp\/v2\/pages\/3542\/revisions\/3553"}],"wp:attachment":[{"href":"https:\/\/kobraentertainment.com\/fi\/wp-json\/wp\/v2\/media?parent=3542"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}