/**
 * HeyUp - Match Wizard Styles
 * Layout: Header fixed + Content scrollabile + Footer fixed
 */

:root {
    /* Brand colors */
    --primary: #202347;
    --primary-dark: #1a1d3a;
    --primary-light: #f0f4ff;
    --accent: #f59e61;
    --accent-rgb: 245, 158, 97;
    --accent-light: #fff7ed;
    --accent-dark: #ea8c4a;
    --accent-border: #fdba74;
    
    /* Status colors */
    --error: #dc2626;
    --danger: #dc2626;
    --warning: #f59e0b; 
    --warning-light: #fef3c7;
    --success: #22c55e;
    --info: #3b82f6;
    --info-light: #dbeafe;
    
    --heyup-arancio:#FFBD7E;

    /* Grays */
    --gray-50: #f9fafb;
    --gray-100: #f3f4f6;
    --gray-200: #e5e7eb;
    --gray-300: #d1d5db;
    --gray-400: #9ca3af;
    --gray-500: #6b7280;
    --gray-600: #4b5563;
    --gray-700: #374151;
    --gray-900: #111827;
    
    /* Background */
    --bg-main: #f8f6f3;
    --bg-card: #ffffff;
    
    /* Decoration colors (from screenshot) */
    --deco-purple: #b8b4d9;
    --deco-green: #c5ddd5;
    --deco-olive: #c4cba8;
    --deco-beige: #e8dcc8;
    
    /* Layout */
    --header-height: 120px;
    --footer-height: 100px;

    --hf-bg-transparent: rgba(248, 246, 243, 0.5);
}

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

body {
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    background: var(--bg-main);
    color: var(--gray-900);
    line-height: 1.5;
    min-height: 100vh;
    overflow-x: hidden;
}

/* ===========================================
   Background Decorations - Animated
   =========================================== */
.bg-decorations {
    position: fixed;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    overflow: hidden;
}

.bg-shape {
    position: absolute;
    border-radius: 50%;
    filter: blur(0px);
    opacity: 0.6;
}

/* Shape 1: Purple - top right */
.bg-shape--1 {
    width: 180px;
    height: 180px;
    background: var(--deco-purple);
    top: 5%;
    right: -40px;
    transform: rotate(-20deg);
    border-radius: 40% 60% 70% 30% / 40% 50% 60% 50%;
    animation: float1 25s ease-in-out infinite;
}

/* Shape 2: Green - right side */
.bg-shape--2 {
    width: 120px;
    height: 120px;
    background: var(--deco-green);
    top: 25%;
    right: 5%;
    border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%;
    animation: float2 30s ease-in-out infinite;
}

/* Shape 3: Purple - left side */
.bg-shape--3 {
    width: 100px;
    height: 100px;
    background: var(--deco-purple);
    top: 45%;
    left: -20px;
    transform: rotate(45deg);
    border-radius: 30% 70% 70% 30% / 30% 30% 70% 70%;
    animation: float3 28s ease-in-out infinite;
}

/* Shape 4: Olive/Green - bottom left */
.bg-shape--4 {
    width: 200px;
    height: 200px;
    background: linear-gradient(135deg, var(--deco-olive) 0%, var(--deco-green) 100%);
    bottom: 5%;
    left: -60px;
    border-radius: 60% 40% 50% 50% / 50% 60% 40% 50%;
    animation: float4 35s ease-in-out infinite;
}

/* Shape 5: Beige - bottom */
.bg-shape--5 {
    width: 150px;
    height: 150px;
    background: var(--deco-beige);
    bottom: 15%;
    left: 10%;
    border-radius: 40% 60% 60% 40% / 60% 40% 60% 40%;
    animation: float5 32s ease-in-out infinite;
}

@keyframes float1 {
    0%, 100% { transform: translate(0, 0) rotate(-20deg); }
    25% { transform: translate(-10px, 15px) rotate(-15deg); }
    50% { transform: translate(5px, -10px) rotate(-25deg); }
    75% { transform: translate(-5px, 5px) rotate(-18deg); }
}

@keyframes float2 {
    0%, 100% { transform: translate(0, 0) rotate(0deg); }
    33% { transform: translate(-15px, 10px) rotate(5deg); }
    66% { transform: translate(10px, -15px) rotate(-5deg); }
}

@keyframes float3 {
    0%, 100% { transform: translate(0, 0) rotate(45deg); }
    25% { transform: translate(10px, -10px) rotate(50deg); }
    50% { transform: translate(-5px, 15px) rotate(40deg); }
    75% { transform: translate(8px, 5px) rotate(48deg); }
}

@keyframes float4 {
    0%, 100% { transform: translate(0, 0) rotate(0deg); }
    20% { transform: translate(15px, -10px) rotate(3deg); }
    40% { transform: translate(-10px, 20px) rotate(-2deg); }
    60% { transform: translate(20px, 10px) rotate(4deg); }
    80% { transform: translate(-5px, -15px) rotate(-3deg); }
}

@keyframes float5 {
    0%, 100% { transform: translate(0, 0); }
    50% { transform: translate(20px, -20px); }
}

/* ===========================================
   Fixed Header
   =========================================== */
.wizard-header {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 100;
    background: var(--hf-bg-transparent);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    padding: 1rem 1.5rem 0;
}

.header-top {
    display: flex;
    justify-content: space-between;
    align-items: center;
    max-width: 900px;
    margin: 0 auto 1rem;
}

.wizard-logo {
    height: 45px;
    width: auto;
}

.header-login {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    font-size: 0.875rem;
    color: var(--gray-600);
}

.header-login-btn {
    background: #c5e47c;
    color: #17253f;
    border: none;
    padding: 0.75rem 1.725rem;
    border-radius: 12px;
    font-size: 0.875rem;
    font-weight: 500;
    cursor: pointer;
    text-decoration: none;
    transition: background 0.2s;
}


/* Progress bar in header */
.progress-container {
    max-width: 600px;
    margin: 0 auto;
    padding-bottom: 1rem;
}

.progress-bar {
    height: 7px;
    background: var(--gray-200);
    border-radius: 22px;
    box-sizing: border-box;
}

.progress-fill {
    height: 100%;
    background: #ffbd7e;
    border-radius: 2px;
    transition: width 0.4s ease;
    border-radius: 10px;
   /* box-shadow: 0 0 6px 0px #f973166b;*/
}

/* ===========================================
   Main Content Area
   =========================================== */
.wizard-main {
    position: relative;
    z-index: 1;
    min-height: 100vh;
    padding-top: var(--header-height);
    padding-bottom: var(--footer-height);
    display: flex;
    flex-direction: column;
}

.wizard-content {
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    max-width: 650px;
    width: 100%;
    margin: 0 auto;
    padding: 2rem 1.5rem;
}

/* ===========================================
   Wizard Steps
   =========================================== */
.wizard-step {
    display: none;
    flex-direction: column;
    animation: fadeIn 0.3s ease;
}

.wizard-step.active {
    display: flex;
}

