   :root {
       --primary: #1a6dff;
       /* O2B action blue (links, CTA, highlights) */
       --primary-dark: #0d54d6;
       /* hover / pressed                          */
       --primary-soft: #e9f1ff;
       /* tints                                    */
       --ink: #0d1b3e;
       /* headings (deep navy)                     */
       --ink-soft: #1f2a44;
       /* labels                                   */
       --muted: #5d6b85;
       /* body copy                                */
       --muted-2: #97a3ba;
       /* placeholders / hints                     */
       --field-bg: #f4f7fc;
       /* input background                         */
       --field-border: #e2e8f3;
       /* input border                            */
       --card: #ffffff;
       --line: #e8edf5;
       /* hairlines / dividers                     */
       --danger: #e5484d;
       /* required asterisk / errors               */
       --radius-card: 24px;
       --radius-field: 12px;
       --shadow-card: 0 30px 70px -24px rgba(13, 27, 62, .28),
           0 8px 24px -12px rgba(13, 27, 62, .12);
       --vh: 100vh;
       /* updated at runtime by setVH()            */
   }

   * {
       margin: 0;
       padding: 0;
       box-sizing: border-box;
   }

   html,
body {
    min-height: 100%;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
}

   body {
       font-family: 'Inter', sans-serif;
       color: var(--ink-soft);
       position: relative;
    overscroll-behavior-y: auto;
   }

   /* soft, clean page background to match the reference */
   body::before {
       content: "";
       position: fixed;
       inset: 0;
       background:
           radial-gradient(1200px 600px at 85% -10%, rgba(26, 109, 255, .06), transparent 60%),
           linear-gradient(180deg, #f6f9fe 0%, #eef3fb 100%);
       z-index: -1;
   }

   /* ============================ APP SHELL ============================ */
   .app-container {
    min-height: 100dvh;
    display: flex;
    flex-direction: column;
    overflow-x: hidden;
    overflow-y: auto;
}

   main {
       flex: 1 1 auto;
       display: flex;
       flex-direction: column;
       min-height: 0;
   }

   /* ---- two-column split (hero | form) ---- */
   .layout-split {
       flex: 1 1 auto;
       width: 100%;
       max-width: 1200px;
       margin: 0 auto;
       padding: 32px clamp(20px, 4vw, 56px);
       display: flex;
       flex-direction: row;
       align-items: center;
       justify-content: center;
       gap: clamp(28px, 5vw, 72px);
       min-height: 0;
   }

   /* ============================ HERO PANEL ============================ */
   .hero-panel {
       flex: 1 1 52%;
       max-width: 560px;
       align-self: center;
   }

   .hero-logo {
       height: 46px;
       width: auto;
       margin-bottom: clamp(24px, 5vh, 56px);
       display: block;
   }

   .hero-title {
       font-size: clamp(2rem, 3.4vw, 3.05rem);
       line-height: 1.08;
       font-weight: 800;
       letter-spacing: -.02em;
       color: var(--ink);
   }

   .hero-title .accent {
       color: var(--primary);
   }

   .hero-rule {
       width: 64px;
       height: 4px;
       border-radius: 4px;
       background: var(--primary);
       margin: 22px 0 20px;
   }

   .hero-sub {
       font-size: 1.05rem;
       line-height: 1.6;
       color: var(--muted);
       max-width: 30rem;
   }

   .quote-slider{
    position: relative;
    overflow: hidden;
    min-height: 90px; /* adjust if needed */
}

.quote-slider p{
    margin: 14px 0;
    font-style: italic;
    font-weight: 700;
    font-size: 1.32rem;
    line-height: 1.4;
    color: var(--ink);
    max-width: 26rem;

    transition: all 0.6s ease;
}

.quote-slide-out{
    opacity: 0;
    transform: translateY(-30px);
}

.quote-slide-in{
    opacity: 0;
    transform: translateY(30px);
}

   .hero-quote {
       position: relative;
       margin: clamp(26px, 5vh, 48px) 0;
   }

   .hero-quote .qmark {
       width: 34px;
       height: auto;
       display: block;
       fill: #c8d4ea;
   }

   .hero-quote .qmark.close {
       transform: rotate(180deg);
       margin-left: auto;
       margin-top: 6px;
   }

   .hero-quote p {
       font-style: italic;
       font-weight: 700;
       font-size: 1.32rem;
       line-height: 1.4;
       color: var(--ink);
       max-width: 26rem;
       margin: 14px 0;
   }

   .hero-quote p .accent {
       color: var(--primary);
   }

   .hero-features {
       display: grid;
       grid-template-columns: repeat(4, 1fr);
       gap: 18px;
       margin-top: 8px;
       max-width: 30rem;
   }

   .hero-feature {
       text-align: center;
       color: var(--muted);
   }

   .hero-feature svg {
       width: 26px;
       height: 26px;
       stroke: var(--primary);
       fill: none;
       margin: 0 auto 10px;
       display: block;
   }

   .hero-feature span {
       display: block;
       font-size: .8rem;
       font-weight: 600;
       line-height: 1.25;
       color: var(--ink-soft);
   }

   /* ============================ FORM CARD ============================ */
   .survey-container {
       flex: 0 1 480px;
       width: 100%;
       max-width: 480px;
       display: flex;
       flex-direction: column;
       justify-content: center;
       min-height: 0;
       align-self: center;
   }

   .glass-card {
       background: var(--card);
       border: 1px solid var(--line);
       border-radius: var(--radius-card);
       padding: clamp(28px, 3vw, 40px);
       box-shadow: var(--shadow-card);
       display: flex;
       flex-direction: column;
       width: 100%;
       max-height: calc(var(--vh) - 96px);
       overflow: hidden;
       /* outer card never scrolls */
   }

   /* internal scroll area for long / multi-option surveys */
   #dynamicQuestionArea {
       flex: 1 1 auto;
       min-height: 0;
       overflow-y: auto;
       padding-right: 6px;
       -webkit-overflow-scrolling: touch;
   }

   #dynamicQuestionArea::-webkit-scrollbar {
       width: 6px;
   }

   #dynamicQuestionArea::-webkit-scrollbar-thumb {
       background: #cfd9ea;
       border-radius: 6px;
   }

   /* dynamic question header */
   .step-title {
       font-size: 1.7rem;
       line-height: 1.18;
       font-weight: 800;
       letter-spacing: -.015em;
       color: var(--ink);
       position: relative;
       padding-bottom: 14px;
   }

   .step-title::after {
       /* blue underline accent (matches design) */
       content: "";
       position: absolute;
       left: 0;
       bottom: 0;
       width: 52px;
       height: 4px;
       border-radius: 4px;
       background: var(--primary);
   }

   .step-subtitle {
       margin-top: 16px;
       font-size: .98rem;
       line-height: 1.55;
       color: var(--muted);
   }

   /* ============================ FIELDS ============================ */
   .input-group {
       display: flex;
       flex-direction: column;
       gap: 1rem;
   }

   .input-field {
       width: 100%;
       padding: .82rem 1rem;
       border-radius: var(--radius-field);
       border: 1px solid var(--field-border);
       background: var(--field-bg);
       color: var(--ink);
       font-family: 'Inter', sans-serif;
       font-size: .95rem;
       transition: border-color .2s ease, box-shadow .2s ease, background .2s ease;
   }

   .input-field::placeholder {
       color: var(--muted-2);
       opacity: 1;
   }

   .input-field:focus {
       outline: none;
       border-color: var(--primary);
       background: #fff;
       box-shadow: 0 0 0 3px rgba(26, 109, 255, .15);
   }

   .input-field.error {
       border-color: var(--danger);
   }

   textarea.input-field {
       min-height: 150px;
       line-height: 1.5;
       resize: none;
   }

   /* contact / multi-field form grid (the "Executive Identification" form) */
   .contact-form-grid {
       display: grid;
       grid-template-columns: 1fr 1fr;
       gap: 18px;
       margin-top: 24px;
   }

   .contact-field {
       display: flex;
       flex-direction: column;
   }

   .contact-field label {
       font-weight: 600;
       font-size: .82rem;
       color: var(--ink-soft);
       margin-bottom: 8px;
       display: block;
   }

   /* contact-field inputs/selects share the base .input-field look */
   .contact-field input,
   .contact-field select {
       width: 100%;
   }

   .required-star {
       color: var(--danger);
       font-weight: 700;
       margin-left: 3px;
   }

   /* leading icons inside contact inputs (set by decorateContactFields()) */
   .contact-field[data-icon] input {
       padding-left: 42px;
   }

   .contact-field[data-icon] input {
       background-repeat: no-repeat;
       background-position: 14px center;
       background-size: 17px 17px;
   }

   .contact-field[data-icon="none"] input,
   .contact-field[data-icon="default"] input {
       padding-left: 1rem;
       background-image: none;
   }

   .contact-field[data-icon="person"] input {
       background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2397a3ba' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='12' cy='7' r='4'/%3E%3C/svg%3E");
   }

   .contact-field[data-icon="building"] input {
       background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2397a3ba' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='3' width='16' height='18' rx='1'/%3E%3Cpath d='M9 8h.01M15 8h.01M9 12h.01M15 12h.01M9 16h.01M15 16h.01'/%3E%3C/svg%3E");
   }

   .contact-field[data-icon="mail"] input {
       background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2397a3ba' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2' y='4' width='20' height='16' rx='2'/%3E%3Cpath d='m22 7-10 6L2 7'/%3E%3C/svg%3E");
   }

   .contact-field[data-icon="phone"] input {
       background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2397a3ba' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.13.96.36 1.9.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.91.34 1.85.57 2.81.7A2 2 0 0 1 22 16.92Z'/%3E%3C/svg%3E");
   }

   /* selects — unified look with a custom chevron on the right */
   .contact-field select,
   select.input-field,
   select,
   .custom-select {
       width: 100%;
       height: 50px;
       padding: 0 44px 0 16px;
       border-radius: var(--radius-field);
       border: 1px solid var(--field-border);
       background-color: var(--field-bg);
       color: var(--ink);
       font-family: 'Inter', sans-serif;
       font-size: .95rem;
       appearance: none;
       -webkit-appearance: none;
       -moz-appearance: none;
       background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%235d6b85' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
       background-repeat: no-repeat;
       background-position: right 16px center;
       cursor: pointer;
       transition: border-color .2s ease, box-shadow .2s ease, background .2s ease;
   }

   .contact-field select:focus,
   select:focus,
   .custom-select:focus {
       outline: none;
       border-color: var(--primary);
       background-color: #fff;
       box-shadow: 0 0 0 3px rgba(26, 109, 255, .15);
   }

   select option[value=""],
   .custom-select option[value=""] {
       color: var(--muted-2);
   }

   /* ============================ RADIO / CHECKBOX CARDS ============================ */
   .options-grid {
       display: flex;
       flex-direction: column;
       gap: .7rem;
   }

   .option-card,
   .checkbox-card,
   .session-btn {
       display: flex;
       align-items: center;
       gap: 12px;
       padding: 14px 18px;
       margin-top: 12px;
       border-radius: var(--radius-field);
       border: 1px solid var(--field-border);
       background: var(--field-bg);
       color: var(--ink-soft);
       cursor: pointer;
       user-select: none;
       transition: border-color .2s ease, background .2s ease, box-shadow .2s ease;
   }

   .option-card:hover,
   .checkbox-card:hover,
   .session-btn:hover {
       border-color: var(--primary);
       background: var(--primary-soft);
   }

   .option-card input,
   .checkbox-card input {
       accent-color: var(--primary);
       width: 18px;
       height: 18px;
       flex: 0 0 auto;
   }

   .option-card input:checked~span,
   .checkbox-card input:checked~span {
       color: var(--primary);
       font-weight: 600;
   }

   .session-center {
       display: flex;
       justify-content: center;
   }

   .checkbox-grid {
       display: grid;
       grid-template-columns: repeat(2, 1fr);
       gap: 12px;
       margin-top: 12px;
   }

   /* custom checkbox box used by renderSelection() */
   .checkbox-box {
       width: 20px;
       height: 20px;
       flex: 0 0 auto;
       border-radius: 6px;
       border: 2px solid #cbd5e1;
       display: flex;
       align-items: center;
       justify-content: center;
       transition: all .2s ease;
   }

   .checkbox-box svg {
       width: 14px;
       height: 14px;
       opacity: 0;
   }

   .checkbox-card input[type="checkbox"]:checked+.checkbox-box {
       border-color: var(--primary);
       background: var(--primary);
   }

   .checkbox-card input[type="checkbox"]:checked+.checkbox-box svg {
       opacity: 1;
       stroke: #fff;
   }

   .section-question {
       margin-bottom: 28px;
   }

   .section-question h4 {
       color: var(--ink);
   }

   /* ============================ NAVIGATION ============================ */
   .navigation {
       flex: 0 0 auto;
       display: flex;
       justify-content: space-between;
       align-items: center;
       gap: 12px;
       margin-top: 24px;
       padding-top: 20px;
       border-top: 1px solid var(--line);
   }

   .btn {
       padding: .72rem 1.6rem;
       border-radius: 10px;
       border: 1px solid transparent;
       font-family: 'Inter', sans-serif;
       font-weight: 600;
       font-size: .95rem;
       cursor: pointer;
       transition: all .2s ease;
       display: inline-flex;
       align-items: center;
       justify-content: center;
       line-height: 1;
   }

   /* Back button — ghost when active, solid grey when disabled (= first page) */
   .btn-secondary {
       background: #fff;
       color: var(--muted);
       border: 1px solid var(--field-border);
   }

   .btn-secondary:hover {
       border-color: var(--primary);
       color: var(--primary);
       background: var(--primary-soft);
   }

   .btn-secondary:disabled {
       background: #eef1f6;
       color: #9aa6bc;
       border-color: #eef1f6;
       cursor: not-allowed;
       box-shadow: none;
   }

   /* Continue / Submit — solid blue */
   .btn-primary {
       background: var(--primary);
       color: #fff;
       border-color: var(--primary);
       box-shadow: 0 8px 20px -8px rgba(26, 109, 255, .6);
   }

   .btn-primary:hover {
       background: var(--primary-dark);
       border-color: var(--primary-dark);
       box-shadow: 0 10px 24px -8px rgba(26, 109, 255, .7);
   }

   /* ============================ FOOTER ============================ */
   footer {
       flex: 0 0 auto;
       text-align: center;
       font-size: .78rem;
       color: var(--muted-2);
       padding: 14px 0;
       padding-bottom: calc(14px + env(safe-area-inset-bottom));
   }

   /* ============================ SUCCESS / THANK YOU ============================ */
   .success-screen {
       flex: 1;
       display: none;
       /* toggled to flex by JS */
       align-items: center;
       justify-content: center;
       padding: 24px;
   }

   .success-card {
       text-align: center;
       max-width: 38rem;
       width: 100%;
       padding: 3rem 2rem;
       display: flex;
       flex-direction: column;
       justify-content: center;
       align-items: center;
       gap: 4px;
   }

   .success-card h2 {
       font-size: 2.2rem;
       font-weight: 800;
       color: var(--ink);
   }

   .success-card p {
       font-size: 1rem;
       color: var(--muted);
       margin-bottom: 20px;
   }

   .success-card button {
       min-width: 220px;
   }

   .thankyou-actions {
       display: flex;
       gap: 16px;
       justify-content: center;
       margin-top: 24px;
   }

   .appointment {
       margin-top: 10px;
   }

   .start {
       background: var(--primary);
       color: #fff;
       width: 220px;
       font-weight: 600;
       padding: 12px 25px;
       border-radius: 10px;
       border: 2px solid var(--primary);
       transition: all .2s ease;
       display: inline-flex;
       align-items: center;
       justify-content: center;
   }

   .start:hover {
       background: var(--primary-dark);
       border-color: var(--primary-dark);
   }

   .btn-odoo-outline {
       border: 2px solid var(--primary) !important;
       color: var(--primary);
       padding: 10px 22px;
       border-radius: 10px;
       font-weight: 600;
       background: transparent;
       display: inline-flex;
       align-items: center;
       gap: 10px;
       transition: all .2s ease;
       text-decoration: none;
   }

   .btn-odoo-outline:hover {
       background: var(--primary);
       color: #fff;
   }

   /* ============================ CSM RATING SCALE ============================ */
   .csm-rating-btn {
       box-sizing: border-box;
       opacity: .9;
       border: 2px solid transparent;
       transition: all .2s ease;
   }

   .csm-rating-btn:hover {
       opacity: 1;
       border: 2px solid #1e293b;
       transform: translateY(-3px);
   }

   .csm-rating-btn.active {
       opacity: 1;
       transform: scale(1.08);
       border: 2px solid #1e293b;
       box-shadow: 0 8px 18px rgba(0, 0, 0, .25);
   }

   .csm-scale-wrapper {
       width: 100%;
   }

   .csm-question-title {
       font-size: .98rem;
       line-height: 1.4;
       font-weight: 400;
       color: var(--ink-soft);
   }

   .csm-label-row {
       display: flex;
       justify-content: space-between;
       width: 100%;
       margin-top: 6px;
       font-size: 10px;
       color: #000;
   }

   .csm-label-row span:last-child {
       text-align: right;
   }

   /* ============================ LOADER ============================ */
   .global-loader {
       position: fixed;
       inset: 0;
       background: rgba(246, 249, 254, .8);
       backdrop-filter: blur(4px);
       display: flex;
       align-items: center;
       justify-content: center;
       z-index: 9999;
   }

   .global-loader.hidden {
       display: none;
   }

   .loader-card {
       background: #fff;
       padding: 28px 32px;
       border-radius: 16px;
       box-shadow: var(--shadow-card);
       text-align: center;
       min-width: 260px;
   }

   .loader-card p {
       margin-top: 14px;
       font-weight: 600;
       color: var(--ink);
   }

   .spinner {
       width: 42px;
       height: 42px;
       border: 4px solid #e5edf8;
       border-top-color: var(--primary);
       border-radius: 50%;
       animation: spin .8s linear infinite;
       margin: 0 auto;
   }

   @keyframes spin {
       to {
           transform: rotate(360deg);
       }
   }

   /* legacy logo styles kept (logo now lives in hero, but classes retained) */
   .survey-logo-wrapper {
       display: none;
   }

   /* logo relocated into hero panel */
   .survey-logo {
       max-width: 100%;
   }

   /* ===================================================================
       RESPONSIVE
       =================================================================== */

   /* Tablet & below: stack hero above the form, allow natural page scroll */
   @media (max-width: 991px) {

    html,
    body {
        height: auto !important;
        overflow-y: auto !important;
    }

    .app-container {
        height: auto !important;
        min-height: 100dvh;
        overflow: visible !important;
    }

       main {
           min-height: 0;
       }

       .layout-split {
           flex-direction: column;
           align-items: stretch;
           gap: 28px;
           padding: 28px clamp(18px, 4vw, 40px);
       }

       .hero-panel {
           flex: none;
           max-width: 640px;
           width: 100%;
           margin: 0 auto;
           text-align: left;
       }

       .hero-features {
           max-width: none;
       }

       .survey-container {
           flex: none;
           max-width: 560px;
           width: 100%;
           margin: 0 auto;
           justify-content: flex-start;
       }

    .glass-card {
        max-height: none !important;
        overflow: visible !important;
    }

    #dynamicQuestionArea {
        overflow: visible !important;
        max-height: none !important;
    }
   }

   /* Phone: keep the form front-and-centre, trim heavy hero decoration */
   @media (max-width: 600px) {
       .layout-split {
           padding: 20px 16px 8px;
           gap: 18px;
       }

       .hero-logo {
           height: 38px;
           margin-bottom: 16px;
       }

       .hero-title {
           font-size: 1.7rem;
       }

       .hero-rule {
           margin: 16px 0 14px;
       }

       .hero-sub {
           font-size: .95rem;
       }

       .hero-quote,
       .hero-features {
           display: none;
       }

       /* declutter on phones */
       .glass-card {
           padding: 22px 18px;
           border-radius: 20px;
       }

       .step-title {
           font-size: 1.35rem;
       }

       .contact-form-grid {
           grid-template-columns: 1fr;
           gap: 14px;
       }

       .checkbox-grid {
           grid-template-columns: 1fr;
       }

       .btn {
           padding: .7rem 1.2rem;
           font-size: .9rem;
       }

       .navigation {
           gap: 10px;
       }
   }

   @media (max-width: 360px) {
       .hero-title {
           font-size: 1.5rem;
       }

       .glass-card {
           padding: 18px 14px;
       }
   }