/*
 * Gradespace Tutor blocks: structure only (layout, spacing, states). Colours,
 * type and the look come from the theme (gstu- classes, one vocabulary for the
 * plugin and the Tutor theme). Core's tokens (--gsc-*) are used as fallbacks.
 */
.gstu-booking, .gstu-tutors, .gstu-tutor-details, .gstu-subjects, .gstu-lesson-types,
.gstu-sessions, .gstu-week, .gstu-terms, .gstu-packages, .gstu-enquiry { box-sizing: border-box; }
.gstu-booking *, .gstu-enquiry *, .gstu-packages * { box-sizing: border-box; }

.gstu-tutors__list, .gstu-subjects__list, .gstu-lesson-types__list, .gstu-sessions__list,
.gstu-packages__list, .gstu-terms__list, .gstu-week__list, .gstu-days, .gstu-tags, .gstu-steps {
	list-style: none; margin: 0; padding: 0;
}
.gstu-tutors__list, .gstu-subjects__list, .gstu-lesson-types__list, .gstu-sessions__list, .gstu-packages__list {
	display: grid; gap: 1.25rem; grid-template-columns: repeat( auto-fill, minmax( min( 100%, 16rem ), 1fr ) );
}
.gstu-week__days { display: grid; gap: 1rem; grid-template-columns: repeat( auto-fill, minmax( min( 100%, 12rem ), 1fr ) ); }
.gstu-tags { display: flex; flex-wrap: wrap; gap: .35rem; }
.gstu-tags__item { padding: .1rem .5rem; border: 1px solid var( --gsc-line, #d7dbe0 ); border-radius: 999px; font-size: .85em; }
.gstu-tutor-card__photo img { display: block; width: 100%; height: auto; }

.gstu-steps { display: flex; flex-wrap: wrap; gap: .5rem 1.25rem; margin-bottom: 1.25rem; counter-reset: gstu-step; }
.gstu-steps__item { counter-increment: gstu-step; opacity: .65; }
.gstu-steps__item::before { content: counter( gstu-step ) ". "; }
.gstu-steps__item.is-current { opacity: 1; font-weight: 600; }

.gstu-form { display: grid; gap: 1rem; max-width: 46rem; }
.gstu-form__row, .gstu-filters__row { display: grid; gap: 1rem; grid-template-columns: repeat( auto-fit, minmax( min( 100%, 14rem ), 1fr ) ); }
.gstu-field { display: grid; gap: .3rem; margin: 0; }
.gstu-input, .gstu-select, .gstu-textarea { width: 100%; max-width: 100%; font: inherit; }
.gstu-field__help { font-size: .875em; opacity: .8; }
.gstu-field__error { color: var( --gsc-danger, #b42318 ); font-size: .875em; }
.gstu-fieldset { margin: 0; padding: 0; border: 0; min-width: 0; display: grid; gap: .75rem; }
.gstu-fieldset__legend { padding: 0; margin-bottom: .5rem; font-weight: 600; }
.gstu-choices { display: flex; flex-wrap: wrap; gap: .5rem 1rem; }
.gstu-choices--cards { display: grid; grid-template-columns: repeat( auto-fill, minmax( min( 100%, 14rem ), 1fr ) ); gap: .75rem; }
.gstu-choice { display: flex; flex-wrap: wrap; align-items: baseline; gap: .25rem .5rem; cursor: pointer; }
.gstu-choice--card { padding: .75rem; border: 1px solid var( --gsc-line, #d7dbe0 ); border-radius: .5rem; }
.gstu-choice__desc, .gstu-choice__meta { flex-basis: 100%; font-size: .9em; }
.gstu-choice__photo img { width: 3rem; height: 3rem; object-fit: cover; border-radius: 50%; }
.gstu-who__child { display: grid; gap: .75rem; }
.gstu-who:has( input[value="self"]:checked ) .gstu-who__child { display: none; }
form:has( .gstu-who input[value="child"]:checked ) .gstu-check--adult { display: none; } /* "I'm 18 or over" only for "Me". */
form:has( .gstu-who input[value="self"]:checked ) .gstu-who__child-help { display: none; } /* The parent or guardian line only for "My child". */
.gstu-check { margin: 0; }
.gstu-check.is-invalid, .gstu-field.is-invalid .gstu-input, .gstu-fieldset.is-invalid { outline: 2px solid var( --gsc-danger, #b42318 ); outline-offset: 2px; }

.gstu-days, .gstu-times { display: flex; flex-wrap: wrap; gap: .5rem; }
.gstu-day { display: grid; text-align: center; padding: .5rem .75rem; border: 1px solid var( --gsc-line, #d7dbe0 ); border-radius: .5rem; text-decoration: none; min-width: 5.5rem; }
.gstu-time { display: inline-flex; align-items: center; gap: .35rem; padding: .4rem .7rem; border: 1px solid var( --gsc-line, #d7dbe0 ); border-radius: .5rem; cursor: pointer; }

.gstu-summary, .gstu-facts { display: grid; gap: .4rem; margin: 0 0 1rem; }
.gstu-summary__row, .gstu-facts__row { display: grid; grid-template-columns: minmax( 6rem, 10rem ) 1fr; gap: .75rem; }
.gstu-summary dt, .gstu-facts dt { font-weight: 600; }
.gstu-summary dd, .gstu-facts dd { margin: 0; overflow-wrap: anywhere; }

.gstu-note { padding: .75rem 1rem; border-left: 4px solid var( --gsc-line, #d7dbe0 ); background: var( --gsc-soft, #f5f6f8 ); margin: 0 0 1rem; }
.gstu-note.is-error { border-color: var( --gsc-danger, #b42318 ); }
.gstu-note.is-good { border-color: var( --gsc-brand, #1d4ed8 ); }
.gstu-note__list { margin: .25rem 0 0; padding-left: 1.25rem; }
.gstu-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; margin: 0; }
.gstu-btn { display: inline-flex; align-items: center; justify-content: center; gap: .35rem; padding: .6rem 1.1rem; border: 1px solid currentColor; border-radius: .4rem; font: inherit; text-decoration: none; cursor: pointer; background: transparent; color: inherit; }
.gstu-btn--primary { background: var( --gsc-brand, #1d4ed8 ); border-color: var( --gsc-brand, #1d4ed8 ); color: #fff; }
.gstu-btn--danger { color: var( --gsc-danger, #b42318 ); }
.gstu-change { margin: 1rem 0; }
.gstu-change__summary { cursor: pointer; font-weight: 600; }
.gstu-session.is-full .gstu-session__places { font-weight: 600; }
.gstu-upsell { margin: 1rem 0; }

@media ( max-width: 480px ) {
	.gstu-summary__row, .gstu-facts__row { grid-template-columns: 1fr; gap: .1rem; }
}

/* Repeat weekly until the end of term: a switch with the count. */
.gstu-series .gstu-switch { display: inline-flex; align-items: center; gap: .6rem; min-height: 44px; }
.gstu-switch input[role="switch"] { appearance: none; -webkit-appearance: none; position: relative; flex: none; width: 2.75rem; height: 1.5rem; margin: 0; border-radius: 999px; background: color-mix( in srgb, currentColor 28%, transparent ); cursor: pointer; transition: background .15s; }
.gstu-switch input[role="switch"]::after { content: ""; position: absolute; top: .1875rem; left: .1875rem; width: 1.125rem; height: 1.125rem; border-radius: 50%; background: #fff; box-shadow: 0 1px 2px rgba( 0, 0, 0, .3 ); transition: transform .15s; }
.gstu-switch input[role="switch"]:checked { background: var( --wp--preset--color--accent, #2a5bd7 ); }
.gstu-switch input[role="switch"]:checked::after { transform: translateX( 1.25rem ); }
.gstu-switch input[role="switch"]:focus-visible { outline: 3px solid currentColor; outline-offset: 2px; }
.gstu-series__count { display: block; margin-top: .35rem; }
@media ( prefers-reduced-motion: reduce ) { .gstu-switch input[role="switch"], .gstu-switch input[role="switch"]::after { transition: none; } }

/* The student area (Pro): structure only, the theme gives the look. Works on any theme and without JavaScript. */
.gstu-area, .gstu-area * { box-sizing: border-box; }
.gstu-area { display: grid; gap: 1.25rem; }
.gstu-area__head { display: grid; gap: .25rem; }
.gstu-area__title { margin: 0; }
.gstu-area__lead { margin: 0; }
.gstu-area__out { margin: .25rem 0 0; }
.gstu-area__nav-list { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem; }
.gstu-area__nav-link { display: inline-flex; align-items: center; min-height: 44px; padding: .4rem .9rem; border: 1px solid var( --gsc-line, #d7dbe0 ); border-radius: 999px; text-decoration: none; }
.gstu-area__grid { display: grid; gap: 1.25rem; grid-template-columns: repeat( auto-fit, minmax( min( 100%, 26rem ), 1fr ) ); align-items: start; }
.gstu-area__section { min-width: 0; padding: 1.25rem; border: 1px solid var( --gsc-line, #d7dbe0 ); border-radius: .75rem; scroll-margin-top: 6rem; }
.gstu-area__section--lessons { grid-column: 1 / -1; }
.gstu-area__heading { margin: 0 0 1rem; }
.gstu-area-lessons, .gstu-area-classes { list-style: none; margin: 0; padding: 0; display: grid; gap: .75rem; }
.gstu-area-lessons { grid-template-columns: repeat( auto-fill, minmax( min( 100%, 19rem ), 1fr ) ); }
.gstu-area-lesson { display: grid; grid-template-columns: 4rem 1fr; gap: .75rem; align-items: start; padding: .75rem; border: 1px solid var( --gsc-line, #d7dbe0 ); border-radius: .5rem; }
.gstu-area-lesson.is-waiting, .gstu-area-lesson.is-requested { border-style: dashed; }
.gstu-area-lesson p { margin: 0; }
.gstu-area-lesson__date time { display: grid; justify-items: center; padding: .4rem .25rem; border-radius: .4rem; background: var( --gsc-soft, #f5f6f8 ); line-height: 1.1; text-align: center; }
.gstu-area-lesson__num { font-size: 1.5em; font-weight: 700; }
.gstu-area-lesson__day, .gstu-area-lesson__month { font-size: .8em; text-transform: uppercase; letter-spacing: .04em; }
.gstu-area-lesson__body { display: grid; gap: .2rem; min-width: 0; }
.gstu-area-lesson__time { font-weight: 600; }
.gstu-area-lesson__status { display: inline-block; margin-left: .35rem; font-weight: 400; font-size: .8em; line-height: 1.5; padding: 0 .45rem; border: 1px solid currentColor; border-radius: 999px; white-space: nowrap; vertical-align: .1em; }
.gstu-area-lesson__meta { font-size: .9em; opacity: .85; overflow-wrap: anywhere; }
.gstu-area-lesson__join { margin-top: .4rem !important; }
.gstu-area-class { display: grid; gap: .5rem; }
.gstu-area-class p { margin: 0; }
.gstu-area-class__label { display: block; font-size: .85em; opacity: .8; }
.gstu-code { font-variant-numeric: tabular-nums; letter-spacing: .04em; }
.gstu-area-class__code .gstu-code { font-size: 1.6em; }
.gstu-area-class__name { font-weight: 600; }
.gstu-area-class__mates-title { font-weight: 600; }
.gstu-area-password { margin-bottom: 0; }
.gstu-area-signin, .gstu-activate { display: grid; gap: 1rem; max-width: 32rem; }
.gstu-area .gstu-btn { min-height: 44px; }
.gstu-area .gstu-input[readonly] { opacity: .8; }

/* Groups and their subjects, subject requests (0.4.0). */
.gstu-area-subjects, .gstu-requests { list-style: none; margin: 0; padding: 0; display: grid; gap: .5rem; }
.gstu-area-subjects__item, .gstu-requests__item { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .15rem .75rem; }
.gstu-area-subjects__name, .gstu-requests__subject { font-weight: 700; }
.gstu-requests__meta { flex-basis: 100%; font-size: .875em; }
.gstu-area__subheading { margin: 1.25rem 0 .5rem; }

/* The student area's Inbox and Assignments sections (the portal's lists, on any page and theme). */
.gstu-inbox, .gstu-work-list { list-style: none; margin: 0; padding: 0; display: grid; gap: .5rem; }
.gstu-inbox__link, .gstu-work-list__link { display: grid; gap: .2rem .75rem; padding: .7rem .9rem; border: 1px solid var( --gsc-line, #d7dbe0 ); border-radius: .5rem; color: inherit; text-decoration: none; }
.gstu-inbox__link:hover, .gstu-work-list__link:hover { border-color: currentColor; }
.gstu-inbox__item.is-unread .gstu-inbox__link { border-left: 4px solid var( --gsc-brand, #1d4ed8 ); }
.gstu-inbox__top { display: flex; flex-wrap: wrap; align-items: center; gap: .25rem .6rem; font-size: .85em; }
.gstu-inbox__date { margin-left: auto; }
.gstu-inbox__new { font-weight: 700; }
.gstu-inbox__title, .gstu-work-list__title { font-weight: 700; overflow-wrap: anywhere; }
.gstu-inbox__text, .gstu-inbox__from, .gstu-work-list__meta { font-size: .9em; opacity: .85; }
.gstu-work-list__link { grid-template-columns: minmax( 0, 1fr ) auto; align-items: center; }
.gstu-work-list__title, .gstu-work-list__meta { grid-column: 1; }
.gstu-work-list__side { grid-column: 2; grid-row: 1 / span 2; display: flex; flex-wrap: wrap; gap: .35rem; justify-content: flex-end; }
.gstu-chip { display: inline-flex; align-items: center; padding: 0 .55rem; border: 1px solid currentColor; border-radius: 999px; font-size: .8em; font-weight: 700; white-space: nowrap; }
@media ( max-width: 600px ) { .gstu-work-list__link { grid-template-columns: minmax( 0, 1fr ); } .gstu-work-list__side { grid-column: 1; grid-row: auto; justify-content: flex-start; } }
