/* Soulution Nest LMS — Frontend Styles
   Palette tuned to the Soulution Nest Education Initiative site:
   deep navy for trust/authority, warm amber/orange for hope & warmth.
   Adjust the variables below to match your exact brand hex codes.

   NOTE ON !important: this plugin's buttons/cards render inside a themed
   Elementor site whose global "Theme Style > Buttons" settings apply to
   bare <button>/<a> elements with fairly high specificity. Visual
   properties below are marked !important specifically to guarantee this
   plugin always renders its own design regardless of theme defaults —
   not used carelessly elsewhere. */

:root{
	--snlms-navy: #0d2436;
	--snlms-navy-light: #16374f;
	--snlms-amber: #e8963c;
	--snlms-amber-dark: #cf7f28;
	--snlms-cream: #fbf7f0;
	--snlms-text: #2b2b2b;
	--snlms-muted: #6b7280;
	--snlms-border: #e6e1d8;
	--snlms-radius: 16px;
}

.snlms-course-grid{
	display:grid;
	gap:26px;
	grid-template-columns:repeat(auto-fill,minmax(280px,340px));
	justify-content:start;
	margin:32px 0;
	font-family:inherit;
}

/* ==================== Donation experience ==================== */
.snlms-donate{
	max-width:640px; margin:0 auto; padding:8px 0 48px; font-family:inherit; text-align:center;
}

.snlms-donate-eyebrow{
	display:inline-block; font-size:12px; font-weight:700; letter-spacing:.08em;
	text-transform:uppercase; color:var(--snlms-amber-dark); margin-bottom:14px;
}
.snlms-donate-title{
	color:var(--snlms-navy); font-size:clamp(28px,4vw,38px); line-height:1.2;
	margin:0 0 18px; font-weight:800; letter-spacing:-.01em;
}
.snlms-donate-subtitle{
	color:var(--snlms-muted); font-size:16px; line-height:1.7; max-width:560px;
	margin:0 auto 40px;
}

.snlms-donate-thankyou{
	background:linear-gradient(135deg, var(--snlms-navy) 0%, var(--snlms-navy-light) 100%);
	border-radius:var(--snlms-radius); padding:32px 28px; margin-bottom:32px; color:#fff;
}
.snlms-donate-thankyou-icon{ font-size:30px; margin-bottom:6px; }
.snlms-donate-thankyou h3{ margin:0 0 8px; font-size:19px; }
.snlms-donate-thankyou p{ margin:0; color:rgba(255,255,255,.82); font-size:14.5px; line-height:1.6; }

.snlms-donate-card{
	background:#fff; border:1px solid var(--snlms-border); border-radius:20px;
	padding:36px 32px 32px; box-shadow:0 10px 40px rgba(13,36,54,.08);
	text-align:left;
}
.snlms-donate-label{
	font-size:12.5px; font-weight:700; letter-spacing:.05em; text-transform:uppercase;
	color:var(--snlms-navy); margin:0 0 14px;
}

.snlms-donate-amounts{ display:grid; grid-template-columns:repeat(2,1fr); gap:12px; margin-bottom:14px; }
.snlms-donate-chip{
	all:revert !important; box-sizing:border-box;
	display:block !important; width:100%; text-align:center !important;
	background:var(--snlms-cream) !important; border:1.5px solid var(--snlms-border) !important;
	border-radius:12px !important; padding:16px 10px !important; font-size:17px !important;
	font-weight:800 !important; color:var(--snlms-navy) !important; cursor:pointer;
	font-family:inherit !important; box-shadow:none !important;
	transition:border-color .15s ease, background .15s ease, transform .15s ease;
}
.snlms-donate-chip:hover{ border-color:var(--snlms-amber) !important; transform:translateY(-1px); }
.snlms-donate-chip.is-selected{
	background:var(--snlms-navy) !important; border-color:var(--snlms-navy) !important; color:#fff !important;
}

.snlms-donate-custom{
	display:flex; align-items:center; gap:2px; margin-bottom:18px;
	border:1.5px solid var(--snlms-border); border-radius:12px; padding:0 14px;
	transition:border-color .15s ease;
}
.snlms-donate-custom:focus-within{ border-color:var(--snlms-amber); }
.snlms-donate-custom-prefix{ color:var(--snlms-muted); font-weight:700; font-size:15px; }
.snlms-donate-custom-input{
	all:revert; box-sizing:border-box; flex:1; border:none !important; outline:none !important;
	background:transparent !important; padding:14px 8px !important; font-size:15px !important;
	font-family:inherit !important; color:var(--snlms-text) !important; box-shadow:none !important;
}

