.portal{background:#fff8fa;min-height:70vh;padding:55px 0 80px;color:#07516a}.portal-shell{width:min(1120px,calc(100% - 32px));margin:auto}.portal-narrow{width:min(720px,calc(100% - 32px));margin:auto}.portal-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:30px}.portal h1{font-size:34px;line-height:1.2;margin:0 0 8px;font-weight:800}.portal h2{font-size:23px;font-weight:800;margin:0 0 18px}.portal h3{font-size:18px;font-weight:800}.portal p,.portal label,.portal input,.portal select,.portal textarea,.portal button{font-size:16px}.portal-muted{color:#51717d}.portal-panel{background:#fff;border:1px solid #f1dce4;border-radius:14px;padding:28px;box-shadow:0 10px 34px rgba(5,62,87,.07);margin-bottom:22px}.portal-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.portal-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.portal-field{display:flex;flex-direction:column;gap:7px;margin-bottom:17px}.portal-field label,.portal-label{font-weight:800;color:#063f58}.portal-field input,.portal-field select,.portal-field textarea{width:100%;border:1px solid #ccd9de;border-radius:8px;padding:12px 14px;background:#fff;color:#073f58}.portal-field textarea{min-height:115px;resize:vertical}.portal-check{display:flex;align-items:flex-start;gap:10px;margin:12px 0;font-weight:600}.portal-check input{margin-top:5px}.portal-errors{background:#fff0f3;border:1px solid #ef7aa8;color:#8b1747;border-radius:8px;padding:13px 18px;margin-bottom:20px}.portal-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.portal-btn{border:2px solid #e65391;border-radius:7px;background:#e65391;color:#fff!important;padding:11px 22px;font-weight:800;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px}.portal-btn.outline{background:#fff;color:#e65391!important}.portal-btn.dark{background:#07516a;border-color:#07516a}.portal-btn.danger{background:#a6224f;border-color:#a6224f}.portal-link{color:#d93d7e;font-weight:800}.portal-card{background:#fff;border:1px solid #e3e9eb;border-radius:12px;padding:22px}.portal-card.selected{border:2px solid #e65391}.portal-card strong.price{display:block;color:#e65391;font-size:28px;margin:15px 0}.portal-status{display:inline-block;border-radius:20px;background:#e9f4f7;padding:5px 11px;font-weight:800;font-size:13px}.portal-status.paid,.portal-status.report_ready,.portal-status.completed{background:#e3f7ee;color:#126344}.portal-status.integration_required{background:#fff0c9;color:#7a5900}.portal-table{width:100%;border-collapse:collapse}.portal-table th,.portal-table td{text-align:left;padding:13px;border-bottom:1px solid #e6edef}.portal-table th{font-size:14px;text-transform:uppercase}.portal-progress{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:25px 0}.portal-progress span{background:#e4edf0;height:8px;border-radius:8px}.portal-progress span.done{background:#e65391}.portal-doc{display:flex;justify-content:space-between;gap:15px;padding:13px 0;border-bottom:1px solid #e6edef}.portal-message{padding:13px 16px;background:#edf5f7;border-radius:10px;margin-bottom:10px;max-width:82%}.portal-message.patient{margin-left:auto;background:#ffe9f1}.portal-report{border-left:5px solid #e65391}.portal-kpi{font-size:31px;font-weight:800;color:#e65391}.portal-notification{border-left:4px solid #e65391;padding:10px 14px;margin:8px 0;background:#fff}.portal-disclaimer{font-size:14px!important;background:#f3f6f7;padding:15px;border-radius:8px}.portal-upload{border:2px dashed #e59ab9;border-radius:12px;padding:25px;text-align:center}.portal-empty{text-align:center;padding:40px;color:#51717d}.portal-radio input{position:absolute;opacity:0}.portal-radio input:checked+.portal-card{border:2px solid #e65391;background:#fff8fb}.portal-radio{cursor:pointer}.portal-step{color:#e65391;font-weight:800;text-transform:uppercase;letter-spacing:.08em;font-size:13px}.portal-meta{display:flex;flex-wrap:wrap;gap:12px 22px;color:#51717d;font-weight:600}.portal-nav{display:flex;gap:15px;align-items:center}.analytics-note{font-size:13px!important;color:#718891}
@media(max-width:767px){.portal{padding-top:35px}.portal-grid,.portal-grid.three{grid-template-columns:1fr}.portal-head{align-items:flex-start;flex-direction:column}.portal-panel{padding:20px}.portal-table{display:block;overflow-x:auto}.portal-progress{gap:5px}.portal h1{font-size:29px}.portal-btn{width:100%}.portal-actions{align-items:stretch}.portal-message{max-width:95%}}

/* Rosa polvere coordinato con l'identità SOS Seno. */
.portal-btn{border-color:#e697b9;background:#e697b9}
.portal-btn.outline{color:#d97fa5!important}
.portal-link{color:#d97fa5}
.portal-card.selected,.portal-radio input:checked+.portal-card{border-color:#e697b9}
.portal-card strong.price,.portal-kpi,.portal-step{color:#d97fa5}
.portal-progress span.done{background:#e697b9}
.portal-report{border-left-color:#e697b9}
.portal-notification{border-left-color:#e697b9}
.portal-upload{border-color:#e7a2c0}

/* Testata e tipografia delle pagine informative pubbliche. */
.sos-inner-hero{min-height:270px;display:flex;align-items:center;background:#fff5f8 url('/frontend/img/header.webp') center/cover no-repeat;color:var(--sos-blue)}
.sos-inner-hero .sos-container{position:relative}
.sos-inner-hero span{display:block;margin-bottom:8px;color:#d97fa5;font-size:15px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.sos-inner-hero h1{max-width:52%;margin:0;color:var(--sos-blue);font-size:44px;line-height:1.12;font-weight:700}
.sos-public-page{padding-top:64px;background:#fff;color:var(--sos-blue)}
.sos-public-page,.sos-public-page p,.sos-public-page li,.sos-public-page label,.sos-public-page summary,.sos-public-page small,.sos-public-page strong{color:var(--sos-blue)}
.sos-public-page p{font-weight:400;line-height:1.65}
.sos-public-page h2{color:var(--sos-blue);font-weight:600}
.sos-public-page h3{color:var(--sos-blue);font-weight:600}
.sos-public-page .portal-step{font-weight:700}
.sos-public-page .portal-panel,.sos-public-page .portal-card{color:var(--sos-blue)}
.sos-public-page .portal-panel h2,.sos-public-page .portal-card h2{font-weight:600}
.sos-public-page .portal-field label,.sos-public-page .portal-label{font-weight:600}
.sos-public-page .portal-btn{font-weight:700;color:#fff!important}
.sos-public-page .portal-card strong.price{color:#d97fa5;font-weight:700}
@media(max-width:767px){
    .sos-inner-hero{min-height:205px;background-position:62% center}
    .sos-inner-hero h1{max-width:64%;font-size:34px}
    .sos-inner-hero span{max-width:60%;font-size:13px}
    .sos-public-page{padding-top:44px}
}

/* Gerarchia più leggera e spaziature dell'area riservata. */
.portal h1{font-weight:600;color:var(--sos-blue)}
.portal h2{font-weight:600;color:var(--sos-blue)}
.portal h3{font-weight:600;color:var(--sos-blue)}
.portal p{font-weight:400;color:var(--sos-blue)}
.portal-field label,.portal-label{font-weight:600}
.portal-btn{font-weight:600}
.portal-link{font-weight:500}
.portal-card>strong,.portal-panel>strong{font-weight:600}
.portal-kpi{font-weight:600}
.portal-table th{font-weight:600}
.portal-table td,.portal-table td strong{font-weight:500}
.portal-status{font-weight:500}
.portal-head+.portal-grid.three{margin-bottom:28px}
.portal-actions{gap:18px 22px}
.portal-actions .portal-link{display:inline-flex;align-items:center;min-height:44px;padding:4px 0}
@media(max-width:767px){
    .portal-head+.portal-grid.three{margin-bottom:22px}
    .portal-actions{gap:10px 18px}
    .portal-actions .portal-link{justify-content:center;width:auto;min-height:40px}
}