@keyframes fadeIn {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

.wizard-title {
    font-size: 1.75rem;
    font-weight: 600;
    color: var(--primary);
    margin-bottom: 2rem;
    text-align: center;
}

.wizard-subtitle {
    font-size: .8rem;
    color: var(--gray-500);
    margin-top: -1.5rem;
    margin-bottom: 2rem;
    text-align: left;
    margin-top: -13px;
    line-height: 1.5;
}

.login.container .logo{
    text-align: center;
    margin-bottom: 30px;
    margin-top: -60px;
}
.login.container .logo img{
    width: 170px;
}


.login.container .card{
    background-color: #fff;
    border-radius: 24px;
    padding: 18px 24px;
    box-shadow: 0 4px 30px rgba(0, 0, 0, 0.06);
    height: auto;
}
.login.container .card .wizard-title{
    text-align: center;
    color: var(--primary);
    font-family: 'Erode', Georgia, serif;
    margin: 10px 0 20px;
    font-size: 1.5rem;
    font-weight: 500;
    color: var(--color-blue);
    letter-spacing: -0.04rem;
}
/* ===========================================
   Options - Simple Style (like screenshot)
   =========================================== */
.options {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.option {
    display: block;
    position: relative;
}

.option input {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
}

.option-label {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 1rem 1.25rem;
    border: 1px solid var(--gray-300);
    border-radius: 8px;
    cursor: pointer;
    transition: all 0.2s ease;
    background: white;
}

.option-label:hover {
    border-color: var(--accent);
    background: var(--accent-light);
}

.option input:checked + .option-label {
    border-color: var(--accent);
    background: var(--accent-light);
    /*border-width: 2px;
    padding: calc(1rem - 1px) calc(1.25rem - 1px);*/
}

.option-text {
    font-size: 1rem;
    color: var(--gray-700);
    font-weight: 400;
}

.option input:checked + .option-label .option-text {
    color: var(--accent);
    font-weight: 500;
}

/* Checkmark indicator for options */
.option-check {
    width: 24px;
    height: 24px;
    min-width: 24px;
    border-radius: 50%;
    border: 2px solid var(--gray-300);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.2s ease;
    background: white;
}

.option-check svg {
    width: 14px;
    height: 14px;
    color: white;
    opacity: 0;
    transition: opacity 0.2s;
}

/* Selected state - filled circle with check */
.option input:checked + .option-label .option-check {
    background: var(--accent);
    border-color: var(--accent);
}

.option input:checked + .option-label .option-check svg {
    opacity: 1;
}

/* Hover state */
.option:hover .option-check {
    border-color: var(--accent);
}

/* Legacy option styles (for backwards compatibility) */
.option-content {
    flex: 1;
    display: flex;
    flex-direction: column;
}

.option-title {
    font-size: 1rem;
    font-weight: 400;
    color: var(--gray-700);
}

.option input:checked + .option-label .option-title {
    color: var(--accent);
    font-weight: 500;
}

.option-desc {
    display: none; /* Hide descriptions for cleaner look */
}

.option-icon-wrapper {
    display: none; /* Hide icons for cleaner look */
}

.option-radio {
    display: none; /* Hide radio indicators for single-choice */
}

/* Checkbox indicator for multi-select options */
.option-checkbox {
    width: 20px;
    height: 20px;
    min-width: 20px;
    border: 2px solid var(--gray-300);
    border-radius: 4px;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.2s ease;
    background: white;
    position: relative;
}

.option:hover .option-checkbox {
    border-color: var(--accent);
}

.option input:checked + .option-label .option-checkbox {
    background: var(--accent);
    border-color: var(--accent);
}

.option input:checked + .option-label .option-checkbox::after {
    content: '';
    width: 6px;
    height: 4px;
    border: 2px solid white;
    border-top: none;
    border-right: none;
    transform: rotate(-45deg);
    position: absolute;
    top: 4px;
}

/* ===========================================
   Fixed Footer
   =========================================== */
.wizard-footer {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 100;
    background: var(--hf-bg-transparent);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    padding: 1rem 1.5rem 1.5rem;
}

.footer-content {
    max-width: 700px;
    margin: 0 auto;
}

.wizard-nav {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
}

.footer-privacy {
    text-align: center;
    font-size: 0.8125rem;
    color: var(--gray-500);
    margin-top: 0.75rem;
}

/* ===========================================
   Buttons
   =========================================== */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    padding: 1rem 1.75rem;
    border-radius: 12px;
    font-size: 0.9375rem;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.2s ease;
    border: none;
    text-decoration: none;
}

.btn-secondary,
.btn-back {
    background: white;
    color: var(--gray-700);
    border: 1px solid var(--gray-300);
}

.btn-secondary:hover,
.btn-back:hover {
    background: var(--gray-50);
    border-color: var(--gray-400);
}

.btn-primary {
    background: var(--accent);
    color: var(--primary);
    border: none;
    font-weight: 600;
}

.btn-primary:hover:not(:disabled) {
    background: var(--accent-dark);
}

.btn-primary:disabled {
    background: var(--gray-300);
    color: var(--gray-500);
    cursor: not-allowed;
}

.btn-full {
    width: 100%;
}

/* Hide old wizard-actions (buttons are now in footer) */
.wizard-actions {
    display: none;
}

/* ===========================================
   Areas Grid
   =========================================== */
.areas-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0.75rem;
    margin-bottom: 1rem;
}

.area-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: .5rem 1rem;
    border: 1px solid var(--gray-300);
    border-radius: 12px;
    cursor: pointer;
    transition: all 0.2s ease;
    background: white;
    text-align: center;
    position: relative;
    min-height: 60px;
    justify-content: center;
}

/* Hide native checkbox */
.area-card input[type="checkbox"] {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
    pointer-events: none;
}

.area-card:hover {
    border-color: var(--accent);
    background: var(--accent-light);
}

.area-card:has(input:checked) {
    border-color: var(--accent);
    background: var(--accent-light);
    border-width: 2px;
}

.area-card-check {
    position: absolute;
    top: 8px;
    right: 8px;
    width: 22px;
    height: 22px;
    background: var(--accent);
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    transform: scale(0.5);
    transition: all 0.2s ease;
}

.area-card:has(input:checked) .area-card-check {
    opacity: 1;
    transform: scale(1);
}

.area-card-check svg {
    width: 14px;
    height: 14px;
    color: white;
}

.area-icon {
    width: 40px;
    height: 40px;
    margin-bottom: 0.75rem;
    color: var(--heyup-arancio);
}

.area-card:has(input:checked) .area-icon {
    color: var(--accent);
}

.area-label {
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--gray-700);
    line-height: 1.3;
}

.area-card div{
    font-size: 27px;
}

.area-card:has(input:checked) .area-label {
    color: var(--primary);
}