.snlms-donate-impact{
	background:var(--snlms-cream); border-radius:10px; padding:12px 14px;
	font-size:13.5px; color:var(--snlms-navy); line-height:1.5; margin:0 0 20px;
}

.snlms-donate-cta{ width:100%; }
.snlms-donate-cta.is-disabled{ opacity:.5; pointer-events:none; }

.snlms-donate-trust{
	text-align:center; font-size:12px; color:var(--snlms-muted); margin:16px 0 0;
}

/* ==================== Buttons (hardened against theme overrides) ==================== */
.snlms-btn,
.snlms-modal button,
.snlms-modal a{
	all:revert;
	box-sizing:border-box;
}
.snlms-btn{
	display:inline-flex !important; align-items:center; justify-content:center;
	text-align:center !important; width:100%;
	padding:13px 22px !important; border-radius:999px !important;
	font-weight:700 !important; font-size:14px !important; font-family:inherit !important;
	line-height:1.2 !important; letter-spacing:normal !important; text-transform:none !important;
	border:2px solid transparent !important; cursor:pointer;
	text-decoration:none !important; text-shadow:none !important;
	box-shadow:none !important; background-image:none !important;
	transition:background .15s ease, color .15s ease, border-color .15s ease, transform .15s ease;
}
.snlms-btn-primary{ background:var(--snlms-navy) !important; color:#fff !important; }
.snlms-btn-primary:hover{ background:var(--snlms-amber) !important; color:#fff !important; transform:translateY(-1px); }
.snlms-btn-outline{ background:transparent !important; color:var(--snlms-navy) !important; border-color:var(--snlms-navy) !important; }
.snlms-btn-outline:hover{ background:var(--snlms-navy) !important; color:#fff !important; }
.snlms-btn-outline:disabled{ opacity:.6; cursor:default; }
.snlms-btn-link{ background:none !important; color:var(--snlms-navy) !important; text-decoration:underline !important; width:auto; padding:8px 4px !important; }

.snlms-checkout-status{
	max-width:480px; margin:0 auto; text-align:center; padding:14px 18px;
	border-radius:10px; font-size:14px; font-weight:600;
}
.snlms-checkout-status.snlms-info{ background:#eef4fb; color:var(--snlms-navy); }
.snlms-checkout-status.snlms-error{ background:#fdeceb; color:#a5292a; }
.snlms-checkout-status.snlms-success{ background:#eaf7ee; color:#1e7b3b; }

/* ==================== Course grid ==================== */
.snlms-course-card{
	display:block; background:#fff; border:1px solid var(--snlms-border);
	border-radius:var(--snlms-radius); overflow:hidden; text-decoration:none !important;
	color:inherit; box-shadow:0 2px 14px rgba(13,36,54,0.06);
	transition:transform .25s ease, box-shadow .25s ease;
}
.snlms-course-card:hover{ transform:translateY(-6px); box-shadow:0 16px 32px rgba(13,36,54,0.14); }
.snlms-course-card:hover .snlms-course-thumb{ transform:scale(1.04); }

.snlms-course-thumb-wrap{
	aspect-ratio:4 / 3; overflow:hidden; position:relative; background:var(--snlms-navy-light);
}
.snlms-course-thumb{
	position:absolute; inset:0;
	background:var(--snlms-navy-light) center/cover no-repeat;
	transition:transform .35s ease;
}
.snlms-course-thumb-overlay{
	position:absolute; inset:0;
	background:linear-gradient(to top, rgba(13,36,54,.75) 0%, rgba(13,36,54,0) 45%);
}
.snlms-lock-badge{
	position:absolute; top:12px; right:12px; z-index:2;
	display:flex; align-items:center; justify-content:center;
	width:34px; height:34px; border-radius:50%;
	background:rgba(13,36,54,0.65); backdrop-filter:blur(4px);
	color:#fff; font-size:14px;
}
.snlms-course-status-pill{
	position:absolute; left:14px; bottom:12px; z-index:2;
	font-size:11px; font-weight:700; letter-spacing:.04em; text-transform:uppercase;
	padding:5px 11px; border-radius:999px; color:#fff;
}
.snlms-course-status-pill.is-locked{ background:rgba(255,255,255,.16); border:1px solid rgba(255,255,255,.4); }
.snlms-course-status-pill.is-unlocked{ background:var(--snlms-amber); }

.snlms-course-body{ padding:20px 22px 22px; }
.snlms-course-body h4{ margin:0 0 8px; color:var(--snlms-navy); font-size:17px; line-height:1.3; }
.snlms-course-body p{ margin:0 0 14px; font-size:13.5px; color:var(--snlms-muted); line-height:1.5; }
.snlms-course-cta{
	display:inline-flex; align-items:center; gap:5px;
	font-weight:700; color:var(--snlms-amber-dark); font-size:13px;
	transition:gap .15s ease;
}
.snlms-course-card:hover .snlms-course-cta{ gap:9px; }

/* Paywall */
.snlms-paywall{
	background:var(--snlms-cream); border:1px solid var(--snlms-border);
	border-radius:var(--snlms-radius); padding:44px 32px; text-align:center; margin:24px 0;
}
.snlms-paywall-icon{ font-size:34px; margin-bottom:8px; }
.snlms-paywall h3{ color:var(--snlms-navy); margin:0 0 10px; }
.snlms-paywall p{ color:var(--snlms-muted); max-width:520px; margin:0 auto 22px; }
.snlms-paywall-actions{ display:flex; gap:12px; justify-content:center; flex-wrap:wrap; }
.snlms-paywall-actions .snlms-btn{ width:auto; }

/* Dashboard */
.snlms-dashboard{
	background:#fff; border:1px solid var(--snlms-border); border-radius:var(--snlms-radius);
	padding:28px; max-width:560px;
}
.snlms-dashboard h3{ color:var(--snlms-navy); margin-top:0; }
.snlms-dashboard-status p{ margin:6px 0; }
.snlms-status-active{ border-left:4px solid #2e9e52; padding-left:16px; }
.snlms-status-inactive{ border-left:4px solid var(--snlms-amber); padding-left:16px; }
.snlms-course-access-list{ margin-top:22px; }
.snlms-course-access-list ul{ padding-left:18px; }

.snlms-empty{ color:var(--snlms-muted); font-style:italic; }

/* Lesson resources (downloads) */
.snlms-lesson-resources{
	background:var(--snlms-cream); border:1px solid var(--snlms-border);
	border-radius:var(--snlms-radius); padding:22px 24px; margin:32px 0;
}
.snlms-lesson-resources-title{ color:var(--snlms-navy); margin:0 0 12px; font-size:16px; }
.snlms-resource-list{ list-style:none; margin:0; padding:0; }
.snlms-resource-item + .snlms-resource-item{ margin-top:8px; }
.snlms-resource-link{
	display:flex !important; align-items:center; gap:10px; background:#fff !important;
	border:1px solid var(--snlms-border) !important; border-radius:10px !important;
	padding:12px 16px !important; text-decoration:none !important; color:var(--snlms-navy) !important;
	font-weight:600 !important; font-size:14px !important; box-shadow:none !important;
	transition:border-color .15s ease, transform .15s ease;
}
.snlms-resource-link:hover{ border-color:var(--snlms-amber) !important; transform:translateX(2px); }
.snlms-resource-icon{ color:var(--snlms-amber-dark); font-size:15px; }

/* ==================== Popup checkout modal ==================== */
body.snlms-modal-open{ overflow:hidden; }

.snlms-modal-overlay{
	display:none; position:fixed; inset:0; z-index:100000;
	background:rgba(13,36,54,.6); backdrop-filter:blur(3px);
	padding:24px; align-items:center; justify-content:center;
	font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
}
.snlms-modal-overlay.is-open{ display:flex; }

.snlms-modal{
	position:relative; background:#fff; width:100%; max-width:440px;
	max-height:90vh; overflow-y:auto; border-radius:20px;
	padding:36px 32px 32px; box-shadow:0 24px 70px rgba(0,0,0,.3);
	animation:snlms-modal-in .2s ease;
}
@keyframes snlms-modal-in{
	from{ opacity:0; transform:translateY(12px) scale(.98); }
	to{ opacity:1; transform:translateY(0) scale(1); }
}

.snlms-modal *{ box-sizing:border-box; }

.snlms-modal-close{
	all:revert !important;
	position:absolute !important; top:16px !important; right:16px !important;
	width:34px !important; height:34px !important; padding:0 !important;
	display:flex !important; align-items:center !important; justify-content:center !important;
	border:none !important; background:var(--snlms-cream) !important; border-radius:50% !important;
	font-size:18px !important; line-height:1 !important; color:var(--snlms-navy) !important;
	cursor:pointer; box-shadow:none !important; font-family:inherit !important;
	transition:background .15s ease;
}
.snlms-modal-close:hover{ background:var(--snlms-border) !important; }

.snlms-modal-title{ color:var(--snlms-navy); margin:0 0 6px; font-size:20px; font-weight:700; line-height:1.3; }
.snlms-modal-subtitle{ color:var(--snlms-muted); font-size:13.5px; margin:0 0 22px; line-height:1.5; }

.snlms-modal-summary{
	display:flex; justify-content:space-between; align-items:center;
	background:var(--snlms-cream); border:1px solid var(--snlms-border);
	border-radius:12px; padding:14px 16px; margin-bottom:20px; font-size:14px;
}
.snlms-modal-summary span{ color:var(--snlms-navy); font-weight:600; }
.snlms-modal-summary strong{ color:var(--snlms-navy); text-align:right; font-size:15px; }
.snlms-modal-summary small{ color:var(--snlms-muted); font-weight:400; display:block; margin-top:2px; }

.snlms-modal-plan-list{ display:flex; flex-direction:column; gap:12px; }
.snlms-modal-plan-option{
	all:revert; box-sizing:border-box;
	display:flex !important; justify-content:space-between; align-items:center; gap:14px;
	width:100%; text-align:left !important; background:#fff !important;
	border:1.5px solid var(--snlms-border) !important; border-radius:12px !important;
	padding:16px 18px !important; cursor:pointer; font-size:14px; font-family:inherit !important;
	box-shadow:none !important; text-decoration:none !important;
	transition:border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}
.snlms-modal-plan-option:hover{
	border-color:var(--snlms-amber) !important;
	box-shadow:0 6px 18px rgba(13,36,54,.08) !important;
	transform:translateY(-1px);
}
.snlms-modal-plan-name{ display:flex; flex-direction:column; gap:4px; color:var(--snlms-navy); font-weight:700; font-size:14.5px; }
.snlms-modal-plan-name .snlms-modal-plan-tag{
	align-self:flex-start; font-size:10.5px; font-weight:700; letter-spacing:.03em; text-transform:uppercase;
	color:#fff; background:var(--snlms-amber); padding:3px 9px; border-radius:999px;
}
.snlms-modal-plan-price{ color:var(--snlms-navy); font-weight:800; font-size:15px; text-align:right; white-space:nowrap; }
.snlms-modal-plan-price small{ display:block; color:var(--snlms-muted); font-weight:500; font-size:11px; margin-top:2px; }

.snlms-modal-form{ display:flex; flex-direction:column; gap:16px; }
.snlms-modal-form label{ display:flex; flex-direction:column; gap:7px; font-size:13px; font-weight:600; color:var(--snlms-navy); }
.snlms-modal-form input{
	all:revert; box-sizing:border-box; appearance:none;
	width:100%; font-size:14px !important; padding:12px 14px !important;
	border:1.5px solid var(--snlms-border) !important; border-radius:10px !important;
	font-weight:400 !important; font-family:inherit !important; color:var(--snlms-text) !important;
	background:#fff !important; box-shadow:none !important;
}
.snlms-modal-form input:focus{ outline:none !important; border-color:var(--snlms-amber) !important; }
.snlms-modal-form .snlms-btn{ margin-top:6px; }
.snlms-modal-toggle{ text-align:center; font-size:13px; color:var(--snlms-muted); margin:4px 0 0; }
.snlms-modal-toggle a{ color:var(--snlms-navy) !important; font-weight:600; text-decoration:none !important; }
.snlms-modal-toggle a:hover{ text-decoration:underline !important; }

.snlms-modal-pay-btn{ width:100%; }

.snlms-modal-error{ background:#fdeceb; color:#a5292a; border-radius:10px; padding:12px 14px; font-size:13.5px; margin-bottom:16px; line-height:1.4; }
.snlms-modal-status{ background:#eaf7ee; color:#1e7b3b; border-radius:10px; padding:12px 14px; font-size:13.5px; margin-bottom:16px; line-height:1.4; }

/* Modal "choose your gift" step */
.snlms-modal-plan-list{ grid-template-columns:repeat(2,1fr); display:grid; gap:12px; }
.snlms-modal-gift-chip{ justify-content:center !important; text-align:center !important; }
.snlms-modal-gift-chip .snlms-modal-plan-name{ align-items:center; font-size:16px !important; font-weight:800 !important; }
.snlms-modal-gift-chip.is-selected{
	background:var(--snlms-navy) !important; border-color:var(--snlms-navy) !important;
}
.snlms-modal-gift-chip.is-selected .snlms-modal-plan-name{ color:#fff !important; }
.snlms-modal-gift-chip.is-selected .snlms-modal-plan-tag{ background:var(--snlms-amber) !important; color:#fff !important; }

.snlms-modal-custom-amount{
	all:revert; box-sizing:border-box;
	display:flex !important; align-items:center; gap:2px; margin:14px 0 18px;
	border:1.5px solid var(--snlms-border) !important; border-radius:12px !important; padding:0 14px !important;
}
.snlms-modal-custom-amount:focus-within{ border-color:var(--snlms-amber) !important; }
.snlms-modal-custom-amount span{ color:var(--snlms-muted); font-weight:700; font-size:14px; }
.snlms-modal-custom-amount input{
	all:revert; box-sizing:border-box; flex:1; border:none !important; outline:none !important;
	background:transparent !important; padding:13px 8px !important; font-size:14px !important;
	font-family:inherit !important; color:var(--snlms-text) !important; box-shadow:none !important;
}

.snlms-modal-continue-btn{ width:100%; margin-top:4px; }

/* Course curriculum (lesson list on the single course page) */
.snlms-course-lessons{ margin:36px 0; }
.snlms-course-lessons-title{ color:var(--snlms-navy); font-size:19px; margin:0 0 16px; }

.snlms-lesson-list{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:10px; }
.snlms-lesson-row{
	background:#fff; border:1px solid var(--snlms-border); border-radius:12px;
	transition:border-color .15s ease, box-shadow .15s ease;
}
.snlms-lesson-row:not(.is-locked):hover{ border-color:var(--snlms-amber); box-shadow:0 6px 18px rgba(13,36,54,.06); }

.snlms-lesson-row a,
.snlms-lesson-row-inner{
	display:flex; align-items:center; gap:14px; padding:16px 18px;
	text-decoration:none !important; color:inherit;
}
.snlms-lesson-index{
	flex:0 0 auto; width:30px; height:30px; border-radius:50%;
	background:var(--snlms-cream); color:var(--snlms-navy); font-size:12px; font-weight:700;
	display:flex; align-items:center; justify-content:center;
}
.snlms-lesson-title{ flex:1 1 auto; font-weight:600; color:var(--snlms-navy); font-size:14.5px; }
.snlms-lesson-icon{ flex:0 0 auto; color:var(--snlms-amber-dark); font-size:14px; }

.snlms-lesson-row.is-locked{ background:var(--snlms-cream); }
.snlms-lesson-row.is-locked .snlms-lesson-title{ color:var(--snlms-muted); }
.snlms-lesson-row.is-locked .snlms-lesson-icon{ color:var(--snlms-muted); }

.snlms-lesson-preview-tag{
	display:inline-block; margin:-8px 18px 12px 62px;
	font-size:10.5px; font-weight:700; letter-spacing:.03em; text-transform:uppercase;
	color:#fff; background:var(--snlms-amber); padding:3px 9px; border-radius:999px;
}

/* Lesson video player */
.snlms-lesson-video{
	position:relative; width:100%; aspect-ratio:16/9; border-radius:var(--snlms-radius);
	overflow:hidden; background:#0a1a26; margin:0 0 28px;
	box-shadow:0 14px 34px rgba(13,36,54,.14);
}
.snlms-lesson-video iframe,
.snlms-lesson-video video,
.snlms-lesson-video embed{
	position:absolute; inset:0; width:100% !important; height:100% !important; border:0; display:block;
}
.snlms-lesson-video-fallback{ margin:0 0 28px; }
