/* /premium/assets/simplos-core.css */
/* Lessons calendar namespace migrated from lessons-calendar.php + premium.css. */

/* Dashboard slim header: remove large blue header pill and keep a light brand divider */
  body.dashboard-core .premium-header{
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
  }

  body.dashboard-core .premium-header-shell{
    width: 100% !important;
    max-width: var(--premium-page-max) !important;
    margin: 0 auto !important;
    padding: 0 var(--premium-page-pad-x) !important;
  }

  body.dashboard-core .premium-header-inner,
  body.dashboard-core .premium-header--instructor .premium-header-inner,
  body.dashboard-core .premium-header.is-instructor .premium-header-inner{
    position: relative !important;
    width: 100% !important;
    max-width: none !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding: 1px 0 5px !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
  }

  body.dashboard-core .premium-header-inner::after{
    content: "";
    display: block;
    width: 100%;
    height: 2px;
    margin-top: 1px;
    border-radius: 999px;
    background: linear-gradient(
      90deg,
      rgba(47,123,255,0),
      rgba(47,123,255,.90),
      rgba(94,164,255,.90),
      rgba(47,123,255,0)
    );
    box-shadow: 0 2px 8px rgba(47,123,255,.10);
  }

  body.dashboard-core .premium-header-top{
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 10px !important;
    margin: 0 !important;
  }

  body.dashboard-core .premium-brand-logo-full{
    height: 38px !important;
    filter: drop-shadow(0 4px 12px rgba(47,123,255,.16)) !important;
  }

  body.dashboard-core .premium-header-title{
    display: none !important;
  }

  body.dashboard-core .premium-header-subtitle,
  body.dashboard-core .premium-brand-subtitle,
  body.dashboard-core .premium-brand-eyebrow{
    color: rgba(51,65,85,.78) !important;
    text-shadow: none !important;
  }

  body.dashboard-core .premium-header-actions{
    display: flex !important;
    align-items: center !important;
    justify-content: flex-end !important;
    gap: 10px !important;
    flex: 0 0 auto !important;
  }

  body.dashboard-core .premium-header-btn,
  body.dashboard-core .premium-header-back{
    min-height: 40px !important;
    padding: 0 14px !important;
    border-radius: 16px !important;
    color: #ffffff !important;
    border: 1px solid rgba(47,123,255,.20) !important;
    background: linear-gradient(135deg, rgba(47,123,255,.92), rgba(92,200,255,.82)) !important;
    box-shadow: 0 10px 22px rgba(47,123,255,.16) !important;
    font-size: 13px !important;
    font-weight: 900 !important;
  }

  body.dashboard-core .premium-main{
    margin-top: 2px !important;
  }

  @media (max-width: 767px){
    body.dashboard-core .premium-header-shell{
      padding: 0 .85rem !important;
    }

    body.dashboard-core .premium-header-inner{
      padding-top: 2px !important;
      padding-bottom: 4px !important;
    }

    body.dashboard-core .premium-brand-logo-full{
      height: 32px !important;
    }

    body.dashboard-core .premium-header-btn,
    body.dashboard-core .premium-header-back{
      min-height: 40px !important;
      padding: 0 13px !important;
      border-radius: 14px !important;
      font-size: 12px !important;
    }
  }



  /* Calendar page colour reset: keep dashboard header styling, but do not inherit the dark dashboard text rules. */
  body.dashboard-core .slc-page,
  body.dashboard-core .slc-main,
  body.dashboard-core .slc-diary-section,
  body.dashboard-core .slc-diary-body,
  body.dashboard-core .slc-frame{
    color:#0f172a !important;
  }


  body.dashboard-core .page-intro-title,
  body.dashboard-core .page-intro-meta,
  body.dashboard-core .slc-diary-header,
  body.dashboard-core .slc-diary-header-actions{
    color:#0f172a !important;
    text-shadow:none !important;
  }

  body.dashboard-core .page-intro-meta{
    color:#64748b !important;
  }

  body.dashboard-core .fc,
  body.dashboard-core .fc .fc-toolbar-title,
  body.dashboard-core .fc .fc-col-header-cell-cushion,
  body.dashboard-core .fc .fc-timegrid-slot-label-cushion,
  body.dashboard-core .fc .fc-daygrid-day-number,
  body.dashboard-core .fc .fc-list-day-text,
  body.dashboard-core .fc .fc-list-day-side-text,
  body.dashboard-core .fc .fc-list-event-time,
  body.dashboard-core .fc .fc-list-event-title{
    color:#0f172a !important;
    text-shadow:none !important;
  }

  body.dashboard-core .fc .fc-list-day-cushion{
    background:#263449 !important;
    color:#ffffff !important;
  }

  body.dashboard-core .fc .fc-list-day-cushion a,
  body.dashboard-core .fc .fc-list-day-cushion .fc-list-day-text,
  body.dashboard-core .fc .fc-list-day-cushion .fc-list-day-side-text{
    color:#ffffff !important;
  }

  body.dashboard-core .fc .fc-list-event.event-completed,
  body.dashboard-core .fc .fc-list-event.event-completed td,
  body.dashboard-core .fc .fc-list-event.event-completed a,
  body.dashboard-core .fc .event-completed .slfc-title{
    color:#ffffff !important;
  }

  body.dashboard-core .fc .fc-list-event:not(.event-completed) td,
  body.dashboard-core .fc .fc-list-event:not(.event-completed) a,
  body.dashboard-core .fc .fc-list-event:not(.event-completed) .slfc-title{
    color:#0f172a !important;
  }

  body.dashboard-core .fc .fc-button-primary{
    color:#ffffff !important;
    text-shadow:none !important;
  }


  .slc-unavailability-panel{
    margin-top:14px;
    padding:14px;
    border-radius:18px;
    border:1px solid rgba(245,158,11,.24);
    background:linear-gradient(180deg, rgba(255,251,235,.96), rgba(255,255,255,.92));
    box-shadow:0 10px 24px rgba(245,158,11,.08);
  }

  .slc-unavailability-grid{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:10px;
    margin-top:10px;
  }

  .slc-unavailability-grid label{
    display:grid;
    gap:6px;
    color:#334155;
    font-size:.86rem;
    font-weight:850;
  }

  .slc-unavailability-grid .wide{
    grid-column:1 / -1;
  }

  .slc-unavailability-grid input,
  .slc-unavailability-grid select,
  .slc-unavailability-grid textarea{
    width:100%;
    min-height:42px;
    padding:10px 12px;
    border-radius:14px;
    border:1px solid rgba(148,163,184,.34);
    background:#ffffff;
    color:#0f172a;
    font:inherit;
    outline:none;
  }

  .slc-unavailability-grid textarea{
    min-height:76px;
    resize:vertical;
  }

  .slc-unavailability-grid input:focus,
  .slc-unavailability-grid select:focus,
  .slc-unavailability-grid textarea:focus{
    border-color:rgba(245,158,11,.66);
    box-shadow:0 0 0 3px rgba(245,158,11,.16);
  }

  .slc-unavailability-actions{
    display:flex;
    flex-wrap:wrap;
    gap:10px;
    align-items:center;
    margin-top:12px;
  }

  .slc-unavailability-delete{
    border:1px solid rgba(239,68,68,.24) !important;
    background:#fef2f2 !important;
    color:#991b1b !important;
  }

  .slc-unavailability-check{
    display:flex !important;
    grid-column:1 / -1;
    align-items:center;
    gap:9px !important;
    font-weight:800 !important;
  }

  .slc-unavailability-check input{
    width:18px;
    min-height:18px;
    height:18px;
    accent-color:#f59e0b;
  }

  .slc-unavailability-note{
    margin:8px 0 0;
    color:#64748b;
    font-size:.86rem;
    font-weight:650;
  }

  .slc-unavailability-feedback{
    margin:10px 0 0;
    padding:10px 12px;
    border-radius:14px;
    font-weight:850;
  }

  .slc-unavailability-feedback.is-error{
    background:#fef2f2;
    border:1px solid rgba(239,68,68,.18);
    color:#991b1b;
  }

  .slc-unavailability-feedback.is-success{
    background:#ecfdf5;
    border:1px solid rgba(22,163,74,.18);
    color:#166534;
  }

  body.dashboard-core .fc .simpl-unavailable,
  body.dashboard-core .fc .fc-list-event.simpl-unavailable td{
    background:linear-gradient(135deg, rgba(217,119,6,.82), rgba(245,158,11,.76)) !important;
    border-color:rgba(217,119,6,.45) !important;
    color:#ffffff !important;
  }

  body.dashboard-core .fc .simpl-unavailable .slfc-title,
  body.dashboard-core .fc .simpl-unavailable a{
    color:#ffffff !important;
    font-weight:950 !important;
  }



  body.dashboard-core .fc .simpl-vehicle-automatic,
  body.dashboard-core .fc .fc-list-event.simpl-vehicle-automatic td{
    border-left:4px solid #22c55e !important;
    background:linear-gradient(90deg, rgba(34,197,94,.14), rgba(255,255,255,.96)) !important;
  }

  body.dashboard-core .fc .simpl-vehicle-adapted,
  body.dashboard-core .fc .fc-list-event.simpl-vehicle-adapted td{
    border-left:4px solid #9333ea !important;
    background:linear-gradient(90deg, rgba(147,51,234,.14), rgba(255,255,255,.96)) !important;
  }

  body.dashboard-core .fc .simpl-vehicle-automatic .slfc-title,
  body.dashboard-core .fc .simpl-vehicle-automatic a{ color:#166534 !important; font-weight:900 !important; }

  body.dashboard-core .fc .simpl-vehicle-adapted .slfc-title,
  body.dashboard-core .fc .simpl-vehicle-adapted a{ color:#6b21a8 !important; font-weight:900 !important; }



  /* Completed lessons must override vehicle colours.
     Without this, automatic/adapted vehicle styles keep their green/purple scheduled styling
     even after the lesson is completed. */
  body.dashboard-core .fc .fc-list-event.event-completed.simpl-vehicle-automatic td,
  body.dashboard-core .fc .fc-list-event.event-completed.simpl-vehicle-adapted td,
  body.dashboard-core .fc .fc-list-event.event-completed.simpl-vehicle-any td,
  body.dashboard-core .fc .event-completed.simpl-vehicle-automatic,
  body.dashboard-core .fc .event-completed.simpl-vehicle-adapted,
  body.dashboard-core .fc .event-completed.simpl-vehicle-any{
    border-left:4px solid #16a34a !important;
    background:linear-gradient(135deg, rgba(22,163,74,.88), rgba(34,197,94,.76)) !important;
    border-color:rgba(22,163,74,.45) !important;
    color:#ffffff !important;
  }

  body.dashboard-core .fc .event-completed.simpl-vehicle-automatic .slfc-title,
  body.dashboard-core .fc .event-completed.simpl-vehicle-adapted .slfc-title,
  body.dashboard-core .fc .event-completed.simpl-vehicle-any .slfc-title,
  body.dashboard-core .fc .event-completed.simpl-vehicle-automatic a,
  body.dashboard-core .fc .event-completed.simpl-vehicle-adapted a,
  body.dashboard-core .fc .event-completed.simpl-vehicle-any a{
    color:#ffffff !important;
    font-weight:950 !important;
  }

  body.dashboard-core .fc .simpl-available,
  body.dashboard-core .fc .fc-list-event.simpl-available td{
    background:linear-gradient(135deg, rgba(59,130,246,.72), rgba(125,211,252,.70)) !important;
    border-color:rgba(37,99,235,.38) !important;
    color:#ffffff !important;
  }

  body.dashboard-core .fc .simpl-available .slfc-title,
  body.dashboard-core .fc .simpl-available a{
    color:#ffffff !important;
    font-weight:950 !important;
  }


  body.dashboard-core .fc .simpl-driving-test,
  body.dashboard-core .fc .fc-list-event.simpl-driving-test td{
    background:linear-gradient(135deg, rgba(217,119,6,.82), rgba(245,158,11,.76)) !important;
    border-color:rgba(217,119,6,.45) !important;
    color:#ffffff !important;
  }

  body.dashboard-core .fc .simpl-driving-test .slfc-title,
  body.dashboard-core .fc .simpl-driving-test a{
    color:#ffffff !important;
    font-weight:950 !important;
  }

  @media (max-width:720px){
    .slc-unavailability-grid{ grid-template-columns:1fr; }
  }



  body.dashboard-core .fc .event-no-show,
  body.dashboard-core .fc .fc-list-event.event-no-show td,
  body.dashboard-core .fc .fc-list-event.event-no-show a,
  body.dashboard-core .fc .event-no-show .slfc-title{
    background: linear-gradient(135deg, #7f1d1d, #991b1b) !important;
    border-color: rgba(127,29,29,.75) !important;
    color: #fff7f7 !important;
  }

  body.dashboard-core .fc .event-no-show .slfc-title::before{
    content: "✕ ";
    font-weight: 900;
  }


  /* ============================================================
     SimpL OS calendar — professional framed rows
     This deliberately removes the heavy block colours/gradients.
     Status is now shown by border, dot and icon only.
     ============================================================ */
  body.dashboard-core .fc .fc-list-table{
    border-collapse:separate !important;
    border-spacing:0 7px !important;
  }

  body.dashboard-core .fc .fc-list-event{
    background:transparent !important;
  }

  body.dashboard-core .fc .fc-list-event td{
    background:#ffffff !important;
    color:#0f172a !important;
    border-top:1px solid rgba(226,232,240,.95) !important;
    border-bottom:1px solid rgba(226,232,240,.95) !important;
    box-shadow:0 6px 16px rgba(15,23,42,.045) !important;
    vertical-align:middle !important;
  }

  body.dashboard-core .fc .fc-list-event td:first-child{
    border-left:5px solid var(--cal-accent, #2f7bff) !important;
    border-radius:13px 0 0 13px !important;
  }

  body.dashboard-core .fc .fc-list-event td:last-child{
    border-right:1px solid rgba(226,232,240,.95) !important;
    border-radius:0 13px 13px 0 !important;
  }

  body.dashboard-core .fc .fc-list-event:hover td{
    background:#f8fbff !important;
    box-shadow:0 8px 20px rgba(15,23,42,.07) !important;
  }

  body.dashboard-core .fc .fc-list-event-time{
    color:#64748b !important;
    font-weight:850 !important;
    font-size:.82rem !important;
    letter-spacing:-.01em !important;
    white-space:nowrap !important;
  }

  body.dashboard-core .fc .fc-list-event-title,
  body.dashboard-core .fc .fc-list-event-title a,
  body.dashboard-core .fc .slfc-title,
  body.dashboard-core .fc .slfc-name{
    color:#0f172a !important;
    text-shadow:none !important;
    font-weight:900 !important;
    line-height:1.18 !important;
  }

  body.dashboard-core .fc .fc-list-event-dot{
    border-color:var(--cal-accent, #2f7bff) !important;
    background:var(--cal-accent, #2f7bff) !important;
    box-shadow:0 0 0 3px var(--cal-soft, rgba(47,123,255,.14)) !important;
  }

  body.dashboard-core .fc .slfc-title{
    display:flex !important;
    align-items:center !important;
    gap:7px !important;
    min-width:0 !important;
  }

  body.dashboard-core .fc .slfc-icon{
    width:22px !important;
    height:22px !important;
    flex:0 0 22px !important;
    display:inline-flex !important;
    align-items:center !important;
    justify-content:center !important;
    border-radius:999px !important;
    background:var(--cal-soft, rgba(47,123,255,.12)) !important;
    color:var(--cal-accent, #2f7bff) !important;
    font-size:.82rem !important;
    font-weight:950 !important;
  }

  body.dashboard-core .fc .slfc-name{
    min-width:0 !important;
    overflow:hidden !important;
    text-overflow:ellipsis !important;
  }

  /* Manual / standard lesson */
  body.dashboard-core .fc .event-scheduled,
  body.dashboard-core .fc .simpl-vehicle-manual{
    --cal-accent:#2f7bff;
    --cal-soft:rgba(47,123,255,.13);
  }

  /* Automatic lesson */
  body.dashboard-core .fc .simpl-vehicle-automatic{
    --cal-accent:#16a34a;
    --cal-soft:rgba(22,163,74,.13);
  }

  /* Adapted lesson */
  body.dashboard-core .fc .simpl-vehicle-adapted{
    --cal-accent:#8b5cf6;
    --cal-soft:rgba(139,92,246,.14);
  }

  /* Available slot */
  body.dashboard-core .fc .simpl-available,
  body.dashboard-core .fc .simpl-vehicle-any{
    --cal-accent:#0ea5e9;
    --cal-soft:rgba(14,165,233,.14);
  }

  /* Driving test */
  body.dashboard-core .fc .simpl-driving-test{
    --cal-accent:#d97706;
    --cal-soft:rgba(217,119,6,.15);
  }

  /* Unavailable / holiday */
  body.dashboard-core .fc .simpl-unavailable{
    --cal-accent:#f59e0b;
    --cal-soft:rgba(245,158,11,.14);
  }

  /* Completed, cancelled, no-show states keep the same framed language. */
  body.dashboard-core .fc .event-completed{
    --cal-accent:#16a34a;
    --cal-soft:rgba(22,163,74,.13);
  }

  body.dashboard-core .fc .event-cancelled{
    --cal-accent:#94a3b8;
    --cal-soft:rgba(148,163,184,.16);
    opacity:.82;
  }

  body.dashboard-core .fc .event-no-show{
    --cal-accent:#ef4444;
    --cal-soft:rgba(239,68,68,.14);
  }

  body.dashboard-core .fc .event-cancelled .slfc-name,
  body.dashboard-core .fc .event-no-show .slfc-name{
    color:#475569 !important;
  }

  /* Kill older heavy fills no matter which selector wins earlier. */
  body.dashboard-core .fc .event-completed td,
  body.dashboard-core .fc .event-no-show td,
  body.dashboard-core .fc .simpl-available td,
  body.dashboard-core .fc .simpl-driving-test td,
  body.dashboard-core .fc .simpl-unavailable td,
  body.dashboard-core .fc .simpl-vehicle-automatic td,
  body.dashboard-core .fc .simpl-vehicle-adapted td,
  body.dashboard-core .fc .simpl-vehicle-any td{
    background:#ffffff !important;
    color:#0f172a !important;
    border-color:rgba(226,232,240,.95) !important;
  }

  body.dashboard-core .fc .fc-list-day-cushion{
    border-radius:14px !important;
    background:#1f2937 !important;
    padding:8px 14px !important;
    box-shadow:0 5px 14px rgba(15,23,42,.10) !important;
  }

  body.dashboard-core .fc .fc-list-day{
    background:transparent !important;
  }

  body.dashboard-core .fc .fc-list-day th{
    border:0 !important;
    padding:10px 0 4px !important;
    background:transparent !important;
  }

  @media (max-width:720px){
    body.dashboard-core .fc .fc-list-table{
      border-spacing:0 6px !important;
    }

    body.dashboard-core .fc .fc-list-event td{
      padding-top:10px !important;
      padding-bottom:10px !important;
    }

    body.dashboard-core .fc .fc-list-event-time{
      width:112px !important;
      min-width:112px !important;
      font-size:.78rem !important;
    }

    body.dashboard-core .fc .slfc-title{
      gap:6px !important;
    }
  }


  /* ============================================================
     FINAL CALENDAR POLISH - true outline cards, no colour fills
     ============================================================ */
  body.dashboard-core .fc .fc-list-table{
    border-collapse:separate !important;
    border-spacing:0 8px !important;
  }

  body.dashboard-core .fc .fc-list-event,
  body.dashboard-core .fc .fc-list-event.simpl-available,
  body.dashboard-core .fc .fc-list-event.simpl-driving-test,
  body.dashboard-core .fc .fc-list-event.simpl-unavailable,
  body.dashboard-core .fc .fc-list-event.event-completed,
  body.dashboard-core .fc .fc-list-event.event-no-show,
  body.dashboard-core .fc .fc-list-event.simpl-vehicle-automatic,
  body.dashboard-core .fc .fc-list-event.simpl-vehicle-adapted,
  body.dashboard-core .fc .fc-list-event.simpl-vehicle-any,
  body.dashboard-core .fc .fc-list-event.simpl-vehicle-manual{
    background:transparent !important;
    background-image:none !important;
    color:#0f172a !important;
    box-shadow:none !important;
  }

  body.dashboard-core .fc .fc-list-event > td,
  body.dashboard-core .fc .fc-list-event > th,
  body.dashboard-core .fc .fc-list-event.simpl-available > td,
  body.dashboard-core .fc .fc-list-event.simpl-driving-test > td,
  body.dashboard-core .fc .fc-list-event.simpl-unavailable > td,
  body.dashboard-core .fc .fc-list-event.event-completed > td,
  body.dashboard-core .fc .fc-list-event.event-no-show > td,
  body.dashboard-core .fc .fc-list-event.simpl-vehicle-automatic > td,
  body.dashboard-core .fc .fc-list-event.simpl-vehicle-adapted > td,
  body.dashboard-core .fc .fc-list-event.simpl-vehicle-any > td,
  body.dashboard-core .fc .fc-list-event.simpl-vehicle-manual > td{
    background:#ffffff !important;
    background-image:none !important;
    color:#0f172a !important;
    border-top:1px solid var(--cal-accent, rgba(47,123,255,.55)) !important;
    border-bottom:1px solid var(--cal-accent, rgba(47,123,255,.55)) !important;
    border-left:0 !important;
    border-right:0 !important;
    box-shadow:0 4px 12px rgba(15,23,42,.045) !important;
    text-shadow:none !important;
  }

  body.dashboard-core .fc .fc-list-event > td:first-child{
    border-left:1px solid var(--cal-accent, rgba(47,123,255,.55)) !important;
    border-radius:14px 0 0 14px !important;
  }

  body.dashboard-core .fc .fc-list-event > td:last-child{
    border-right:1px solid var(--cal-accent, rgba(47,123,255,.55)) !important;
    border-radius:0 14px 14px 0 !important;
  }

  body.dashboard-core .fc .fc-list-event:hover > td{
    background:#fbfdff !important;
    background-image:none !important;
    box-shadow:0 7px 18px rgba(15,23,42,.07) !important;
  }

  body.dashboard-core .fc .fc-list-event-time,
  body.dashboard-core .fc .fc-list-event-title,
  body.dashboard-core .fc .fc-list-event-title a,
  body.dashboard-core .fc .slfc-title,
  body.dashboard-core .fc .slfc-name,
  body.dashboard-core .fc .simpl-available .slfc-title,
  body.dashboard-core .fc .simpl-driving-test .slfc-title,
  body.dashboard-core .fc .simpl-unavailable .slfc-title,
  body.dashboard-core .fc .event-completed .slfc-title,
  body.dashboard-core .fc .event-no-show .slfc-title,
  body.dashboard-core .fc .simpl-vehicle-automatic .slfc-title,
  body.dashboard-core .fc .simpl-vehicle-adapted .slfc-title,
  body.dashboard-core .fc .simpl-vehicle-any .slfc-title,
  body.dashboard-core .fc .simpl-vehicle-manual .slfc-title,
  body.dashboard-core .fc .simpl-available a,
  body.dashboard-core .fc .simpl-driving-test a,
  body.dashboard-core .fc .simpl-unavailable a,
  body.dashboard-core .fc .event-completed a,
  body.dashboard-core .fc .event-no-show a{
    color:#0f172a !important;
    text-shadow:none !important;
    background:transparent !important;
    background-image:none !important;
  }

  body.dashboard-core .fc .fc-list-event-time{
    color:#475569 !important;
    font-weight:850 !important;
  }

  body.dashboard-core .fc .slfc-title{
    display:flex !important;
    align-items:center !important;
    gap:7px !important;
  }

  body.dashboard-core .fc .slfc-icon{
    background:var(--cal-soft, rgba(47,123,255,.11)) !important;
    background-image:none !important;
    color:var(--cal-accent, #2f7bff) !important;
    border:1px solid var(--cal-soft, rgba(47,123,255,.18)) !important;
    box-shadow:none !important;
  }

  body.dashboard-core .fc .fc-list-event-dot{
    border-color:var(--cal-accent, #2f7bff) !important;
    background:var(--cal-accent, #2f7bff) !important;
    box-shadow:0 0 0 3px var(--cal-soft, rgba(47,123,255,.14)) !important;
  }

  body.dashboard-core .fc .simpl-vehicle-manual{ --cal-accent:#2f7bff; --cal-soft:rgba(47,123,255,.12); }
  body.dashboard-core .fc .simpl-vehicle-automatic{ --cal-accent:#16a34a; --cal-soft:rgba(22,163,74,.12); }
  body.dashboard-core .fc .simpl-vehicle-adapted{ --cal-accent:#8b5cf6; --cal-soft:rgba(139,92,246,.13); }
  body.dashboard-core .fc .simpl-vehicle-any,
  body.dashboard-core .fc .simpl-available{ --cal-accent:#0ea5e9; --cal-soft:rgba(14,165,233,.13); }
  body.dashboard-core .fc .simpl-driving-test{ --cal-accent:#d97706; --cal-soft:rgba(217,119,6,.14); }
  body.dashboard-core .fc .simpl-unavailable{ --cal-accent:#f59e0b; --cal-soft:rgba(245,158,11,.14); }
  body.dashboard-core .fc .event-completed{ --cal-accent:#16a34a; --cal-soft:rgba(22,163,74,.12); }
  body.dashboard-core .fc .event-cancelled{ --cal-accent:#94a3b8; --cal-soft:rgba(148,163,184,.15); opacity:.84; }
  body.dashboard-core .fc .event-no-show{ --cal-accent:#ef4444; --cal-soft:rgba(239,68,68,.13); }

  /* Driving tests and availability are important, but should still stay white. */
  body.dashboard-core .fc .fc-list-event.simpl-driving-test > td,
  body.dashboard-core .fc .fc-list-event.simpl-available > td,
  body.dashboard-core .fc .fc-list-event.simpl-unavailable > td{
    background:#ffffff !important;
    background-image:none !important;
  }

  body.dashboard-core .fc .fc-list-day-cushion{
    border-radius:14px !important;
    background:#1f2937 !important;
    color:#ffffff !important;
    padding:8px 14px !important;
    box-shadow:0 5px 14px rgba(15,23,42,.10) !important;
  }

  @media (max-width:720px){
    body.dashboard-core .fc .fc-list-table{ border-spacing:0 7px !important; }
    body.dashboard-core .fc .fc-list-event > td{ padding-top:10px !important; padding-bottom:10px !important; }
    body.dashboard-core .fc .fc-list-event-time{ color:#334155 !important; }
  }


  /* ============================================================
     V6 CALENDAR ACCENTS - coloured stripe/dot per type, neutral cards
     ============================================================ */
  body.dashboard-core .fc .fc-list-event > td{
    background:#ffffff !important;
    background-image:none !important;
    color:#0f172a !important;
    border-top:1px solid #e7edf3 !important;
    border-bottom:1px solid #e7edf3 !important;
    box-shadow:0 3px 10px rgba(15,23,42,.045) !important;
  }

  body.dashboard-core .fc .fc-list-event > td:first-child{
    border-left:3px solid var(--cal-type-color, #2f7bff) !important;
    border-radius:14px 0 0 14px !important;
  }

  body.dashboard-core .fc .fc-list-event > td:last-child{
    border-right:1px solid #e7edf3 !important;
    border-radius:0 14px 14px 0 !important;
  }

  body.dashboard-core .fc .cal-type-manual{ --cal-type-color:#2f7bff; --cal-type-soft:rgba(47,123,255,.12); }
  body.dashboard-core .fc .cal-type-automatic{ --cal-type-color:#16a34a; --cal-type-soft:rgba(22,163,74,.13); }
  body.dashboard-core .fc .cal-type-adapted{ --cal-type-color:#8b5cf6; --cal-type-soft:rgba(139,92,246,.14); }
  body.dashboard-core .fc .cal-type-available{ --cal-type-color:#0ea5e9; --cal-type-soft:rgba(14,165,233,.13); }
  body.dashboard-core .fc .cal-type-test{ --cal-type-color:#d97706; --cal-type-soft:rgba(217,119,6,.15); }
  body.dashboard-core .fc .cal-type-unavailable{ --cal-type-color:#f59e0b; --cal-type-soft:rgba(245,158,11,.14); }
  body.dashboard-core .fc .event-cancelled{ --cal-type-color:#94a3b8; --cal-type-soft:rgba(148,163,184,.16); }
  body.dashboard-core .fc .event-no-show{ --cal-type-color:#ef4444; --cal-type-soft:rgba(239,68,68,.14); }

  body.dashboard-core .fc .fc-list-event-dot{
    border-color:var(--cal-type-color, #2f7bff) !important;
    background:var(--cal-type-color, #2f7bff) !important;
    box-shadow:0 0 0 3px var(--cal-type-soft, rgba(47,123,255,.12)) !important;
  }

  body.dashboard-core .fc .slfc-icon{
    color:var(--cal-type-color, #2f7bff) !important;
    background:var(--cal-type-soft, rgba(47,123,255,.12)) !important;
    border-color:var(--cal-type-soft, rgba(47,123,255,.18)) !important;
  }

  body.dashboard-core .fc .fc-list-event-time{
    color:#64748b !important;
    font-weight:650 !important;
  }

  body.dashboard-core .fc .slfc-name{
    color:#0f172a !important;
    font-weight:800 !important;
  }

  body.dashboard-core .fc .fc-list-event.cal-type-test .fc-list-event-time,
  body.dashboard-core .fc .fc-list-event.cal-type-test .slfc-icon{
    color:#d97706 !important;
  }

  body.dashboard-core .fc .fc-list-event:hover > td{
    background:#fbfdff !important;
    box-shadow:0 7px 18px rgba(15,23,42,.07) !important;
  }


  /* ============================================================
     V7 CALENDAR MOCK-UP MATCH
     - neutral cards with a left colour stripe
     - M / A / wheelchair badges replace colour dots
     - completed lessons are visibly finished
     ============================================================ */
  body.dashboard-core .fc .fc-list-table{
    border-collapse:separate !important;
    border-spacing:0 7px !important;
  }

  body.dashboard-core .fc .fc-list-event,
  body.dashboard-core .fc .fc-list-event:hover{
    background:transparent !important;
  }

  body.dashboard-core .fc .fc-list-event > td{
    background:#ffffff !important;
    background-image:none !important;
    color:#0f172a !important;
    border-top:1px solid #e7edf3 !important;
    border-bottom:1px solid #e7edf3 !important;
    box-shadow:0 4px 13px rgba(15,23,42,.055) !important;
    vertical-align:middle !important;
  }

  body.dashboard-core .fc .fc-list-event > td:first-child{
    border-left:4px solid var(--cal-type-color, #2f7bff) !important;
    border-radius:14px 0 0 14px !important;
  }

  body.dashboard-core .fc .fc-list-event > td:last-child{
    border-right:1px solid #e7edf3 !important;
    border-radius:0 14px 14px 0 !important;
  }

  body.dashboard-core .fc .fc-list-event:hover > td{
    background:#fbfdff !important;
    box-shadow:0 8px 20px rgba(15,23,42,.075) !important;
    transform:translateY(-1px);
  }

  body.dashboard-core .fc .fc-list-event-time{
    color:#1f2a44 !important;
    font-weight:850 !important;
    font-size:.82rem !important;
    letter-spacing:-.01em !important;
    white-space:nowrap !important;
  }

  /* The old FullCalendar dot is replaced by the custom M/A/wheelchair badge. */
  body.dashboard-core .fc .fc-list-event-dot{
    display:none !important;
  }

  body.dashboard-core .fc .fc-list-event-graphic{
    width:18px !important;
    min-width:18px !important;
    padding-left:4px !important;
    padding-right:4px !important;
  }

  body.dashboard-core .fc .slfc-title{
    display:flex !important;
    align-items:center !important;
    gap:10px !important;
    min-width:0 !important;
  }

  body.dashboard-core .fc .slfc-icon{
    width:24px !important;
    height:24px !important;
    flex:0 0 24px !important;
    display:inline-flex !important;
    align-items:center !important;
    justify-content:center !important;
    border-radius:999px !important;
    background:var(--cal-type-color, #2f7bff) !important;
    color:#ffffff !important;
    border:1px solid rgba(255,255,255,.70) !important;
    box-shadow:0 3px 9px var(--cal-type-soft, rgba(47,123,255,.18)) !important;
    font-size:.76rem !important;
    font-weight:950 !important;
    line-height:1 !important;
  }

  body.dashboard-core .fc .slfc-name-wrap{
    min-width:0 !important;
    display:flex !important;
    flex-direction:column !important;
    gap:2px !important;
  }

  body.dashboard-core .fc .slfc-name{
    color:#0f172a !important;
    font-weight:900 !important;
    line-height:1.14 !important;
    overflow:hidden !important;
    text-overflow:ellipsis !important;
  }

  body.dashboard-core .fc .slfc-status{
    color:#15803d !important;
    font-size:.72rem !important;
    font-weight:900 !important;
    line-height:1.05 !important;
  }

  /* Type colours */
  body.dashboard-core .fc .cal-type-manual{ --cal-type-color:#2f7bff; --cal-type-soft:rgba(47,123,255,.16); }
  body.dashboard-core .fc .cal-type-automatic{ --cal-type-color:#16a34a; --cal-type-soft:rgba(22,163,74,.17); }
  body.dashboard-core .fc .cal-type-adapted{ --cal-type-color:#8b5cf6; --cal-type-soft:rgba(139,92,246,.18); }
  body.dashboard-core .fc .cal-type-available{ --cal-type-color:#0ea5e9; --cal-type-soft:rgba(14,165,233,.17); }
  body.dashboard-core .fc .cal-type-test{ --cal-type-color:#d97706; --cal-type-soft:rgba(217,119,6,.18); }
  body.dashboard-core .fc .cal-type-unavailable{ --cal-type-color:#f59e0b; --cal-type-soft:rgba(245,158,11,.16); }
  body.dashboard-core .fc .event-cancelled{ --cal-type-color:#94a3b8; --cal-type-soft:rgba(148,163,184,.16); opacity:.82; }
  body.dashboard-core .fc .event-no-show{ --cal-type-color:#ef4444; --cal-type-soft:rgba(239,68,68,.18); }

  /* Available slot: same card language, but text/icon read as a slot, not a learner. */
  body.dashboard-core .fc .fc-list-event.cal-type-available .slfc-name{
    color:#1d4ed8 !important;
  }

  body.dashboard-core .fc .fc-list-event.cal-type-available .slfc-icon{
    background:#ffffff !important;
    color:#2f7bff !important;
    border:2px solid rgba(47,123,255,.35) !important;
    box-shadow:0 3px 10px rgba(47,123,255,.12) !important;
    font-size:1rem !important;
  }

  /* Driving tests: white card, gold stripe, trophy badge, gold time. */
  body.dashboard-core .fc .fc-list-event.cal-type-test .fc-list-event-time{
    color:#d97706 !important;
  }

  body.dashboard-core .fc .fc-list-event.cal-type-test .slfc-icon{
    background:#fff7ed !important;
    color:#d97706 !important;
    border:1px solid rgba(217,119,6,.22) !important;
    box-shadow:0 3px 10px rgba(217,119,6,.11) !important;
    font-size:.9rem !important;
  }

  /* Completed: visibly finished without reverting to heavy green blocks. */
  body.dashboard-core .fc .fc-list-event.event-completed{ --cal-type-color:#16a34a; --cal-type-soft:rgba(22,163,74,.18); }

  body.dashboard-core .fc .fc-list-event.event-completed > td{
    background:linear-gradient(90deg, rgba(22,163,74,.075), #ffffff 44%) !important;
    border-top-color:rgba(22,163,74,.18) !important;
    border-bottom-color:rgba(22,163,74,.18) !important;
  }

  body.dashboard-core .fc .fc-list-event.event-completed > td:last-child{
    border-right-color:rgba(22,163,74,.18) !important;
  }

  body.dashboard-core .fc .fc-list-event.event-completed .fc-list-event-time{
    color:#15803d !important;
  }

  body.dashboard-core .fc .fc-list-event.event-completed .slfc-icon{
    background:#ffffff !important;
    color:#16a34a !important;
    border:2px solid rgba(22,163,74,.48) !important;
    box-shadow:0 3px 10px rgba(22,163,74,.12) !important;
    font-size:.95rem !important;
  }

  body.dashboard-core .fc .fc-list-event.event-completed .slfc-name{
    color:#0f172a !important;
  }

  @media (max-width:720px){
    body.dashboard-core .fc .fc-list-table{ border-spacing:0 7px !important; }
    body.dashboard-core .fc .fc-list-event > td{ padding-top:10px !important; padding-bottom:10px !important; }
    body.dashboard-core .fc .fc-list-event-time{ width:112px !important; min-width:112px !important; font-size:.78rem !important; }
    body.dashboard-core .fc .fc-list-event-graphic{ width:12px !important; min-width:12px !important; padding-left:2px !important; padding-right:2px !important; }
    body.dashboard-core .fc .slfc-title{ gap:8px !important; }
    body.dashboard-core .fc .slfc-icon{ width:22px !important; height:22px !important; flex-basis:22px !important; font-size:.72rem !important; }
  }



  /* ============================================================
     CALENDAR DIARY SECTION
     One continuous section: header, unavailable action and calendar.
     ============================================================ */
  body.dashboard-core .slc-diary-section{
    overflow:hidden;
    border-radius:22px;
    background:rgba(255,255,255,.92);
    border-color:rgba(47,123,255,.14);
  }

  body.dashboard-core .slc-diary-header{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:14px;
    padding:16px 18px 15px;
    border-bottom:1px solid rgba(47,123,255,.12);
    background:linear-gradient(180deg, rgba(255,255,255,.96), rgba(248,251,255,.92));
  }

  body.dashboard-core .slc-diary-title-block{
    min-width:0;
    flex:1 1 auto;
  }

  body.dashboard-core .slc-diary-title{
    margin:0 0 4px;
    color:#0f172a;
    font-size:1.1rem;
    font-weight:950;
    line-height:1.05;
    letter-spacing:.12em;
    text-transform:uppercase;
  }

  body.dashboard-core .slc-diary-subtitle{
    margin:0;
    color:#64748b;
    font-size:.9rem;
    font-weight:750;
    line-height:1.3;
  }

  body.dashboard-core .slc-diary-header-actions{
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:8px;
    flex:0 0 auto;
  }

  body.dashboard-core .slc-diary-body{
    display:grid;
    gap:0;
    padding:0;
  }

  body.dashboard-core .slc-action-btn{
    min-height:36px;
    width:auto;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:8px;
    border-radius:13px;
    padding:0 12px;
    text-decoration:none;
    font-size:.80rem;
    font-weight:900;
    line-height:1.1;
    white-space:nowrap;
  }

  body.dashboard-core .slc-action-btn--secondary{
    border:1px solid rgba(47,123,255,.38);
    background:#ffffff;
    color:#245ddb;
    box-shadow:0 7px 18px rgba(15,23,42,.04);
  }

  body.dashboard-core .slc-action-icon{
    width:19px;
    height:19px;
    flex:0 0 19px;
    display:grid;
    place-items:center;
    border-radius:999px;
    background:rgba(47,123,255,.10);
    color:#245ddb;
    font-size:.72rem;
    font-weight:950;
  }

  body.dashboard-core .slc-header-small-btn{
    min-height:34px !important;
    padding:0 10px !important;
    border-radius:12px !important;
    font-size:.78rem !important;
    font-weight:850 !important;
  }

  body.dashboard-core .slc-unavailable-accordion{
    margin:0 !important;
    padding:0 !important;
    border-radius:0 !important;
    border:0 !important;
    border-bottom:1px solid rgba(245,158,11,.24) !important;
    background:rgba(255,253,247,.92) !important;
    box-shadow:none !important;
    overflow:hidden !important;
  }

  body.dashboard-core .slc-unavailable-summary{
    min-height:52px !important;
    padding:0 14px !important;
    display:flex !important;
    align-items:center !important;
    gap:12px !important;
    cursor:pointer !important;
  }

  body.dashboard-core .slc-unavailable-icon{
    width:28px !important;
    height:28px !important;
    flex:0 0 28px !important;
    display:grid !important;
    place-items:center !important;
    border-radius:999px !important;
    background:#fff7ed !important;
    border:1px solid rgba(245,158,11,.22) !important;
    color:#b45309 !important;
    font-weight:950 !important;
  }

  body.dashboard-core .slc-unavailable-summary strong{
    flex:1 !important;
    min-width:0 !important;
    color:#0f172a !important;
    font-size:.92rem !important;
    font-weight:950 !important;
    line-height:1.18 !important;
  }

  body.dashboard-core .slc-unavailable-chevron{
    color:#b45309 !important;
    font-size:1rem !important;
    font-weight:950 !important;
  }

  /* Completed lessons: one compact meaning badge, no repeated label. */
  body.dashboard-core .fc .slfc-status{ display:none !important; }

  body.dashboard-core .fc .slfc-icon{
    position:relative !important;
    width:22px !important;
    height:22px !important;
    flex:0 0 22px !important;
    display:grid !important;
    place-items:center !important;
    border-radius:999px !important;
    font-size:.72rem !important;
    font-weight:950 !important;
  }

  body.dashboard-core .fc .slfc-completed-check{
    position:absolute !important;
    left:-6px !important;
    top:-5px !important;
    width:15px !important;
    height:15px !important;
    display:grid !important;
    place-items:center !important;
    border-radius:999px !important;
    background:#ffffff !important;
    color:#16a34a !important;
    border:1px solid rgba(22,163,74,.32) !important;
    font-size:.58rem !important;
    line-height:1 !important;
    box-shadow:0 2px 7px rgba(22,163,74,.12) !important;
  }

  body.dashboard-core .fc .fc-list-event.event-completed > td{
    background:linear-gradient(90deg, rgba(22,163,74,.055), #ffffff 48%) !important;
  }

  body.dashboard-core .fc .fc-list-event.event-completed .fc-list-event-time{
    color:#15803d !important;
    opacity:.82 !important;
  }

  body.dashboard-core .fc .fc-list-event.event-completed .slfc-name{
    color:#0f172a !important;
  }

  body.dashboard-core .fc .fc-list-event{ transition:transform .14s ease, box-shadow .14s ease; }
  body.dashboard-core .fc .fc-list-event:active{ transform:scale(.985); }

  body.dashboard-core .fc .fc-list-day{
    position:sticky !important;
    top:0 !important;
    z-index:8 !important;
  }

  body.dashboard-core .fc .fc-list-day-cushion{
    position:relative !important;
    display:flex !important;
    align-items:center !important;
    justify-content:space-between !important;
    gap:8px !important;
  }

  body.dashboard-core .fc .simpl-today-pill{
    position:absolute !important;
    left:50% !important;
    top:50% !important;
    transform:translate(-50%, -50%) !important;
    display:inline-flex !important;
    align-items:center !important;
    justify-content:center !important;
    min-height:20px !important;
    padding:0 10px !important;
    border-radius:999px !important;
    background:linear-gradient(135deg, #2f7bff, #245ddb) !important;
    color:#ffffff !important;
    font-size:.66rem !important;
    font-weight:950 !important;
    letter-spacing:.08em !important;
    box-shadow:0 6px 14px rgba(47,123,255,.22) !important;
  }

  @media (max-width:720px){
    body.dashboard-core .slc-action-btn{ min-height:42px !important; border-radius:13px !important; font-size:.76rem !important; }
    body.dashboard-core .slc-action-icon{ width:20px !important; height:20px !important; flex-basis:20px !important; font-size:.75rem !important; }
    body.dashboard-core .slc-unavailable-summary{ min-height:48px !important; padding:0 12px !important; gap:9px !important; }
    body.dashboard-core .slc-unavailable-summary strong{ font-size:.74rem !important; }
    body.dashboard-core .slc-unavailable-icon{ width:24px !important; height:24px !important; flex-basis:24px !important; }
  }



/* Migrated calendar-specific rules formerly in premium.css. */
/* ============================================================
   LESSONS CALENDAR PAGE
   Shared diary styling only. Reuses shared page/card/button tokens
   and adds scoped FullCalendar rules where needed.
   ============================================================ */

.slc-diary-section{
  width:100%;
}

.slc-diary-body{
  min-width:0;
}

.slc-frame{
  padding:12px 16px 16px;
  overflow:hidden;
  min-width:0;
  border-top:0;
  background:transparent;
}

.slc-frame #calendar{
  min-width:0;
}

/* ---------- Calendar width / layout ---------- */

.premium-main.slc-main{
  width:100%;
  max-width:var(--simplos-page-max, 1200px);
  padding-top:0;
  padding-left:var(--page-pad-x, 1rem);
  padding-right:var(--page-pad-x, 1rem);
}

.slc-main .page-shell.page--wide,
.slc-main .slc-page{
  width:100%;
  max-width:var(--simplos-page-max, 1200px);
  margin-left:auto;
  margin-right:auto;
  padding-top:0;
  padding-left:0;
  padding-right:0;
}

.slc-main .slc-diary-section{
  width:100%;
}

body.dashboard-core .slc-diary-header{
  justify-content:center;
}

body.dashboard-core .slc-diary-header-actions{
  width:100%;
  justify-content:center;
  margin-left:auto;
  margin-right:auto;
}

body.dashboard-core .slc-diary-header-actions .slc-action-btn{
  flex:0 1 240px;
  justify-content:center;
}

/* Holiday form bottom sheet */
body.slc-sheet-open{
  overflow:hidden;
  position:fixed;
  width:100%;
}

.slc-holiday-sheet{
  position:fixed;
  inset:0;
  z-index:2400;
  display:flex;
  align-items:flex-end;
  justify-content:center;
  padding-bottom:calc(var(--bottomNavH, 72px) + env(safe-area-inset-bottom, 0px));
  pointer-events:none;
  visibility:hidden;
}

.slc-holiday-sheet.is-open{
  pointer-events:auto;
  visibility:visible;
}

.slc-holiday-sheet-backdrop{
  position:absolute;
  inset:0;
  background:rgba(15,23,42,.48);
  opacity:0;
  transition:opacity .22s ease;
}

.slc-holiday-sheet.is-open .slc-holiday-sheet-backdrop{
  opacity:1;
}

.slc-holiday-sheet-panel{
  position:relative;
  z-index:1;
  display:flex;
  flex-direction:column;
  width:min(680px, calc(100% - 24px));
  height:calc(100dvh - var(--bottomNavH, 72px) - env(safe-area-inset-bottom, 0px) - 16px);
  min-height:calc(100dvh - var(--bottomNavH, 72px) - env(safe-area-inset-bottom, 0px) - 16px);
  max-height:calc(100dvh - var(--bottomNavH, 72px) - env(safe-area-inset-bottom, 0px) - 16px);
  overflow-x:hidden;
  overflow-y:auto;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
  padding:10px 18px calc(22px + env(safe-area-inset-bottom, 0px));
  border:1px solid rgba(47,123,255,.16);
  border-radius:26px 26px 0 0;
  background:var(--surface, #fff);
  box-shadow:0 -20px 50px rgba(15,23,42,.22);
  transform:translateY(105%);
  transition:transform .26s cubic-bezier(.22,.72,.25,1);
}

.slc-holiday-sheet.is-open .slc-holiday-sheet-panel{
  transform:translateY(0);
}

.slc-holiday-sheet-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:14px;
  margin:2px 0 12px;
}

.slc-holiday-sheet-head h2{
  margin:2px 0 0;
  color:var(--text, #0f172a);
  font-size:1.2rem;
  line-height:1.15;
}

.slc-holiday-sheet-close{
  width:38px;
  height:38px;
  flex:0 0 38px;
  display:grid;
  place-items:center;
  border:1px solid var(--border, #e5e7eb);
  border-radius:12px;
  background:var(--surface-2, #f8fafc);
  color:var(--text, #0f172a);
  font-size:1.45rem;
  line-height:1;
  cursor:pointer;
}

.slc-holiday-sheet .slc-unavailability-note{
  margin-top:0;
}

@media (max-width:720px){
  .premium-main.slc-main{
    padding-left:4px;
    padding-right:4px;
  }

  body.dashboard-core .slc-diary-header{
    padding:8px 10px 6px;
    align-items:center;
    gap:10px;
  }

  body.dashboard-core .slc-diary-title{
    font-size:.98rem;
    letter-spacing:.10em;
  }

  body.dashboard-core .slc-diary-subtitle{
    font-size:.78rem;
    line-height:1.2;
  }

  body.dashboard-core .slc-diary-header-actions{
    display:grid;
    grid-template-columns:repeat(2, minmax(0, 1fr));
    gap:10px;
    width:100%;
  }

  body.dashboard-core .slc-diary-header-actions .slc-action-btn{
    width:100%;
    min-width:0;
  }

  body.dashboard-core .slc-header-small-btn{
    display:none !important;
  }

  body.dashboard-core .slc-action-btn{
    min-height:34px;
    border-radius:12px;
    padding:0 9px;
    font-size:.74rem;
  }

  body.dashboard-core .slc-action-icon{
    width:19px;
    height:19px;
    flex-basis:19px;
    font-size:.7rem;
  }

  .slc-frame{
    padding:2px 0 12px;
  }


  .slc-page .fc .fc-toolbar{
    display:grid !important;
    grid-template-columns:auto 1fr !important;
    grid-template-areas:
      "nav title"
      "views views" !important;
    column-gap:10px !important;
    row-gap:10px !important;
    align-items:center !important;
    margin-bottom:12px !important;
  }

  .slc-page .fc .fc-toolbar-chunk:nth-child(1){
    grid-area:nav;
    justify-content:flex-start;
  }

  .slc-page .fc .fc-toolbar-chunk:nth-child(2){
    grid-area:title;
    justify-content:flex-end;
  }

  .slc-page .fc .fc-toolbar-chunk:nth-child(3){
    grid-area:views;
    justify-content:flex-start;
  }

  .slc-page .fc .fc-toolbar-title{
    font-size:1.25rem;
    text-align:right;
  }

  .slc-page .fc .fc-prev-button,
  .slc-page .fc .fc-next-button{
    width:44px !important;
    min-width:44px !important;
    height:44px !important;
    min-height:44px !important;
    border-radius:13px !important;
  }

  .slc-page .fc .fc-simplToday-button,
  .slc-page .fc .fc-timeGridWeek-button,
  .slc-page .fc .fc-listWeek-button{
    min-width:62px !important;
    height:36px !important;
    min-height:36px !important;
    padding:0 11px !important;
    border-radius:12px !important;
    font-size:.82rem !important;
  }

}

/* ---------- FullCalendar ---------- */

.slc-page .fc{
  font-family: inherit;
  color: var(--text);
  --fc-border-color: var(--border);
  --fc-page-bg-color: transparent;
  --fc-neutral-bg-color: var(--surface-2);
  --fc-list-event-hover-bg-color: var(--surface-2);
  --fc-today-bg-color: rgba(47,123,255,.08);
}

.slc-page .fc .fc-toolbar{
  margin:0 0 12px !important;
  gap:8px !important;
  flex-wrap:wrap;
  align-items:center !important;
}

.slc-page .fc .fc-toolbar-chunk{
  display:flex;
  align-items:center;
  gap:8px;
}

.slc-page .fc .fc-toolbar-title{
  font-size:1.45rem;
  line-height:1.05;
  font-weight:900;
  color:var(--text);
}

.slc-page .fc .fc-button{
  min-height:38px !important;
  border-radius:12px !important;
  border:1px solid var(--border) !important;
  background:var(--surface) !important;
  color:var(--text) !important;
  box-shadow:none !important;
  text-transform:none !important;
  font-weight:800 !important;
  padding:0 .68rem !important;
  line-height:1 !important;
}

.slc-page .fc .fc-prev-button,
.slc-page .fc .fc-next-button{
  width:48px !important;
  min-width:48px !important;
  height:48px !important;
  min-height:48px !important;
  padding:0 !important;
  border-radius:14px !important;
}

.slc-page .fc .fc-simplToday-button,
.slc-page .fc .fc-timeGridWeek-button,
.slc-page .fc .fc-listWeek-button,
.slc-page .fc .fc-timeGridDay-button,
.slc-page .fc .fc-dayGridMonth-button{
  min-width:66px !important;
  height:38px !important;
  min-height:38px !important;
  padding:0 13px !important;
  border-radius:12px !important;
  font-size:.86rem !important;
}

.slc-page .fc .fc-button:hover{
  background: var(--surface-2) !important;
  border-color: var(--border-strong) !important;
}

.slc-page .fc .fc-button.fc-button-active{
  background: var(--primary-strong) !important;
  border-color: var(--primary-strong) !important;
  color: #fff !important;
}

.slc-page .fc .fc-scrollgrid,
.slc-page .fc .fc-theme-standard td,
.slc-page .fc .fc-theme-standard th{
  border-color: var(--border) !important;
}

.slc-page .fc .fc-col-header-cell-cushion,
.slc-page .fc .fc-daygrid-day-number,
.slc-page .fc .fc-timegrid-axis-cushion,
.slc-page .fc .fc-timegrid-slot-label-cushion{
  color: var(--text);
  font-weight: 700;
  text-decoration: none;
}

.slc-page .fc .fc-list{
  border: 0 !important;
  background: transparent !important;
}

.slc-page .fc .fc-list-day-cushion{
  background: var(--surface-2) !important;
  color: var(--text) !important;
  padding: 12px 10px 8px !important;
  border: 0 !important;
  font-weight: 800;
}

.slc-page .fc .fc-list-event td{
  background: transparent !important;
  color: var(--text) !important;
  border-color: var(--border) !important;
}

.slc-page .fc .fc-list-event-title a{
  color: var(--text) !important;
  text-decoration: none !important;
  font-weight: 700;
}

.slc-page .fc .fc-list-event-time{
  color: var(--text-muted) !important;
  font-weight: 700;
}

.slfc-title{
  font-weight: 800;
  line-height: 1.25;
  white-space: normal;
  overflow: visible;
  text-overflow: clip;
  display: block;
  word-break: break-word;
}

/* ---------- Compact calendar list rows ---------- */

.slc-page .fc .fc-list-event{
  border-radius: 14px;
  border: 1px solid rgba(47,123,255,.14);
  background: rgba(47,123,255,.10);
  box-shadow: 0 6px 14px rgba(0,0,0,.12);
  overflow: hidden;
}

.slc-page .fc .fc-list-event td{
  padding: 10px 12px !important;
  background: transparent !important;
  color: var(--text) !important;
  border: 0 !important;
  vertical-align: middle !important;
}

.slc-page .fc .fc-list-event-time{
  width: 110px;
  min-width: 110px;
  white-space: nowrap;
  font-size: .82rem;
  font-weight: 700;
  color: rgba(238,244,255,.68) !important;
}

.slc-page .fc .fc-list-event-title{
  width: auto;
}

.slc-page .fc .fc-list-event-title a{
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: .98rem;
  font-weight: 800;
  line-height: 1.25;
  color: #eef4ff !important;
  text-decoration: none !important;
  white-space: normal !important;
  overflow: visible !important;
  text-overflow: clip !important;
  word-break: break-word;
}

.slc-page .fc .fc-list-event-title a::before{
  content: "";
  width: 8px;
  height: 8px;
  border-radius: 999px;
  flex: 0 0 8px;
  background: #4ea1ff;
  box-shadow: 0 0 0 4px rgba(78,161,255,.10);
}

/* ---------- Event colours ---------- */

.slc-page .fc .fc-event{
  border-radius: 10px;
  border: 1px solid rgba(47,123,255,.26);
  background: rgba(47,123,255,.14);
  color: var(--text);
}

.slc-page .fc .event-scheduled{
  border-color: rgba(47,123,255,.28);
  background: rgba(47,123,255,.14);
}

.slc-page .fc .event-completed{
  border-color: rgba(34,197,94,.26);
  background: rgba(34,197,94,.14);
}

.slc-page .fc .event-completed{
  border-color: #cfead7;
  background: #eefaf1;
}

.slc-page .fc .fc-list-event.event-completed{
  background: #f2fbf5 !important;
  border-color: #d8f2e0 !important;
}

.slc-page .fc .fc-list-event.event-completed .fc-list-event-time{
  color: #166534 !important;
}

.slc-page .fc .fc-list-event.event-completed .fc-list-event-title a{
  color: #111827 !important;
}

.slc-page .fc .fc-list-event.event-completed .fc-list-event-title a::before{
  background: #22c55e;
  box-shadow: 0 0 0 4px rgba(34,197,94,.12);
}

.slc-page .fc .fc-list-event.event-completed .fc-list-event-time{
  color: rgba(220,252,231,.78) !important;
}

.slc-page .fc .fc-list-event.event-completed .fc-list-event-title a{
  color: #ecfdf5 !important;
}

.slc-page .fc .fc-list-event.event-completed .fc-list-event-title a::before{
  background: #22c55e;
  box-shadow: 0 0 0 4px rgba(34,197,94,.16);
}

.slc-page .fc .event-cancelled{
  border-color: rgba(148,163,184,.24);
  background: rgba(148,163,184,.14);
  opacity: .78;
}

.slc-page .fc .simpl-driving-test{
  border-color: rgba(239,68,68,.30);
  background: rgba(239,68,68,.16);
}

/* ---------- Dashboard-core / dark diary support ---------- */

.dashboard-core .slc-page .fc,
html[data-theme="dark"] .slc-page .fc{
  color: #e6efff;
  --fc-border-color: rgba(168,184,210,.14);
  --fc-page-bg-color: transparent;
  --fc-neutral-bg-color: rgba(21,32,52,.92);
  --fc-list-event-hover-bg-color: rgba(29,43,67,.92);
  --fc-today-bg-color: rgba(63,132,255,.12);
}

.dashboard-core .slc-page .fc .fc-toolbar-title,
.dashboard-core .slc-page .fc .fc-col-header-cell-cushion,
.dashboard-core .slc-page .fc .fc-daygrid-day-number,
.dashboard-core .slc-page .fc .fc-timegrid-axis-cushion,
.dashboard-core .slc-page .fc .fc-timegrid-slot-label-cushion,
html[data-theme="dark"] .slc-page .fc .fc-toolbar-title,
html[data-theme="dark"] .slc-page .fc .fc-col-header-cell-cushion,
html[data-theme="dark"] .slc-page .fc .fc-daygrid-day-number,
html[data-theme="dark"] .slc-page .fc .fc-timegrid-axis-cushion,
html[data-theme="dark"] .slc-page .fc .fc-timegrid-slot-label-cushion{
  color: #eef4ff;
}

.dashboard-core .slc-page .fc .fc-button,
html[data-theme="dark"] .slc-page .fc .fc-button{
  background: rgba(21,32,52,.92) !important;
  border-color: rgba(168,184,210,.16) !important;
  color: #dbe7fb !important;
}

.dashboard-core .slc-page .fc .fc-button:hover,
html[data-theme="dark"] .slc-page .fc .fc-button:hover{
  background: rgba(29,43,67,.96) !important;
  border-color: rgba(168,184,210,.24) !important;
}

.dashboard-core .slc-page .fc .fc-button.fc-button-active,
html[data-theme="dark"] .slc-page .fc .fc-button.fc-button-active{
  background: var(--primary-strong) !important;
  border-color: var(--primary-strong) !important;
  color: #fff !important;
}

.dashboard-core .slc-page .fc .fc-list-day-cushion,
html[data-theme="dark"] .slc-page .fc .fc-list-day-cushion{
  background: rgba(21,32,52,.92) !important;
  color: #eef4ff !important;
}

.dashboard-core .slc-page .fc .fc-list-event td,
html[data-theme="dark"] .slc-page .fc .fc-list-event td{
  color: #dbe7fb !important;
}

.dashboard-core .slc-page .fc .fc-list-event-title a,
html[data-theme="dark"] .slc-page .fc .fc-list-event-title a{
  color: #eef4ff !important;
}

.dashboard-core .slc-page .fc .fc-list-event-time,
html[data-theme="dark"] .slc-page .fc .fc-list-event-time{
  color: #9fb3d9 !important;
}

html[data-theme="dark"] .slc-page{
    padding-bottom: 98px;
  }



/* ---------- FullCalendar list day header fix ---------- */
.slc-page .fc .fc-list-day > th,
.slc-page .fc .fc-list-day-cushion{
  overflow: visible !important;
}

.slc-page .fc .fc-list-day-cushion{
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 12px !important;
  width: 100% !important;
  box-sizing: border-box !important;
  padding: 12px 12px 8px !important;
}

.slc-page .fc .fc-list-day-text{
  min-width: 0 !important;
  flex: 1 1 auto !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

.slc-page .fc .fc-list-day-side-text{
  flex: 0 0 auto !important;
  white-space: nowrap !important;
  font-size: .86rem !important;
  line-height: 1.15 !important;
  text-align: right !important;
}

.slc-frame{
  overflow-x: hidden !important;
}

.slc-page .fc .fc-list-day-cushion{
    gap: 8px !important;
    padding: 11px 10px 8px !important;
  }

.slc-page .fc .fc-list-day-text,
  .slc-page .fc .fc-list-day-side-text{
    font-size: .82rem !important;
  }

/* ============================================================
   40. INSTRUCTOR LIGHT PAGE UNIFICATION (2026-04-15)
   Shared learners-style background for instructor dashboard,
   diary, more and lesson schedule pages.
   ============================================================ */
.dashboard-page,
.more-page,
.lesson-schedule-page,
.slc-page,
.learners-page{
  --page-card-bg: radial-gradient(circle at 18% 0%, rgba(92,200,255,.22), transparent 48%),
                   radial-gradient(circle at 86% 12%, rgba(47,123,255,.16), transparent 48%),
                   linear-gradient(180deg, rgba(255,255,255,.94), rgba(246,250,255,.90));
  --page-card-bg-soft: linear-gradient(180deg, rgba(255,255,255,.96), rgba(243,248,255,.90));
  --page-card-border: rgba(120,146,196,.16);
  --page-input-bg: rgba(255,255,255,.92);
  --page-input-border: rgba(120,146,196,.14);
  --page-input-border-focus: rgba(47,123,255,.34);
  --page-text-strong: #0f172a;
  --page-text-muted: #64748b;
  --page-blue: #2f7bff;
  --page-blue-strong: #245ddb;
  --page-shadow: 0 18px 48px rgba(15,23,42,.12);
}

.more-page-shell,
.lesson-schedule-page .page-shell,
.slc-page,
.learners-page.learners-page-shell{
  display:flex;
  flex-direction:column;
  gap:14px;
}

.more-page .page-intro,
.slc-page .page-intro,
.learners-page .page-intro{
  margin-bottom:0;
}

.dashboard-page .page-intro-title,
.dashboard-page .page-intro-meta,
.dashboard-page .dashboard-section-title,
.dashboard-page .list-row-title,
.dashboard-page .list-row-meta,
.more-page .page-intro-title,
.more-page .page-intro-meta,
.more-page .list-row-title,
.more-page .list-row-meta,
.more-page .section-title,
.lesson-schedule-page .schedule-title,
.lesson-schedule-page .schedule-subtitle,
.lesson-schedule-page .schedule-section-title,
.lesson-schedule-page .schedule-section-note,
.slc-page .page-intro-title,
.slc-page .page-intro-meta,
.learners-page .page-intro-title,
.learners-page .page-intro-meta{
  color: inherit;
}

.dashboard-page .page-intro-title,
.more-page .page-intro-title,
.slc-page .page-intro-title,
.learners-page .page-intro-title{
  color: var(--page-text-strong);
}

.dashboard-page .page-intro-meta,
.more-page .page-intro-meta,
.slc-page .page-intro-meta,
.learners-page .page-intro-meta,
.dashboard-page .dashboard-summary-text{
  color: var(--page-text-muted);
}

.dashboard-page .section-card,
.more-page .more-section-card,
.more-page .more-note-card,
.lesson-schedule-page .section-card,
.slc-page .section-card,
.learners-page .learners-toolbar-card,
.learners-page .learners-list-card{
  border-radius: 24px;
  border: 1px solid var(--page-card-border);
  background: var(--page-card-bg);
  box-shadow: var(--page-shadow);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}

.slc-page .slc-page .fc .fc-toolbar-title,
.slc-page .fc .fc-col-header-cell-cushion,
.slc-page .fc .fc-daygrid-day-number,
.slc-page .fc .fc-timegrid-axis-cushion,
.slc-page .fc .fc-timegrid-slot-label-cushion,
.slc-page .fc .fc-list-event-title a,
.slc-page .fc .fc-list-event-time{ color: var(--page-text-strong); }

.slc-page .fc .fc-button{ background: rgba(255,255,255,.88) !important; border-color: rgba(15,23,42,.08) !important; color: var(--page-text-strong) !important; }

.slc-page .fc .fc-button:hover{ background: #fff !important; border-color: rgba(47,123,255,.24) !important; }

.slc-page .fc .fc-button.fc-button-active{ background: var(--page-blue-strong) !important; border-color: var(--page-blue-strong) !important; color:#fff !important; }

.slc-page .fc .fc-list-day-cushion{ background: rgba(47,123,255,.08); }

/* Attractive light cards for shared instructor pages */
.dashboard-page .list-row,
.more-page .list-row,
.learners-page .admin-row,
.learners-page .cardRow,
.lesson-schedule-page .schedule-success-panel{
  background: var(--page-card-bg-soft);
  border-color: var(--page-card-border);
}

.dashboard-page .section-card,
.more-page .more-section-card,
.more-page .more-note-card,
.lesson-schedule-page .section-card,
.slc-page .section-card,
.learners-page .learnersPanel,
.learners-page .admin-row{
  background: rgba(255,255,255,.88);
  border: 1px solid rgba(15,23,42,.08);
  box-shadow:
    0 10px 25px rgba(15,23,42,.06),
    0 2px 6px rgba(15,23,42,.04);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

.dashboard-page .list-row,
.more-page .list-row,
.learners-page .admin-row,
.learners-page .learner-item,
.learners-page .learnersPanel .learner-row,
.slc-page .list-row,
.lesson-schedule-page .schedule-selected-chip{
  background: rgba(255,255,255,.90);
  border: 1px solid rgba(15,23,42,.06);
  box-shadow: 0 4px 10px rgba(15,23,42,.04);
  transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease, background-color .15s ease;
}

.dashboard-page .list-row:active,
.more-page .list-row:active,
.learners-page .admin-row:active,
.learners-page .learner-item:active,
.slc-page .list-row:active{
  transform: scale(.98);
}

.dashboard-page .btn:not(.btn-soft):not(.btn-ghost):not(.btn-outline):not(.btn-green):not(.btn-danger),
.more-page .btn:not(.btn-soft):not(.btn-ghost):not(.btn-outline):not(.btn-green):not(.btn-danger),
.lesson-schedule-page .btn:not(.btn-soft):not(.btn-ghost):not(.btn-outline):not(.btn-green):not(.btn-danger),
.learners-page .btn:not(.btn-soft):not(.btn-ghost):not(.btn-outline):not(.btn-green):not(.btn-danger),
.slc-page .btn:not(.btn-soft):not(.btn-ghost):not(.btn-outline):not(.btn-green):not(.btn-danger),
.credits-page .btn:not(.btn-soft):not(.btn-ghost):not(.btn-outline):not(.btn-green):not(.btn-danger){
  background: linear-gradient(135deg, #2f7bff, #245ddb);
  border: 1px solid transparent;
  color: #ffffff;
  box-shadow: 0 14px 28px rgba(47,123,255,.22);
}

.dashboard-page .btn-primary,
.more-page .btn-primary,
.lesson-schedule-page .btn-primary,
.learners-page .btn-primary,
.slc-page .btn-primary{
  background: linear-gradient(135deg, #2f7bff, #245ddb);
  border-color: transparent;
  color: #fff;
  box-shadow: 0 14px 28px rgba(47,123,255,.22);
}

.dashboard-page .btn-primary:hover,
.more-page .btn-primary:hover,
.lesson-schedule-page .btn-primary:hover,
.learners-page .btn-primary:hover,
.slc-page .btn-primary:hover{
  box-shadow: 0 16px 34px rgba(47,123,255,.28);
}

.learners-page .searchInput,
.lesson-schedule-page .schedule-control,
.slc-page select,
.slc-page input[type="text"],
.slc-page input[type="search"],
.more-page input[type="text"],
.more-page input[type="search"]{
  background: rgba(255,255,255,.92);
  border: 1px solid rgba(15,23,42,.08);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.55);
}

.dashboard-page .status-badge,
.more-page .status-badge,
.learners-page .status-badge,
.slc-page .status-badge,
.lesson-schedule-page .status-badge{
  background: rgba(255,255,255,.72);
  border: 1px solid rgba(47,123,255,.14);
  box-shadow: 0 2px 6px rgba(15,23,42,.04);
}

.learners-page .page-intro-title,
.dashboard-page .page-intro-title,
.more-page .page-intro-title,
.lesson-schedule-page .page-intro-title,
.slc-page .page-intro-title{
  color: #0b1220;
}

.learners-page .page-intro-meta,
.dashboard-page .page-intro-meta,
.more-page .page-intro-meta,
.lesson-schedule-page .page-intro-meta,
.slc-page .page-intro-meta{
  color: #5f6f86;
}

.dashboard-page .section-card,
.more-page .more-section-card,
.lesson-schedule-page .section-card,
.slc-page .section-card,
.learners-page .learnersPanel,
.learners-page .learners-toolbar-card,
.learners-page .learners-list-card{
  padding: .95rem;
}

.fc .event-completed .fc-event-main,
.fc .event-completed .fc-event-main-frame,
.fc .event-completed .fc-event-title,
.fc .event-completed .fc-list-event-title,
.fc .event-completed .fc-list-event-time,
.fc .event-completed .slfc-title,
.fc-event.event-completed .fc-event-main,
.fc-event.event-completed .slfc-title{
  color: #ffffff !important;
  font-weight: 800 !important;
}

body.dashboard-core .fc .fc-list-event-title,
body.dashboard-core .fc .fc-list-event-title a,
body.dashboard-core .fc .slfc-title,
body.dashboard-core .fc .slfc-name{
    color:#0f172a !important;
    text-shadow:none !important;
    font-weight:900 !important;
    line-height:1.18 !important;
  }

body.dashboard-core .fc .slfc-title{
    display:flex !important;
    align-items:center !important;
    gap:7px !important;
    min-width:0 !important;
  }

body.dashboard-core .fc .slfc-icon{
    width:22px !important;
    height:22px !important;
    flex:0 0 22px !important;
    display:inline-flex !important;
    align-items:center !important;
    justify-content:center !important;
    border-radius:999px !important;
    background:var(--cal-soft, rgba(47,123,255,.12)) !important;
    color:var(--cal-accent, #2f7bff) !important;
    font-size:.82rem !important;
    font-weight:950 !important;
  }

body.dashboard-core .fc .slfc-name{
    min-width:0 !important;
    overflow:hidden !important;
    text-overflow:ellipsis !important;
  }

body.dashboard-core .fc .event-cancelled .slfc-name,
body.dashboard-core .fc .event-no-show .slfc-name{
    color:#475569 !important;
  }

body.dashboard-core .fc .slfc-title{
      gap:6px !important;
    }

body.dashboard-core .fc .fc-list-event-time,
body.dashboard-core .fc .fc-list-event-title,
body.dashboard-core .fc .fc-list-event-title a,
body.dashboard-core .fc .slfc-title,
body.dashboard-core .fc .slfc-name,
body.dashboard-core .fc .simpl-available .slfc-title,
body.dashboard-core .fc .simpl-driving-test .slfc-title,
body.dashboard-core .fc .simpl-unavailable .slfc-title,
body.dashboard-core .fc .event-completed .slfc-title,
body.dashboard-core .fc .event-no-show .slfc-title,
body.dashboard-core .fc .simpl-vehicle-automatic .slfc-title,
body.dashboard-core .fc .simpl-vehicle-adapted .slfc-title,
body.dashboard-core .fc .simpl-vehicle-any .slfc-title,
body.dashboard-core .fc .simpl-vehicle-manual .slfc-title,
body.dashboard-core .fc .simpl-available a,
body.dashboard-core .fc .simpl-driving-test a,
body.dashboard-core .fc .simpl-unavailable a,
body.dashboard-core .fc .event-completed a,
body.dashboard-core .fc .event-no-show a{
  color:#0f172a !important;
  text-shadow:none !important;
  background:transparent !important;
  background-image:none !important;
}

body.dashboard-core .fc .slfc-title{
  display:flex !important;
  align-items:center !important;
  gap:7px !important;
}

body.dashboard-core .fc .slfc-icon{
  background:var(--cal-soft, rgba(47,123,255,.11)) !important;
  background-image:none !important;
  color:var(--cal-accent, #2f7bff) !important;
  border:1px solid var(--cal-soft, rgba(47,123,255,.18)) !important;
  box-shadow:none !important;
}

body.dashboard-core .fc .fc-list-event-time,
body.dashboard-core .fc .fc-list-event-title,
body.dashboard-core .fc .fc-list-event-title a,
body.dashboard-core .fc .slfc-title,
body.dashboard-core .fc .slfc-name,
body.dashboard-core .fc .simpl-available .slfc-title,
body.dashboard-core .fc .simpl-driving-test .slfc-title,
body.dashboard-core .fc .simpl-unavailable .slfc-title,
body.dashboard-core .fc .event-completed .slfc-title,
body.dashboard-core .fc .event-no-show .slfc-title,
body.dashboard-core .fc .simpl-vehicle-manual .slfc-title,
body.dashboard-core .fc .simpl-vehicle-automatic .slfc-title,
body.dashboard-core .fc .simpl-vehicle-adapted .slfc-title,
body.dashboard-core .fc .simpl-vehicle-any .slfc-title,
body.dashboard-core .fc .simpl-available a,
body.dashboard-core .fc .simpl-driving-test a,
body.dashboard-core .fc .simpl-unavailable a,
body.dashboard-core .fc .event-completed a,
body.dashboard-core .fc .event-no-show a{
  color:#0f172a !important;
  text-shadow:none !important;
  background:transparent !important;
  background-image:none !important;
}

body.dashboard-core .fc .slfc-title{
  display:flex !important;
  align-items:center !important;
  gap:6px !important;
  line-height:1.12 !important;
}

body.dashboard-core .fc .slfc-name{
  color:#0f172a !important;
  font-weight:850 !important;
  letter-spacing:-.015em !important;
}

body.dashboard-core .fc .slfc-icon{
  width:19px !important;
  height:19px !important;
  min-width:19px !important;
  border-radius:8px !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  background:var(--cal-soft) !important;
  background-image:none !important;
  color:var(--cal-accent) !important;
  border:1px solid color-mix(in srgb, var(--cal-accent) 20%, transparent) !important;
  box-shadow:none !important;
  font-size:12px !important;
  line-height:1 !important;
}

/* Available slots get clearer wording without becoming a blue block. */
body.dashboard-core .fc .simpl-available .slfc-name{
  color:#0f172a !important;
  font-weight:900 !important;
}

body.dashboard-core .fc .simpl-driving-test .slfc-icon{
  background:rgba(217,119,6,.10) !important;
  border-color:rgba(217,119,6,.20) !important;
}

body.dashboard-core .fc .slfc-title{ gap:5px !important; }

body.dashboard-core .fc .slfc-icon{
    width:18px !important;
    height:18px !important;
    min-width:18px !important;
    font-size:11px !important;
  }

body.dashboard-core .fc .slfc-icon{
  background:var(--cal-soft) !important;
  color:var(--cal-accent) !important;
  border-color:color-mix(in srgb, var(--cal-accent) 22%, transparent) !important;
}

body.dashboard-core .fc .slfc-name{
  color:#0f172a !important;
  font-weight:850 !important;
}

body.dashboard-core .fc .slfc-icon{
    color:var(--cal-type-color, #2f7bff) !important;
    background:var(--cal-type-soft, rgba(47,123,255,.12)) !important;
    border-color:var(--cal-type-soft, rgba(47,123,255,.18)) !important;
  }

body.dashboard-core .fc .slfc-name{
    color:#0f172a !important;
    font-weight:800 !important;
  }

body.dashboard-core .fc .fc-list-event.cal-type-test .fc-list-event-time,
body.dashboard-core .fc .fc-list-event.cal-type-test .slfc-icon{
    color:#d97706 !important;
  }

body.dashboard-core .fc .fc-timegrid-event,
body.dashboard-core .fc .fc-daygrid-event{
  --cal-accent:#2f7bff;
  --cal-fill:#eef5ff;
  border:1.5px solid var(--cal-accent) !important;
  border-radius:6px !important;
  background:var(--cal-fill) !important;
  background-image:none !important;
  box-shadow:0 1px 3px rgba(15,23,42,.10) !important;
  color:#0f172a !important;
  overflow:hidden !important;
}

body.dashboard-core .fc .fc-timegrid-event .fc-event-main,
body.dashboard-core .fc .fc-daygrid-event .fc-event-main{
  padding:2px 4px !important;
  color:#0f172a !important;
}

body.dashboard-core .fc .event-completed{
  --cal-accent:#49a95a;
  --cal-fill:#eef9ef;
}

body.dashboard-core .fc .simpl-driving-test{
  --cal-accent:#e39a24;
  --cal-fill:#fff6df;
}

body.dashboard-core .fc .simpl-available{
  --cal-accent:#4b83ff;
  --cal-fill:#ffffff;
}

body.dashboard-core .fc .fc-timegrid-event.simpl-available,
body.dashboard-core .fc .fc-daygrid-event.simpl-available,
body.dashboard-core .fc .fc-timegrid-event.simpl-available .fc-event-main,
body.dashboard-core .fc .fc-daygrid-event.simpl-available .fc-event-main{
  background:#ffffff !important;
  background-image:none !important;
}

body.dashboard-core .fc .simpl-unavailable{
  --cal-accent:#d78a18;
  --cal-fill:#fff7e8;
}

body.dashboard-core .fc .event-cancelled,
body.dashboard-core .fc .event-no-show{
  --cal-accent:#94a3b8;
  --cal-fill:#f1f5f9;
  opacity:.82;
}

body.dashboard-core .fc .slfc-title{
  display:flex !important;
  flex-direction:column !important;
  align-items:flex-start !important;
  justify-content:flex-start !important;
  gap:1px !important;
  min-width:0 !important;
  width:100% !important;
  color:#0f172a !important;
  line-height:1.12 !important;
}

body.dashboard-core .fc .slfc-time{
  display:block !important;
  color:var(--cal-accent, #2f7bff) !important;
  font-size:10px !important;
  font-weight:900 !important;
  line-height:1.05 !important;
  white-space:nowrap !important;
}

body.dashboard-core .fc .slfc-name-wrap{
  display:flex !important;
  flex-direction:column !important;
  align-items:flex-start !important;
  gap:1px !important;
  min-width:0 !important;
  width:100% !important;
}

body.dashboard-core .fc .slfc-name{
  display:-webkit-box !important;
  min-width:0 !important;
  max-width:100% !important;
  overflow:hidden !important;
  -webkit-box-orient:vertical !important;
  -webkit-line-clamp:3 !important;
  white-space:normal !important;
  overflow-wrap:anywhere !important;
  text-overflow:clip !important;
  color:#0f172a !important;
  font-size:11px !important;
  font-weight:760 !important;
  line-height:1.12 !important;
  letter-spacing:-.01em !important;
}

body.dashboard-core .fc .slfc-meta{
  display:block !important;
  max-width:100% !important;
  overflow:hidden !important;
  color:#526174 !important;
  font-size:9px !important;
  font-weight:650 !important;
  line-height:1.05 !important;
  white-space:nowrap !important;
  text-overflow:ellipsis !important;
}

body.dashboard-core .fc .slfc-icon{
  display:none !important;
}

body.dashboard-core .fc .fc-list-event .slfc-title{
  display:flex !important;
  flex-direction:row !important;
  align-items:center !important;
  gap:8px !important;
}

body.dashboard-core .fc .fc-list-event .slfc-time{
  display:none !important;
}

body.dashboard-core .fc .fc-list-event .slfc-name-wrap{
  width:auto !important;
}

body.dashboard-core .fc .fc-list-event .slfc-name{
  display:block !important;
  font-size:.9rem !important;
  white-space:normal !important;
  overflow:visible !important;
}

body.dashboard-core .fc .fc-list-event .slfc-meta{
  font-size:.72rem !important;
}

@media (max-width:720px){
  body.dashboard-core .fc .fc-timegrid-event .fc-event-main,
  body.dashboard-core .fc .fc-daygrid-event .fc-event-main{
    padding:2px 3px !important;
  }

  body.dashboard-core .fc .slfc-time{
    font-size:9px !important;
  }

  body.dashboard-core .fc .slfc-name{
    font-size:10px !important;
    -webkit-line-clamp:3 !important;
  }

  body.dashboard-core .fc .slfc-meta{
    font-size:8px !important;
  }
}

/* ==========================================================================
   01. DESIGN TOKENS — SIMPLOS CORE THEME FOUNDATION

   Purpose:
   Shared theme variables for new sl-* components.
   Components below must consume these variables instead of hard-coded colours.

   Appearance hooks supported:
   - :root default
   - html[data-theme="dark"] legacy dark
   - html[data-ui-theme="cloudy-blue"]
   - html[data-ui-theme="graphite-night"]
   - html[data-ui-theme="fresh-green"]
   ========================================================================== */

:root,
html[data-ui-theme="cloudy-blue"]{
  --sl-primary:#2f7bff;
  --sl-primary-strong:#245ddb;
  --sl-primary-soft:rgba(47,123,255,.11);
  --sl-bg:#eef5fb;
  --sl-bg-soft:#dfefff;
  --sl-surface:rgba(255,255,255,.94);
  --sl-surface-soft:rgba(246,250,255,.92);
  --sl-card:#ffffff;
  --sl-card-tint:#eef8ff;
  --sl-text:#0f172a;
  --sl-text-muted:#64748b;
  --sl-border:rgba(120,146,196,.18);
  --sl-border-strong:rgba(47,123,255,.22);
  --sl-success:#16a34a;
  --sl-success-soft:rgba(34,197,94,.13);
  --sl-warning:#d97706;
  --sl-warning-soft:rgba(245,158,11,.14);
  --sl-danger:#e11d48;
  --sl-danger-soft:rgba(225,29,72,.12);
  --sl-info:#2563eb;
  --sl-info-soft:rgba(37,99,235,.12);
  --sl-radius-sm:12px;
  --sl-radius-md:16px;
  --sl-radius-lg:22px;
  --sl-radius-xl:28px;
  --sl-radius-pill:999px;
  --sl-shadow-sm:0 5px 14px rgba(15,23,42,.055);
  --sl-shadow-md:0 14px 34px rgba(15,23,42,.08);
  --sl-shadow-lg:0 22px 52px rgba(15,23,42,.12);
  --sl-page-max:980px;
  --sl-page-max-wide:1080px;
  --sl-page-pad-x:1rem;
  --sl-bottom-nav-h:var(--bottomNavH, 72px);
}

html[data-theme="dark"],
html[data-ui-theme="graphite-night"]{
  --sl-primary:#68a9ff;
  --sl-primary-strong:#3f84ff;
  --sl-primary-soft:rgba(104,169,255,.16);
  --sl-bg:#08111f;
  --sl-bg-soft:#0f1728;
  --sl-surface:rgba(18,27,46,.94);
  --sl-surface-soft:rgba(23,35,56,.92);
  --sl-card:#121b2e;
  --sl-card-tint:#172338;
  --sl-text:#eef4ff;
  --sl-text-muted:#a8b8d2;
  --sl-border:rgba(168,184,210,.16);
  --sl-border-strong:rgba(168,184,210,.24);
  --sl-success:#22c55e;
  --sl-success-soft:rgba(34,197,94,.16);
  --sl-warning:#f59e0b;
  --sl-warning-soft:rgba(245,158,11,.16);
  --sl-danger:#fb7185;
  --sl-danger-soft:rgba(251,113,133,.16);
  --sl-info:#93c5fd;
  --sl-info-soft:rgba(147,197,253,.16);
  --sl-shadow-sm:0 7px 16px rgba(0,0,0,.26);
  --sl-shadow-md:0 16px 36px rgba(0,0,0,.36);
  --sl-shadow-lg:0 24px 58px rgba(0,0,0,.48);
}

html[data-ui-theme="fresh-green"]{
  --sl-primary:#16a34a;
  --sl-primary-strong:#15803d;
  --sl-primary-soft:rgba(22,163,74,.12);
  --sl-bg:#eef8f0;
  --sl-bg-soft:#dcfce7;
  --sl-surface:rgba(255,255,255,.94);
  --sl-surface-soft:rgba(240,253,244,.92);
  --sl-card:#ffffff;
  --sl-card-tint:#f0fdf4;
  --sl-text:#102016;
  --sl-text-muted:#52635a;
  --sl-border:rgba(74,124,89,.18);
  --sl-border-strong:rgba(22,163,74,.24);
  --sl-success:#16a34a;
  --sl-success-soft:rgba(22,163,74,.13);
  --sl-warning:#d97706;
  --sl-warning-soft:rgba(245,158,11,.14);
  --sl-danger:#dc2626;
  --sl-danger-soft:rgba(220,38,38,.12);
  --sl-info:#0f766e;
  --sl-info-soft:rgba(15,118,110,.12);
}

/* ==========================================================================
   02. PAGE LAYOUT — SL FOUNDATION

   Purpose:
   Shared page shell for pages migrated away from premium.css.
   ========================================================================== */

.sl-page{
  width:100%;
  max-width:var(--sl-page-max);
  margin:0 auto 2.5rem;
  padding:16px var(--sl-page-pad-x) calc(var(--sl-bottom-nav-h) + 24px);
  box-sizing:border-box;
}

.sl-page--wide{
  max-width:var(--sl-page-max-wide);
}

.sl-page-stack{
  display:flex;
  flex-direction:column;
  gap:16px;
}

.sl-section{
  position:relative;
  z-index:1;
  width:100%;
  background:var(--sl-surface);
  color:var(--sl-text);
  border:1px solid var(--sl-border);
  border-radius:var(--sl-radius-xl);
  box-shadow:var(--sl-shadow-md);
  padding:18px;
  overflow:hidden;
}

/* ==========================================================================
   03. BUTTONS, PILLS AND SMALL STATUS ELEMENTS
   ========================================================================== */

.sl-btn{
  min-height:44px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:9px;
  padding:0 18px;
  border-radius:var(--sl-radius-md);
  border:1px solid var(--sl-border);
  background:var(--sl-card);
  color:var(--sl-text);
  text-decoration:none;
  font:inherit;
  font-size:.9rem;
  font-weight:900;
  line-height:1.1;
  cursor:pointer;
  box-shadow:var(--sl-shadow-sm);
}

.sl-btn--primary{
  border-color:var(--sl-primary-strong);
  background:linear-gradient(135deg, var(--sl-primary), var(--sl-primary-strong));
  color:#fff;
}

.sl-btn--secondary{
  border-color:var(--sl-border-strong);
  background:var(--sl-card);
  color:var(--sl-primary-strong);
}

.sl-btn--sm{
  min-height:32px;
  padding:0 12px;
  border-radius:var(--sl-radius-sm);
  font-size:.78rem;
}

.sl-pill{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  min-height:30px;
  padding:0 12px;
  border-radius:var(--sl-radius-pill);
  border:1px solid var(--sl-border);
  background:var(--sl-surface-soft);
  color:var(--sl-text-muted);
  font-size:.78rem;
  font-weight:900;
  white-space:nowrap;
}

.sl-pill--info{
  border-color:var(--sl-border-strong);
  background:var(--sl-info-soft);
  color:var(--sl-info);
}

.sl-pill--success{
  border-color:rgba(22,163,74,.22);
  background:var(--sl-success-soft);
  color:var(--sl-success);
}

.sl-pill--warning{
  border-color:rgba(217,119,6,.24);
  background:var(--sl-warning-soft);
  color:var(--sl-warning);
}

.sl-pill--danger{
  border-color:rgba(225,29,72,.22);
  background:var(--sl-danger-soft);
  color:var(--sl-danger);
}

.sl-pill--muted{
  background:var(--sl-surface-soft);
  color:var(--sl-text-muted);
}

.sl-pill--credit{
  min-width:52px;
}

.sl-status-dot{
  width:.55rem;
  height:.55rem;
  border-radius:var(--sl-radius-pill);
  background:var(--sl-primary);
  box-shadow:0 0 0 4px var(--sl-primary-soft);
}

/* ==========================================================================
   04. COMPONENT — PROGRESS RING

   Purpose:
   Reusable circular percentage indicator.
   Used by:
   - learners.php record cards
   ========================================================================== */

.sl-progress-ring{
  --p:0;
  width:58px;
  height:58px;
  flex:0 0 58px;
  border-radius:var(--sl-radius-pill);
  display:grid;
  place-items:center;
  position:relative;
  background:conic-gradient(var(--sl-primary) calc(var(--p) * 1%), rgba(226,237,249,.95) 0);
  box-shadow:inset 0 0 0 1px var(--sl-border), var(--sl-shadow-sm);
}

.sl-progress-ring::before{
  content:"";
  position:absolute;
  inset:7px;
  border-radius:var(--sl-radius-pill);
  background:var(--sl-card);
  box-shadow:inset 0 1px 2px rgba(15,23,42,.08);
}

.sl-progress-ring span{
  position:relative;
  z-index:1;
  color:var(--sl-text);
  font-size:.82rem;
  line-height:1;
  font-weight:950;
  letter-spacing:-.04em;
}

/* ==========================================================================
   05. COMPONENT — FILTER CHIPS AND SEARCH

   Purpose:
   Reusable filter/search controls for list-heavy pages.
   Used by:
   - learners.php
   ========================================================================== */

.sl-filter-chip{
  min-height:42px;
  width:100%;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  padding:0 12px;
  border-radius:var(--sl-radius-md);
  border:1px solid var(--sl-border);
  background:linear-gradient(180deg, var(--sl-card), var(--sl-surface-soft));
  color:var(--sl-text);
  font:inherit;
  font-size:.84rem;
  font-weight:900;
  line-height:1.1;
  cursor:pointer;
  box-shadow:var(--sl-shadow-sm);
}

.sl-filter-chip.is-active{
  border-color:var(--sl-primary-strong);
  background:linear-gradient(135deg, var(--sl-primary), var(--sl-primary-strong));
  color:#fff;
}

.sl-search{
  min-height:64px;
  display:flex;
  align-items:center;
  gap:12px;
  padding:12px 16px;
  border-radius:var(--sl-radius-lg);
  border:1px solid var(--sl-border);
  background:var(--sl-surface-soft);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.62);
}

.sl-search__icon{
  flex:0 0 auto;
  font-size:1.5rem;
  opacity:.78;
}

.sl-search__input{
  width:100%;
  min-width:0;
  border:0;
  outline:0;
  background:transparent;
  color:var(--sl-text);
  font:inherit;
  font-size:1rem;
  font-weight:800;
}

.sl-search__input::placeholder{
  color:var(--sl-text-muted);
}

/* ==========================================================================
   06. COMPONENT — REUSABLE RECORD CARD

   Purpose:
   Standard compact record used for learners, payments, notifications,
   diary entries, instructor lists and search results.

   Used by:
   - learners.php

   Dependencies:
   - .sl-progress-ring
   - .sl-pill
   - .sl-btn
   ========================================================================== */

.sl-record-list{
  display:flex;
  flex-direction:column;
  gap:12px;
}

.sl-record{
  position:relative;
  display:grid;
  grid-template-columns:auto minmax(0, 1fr) auto;
  align-items:center;
  gap:14px;
  min-height:102px;
  padding:14px;
  border-radius:var(--sl-radius-lg);
  border:1px solid var(--sl-border);
  background:var(--sl-card);
  color:var(--sl-text);
  box-shadow:var(--sl-shadow-sm);
  overflow:hidden;
}

.sl-record::before{
  content:"";
  position:absolute;
  left:0;
  top:12px;
  bottom:12px;
  width:4px;
  border-radius:0 var(--sl-radius-pill) var(--sl-radius-pill) 0;
  background:transparent;
}

.sl-record--warning::before{
  background:var(--sl-warning);
}

.sl-record--needs-booking::before{
  background:var(--sl-primary);
}

.sl-record--test-soon::before{
  background:#8b5cf6;
}

.sl-record--success::before{
  background:var(--sl-success);
}

.sl-record--muted{
  opacity:.84;
}

.sl-record__progress{
  position:relative;
  z-index:1;
  display:grid;
  place-items:center;
  min-width:58px;
}

.sl-record__content{
  position:relative;
  z-index:1;
  min-width:0;
  display:grid;
  gap:4px;
}

.sl-record__title-row{
  min-width:0;
  display:flex;
  align-items:center;
  gap:8px;
}

.sl-record__title{
  min-width:0;
  margin:0;
  color:var(--sl-text);
  font-size:1.05rem;
  font-weight:900;
  line-height:1.12;
  letter-spacing:-.03em;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}

.sl-record__meta{
  min-width:0;
  display:flex;
  align-items:center;
  gap:5px;
  color:var(--sl-text-muted);
  font-size:.88rem;
  font-weight:800;
  line-height:1.16;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}

.sl-record__meta--test{
  color:#0f766e;
  font-weight:900;
}

.sl-record__meta.sub-good{
  color:var(--sl-success);
}

.sl-record__meta.sub-warn{
  color:var(--sl-warning);
}

.sl-record__meta.sub-bad{
  color:var(--sl-danger);
}

.sl-record__badges{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  margin-top:4px;
}

.sl-record__aside{
  position:relative;
  z-index:1;
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:10px;
}

.sl-record__action{
  width:48px;
  height:48px;
  flex:0 0 48px;
  display:grid;
  place-items:center;
  border-radius:var(--sl-radius-md);
  text-decoration:none;
  background:transparent;
}

.sl-record__action-icon{
  width:42px;
  height:42px;
  display:block;
  object-fit:contain;
}

.sl-record__action--pulse .sl-record__action-icon{
  animation:slRecordPulse 1.6s ease-in-out infinite;
}

.sl-record__claim{
  margin:0;
}

.sl-record.is-hidden,
.sl-learner-record.is-hidden{
  display:none;
}

@keyframes slRecordPulse{
  0%,100%{ transform:scale(1); }
  50%{ transform:scale(1.10); }
}

/* ==========================================================================
   07. PAGE — LEARNERS

   Purpose:
   Page-specific layout around reusable components.
   Keep this section small; promote anything reusable to a component section.
   ========================================================================== */

.sl-learners-page{
  padding-top:10px;
}

.learners-page-panel{
  margin:0;
}

.learners-header-actions{
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  gap:10px;
  width:100%;
}

.learners-header-actions .sl-btn{
  width:100%;
  min-width:0;
}

.sl-learners-browser{
  display:grid;
  gap:16px;
  background:linear-gradient(180deg, rgba(248,252,255,.96), rgba(238,247,255,.90));
  border-color:rgba(47,123,255,.14);
}

.sl-learners-toolbar{
  display:grid;
  gap:14px;
}

.learners-section-label{
  margin:2px 0 0;
  color:var(--sl-text-muted);
  font-size:.78rem;
  font-weight:950;
  letter-spacing:.12em;
  text-transform:uppercase;
}

.learners-section-label--search{
  margin-top:4px;
}

.learner-filter-row{
  display:grid;
  grid-template-columns:repeat(3, minmax(0, 1fr));
  gap:10px;
}

.learners-browser-divider{
  height:1px;
  background:var(--sl-border);
}

.sl-learners-list-section{
  background:transparent;
  border:0;
  padding:0;
}

.learners-section-divider{
  margin:16px 0 10px;
  color:var(--sl-text);
}

.learners-section-note{
  margin-top:4px;
  color:var(--sl-text-muted);
  font-size:.86rem;
  font-weight:700;
}

.learners-load-error,
.empty-state{
  margin:0;
  color:var(--sl-text-muted);
  font-weight:800;
}

@media (max-width:720px){
  .sl-page{
    padding-left:.85rem;
    padding-right:.85rem;
  }

  .sl-section{
    padding:14px;
    border-radius:24px;
  }

  .learners-header-actions{
    gap:8px;
  }

  .learners-header-actions .sl-btn{
    min-height:42px;
    padding-left:9px;
    padding-right:9px;
    font-size:.78rem;
  }

  .learner-filter-row{
    grid-template-columns:repeat(2, minmax(0, 1fr));
    gap:9px;
  }

  .sl-filter-chip{
    min-height:40px;
    padding:0 9px;
    font-size:.76rem;
  }

  .sl-search{
    min-height:58px;
    padding:11px 14px;
  }

  .sl-record{
    grid-template-columns:58px minmax(0, 1fr) auto;
    gap:10px;
    min-height:92px;
    padding:12px 10px;
    border-radius:19px;
  }

  .sl-record__title{
    font-size:1rem;
  }

  .sl-record__meta{
    font-size:.8rem;
  }

  .sl-record__aside{
    flex-direction:column;
    align-items:flex-end;
    gap:7px;
  }

  .sl-record__action{
    width:42px;
    height:42px;
    flex-basis:42px;
  }

  .sl-record__action-icon{
    width:38px;
    height:38px;
  }

  .sl-progress-ring{
    width:52px;
    height:52px;
    flex-basis:52px;
  }

  .sl-progress-ring span{
    font-size:.78rem;
  }
}

@media (max-width:430px){
  .sl-record{
    grid-template-columns:52px minmax(0, 1fr) 46px;
  }

  .sl-pill--credit{
    min-width:44px;
    padding:0 9px;
  }
}

/* ==========================================================================
   08. PAGE — LEARNER INVITE SHEET

   Purpose:
   Bottom sheet used by learners.php invite flow.
   ========================================================================== */

.ds-ds-sheet-overlay{
  position:fixed;
  inset:0;
  z-index:9990;
  background:rgba(15,23,42,.42);
  backdrop-filter:blur(6px);
  opacity:0;
  pointer-events:none;
  transition:opacity .22s ease;
}

.ds-ds-sheet-overlay.open{
  opacity:1;
  pointer-events:auto;
}

.ds-sheet{
  position:fixed;
  left:0;
  right:0;
  bottom:0;
  z-index:9991;
  display:flex;
  justify-content:center;
  padding:0 14px calc(18px + env(safe-area-inset-bottom));
  pointer-events:none;
  transform:translateY(110%);
  transition:transform .28s cubic-bezier(.22,1,.36,1);
}

.ds-sheet.open{
  pointer-events:auto;
  transform:translateY(0);
}

.ds-sheet-card{
  width:min(100%, 560px);
  border-radius:28px;
  border:1px solid var(--sl-border);
  background:var(--sl-card);
  color:var(--sl-text);
  box-shadow:var(--sl-shadow-lg);
  overflow:hidden;
}

.ds-sheet-handle{
  width:46px;
  height:5px;
  border-radius:var(--sl-radius-pill);
  background:var(--sl-border-strong);
  margin:10px auto 4px;
}

.ds-sheet-head{
  display:flex;
  justify-content:space-between;
  gap:14px;
  padding:14px 18px 10px;
  border-bottom:1px solid var(--sl-border);
}

.ds-sheet-title{
  margin:0;
  font-size:1rem;
  font-weight:950;
}

.ds-sheet-sub{
  margin-top:3px;
  color:var(--sl-text-muted);
  font-size:.86rem;
  font-weight:700;
  line-height:1.35;
}

.ds-sheet-close{
  width:38px;
  height:38px;
  flex:0 0 38px;
  border-radius:var(--sl-radius-md);
  border:1px solid var(--sl-border);
  background:var(--sl-surface-soft);
  color:var(--sl-text);
  font-weight:950;
  cursor:pointer;
}

.ds-sheet-body{
  display:grid;
  gap:10px;
  padding:16px 18px 18px;
}

.ds-sheet-action,
.ds-sheet-cancel{
  width:100%;
  min-height:48px;
  display:flex;
  align-items:center;
  justify-content:flex-start;
  gap:12px;
  padding:10px 12px;
  border-radius:var(--sl-radius-md);
  border:1px solid var(--sl-border);
  background:var(--sl-surface-soft);
  color:var(--sl-text);
  font:inherit;
  font-weight:850;
  text-align:left;
  cursor:pointer;
}

.ds-sheet-action-icon{
  width:34px;
  height:34px;
  flex:0 0 34px;
  display:grid;
  place-items:center;
  border-radius:var(--sl-radius-md);
  background:var(--sl-primary-soft);
  color:var(--sl-primary-strong);
}

.ds-sheet-action-main{
  display:grid;
  gap:2px;
}

.ds-sheet-action-title{
  font-weight:950;
}

.ds-sheet-action-sub{
  color:var(--sl-text-muted);
  font-size:.8rem;
}

.ds-sheet-cancel{
  justify-content:center;
  color:var(--sl-text-muted);
}

.invite-toast{
  position:fixed;
  left:50%;
  bottom:92px;
  transform:translateX(-50%) translateY(12px);
  z-index:10000;
  background:var(--sl-card);
  border:1px solid var(--sl-success);
  color:var(--sl-success);
  border-radius:var(--sl-radius-pill);
  padding:10px 14px;
  font-size:13px;
  font-weight:900;
  box-shadow:var(--sl-shadow-lg);
  opacity:0;
  pointer-events:none;
  transition:opacity .18s ease, transform .18s ease;
}

.invite-toast.is-visible{
  opacity:1;
  transform:translateX(-50%) translateY(0);
}

body.invite-sheet-open{
  overflow:hidden;
}


/* Source-of-truth: primary action buttons must be blue, even without the legacy .btn base class. */
button.btn-primary,
a.btn-primary,
.btn-primary,
button.ui-btn--primary,
a.ui-btn--primary,
.ui-btn--primary{
  background:linear-gradient(135deg, var(--primary-strong, #245ddb), var(--primary, #2f7bff)) !important;
  border-color:var(--primary-strong, #245ddb) !important;
  color:#ffffff !important;
}

/* ============================================================
   LESSONS CALENDAR STATIC TOOLBAR
   One shared toolbar stays fixed while the calendar panels slide.
   ============================================================ */
.slc-calendar-toolbar{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);
  align-items:center;
  gap:10px;
  padding:10px 10px 12px;
  border-bottom:1px solid rgba(148,163,184,.22);
  background:rgba(255,255,255,.96);
  position:relative;
  z-index:8;
}

.slc-calendar-toolbar-nav,
.slc-calendar-toolbar-views{
  display:flex;
  align-items:center;
  gap:6px;
  min-width:0;
}

.slc-calendar-toolbar-views{
  justify-content:flex-end;
}

.slc-calendar-toolbar-title{
  margin:0;
  color:#0f172a;
  font-size:1.02rem;
  font-weight:900;
  line-height:1.2;
  text-align:center;
  white-space:nowrap;
}

.slc-calendar-toolbar-btn{
  min-height:32px;
  padding:5px 9px;
  border:1px solid rgba(148,163,184,.28);
  border-radius:8px;
  background:#ffffff;
  color:#334155;
  font:inherit;
  font-size:.76rem;
  font-weight:800;
  line-height:1;
  cursor:pointer;
  touch-action:manipulation;
}

.slc-calendar-toolbar-btn:active{
  transform:scale(.97);
}

.slc-calendar-toolbar-btn.is-active{
  border-color:var(--primary-strong,#245ddb);
  background:linear-gradient(135deg,var(--primary-strong,#245ddb),var(--primary,#2f7bff));
  color:#ffffff;
}

.slc-calendar-toolbar-mobile-today{ display:none; }

.slc-calendar-toolbar-arrow{
  width:32px;
  padding:0;
  font-size:1.28rem;
}

html[data-theme="dark"] .slc-calendar-toolbar{
  background:rgba(18,27,46,.96);
  border-bottom-color:rgba(168,184,210,.18);
}

html[data-theme="dark"] .slc-calendar-toolbar-title{ color:#eef4ff; }
html[data-theme="dark"] .slc-calendar-toolbar-btn{
  background:#172338;
  border-color:rgba(168,184,210,.20);
  color:#dbeafe;
}

@media (max-width:720px){
  .slc-calendar-toolbar{
    grid-template-columns:auto minmax(0,1fr);
    grid-template-areas:
      "nav title"
      "views views";
    column-gap:10px;
    row-gap:5px;
    padding:9px 4px 10px;
  }

  .slc-calendar-toolbar-nav{
    grid-area:nav;
  }

  .slc-calendar-toolbar-title{
    grid-area:title;
    min-width:0;
    font-size:.98rem;
    text-align:right;
    white-space:nowrap;
    overflow:visible;
    text-overflow:clip;
  }

  .slc-calendar-toolbar-views{
    grid-area:views;
    width:100%;
    justify-content:stretch;
    gap:7px;
  }

  .slc-calendar-toolbar-views .slc-calendar-toolbar-btn{
    flex:1 1 0;
  display:flex;
    align-items:center;
    justify-content:center;
    text-align:center;
  }

  .slc-calendar-toolbar-btn{
    min-height:32px;
    padding:4px 8px;
    font-size:.72rem;
  }

  .slc-calendar-toolbar-arrow{
    width:31px;
    flex:0 0 31px;
    padding:0;
    font-size:1.14rem;
  }

  .slc-calendar-toolbar-today{ display:none; }
  .slc-calendar-toolbar-mobile-today{ display:inline-flex; }
  .slc-calendar-toolbar-desktop-only{ display:none; }
}

/* ============================================================
   LESSONS CALENDAR GESTURES
   Swipe navigation, long-press selection, drag/drop rescheduling
   Source: lessons-calendar.php
   ============================================================ */
.slc-calendar-viewport{
  width:100%;
  min-width:0;
  overflow:hidden;
  touch-action:pan-y;
  position:relative;
  contain:layout paint;
}

.slc-calendar-track{
  display:flex;
  width:300%;
  transform:translate3d(-33.333333%,0,0);
}

.slc-calendar-track.is-animating{
  transition:transform .34s cubic-bezier(.22,.72,.25,1);
  will-change:transform;
}

body.slc-is-swiping-calendar .slc-calendar-track{
  will-change:transform;
}

.slc-calendar-panel{
  flex:0 0 33.333333%;
  width:33.333333%;
  min-width:0;
  overflow:hidden;
}

.slc-calendar-panel--preview{
  pointer-events:none;
  user-select:none;
  -webkit-user-select:none;
}

.slc-calendar-panel > div{
  min-width:0;
  position:relative;
}

body.slc-is-swiping-calendar,
body.slc-is-swiping-calendar *{
  cursor:grabbing !important;
}

body.slc-is-swiping-calendar .slc-calendar-track{
  user-select:none;
  -webkit-user-select:none;
}

.slc-page #calendar{
  position:relative;
}

.slc-page #calendar.slc-calendar-busy::after{
  content:"Updating lesson…";
  position:absolute;
  inset:0;
  z-index:20;
  display:grid;
  place-items:center;
  font-weight:900;
  color:var(--primary-strong, #245ddb);
  background:rgba(248,250,252,.68);
  backdrop-filter:blur(3px);
  -webkit-backdrop-filter:blur(3px);
  border-radius:18px;
}

.slc-page .fc .fc-timegrid-slot{
  min-height: 48px;
}

.slc-page .fc .fc-event{
  min-height: 44px;
  cursor: pointer;
  touch-action: none;
}

.slc-page .fc .fc-highlight{
  background: rgba(47,123,255,.16);
  border: 1px solid rgba(47,123,255,.32);
}

body.slc-is-dragging-lesson .fc-event.fc-event-dragging,
body.slc-is-dragging-lesson .fc-event.fc-event-resizing{
  box-shadow: 0 20px 44px rgba(15,23,42,.24);
  transform: scale(1.035);
  opacity: .94;
  transition: transform .14s ease, box-shadow .14s ease, opacity .14s ease, background-color .12s ease, border-color .12s ease;
  will-change: transform;
}

/* Collision feedback while moving a lesson across another lesson. */
body.slc-is-dragging-lesson.slc-drag-conflict .fc-event.fc-event-dragging,
body.slc-is-dragging-lesson.slc-drag-conflict .fc-event.fc-event-resizing,
body.slc-is-dragging-lesson.slc-drag-conflict .fc-event.fc-event-mirror{
  background: linear-gradient(135deg, #dc2626, #ef4444) !important;
  border-color: #b91c1c !important;
  color: #ffffff !important;
  box-shadow: 0 20px 46px rgba(220,38,38,.34), 0 0 0 3px rgba(239,68,68,.20) !important;
}

body.slc-is-dragging-lesson.slc-drag-conflict .fc-event.fc-event-dragging *,
body.slc-is-dragging-lesson.slc-drag-conflict .fc-event.fc-event-resizing *,
body.slc-is-dragging-lesson.slc-drag-conflict .fc-event.fc-event-mirror *{
  color: #ffffff !important;
}

.slc-action-sheet{
  position: fixed;
  inset: 0;
  z-index: 9999;
  pointer-events: none;
}

.slc-action-sheet.is-open{
  pointer-events: auto;
}

.slc-action-sheet-backdrop{
  position: absolute;
  inset: 0;
  background: rgba(15,23,42,.32);
  opacity: 0;
  transition: opacity .22s ease;
}

.slc-action-sheet.is-open .slc-action-sheet-backdrop{
  opacity: 1;
}

.slc-action-sheet-panel{
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  width: min(100%, 560px);
  margin: 0 auto;
  padding: 12px 16px calc(18px + env(safe-area-inset-bottom, 0px));
  border-radius: 24px 24px 0 0;
  border: 1px solid rgba(219,228,255,.95);
  background: rgba(255,255,255,.98);
  box-shadow: 0 -18px 44px rgba(15,23,42,.18);
  transform: translateY(105%);
  transition: transform .24s ease;
}

.slc-action-sheet.is-open .slc-action-sheet-panel{
  transform: translateY(0);
}

.slc-action-sheet-handle{
  width: 46px;
  height: 5px;
  margin: 0 auto 12px;
  border-radius: 999px;
  background: rgba(100,116,139,.34);
}

.slc-action-sheet-kicker{
  margin: 0 0 4px;
  color: var(--primary-strong, #245ddb);
  font-size: .82rem;
  font-weight: 900;
}

.slc-action-sheet-title{
  margin: 0;
  color: #0f172a;
  font-size: 1.15rem;
  line-height: 1.2;
}

.slc-action-sheet-meta{
  margin: 5px 0 14px;
  color: #64748b;
  font-size: .9rem;
}

.slc-action-sheet-actions{
  display: grid;
  gap: 10px;
}

.slc-sheet-btn{
  min-height: 46px;
  border-radius: 16px;
  width: 100%;
}

@media (max-width: 720px){
  .slc-page .fc .fc-toolbar{
    gap: 8px;
  }

  .slc-page .fc .fc-toolbar-title{
    font-size: 1rem;
  }

  .slc-page .fc .fc-button{
    min-height: 38px;
    padding: .35rem .5rem;
  }

  .slc-page .fc .fc-timegrid-axis,
  .slc-page .fc .fc-timegrid-slot-label{
    font-size: .72rem;
  }
}


/* JS-controlled dashboard cards must stay hidden until their scripts explicitly reveal them. */
body.dashboard-page #pushEnableCard[hidden],
body.dashboard-page #pwaInstallCard[hidden],
body.dashboard-page .push-enable-card[hidden]{
  display:none !important;
}

/* ============================================================
   SimpLOS Panel Engine v7
   Reversible: remove this complete section and disable the footer flag.
   ============================================================ */
html.simpl-panel-engine-enabled,
html.simpl-panel-engine-enabled body{
  overscroll-behavior-x:none;
}

html.simpl-panel-gesture-active,
html.simpl-panel-gesture-active body{
  overflow-x:hidden !important;
  touch-action:pan-y;
}

.simpl-panel-current-stage{
  touch-action:pan-y;
  -ms-touch-action:pan-y;
  position:relative;
  z-index:3;
  min-height:100vh;
  background:inherit;
}

.simpl-panel-current-stage.is-panel-dragging{
  transform:translate3d(var(--simpl-panel-x,0px),0,0);
  transition:none !important;
  will-change:transform;
  user-select:none;
  -webkit-user-select:none;
}

.simpl-panel-current-stage.is-panel-settling{
  transform:translate3d(var(--simpl-panel-x,0px),0,0);
  transition:transform var(--simpl-panel-settle-ms,245ms) cubic-bezier(.22,.78,.24,1) !important;
  will-change:transform;
  pointer-events:none;
}

.simpl-panel-neighbour{
  position:fixed;
  inset:0 0 calc(var(--bottomNavH,72px) + env(safe-area-inset-bottom,0px)) 0;
  z-index:2;
  overflow:hidden auto;
  background:var(--bg,#eef2ff);
  visibility:hidden;
  pointer-events:none;
  transform:translate3d(var(--simpl-neighbour-x,100vw),0,0);
  contain:layout paint;
}

.simpl-panel-neighbour.is-visible{
  visibility:visible;
}

.simpl-panel-neighbour.is-panel-settling{
  transition:transform var(--simpl-panel-settle-ms,245ms) cubic-bezier(.22,.78,.24,1) !important;
  will-change:transform;
}

.simpl-panel-neighbour__page{
  min-height:100%;
  background:inherit;
}

.simpl-panel-neighbour__page .premium-footer-nav,
.simpl-panel-neighbour__page script{
  display:none !important;
}

.simpl-panel-neighbour__loading{
  min-height:100%;
  display:grid;
  place-items:center;
}

.simpl-panel-neighbour__spinner{
  width:34px;
  height:34px;
  border-radius:50%;
  border:3px solid rgba(47,123,255,.16);
  border-top-color:var(--primary,#2f7bff);
  animation:simplPanelSpin .7s linear infinite;
}

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

/* Keep the shared bottom navigation above both moving panels. */
.premium-footer-nav{
  z-index:10020 !important;
}

@media (prefers-reduced-motion:reduce){
  .simpl-panel-current-stage.is-panel-settling,
  .simpl-panel-neighbour.is-panel-settling{
    transition-duration:1ms !important;
  }
}

/* ============================================================
   CALENDAR COMPLETED LESSONS — OUTLINE + TICK
   Cosmetic only: preserve each lesson's vehicle colour while
   removing its fill once completed.
   ============================================================ */
body.dashboard-core .fc .fc-timegrid-event.event-completed,
body.dashboard-core .fc .fc-daygrid-event.event-completed{
  --cal-fill:#ffffff !important;
  background:#ffffff !important;
  background-image:none !important;
  border-color:var(--cal-accent, #2f7bff) !important;
  color:#0f172a !important;
  opacity:1 !important;
}

body.dashboard-core .fc .fc-timegrid-event.event-completed .fc-event-main,
body.dashboard-core .fc .fc-daygrid-event.event-completed .fc-event-main{
  position:relative !important;
  background:#ffffff !important;
  background-image:none !important;
  color:#0f172a !important;
  padding-right:22px !important;
}

/* Restore the vehicle accent after older completed-state rules. */
body.dashboard-core .fc .event-completed.simpl-vehicle-manual{
  --cal-accent:#2f7bff !important;
}
body.dashboard-core .fc .event-completed.simpl-vehicle-automatic{
  --cal-accent:#16a34a !important;
}
body.dashboard-core .fc .event-completed.simpl-vehicle-adapted{
  --cal-accent:#8b5cf6 !important;
}
body.dashboard-core .fc .event-completed.simpl-vehicle-any{
  --cal-accent:#64748b !important;
}
body.dashboard-core .fc .event-completed.simpl-driving-test{
  --cal-accent:#e39a24 !important;
}

body.dashboard-core .fc .event-completed .slfc-time{
  color:var(--cal-accent, #2f7bff) !important;
  opacity:.88 !important;
}

body.dashboard-core .fc .event-completed .slfc-name{
  color:#0f172a !important;
}

body.dashboard-core .fc .event-completed .slfc-meta{
  color:#64748b !important;
}

body.dashboard-core .fc .event-completed .slfc-completed-check{
  position:absolute !important;
  top:5px !important;
  right:5px !important;
  left:auto !important;
  width:17px !important;
  height:17px !important;
  display:grid !important;
  place-items:center !important;
  border:0 !important;
  border-radius:999px !important;
  background:#ffffff !important;
  color:#16a34a !important;
  font-size:16px !important;
  font-weight:950 !important;
  line-height:1 !important;
  box-shadow:none !important;
  z-index:3 !important;
}

/* List view keeps a white row, its vehicle-colour edge, and a tick. */
body.dashboard-core .fc .fc-list-event.event-completed > td{
  background:#ffffff !important;
  background-image:none !important;
  color:#0f172a !important;
  opacity:1 !important;
}

body.dashboard-core .fc .fc-list-event.event-completed > td:first-child{
  border-left:4px solid var(--cal-type-color, var(--cal-accent, #2f7bff)) !important;
}

body.dashboard-core .fc .fc-list-event.event-completed .fc-list-event-title{
  position:relative !important;
  padding-right:34px !important;
}

body.dashboard-core .fc .fc-list-event.event-completed .slfc-completed-check{
  top:50% !important;
  right:10px !important;
  transform:translateY(-50%) !important;
}


/* ============================================================
   CALENDAR VEHICLE COLOURS — FINAL AUTHORITATIVE LAYER
   Vehicle type controls the accent/fill for active lessons.
   Completed state keeps that accent, switches to white, and shows ✓.
   ============================================================ */

/* Manual */
body.dashboard-core .fc .fc-timegrid-event.simpl-vehicle-manual:not(.event-completed):not(.simpl-driving-test),
body.dashboard-core .fc .fc-daygrid-event.simpl-vehicle-manual:not(.event-completed):not(.simpl-driving-test){
  --cal-accent:#2f7bff !important;
  background:linear-gradient(180deg, rgba(239,246,255,.98), rgba(232,241,255,.96)) !important;
  border-color:#2f7bff !important;
}

/* Automatic */
body.dashboard-core .fc .fc-timegrid-event.simpl-vehicle-automatic:not(.event-completed):not(.simpl-driving-test),
body.dashboard-core .fc .fc-daygrid-event.simpl-vehicle-automatic:not(.event-completed):not(.simpl-driving-test){
  --cal-accent:#16a34a !important;
  background:linear-gradient(180deg, rgba(240,253,244,.98), rgba(232,248,237,.96)) !important;
  border-color:#16a34a !important;
}

/* Adapted */
body.dashboard-core .fc .fc-timegrid-event.simpl-vehicle-adapted:not(.event-completed):not(.simpl-driving-test),
body.dashboard-core .fc .fc-daygrid-event.simpl-vehicle-adapted:not(.event-completed):not(.simpl-driving-test){
  --cal-accent:#8b5cf6 !important;
  background:linear-gradient(180deg, rgba(250,245,255,.98), rgba(244,237,255,.96)) !important;
  border-color:#8b5cf6 !important;
}

/* Keep FullCalendar's inner layer transparent so the card colour remains visible. */
body.dashboard-core .fc .fc-timegrid-event.simpl-vehicle-manual:not(.event-completed):not(.simpl-driving-test) .fc-event-main,
body.dashboard-core .fc .fc-daygrid-event.simpl-vehicle-manual:not(.event-completed):not(.simpl-driving-test) .fc-event-main,
body.dashboard-core .fc .fc-timegrid-event.simpl-vehicle-automatic:not(.event-completed):not(.simpl-driving-test) .fc-event-main,
body.dashboard-core .fc .fc-daygrid-event.simpl-vehicle-automatic:not(.event-completed):not(.simpl-driving-test) .fc-event-main,
body.dashboard-core .fc .fc-timegrid-event.simpl-vehicle-adapted:not(.event-completed):not(.simpl-driving-test) .fc-event-main,
body.dashboard-core .fc .fc-daygrid-event.simpl-vehicle-adapted:not(.event-completed):not(.simpl-driving-test) .fc-event-main{
  background:transparent !important;
}

/* Vehicle-coloured text accents for active lessons. */
body.dashboard-core .fc .simpl-vehicle-manual:not(.event-completed):not(.simpl-driving-test) .slfc-time{
  color:#2563eb !important;
}
body.dashboard-core .fc .simpl-vehicle-automatic:not(.event-completed):not(.simpl-driving-test) .slfc-time,
body.dashboard-core .fc .simpl-vehicle-automatic:not(.event-completed):not(.simpl-driving-test) .slfc-icon{
  color:#15803d !important;
}
body.dashboard-core .fc .simpl-vehicle-adapted:not(.event-completed):not(.simpl-driving-test) .slfc-time,
body.dashboard-core .fc .simpl-vehicle-adapted:not(.event-completed):not(.simpl-driving-test) .slfc-icon{
  color:#7c3aed !important;
}

/* List view uses the same active vehicle colours. */
body.dashboard-core .fc .fc-list-event.simpl-vehicle-manual:not(.event-completed):not(.simpl-driving-test) > td{
  background:#eff6ff !important;
}
body.dashboard-core .fc .fc-list-event.simpl-vehicle-automatic:not(.event-completed):not(.simpl-driving-test) > td{
  background:#f0fdf4 !important;
}
body.dashboard-core .fc .fc-list-event.simpl-vehicle-adapted:not(.event-completed):not(.simpl-driving-test) > td{
  background:#faf5ff !important;
}
body.dashboard-core .fc .fc-list-event.simpl-vehicle-manual:not(.event-completed):not(.simpl-driving-test) > td:first-child{
  border-left:4px solid #2f7bff !important;
}
body.dashboard-core .fc .fc-list-event.simpl-vehicle-automatic:not(.event-completed):not(.simpl-driving-test) > td:first-child{
  border-left:4px solid #16a34a !important;
}
body.dashboard-core .fc .fc-list-event.simpl-vehicle-adapted:not(.event-completed):not(.simpl-driving-test) > td:first-child{
  border-left:4px solid #8b5cf6 !important;
}

/* Completed cards: preserve vehicle border, remove fill, keep the green tick. */
body.dashboard-core .fc .fc-timegrid-event.event-completed,
body.dashboard-core .fc .fc-daygrid-event.event-completed{
  background:#ffffff !important;
  background-image:none !important;
  border-color:var(--cal-accent, #2f7bff) !important;
}
body.dashboard-core .fc .event-completed.simpl-vehicle-manual{ --cal-accent:#2f7bff !important; }
body.dashboard-core .fc .event-completed.simpl-vehicle-automatic{ --cal-accent:#16a34a !important; }
body.dashboard-core .fc .event-completed.simpl-vehicle-adapted{ --cal-accent:#8b5cf6 !important; }
body.dashboard-core .fc .event-completed.simpl-driving-test{ --cal-accent:#e39a24 !important; }

/* ============================================================
   COMPLETED VEHICLE BORDER COLOURS — FINAL SPECIFIC FIX
   Keep completed cards white while preserving each vehicle border.
   This overrides older completed rules that grouped automatic and
   adapted lessons under the same green border.
   ============================================================ */
body.dashboard-core .fc .fc-timegrid-event.event-completed.simpl-vehicle-manual,
body.dashboard-core .fc .fc-daygrid-event.event-completed.simpl-vehicle-manual{
  border-color:#2f7bff !important;
}

body.dashboard-core .fc .fc-timegrid-event.event-completed.simpl-vehicle-automatic,
body.dashboard-core .fc .fc-daygrid-event.event-completed.simpl-vehicle-automatic{
  border-color:#16a34a !important;
}

body.dashboard-core .fc .fc-timegrid-event.event-completed.simpl-vehicle-adapted,
body.dashboard-core .fc .fc-daygrid-event.event-completed.simpl-vehicle-adapted{
  border-color:#8b5cf6 !important;
}

body.dashboard-core .fc .fc-timegrid-event.event-completed.simpl-driving-test,
body.dashboard-core .fc .fc-daygrid-event.event-completed.simpl-driving-test{
  border-color:#e39a24 !important;
}

body.dashboard-core .fc .fc-list-event.event-completed.simpl-vehicle-manual > td:first-child{
  border-left-color:#2f7bff !important;
}
body.dashboard-core .fc .fc-list-event.event-completed.simpl-vehicle-automatic > td:first-child{
  border-left-color:#16a34a !important;
}
body.dashboard-core .fc .fc-list-event.event-completed.simpl-vehicle-adapted > td:first-child{
  border-left-color:#8b5cf6 !important;
}
body.dashboard-core .fc .fc-list-event.event-completed.simpl-driving-test > td:first-child{
  border-left-color:#e39a24 !important;
}


/* ============================================================
   UNAVAILABILITY COLOURS — HOLIDAY VS OTHER BLOCKED TIME
   Cosmetic only. Lesson, test, availability and completed-event
   colours remain controlled by their existing classes above.
   ============================================================ */

/* Holiday / annual leave: soft sand card, clearly separate from tests. */
body.dashboard-core .fc .fc-timegrid-event.simpl-unavailable.simpl-holiday,
body.dashboard-core .fc .fc-daygrid-event.simpl-unavailable.simpl-holiday{
  --cal-accent:#d6b25e !important;
  background:linear-gradient(180deg, #fffaf0, #fff6df) !important;
  background-image:none !important;
  border-color:#d6b25e !important;
  color:#7a5a14 !important;
}

body.dashboard-core .fc .simpl-unavailable.simpl-holiday .fc-event-main{
  background:transparent !important;
  color:#7a5a14 !important;
}

body.dashboard-core .fc .simpl-unavailable.simpl-holiday .slfc-title,
body.dashboard-core .fc .simpl-unavailable.simpl-holiday .slfc-time,
body.dashboard-core .fc .simpl-unavailable.simpl-holiday .slfc-name,
body.dashboard-core .fc .simpl-unavailable.simpl-holiday .slfc-meta,
body.dashboard-core .fc .simpl-unavailable.simpl-holiday a{
  color:#7a5a14 !important;
}

/* Meeting, appointment, garage, personal and other blocked time. */
body.dashboard-core .fc .fc-timegrid-event.simpl-unavailable.simpl-blocked-time,
body.dashboard-core .fc .fc-daygrid-event.simpl-unavailable.simpl-blocked-time{
  --cal-accent:#64748b !important;
  background:linear-gradient(180deg, #f8fafc, #f1f5f9) !important;
  background-image:none !important;
  border-color:#94a3b8 !important;
  color:#334155 !important;
}

body.dashboard-core .fc .simpl-unavailable.simpl-blocked-time .fc-event-main{
  background:transparent !important;
  color:#334155 !important;
}

body.dashboard-core .fc .simpl-unavailable.simpl-blocked-time .slfc-title,
body.dashboard-core .fc .simpl-unavailable.simpl-blocked-time .slfc-time,
body.dashboard-core .fc .simpl-unavailable.simpl-blocked-time .slfc-name,
body.dashboard-core .fc .simpl-unavailable.simpl-blocked-time .slfc-meta,
body.dashboard-core .fc .simpl-unavailable.simpl-blocked-time a{
  color:#334155 !important;
}

/* Matching list-view rows. */
body.dashboard-core .fc .fc-list-event.simpl-unavailable.simpl-holiday > td{
  background:#fff8e8 !important;
  color:#7a5a14 !important;
}
body.dashboard-core .fc .fc-list-event.simpl-unavailable.simpl-holiday > td:first-child{
  border-left:4px solid #d6b25e !important;
}
body.dashboard-core .fc .fc-list-event.simpl-unavailable.simpl-blocked-time > td{
  background:#f4f5f7 !important;
  color:#334155 !important;
}
body.dashboard-core .fc .fc-list-event.simpl-unavailable.simpl-blocked-time > td:first-child{
  border-left:4px solid #94a3b8 !important;
}


/* Final unavailability safeguard.
   These rules intentionally sit last so legacy lesson colour rules cannot
   repaint holiday or blocked-time events blue. */
body.dashboard-core .fc .simpl-unavailable.simpl-holiday,
body.dashboard-core .fc .fc-timegrid-event.simpl-unavailable.simpl-holiday,
body.dashboard-core .fc .fc-daygrid-event.simpl-unavailable.simpl-holiday,
body.dashboard-core .fc .fc-list-event.simpl-unavailable.simpl-holiday > td{
  --cal-accent:#d6b25e !important;
  background:#fff8e8 !important;
  background-image:none !important;
  border-color:#d6b25e !important;
  color:#7a5a14 !important;
}

body.dashboard-core .fc .simpl-unavailable.simpl-blocked-time,
body.dashboard-core .fc .fc-timegrid-event.simpl-unavailable.simpl-blocked-time,
body.dashboard-core .fc .fc-daygrid-event.simpl-unavailable.simpl-blocked-time,
body.dashboard-core .fc .fc-list-event.simpl-unavailable.simpl-blocked-time > td{
  --cal-accent:#64748b !important;
  background:#f4f5f7 !important;
  background-image:none !important;
  border-color:#94a3b8 !important;
  color:#334155 !important;
}

body.dashboard-core .fc .simpl-unavailable.simpl-holiday .fc-event-main,
body.dashboard-core .fc .simpl-unavailable.simpl-holiday .slfc-title,
body.dashboard-core .fc .simpl-unavailable.simpl-holiday .slfc-time,
body.dashboard-core .fc .simpl-unavailable.simpl-holiday .slfc-name,
body.dashboard-core .fc .simpl-unavailable.simpl-holiday .slfc-meta,
body.dashboard-core .fc .simpl-unavailable.simpl-holiday a{
  background:transparent !important;
  color:#7a5a14 !important;
}

body.dashboard-core .fc .simpl-unavailable.simpl-blocked-time .fc-event-main,
body.dashboard-core .fc .simpl-unavailable.simpl-blocked-time .slfc-title,
body.dashboard-core .fc .simpl-unavailable.simpl-blocked-time .slfc-time,
body.dashboard-core .fc .simpl-unavailable.simpl-blocked-time .slfc-name,
body.dashboard-core .fc .simpl-unavailable.simpl-blocked-time .slfc-meta,
body.dashboard-core .fc .simpl-unavailable.simpl-blocked-time a{
  background:transparent !important;
  color:#334155 !important;
}

/* ============================================================
   Mobile completed lesson tick placement
   Cosmetic only: keep event data and calendar behaviour unchanged.
   ============================================================ */
@media (max-width: 720px){
  body.dashboard-core .fc .fc-timegrid-event.event-completed .slfc-title,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .slfc-title{
    position:relative !important;
    padding-bottom:20px !important;
  }

  body.dashboard-core .fc .fc-timegrid-event.event-completed .slfc-completed-check,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .slfc-completed-check{
    left:50% !important;
    right:auto !important;
    top:auto !important;
    bottom:2px !important;
    transform:translateX(-50%) !important;
    width:auto !important;
    height:auto !important;
    min-width:0 !important;
    padding:0 !important;
    border:0 !important;
    border-radius:0 !important;
    background:transparent !important;
    box-shadow:none !important;
    color:#16a34a !important;
    font-size:16px !important;
    font-weight:950 !important;
    line-height:1 !important;
    z-index:3 !important;
    pointer-events:none !important;
  }
}

/* ============================================================
   MOBILE COMPLETED LESSON CONTENT WIDTH FIX
   The tick now sits at the bottom, so completed cards no longer
   need the desktop right-side space reserved for it.
   ============================================================ */
@media (max-width: 720px){
  body.dashboard-core .fc .fc-timegrid-event.event-completed .fc-event-main,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .fc-event-main{
    padding-right:2px !important;
  }

  body.dashboard-core .fc .fc-timegrid-event.event-completed .slfc-title,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .slfc-title{
    padding-right:0 !important;
  }
}

/* ============================================================
   MOBILE COMPLETED LESSON DETAILS — FINAL FIX
   Keep the completion tick out of the lesson-content layout so
   completed cards use the same text width and wrapping as normal cards.
   ============================================================ */
@media (max-width:720px){
  body.dashboard-core .fc .fc-timegrid-event.event-completed .fc-event-main,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .fc-event-main{
    position:relative !important;
    padding:2px 3px 15px !important;
  }

  body.dashboard-core .fc .fc-timegrid-event.event-completed .slfc-title,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .slfc-title{
    position:static !important;
    width:100% !important;
    padding:0 !important;
  }

  body.dashboard-core .fc .fc-timegrid-event.event-completed .slfc-name-wrap,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .slfc-name-wrap{
    width:100% !important;
    min-width:0 !important;
  }

  body.dashboard-core .fc .fc-timegrid-event.event-completed .slfc-name,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .slfc-name{
    width:100% !important;
    max-width:100% !important;
    word-break:normal !important;
    overflow-wrap:break-word !important;
    hyphens:none !important;
  }

  body.dashboard-core .fc .fc-timegrid-event.event-completed .slfc-completed-check,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .slfc-completed-check{
    position:absolute !important;
    left:50% !important;
    right:auto !important;
    top:auto !important;
    bottom:1px !important;
    transform:translateX(-50%) !important;
    margin:0 !important;
  }
}

/* ============================================================
   MOBILE COMPLETED LESSON — MATCH NORMAL LESSON DETAIL WIDTH
   The time, learner details and completion tick each use their own row.
   This prevents the tick from taking any horizontal space from the name.
   ============================================================ */
@media (max-width:720px){
  body.dashboard-core .fc .fc-timegrid-event.event-completed .fc-event-main,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .fc-event-main{
    padding:2px 3px !important;
  }

  body.dashboard-core .fc .fc-timegrid-event.event-completed .slfc-title,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .slfc-title{
    position:relative !important;
    display:grid !important;
    grid-template-columns:minmax(0, 1fr) !important;
    grid-template-areas:
      "completed-time"
      "completed-details"
      "completed-check" !important;
    align-items:start !important;
    justify-items:stretch !important;
    gap:1px !important;
    width:100% !important;
    min-width:0 !important;
    padding:0 !important;
  }

  body.dashboard-core .fc .fc-timegrid-event.event-completed .slfc-time,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .slfc-time{
    grid-area:completed-time !important;
    width:100% !important;
    min-width:0 !important;
  }

  body.dashboard-core .fc .fc-timegrid-event.event-completed .slfc-name-wrap,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .slfc-name-wrap{
    grid-area:completed-details !important;
    display:flex !important;
    flex-direction:column !important;
    align-items:flex-start !important;
    width:100% !important;
    min-width:0 !important;
    max-width:none !important;
    padding:0 !important;
    margin:0 !important;
  }

  body.dashboard-core .fc .fc-timegrid-event.event-completed .slfc-name,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .slfc-name{
    display:-webkit-box !important;
    width:100% !important;
    min-width:0 !important;
    max-width:100% !important;
    overflow:hidden !important;
    -webkit-box-orient:vertical !important;
    -webkit-line-clamp:3 !important;
    white-space:normal !important;
    word-break:normal !important;
    overflow-wrap:anywhere !important;
    hyphens:none !important;
  }

  body.dashboard-core .fc .fc-timegrid-event.event-completed .slfc-meta,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .slfc-meta{
    width:100% !important;
    min-width:0 !important;
    max-width:100% !important;
  }

  body.dashboard-core .fc .fc-timegrid-event.event-completed .slfc-icon,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .slfc-icon{
    display:none !important;
  }

  body.dashboard-core .fc .fc-timegrid-event.event-completed .slfc-completed-check,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .slfc-completed-check{
    grid-area:completed-check !important;
    position:static !important;
    display:block !important;
    justify-self:center !important;
    align-self:end !important;
    width:auto !important;
    height:auto !important;
    min-width:0 !important;
    margin:3px 0 1px !important;
    padding:0 !important;
    transform:none !important;
    border:0 !important;
    background:transparent !important;
    box-shadow:none !important;
    color:#16a34a !important;
    font-size:16px !important;
    font-weight:950 !important;
    line-height:1 !important;
  }
}

/* ============================================================
   MOBILE COMPLETED LESSONS — USE THE EXACT SCHEDULED CARD LAYOUT
   The old completion badge lived inside .slfc-icon, a 22px flex item.
   That reduced the learner-detail width. On mobile, remove that item
   completely and draw the tick independently at the bottom.
   ============================================================ */
@media (max-width:720px){
  body.dashboard-core .fc .fc-timegrid-event.event-completed .fc-event-main,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .fc-event-main{
    position:relative !important;
    padding:2px 3px 18px !important;
  }

  /* Match the same content structure used by scheduled lessons. */
  body.dashboard-core .fc .fc-timegrid-event.event-completed .slfc-title,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .slfc-title{
    position:static !important;
    display:flex !important;
    flex-direction:column !important;
    align-items:flex-start !important;
    justify-content:flex-start !important;
    gap:1px !important;
    width:100% !important;
    min-width:0 !important;
    padding:0 !important;
    margin:0 !important;
  }

  body.dashboard-core .fc .fc-timegrid-event.event-completed .slfc-time,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .slfc-time,
  body.dashboard-core .fc .fc-timegrid-event.event-completed .slfc-name-wrap,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .slfc-name-wrap,
  body.dashboard-core .fc .fc-timegrid-event.event-completed .slfc-name,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .slfc-name,
  body.dashboard-core .fc .fc-timegrid-event.event-completed .slfc-meta,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .slfc-meta{
    width:100% !important;
    min-width:0 !important;
    max-width:100% !important;
  }

  /* Remove the 22px badge column that scheduled lessons do not use. */
  body.dashboard-core .fc .fc-timegrid-event.event-completed .slfc-icon,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .slfc-icon,
  body.dashboard-core .fc .fc-timegrid-event.event-completed .slfc-completed-check,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .slfc-completed-check{
    display:none !important;
  }

  /* Independent completion marker: no horizontal layout space used. */
  body.dashboard-core .fc .fc-timegrid-event.event-completed .fc-event-main::after,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .fc-event-main::after{
    content:"✓" !important;
    position:absolute !important;
    left:50% !important;
    right:auto !important;
    top:auto !important;
    bottom:1px !important;
    transform:translateX(-50%) !important;
    display:block !important;
    width:auto !important;
    height:auto !important;
    margin:0 !important;
    padding:0 !important;
    border:0 !important;
    background:transparent !important;
    color:#16a34a !important;
    font-size:16px !important;
    font-weight:950 !important;
    line-height:1 !important;
    pointer-events:none !important;
    z-index:4 !important;
  }
}

/* ============================================================
   MOBILE COMPLETED LESSON TEXT — MATCH SCHEDULED USABLE WIDTH
   The completed card uses the same event padding as scheduled cards.
   Prevent the learner name from breaking between individual letters;
   truncate it cleanly instead. The tick is painted independently.
   ============================================================ */
@media (max-width:720px){
  body.dashboard-core .fc .fc-timegrid-event.event-completed,
  body.dashboard-core .fc .fc-daygrid-event.event-completed{
    border-width:1.5px !important;
  }

  body.dashboard-core .fc .fc-timegrid-event.event-completed .fc-event-main,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .fc-event-main{
    position:relative !important;
    padding:2px 4px 18px !important;
    overflow:hidden !important;
  }

  body.dashboard-core .fc .fc-timegrid-event.event-completed .slfc-title,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .slfc-title{
    display:flex !important;
    flex-direction:column !important;
    align-items:stretch !important;
    gap:1px !important;
    width:100% !important;
    min-width:0 !important;
    padding:0 !important;
    margin:0 !important;
  }

  body.dashboard-core .fc .fc-timegrid-event.event-completed .slfc-name-wrap,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .slfc-name-wrap{
    display:block !important;
    width:100% !important;
    min-width:0 !important;
    max-width:100% !important;
    overflow:hidden !important;
  }

  body.dashboard-core .fc .fc-timegrid-event.event-completed .slfc-name,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .slfc-name{
    display:block !important;
    width:100% !important;
    min-width:0 !important;
    max-width:100% !important;
    overflow:hidden !important;
    white-space:nowrap !important;
    word-break:keep-all !important;
    overflow-wrap:normal !important;
    hyphens:none !important;
    text-overflow:ellipsis !important;
    -webkit-line-clamp:unset !important;
    -webkit-box-orient:initial !important;
  }

  body.dashboard-core .fc .fc-timegrid-event.event-completed .slfc-meta,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .slfc-meta{
    display:block !important;
    width:100% !important;
    min-width:0 !important;
    max-width:100% !important;
    overflow:hidden !important;
    white-space:nowrap !important;
    text-overflow:ellipsis !important;
  }

  body.dashboard-core .fc .fc-timegrid-event.event-completed .slfc-icon,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .slfc-icon,
  body.dashboard-core .fc .fc-timegrid-event.event-completed .slfc-completed-check,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .slfc-completed-check{
    display:none !important;
  }

  body.dashboard-core .fc .fc-timegrid-event.event-completed .fc-event-main::after,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .fc-event-main::after{
    content:"✓" !important;
    position:absolute !important;
    left:50% !important;
    right:auto !important;
    top:auto !important;
    bottom:1px !important;
    transform:translateX(-50%) !important;
    color:#16a34a !important;
    font-size:16px !important;
    font-weight:950 !important;
    line-height:1 !important;
    pointer-events:none !important;
  }
}

/* ============================================================
   MOBILE WEEK/DAY CARDS — TWO-LINE LEARNER NAMES, NO ELLIPSIS
   Keep the start time on one line, then allow the learner name to
   use two proper lines before the vehicle/type line underneath.
   Applies equally to scheduled and completed lessons.
   ============================================================ */
@media (max-width:720px){
  body.dashboard-core .fc .fc-timegrid-event .slfc-time,
  body.dashboard-core .fc .fc-daygrid-event .slfc-time{
    display:block !important;
    width:100% !important;
    min-width:0 !important;
    max-width:100% !important;
    overflow:visible !important;
    white-space:nowrap !important;
    text-overflow:clip !important;
  }

  body.dashboard-core .fc .fc-timegrid-event .slfc-name-wrap,
  body.dashboard-core .fc .fc-daygrid-event .slfc-name-wrap,
  body.dashboard-core .fc .fc-timegrid-event.event-completed .slfc-name-wrap,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .slfc-name-wrap{
    display:flex !important;
    flex-direction:column !important;
    align-items:stretch !important;
    width:100% !important;
    min-width:0 !important;
    max-width:100% !important;
    overflow:visible !important;
  }

  body.dashboard-core .fc .fc-timegrid-event .slfc-name,
  body.dashboard-core .fc .fc-daygrid-event .slfc-name,
  body.dashboard-core .fc .fc-timegrid-event.event-completed .slfc-name,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .slfc-name{
    display:-webkit-box !important;
    width:100% !important;
    min-width:0 !important;
    max-width:100% !important;
    overflow:hidden !important;
    white-space:normal !important;
    word-break:normal !important;
    overflow-wrap:break-word !important;
    hyphens:none !important;
    text-overflow:clip !important;
    -webkit-box-orient:vertical !important;
    -webkit-line-clamp:2 !important;
    line-clamp:2 !important;
  }

  body.dashboard-core .fc .fc-timegrid-event .slfc-meta,
  body.dashboard-core .fc .fc-daygrid-event .slfc-meta,
  body.dashboard-core .fc .fc-timegrid-event.event-completed .slfc-meta,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .slfc-meta{
    width:100% !important;
    min-width:0 !important;
    max-width:100% !important;
    overflow:hidden !important;
    white-space:nowrap !important;
    text-overflow:clip !important;
  }
}

/* ============================================================
   MOBILE WEEK/DAY CARDS — FULL NAME ON NATURAL LINES
   First name uses the first line; every remaining name is shown
   in full underneath. No ellipsis and no mid-word clipping.
   ============================================================ */
@media (max-width:720px){
  body.dashboard-core .fc .fc-timegrid-event .slfc-name,
  body.dashboard-core .fc .fc-daygrid-event .slfc-name,
  body.dashboard-core .fc .fc-timegrid-event.event-completed .slfc-name,
  body.dashboard-core .fc .fc-daygrid-event.event-completed .slfc-name{
    display:flex !important;
    flex-direction:column !important;
    align-items:stretch !important;
    width:100% !important;
    min-width:0 !important;
    max-width:100% !important;
    overflow:visible !important;
    white-space:normal !important;
    word-break:normal !important;
    overflow-wrap:normal !important;
    text-overflow:clip !important;
    -webkit-line-clamp:unset !important;
    line-clamp:unset !important;
  }

  body.dashboard-core .fc .fc-timegrid-event .slfc-name-first,
  body.dashboard-core .fc .fc-timegrid-event .slfc-name-rest,
  body.dashboard-core .fc .fc-daygrid-event .slfc-name-first,
  body.dashboard-core .fc .fc-daygrid-event .slfc-name-rest{
    display:block !important;
    width:100% !important;
    min-width:0 !important;
    overflow:visible !important;
    white-space:normal !important;
    word-break:normal !important;
    overflow-wrap:normal !important;
    text-overflow:clip !important;
  }
}

/* Dashboard lower cards: keep both columns on one identical corner radius. */
body.dashboard-page .dashboard-lower-grid > .dashboard-lower-card,
body.dashboard-page .dashboard-lower-grid > .deck > .dashboard-lower-card{
  border-radius:28px !important;
  overflow:hidden;
}

@media (max-width:767px){
  body.dashboard-page .dashboard-lower-grid > .dashboard-lower-card,
  body.dashboard-page .dashboard-lower-grid > .deck > .dashboard-lower-card{
    border-radius:24px !important;
  }
}


/* Login page — SimpLOS progress-ring treatment */
body.login-page {
  --login-card-radius: 22px;
  --login-control-radius: 14px;
}
body.login-page .login-card { border-radius: var(--login-card-radius); }
body.login-page .login-input-wrap input,
body.login-page .login-submit { border-radius: var(--login-control-radius); }
@media (max-width: 720px) {
  body.login-page {
    --login-card-radius: 18px;
    --login-control-radius: 12px;
  }
}


/* ============================================================
   Login page — final alignment and compact brand spacing
   Keep the progress ring and shield on the exact same centre point,
   and reduce the empty area between the logo and sign-in card.
   ============================================================ */
body.login-page .login-shell{
  gap:8px !important;
}

body.login-page .login-topbar{
  margin-bottom:0 !important;
}

body.login-page .login-brand__logo{
  width:112px !important;
  height:112px !important;
}

body.login-page .login-card-wrap{
  margin-top:-6px !important;
}

body.login-page .login-card__icon{
  position:relative !important;
}

body.login-page .login-card__shield-wrap{
  position:absolute !important;
  left:50% !important;
  top:50% !important;
  width:54px !important;
  height:54px !important;
  display:grid !important;
  place-items:center !important;
  border-radius:50% !important;
  background:rgba(255,255,255,.94) !important;
  box-shadow:0 8px 18px rgba(15,23,42,.10) !important;
  transform:translate(-50%,-50%) !important;
  z-index:2 !important;
}

body.login-page .login-card__shield{
  display:block !important;
  width:38px !important;
  height:38px !important;
  padding:0 !important;
  margin:0 !important;
  transform:none !important;
  overflow:visible !important;
}

@media (max-width:720px){
  body.login-page .login-shell{
    gap:6px !important;
  }

  body.login-page .login-brand__logo{
    width:104px !important;
    height:104px !important;
  }

  body.login-page .login-card-wrap{
    margin-top:-4px !important;
  }

  body.login-page .login-card__shield-wrap{
    width:46px !important;
    height:46px !important;
  }

  body.login-page .login-card__shield{
    width:32px !important;
    height:32px !important;
  }
}