@media (max-width: 480px) {
    .areas-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

/* ===========================================
   Question Options (Multi-select)
   =========================================== */
.question-options {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.question-option {
    display: flex;
    align-items: flex-start;
    padding: 1rem;
    border: 1px solid var(--gray-300);
    border-radius: 12px;
    cursor: pointer;
    transition: all 0.2s ease;
    background: white;
    gap: 0.75rem;
}

.question-option:hover {
    border-color: var(--accent);
    background: var(--accent-light);
}

.question-option.selected {
    border-color: var(--accent);
    background: var(--accent-light);
}

.question-option-check {
    width: 20px;
    height: 20px;
    min-width: 20px;
    border: 2px solid var(--gray-300);
    border-radius: 4px;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.2s ease;
    margin-top: 2px;
    background: white;
}

.question-option:hover .question-option-check {
    border-color: var(--accent);
}

.question-option.selected .question-option-check {
    background: var(--accent);
    border-color: var(--accent);
}

.question-option-check svg {
    width: 10px;
    height: 10px;
    color: white;
    opacity: 0;
    transition: opacity 0.15s;
}

.question-option.selected .question-option-check svg {
    opacity: 1;
}

.question-option-content {
    flex: 1;
}

.question-option-label {
    font-size: 0.9375rem;
    color: var(--gray-700);
    font-weight: 500;
    line-height: 1.4;
}

.question-option.selected .question-option-label {
    color: var(--primary);
}

.option-hint {
    font-size: 0.8125rem;
    color: var(--gray-500);
    margin-top: 0.25rem;
    line-height: 1.4;
}

.option-sublabel {
    display: block;
    font-size: 0.8125rem;
    color: var(--gray-500);
    margin-top: 0.125rem;
    font-weight: 400;
}

.option-icon {
    font-size: 1.25rem;
    margin-right: 0.75rem;
    flex-shrink: 0;
}

.option-with-sublabel .option-label {
    align-items: flex-start;
}

.option-with-sublabel .option-content {
    flex: 1;
}

/* None of these option */
.none-of-these-option {
    margin-top: 0.5rem;
    border-style: dashed;
}

/* ===========================================
   Expert Message
   =========================================== */
.expert-message {
    /* background: #C5E47C; */
    border-radius: 12px;
    padding: 1.25rem 1.5rem;
    margin-bottom: 1.5rem;
    border: 1px solid #2a9d8f70;
    background: var(--hf-bg-transparent);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
}

.expert-message-text {
    font-size: 0.90375rem;
    color: var(--gray-700);
    line-height: 1.16;
    margin: 0 0 1rem 0;
    font-style: italic;
}

.expert-message-text a {
    color: var(--accent);
    text-decoration: underline;
    font-weight: 500;
}

.expert-message-text a:hover {
    color: #e07830;
}

.expert-author {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.expert-avatar {
    width: 40px;
    height: 40px;
    min-width: 40px;
    border-radius: 50%;
    object-fit: cover;
}

.expert-name {
    font-size: 0.8rem;
    font-weight: 600;
    color: #2A9D8F;
    margin: 0;
}

.expert-role {
    font-size: 0.8rem;
    color: var(--gray-500);
    margin: 0;
}

/* Hide content wrapper - not needed */
.expert-message-content {
    display: none;
}

.expert-link {
    display: none;
}

/* ===========================================
   Crisis Message
   =========================================== */
.crisis-message {
    background: var(--info-light);
    border: 1px solid var(--info);
    border-radius: 12px;
    padding: 0.75rem 1rem;
    margin-top: 0.75rem;
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
}

.crisis-message-icon {
    color: var(--info);
    flex-shrink: 0;
    margin-top: 2px;
}

.crisis-message-text {
    font-size: 0.8125rem;
    color: var(--gray-700);
    line-height: 1.4;
}

/* ===========================================
   Text Inputs
   =========================================== */
.text-input-container {
    margin-bottom: 1rem;
}

.text-input-field, textarea {
    width: 100%;
    padding: 1rem 1.25rem;
    border: 1px solid var(--gray-300);
    border-radius: 12px;
    font-size: 1rem;
    font-family: inherit;
    color: var(--gray-700);
    background: white;
    transition: border-color 0.2s, box-shadow 0.2s;
    line-height: 1.6;
}

.text-input-field:focus {
    outline: none;
    border-color: var(--accent);
    box-shadow: 0 0 0 3px rgba(245, 158, 97, 0.15);
    background: white;
}

.text-input-field::placeholder {
    color: var(--gray-400);
    font-style: italic;
}

/* Textarea specific styles */
textarea.text-input-field {
    min-height: 140px;
    resize: vertical;
    display: block;
}

/* Single line input */
input.text-input-field {
    min-height: auto;
    resize: none;
    padding: 0.875rem 1.25rem;
}

/* ===========================================
   Blocked Screen
   =========================================== */
.blocked-content {
    text-align: center;
    padding: 2rem 0;
}

.blocked-icon {
    font-size: 3rem;
    margin-bottom: 1rem;
}

.blocked-message {
    font-size: 1rem;
    color: var(--gray-700);
    margin-bottom: 1.5rem;
    line-height: 1.6;
}

.info-box {
    background: var(--heyup-arancio);
    border-radius: 12px;
    padding: 1rem;
    margin-bottom: 1.5rem;
}

.info-box p {
    font-size: 0.875rem;
    color: var(--gray-700);
    line-height: 1.5;
}

.contact {
    font-size: 0.875rem;
    color: var(--gray-600);
}

.contact a {
    color: var(--primary);
}

/* ===========================================
   Thanks Screen
   =========================================== */
.thanks-content {
    text-align: center;
    padding: 1rem 0 2rem;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.thanks-logo {
    height: 50px;
    margin-bottom: 2rem;
}

/* Orbit illustration */
.orbit-illustration {
    position: relative;
    width: 250px;
    height: 250px;
    margin-bottom: 2rem;
}

.orbit {
    position: absolute;
    border: 1px solid #e5ddd4;
    border-radius: 50%;
}

.orbit-outer {
    width: 250px;
    height: 250px;
    top: 0;
    left: 0;
}

.orbit-middle {
    width: 175px;
    height: 175px;
    top: 37.5px;
    left: 37.5px;
}

.orbit-center {
    position: absolute;
    width: 85px;
    height: 85px;
    top: 82.5px;
    left: 82.5px;
    background: #c5d99a;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
}

/* Contenitori orbita per animazione */
.orbit-ring {
    position: absolute;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
}

.orbit-ring-outer {
    animation: orbit-spin 25s linear infinite;
}

.orbit-ring-middle {
    animation: orbit-spin 18s linear infinite reverse;
}

.orbit-ring-inner {
    animation: orbit-spin 30s linear infinite;
}

@keyframes orbit-spin {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

/* Pallini orbitanti */
.orbit-dot {
    position: absolute;
    border-radius: 50%;
}

/* Pallini su orbita esterna (raggio ~125px dal centro) */
.dot-1 {
    width: 20px;
    height: 20px;
    background: #7fb3a8;
    top: -10px;
    left: 50%;
    transform: translateX(-50%);
}

.dot-2 {
    width: 24px;
    height: 24px;
    background: #a8b4c4;
    top: 35px;
    left: 8px;
}

/* Pallini su orbita media (raggio ~87px dal centro) */
.dot-3 {
    width: 14px;
    height: 14px;
    background: #d4c9a8;
    top: -7px;
    left: 50%;
    transform: translateX(-50%);
}

.dot-4 {
    width: 22px;
    height: 22px;
    background: #d4c9a8;
    bottom: 20px;
    right: 15px;
}

/* Pallini su orbita interna */
.dot-5 {
    width: 16px;
    height: 16px;
    background: #c9b8d4;
    bottom: -8px;
    left: 50%;
    transform: translateX(-50%);
}

.dot-6 {
    width: 12px;
    height: 12px;
    background: #b4c4a8;
    top: 50%;
    right: -6px;
    transform: translateY(-50%);
}

/* Badge completato */
.completed-badge {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.1em;
    color: var(--gray-500);
    margin-bottom: 1rem;
}

.completed-badge svg {
    color: #7fb3a8;
}

.thanks-title {
    font-size: 1.75rem;
    font-weight: 700;
    color: var(--primary);
    line-height: 1.3;
    margin-bottom: 1rem;
    margin-top: 1rem;
}

.thanks-subtitle {
    font-size: 1rem;
    color: var(--gray-500);
    line-height: 1.6;
    max-width: 340px;
    margin-bottom: 2rem;
    transition: opacity 0.3s ease;
}

/* Elementi nascosti inizialmente (per matching) */
.matching-persons {
    display: none;
}

.matching-progress {
    width: 100%;
    max-width: 300px;
    height: 8px;
    background: #e5e7eb;
    border-radius: 12px;
    overflow: hidden;
    margin-bottom: 1.5rem;
    display: none;
    margin-top: 1rem;
}

.matching-progress-fill {
    height: 100%;
    background: linear-gradient(90deg, #c5d99a, var(--accent));
    border-radius:12px;
    width: 0%;
    transition: width 0.1s linear;
}

.icon-loading {
    display: none;
}

/* Transizione colore centro e orbite */
.orbit-center {
    transition: background 0.5s ease, transform 0.5s ease;
}

.orbit {
    transition: transform 0.5s ease, opacity 0.5s ease;
}

/* Animazione rotazione loading */
@keyframes spin-loading {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

/* ===== STATO MATCHING ===== */
.thanks-content.matching .thanks-logo {
    opacity: 0;
    height: 0;
    margin: 0;
    transition: all 0.3s ease;
}

.thanks-content.matching .completed-badge {
    opacity: 0;
    height: 0;
    margin: 0;
    transition: all 0.3s ease;
}

.thanks-content.matching .matching-progress {
    display: block;
}

.thanks-content.matching .matching-persons {
    display: block;
}

/* Nascondi pallini colorati */
.thanks-content.matching .orbit-ring {
    opacity: 0;
    transition: opacity 0.3s ease;
}

/* Cambia icona */
.thanks-content.matching .icon-check {
    display: none;
}

.thanks-content.matching .icon-loading {
    display: block;
    animation: spin-loading 1.2s linear infinite;
}

/* Centro arancione in matching */
.thanks-content.matching .orbit-center {
    background: var(--accent);
}

/* Orbite più grandi in matching */
.thanks-content.matching .orbit-outer {
    transform: scale(1.15);
}

.thanks-content.matching .orbit-middle {
    transform: scale(1.2);
}

/* Cerchi pulsanti */
.thanks-content.matching .orbit {
    animation: pulse-orbit 2s ease-out infinite;
}

.thanks-content.matching .orbit-outer {
    animation-delay: 0s;
}

.thanks-content.matching .orbit-middle {
    animation-delay: 0.5s;
}

@keyframes pulse-orbit {
    0% {
        transform: scale(1);
        opacity: 0.6;
    }
    50% {
        opacity: 0.3;
    }
    100% {
        transform: scale(1.15);
        opacity: 0;
    }
}

/* Icone persone - posizione */
.matching-persons {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

.matching-person {
    position: absolute;
    background: white;
    border-radius: 50%;
    overflow: hidden;
    box-shadow: 0 3px 12px rgba(0,0,0,0.2);
    opacity: 0;
    border: 2px solid white;
    transition: opacity 0.5s ease, transform 0.5s ease;
}

.matching-person .person-face {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* Stato visibile */
.matching-person.visible {
    opacity: 1;
}


/* ===== STATO FOUND ===== */
.thanks-content.found .orbit {
    animation: none;
    opacity: 0.3;
}

.thanks-content.found .icon-loading {
    display: none;
    animation: none;
}

.thanks-content.found .icon-check {
    display: block;
}

/* Centro torna verde in found */
.thanks-content.found .orbit-center {
    background: #c5d99a;
}

/* Orbite tornano normali */
.thanks-content.found .orbit-outer,
.thanks-content.found .orbit-middle {
    transform: scale(1);
}

/* Card partner (nascosta finché non parte l’animazione matching; resta visibile anche con .found) */
.matching-partners-card {
    display: none;
    width: 100%;
    max-width: 520px;
    margin: 1.25rem auto 0;
    padding: 1.5rem 1.25rem 1.75rem;
    background: var(--bg-card);
    border-radius: 14px;
    box-shadow: 0 8px 28px rgba(26, 43, 75, 0.1);
    gap: 1rem 1.5rem;
    align-items: flex-start;
    justify-content: space-between;
    text-align: center;
    flex-wrap: wrap;
    box-sizing: border-box;
}

.intro-body .matching-partners-card {
    display: flex;
    margin: 0 auto;
    width: 100%;
}

/* Visibile durante tutta la sequenza matching, incluso lo stato "Professionisti trovati!" (.found) */
.thanks-content.matching .matching-partners-card {
    display: flex;
    align-items: stretch;
    align-content: stretch;
    flex-direction: row;
}

.matching-partners-col {
    flex: 1 1 42%;
    min-width: 130px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: space-evenly;
}

.matching-partners-logo-wrap {
    min-height: 52px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 0.35rem;
}

.matching-partners-logo {
    display: block;
    object-fit: contain;
}

.matching-partners-logo--vivavoce {
    max-height: 44px;
    width: auto;
    max-width: 170px;
    height: auto;
}

.matching-partners-logo--sanraffaele {
    max-height: 76px;
    width: auto;
    max-width: 96px;
    height: auto;
}

.matching-partners-label {
    font-size: 0.65rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--gray-500);
    margin: 0.25rem 0 0.35rem;
    line-height: 1.3;
}

.matching-partners-name {
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--gray-900);
    line-height: 1.35;
    margin: 0;
    max-width: 220px;
}

@media (max-width: 480px) {
    .matching-partners-card {
        flex-direction: row;
        align-items: stretch;
        padding: 1rem 1rem;
        width: 90%;
        margin: 0rem auto;
    }

    .matching-partners-col {
        flex: 1 1 40%;
        min-width: 0;
    }

    .matching-partners-name {
        max-width: none;
    }
}


/* ===== FADE OUT ===== */
.thanks-content.fade-out {
    animation: fadeOut 0.5s ease forwards;
}

@keyframes fadeOut {
    to {
        opacity: 0;
    }
}

/* Step thanks: centra contenuto verticalmente */
#step-thanks {
    justify-content: center;
    align-items: center;
    min-height: 100vh;
}

/* Rimuovi padding di wizard-main su thanks */
.thanks-active .wizard-main {
    padding-top: 0;
    padding-bottom: 0;
    display: flex;
    justify-content: center;
    align-items: center;
}

.thanks-active .wizard-content {
    padding: 0;
}

/* Footer personalizzato per thanks */
.thanks-active .wizard-header {
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.3s ease;
}

.thanks-active .wizard-footer {
    display: block !important;
    opacity: 1 !important;
}

/* Nascondi footer durante matching */
.thanks-active.matching-in-progress .wizard-footer {
    display: none !important;
}

.thanks-active .wizard-footer #btnBack {
    display: none !important;
}

.thanks-active .wizard-footer #btnNext {
    width: 100%;
    max-width: 400px;
    padding: 1rem 2rem;
    border-radius: 12px;
    font-size: 1rem;
    margin: 0 auto;
    position: relative;
    overflow: hidden;
    z-index: 1;
    background: #ffbc7e89; /* Più chiaro per vedere la progressbar */
    border: none;
    color:black;
}

/* Progress bar dentro il pulsante */
.thanks-active .wizard-footer #btnNext::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    width: 0%;
    background: #FFBD7E;
    z-index: -1;
    border-radius: 12px;
    transition: width 0.1s linear;
}

.thanks-active .wizard-footer #btnNext.auto-progress::before {
    animation: btn-progress-fill 5s linear forwards;
}

@keyframes btn-progress-fill {
    from { width: 0%; }
    to { width: 100%; }
}

.thanks-active .wizard-footer .wizard-nav {
    justify-content: center;
}

.thanks-active .wizard-footer .footer-privacy {
    display: block;
    text-align: center;
    margin-top: 0.75rem;
}

/* ===========================================
   Matching Progress Bar (stili aggiuntivi)
   =========================================== */
.matching-progress-fill {
    height: 100%;
    background: linear-gradient(90deg, var(--accent) 0%, #f97316 100%);
    border-radius: 12px;
    transition: width 0.1s linear;
    box-shadow: 0 0 6px 0px #f973166b;
}

@keyframes fadeOut {
    to {
        opacity: 0;
        transform: translateY(-20px);
    }
}


/* ===========================================
   Register Screen
   =========================================== */
#step-register {
    justify-content: flex-start;
    padding-top: 2rem;
}

.register-content {
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
    max-width: 400px;
    margin: 0 auto;
}

.register-logo {
    height: 50px;
    margin-bottom: 1.5rem;
}

/* Professionisti trovati */
.found-professionals {
    display: flex;
    justify-content: center;
    align-items: center;
    margin-bottom: 1.5rem;
    height: 60px;
}

.professional-avatar {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    border: 3px solid white;
    box-shadow: 0 2px 8px rgba(0,0,0,0.15);
    overflow: hidden;
    background: #f3f4f6;
    opacity: 0;
    transform: scale(0.5);
    animation: pop-in 0.3s ease forwards;
}

.professional-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* Sovrapposizione */
.professional-avatar:not(:first-child) {
    margin-left: -15px;
}

/* Ordine di comparsa: centro (3) -> lati (2,4) -> estremi (1,5) */
.professional-avatar.pro-3 { animation-delay: 0s; z-index: 5; }
.professional-avatar.pro-2 { animation-delay: 0.1s; z-index: 4; }
.professional-avatar.pro-4 { animation-delay: 0.1s; z-index: 4; }
.professional-avatar.pro-1 { animation-delay: 0.2s; z-index: 3; }
.professional-avatar.pro-5 { animation-delay: 0.2s; z-index: 3; }

@keyframes pop-in {
    0% {
        opacity: 0;
        transform: scale(0.5);
    }
    70% {
        transform: scale(1.1);
    }
    100% {
        opacity: 1;
        transform: scale(1);
    }
}

.register-title {
    font-size: 1.75rem;
    font-weight: 700;
    color: var(--primary);
    margin-bottom: 0rem;
    line-height: 1.3;
}

.register-subtitle {
    font-size: 1rem;
    color: var(--gray-500);
    margin-bottom: 2rem;
}

/* Register active state */
.register-active .wizard-header {
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.3s ease;
}

.register-active .wizard-main {
    padding-top: 0;
    padding-bottom: 0;
}

.register-active .wizard-footer {
    display: none !important;
}

/* Pulsante dentro il form */
.btn-register-submit {
    width: 100%;
    padding: 1rem 2rem;
    border-radius: 12px;
    font-size: 1rem;
    font-weight: 600;
    background: var(--accent);
    color: white;
    border: none;
    cursor: pointer;
    margin-top: 0rem;
    transition: background 0.2s ease, opacity 0.2s ease;
}

.btn-register-submit:hover:not(:disabled) {
    background: #e8a634;
}

.btn-register-submit:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.register-privacy {
    text-align: center;
    font-size: 0.8125rem;
    color: var(--gray-500);
    margin-top: 0rem;
}

#registerError{
    color:red;
}

/* Pulsante verifica dentro il form */
.btn-verify-submit {
    width: 100%;
    padding: 1rem 2rem;
    border-radius: 50px;
    font-size: 1rem;
    font-weight: 600;
    background: var(--accent);
    color: white;
    border: none;
    cursor: pointer;
    margin-top: 1.5rem;
    transition: background 0.2s ease, opacity 0.2s ease;
}

.btn-verify-submit:hover:not(:disabled) {
    background: #e8a634;
}

.btn-verify-submit:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

/* Verify active state */
.verify-active .wizard-header {
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.3s ease;
}

.verify-active .wizard-main {
    padding-top: 0;
    padding-bottom: 0;
}

.verify-active .wizard-content {
    padding: 0;
}

/* ===========================================
   Intro Step — "over": fuori dal boxed container
   #step-intro è sibling di .wizard-content in .wizard-main;
   può avere width/stili propri, non è vincolato da max-width: 650px
   =========================================== */
#step-intro {
    flex: 1;
    width: 100%;
}

