.elementor .caie-planner {
    --sp-ink: #211735;
    --sp-muted: #5E5378;
    --sp-line: #E1D7F0;
    --sp-brand: #3A2470;
    --sp-bg: #F6F2FB;
    font: 400 16px/1.6 "Nunito Sans", system-ui, sans-serif;
    color: var(--sp-ink);
    width: 100%;
}
.elementor .caie-planner *, .elementor .caie-planner *::before, .elementor .caie-planner *::after { box-sizing: border-box; }
.elementor .caie-planner [hidden] { display: none !important; }
.elementor .caie-planner h3 {
    font: 400 26px/1.15 Marcellus, Georgia, serif;
    color: var(--sp-ink);
    margin: 0 0 12px;
}
.elementor .caie-planner p { margin: 0; }
.elementor .caie-planner button, .elementor .caie-planner input, .elementor .caie-planner select { font: inherit; }
.elementor .caie-planner button {
    border: 1.5px solid var(--sp-brand);
    border-radius: 999px;
    background: var(--sp-brand);
    color: #FFFFFF;
    font-weight: 700;
    padding: 10px 18px;
    min-height: 44px;
    cursor: pointer;
    line-height: 1.35;
}
.elementor .caie-planner button:hover { background: #211735; color: #FFFFFF; }
.elementor .caie-planner .sp-secondary { background: #FFFFFF; color: var(--sp-brand); border-color: var(--sp-line); }
.elementor .caie-planner .sp-secondary:hover { background: #ECE4FA; color: var(--sp-brand); }
.elementor .caie-planner .sp-danger { background: #FFFFFF; color: var(--sp-muted); border-color: var(--sp-line); }
.elementor .caie-planner :is(button, input, select):focus-visible { outline: 3px solid #F2902B; outline-offset: 3px; }
.elementor .caie-planner .sp-welcome {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 24px;
    padding: 32px;
    background: #ECE4FA;
    border-radius: 16px;
}
.elementor .caie-planner .sp-private { color: #1F6E37; font-size: 14px; font-weight: 700; }
.elementor .caie-planner .sp-summary { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin: 24px 0 12px; }
.elementor .caie-planner .sp-summary > div { padding: 16px; border-radius: 16px; background: #FFFFFF; border: 1px solid var(--sp-line); }
.elementor .caie-planner .sp-summary > div:nth-child(2) { background: #E2F3E7; }
.elementor .caie-planner .sp-summary > div:nth-child(3) { background: #FDEBD8; }
.elementor .caie-planner .sp-summary > div:nth-child(4) { background: #ECE4FA; }
.elementor .caie-planner .sp-summary strong { display: block; font-size: 26px; line-height: 1.2; color: var(--sp-brand); }
.elementor .caie-planner .sp-summary span { font-size: 14px; color: var(--sp-muted); }
.elementor .caie-planner progress { display: block; width: 100%; height: 12px; border: 0; border-radius: 999px; overflow: hidden; background: #ECE4FA; accent-color: #1F6E37; }
.elementor .caie-planner progress::-webkit-progress-bar { background: #ECE4FA; border-radius: 999px; }
.elementor .caie-planner progress::-webkit-progress-value { background: #1F6E37; border-radius: 999px; }
.elementor .caie-planner .sp-storage { font-size: 14px; color: var(--sp-muted); margin: 12px 0 24px; }
.elementor .caie-planner .sp-builder { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr); gap: 24px; align-items: start; }
.elementor .caie-planner :is(.sp-subject-panel, .sp-session-panel) { min-width: 0; border: 1px solid var(--sp-line); background: #FFFFFF; border-radius: 16px; padding: 24px; }
.elementor .caie-planner .sp-help { color: var(--sp-muted); font-size: 14px; font-weight: 400; }
.elementor .caie-planner .sp-subjects { display: grid; gap: 8px; margin: 16px 0; }
.elementor .caie-planner .sp-subject-row { display: flex; gap: 12px; align-items: center; border: 1px solid #D5E0E5; border-left: 5px solid var(--sp-tone); background: var(--sp-tint); border-radius: 8px; padding: 8px 12px; }
.elementor .caie-planner input[type="checkbox"] { width: 21px; height: 21px; accent-color: var(--sp-brand); flex: none; cursor: pointer; }
.elementor .caie-planner .sp-subject-row input[type="text"] { min-width: 0; width: 100%; border: 0; background: transparent; padding: 5px; color: var(--sp-ink); }
.elementor .caie-planner .sp-subject-row:has(input[type="checkbox"]:not(:checked)) { background: #FFFFFF; }
.elementor .caie-planner form { display: grid; gap: 16px; margin-top: 16px; }
.elementor .caie-planner form label { display: grid; gap: 6px; font-size: 15px; font-weight: 700; }
.elementor .caie-planner form :is(input:not([type="checkbox"]), select) { min-width: 0; width: 100%; min-height: 46px; padding: 10px 12px; color: var(--sp-ink); border: 1px solid var(--sp-line); background: #FFFFFF; border-radius: 8px; font-weight: 400; }
.elementor .caie-planner fieldset { min-width: 0; margin: 0; padding: 0; border: 0; }
.elementor .caie-planner legend { margin: 0 0 8px; padding: 0; font-size: 15px; font-weight: 700; }
.elementor .caie-planner .sp-days { display: flex; flex-wrap: wrap; gap: 8px; }
.elementor .caie-planner .sp-days label { display: flex; gap: 6px; align-items: center; background: var(--sp-bg); border: 1px solid var(--sp-line); border-radius: 8px; padding: 8px; cursor: pointer; }
.elementor .caie-planner .sp-days label:has(:checked) { background: #ECE4FA; border-color: var(--sp-brand); }
.elementor .caie-planner .sp-time-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.elementor .caie-planner .sp-actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.elementor .caie-planner .sp-error { background: #FDEBD8; border-left: 4px solid #9A4F05; border-radius: 8px; color: #9A4F05; padding: 12px; }
.elementor .caie-planner .sp-tip { margin-top: 24px; padding: 16px; background: #E2F3E7; border-radius: 8px; color: #1F6E37; font-size: 14px; }
.elementor .caie-planner .sp-week { margin-top: 32px; }
.elementor .caie-planner .sp-week-head { display: flex; flex-wrap: wrap; gap: 16px; align-items: center; justify-content: space-between; margin-bottom: 24px; }
.elementor .caie-planner .sp-empty { padding: 32px; border: 1px dashed #A78BEA; border-radius: 16px; text-align: center; background: #FFFFFF; }
.elementor .caie-planner .sp-empty strong { font-size: 22px; color: var(--sp-brand); }
.elementor .caie-planner .sp-week-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.elementor .caie-planner .sp-day { border: 1px solid var(--sp-line); background: #FFFFFF; border-radius: 16px; overflow: hidden; min-width: 0; }
.elementor .caie-planner .sp-day h4 { font: 700 17px/1.4 "Nunito Sans", system-ui, sans-serif; margin: 0; color: var(--sp-brand); padding: 16px; border-bottom: 1px solid var(--sp-line); background: #ECE4FA; }
.elementor .caie-planner .sp-day-body { padding: 12px; display: grid; gap: 12px; }
.elementor .caie-planner .sp-rest { padding: 12px; font-size: 14px; color: var(--sp-muted); }
.elementor .caie-planner .sp-session { border-left: 4px solid var(--sp-tone); border-radius: 8px; padding: 12px; background: var(--sp-tint); overflow-wrap: anywhere; }
.elementor .caie-planner .sp-session.is-done { opacity: .75; }
.elementor .caie-planner .sp-session.is-done .sp-session-subject { text-decoration: line-through; }
.elementor .caie-planner .sp-session label { display: flex; align-items: start; gap: 10px; cursor: pointer; }
@media screen {
    .elementor .caie-planner .sp-session label { line-height: 1.6; margin: 0; }
    .elementor .caie-planner .sp-session label > span { display: grid; gap: 5px; min-width: 0; }
    .elementor .caie-planner .sp-session-subject { line-height: 1.5; overflow-wrap: anywhere; }
    .elementor .caie-planner .sp-session time { display: block; line-height: 1.5; white-space: normal; }
    .elementor .caie-planner .sp-session input[type="checkbox"] { margin: 4px 0 0; }
    .elementor .caie-planner .sp-session-actions { flex-wrap: wrap; padding-top: 4px; }
}

.elementor .caie-planner .sp-session-subject { display: block; font-weight: 800; }
.elementor .caie-planner .sp-session time { font-size: 14px; color: var(--sp-muted); }
.elementor .caie-planner .sp-session-topic { margin: 8px 0; font-size: 14px; }
.elementor .caie-planner .sp-session-actions { display: flex; gap: 8px; margin-top: 10px; }
.elementor .caie-planner .sp-session-actions button { min-height: 38px; font-size: 13px; padding: 6px 12px; }
.elementor .caie-planner .sp-bottom { display: grid; gap: 16px; margin-top: 24px; padding: 24px 0; border-top: 1px solid var(--sp-line); }
.elementor .caie-planner .sp-feedback { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; color: #1F6E37; }
.elementor .caie-planner dialog { max-width: min(460px, calc(100% - 32px)); border: 1px solid var(--sp-line); border-radius: 16px; padding: 24px; background: #FFFFFF; color: var(--sp-ink); }
.elementor .caie-planner dialog::backdrop { background: rgb(33 23 53 / .45); }
.elementor .caie-planner dialog .sp-actions { margin-top: 24px; }
@media (max-width: 900px) {
    .elementor .caie-planner .sp-builder { grid-template-columns: 1fr; }
    .elementor .caie-planner .sp-week-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 540px) {
    .elementor .caie-planner .sp-welcome, .elementor .caie-planner :is(.sp-subject-panel, .sp-session-panel) { padding: 20px; }
    .elementor .caie-planner .sp-summary { grid-template-columns: 1fr 1fr; gap: 8px; }
    .elementor .caie-planner .sp-summary strong { font-size: 22px; }
    .elementor .caie-planner .sp-week-grid { grid-template-columns: 1fr; }
    .elementor .caie-planner .sp-time-fields { gap: 8px; }
}
@media (prefers-reduced-motion: reduce) {
    .elementor .caie-planner * { scroll-behavior: auto !important; transition: none !important; }
}
/* Colourful planner controls and recognisable print/PDF marks. */
.elementor .caie-planner .sp-print-button{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:50px;border:1.5px solid #C6B5E3;border-radius:12px;background:#FFFFFF;color:#3A2470;box-shadow:0 4px 12px #3A24700C;font-weight:800}
.elementor .caie-planner .sp-print-button:hover{background:#F6F2FB;border-color:#3A2470;color:#3A2470}
.elementor .caie-planner .sp-print-button svg{display:block;flex:none}
.elementor .caie-planner .sp-printer-icon{width:24px;height:24px;color:#2563EB}
.elementor .caie-planner .sp-pdf-icon{width:25px;height:28px}
.elementor .caie-planner .sp-print-after-plan [data-new-week]{background:#FFFFFF;color:#172E50;border-color:#C6CFDB}
.elementor .caie-planner .sp-print-after-plan [data-new-week]:hover{background:#F4F7FB;color:#172E50}
.elementor .caie-planner .sp-print-after-plan [data-clear]{background:#FFFFFF;color:#172E50;border-color:#C6CFDB}
.elementor .caie-planner .sp-print-after-plan [data-clear]:hover{background:#FFF7F6;color:#172E50}
.elementor .caie-planner .sp-day:nth-child(3n+2) h4{background:#DDF5E9;color:#17563C}
.elementor .caie-planner .sp-day:nth-child(3n+3) h4{background:#FFF0DC;color:#834407}
.elementor .caie-planner [data-print-dialog] p+p{margin-top:12px}
body .elementor .caie-planner [data-print-dialog] #sp-print-heading{font:700 24px/1.3 "Nunito Sans",sans-serif;color:#3A2470}
body .elementor .caie-planner [data-print-dialog] [data-print-open]{background:#3A2470;color:#FFFFFF;border-color:#3A2470}
body .elementor .caie-planner [data-print-dialog] [data-print-cancel]{background:#FFFFFF;color:#3A2470;border-color:#D8CCE9}


.sp-print-sheet { display: none; }
@page { size: A4 landscape; margin: 10mm; }
@media print {
    html:has(.sp-print-sheet), body:has(> .sp-print-sheet) {
        margin: 0 !important;
        padding: 0 !important;
        width: auto !important;
        min-width: 0 !important;
        height: auto !important;
        background: #fff !important;
    }
    body:has(> .sp-print-sheet) > :not(.sp-print-sheet) { display: none !important; }
    body > .sp-print-sheet {
        display: block !important;
        width: 100% !important;
        max-width: 277mm !important;
        margin: 0 !important;
        padding: 0 !important;
    }
    .sp-print-sheet, .sp-print-sheet * {
        box-sizing: border-box;
        print-color-adjust: exact !important;
        -webkit-print-color-adjust: exact !important;
        text-shadow: none !important;
        box-shadow: none !important;
    }
    .sp-print-sheet .caie-planner {
        width: 100%;
        color:#24334b !important;
        font: 400 9pt/1.35 Arial, sans-serif;
    }
    .sp-print-sheet .caie-planner .sp-print-title {
        margin: 0 0 3mm;
        padding: 0 0 3mm;
        border-bottom: 1px solid #cddbea;
        font: 700 18pt/1.2 Arial, sans-serif;
        color:#223e60 !important;
    }
    .sp-print-sheet .caie-planner .sp-summary {
        display: grid;
        grid-template-columns: repeat(4, minmax(0,1fr));
        gap: 3mm;
        margin: 0 0 4mm;
        break-inside: avoid;
    }
    .sp-print-sheet .caie-planner .sp-summary > div {
        padding: 2.5mm 3mm;
        border: 1px solid #dce4ee;
        border-radius: 2mm;
        background:#f2f6fb !important;
    }
    .sp-print-sheet .caie-planner .sp-summary > div:nth-child(2) { background:#f0f8f2 !important; }
    .sp-print-sheet .caie-planner .sp-summary > div:nth-child(3) { background:#fff8ec !important; }
    .sp-print-sheet .caie-planner .sp-summary > div:nth-child(4) { background:#f6f2fa !important; }
    .sp-print-sheet .caie-planner .sp-summary strong { font-size: 13pt; line-height:1.2; color:#223e60 !important; }
    .sp-print-sheet .caie-planner .sp-summary span { font-size: 8pt; color:#4a5970 !important; }
    .sp-print-sheet .caie-planner .sp-week { margin: 0; }
    .sp-print-sheet .caie-planner .sp-week-head { display: none; }
    .sp-print-sheet .caie-planner .sp-week-grid {
        display:grid;
        grid-template-columns:repeat(4,minmax(0,1fr));
        gap:3mm;
        align-items:start;
        width:100%;
    }
    .sp-print-sheet .caie-planner .sp-day {
        min-width:0;
        border:1px solid #cfdceb;
        border-radius:2mm;
        background:#fff !important;
        overflow:visible;
        break-inside:auto;
    }
    .sp-print-sheet .caie-planner .sp-day h4 {
        padding:2.5mm 3mm;
        margin:0;
        border-bottom:1px solid #dce4ee;
        background:#edf3fc !important;
        color:#244567 !important;
        font:700 10pt/1.3 Arial,sans-serif;
        break-after:avoid;
    }
    .sp-print-sheet .caie-planner .sp-day:nth-child(3n+2) h4 { background:#eef7f2 !important; color:#285c47 !important; }
    .sp-print-sheet .caie-planner .sp-day:nth-child(3n+3) h4 { background:#fff6e9 !important; color:#77532f !important; }
    .sp-print-sheet .caie-planner .sp-day-body { padding:2mm; gap:2mm; }
    .sp-print-sheet .caie-planner .sp-session {
        padding:2mm;
        border-radius:1.5mm;
        border-left-width:2px;
        background:color-mix(in srgb,var(--sp-tint) 50%,white) !important;
        color:#24334b !important;
        break-inside:avoid;
        overflow-wrap:anywhere;
    }
    .sp-print-sheet .caie-planner .sp-session label { gap:1.5mm; align-items:start; }
    .sp-print-sheet .caie-planner .sp-session input[type=checkbox] {
        appearance:none;
        width:3mm;
        height:3mm;
        min-height:0;
        margin:.5mm 0 0;
        padding:0;
        border:1px solid #8598ae;
        border-radius:.5mm;
        background:#fff !important;
    }
    .sp-print-sheet .caie-planner .sp-session input:checked::after {
        content:"✓";
        display:block;
        font:700 8pt/1 Arial,sans-serif;
        color:#285c47 !important;
    }
    .sp-print-sheet .caie-planner .sp-session-subject { font-size:9pt; }
    .sp-print-sheet .caie-planner .sp-session time,
    .sp-print-sheet .caie-planner .sp-session-topic,
    .sp-print-sheet .caie-planner .sp-rest { font-size:8pt; color:#46556b !important; }
    .sp-print-sheet .caie-planner .sp-session-topic { margin:1.5mm 0 0; }
    .sp-print-sheet .caie-planner .sp-rest { padding:2mm; }
    .sp-print-sheet .caie-planner .sp-session.is-done { opacity:1; }
    .sp-print-sheet .caie-planner :is(button,dialog,.sp-session-actions) { display:none!important; }
    .sp-print-sheet .caie-planner .sp-empty { padding:6mm; border:1px dashed #cfdceb; background:#fafbfd !important; }
}

/* One-click subject choice and clear 12-hour time controls. */
.elementor .caie-planner .sp-subject-row{flex-wrap:wrap;padding:6px 10px;gap:8px}
.elementor .caie-planner .sp-subject-choice{flex:1;min-width:0;border:1px solid transparent;background:transparent;color:#211735;border-radius:7px;padding:10px 8px;text-align:left;font-weight:700}
.elementor .caie-planner .sp-subject-choice[aria-pressed="true"]{background:#fff;border-color:var(--sp-tone);box-shadow:0 0 0 1px var(--sp-tone)}
.elementor .caie-planner .sp-subject-choice:hover{background:#ffffffb3;color:#211735}
.elementor .caie-planner .sp-selected-subject{padding:14px 16px;border-left:4px solid #3a2470;border-radius:8px;background:#f2edf9;color:#302047;font-weight:800;font-size:19px}
.elementor .caie-planner .sp-start-parts{display:grid;grid-template-columns:.7fr .8fr 1.5fr;gap:10px}
.elementor .caie-planner .sp-start-parts label{font-size:13px}
.elementor .caie-planner .sp-start-parts select{padding:10px 6px}
.elementor .caie-planner .sp-end-preview{padding:12px 16px;border:1px solid #c8dfd0;border-radius:8px;background:#eff8f2;color:#235b3b;font-weight:800}
.elementor .caie-planner .sp-planning-feedback{margin:12px 0;padding:14px 18px;border:1px solid #d8e5d9;border-radius:10px;background:#f1f8f2;color:#2b5938;font-weight:600}
@media(max-width:420px){.elementor .caie-planner .sp-start-parts{grid-template-columns:1fr 1fr}.elementor .caie-planner .sp-start-parts label:last-child{grid-column:1/-1}}
@media print{.sp-print-sheet .caie-planner .sp-planning-feedback{display:none!important}}

.elementor .caie-planner .sp-print-after-plan{display:grid;grid-template-columns:repeat(3,minmax(0,240px));justify-content:end;gap:12px;margin-top:24px;align-items:stretch}
.elementor .caie-planner .sp-print-after-plan>button{width:100%;min-width:0;height:56px;min-height:56px;display:flex;align-items:center;justify-content:center;gap:9px;padding:10px 14px;border-radius:8px;font-size:15px;font-weight:800;line-height:1.3;box-sizing:border-box}
.elementor .caie-planner .sp-print-after-plan>button>svg{display:block;flex:0 0 23px;width:23px;height:23px}
.elementor .caie-planner .sp-print-after-plan .sp-printer-icon{color:#2563eb}
.elementor .caie-planner .sp-print-after-plan .sp-pdf-icon{flex-basis:23px;width:23px;height:26px}
@media(max-width:600px){.elementor .caie-planner .sp-print-after-plan{grid-template-columns:1fr;justify-content:stretch}}
@media print{.sp-print-after-plan{display:none!important}}

.elementor .caie-planner [data-new-week] .sp-action-icon{color:#2858A5}
.elementor .caie-planner [data-clear] .sp-action-icon{color:#AD3847}
