/* SecureWay Manager — student portal (front-end) */
.swm-portal { max-width: 960px; margin: 0 auto; }

/* Logged-out sign-in card */
.swm-portal-login { max-width: 460px; }
.swm-login-card { padding: 28px; border: 1px solid rgba(128,128,128,.28); border-radius: 18px; }
.swm-login-card h2 { margin-top: 0; }
.swm-login-card .login-username label, .swm-login-card .login-password label { display: block; font-weight: 700; margin-bottom: 6px; }
.swm-login-card input[type=text], .swm-login-card input[type=password] {
	width: 100%; padding: 12px 14px; border: 1px solid rgba(128,128,128,.45); border-radius: 10px; font: inherit; color: inherit; background: transparent; margin-bottom: 12px;
}
.swm-login-card .button, .swm-login-card #wp-submit {
	padding: 12px 22px; border: 0; border-radius: 999px; background: #c8102e; color: #fff; font-weight: 800; cursor: pointer;
}
.swm-login-card .button:hover, .swm-login-card #wp-submit:hover { background: #a60d26; }
.swm-login-card .login-remember { font-weight: 500; margin: 4px 0 12px; }
.swm-login-alt { margin: 12px 0 0; font-size: .92rem; opacity: .85; }
.swm-login-alt a { font-weight: 700; }
.swm-portal-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 8px; }
.swm-portal-sub { margin: 4px 0 0; opacity: .75; }
.swm-logout { display: inline-block; padding: 8px 16px; border-radius: 999px; border: 1px solid currentColor; text-decoration: none; font-weight: 700; }