/* Mentre l'intro è visibile, nascondi il boxed container del wizard */
.intro-active .wizard-content {
    display: none;
}

.intro-active .wizard-main {
    padding-bottom: 0;
}

.intro-body {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    width: 100%;
}

.intro-title {
    font-size: 1.6rem;
    font-weight: 800;
    color: var(--primary);
    text-align: center;
    line-height: 1;
    margin: 0;
}

.intro-accent {
    color: var(--accent);
}

.intro-subtitle {
    font-size: 0.9375rem;
    color: var(--gray-500);
    text-align: center;
    line-height: 1.25;
    margin: 0 0 0.25rem;
}

/* Feature cards */
.intro-cards {
    display: flex;
    flex-direction: row;
    gap: 0.5rem;
    margin: 20px auto;
}

#btnIntroStart{
    padding: 1.1rem 1.75rem;
    font-size: 1rem;
    max-width: 340px;
    margin: auto;
}
.intro-card {
    display: flex;
    align-items: center;
    gap: 0.875rem;
    background: var(--bg-card);
    border-radius: 14px;
    padding: 0.875rem 1rem;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);
}

.intro-card-icon {
    font-size: 1.375rem;
    width: 44px;
    height: 44px;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 10px;
    display: none !important;
}

.intro-card-text strong {
    display: block;
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--primary);
    line-height: 1.3;
}

