.asm-schedule-day {
	margin-bottom: 28px;
}
.asm-schedule-day-title {
	border-bottom: 2px solid #2E3B4E;
	padding-bottom: 6px;
	margin-bottom: 8px;
}
.asm-schedule-table {
	width: 100%;
	border-collapse: collapse;
}
.asm-schedule-table th,
.asm-schedule-table td {
	text-align: left;
	padding: 8px 10px;
	border-bottom: 1px solid #e2e2e2;
}
.asm-schedule-table th {
	background: #f7f7f7;
}
.asm-badge {
	display: inline-block;
	padding: 2px 10px;
	border-radius: 10px;
	font-size: 12px;
	font-weight: 600;
	color: #fff;
}
.asm-badge-paid,
.asm-badge-open   { background: #2e7d32; }
.asm-badge-partial{ background: #d98c00; }
.asm-badge-unpaid,
.asm-badge-full   { background: #b3261e; }

.asm-portal {
	max-width: 760px;
}
.asm-portal-student {
	background: #f7f7f7;
	border-radius: 6px;
	padding: 12px 16px;
	margin-bottom: 12px;
}

/* Jump-to-section nav bar under the Parent Portal's welcome heading — a row
   of pill links to each section actually present on the page (see the
   render_parent_portal() nav block in class-asm-shortcodes.php). Section
   headings get matching scroll-margin-top so a jump doesn't tuck the
   heading up under the very top edge of the viewport. */
.asm-portal-nav {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 14px 0 22px;
}
.asm-portal-nav a {
	display: inline-block;
	background: #f0f2f5;
	color: #2E3B4E;
	border-radius: 999px;
	padding: 6px 14px;
	font-size: 13px;
	font-weight: 600;
	text-decoration: none;
}
.asm-portal-nav a:hover {
	background: #2E3B4E;
	color: #fff;
}
.asm-portal h3 {
	scroll-margin-top: 16px;
}
.asm-portal-note {
	color: #666;
}

.asm-hidden {
	display: none;
}

/* Generic small button used on front-end portal pages (outside wp-admin,
   so the WordPress admin .button/.button-primary classes aren't styled) —
   e.g. the Invoices "Pay Selected" / "Pay Full Balance" buttons. */
.asm-btn {
	display: inline-block;
	background: #fff;
	border: 1px solid #ccc;
	border-radius: 4px;
	padding: 8px 16px;
	font-size: 14px;
	cursor: pointer;
	color: #2E3B4E;
}
.asm-btn:hover:not(:disabled) {
	background: #f2f2f2;
}
.asm-btn:disabled {
	opacity: 0.5;
	cursor: not-allowed;
}
.asm-btn-primary {
	background: #2E3B4E;
	border-color: #2E3B4E;
	color: #fff;
}
.asm-btn-primary:hover:not(:disabled) {
	background: #1f2937;
}
.asm-portal-pay-actions {
	margin-top: 14px;
	display: flex;
	gap: 12px;
	flex-wrap: wrap;
	align-items: center;
}
.asm-schedule-view-btn {
	margin-right: 6px;
}

/* Parent Portal weekly schedule — calendar view (mirrors the admin
   Schedule Calendar's .asm-calendar-grid/.asm-calendar-day look, scaled
   down and self-contained since front-end pages don't load admin.css). */
.asm-parent-cal-grid {
	display: grid;
	grid-template-columns: repeat(7, 1fr);
	gap: 10px;
	overflow-x: auto;
}
.asm-parent-cal-day {
	background: #f7f7f7;
	border-radius: 6px;
	min-width: 130px;
	overflow: hidden;
}
.asm-parent-cal-day-header {
	background: #2E3B4E;
	color: #fff;
	font-weight: 600;
	font-size: 13px;
	padding: 6px 8px;
	text-align: center;
}
.asm-parent-cal-empty {
	padding: 10px 8px;
	margin: 0;
	color: #999;
	font-size: 12px;
}
.asm-parent-cal-slot {
	background: #fff;
	border-radius: 4px;
	margin: 8px;
	padding: 8px;
	font-size: 12px;
	box-shadow: 0 1px 2px rgba(0,0,0,0.08);
}
.asm-parent-cal-slot-time {
	font-weight: 600;
	color: #2E3B4E;
}
.asm-parent-cal-slot-class {
	font-weight: 600;
	margin-top: 2px;
}
.asm-parent-cal-slot-meta {
	color: #666;
	margin-top: 2px;
}
.asm-parent-cal-slot-for {
	color: #2e7d32;
	margin-top: 4px;
	font-weight: 600;
}

@media (max-width: 700px) {
	.asm-parent-cal-grid {
		grid-template-columns: repeat(7, minmax(110px, 1fr));
	}
}