.swm-portal-list { list-style: none; margin: 0 0 10px; padding: 0; display: grid; gap: 10px; }
.swm-portal-list li { display: grid; grid-template-columns: 1fr auto; gap: 4px 16px; align-items: center; padding: 14px 18px; border: 1px solid rgba(128,128,128,.28); border-left: 4px solid #c8102e; border-radius: 12px; }
.swm-portal-list li.swm-status-cancelled { border-left-color: #b3261e; opacity: .6; }
.swm-portal-list li.swm-status-completed { border-left-color: #0a7d33; }
.swm-pl-when { font-weight: 800; }
.swm-pl-what { grid-column: 1 / 2; opacity: .8; }
.swm-pl-dur { font-size: .85rem; opacity: .7; }

/* Portal calendar (reuses structure; brand-neutral so it fits light/dark themes) */
.swm-cal-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin: 8px 0 14px; }
.swm-cal-title { margin: 0; font-size: 1.25rem; }
.swm-cal-nav, .swm-cal-views { display: flex; gap: 6px; }
.swm-btn { display: inline-block; padding: 7px 13px; border: 1px solid rgba(128,128,128,.4); border-radius: 8px; text-decoration: none; font-weight: 700; color: inherit; }
.swm-btn.is-active { background: #c8102e; color: #fff; border-color: #c8102e; }

.swm-month { width: 100%; border-collapse: collapse; table-layout: fixed; }
.swm-month th { background: #071736; color: #fff; padding: 8px; text-align: left; }
.swm-day { vertical-align: top; height: 96px; border: 1px solid rgba(128,128,128,.25); padding: 6px; }
.swm-day.is-out { opacity: .45; }
.swm-day.is-today { box-shadow: inset 0 0 0 2px #c8102e; }
.swm-day-num { font-weight: 700; font-size: 12px; }
.swm-day-events { list-style: none; margin: 4px 0 0; padding: 0; display: grid; gap: 3px; }
.swm-chip { display: block; padding: 3px 7px; border-radius: 6px; font-size: 11px; font-weight: 600; background: #c8102e; color: #fff; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.swm-chip.swm-status-cancelled { background: #b3261e; text-decoration: line-through; }
.swm-chip.swm-status-completed { background: #0a7d33; }

.swm-week { display: grid; grid-template-columns: repeat(7, 1fr); gap: 8px; }
.swm-week-col { border: 1px solid rgba(128,128,128,.28); border-radius: 8px; overflow: hidden; min-height: 150px; }
.swm-week-head { background: #071736; color: #fff; padding: 6px 8px; font-weight: 700; font-size: 12px; }
.swm-week-body { padding: 6px; display: grid; gap: 4px; }
.swm-day-list { border: 1px solid rgba(128,128,128,.28); border-radius: 10px; overflow: hidden; }
.swm-day-row { display: flex; gap: 14px; align-items: center; padding: 12px 16px; border-bottom: 1px solid rgba(128,128,128,.18); }
.swm-time { font-weight: 800; min-width: 90px; }
.swm-empty { opacity: .7; padding: 10px 0; }

.swm-chip.swm-status-requested { background: #f0b429; color: #3a2a00; }
.swm-portal-list li.swm-status-requested { border-left-color: #f0b429; }

.swm-pl-actions { grid-column: 1 / -1; display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-top: 6px; padding-top: 10px; border-top: 1px dashed rgba(128,128,128,.3); }
.swm-pl-actions .swm-pending { color: #8a5a00; font-style: normal; font-weight: 700; }
.swm-pl-actions .swm-locked { opacity: .7; font-style: normal; font-size: .85rem; }
.swm-resched { display: inline-block; }
.swm-resched summary { cursor: pointer; font-weight: 700; color: #071736; list-style: none; padding: 6px 12px; border: 1px solid rgba(128,128,128,.4); border-radius: 999px; }
.swm-resched summary::-webkit-details-marker { display: none; }
.swm-resched[open] summary { background: #071736; color: #fff; }
.swm-resched form { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; align-items: center; }
.swm-resched input { padding: 8px 10px; border: 1px solid rgba(128,128,128,.4); border-radius: 8px; font: inherit; color: inherit; background: transparent; }
.swm-resched button { padding: 8px 14px; border: 0; border-radius: 999px; background: #071736; color: #fff; font-weight: 700; cursor: pointer; }
.swm-cancel-btn { padding: 6px 14px; border: 1px solid #c8102e; border-radius: 999px; background: transparent; color: #c8102e; font-weight: 700; cursor: pointer; }
.swm-cancel-btn:hover { background: #c8102e; color: #fff; }

.swm-flash { padding: 12px 16px; border-radius: 10px; margin: 12px 0; font-weight: 600; }
.swm-flash-ok { background: rgba(34,197,94,.15); border: 1px solid rgba(34,197,94,.4); }
.swm-flash-err { background: rgba(200,16,46,.12); border: 1px solid rgba(200,16,46,.4); }

.swm-request-form { border: 1px solid rgba(128,128,128,.28); border-radius: 14px; padding: 18px; margin-bottom: 8px; }
.swm-req-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.swm-request-form label { display: grid; gap: 6px; font-weight: 700; font-size: .92rem; }
.swm-request-form input, .swm-request-form select, .swm-request-form textarea {
	width: 100%; padding: 10px 12px; border: 1px solid rgba(128,128,128,.4); border-radius: 8px; font: inherit; color: inherit; background: transparent;
}
.swm-slots-wrap { margin-top: 14px; }
.swm-slots-label { display: block; font-weight: 700; margin-bottom: 8px; }
.swm-slots { display: grid; grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: 8px; }
.swm-slot {
	padding: 10px 8px; border: 1px solid rgba(128,128,128,.4); border-radius: 10px;
	background: transparent; color: inherit; font: inherit; font-weight: 700; cursor: pointer;
	transition: border-color .12s ease, background .12s ease;
}
.swm-slot:hover { border-color: #c8102e; }
.swm-slot.is-selected { background: #c8102e; border-color: #c8102e; color: #fff; }
.swm-slot.is-disabled, .swm-slot:disabled {
	opacity: .4; cursor: not-allowed; text-decoration: line-through; border-style: dashed;
}
.swm-slot.is-disabled:hover { border-color: rgba(128,128,128,.4); }
.swm-slots-empty { opacity: .7; margin: 4px 0; }
.swm-req-btn:disabled { opacity: .5; cursor: not-allowed; }

.swm-req-note { margin-top: 14px; }
.swm-req-btn { margin-top: 14px; padding: 12px 22px; border: 0; border-radius: 999px; background: #c8102e; color: #fff; font-weight: 800; cursor: pointer; }
.swm-req-btn:hover { background: #a60d26; }

@media (max-width: 700px) {
	.swm-week { grid-template-columns: 1fr; }
	.swm-portal-list li { grid-template-columns: 1fr; }
	.swm-req-grid { grid-template-columns: 1fr; }
}