.intro-card-text span {
    display: block;
    font-size: 0.8125rem;
    color: var(--gray-500);
    margin-top: 0.2rem;
    line-height: 1.4;
}

#verifyForm{
    width: 100%;
    max-width: 400px;
    margin: auto;
}
/* Social proof */
.intro-social {
    display: flex;
    align-items: center;
    gap: 0.75rem;
   
    border-radius: 14px;
    padding: 0.875rem 1rem;
    /*background: #ede4d8;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);*/
    max-width: 500px;
    margin: auto;
}

.intro-avatars {
    display: flex;
    flex-direction: row;
    flex-shrink: 0;
}

.intro-avatar {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 0.6875rem;
    font-weight: 700;
    color: white;
    border: 2px solid var(--bg-main);
    margin-left: -10px;
    overflow: hidden;
}

.intro-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.intro-avatar:first-child {
    margin-left: 0;
}

.intro-social-text {
    font-size: 0.875rem;
    color: var(--gray-700);
    line-height: 1.4;
    margin: 0;
}

.intro-social-text strong {
    color: var(--primary);
}

/* CTA wrapper — sticky bottom su mobile */
.intro-cta-wrap {
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
    width: 100%;
}

/* CTA */
.intro-cta {
    width: 100%;
    padding: 1.1rem 1.75rem;
    font-size: 1rem;
    font-weight: 700;
    border-radius: 14px;
}

/* Disclaimer */
.intro-disclaimer {
    font-size: 0.8125rem;
    color: var(--gray-400);
    text-align: center;
    margin: 0;
}

@media (max-width: 767px) {
    .intro-cta-wrap {
        position: sticky;
        bottom: 0;
        z-index: 10;
        background: linear-gradient(to bottom, transparent, #f8f6f3 28%);
        padding: 1.5rem 0 1rem;
        margin-left: -0.5rem;
        margin-right: -0.5rem;
        padding-left: 0.5rem;
        padding-right: 0.5rem;
        width: calc(100% + 1rem);
    }
}

#step-verify {
    justify-content: flex-start;
    padding-top: 2rem;
}

.verify-content {
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
    max-width: 400px;
    margin: 0 auto;
    padding: 20px;
}

.verify-logo {
    height: 36px;
    margin-bottom: 2rem;
}

.verify-title {
    font-size: 1.75rem;
    font-weight: 700;
    color: var(--primary);
    margin-bottom: 0.75rem;
}

.verify-subtitle {
    font-size: 1rem;
    color: var(--gray-500);
    margin-bottom: 2rem;
    line-height: 1.5;
}

.verify-subtitle strong {
    color: var(--primary);
}

/* ===========================================
   Register Form
   =========================================== */
.register-form {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    width: 100%;
    text-align: left;
}

.form-group {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
}

.form-group label {
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--gray-700);
}

.form-group input {
    padding: 0.75rem 1rem;
    border: 1px solid var(--gray-300);
    border-radius: 8px;
    font-size: 1rem;
    transition: border-color 0.2s, box-shadow 0.2s;
    width: 100%;
}
.form-group input:focus {
    outline: none;
    border-color: var(--accent);
    box-shadow: 0 0 0 3px rgba(245, 158, 97, 0.1);
}

.password-wrapper {
    position: relative;
}

.password-toggle {
    position: absolute;
    right: 12px;
    top: 50%;
    transform: translateY(-50%);
    background: none;
    border: none;
    color: var(--gray-500);
    cursor: pointer;
    padding: 0.25rem;
}

.form-error {
    display: none;
    color: var(--danger);
    font-size: 0.8125rem;
    margin-top: 0.25rem;
}

.consent-group {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    padding: 0;
}

.consent-group input[type="checkbox"] {
    width: 28px;
    height: 28px;
    margin-top: 2px;
    accent-color: var(--accent);
}

.consent-group label {
    font-size: 0.7875rem;
    color: var(--gray-600);
    line-height: 1.4;
}

.consent-group a {
    color: var(--primary);
}

/* ===========================================
   OTP Verification
   =========================================== */
.otp-container {
    display: flex;
    justify-content: center;
    gap: 0.75rem;
    margin: 1.5rem 0;
    padding: 20px;
}

.otp-input {
    width: 40%;
    height: 56px;
    text-align: center;
    font-size: 1.5rem;
    font-weight: 600;
    border: 2px solid var(--gray-300);
    border-radius: 8px;
    transition: border-color 0.2s;
}

.otp-input:focus {
    outline: none;
    border-color: var(--accent);
}

.resend-link {
    text-align: center;
    margin-top: 1rem;
}

.resend-link button {
    background: none;
    border: none;
    color: var(--primary);
    font-size: 0.875rem;
    cursor: pointer;
    text-decoration: underline;
}

.resend-link button:disabled {
    color: var(--gray-400);
    cursor: not-allowed;
    text-decoration: none;
}

/* ===========================================
   OTP Verify Page (standalone)
   =========================================== */
