:root {
    --proudg-ink: #17223b;
    --proudg-muted: #65738a;
    --proudg-line: #dce4ef;
    --proudg-paper: #ffffff;
    --proudg-blue: #2867d7;
    --proudg-blue-dark: #174aa7;
    --proudg-sky: #eaf3ff;
    --proudg-success: #17845b;
    --proudg-warning: #a95d07;
    --proudg-shadow: 0 18px 50px rgba(25, 44, 80, .10);
}

.proudg-student-shell,
.proudg-student-shell * {
    box-sizing: border-box;
}

.proudg-student-shell {
    width: min(1440px, calc(100vw - 32px));
    margin: 34px 50% 70px;
    transform: translateX(-50%);
    color: var(--proudg-ink);
    font-family: Inter, "Open Sans", Arial, sans-serif;
}

.proudg-student-shell h1,
.proudg-student-shell h2,
.proudg-student-shell p {
    margin-top: 0;
}

.proudg-student-shell a {
    color: var(--proudg-blue);
}

.proudg-eyebrow {
    margin-bottom: 7px;
    color: var(--proudg-blue-dark);
    font-size: 12px;
    font-weight: 800;
    letter-spacing: .11em;
    text-transform: uppercase;
}

.proudg-card {
    border: 1px solid var(--proudg-line);
    border-radius: 24px;
    background: var(--proudg-paper);
    box-shadow: var(--proudg-shadow);
}

.proudg-curriculum__hero,
.proudg-dashboard__hero {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 30px;
    margin-bottom: 22px;
    padding: 32px 38px;
    overflow: hidden;
    border: 1px solid #cbdcff;
    border-radius: 26px;
    background:
        radial-gradient(circle at 88% -10%, rgba(255,255,255,.8) 0 12%, transparent 13%),
        linear-gradient(120deg, #eaf3ff 0%, #f8fbff 55%, #edf6f2 100%);
}

.proudg-curriculum__hero h1,
.proudg-dashboard__hero h1 {
    margin-bottom: 6px;
    color: #14213a;
    font-size: clamp(28px, 4vw, 48px);
    font-weight: 800;
    line-height: 1.05;
}

.proudg-curriculum__hero p:last-child,
.proudg-dashboard__hero p:last-child {
    margin-bottom: 0;
    color: #526078;
    font-size: 15px;
}

.proudg-curriculum__mascot {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-left: auto;
}

.proudg-curriculum__mascot img {
    width: 92px;
    height: 96px;
    object-fit: contain;
    filter: drop-shadow(0 10px 10px rgba(34, 58, 101, .14));
}

.proudg-curriculum__mascot span {
    position: relative;
    width: 145px;
    padding: 10px 11px;
    border: 1px solid #cbdcff;
    border-radius: 11px;
    background: rgba(255,255,255,.82);
    color: #42516b;
    font-size: 10px;
    font-weight: 650;
    line-height: 1.35;
}

.proudg-plan-switcher,
.proudg-curriculum__selectors {
    min-width: 270px;
}

.proudg-plan-switcher label,
.proudg-curriculum__selectors label,
.proudg-profile-form label > span {
    display: block;
    margin-bottom: 7px;
    color: #44516a;
    font-size: 12px;
    font-weight: 700;
}

.proudg-plan-switcher select,
.proudg-curriculum__selectors select,
.proudg-profile-form select,
.proudg-progress-row select {
    width: 100%;
    min-height: 44px;
    padding: 9px 34px 9px 12px;
    border: 1px solid #bfccdc;
    border-radius: 10px;
    background: #fff;
    color: var(--proudg-ink);
    font: inherit;
}

.proudg-curriculum__selectors {
    display: grid;
    gap: 6px;
}

.proudg-curriculum__selectors label:not(:first-child) {
    margin-top: 5px;
}

.proudg-beta-banner {
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: 16px;
    margin: 0 0 20px;
    padding: 17px 20px;
    border: 1px solid #f1cf93;
    border-radius: 16px;
    background: #fff9ed;
    color: #6d4309;
}

.proudg-beta-banner > .fa {
    width: 38px;
    height: 38px;
    padding-top: 10px;
    border-radius: 50%;
    background: #ffebbd;
    text-align: center;
}

.proudg-beta-banner strong {
    display: block;
    margin-bottom: 2px;
}

.proudg-beta-banner p {
    margin: 0;
    color: #7d5c29;
    font-size: 13px;
}

.proudg-beta-banner a {
    padding: 8px 12px;
    border: 1px solid #e3bd73;
    border-radius: 9px;
    color: #744709;
    font-size: 12px;
    font-weight: 800;
    text-decoration: none;
    white-space: nowrap;
}

.proudg-source-links {
    display: flex;
    gap: 6px;
}

.proudg-curriculum__toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    margin-bottom: 20px;
    padding: 13px;
    border: 1px solid var(--proudg-line);
    border-radius: 16px;
    background: #fff;
}

