/* Authentication and student portal */
.portal-notice {
    padding: 14px 17px;
    border: 1px solid var(--line-strong);
    border-radius: 15px;
    color: var(--text-soft);
    background: var(--surface-soft);
}
.portal-notice--error { color: #ff9ca4; border-color: rgba(255,90,104,.36); background: rgba(255,69,84,.08); }
.portal-notice--success { color: var(--cyan); border-color: rgba(84,229,255,.28); background: rgba(84,229,255,.06); }
.portal-notice--welcome { display:flex; gap:8px; margin:22px 0 0; color:var(--text-soft); border-color:rgba(152,202,63,.3); background:rgba(152,202,63,.07); }
.portal-notice--welcome strong { color:#98ca3f; }

.auth-shell {
    position: relative;
    min-height: 100vh;
    padding: 150px 0 100px;
    overflow: hidden;
    background: radial-gradient(circle at 76% 28%, rgba(46,140,255,.14), transparent 32%), var(--bg);
}
.auth-ambient { position:absolute; inset:0; pointer-events:none; }
.auth-ambient::before {
    position:absolute; inset:8% auto auto 52%; width:620px; height:620px;
    border:1px solid rgba(84,229,255,.08); border-radius:50%; content:"";
    box-shadow:0 0 100px rgba(46,140,255,.08), inset 0 0 90px rgba(84,229,255,.03);
    animation:portal-orbit 18s linear infinite;
}
.auth-ambient i { position:absolute; width:7px; height:7px; border-radius:50%; background:var(--cyan); box-shadow:0 0 22px var(--cyan); opacity:.55; animation:portal-float 6s ease-in-out infinite; }
.auth-ambient i:nth-child(1){left:10%;top:26%}.auth-ambient i:nth-child(2){right:9%;top:62%;animation-delay:-2s}.auth-ambient i:nth-child(3){left:46%;bottom:8%;animation-delay:-4s}
.auth-layout { position:relative; display:grid; grid-template-columns:minmax(0,.85fr) minmax(430px,.72fr); gap:clamp(60px,9vw,150px); align-items:center; }
.auth-story { max-width:650px; }
.auth-story__brand {
    position:relative; display:grid; place-items:center; width:245px; min-height:88px; margin-bottom:34px; padding:17px 22px;
    border:1px solid rgba(84,229,255,.26); background:linear-gradient(145deg,rgba(12,30,60,.88),rgba(4,10,24,.94));
    box-shadow:0 20px 70px rgba(46,140,255,.19),inset 0 0 28px rgba(84,229,255,.035);
    clip-path:polygon(13px 0,calc(100% - 13px) 0,100% 13px,100% calc(100% - 13px),calc(100% - 13px) 100%,13px 100%,0 calc(100% - 13px),0 13px);
    overflow:hidden;
}
.auth-story__brand::after { position:absolute; right:-35%; bottom:0; left:-35%; height:1px; background:linear-gradient(90deg,transparent,var(--cyan),transparent); box-shadow:0 0 13px rgba(84,229,255,.8); content:""; animation:portal-brand-scan 3.2s ease-in-out infinite; }
.auth-story__brand img { display:block; width:195px; height:auto; filter:brightness(0) invert(1) drop-shadow(0 0 15px rgba(46,140,255,.22)); }
[data-theme="light"] .auth-story__brand img { filter:none; }
@keyframes portal-brand-scan { 0%,100% { opacity:.25; transform:translateY(-73px); } 50% { opacity:1; transform:translateY(-8px); } }
.auth-story h1 { max-width:640px; margin:12px 0 22px; font-size:clamp(48px,6vw,86px); line-height:.98; letter-spacing:-.055em; }
.auth-story > p:not(.eyebrow) { max-width:580px; margin:0; color:var(--text-soft); font-size:18px; line-height:1.75; }
.auth-story__proof { display:grid; grid-template-columns:repeat(3,1fr); gap:18px; margin-top:46px; padding-top:28px; border-top:1px solid var(--line); }
.auth-story__proof div { display:grid; gap:1px; }
.auth-story__proof strong { color:var(--cyan); font-size:25px; }
.auth-story__proof span { color:var(--text-faint); font-size:11px; text-transform:uppercase; letter-spacing:.08em; }
.auth-story blockquote { max-width:500px; margin:38px 0 0; color:var(--text-faint); font-size:13px; font-style:italic; line-height:1.7; }
.auth-card {
    position:relative; padding:clamp(26px,4vw,48px); border:1px solid var(--line-strong); border-radius:32px;
    background:color-mix(in srgb,var(--surface-solid) 88%,transparent); box-shadow:0 38px 120px rgba(0,12,45,.4),inset 0 1px rgba(255,255,255,.06);
    backdrop-filter:blur(24px);
}
.auth-card::before { position:absolute; inset:-1px 34px auto; height:1px; background:linear-gradient(90deg,transparent,var(--cyan),transparent); content:""; opacity:.7; }
.auth-card > .portal-notice { margin-bottom:22px; }
.auth-card__header > span { color:#98ca3f; font-size:10px; font-weight:800; letter-spacing:.13em; text-transform:uppercase; }
.auth-card__header h2 { margin:8px 0; font-size:clamp(32px,4vw,48px); letter-spacing:-.04em; }
.auth-card__header p { min-height:26px; margin:0 0 28px; color:var(--text-soft); transition:opacity .2s ease; }
.auth-form { display:grid; gap:18px; }
.auth-form label:not(.auth-consent) { display:grid; gap:8px; }
.auth-form label > span:first-child { color:var(--text-soft); font-size:11px; font-weight:800; letter-spacing:.04em; }
.auth-form input:not([type="checkbox"]) {
    width:100%; min-height:52px; padding:0 15px; color:var(--text); border:1px solid var(--line-strong); border-radius:14px;
    outline:none; background:color-mix(in srgb,var(--bg) 73%,transparent); font:inherit; transition:.2s ease;
}
.auth-form input:not([type="checkbox"]):focus { border-color:var(--blue-bright); box-shadow:0 0 0 4px rgba(46,140,255,.12); }
.auth-form label.is-valid input:not([type="checkbox"]) { border-color:rgba(152,202,63,.65); box-shadow:0 0 0 3px rgba(152,202,63,.07); }
.auth-form label.is-invalid input:not([type="checkbox"]) { border-color:rgba(255,90,104,.65); box-shadow:0 0 0 3px rgba(255,90,104,.07); }
.auth-form label small { color:var(--text-faint); font-size:10px; line-height:1.5; }
.auth-form > .button,.auth-step > .button { width:100%; justify-content:center; margin-top:4px; }
.auth-fields { display:grid; gap:16px; }
.auth-fields--two { grid-template-columns:repeat(2,minmax(0,1fr)); }
.password-field { position:relative; }
.password-field input { padding-right:74px !important; }
.password-field button { position:absolute; top:50%; right:10px; padding:7px 8px; color:var(--cyan); border:0; background:transparent; font-size:10px; font-weight:800; transform:translateY(-50%); cursor:pointer; }
.auth-form__meta { display:flex; justify-content:space-between; gap:15px; align-items:center; color:var(--text-soft); font-size:11px; }
.auth-form__meta label { display:flex !important; grid-template-columns:auto 1fr; gap:8px !important; align-items:center; }
.auth-form__meta a,.auth-card__switch a { color:var(--cyan); font-weight:700; }
.auth-card__switch { margin:24px 0 0; padding-top:22px; color:var(--text-soft); border-top:1px solid var(--line); text-align:center; font-size:12px; }
.auth-honeypot { position:absolute !important; left:-9999px !important; width:1px !important; height:1px !important; }
.registration-progress { height:3px; margin:18px 0 16px; border-radius:999px; background:var(--line); overflow:hidden; }
.registration-progress i { display:block; width:33.333%; height:100%; border-radius:inherit; background:linear-gradient(90deg,var(--blue),var(--cyan)); transition:width .45s var(--ease); }
.registration-steps { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; padding:0; margin:0 0 28px; list-style:none; }
.registration-steps li { display:flex; gap:7px; align-items:center; color:var(--text-faint); font-size:9px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; transition:.25s ease; }
.registration-steps li span { display:grid; place-items:center; width:22px; height:22px; border:1px solid var(--line); border-radius:50%; }
.registration-steps li.is-active { color:var(--text); }.registration-steps li.is-active span { color:#fff; border-color:var(--blue); background:var(--blue); box-shadow:0 0 18px rgba(46,140,255,.34); }
.registration-steps li.is-complete { color:#98ca3f; }.registration-steps li.is-complete span { border-color:#98ca3f; }
.auth-step { display:grid; gap:18px; animation:portal-step .4s var(--ease) both; }
.auth-step[hidden] { display:none; }
.auth-step__guide {
    display:grid; grid-template-columns:42px minmax(0,1fr); gap:13px; align-items:center; padding:13px 15px;
    border:1px solid rgba(84,229,255,.13); border-radius:15px; background:linear-gradient(110deg,rgba(46,140,255,.08),rgba(84,229,255,.025));
}
.auth-step__guide > span {
    display:grid; place-items:center; width:42px; height:42px; color:var(--cyan); border:1px solid rgba(84,229,255,.28); border-radius:12px;
    background:rgba(4,13,31,.62); box-shadow:inset 0 0 15px rgba(84,229,255,.05); font:800 10px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.08em;
}
.auth-step__guide > div { display:grid; gap:2px; }
.auth-step__guide strong { color:var(--text); font-size:12px; }
.auth-step__guide small { color:var(--text-faint); font-size:9px; line-height:1.45; }
.platzi-email-hint {
    position:relative; display:grid; grid-template-columns:34px minmax(0,1fr); gap:11px; align-items:start; margin-top:-7px; padding:12px 13px;
    overflow:hidden; border:1px solid rgba(152,202,63,.28); border-radius:14px; background:linear-gradient(110deg,rgba(152,202,63,.1),rgba(84,229,255,.025));
    animation:portal-hint .28s var(--ease) both;
}
.platzi-email-hint[hidden] { display:none; }
.platzi-email-hint > span { display:grid; place-items:center; width:32px; height:32px; color:#07131f; border-radius:10px; background:#98ca3f; box-shadow:0 0 20px rgba(152,202,63,.18); font-size:14px; font-weight:900; }
.platzi-email-hint p { margin:0; color:var(--text-soft); font-size:9px; line-height:1.55; }
.platzi-email-hint strong { display:block; margin-bottom:2px; color:#b8e86a; font-size:10px; }
.password-security {
    position:relative; margin-top:-8px; padding:13px 14px 12px; overflow:hidden; border:1px solid rgba(84,229,255,.14); border-radius:14px;
    background:linear-gradient(145deg,rgba(4,13,31,.72),rgba(12,30,58,.56)); transition:border-color .3s ease,box-shadow .3s ease;
}
.password-security::after { position:absolute; inset:0 auto 0 -45%; width:35%; background:linear-gradient(90deg,transparent,rgba(84,229,255,.06),transparent); content:""; transform:skewX(-18deg); transition:left .5s var(--ease); pointer-events:none; }
.password-security.is-complete { border-color:rgba(152,202,63,.42); box-shadow:inset 0 0 26px rgba(152,202,63,.035),0 0 20px rgba(152,202,63,.05); }
.password-security.is-complete::after { left:115%; }
.password-security__head { display:flex; justify-content:space-between; gap:12px; align-items:center; margin-bottom:10px; }
.password-security__head span { color:var(--text-faint); font:800 8px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.12em; text-transform:uppercase; }
.password-security__head strong { color:#7f91ad; font-size:9px; transition:color .25s ease; }
.password-security.is-complete .password-security__head strong { color:#b8e86a; text-shadow:0 0 14px rgba(152,202,63,.3); }
.password-security__meter { display:grid; grid-template-columns:repeat(3,1fr); gap:5px; }
.password-security__meter i { height:7px; border:1px solid rgba(139,175,226,.13); background:rgba(139,175,226,.08); clip-path:polygon(5px 0,100% 0,calc(100% - 5px) 100%,0 100%); transition:.32s var(--ease); }
.password-security__meter i.is-active { border-color:rgba(84,229,255,.5); background:linear-gradient(90deg,var(--blue),var(--cyan)); box-shadow:0 0 14px rgba(84,229,255,.26); }
.password-security.is-complete .password-security__meter i.is-active { border-color:rgba(152,202,63,.65); background:linear-gradient(90deg,#54e5ff,#98ca3f); box-shadow:0 0 16px rgba(152,202,63,.28); }
.password-security ul { display:flex; flex-wrap:wrap; gap:6px 14px; padding:0; margin:10px 0 0; list-style:none; }
.password-security li { position:relative; padding-left:14px; color:var(--text-faint); font-size:8px; }
.password-security li::before { position:absolute; top:50%; left:0; width:6px; height:6px; border:1px solid currentColor; border-radius:50%; content:""; transform:translateY(-50%); }
.password-security li.is-complete { color:#9bd1df; }
.password-security li.is-complete::before { border-color:#98ca3f; background:#98ca3f; box-shadow:0 0 8px rgba(152,202,63,.5); }
.auth-form label small.password-match { min-height:15px; transition:color .2s ease; }
.password-match.is-valid { color:#98ca3f; }
.password-match.is-invalid { color:#ff8c96; }
.auth-form__actions { display:grid; grid-template-columns:auto 1fr; gap:14px; align-items:center; margin-top:4px; }
.auth-back { padding:12px 5px; color:var(--text-soft); border:0; background:transparent; cursor:pointer; }
.auth-consent { display:grid; grid-template-columns:auto 1fr; gap:10px; align-items:start; color:var(--text-soft); font-size:11px; line-height:1.55; }
.auth-consent input { margin-top:3px; accent-color:var(--blue); }
.auth-consent a { color:var(--cyan); font-weight:700; }
.auth-form__status { min-height:16px; margin:0; color:#ff9ca4; font-size:10px; }

body.has-verification-modal { overflow:hidden; }
.verification-modal { position:fixed; z-index:9990; inset:0; display:grid; place-items:center; padding:24px; }
.verification-modal__backdrop { position:absolute; inset:0; background:rgba(1,5,14,.82); backdrop-filter:blur(18px); animation:verification-fade .35s ease both; }
.verification-modal__panel {
    position:relative; width:min(560px,100%); max-height:calc(100vh - 36px); padding:34px 38px 28px; overflow:auto;
    color:var(--text); border:1px solid rgba(84,229,255,.35); border-radius:28px;
    background:radial-gradient(circle at 50% 0,rgba(46,140,255,.18),transparent 35%),linear-gradient(155deg,#0b172d,#07101f 68%);
    box-shadow:0 45px 140px rgba(0,0,0,.68),inset 0 1px rgba(255,255,255,.08); outline:none; animation:verification-enter .45s var(--ease) both;
}
.verification-modal__panel::before { position:absolute; top:0; right:45px; left:45px; height:2px; background:linear-gradient(90deg,transparent,var(--cyan),#98ca3f,transparent); content:""; box-shadow:0 0 20px rgba(84,229,255,.35); }
.verification-modal__signal { position:relative; display:grid; place-items:center; width:88px; height:88px; margin:0 auto 18px; }
.verification-modal__signal i { position:absolute; inset:7px; border:1px dashed rgba(84,229,255,.32); border-radius:50%; animation:verification-orbit 9s linear infinite; }
.verification-modal__signal i:last-child { inset:0 42px; border:0; border-radius:999px; background:linear-gradient(var(--cyan),transparent); transform-origin:2px 44px; animation-duration:3.5s; }
.verification-modal__signal span { position:relative; z-index:2; display:grid; place-items:center; width:52px; height:52px; color:#fff; border:1px solid rgba(255,255,255,.2); border-radius:16px; background:linear-gradient(145deg,var(--blue),#0750b6); box-shadow:0 0 35px rgba(46,140,255,.38); font-size:23px; }
.verification-modal__eyebrow { display:flex; justify-content:center; gap:9px; align-items:center; margin:0; color:#98ca3f; font-size:9px; font-weight:800; letter-spacing:.13em; text-transform:uppercase; }
.verification-modal__eyebrow span { width:22px; height:1px; background:var(--cyan); box-shadow:0 0 8px var(--cyan); }
.verification-modal h2 { margin:9px 0 10px; font-size:clamp(34px,5vw,48px); line-height:1; letter-spacing:-.045em; text-align:center; }
.verification-modal__panel > p:not(.verification-modal__eyebrow) { max-width:450px; margin:0 auto; color:var(--text-soft); font-size:13px; line-height:1.65; text-align:center; }
.verification-modal__panel > p strong { color:var(--cyan); }
.verification-modal__notice { display:flex; gap:9px; align-items:center; margin:21px 0 20px; padding:12px 14px; color:#a9dff0; border:1px solid rgba(84,229,255,.18); border-radius:13px; background:rgba(84,229,255,.055); font-size:10px; line-height:1.5; }
.verification-modal__notice i { flex:0 0 auto; width:7px; height:7px; border-radius:50%; background:var(--cyan); box-shadow:0 0 12px var(--cyan); }
.verification-modal__notice--envio-fallido,.verification-modal__notice--enlace-invalido { color:#ffafb6; border-color:rgba(255,90,104,.23); background:rgba(255,90,104,.06); }
.verification-modal__notice--envio-fallido i,.verification-modal__notice--enlace-invalido i { background:#ff7d8a; box-shadow:0 0 12px #ff7d8a; }
.verification-modal__steps { display:grid; gap:8px; padding:0; margin:0; list-style:none; }
.verification-modal__steps li { display:grid; grid-template-columns:35px minmax(0,1fr); gap:11px; align-items:center; padding:10px 12px; border:1px solid rgba(139,175,226,.1); border-radius:13px; background:rgba(255,255,255,.018); }
.verification-modal__steps li > span { display:grid; place-items:center; width:34px; height:34px; color:var(--cyan); border:1px solid rgba(84,229,255,.2); border-radius:10px; font:800 8px/1 ui-monospace,SFMono-Regular,Menlo,monospace; }
.verification-modal__steps li > div { display:grid; gap:1px; }
.verification-modal__steps strong { font-size:11px; }
.verification-modal__steps small { color:var(--text-faint); font-size:8px; line-height:1.45; }
.verification-modal__actions { display:grid; grid-template-columns:1fr auto; gap:12px; align-items:center; margin-top:20px; }
.verification-modal__actions .button { justify-content:center; width:100%; }
.verification-modal__actions form { margin:0; }
.verification-modal__actions form button { padding:12px 5px; color:var(--cyan); border:0; background:transparent; font-size:10px; font-weight:800; cursor:pointer; white-space:nowrap; }
.verification-modal__security { display:block; margin-top:15px; color:var(--text-faint); font-size:8px; letter-spacing:.03em; text-align:center; }

/* Dashboard */
.dashboard-shell { position:relative; min-height:100vh; padding:135px 0 120px; background:var(--bg); }
.dashboard-ambient { position:absolute; inset:0; overflow:hidden; pointer-events:none; }
.dashboard-ambient::before { position:absolute; top:-300px; right:-220px; width:850px; height:850px; border-radius:50%; background:radial-gradient(circle,rgba(46,140,255,.12),transparent 67%); content:""; }
.portal-nav { position:relative; display:flex; gap:6px; width:fit-content; padding:5px; border:1px solid var(--line); border-radius:999px; background:var(--surface); }
.portal-nav a { padding:8px 14px; color:var(--text-soft); border-radius:999px; font-size:11px; font-weight:700; }
.portal-nav a.is-active { color:#fff; background:var(--blue); box-shadow:0 8px 24px rgba(46,140,255,.25); }
.dashboard-hero { position:relative; display:grid; grid-template-columns:minmax(0,1fr) auto; gap:50px; align-items:end; padding:55px 0 35px; }
.dashboard-hero h1 { margin:12px 0 14px; font-size:clamp(50px,7vw,96px); line-height:.95; letter-spacing:-.06em; }
.dashboard-hero > div:first-child > p:last-child { max-width:680px; margin:0; color:var(--text-soft); font-size:17px; line-height:1.7; }
.dashboard-profile-score { display:grid; justify-items:center; gap:8px; min-width:150px; }
.dashboard-profile-score > div { display:grid; place-items:center; width:112px; height:112px; border-radius:50%; background:conic-gradient(var(--cyan) var(--score),var(--line) 0); box-shadow:0 0 45px rgba(84,229,255,.1); }
.dashboard-profile-score > div::before { grid-area:1/1; width:94px; height:94px; border-radius:50%; background:var(--bg-elevated); content:""; }
.dashboard-profile-score strong { z-index:1; grid-area:1/1; font-size:20px; }
.dashboard-profile-score span { color:var(--text-soft); font-size:10px; text-transform:uppercase; letter-spacing:.08em; }
.dashboard-profile-score a { color:var(--cyan); font-size:10px; font-weight:700; }
.dashboard-stats { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; margin:10px 0 28px; }
.dashboard-stats article { display:grid; gap:4px; min-height:155px; padding:23px; border:1px solid var(--line); border-radius:22px; background:linear-gradient(145deg,var(--surface),var(--surface-soft)); box-shadow:var(--shadow); }
.dashboard-stats span { color:var(--text-faint); font-size:9px; font-weight:800; letter-spacing:.11em; text-transform:uppercase; }
.dashboard-stats strong { align-self:end; font-size:38px; line-height:1; letter-spacing:-.04em; }
.dashboard-stats small { color:var(--text-soft); font-size:10px; }
.dashboard-grid { display:grid; gap:16px; min-width:0; }.dashboard-grid--connection { grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr); }
.dashboard-card { min-width:0; padding:28px; border:1px solid var(--line); border-radius:24px; background:var(--surface); box-shadow:var(--shadow); }
.dashboard-card__heading { display:flex; justify-content:space-between; gap:24px; align-items:start; }
.dashboard-card h2 { margin:7px 0 0; font-size:28px; }.dashboard-card > p { margin:18px 0 8px; color:var(--text-soft); }.dashboard-card > small { display:block; color:var(--text-faint); font-size:10px; }.dashboard-card > a { display:inline-flex; margin-top:20px; color:var(--cyan); font-size:11px; font-weight:800; }
.connection-status { display:flex; gap:7px; align-items:center; padding:7px 10px; border:1px solid var(--line); border-radius:999px; color:var(--text-soft); font-size:9px; font-weight:800; text-transform:uppercase; letter-spacing:.06em; white-space:nowrap; }
.connection-status i { width:7px; height:7px; border-radius:50%; background:#ffba55; box-shadow:0 0 14px #ffba55; }
.platzi-connection.is-connected .connection-status { color:#98ca3f; border-color:rgba(152,202,63,.3); }.platzi-connection.is-connected .connection-status i { background:#98ca3f; box-shadow:0 0 14px #98ca3f; }
.platzi-connection.is-unverified .connection-status i { background:#ff7d8a; box-shadow:0 0 14px #ff7d8a; }
.latest-course { position:relative; overflow:hidden; }.latest-course::after { position:absolute; right:-20px; bottom:-46px; color:var(--blue); content:"✓"; font-size:160px; line-height:1; opacity:.07; }
.latest-course h2 { margin-bottom:20px; }.latest-course > strong { position:relative; z-index:1; display:block; max-width:420px; font-size:18px; line-height:1.4; }
.dashboard-section { position:relative; margin-top:70px; }
.dashboard-section > header { display:flex; justify-content:space-between; gap:30px; align-items:end; margin-bottom:24px; }
.dashboard-section > header h2 { margin:8px 0 0; font-size:clamp(34px,4vw,56px); letter-spacing:-.045em; overflow-wrap:anywhere; }
.dashboard-section > header > a { color:var(--cyan); font-size:11px; font-weight:800; }
.dashboard-routes { display:grid; gap:14px; }
.dashboard-route { display:grid; grid-template-columns:210px minmax(0,1fr); min-height:190px; overflow:hidden; border:1px solid var(--line); border-radius:24px; background:var(--surface); transition:transform .3s var(--ease),border-color .3s ease; }
.dashboard-route:hover { border-color:var(--line-strong); transform:translateY(-3px); }
.dashboard-route__image { position:relative; display:block; min-height:190px; background:linear-gradient(145deg,rgba(46,140,255,.2),rgba(84,229,255,.05)); background-size:cover; background-position:center; }
.dashboard-route__image::after { position:absolute; inset:0; background:linear-gradient(90deg,transparent,rgba(5,8,20,.18)); content:""; }
.dashboard-route__image span { position:absolute; z-index:1; top:16px; left:16px; padding:5px 8px; color:#fff; border:1px solid rgba(255,255,255,.28); border-radius:999px; background:rgba(5,8,20,.6); font-size:9px; font-weight:800; }
.dashboard-route__body { display:grid; align-content:center; padding:25px 30px; }
.dashboard-route__body > p { margin:0 0 5px; color:var(--text-faint); font-size:10px; text-transform:uppercase; letter-spacing:.07em; }.dashboard-route h3 { margin:0 0 20px; font-size:22px; }
.dashboard-route__progress { height:5px; overflow:hidden; border-radius:999px; background:var(--line); }.dashboard-route__progress i { display:block; width:var(--progress); height:100%; border-radius:inherit; background:linear-gradient(90deg,var(--blue),var(--cyan)); }
.dashboard-route__body > div:last-child { display:flex; justify-content:space-between; gap:18px; margin-top:10px; color:var(--text-soft); font-size:10px; }.dashboard-route__body > div:last-child a { color:var(--cyan); font-weight:800; }
.dashboard-empty { display:grid; justify-items:center; padding:60px 24px; border:1px dashed var(--line-strong); border-radius:26px; text-align:center; background:var(--surface-soft); }.dashboard-empty > span { color:var(--cyan); font-size:50px; }.dashboard-empty h3 { margin:8px 0; font-size:26px; }.dashboard-empty p { max-width:560px; margin:0 0 24px; color:var(--text-soft); }
.credential-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
.credential-card { position:relative; min-height:275px; padding:28px; overflow:hidden; border:1px solid var(--line-strong); border-radius:24px; background:linear-gradient(150deg,rgba(46,140,255,.17),var(--surface) 56%); box-shadow:var(--shadow); }
.credential-card.is-diploma { background:linear-gradient(150deg,rgba(152,202,63,.18),var(--surface) 56%); }
.credential-card__seal { position:absolute; top:20px; right:22px; display:grid; place-items:center; width:46px; height:46px; color:var(--cyan); border:1px solid var(--line-strong); border-radius:50%; font-size:23px; }
.credential-card > small { color:#98ca3f; font-size:9px; font-weight:800; letter-spacing:.1em; text-transform:uppercase; }.credential-card h3 { max-width:80%; margin:46px 0 18px; font-size:23px; line-height:1.25; }.credential-card p { color:var(--text-soft); font-size:11px; }.credential-card code { display:block; color:var(--text-faint); font-size:10px; }.credential-card a { display:inline-flex; margin-top:24px; color:var(--cyan); font-size:10px; font-weight:800; }
.credential-empty { display:grid; grid-template-columns:auto 1fr; gap:24px; align-items:center; padding:32px; border:1px solid var(--line); border-radius:24px; background:linear-gradient(135deg,rgba(46,140,255,.08),var(--surface)); }.credential-empty > div:first-child { display:grid; place-items:center; width:74px; height:74px; color:var(--cyan); border:1px solid var(--line-strong); border-radius:22px; font-size:36px; }.credential-empty h3 { margin:0 0 7px; font-size:24px; }.credential-empty p { margin:0; color:var(--text-soft); }
.dashboard-recommendations { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
.dashboard-recommendations article { overflow:hidden; border:1px solid var(--line); border-radius:22px; background:var(--surface); transition:.3s var(--ease); }.dashboard-recommendations article:hover { transform:translateY(-4px); border-color:var(--line-strong); }
.dashboard-recommendations__image { display:block; height:170px; background:linear-gradient(145deg,rgba(46,140,255,.2),rgba(84,229,255,.04)); background-size:cover; background-position:center; }
.dashboard-recommendations article > div { padding:20px; }.dashboard-recommendations small { color:var(--text-faint); font-size:9px; text-transform:uppercase; letter-spacing:.06em; }.dashboard-recommendations h3 { margin:7px 0 5px; font-size:18px; line-height:1.35; }.dashboard-recommendations span { color:#ffba55; font-size:9px; }
.dashboard-recommendations form { margin:14px 0 0; }.dashboard-recommendations form button { padding:0; color:var(--cyan); border:0; background:transparent; font-size:10px; font-weight:800; cursor:pointer; }

@keyframes portal-orbit { to { transform:rotate(360deg); } }
@keyframes portal-float { 50% { transform:translateY(-18px); opacity:1; } }
@keyframes portal-step { from { opacity:0; transform:translateX(18px); } to { opacity:1; transform:none; } }
@keyframes portal-hint { from { opacity:0; transform:translateY(-6px); } to { opacity:1; transform:none; } }
@keyframes verification-fade { from { opacity:0; } }
@keyframes verification-enter { from { opacity:0; transform:translateY(18px) scale(.97); } }
@keyframes verification-orbit { to { transform:rotate(360deg); } }

@media (max-width:1050px) {
    .auth-layout { grid-template-columns:minmax(0,.7fr) minmax(420px,1fr); gap:50px; }
    .auth-story h1 { font-size:56px; }.auth-story__proof { grid-template-columns:1fr; gap:10px; }.auth-story__proof div { grid-template-columns:35px 1fr; align-items:center; }
    .dashboard-stats { grid-template-columns:repeat(2,1fr); }.credential-grid { grid-template-columns:repeat(2,1fr); }
}
@media (max-width:820px) {
    .auth-shell { padding-top:125px; }.auth-layout { grid-template-columns:1fr; gap:35px; }.auth-story { text-align:center; margin:auto; }.auth-story__brand { margin:0 auto 25px; }.auth-story h1 { font-size:clamp(44px,10vw,65px); }.auth-story > p:not(.eyebrow) { margin-inline:auto; }.auth-story__proof,.auth-story blockquote { display:none; }.auth-card { max-width:600px; width:100%; margin:auto; }
    .dashboard-hero { grid-template-columns:1fr; }.dashboard-profile-score { grid-template-columns:auto 1fr; justify-items:start; justify-self:start; }.dashboard-profile-score > div { grid-row:1/4; width:92px; height:92px; }.dashboard-profile-score > div::before { width:76px; height:76px; }
    .dashboard-grid--connection { grid-template-columns:1fr; }.dashboard-route { grid-template-columns:160px minmax(0,1fr); }.dashboard-recommendations { grid-template-columns:repeat(2,1fr); }
}
@media (max-width:600px) {
    .auth-shell { padding:112px 0 65px; }.auth-story__brand { width:210px; min-height:76px; padding:14px 18px; }.auth-story__brand img { width:170px; }.auth-story h1 { font-size:42px; }.auth-story > p:not(.eyebrow) { font-size:14px; }.auth-card { padding:26px 19px; border-radius:24px; }.auth-fields--two { grid-template-columns:1fr; }.registration-steps li { font-size:0; }.registration-steps li span { font-size:9px; }.auth-form__meta { align-items:flex-start; flex-direction:column; }.auth-form__actions { grid-template-columns:1fr; }.auth-back { order:2; }
    .verification-modal { padding:12px; }.verification-modal__panel { max-height:calc(100vh - 24px); padding:27px 20px 22px; border-radius:23px; }.verification-modal__signal { width:74px; height:74px; margin-bottom:13px; }.verification-modal__signal span { width:47px; height:47px; }.verification-modal h2 { font-size:36px; }.verification-modal__actions { grid-template-columns:1fr; }.verification-modal__actions form { text-align:center; }.verification-modal__steps small { font-size:7.5px; }
    .dashboard-shell { padding:112px 0 75px; }.dashboard-shell .site-shell { max-width:calc(100vw - 28px); }.portal-nav { width:100%; overflow:auto; }.portal-nav a { white-space:nowrap; }.portal-notice--welcome { flex-direction:column; }.dashboard-hero { padding-top:42px; min-width:0; }.dashboard-hero h1 { font-size:50px; }.dashboard-hero p { overflow-wrap:anywhere; }.dashboard-stats { grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; }.dashboard-stats article { min-width:0; min-height:130px; padding:17px; }.dashboard-stats strong { font-size:30px; }.dashboard-stats small { overflow-wrap:anywhere; }.dashboard-card { padding:22px 18px; }.dashboard-card__heading { flex-direction:column; }.dashboard-section { min-width:0; margin-top:52px; }.dashboard-section > header { align-items:start; flex-direction:column; gap:10px; }.dashboard-route { min-width:0; grid-template-columns:1fr; }.dashboard-route__image { min-height:165px; }.dashboard-route__body { min-width:0; padding:21px 18px; }.dashboard-route__body h3 { overflow-wrap:anywhere; }.dashboard-route__body > div:last-child { align-items:start; flex-direction:column; }.credential-grid,.dashboard-recommendations { grid-template-columns:minmax(0,1fr); }.credential-empty { grid-template-columns:1fr; }.credential-empty > div:first-child { width:58px; height:58px; }.dashboard-profile-score { width:100%; }
}
@media (prefers-reduced-motion:reduce) {
    .auth-ambient::before,.auth-ambient i,.auth-step,.auth-story__brand::after,.platzi-email-hint,.verification-modal__backdrop,.verification-modal__panel,.verification-modal__signal i { animation:none; }
}

.registration-platzi-choice{border:1px solid var(--line);border-radius:12px;padding:15px;margin:0 0 22px;min-width:0}.registration-platzi-choice legend{font-size:.8rem;padding:0 7px}.auth-form .registration-platzi-choice label{display:flex;align-items:flex-start;gap:10px;margin:12px 0}.auth-form .registration-platzi-choice input{width:18px;min-height:18px;height:18px;flex-shrink:0;margin:2px 0}.registration-platzi-choice span{font-size:.8rem;line-height:1.6}.auth-form small{color:var(--text-soft);font-size:.73rem;line-height:1.6}.auth-step[hidden]{display:none!important}.registration-steps li{min-width:0;font-size:.7rem}@media(max-width:500px){.registration-steps{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.verification-modal__panel{max-height:calc(100dvh - 24px);overflow-y:auto}.auth-form__actions{gap:10px}.auth-form__actions .button{white-space:normal}}