.verify-header {
    text-align: center;
    margin-bottom: 2rem;
    position: relative;
}

.btn-back-arrow {
    position: absolute;
    left: 0;
    top: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: var(--gray-100);
    color: var(--gray-600);
    text-decoration: none;
    transition: all 0.2s;
}

.btn-back-arrow:hover {
    background: var(--gray-200);
    color: var(--gray-800);
}

.verify-icon {
    width: 64px;
    height: 64px;
    margin: 0 auto 1rem;
    background: linear-gradient(135deg, var(--accent-light) 0%, rgba(var(--accent-rgb), 0.1) 100%);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
}

.verify-icon svg {
    width: 32px;
    height: 32px;
    color: var(--accent);
}

.verify-form {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
}

.otp-input.filled {
    border-color: var(--accent);
    background: rgba(var(--accent-rgb), 0.05);
}

.otp-input.error {
    border-color: var(--error);
    background: rgba(239, 68, 68, 0.05);
    animation: shake 0.4s ease;
}

@keyframes shake {
    0%, 100% { transform: translateX(0); }
    25% { transform: translateX(-4px); }
    75% { transform: translateX(4px); }
}

.resend-text {
    text-align: center;
    font-size: 0.875rem;
    color: var(--gray-600);
}

.link-btn {
    background: none;
    border: none;
    color: var(--accent);
    font-size: inherit;
    font-weight: 500;
    cursor: pointer;
    text-decoration: underline;
    padding: 0;
}

.link-btn:hover {
    color: var(--accent-dark);
}

.link-btn:disabled {
    color: var(--gray-400);
    cursor: not-allowed;
    text-decoration: none;
}

/* ===========================================
   Loading State
   =========================================== */
.loading-overlay {
    position: fixed;
    inset: 0;
    background: rgba(255, 255, 255, 0.9);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1000;
}

.loading-spinner {
    width: 40px;
    height: 40px;
    border: 3px solid var(--gray-200);
    border-top-color: var(--accent);
    border-radius: 50%;
    animation: spin 0.8s linear infinite;
}

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

/* ===========================================
   Responsive
   =========================================== */
@media (max-width: 640px) {
    :root {
        --header-height: 100px;
        --footer-height: 90px;
    }
    
    .intro-cards {
        flex-direction: column;
        margin: 0;
    }
    .bg-decorations {
        display: none;
    }
    
    /* Header scrolls on mobile (not fixed) */
    .wizard-header {
        position: relative;
        padding: 0.75rem 1rem 0;
        background: transparent;
        backdrop-filter: none;
        -webkit-backdrop-filter: none;
    }
    
    
    .header-top {
        margin-bottom: 0.75rem;
        justify-content: center;
    }
    
    .header-login-btn {
        display: none;
    }
    
    .wizard-logo {
        height: 28px;
    }
    
    .header-login span {
        display: none;
    }
    
    /* Main content without header padding on mobile */
    .wizard-main {
        padding-top: 0px;
    }
    
    .wizard-content {
        padding: 0 1rem;
    }
    
    .wizard-title {
        font-size: 1.25rem;
        text-align: left;
        font-weight: 500;
        margin-bottom: 1.3rem;
        text-align: center;
    }
    
    .wizard-footer {
        padding: 0.75rem 1rem 1rem;
    }
    
    /* Hide privacy text on mobile */
    .footer-privacy {
        display: none;
    }
    
    .option-label{
        padding: 0.8rem 1.2rem;
    }
    .btn {
        padding: 0.625rem 1rem;
        font-size: 0.875rem;
    }
    
    /* Smaller shapes on mobile */
    .bg-shape--1 { width: 120px; height: 120px; }
    .bg-shape--2 { width: 80px; height: 80px; }
    .bg-shape--3 { width: 70px; height: 70px; }
    .bg-shape--4 { width: 140px; height: 140px; }
    .bg-shape--5 { width: 100px; height: 100px; }
    
    /* Thanks screen mobile */
    #step-thanks {
        min-height: 100vh;
        justify-content: center;
    }
    
    .thanks-active .wizard-main {
        padding-top: 0;
        padding-bottom: 0;
        min-height: 100vh;
        display: flex;
        justify-content: center;
        align-items: center;
    }
    
    .thanks-logo {
        height: 28px;
        margin-bottom: 1rem;
    }
    
    .orbit-illustration {
        width: 180px;
        height: 180px;
        margin-bottom: 1.25rem;
    }
    
    .orbit-outer {
        width: 180px;
        height: 180px;
    }
    
    .orbit-middle {
        width: 126px;
        height: 126px;
        top: 27px;
        left: 27px;
    }
    
    .orbit-center {
        width: 60px;
        height: 60px;
        top: 60px;
        left: 60px;
    }
    
    .orbit-center svg {
        width: 28px;
        height: 28px;
    }
    
    .dot-1 { width: 16px; height: 16px; top: -8px; }
    .dot-2 { width: 18px; height: 18px; top: 25px; left: 5px; }
    .dot-3 { width: 12px; height: 12px; top: -6px; }
    .dot-4 { width: 16px; height: 16px; bottom: 15px; right: 10px; }
    .dot-5 { width: 12px; height: 12px; bottom: -6px; }
    .dot-6 { width: 10px; height: 10px; right: -5px; }
    
    .completed-badge {
        font-size: 0.6875rem;
        margin-bottom: 0.75rem;
    }
    
    .thanks-title {
        font-size: 1.375rem;
        margin-bottom: 0.75rem;
        padding: 0 1rem;
    }
    
    .thanks-subtitle {
        font-size: 0.9375rem;
        margin-bottom: 1.5rem;
    }
    
    /* Footer su thanks mobile: mostra privacy */
    .thanks-active .wizard-footer .footer-privacy {
        display: block;
        font-size: 0.75rem;
    }
    
    .thanks-active .wizard-footer #btnNext {
        padding: 0.875rem 1.5rem;
        font-size: 0.9375rem;
    }
    
    /* Register screen mobile */
    #step-register {
        padding-top: 1rem;
    }
    
    .register-active .wizard-main {
        padding-top: 0;
        padding-bottom: 0;
    }
    
    .register-logo {
        height: 30px;
        margin-bottom: 1rem;
    }
    
    .found-professionals {
        margin-bottom: 1rem;
        height: 50px;
    }
    
    .professional-avatar {
        width: 46px;
        height: 46px;
        border-width: 2px;
    }
    
    .professional-avatar:not(:first-child) {
        margin-left: -12px;
    }
    
    .register-title {
        font-size: 1.375rem;
    }
    
    .register-subtitle {
        font-size: 0.9375rem;
        margin-bottom: 1.5rem;
    }
    
    .btn-register-submit {
        padding: 0.875rem 1.5rem;
        font-size: 0.9375rem;
    }
    
    .register-privacy {
        font-size: 0.75rem;
    }
    
    /* Verify screen mobile */
    #step-verify {
        padding-top: 1rem;
    }
    
    .verify-active .wizard-main {
        padding-top: 0;
    }
    
    .verify-logo {
        height: 28px;
        margin-bottom: 1.5rem;
    }
    
    .verify-title {
        font-size: 1.375rem;
    }
    
    .verify-subtitle {
        font-size: 0.9375rem;
        margin-bottom: 1.5rem;
    }
    
    /* Matching mobile */
    .matching-progress {
        max-width: 200px;
    }
}

/* ===========================================
   Utility Classes
   =========================================== */
.hidden {
    display: none !important;
}

.text-center {
    text-align: center;
}

.text-sm {
    font-size: 0.875rem;
}

.text-muted {
    color: var(--gray-500);
}

.mt-1 { margin-top: 0.25rem; }
.mt-2 { margin-top: 0.5rem; }
.mt-3 { margin-top: 0.75rem; }
.mt-4 { margin-top: 1rem; }
.mb-1 { margin-bottom: 0.25rem; }
.mb-2 { margin-bottom: 0.5rem; }
.mb-3 { margin-bottom: 0.75rem; }
.mb-4 { margin-bottom: 1rem; }