.proudg-search-field {
    display: flex;
    align-items: center;
    width: min(320px, 100%);
    margin: 0;
    padding: 0 12px;
    border: 1px solid #cbd5e1;
    border-radius: 10px;
    background: #f8fafc;
}

.proudg-search-field .fa {
    color: #7b879b;
}

.proudg-search-field input {
    width: 100%;
    min-height: 40px;
    padding: 8px;
    border: 0;
    outline: 0;
    background: transparent;
    font: inherit;
}

.proudg-legend {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 6px;
}

.proudg-legend button {
    padding: 7px 9px;
    border: 0;
    border-radius: 8px;
    background: transparent;
    color: #536178;
    font-size: 11px;
    cursor: pointer;
}

.proudg-legend button:hover,
.proudg-legend button.is-active {
    background: #edf3fb;
    color: #17223b;
}

.proudg-dot {
    display: inline-block;
    width: 8px;
    height: 8px;
    margin-right: 5px;
    border-radius: 50%;
    background: #8390a3;
}

.proudg-dot--design { background: #3978e7; }
.proudg-dot--technical { background: #e27732; }
.proudg-dot--theory { background: #8e5dc4; }
.proudg-dot--urban { background: #22a283; }
.proudg-dot--management { background: #d49a19; }
.proudg-dot--representation { background: #d84b5f; }
.proudg-dot--variable { background: #526175; }
.proudg-dot--optional { background: #7c8799; }
.proudg-dot--basica-comun { background: #3978e7; }
.proudg-dot--basica-particular { background: #8e5dc4; }
.proudg-dot--especializante { background: #22a283; }
.proudg-dot--optativa { background: #d49a19; }
.proudg-dot--formacion { background: #526175; }

.proudg-route-summary {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 10px;
    margin-bottom: 20px;
}

.proudg-route-summary span {
    padding: 14px 16px;
    border: 1px solid var(--proudg-line);
    border-radius: 13px;
    background: #fff;
    color: #6a788e;
    font-size: 11px;
}

.proudg-route-summary strong {
    display: block;
    color: var(--proudg-ink);
    font-size: 20px;
    line-height: 1.1;
}

.proudg-beta-banner--official {
    border-color: #aedbc6;
    background: #edf9f3;
    color: #185d43;
}

.proudg-beta-banner--official > .fa {
    background: #d5f1e3;
}

.proudg-beta-banner--official p {
    color: #3e705d;
}

.proudg-beta-banner--official a {
    border-color: #9dcdb7;
    color: #176044;
}

.proudg-semesters {
    display: grid;
    grid-template-columns: repeat(10, minmax(190px, 1fr));
    gap: 13px;
    padding: 5px 4px 24px;
    overflow-x: auto;
    scroll-snap-type: x proximity;
}

.proudg-semester {
    min-width: 190px;
    padding: 0;
    border: 1px solid #dbe4f0;
    border-radius: 16px;
    background: #f7f9fc;
    scroll-snap-align: start;
}

.proudg-semester > header {
    display: flex;
    align-items: center;
    gap: 9px;
    padding: 13px;
    border-bottom: 1px solid #dbe4f0;
    border-radius: 16px 16px 0 0;
    background: #fff;
}

.proudg-semester > header > span {
    display: grid;
    width: 30px;
    height: 30px;
    place-items: center;
    border-radius: 9px;
    background: #1f3f78;
    color: #fff;
    font-size: 13px;
    font-weight: 800;
}

.proudg-semester > header h2 {
    margin: 0;
    font-size: 13px;
    font-weight: 750;
}

.proudg-semester__subjects {
    display: grid;
    gap: 9px;
    padding: 10px;
}

.proudg-flexible-launcher,
.proudg-flexible-details {
    min-width: min(520px, calc(100vw - 40px));
    border: 1px solid #cbd9ec;
    border-radius: 16px;
    background: linear-gradient(135deg, #f7faff, #edf4ff);
    scroll-snap-align: start;
}

.proudg-flexible-launcher {
    display: grid;
    grid-template-columns: auto minmax(210px, 1fr) auto;
    align-items: center;
    gap: 16px;
    padding: 18px;
}

.proudg-flexible-launcher__icon {
    display: grid;
    width: 44px;
    height: 44px;
    place-items: center;
    border-radius: 13px;
    background: #dceaff;
    color: #2459a4;
    font-size: 18px;
}

.proudg-flexible-launcher h2,
.proudg-flexible-launcher p {
    margin: 0;
}

.proudg-flexible-launcher h2 { font-size: 15px; }
.proudg-flexible-launcher p { margin-top: 4px; color: #64738a; font-size: 11px; }

.proudg-flexible-details > summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    padding: 17px 19px;
    cursor: pointer;
    list-style: none;
}

.proudg-flexible-details > summary::-webkit-details-marker { display: none; }
.proudg-flexible-details > summary strong,
.proudg-flexible-details > summary small { display: block; }
.proudg-flexible-details > summary strong { font-size: 14px; }
.proudg-flexible-details > summary small { margin-top: 3px; color: #68778d; }
.proudg-flexible-details__action { color: #205aa8; font-size: 11px; font-weight: 800; white-space: nowrap; }
.proudg-flexible-details[open] .proudg-flexible-details__action::before { content: "Ocultar opciones"; }
.proudg-flexible-details:not([open]) .proudg-flexible-details__action::before { content: "Mostrar opciones"; }

.proudg-flexible-details__grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
    gap: 10px;
    padding: 0 18px 18px;
}

.proudg-subject {
    position: relative;
    width: 100%;
    min-height: 112px;
    padding: 11px 10px 9px 14px;
    overflow: hidden;
    border: 1px solid #d5deea;
    border-radius: 11px;
    background: #fff;
    color: var(--proudg-ink);
    font: inherit;
    text-align: left;
    cursor: pointer;
    transition: transform .16s ease, box-shadow .16s ease, border-color .16s ease;
}

.proudg-subject::before {
    content: "";
    position: absolute;
    inset: 0 auto 0 0;
    width: 4px;
    background: #8390a3;
}

.proudg-subject--design::before { background: #3978e7; }
.proudg-subject--technical::before { background: #e27732; }
.proudg-subject--theory::before { background: #8e5dc4; }
.proudg-subject--urban::before { background: #22a283; }
.proudg-subject--management::before { background: #d49a19; }
.proudg-subject--representation::before { background: #d84b5f; }
.proudg-subject--variable::before { background: #526175; }
.proudg-subject--optional::before { background: #7c8799; }
.proudg-subject--basica-comun::before { background: #3978e7; }
.proudg-subject--basica-particular::before { background: #8e5dc4; }
.proudg-subject--especializante::before { background: #22a283; }
.proudg-subject--optativa::before { background: #d49a19; }
.proudg-subject--formacion::before { background: #526175; }

.proudg-subject:hover,
.proudg-subject:focus-visible {
    z-index: 1;
    border-color: #9ab6e8;
    outline: none;
    box-shadow: 0 8px 20px rgba(41, 72, 122, .13);
    transform: translateY(-2px);
}

.proudg-subject__name,
.proudg-subject__meta,
.proudg-subject__status,
.proudg-subject__code,
.proudg-subject__requirement {
    display: block;
}

.proudg-subject__catalog,
.proudg-subject__warning {
    display: block;
    width: fit-content;
    margin-top: 6px;
    padding: 2px 6px;
    border-radius: 999px;
    background: #eaf3ff;
    color: #265da8;
    font-size: 8px;
    font-weight: 800;
}

.proudg-subject__warning {
    background: #fff0d8;
    color: #8a5208;
}

.proudg-subject__code {
    margin-bottom: 5px;
    color: #2b5aa0;
    font-size: 9px;
    font-weight: 850;
    letter-spacing: .06em;
}

.proudg-subject__name {
    font-size: 12px;
    font-weight: 750;
    line-height: 1.28;
}

.proudg-subject__meta {
    margin-top: 7px;
    color: #718096;
    font-size: 9px;
    line-height: 1.2;
}

.proudg-subject__requirement {
    margin-top: 6px;
    color: #8a5b10;
    font-size: 9px;
    font-weight: 750;
}

.proudg-subject__status {
    width: fit-content;
    margin-top: 7px;
    padding: 2px 6px;
    border-radius: 999px;
    background: #e9f1ff;
    color: #1d56b4;
    font-size: 9px;
    font-weight: 800;
}

.proudg-subject--status-approved { background: #f1fbf6; }
.proudg-subject--status-approved .proudg-subject__status { background: #d7f3e3; color: #12633f; }
.proudg-subject--status-current { background: #fff9eb; }
.proudg-subject--status-current .proudg-subject__status { background: #ffebba; color: #80500b; }
.proudg-subject--status-planned { background: #f3f0ff; }
.proudg-subject--status-planned .proudg-subject__status { background: #e4dcff; color: #5731a4; }

.proudg-subject[hidden],
.proudg-plan-unavailable[hidden],
.proudg-no-results[hidden] {
    display: none !important;
}

.proudg-no-results,
.proudg-plan-unavailable {
    padding: 55px 25px;
    border: 1px dashed #c1ccda;
    border-radius: 18px;
    background: #fff;
    color: #65738a;
    text-align: center;
}

.proudg-plan-unavailable .fa {
    margin-bottom: 15px;
    color: #7b8da7;
    font-size: 38px;
}

.proudg-subject-dialog {
    width: min(580px, calc(100vw - 28px));
    padding: 31px;
    border: 0;
    border-radius: 22px;
    box-shadow: 0 35px 90px rgba(12, 27, 54, .34);
}

.proudg-subject-dialog::backdrop {
    background: rgba(16, 28, 51, .58);
    backdrop-filter: blur(3px);
}

.proudg-structure-notice {
    width: min(610px, calc(100vw - 28px));
    padding: 34px 34px 30px;
    overflow: visible;
    border: 0;
    border-top: 6px solid #d9920b;
    border-radius: 20px;
    background: #fff;
    box-shadow: 0 35px 90px rgba(12, 27, 54, .38);
}

.proudg-structure-notice::backdrop {
    background: rgba(16, 28, 51, .64);
    backdrop-filter: blur(4px);
}

.proudg-structure-notice__icon {
    display: grid;
    width: 52px;
    height: 52px;
    margin-bottom: 16px;
    place-items: center;
    border-radius: 16px;
    background: #fff3d5;
    color: #a76600;
    font-size: 25px;
}

.proudg-structure-notice h2 {
    margin: 5px 34px 12px 0;
    font-size: clamp(23px, 4vw, 31px);
    line-height: 1.14;
}

.proudg-structure-notice > p:not(.proudg-eyebrow) {
    color: #59677c;
    line-height: 1.65;
}

.proudg-structure-notice__clarification {
    margin: 18px 0;
    padding: 13px 15px;
    border: 1px solid #eed397;
    border-radius: 11px;
    background: #fff9ea;
    color: #6b4c12 !important;
}

.proudg-flexible-dialog {
    width: min(1120px, calc(100vw - 32px));
    max-height: min(88vh, 860px);
    padding: 0;
    overflow: hidden;
    border: 0;
    border-radius: 22px;
    background: #f6f8fc;
    box-shadow: 0 35px 90px rgba(12, 27, 54, .38);
}

.proudg-flexible-dialog::backdrop {
    background: rgba(16, 28, 51, .64);
    backdrop-filter: blur(4px);
}

.proudg-flexible-dialog__header {
    position: relative;
    padding: 24px 66px 18px 25px;
    border-bottom: 1px solid #dce4ef;
    background: #fff;
}

.proudg-flexible-dialog__header p,
.proudg-flexible-dialog__header h2 { margin: 0; }
.proudg-flexible-dialog__header h2 { margin-top: 4px; font-size: clamp(20px, 3vw, 30px); }
.proudg-flexible-dialog__body { max-height: calc(min(88vh, 860px) - 102px); padding: 18px 24px 26px; overflow-y: auto; }
.proudg-flexible-dialog__search { position: sticky; top: 0; z-index: 4; display: flex; margin-bottom: 16px; box-shadow: 0 8px 18px rgba(35, 57, 91, .09); }
.proudg-flexible-dialog__search input { width: 100%; }
.proudg-flexible-dialog__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 11px; }
.proudg-flexible-dialog__grid .proudg-subject { min-height: 126px; }

.proudg-dialog-close {
    position: absolute;
    top: 13px;
    right: 15px;
    width: 34px;
    height: 34px;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: #edf1f6;
    color: #48566d;
    font-size: 24px;
    line-height: 1;
    cursor: pointer;
}

.proudg-subject-dialog h2 {
    padding-right: 22px;
    font-size: 28px;
    line-height: 1.15;
}

.proudg-subject-dialog dl {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 8px;
    margin: 22px 0;
}

.proudg-dialog-requirement {
    padding: 10px 12px;
    border: 1px solid #efd094;
    border-radius: 9px;
    background: #fff8e9;
    color: #7d5009;
    font-size: 12px;
}

.proudg-official-notes {
    margin-top: 20px;
    padding: 22px 25px;
    border: 1px solid var(--proudg-line);
    border-radius: 16px;
    background: #fff;
}

.proudg-official-notes h2 {
    margin-bottom: 10px;
    font-size: 18px;
}

.proudg-official-notes ul {
    margin: 0 0 12px;
    padding-left: 20px;
}

.proudg-official-notes li {
    margin-bottom: 5px;
    list-style: disc;
}

.proudg-official-notes p {
    margin: 0;
    color: #68758a;
    font-size: 12px;
}

.proudg-subject-dialog dl > div {
    padding: 12px;
    border-radius: 10px;
    background: #f1f5f9;
}

.proudg-subject-dialog dt {
    color: #748198;
    font-size: 10px;
    text-transform: uppercase;
}

.proudg-subject-dialog dd {
    margin: 3px 0 0;
    font-size: 12px;
    font-weight: 700;
}

.proudg-dialog-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 9px;
}

.proudg-dialog-actions a {
    padding: 10px 13px;
    border-radius: 9px;
    background: #eaf3ff;
    font-size: 12px;
    font-weight: 750;
    text-decoration: none;
}

.proudg-alert {
    margin-bottom: 18px;
    padding: 14px 17px;
    border: 1px solid #c7d9ef;
    border-radius: 12px;
    background: #edf5ff;
}

.proudg-alert--error { border-color: #efb9b9; background: #fff0f0; color: #8d2828; }
.proudg-alert--success { border-color: #addbc4; background: #ecfaf3; color: #17633f; }

.proudg-onboarding,
.proudg-login-gate {
    width: min(720px, calc(100vw - 32px));
}

.proudg-onboarding__card,
.proudg-login-gate .proudg-card {
    padding: clamp(28px, 6vw, 55px);
}

.proudg-onboarding h1,
.proudg-login-gate h1 {
    margin-bottom: 12px;
    font-size: clamp(30px, 5vw, 46px);
    font-weight: 800;
    line-height: 1.08;
}

.proudg-profile-form {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 18px;
    margin-top: 28px;
}

.proudg-profile-form label {
    margin: 0;
}

.proudg-profile-form .proudg-primary-button {
    grid-column: 1 / -1;
}

.proudg-primary-button,
.proudg-secondary-button,
.proudg-google-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 46px;
    padding: 11px 18px;
    border: 0;
    border-radius: 11px;
    background: var(--proudg-blue);
    color: #fff !important;
    font: inherit;
    font-weight: 750;
    text-decoration: none !important;
    cursor: pointer;
}

.proudg-secondary-button {
    border: 1px solid #b8c8dd;
    background: rgba(255,255,255,.8);
    color: #233653 !important;
}

.proudg-privacy-note {
    grid-column: 1 / -1;
    margin: 0 !important;
    color: #718096;
    font-size: 11px;
    text-align: center;
}

.proudg-login-gate {
    text-align: center;
}

.proudg-login-gate__icon {
    display: grid;
    width: 68px;
    height: 68px;
    margin: 0 auto 18px;
    place-items: center;
    border-radius: 22px;
    background: #eaf3ff;
    color: var(--proudg-blue);
    font-size: 30px;
}

.proudg-google-button {
    gap: 10px;
    margin: 16px auto 12px;
    border: 1px solid #c9d3e0;
    background: #fff;
    box-shadow: 0 5px 16px rgba(36, 55, 88, .08);
    color: #28364d !important;
}

.proudg-google-button span {
    display: grid;
    width: 24px;
    height: 24px;
    place-items: center;
    border-radius: 50%;
    background: conic-gradient(from -45deg, #4285f4 0 25%, #34a853 0 50%, #fbbc05 0 75%, #ea4335 0);
    color: #fff;
    font-weight: 900;
}

.proudg-login-gate small {
    display: block;
    color: #748198;
}

.proudg-progress-overview {
    display: grid;
    grid-template-columns: auto 1fr minmax(260px, auto);
    align-items: center;
    gap: 30px;
    margin-bottom: 20px;
    padding: 28px;
}

.proudg-progress-ring {
    display: grid;
    width: 138px;
    height: 138px;
    place-content: center;
    border-radius: 50%;
    background: radial-gradient(closest-side, #fff 75%, transparent 76% 99%), conic-gradient(var(--proudg-blue) calc(var(--progress) * 1%), #e4eaf2 0);
    text-align: center;
}

.proudg-progress-ring strong {
    font-size: 29px;
    line-height: 1;
}

.proudg-progress-ring span {
    margin-top: 4px;
    color: #718096;
    font-size: 10px;
}

.proudg-progress-copy h2 {
    margin-bottom: 7px;
    font-size: 21px;
}

.proudg-progress-copy p {
    color: #69778d;
    font-size: 12px;
}

.proudg-progress-bar {
    height: 8px;
    overflow: hidden;
    border-radius: 999px;
    background: #e4eaf2;
}

.proudg-progress-bar span {
    display: block;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, #2867d7, #29a881);
}

.proudg-progress-stats {
    display: grid;
    grid-template-columns: repeat(2, minmax(100px, 1fr));
    gap: 8px;
}

.proudg-progress-stats span {
    padding: 10px;
    border-radius: 10px;
    background: #f4f7fa;
    color: #69778d;
    font-size: 10px;
}

.proudg-progress-stats strong {
    display: block;
    color: #1e2d46;
    font-size: 20px;
}

.proudg-progress-editor {
    margin-top: 28px;
}

.proudg-progress-editor__heading {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 15px;
    margin-bottom: 14px;
}

.proudg-progress-editor__heading h2 {
    margin: 0;
}

.proudg-dashboard-semesters {
    display: grid;
    gap: 10px;
}

.proudg-dashboard-semester {
    border: 1px solid var(--proudg-line);
    border-radius: 14px;
    background: #fff;
}

.proudg-dashboard-semester summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 16px 18px;
    font-weight: 800;
    cursor: pointer;
}

.proudg-dashboard-semester summary small {
    color: #758298;
    font-weight: 500;
}

.proudg-dashboard-semester[open] summary {
    border-bottom: 1px solid var(--proudg-line);
}

.proudg-dashboard-semester > div {
    padding: 4px 18px;
}

.proudg-progress-row {
    display: grid;
    grid-template-columns: 1fr 170px;
    align-items: center;
    gap: 15px;
    margin: 0;
    padding: 12px 0;
    border-bottom: 1px solid #edf0f4;
}

.proudg-progress-row:last-child {
    border-bottom: 0;
}

.proudg-progress-row strong,
.proudg-progress-row small {
    display: block;
}

.proudg-progress-row strong {
    font-size: 13px;
}

.proudg-progress-row small {
    color: #7d899b;
    font-size: 10px;
}

.proudg-sticky-save {
    position: sticky;
    z-index: 3;
    bottom: 12px;
    display: flex;
    justify-content: flex-end;
    margin-top: 16px;
    padding: 12px;
    border: 1px solid rgba(190,204,221,.85);
    border-radius: 14px;
    background: rgba(255,255,255,.9);
    box-shadow: 0 12px 35px rgba(23,34,59,.14);
    backdrop-filter: blur(10px);
}

@media (max-width: 991px) {
    .proudg-student-shell {
        margin-top: 22px;
    }

    .proudg-curriculum__hero,
    .proudg-dashboard__hero {
        align-items: stretch;
        flex-direction: column;
    }

    .proudg-plan-switcher,
    .proudg-curriculum__selectors {
        min-width: 0;
    }

    .proudg-curriculum__mascot {
        order: 3;
        margin: 0;
    }

    .proudg-curriculum__toolbar {
        align-items: stretch;
        flex-direction: column;
    }

    .proudg-search-field {
        width: 100%;
    }

    .proudg-legend {
        justify-content: flex-start;
    }

    .proudg-progress-overview {
        grid-template-columns: auto 1fr;
    }

    .proudg-progress-stats {
        grid-column: 1 / -1;
        grid-template-columns: repeat(4, 1fr);
    }

    .proudg-route-summary {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 640px) {
    .proudg-structure-notice { padding: 27px 20px 22px; }
    .proudg-student-shell {
        width: min(100% - 20px, 1440px);
        margin-bottom: 45px;
    }

    .proudg-curriculum__hero,
    .proudg-dashboard__hero {
        padding: 24px 20px;
        border-radius: 19px;
    }

    .proudg-beta-banner {
        grid-template-columns: auto 1fr;
    }

    .proudg-beta-banner a {
        grid-column: 1 / -1;
        text-align: center;
    }

    .proudg-source-links {
        grid-column: 1 / -1;
        display: grid;
        grid-template-columns: 1fr 1fr;
    }

    .proudg-profile-form {
        grid-template-columns: 1fr;
    }

    .proudg-profile-form .proudg-primary-button {
        grid-column: auto;
    }

    .proudg-subject-dialog {
        padding: 26px 20px;
    }

    .proudg-flexible-launcher {
        min-width: calc(100vw - 40px);
        grid-template-columns: auto 1fr;
    }

    .proudg-flexible-launcher .proudg-primary-button { grid-column: 1 / -1; width: 100%; }
    .proudg-flexible-details { min-width: calc(100vw - 40px); }
    .proudg-flexible-dialog { width: calc(100vw - 18px); max-height: 92vh; border-radius: 17px; }
    .proudg-flexible-dialog__header { padding: 20px 58px 15px 18px; }
    .proudg-flexible-dialog__body { max-height: calc(92vh - 90px); padding: 14px; }
    .proudg-flexible-dialog__grid { grid-template-columns: 1fr; }

    .proudg-subject-dialog dl {
        grid-template-columns: 1fr;
    }

    .proudg-route-summary {
        grid-template-columns: 1fr 1fr;
    }

    .proudg-progress-overview {
        grid-template-columns: 1fr;
        padding: 20px;
    }

    .proudg-progress-ring {
        margin: auto;
    }

    .proudg-progress-stats {
        grid-column: auto;
        grid-template-columns: repeat(2, 1fr);
    }

    .proudg-progress-editor__heading {
        align-items: flex-start;
        flex-direction: column;
    }

    .proudg-progress-row {
        grid-template-columns: 1fr;
        gap: 7px;
    }
}
