:root{--blue:#0b4dcc;--ink:#172033;--muted:#687187;--line:#dfe5ef;--surface:#fff;--background:#f3f6fb;--danger:#b42318;--warning:#915f00}*{box-sizing:border-box}body{margin:0;font-family:Inter,Arial,sans-serif;color:var(--ink);background:var(--background)}
.login-shell{width:100%;min-height:100vh;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(420px,.75fr);overflow-x:hidden}.login-visual,.login-panel{min-width:0}.login-visual{position:relative;overflow:hidden;background:#071d54;min-height:100vh}.login-visual .slide{position:absolute;inset:0;background-position:center center;background-size:cover;background-repeat:no-repeat;opacity:0;transform:scale(1.025);transition:opacity 1.2s ease-in-out,transform 6s ease}.login-visual .slide.active{opacity:1;transform:scale(1)}.visual-overlay{position:absolute;inset:0;background:linear-gradient(135deg,rgba(4,18,62,.86),rgba(4,56,175,.46) 60%,rgba(0,0,0,.22));pointer-events:none}.visual-copy{position:absolute;z-index:2;left:clamp(36px,6vw,92px);right:clamp(36px,6vw,92px);bottom:clamp(120px,16vh,180px);color:#fff;max-width:680px;opacity:0;visibility:hidden;transform:translateY(10px);transition:opacity .45s ease,transform .45s ease,visibility .45s}.login-visual.show-copy .visual-copy{opacity:1;visibility:visible;transform:translateY(0)}.eyebrow{text-transform:uppercase;letter-spacing:.16em;font-size:.78rem;font-weight:700;opacity:.82}.visual-copy h1{font-size:clamp(2.6rem,5vw,5.2rem);line-height:1.02;margin:18px 0;overflow-wrap:anywhere}.visual-copy p{font-size:1.08rem;opacity:.85}.slide-thumbnails{position:absolute;z-index:3;left:50%;bottom:25px;display:flex;gap:8px;width:max-content;max-width:calc(100% - 40px);padding:10px 15px;overflow-x:auto;overflow-y:hidden;transform:translateX(-50%);border-radius:999px;background:rgba(0,0,0,.35);backdrop-filter:blur(8px);scrollbar-width:none;overscroll-behavior-inline:contain}.slide-thumbnails::-webkit-scrollbar{display:none}.slide-thumbnail{display:block;flex:0 0 auto;width:55px;height:38px;margin:0;padding:0;overflow:hidden;border:2px solid transparent;border-radius:7px;background:transparent;opacity:.6;cursor:pointer;transition:opacity .3s ease,transform .3s ease,border-color .3s ease}.slide-thumbnail img{display:block;width:100%;height:100%;object-fit:cover}.slide-thumbnail.active{border-color:#fff;opacity:1;transform:scale(1.08)}.slide-thumbnail:focus-visible{outline:3px solid #fff;outline-offset:2px}
.login-panel{display:grid;place-items:center;min-height:100vh;padding:32px;background:radial-gradient(circle at top right,#e7efff 0,transparent 36%),#f8faff}.login-card{width:min(100%,430px);background:var(--surface);padding:clamp(28px,5vw,48px);border:1px solid #dae2f0;border-radius:28px;box-shadow:0 24px 70px rgba(24,55,110,.14)}.brand img{width:148px}.intro{margin:30px 0 24px}.python-badge{display:inline-flex;padding:7px 11px;border-radius:999px;background:#e8f0ff;color:var(--blue);font-size:.75rem;font-weight:700}.intro h2{font-size:1.75rem;margin:16px 0 8px}.intro p,.dashboard-card>p{color:var(--muted);line-height:1.5;margin:0}.field{display:block;margin-top:18px}.field>span{display:block;font-size:.84rem;font-weight:600;margin-bottom:8px}.field input{width:100%;height:52px;border:1px solid var(--line);border-radius:14px;padding:0 16px;font:inherit;outline:none}.field input:focus{border-color:var(--blue);box-shadow:0 0 0 4px rgba(11,77,204,.11)}.password-field{position:relative}.password-field input{padding-right:82px}.password-field button{position:absolute;right:9px;top:9px;height:34px;border:0;border-radius:9px;background:#edf2fb;color:var(--blue);font-weight:600;cursor:pointer}
.submit-button,.secondary-button{display:inline-flex;align-items:center;justify-content:center;min-height:50px;border:0;border-radius:14px;font:inherit;font-weight:700;text-decoration:none;cursor:pointer}.submit-button{width:100%;margin-top:24px;background:linear-gradient(135deg,var(--blue),#1675ed);color:#fff;box-shadow:0 12px 24px rgba(11,77,204,.22)}.legacy-links{display:flex;justify-content:space-between;gap:16px;margin-top:20px;font-size:.82rem}.legacy-links a{color:var(--blue);text-decoration:none}.alert{padding:12px 14px;border-radius:12px;font-size:.86rem;line-height:1.4;margin:14px 0}.alert-error{background:#fef0ee;color:var(--danger)}.alert-warning{background:#fff5d6;color:var(--warning)}
.dashboard-body{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at top,#e2edff,transparent 45%),#f4f7fc}.dashboard-card{width:min(100%,720px);background:#fff;border-radius:28px;padding:clamp(28px,6vw,58px);box-shadow:0 28px 80px rgba(18,49,102,.14)}.dashboard-logo{width:150px;margin-bottom:28px}.dashboard-card h1{font-size:2.25rem;margin:18px 0 10px}.dashboard-card dl{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:28px 0}.dashboard-card dl div{background:#f5f8fd;padding:16px;border-radius:14px}.dashboard-card dt{font-size:.75rem;color:var(--muted);text-transform:uppercase}.dashboard-card dd{margin:7px 0 0;font-weight:700}.migration-note{padding:16px;border-left:4px solid var(--blue);background:#eef4ff;color:#39506f;line-height:1.5}.dashboard-actions{display:flex;align-items:center;gap:12px;margin-top:28px}.dashboard-actions form{flex:1}.secondary-button{padding:0 20px;color:var(--blue);border:1px solid var(--line);background:#fff}
@media(max-width:900px){.login-shell{grid-template-columns:1fr}.login-visual{display:none}.login-panel{padding:20px}.login-card{border-radius:22px}.dashboard-card dl{grid-template-columns:1fr}.dashboard-actions{flex-direction:column}.dashboard-actions>*{width:100%}}
@media(prefers-reduced-motion:reduce){.login-visual .slide,.slide-thumbnail{transition:none}.slide-thumbnail{scroll-behavior:auto}}
.access-body{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at top right,#dfeaff 0,transparent 36%),linear-gradient(135deg,#eef3fc,#f9fbff)}.access-card{width:min(100%,470px);padding:clamp(28px,6vw,48px);border:1px solid #dae2f0;border-radius:28px;background:#fff;box-shadow:0 24px 70px rgba(24,55,110,.14)}.access-card .brand{display:block;text-align:center}.access-card .brand img{width:148px}.access-card .intro{text-align:center}.access-card .intro h1,.success-card h1{margin:16px 0 10px;font-size:1.75rem}.access-card .intro p,.success-card p{margin:0;color:var(--muted);line-height:1.55}.back-link{display:block;margin-top:22px;color:var(--blue);font-size:.88rem;text-align:center;text-decoration:none}.candidate-list{display:grid;gap:10px;margin:22px 0 0;padding:0;border:0}.candidate-list legend{margin-bottom:10px;font-size:.85rem;font-weight:700}.candidate-option{display:flex;align-items:center;gap:12px;padding:14px;border:1px solid var(--line);border-radius:14px;cursor:pointer}.candidate-option:has(input:checked){border-color:var(--blue);background:#eef4ff;box-shadow:0 0 0 3px rgba(11,77,204,.08)}.candidate-option input{accent-color:var(--blue)}.candidate-option span{display:grid;gap:4px}.candidate-option small{color:var(--muted)}.success-card{text-align:center}.success-icon{display:grid;place-items:center;width:68px;height:68px;margin:28px auto 18px;border-radius:50%;background:#e8f8ef;color:#16834d;font-size:2rem;font-weight:700}.success-card .submit-button{margin-top:26px;text-decoration:none}.privacy-note{margin-top:10px!important;font-size:.82rem}
.login-panel,.login-card,.access-card,.dashboard-card{position:relative}.language-selector{position:absolute;z-index:20;top:20px;right:20px}.language-selector summary{display:flex;align-items:center;gap:10px;min-width:124px;height:46px;padding:0 14px;border:1px solid #d9dee8;border-radius:999px;background:#fff;box-shadow:0 6px 18px rgba(24,55,110,.09);cursor:pointer;list-style:none;user-select:none}.language-selector summary::-webkit-details-marker{display:none}.language-selector summary img,.language-menu img{width:25px;height:25px;border-radius:50%;object-fit:cover}.language-selector summary strong{font-size:.9rem}.language-chevron{display:block;flex:0 0 auto;width:10px;height:6px;margin-left:auto;color:#303746;transition:transform .18s ease}.language-selector[open] .language-chevron{transform:rotate(180deg)}.language-menu{position:absolute;top:54px;right:0;width:180px;padding:7px;border:1px solid #dfe5ef;border-radius:15px;background:#fff;box-shadow:0 18px 40px rgba(24,55,110,.16)}.language-menu form{margin:0}.language-menu button{display:flex;align-items:center;gap:10px;width:100%;padding:10px;border:0;border-radius:10px;background:#fff;color:var(--ink);font:inherit;text-align:left;cursor:pointer}.language-menu button:hover,.language-menu button[aria-current=true]{background:#edf3ff;color:var(--blue)}.access-card>.language-selector,.dashboard-card>.language-selector{top:18px;right:18px}.access-card>.brand{margin-top:48px}.dashboard-card>.dashboard-logo{margin-top:36px}@media(max-width:520px){.language-selector{top:12px;right:12px}.language-selector summary{min-width:105px;height:44px;padding:0 12px}.language-selector summary img{width:22px;height:22px}.access-card>.brand{margin-top:54px}}
/* Shared interaction feedback for buttons and button-like controls. */
:where(button,[role="button"],.submit-button,.new-student,.module-card,.status-filter,.students-pagination a,.form-actions a){transition:transform .16s ease,box-shadow .16s ease,filter .16s ease,background-color .16s ease,border-color .16s ease,color .16s ease}
:where(button,[role="button"],.submit-button,.new-student,.module-card,.status-filter,.students-pagination a,.form-actions a):focus-visible{outline:3px solid rgba(18,96,214,.24);outline-offset:3px}
@media(hover:hover) and (pointer:fine){
  :where(button,[role="button"],.submit-button,.new-student,.module-card,.status-filter,.students-pagination a,.form-actions a):not(:disabled):not([aria-disabled="true"]):hover{transform:translateY(-2px);filter:brightness(.97);box-shadow:0 9px 22px rgba(15,39,77,.14)}
  :where(.student-card[data-edit-url]){transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease}
  :where(.student-card[data-edit-url]):hover{transform:translateY(-2px);border-color:#bfd3f3;box-shadow:0 11px 25px rgba(15,39,77,.11)}
}
:where(button,[role="button"],.submit-button,.new-student,.module-card,.status-filter,.students-pagination a,.form-actions a):not(:disabled):not([aria-disabled="true"]):active{transform:translateY(0) scale(.985);box-shadow:none}
:where(button,[role="button"]):disabled,:where(button,[role="button"])[aria-disabled="true"]{cursor:not-allowed}
@media(prefers-reduced-motion:reduce){:where(button,[role="button"],.submit-button,.new-student,.module-card,.status-filter,.students-pagination a,.form-actions a,.student-card){transition:none!important}}
@media(max-width:900px){.app-breadcrumb{display:none!important}}
/* Retorno persistente ao assistente de configuração inicial. */
.initial-setup-return{position:fixed;z-index:1150;right:18px;top:96px;display:grid;grid-template-columns:auto auto;align-items:center;gap:1px 14px;padding:9px 13px 9px 8px;border:1px solid #cfe0f5;border-radius:16px;background:#fff;color:#17304f;text-decoration:none;box-shadow:0 12px 32px rgba(18,61,113,.18);animation:setup-return-in .38s ease both}.initial-setup-return>span{display:flex;grid-row:1/3;align-items:center;gap:8px}.initial-setup-return img{width:35px;height:35px;border-radius:50%;background:#e9f3ff;object-fit:contain}.initial-setup-return b{font-size:.78rem}.initial-setup-return small{color:#74849a;font-size:.65rem}.initial-setup-return>i{grid-column:2;grid-row:1/3;margin-left:2px;color:#0966d8}@keyframes setup-return-in{from{opacity:0;transform:translateY(-10px) scale(.96)}to{opacity:1;transform:none}}@media(max-width:760px){.initial-setup-return{right:10px;top:77px;padding:7px 10px 7px 7px}.initial-setup-return img{width:30px;height:30px}.initial-setup-return small{display:none}}
/* Nexxtrada institutional theme — login and shared authentication surfaces. */
:root{--blue:#f26a00;--brand-orange:#f26a00;--brand-orange-dark:#c94f00;--ink:#171717;--muted:#66676b;--line:#d9d9d9;--background:#f4f3f1}
.login-shell{border-top:3px solid var(--brand-orange)}
.login-visual{background:#0c0c0d}
.visual-overlay{background:linear-gradient(90deg,rgba(5,5,6,.72) 0%,rgba(10,10,11,.30) 58%,rgba(10,10,11,.08) 100%)}
.eyebrow{color:#ff8a2b;opacity:1}
.slide-thumbnail.active{border-color:var(--brand-orange);box-shadow:0 0 0 1px rgba(255,255,255,.75)}
.slide-thumbnail:focus-visible{outline-color:var(--brand-orange)}
.login-panel{background:radial-gradient(circle at top right,rgba(242,106,0,.13) 0,transparent 38%),linear-gradient(145deg,#f7f6f4,#e9e7e3)}
.login-card{border-color:#d8d4ce;box-shadow:0 24px 70px rgba(30,24,19,.15)}
.brand{display:inline-flex;align-items:center}
.brand img{width:186px;height:auto}
.field input:focus{border-color:var(--brand-orange);box-shadow:0 0 0 4px rgba(242,106,0,.14)}
.password-field button{background:#f5eee8;color:var(--brand-orange-dark)}
.submit-button{background:linear-gradient(135deg,#f47a18,var(--brand-orange-dark));box-shadow:0 12px 24px rgba(201,79,0,.25)}
.legacy-links a{color:var(--brand-orange-dark)}
.language-selector summary{border-color:#d8d4ce;box-shadow:0 6px 18px rgba(39,30,23,.09)}
.language-menu button:hover,.language-menu button[aria-current=true]{background:#fff1e7;color:var(--brand-orange-dark)}

/* Nexxtrada login card — dark premium treatment. */
.login-panel{background:radial-gradient(circle at 76% 15%,rgba(242,106,0,.22),transparent 34%),linear-gradient(145deg,#1a1a1c,#070708)}
.login-card{background:linear-gradient(155deg,#19191b,#0d0d0e);border:1px solid rgba(242,106,0,.48);box-shadow:0 26px 80px rgba(0,0,0,.54),0 0 0 1px rgba(255,255,255,.04) inset;color:#f7f7f7}
.login-card .brand{display:flex;width:210px;max-width:64%;margin:8px auto 0}
.login-card .brand img{display:block;width:100%;height:auto;filter:drop-shadow(0 8px 18px rgba(0,0,0,.34))}
.login-card .intro p{color:#aaa9ad}
.login-card .field>span{color:#f0f0f1}
.login-card .field input{background:#171719;border-color:#3c3c40;color:#fff}
.login-card .field input::placeholder{color:#85858b}
.login-card .field input:focus{background:#1c1c1f;border-color:var(--brand-orange);box-shadow:0 0 0 4px rgba(242,106,0,.18)}
.login-card .password-field button{background:#292422;color:#ff8a2b}
.login-card .legacy-links a{color:#ff8a2b}
.login-card .language-selector summary{background:#19191b;border-color:#49494d;color:#f7f7f7;box-shadow:0 8px 22px rgba(0,0,0,.28)}
.login-card .language-selector .language-chevron{color:#ff8a2b}
.login-card .language-menu{background:#171719;border-color:#3f3f43;box-shadow:0 18px 42px rgba(0,0,0,.48)}
.login-card .language-menu button{background:#171719;color:#ededee}
.login-card .language-menu button:hover,.login-card .language-menu button[aria-current=true]{background:#302118;color:#ff9a4c}
.login-card .language-selector[open] .language-menu{display:block!important;width:190px;height:auto!important;min-height:166px;padding:8px;overflow:visible!important;visibility:visible!important;opacity:1!important}
.login-card .language-menu form{display:grid!important;width:100%;height:auto!important;gap:4px;margin:0!important;padding:0!important;visibility:visible!important;opacity:1!important}
.login-card .language-menu button{display:flex!important;width:100%!important;min-height:46px!important;align-items:center;gap:10px;padding:10px!important;visibility:visible!important;opacity:1!important}
.login-card .language-menu button img{display:block!important;width:25px!important;height:25px!important;flex:0 0 25px;visibility:visible!important;opacity:1!important}
.login-card .language-menu button span{display:block!important;visibility:visible!important;opacity:1!important;white-space:nowrap}
@media(max-width:900px){.login-panel{background:radial-gradient(circle at 75% 8%,rgba(242,106,0,.2),transparent 30%),#09090a}.login-card{border-radius:0}}