/* Hide Iubenda floating button */
.iubenda-tp-btn:not(.iubenda-floatable-tb-btn)[data-tp-float][data-tp-float=bottom-right]{
    display: none !important;
}

/* Fast-lane standalone page: centra contenuto senza header/footer */
body.fastlane-page .wizard-main {
    padding-top: 2rem;
    padding-bottom: 2rem;
    justify-content: center;
}

/* Auth pages: forgot-password, reset-password, set-password-required */
body.auth-page {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 100vh;
    padding: 1rem;
}
.auth-container {
    width: 100%;
    max-width: 420px;
    position: relative;
    z-index: 10;
}
.auth-card {
    background: var(--bg-card);
    border-radius: 24px;
    padding: 2.5rem;
    box-shadow: 0 4px 24px rgba(0, 0, 0, 0.08);
}
.auth-logo {
    display: block;
    height: 48px;
    margin: 0 auto 2rem;
}
.auth-icon {
    width: 64px;
    height: 64px;
    margin: 0 auto 1.5rem;
    background: var(--primary-light);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--primary);
}
.auth-icon svg {
    width: 28px;
    height: 28px;
}
.auth-title {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--primary);
    text-align: center;
    margin-bottom: 0.5rem;
}
.auth-subtitle {
    font-size: 0.9375rem;
    color: var(--gray-500);
    text-align: center;
    margin-bottom: 1.5rem;
    line-height: 1.6;
}
.auth-form .form-group {
    margin-bottom: 1.25rem;
}
.auth-form label {
    display: block;
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--gray-700);
    margin-bottom: 0.5rem;
}
.auth-form input[type="email"],
.auth-form input[type="password"],
.auth-form input[type="text"] {
    width: 100%;
    padding: 0.875rem 1rem;
    font-size: 1rem;
    border: 2px solid var(--gray-200);
    border-radius: 12px;
    background: var(--gray-50);
    color: var(--gray-900);
    transition: all 0.2s ease;
}
.auth-form input:focus {
    outline: none;
    border-color: var(--primary);
    background: #fff;
    box-shadow: 0 0 0 4px rgba(32, 35, 71, 0.1);
}
.auth-form input::placeholder {
    color: var(--gray-400);
}
.auth-form .form-hint,
.auth-form .hint {
    font-size: 0.8125rem;
    color: var(--gray-500);
    margin-top: 0.25rem;
}
.btn-auth {
    width: 100%;
    padding: 1rem 2rem;
    font-size: 1rem;
    font-weight: 600;
    color: var(--primary);
    background: var(--accent);
    border: none;
    border-radius: 12px;
    cursor: pointer;
    transition: all 0.2s ease;
    margin-top: 0.5rem;
}
.btn-auth:hover {
    background: #e8a634;
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(245, 158, 97, 0.4);
}
.btn-auth:active {
    transform: translateY(0);
}
.auth-card .alert {
    padding: 0.875rem 1rem;
    border-radius: 10px;
    font-size: 0.875rem;
    margin-bottom: 1.25rem;
}
.auth-card .alert-error {
    background: #fef2f2;
    color: #dc2626;
    border: 1px solid #fecaca;
}
@media (max-width: 480px) {
    .auth-card { padding: 2rem 1.5rem; border-radius: 20px; }
    .auth-title { font-size: 1.25rem; }
    .auth-icon { width: 56px; height: 56px; }
    .auth-icon svg { width: 24px; height: 24px; }
}

/* =============================================================
   INTRO LANDING PAGE (ILP) — stili per default.php e varianti
   Scope: #step-intro .ilp-*
   ============================================================= */

/* ─── Layout base ─── */
#step-intro {
    display: flex;
    flex-direction: column;
    width: 100%;
    padding: 0;
    background: var(--bg-main);
    overflow-x: hidden;
}

.ilp-section-inner {
    width: 100%;
    max-width: 900px;
    margin: 0 auto;
    padding: 0 1.5rem;
}

.ilp-accent { color: var(--accent); }
.ilp-centered { text-align: center; }

.ilp-eyebrow {
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--gray-500);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    margin: 0 0 0.35rem;
}

.ilp-section-title {
    font-family: 'Erode', Georgia, serif;
    font-size: 1.9rem;
    font-weight: 700;
    color: var(--primary);
    line-height: 1.2;
    margin: 0 0 1.5rem;
}

/* ─── HERO ─── */
.ilp-hero {
    padding: calc(var(--header-height) + 2rem) 0 3rem;
    position: relative;
    overflow: hidden;
}

.ilp-hero-inner {
    width: 100%;
    max-width: 960px;
    margin: 0 auto;
    padding: 0 1.5rem;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 3rem;
    align-items: center;
}

.ilp-hero-text {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

/* Badge verde con checkmark inline */
.ilp-hero-badge {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-size: 0.8125rem;
    font-weight: 700;
    color: #1a6b40;
    background: #d1fae5;
    border-radius: 100px;
    padding: 0.35rem 0.875rem;
    width: fit-content;
}
.ilp-hero-badge svg { flex-shrink: 0; }

/* Titolo serif con parti in corsivo colorate */
.ilp-hero-title {
    font-family: 'Erode', Georgia, serif;
    font-size: 2.1rem;
    font-weight: 800;
    color: var(--primary);
    line-height: 1.2;
    margin: 0;
}
.ilp-hero-title em {
    font-style: italic;
    font-weight: 800;
    color: var(--accent);
}

/* Checklist con pallino accent */
.ilp-checklist {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}
.ilp-checklist li {
    display: flex;
    align-items: flex-start;
    gap: 0.625rem;
    font-size: 0.9375rem;
    color: var(--gray-700);
    line-height: 1.45;
}
.ilp-checklist li::before {
    content: '';
    display: inline-block;
    width: 20px;
    height: 20px;
    min-width: 20px;
    border-radius: 50%;
    background: var(--accent);
    margin-top: 1px;
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' xmlns='http://www.w3.org/2000/svg'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E");
    background-size: 12px;
    background-position: center;
    background-repeat: no-repeat;
}

/* CTA wrap */
.ilp-hero-cta {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding-top: 0.25rem;
}

/* Bottone CTA arancio */
.ilp-btn-cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    font-size: 1rem;
    font-weight: 700;
    padding: 0.875rem 1.75rem;
    border-radius: 14px;
    border: none;
    background: var(--accent);
    color: white;
    cursor: pointer;
    width: fit-content;
    transition: background 0.2s ease, transform 0.1s ease;
}
.ilp-btn-cta:hover {
    background: var(--accent-dark);
    transform: translateY(-1px);
}

.ilp-hero-disclaimer {
    font-size: 0.8125rem;
    color: var(--gray-400);
    margin: 0;
}

/* ─── Hero visual: cerchio immagine con badge overlay ─── */
.ilp-hero-visual {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
}

.ilp-hero-circle {
    position: relative;
    z-index: 1;
    width: 100%;
    max-width: 420px;
    aspect-ratio: 1;
    border-radius: 50%;
    overflow: hidden;
    box-shadow: 0 20px 60px rgba(32, 35, 71, 0.15);
    background: var(--gray-200);
}

.ilp-hero-circle-img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

/* Badge floating in basso al cerchio */
.ilp-hero-circle-badge {
    position: absolute;
    bottom: 10%;
    left: 50%;
    transform: translateX(-50%);
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    white-space: nowrap;
    font-size: 0.8125rem;
    font-weight: 700;
    color: #1a6b40;
    background: #d1fae5;
    border-radius: 100px;
    padding: 0.4rem 0.875rem;
    box-shadow: 0 4px 12px rgba(0,0,0,0.12);
}
.ilp-hero-circle-badge svg { flex-shrink: 0; }

/* Blob decorativi */
.ilp-deco {
    position: absolute;
    border-radius: 50%;
    z-index: 0;
    pointer-events: none;
}
.ilp-deco--1 {
    width: 110px; height: 110px;
    background: var(--deco-purple);
    top: -15px; right: -20px;
    opacity: 0.75;
}
.ilp-deco--2 {
    width: 65px; height: 65px;
    background: var(--deco-green);
    bottom: 5%; right: -10px;
    opacity: 0.7;
}

/* ─── PARTNERS ─── */
.ilp-partners {
    background: white;
    padding: 1.5rem 0;
    border-top: 1px solid var(--gray-200);
    border-bottom: 1px solid var(--gray-200);
}

.ilp-partners-inner {
    width: 100%;
    max-width: 900px;
    margin: 0 auto;
    padding: 0 1.5rem;
    display: flex;
    align-items: center;
    gap: 1.5rem;
    flex-wrap: wrap;
}

.ilp-partners-label {
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--gray-400);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    white-space: nowrap;
}

.ilp-partners-cards {
    display: flex;
    gap: 1rem;
    flex: 1;
    flex-wrap: wrap;
}

.ilp-partner-card {
    display: flex;
    align-items: center;
    gap: 0.875rem;
    background: var(--bg-main);
    border-radius: 14px;
    padding: 0.75rem 1rem;
    flex: 1;
    min-width: 200px;
}

.ilp-partner-logo {
    flex-shrink: 0;
    object-fit: contain;
}
.ilp-partner-logo--vivavoce {
    width: 90px; height: 28px;
}
.ilp-partner-logo--sanraffaele {
    width: 40px; height: 40px;
}

.ilp-partner-tag {
    display: block;
    font-size: 0.6875rem;
    font-weight: 700;
    color: var(--accent);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.ilp-partner-name {
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--primary);
    margin: 0.1rem 0 0;
    line-height: 1.3;
}

/* ─── CLINICIANS GRID ─── */
.ilp-clinicians {
    padding: 3rem 0 2rem;
}

.ilp-clinicians-header {
    margin-bottom: 1.25rem;
}

.ilp-clinicians-grid {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 6px;
    border-radius: 20px;
    overflow: hidden;
    margin-bottom: 1.25rem;
}

.ilp-clinician-photo img {
    width: 100%;
    aspect-ratio: 1;
    object-fit: cover;
    display: block;
}

.ilp-social-proof {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.ilp-avatars-row {
    display: flex;
    flex-direction: row;
    flex-shrink: 0;
}

.ilp-social-text {
    font-size: 0.875rem;
    color: var(--gray-700);
    margin: 0;
}
.ilp-social-text strong { color: var(--primary); }

/* ─── STEPS ─── */
.ilp-steps {
    padding: 3rem 0;
    background: white;
}

.ilp-steps-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}

.ilp-step-card {
    background: var(--bg-main);
    border-radius: 16px;
    padding: 1.25rem;
}

.ilp-step-num {
    display: inline-block;
    font-family: 'Erode', Georgia, serif;
    font-size: 2rem;
    font-weight: 800;
    color: var(--accent);
    line-height: 1;
    margin-bottom: 0.5rem;
}

.ilp-step-title {
    font-size: 0.9375rem;
    font-weight: 700;
    color: var(--primary);
    margin: 0 0 0.35rem;
    line-height: 1.3;
}

.ilp-step-desc {
    font-size: 0.875rem;
    color: var(--gray-500);
    line-height: 1.5;
    margin: 0;
}

/* ─── REASSURANCE ─── */
.ilp-reassurance {
    padding: 2.5rem 0;
    background: var(--accent-light);
    border-top: 1px solid var(--accent-border);
    border-bottom: 1px solid var(--accent-border);
}

.ilp-reassurance-text {
    font-family: 'Erode', Georgia, serif;
    font-size: 1.2rem;
    color: var(--primary);
    line-height: 1.6;
    text-align: center;
    max-width: 640px;
    margin: 0 auto;
}
.ilp-reassurance-text em {
    font-style: italic;
    color: var(--accent-dark);
}

/* ─── FAQ ─── */
.ilp-faq {
    padding: 3rem 0;
}

.ilp-faq-list {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    margin-top: 0.5rem;
}

.ilp-faq-item {
    background: white;
    border: 1px solid var(--gray-200);
    border-radius: 14px;
    overflow: hidden;
    transition: box-shadow 0.2s ease;
}

.ilp-faq-item[open] {
    box-shadow: 0 2px 12px rgba(32, 35, 71, 0.07);
}

.ilp-faq-q {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 1rem 1.25rem;
    font-size: 0.9375rem;
    font-weight: 600;
    color: var(--primary);
    cursor: pointer;
    list-style: none;
    gap: 0.75rem;
    user-select: none;
}

.ilp-faq-q::-webkit-details-marker { display: none; }

.ilp-faq-q::after {
    content: '';
    width: 20px; height: 20px;
    min-width: 20px;
    border-radius: 50%;
    background: var(--gray-100);
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2.5' xmlns='http://www.w3.org/2000/svg'%3E%3Cline x1='12' y1='5' x2='12' y2='19'/%3E%3Cline x1='5' y1='12' x2='19' y2='12'/%3E%3C/svg%3E");
    background-size: 12px;
    background-position: center;
    background-repeat: no-repeat;
    transition: transform 0.2s ease, background-color 0.2s ease;
}

.ilp-faq-item[open] .ilp-faq-q::after {
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='none' stroke='%23202347' stroke-width='2.5' xmlns='http://www.w3.org/2000/svg'%3E%3Cline x1='5' y1='12' x2='19' y2='12'/%3E%3C/svg%3E");
    background-color: var(--accent-light);
}

.ilp-faq-a {
    padding: 0 1.25rem 1rem;
    font-size: 0.9rem;
    color: var(--gray-600);
    line-height: 1.6;
    margin: 0;
    border-top: 1px solid var(--gray-100);
}

/* ─── BOTTOM CTA ─── */
.ilp-bottom-cta {
    background: var(--primary);
    padding: 3rem 0 4rem;
}

.ilp-bottom-cta-title {
    font-family: 'Erode', Georgia, serif;
    font-size: 2rem;
    font-weight: 700;
    color: white;
    margin: 0 0 1.5rem;
    line-height: 1.2;
}

.ilp-btn-cta-dark {
    background: var(--accent);
    color: white;
    font-size: 1rem;
    font-weight: 700;
    padding: 0.9rem 2rem;
    border-radius: 14px;
    border: none;
    cursor: pointer;
    transition: background 0.2s ease, transform 0.1s ease;
}
.ilp-btn-cta-dark:hover {
    background: var(--accent-dark);
    transform: translateY(-1px);
}

/* ─── MOBILE ─── */
@media (max-width: 767px) {
    .ilp-hero {
        padding-top: calc(var(--header-height) + 1rem);
    }

    .ilp-hero-inner {
        grid-template-columns: 1fr;
    }

    .ilp-hero-visual {
        order: -1;
        width: 100%;
        max-width: 280px;
        margin: 0 auto;
    }

    .ilp-hero-circle {
        max-width: 280px;
    }

    .ilp-deco--1 { width: 65px; height: 65px; top: -10px; right: -10px; }
    .ilp-deco--2 { width: 45px; height: 45px; }

    .ilp-hero-title { font-size: 1.5rem; }
    .ilp-btn-cta { width: 100%; justify-content: center; }
    .ilp-section-title { font-size: 1.5rem; }

    .ilp-partners-inner { flex-direction: column; align-items: flex-start; gap: 0.75rem; }
    .ilp-partner-card { min-width: unset; width: 100%; }

    .ilp-clinicians-grid { grid-template-columns: repeat(4, 1fr); }
    .ilp-clinicians-grid .ilp-clinician-photo:last-child:nth-child(4n+1) { display: none; }

    .ilp-steps-grid { grid-template-columns: 1fr; }

    .ilp-bottom-cta-title { font-size: 1.5rem; }
    .ilp-btn-cta-dark { width: 100%; }

    /* Sticky hero CTA on mobile */
    .ilp-hero-cta {
        position: sticky;
        bottom: 0;
        z-index: 10;
        background: linear-gradient(to bottom, transparent, #f8f6f3 28%);
        padding: 1.5rem 0 1rem;
        margin-left: -0.5rem;
        margin-right: -0.5rem;
        padding-left: 0.5rem;
        padding-right: 0.5rem;
        width: calc(100% + 1rem);
    }
}
