/* Shared identity, separated collections, and the CEPREUNI score workspace. */
.profile-mini{display:grid;place-items:center;border-radius:50%;width:24px;height:24px;font-size:11px;color:#fff;background:#304264;flex-shrink:0}.header .account{display:flex;align-items:center;gap:9px}.header .account>span:last-child{max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.profile-entry{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px}.entry-welcome{display:flex;flex-direction:column;align-items:center;text-align:center;justify-content:center;min-height:480px}.entry-welcome h2{font-size:36px;letter-spacing:-1.5px;margin:20px 0}.entry-welcome p{max-width:300px}.profile-emblem{position:relative;display:grid;place-items:center;margin:44px 0 10px;width:100px;height:100px;border-radius:50%;font-size:40px;font-weight:700;color:#ebf1ff;background:radial-gradient(circle at 30% 20%,#73829c,#24324d 40%,#070a10 75%);box-shadow:inset 0 0 15px #c6dcff44,0 0 55px #6684ba22}.profile-emblem span,.profile-emblem i{position:absolute;inset:-25px;border:1px solid #a5bddf44;border-radius:50%;transform:rotateX(55deg) rotateZ(-30deg);animation:identity-orbit 15s linear infinite}.profile-emblem i{inset:-40px;animation-direction:reverse;animation-duration:23s}.profile-benefits{display:grid;gap:10px;margin-top:20px;font-size:10px;color:var(--muted);letter-spacing:1px}.entry-form>h2{font-size:25px;margin:25px 0;letter-spacing:-.8px}.google-signin{display:flex;align-items:center;justify-content:center;gap:12px;background:#fff;color:#202124;border-radius:9px;min-height:46px;padding:12px 18px;border:1px solid #dadce0;font-size:12px;text-align:center}.google-signin:hover{background:#eef2fa;color:#202124}.google-signin svg{flex:0 0 19px;width:19px;height:19px}.entry-form .google-signin{margin:25px 0 12px}.entry-separator{display:flex;align-items:center;gap:14px;font-size:10px;color:var(--muted);margin:28px 0}.entry-separator span{height:1px;background:var(--line);flex:1}#guest-form{display:grid;gap:14px}#guest-form>label{font-size:12px;color:var(--muted)}#guest-form .button{justify-content:center;margin-top:6px}.entry-legal{display:flex;gap:20px;font-size:10px;color:var(--muted);margin-top:22px}#profile-status{font-size:12px;line-height:1.8;color:var(--blue)}.profile-banner{display:flex;align-items:center;gap:26px}.profile-avatar{width:90px;height:90px;flex:0 0 90px;border-radius:50%;display:grid;place-items:center;font-size:32px;color:white;box-shadow:inset 0 0 0 1px #ffffff26}.tone-blue{background:linear-gradient(145deg,#789bcf,#263957)}.tone-silver{background:linear-gradient(145deg,#afb9c8,#3b424c)}.tone-violet{background:linear-gradient(145deg,#a997cf,#4a355e)}.tone-amber{background:linear-gradient(145deg,#c7aa80,#5e4934)}.profile-banner h2{font-size:32px;letter-spacing:-1px;margin:12px 0 6px;overflow-wrap:anywhere}.profile-banner p{margin:0;font-size:12px;color:var(--muted)}.profile-banner>.button{margin-left:auto;flex-shrink:0}.profile-layout{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(260px,1fr);gap:24px}.profile-layout h2{font-size:25px;margin:20px 0;letter-spacing:-.5px}#profile-form{display:grid;gap:20px}#profile-form>label{display:grid;gap:9px;font-size:11px;color:var(--muted)}#profile-form textarea{resize:vertical;font:13px/1.7 var(--display);max-height:300px}.profile-tones{padding:0;border:0;display:flex;gap:10px;flex-wrap:wrap}.profile-tones legend{font-size:11px;color:var(--muted);margin-bottom:13px}.profile-tones>label{border-radius:25px;padding:9px 12px;display:flex;align-items:center;gap:7px;color:#fff;font-size:10px;cursor:pointer}.profile-tones input{accent-color:#fff}.profile-tones label:has(input:checked){outline:1px solid var(--blue);outline-offset:4px}.profile-aside{display:grid;gap:20px;align-content:start}.profile-aside h3{font-size:20px;letter-spacing:-.5px;margin:18px 0}.profile-aside p{font-size:12px;line-height:1.9;color:var(--muted)}.profile-aside .text-button{margin-top:18px;font-size:11px;display:flex}.profile-aside .google-signin{margin-top:18px}
@keyframes identity-orbit{to{transform:rotateX(55deg) rotateZ(330deg)}}
@media(max-width:1050px){.profile-entry,.profile-layout{grid-template-columns:minmax(0,1fr)}.entry-welcome{min-height:320px}.profile-banner{flex-wrap:wrap}.profile-banner>.button{margin-left:0}.profile-benefits{display:flex;flex-wrap:wrap;justify-content:center}}
@media(max-width:600px){.entry-welcome h2{font-size:29px}.entry-welcome{min-height:360px}.profile-avatar{width:66px;height:66px;flex-basis:66px;font-size:24px}.profile-banner{gap:18px}.profile-banner h2{font-size:27px}.profile-banner .p-label{font-size:8px}.profile-banner>div:nth-child(2){flex:1;min-width:0}.profile-banner>.button{width:100%;justify-content:center}.header .account>span:last-child{max-width:70px}}
.command-visual>.orbital-instrument{width:100%;max-width:460px}.command-visual{display:grid;place-items:center;overflow:hidden}
@media(max-width:760px){.command-visual{display:grid;min-height:260px}.command-visual>.orbital-instrument{max-width:340px;margin-top:0}}
body.immersive{overflow:hidden;background:#060608!important}body.immersive #space{position:fixed;inset:0;pointer-events:auto;z-index:30}body.immersive #galaxy{pointer-events:auto;touch-action:none;cursor:grab;outline:0}body.immersive #galaxy:active{cursor:grabbing}
.immersion-controls{inset:0!important;display:block!important;pointer-events:none;padding:28px;color:#eef2fa}.immersion-controls[hidden]{display:none!important}.immersion-controls button{pointer-events:auto;color:#e6ecfa;background:#101219da;border:1px solid #ffffff2b;backdrop-filter:blur(12px);touch-action:none}.immersion-controls button.primary{background:#f1f3f9;color:#080a0e}.space-readout{position:absolute;top:35px;left:35px;display:grid;gap:12px}.space-readout>span{font:9px monospace;letter-spacing:2px;color:#a4b2ca}.space-readout strong{font:15px var(--display)}.space-readout small{font:10px/1.8 var(--display);color:#8593aa}.flight-toolbar{position:absolute;bottom:32px;left:32px;right:32px;display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.flight-toolbar .button{font-size:11px}.solar-picker{position:absolute;bottom:90px;left:32px;right:32px;display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
.solar-picker button{font:10px var(--display);padding:9px 14px;border-radius:20px;border:1px solid #ffffff33;background:#101219da;color:#e6ecfa;backdrop-filter:blur(12px)}
.solar-picker button[aria-pressed=true]{background:#f1f3f9;color:#080a0e;border-color:#fff}
.solar-fact{position:absolute;bottom:135px;left:32px;right:32px;text-align:center;font-size:10px;line-height:1.7;color:#c3ccdf;max-width:520px;margin:0 auto}
@media(max-width:760px){.solar-picker{bottom:170px}.solar-fact{bottom:210px;font-size:9px}}
.flight-help{position:absolute;right:32px;top:34px;display:flex;gap:25px;align-items:start}.flight-help>span{font:10px/1.9 var(--display);color:#a4b2ca}.flight-pad{display:grid;grid-template-columns:repeat(3,40px);gap:7px}.flight-pad button{width:40px;height:40px;border-radius:8px;font-size:20px}.flight-pad button:active{background:#465875}.flight-pad button:focus-visible{outline:2px solid #b5cbff;outline-offset:3px}
@media(max-width:760px){.space-readout{left:20px;top:25px}.space-readout strong{font-size:13px}.space-readout small{font-size:9px}.flight-help{top:auto;bottom:155px;right:20px}.flight-help>span{display:none}.flight-toolbar{left:15px;right:15px;bottom:22px;gap:8px}.flight-toolbar .button{font-size:10px;padding:13px}.flight-toolbar #exit-space{flex-basis:100%;justify-content:center}.flight-pad{grid-template-columns:repeat(3,44px)}.flight-pad button{width:44px;height:44px}}
.brand-rail{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:26px;padding:38px 0;border-block:1px solid var(--line);margin:28px 0}
.brand-link{display:flex!important;align-items:center;justify-content:center;width:128px;height:72px;padding:8px!important;background:none!important;border:0!important;box-shadow:none!important;border-radius:0!important;opacity:.67;transition:opacity .25s,transform .25s;flex-shrink:0}
.brand-link img{object-fit:contain;width:100%;height:100%;filter:none;transition:filter .25s}
.brand-link:hover,.brand-link:focus-visible{opacity:1;transform:translateY(-3px)}

:root[data-theme=dark] .brand-youtube img,:root[data-theme=dark] .brand-uni img,:root[data-theme=dark] .brand-cepreuni img,:root[data-theme=dark] .brand-lumbreras img{filter:invert(1) hue-rotate(180deg)}


.brand-whatsapp,.brand-drive,.brand-tiktok{width:65px}
.brand-rail .brand-cepreuni{width:105px}.brand-rail .brand-universe{width:160px}.brand-rail .brand-uni{width:144px}
.brand-link:focus-visible{outline:2px solid var(--blue);outline-offset:8px}
/* Frame the visible alpha bounds, not the often huge transparent PNG canvas.
   The original pixels and files are unchanged. Bounds were audited per logo. */
.brand-link{position:relative;overflow:hidden}
.brand-link img{position:absolute;left:50%;top:50%;width:calc(100% * var(--logo-width,1));height:auto;max-width:none;max-height:none;transform:translate(var(--logo-x,-50%),var(--logo-y,-50%));object-fit:initial}
.brand-cepreuni{--logo-width:1.3514;--logo-x:-48%;--logo-y:-48.5%}
.brand-youtube{--logo-width:1.2864}
.brand-whatsapp{--logo-width:1.6807}
.brand-linktree{--logo-width:1.0116}
.brand-universe{--logo-width:1.1868;--logo-x:-50.28%;--logo-y:-43.77%}
.brand-lumbreras{--logo-width:1.0958;--logo-x:-49.83%;--logo-y:-46.3%}
.brand-cuzcano{--logo-width:1.1538;--logo-x:-48.67%;--logo-y:-49.65%}
.logo-tile .tile-logo{display:flex;align-items:center;justify-content:flex-start;width:140px;height:46px;margin-bottom:20px;position:relative;overflow:hidden}
.logo-tile .tile-logo img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;filter:invert(1) saturate(0) brightness(1.4) contrast(.9)}
:root[data-theme=light] .logo-tile .tile-logo img{filter:saturate(0) contrast(1.1)}

.catalog-identity{display:flex;align-items:center;justify-content:space-between;gap:25px;padding:0 0 22px;border-bottom:1px solid var(--line);margin-bottom:25px;color:var(--text);font-size:14px}.catalog-identity small{color:var(--muted);font-size:11px}
.catalog-logo{display:flex;align-items:center;height:84px;flex-shrink:0;opacity:.9;transition:opacity .2s}.catalog-logo:hover{opacity:1}
.catalog-logo img{height:100%;width:auto;max-width:220px;object-fit:contain;filter:invert(1) saturate(0) brightness(1.4) contrast(.9)}
:root[data-theme=light] .catalog-logo img{filter:saturate(0) contrast(1.1)}
.catalog-options{display:flex;align-items:center;justify-content:space-between;gap:15px;font-size:12px;color:var(--muted)}.catalog-options label{display:flex;align-items:center;gap:8px}.catalog-options input{accent-color:var(--blue);width:16px;height:16px}
.catalog-volume{margin:32px 0 70px}.catalog-divider{border-top:1px solid #a9c7ff66;border-bottom:1px solid var(--line);padding:24px 0;display:grid;grid-template-columns:1fr auto;gap:10px}.catalog-divider>span{font:10px monospace;letter-spacing:2px;color:var(--blue);grid-column:1/-1}.catalog-divider h2{font-size:clamp(20px,2.7vw,31px);margin:0;letter-spacing:-.8px;text-transform:none}.catalog-divider small{align-self:center;color:var(--muted);font-size:11px}.catalog-section{margin:30px 0 38px}.catalog-section>h3{display:flex;align-items:center;gap:12px;font-size:15px;font-weight:500;letter-spacing:.4px;margin-bottom:22px}.catalog-section>h3>span{height:15px;width:3px;background:var(--blue);border-radius:3px}.catalog-section>h3>small{font:10px monospace;color:var(--muted);border:1px solid var(--line);border-radius:20px;padding:3px 7px}.p-book h4{font-size:13px;line-height:1.6;font-weight:500;margin:8px 0}.p-book .p-cover{background:linear-gradient(145deg,var(--soft),transparent)}
.cover-preview{position:fixed;z-index:80;pointer-events:none;width:min(46vw,260px);border-radius:10px;overflow:hidden;background:var(--solid);border:1px solid var(--line);box-shadow:0 25px 70px #000a;animation:cover-pop .15s ease-out}
.cover-preview img{display:block;width:100%;height:auto}
@keyframes cover-pop{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}
.lesson-art{position:relative;overflow:hidden;aspect-ratio:16/9;height:auto!important;background:#080a10}.lesson-art>img{position:absolute;width:100%;height:100%;object-fit:cover;inset:0;opacity:.82;transition:opacity .3s,transform .5s}.lesson-card:hover .lesson-art>img{opacity:1;transform:scale(1.035)}.lesson-art>svg{position:relative;z-index:1;padding:12px;box-sizing:content-box;border:1px solid #ffffff60;background:#0006;border-radius:50%;color:white;width:20px;height:20px;transition:transform .25s,background .25s}.lesson-card:hover .lesson-art>svg{transform:scale(1.12);background:#000a}.lesson-art>small{position:absolute;bottom:10px;left:10px;background:#000b;color:#fff;padding:5px 8px;border-radius:3px;z-index:1;font-size:8px}
.lesson-thumb{display:block;width:100%;text-align:left;border:0;background:none;padding:0;font:inherit;color:inherit;cursor:pointer}
.lesson-info a{color:var(--blue)}.lesson-info a:hover{text-decoration:underline}
#video-preview{width:min(760px,calc(100% - 32px));padding:20px}.video-frame{position:relative;width:100%;aspect-ratio:16/9;background:#000;border-radius:8px;overflow:hidden;margin-top:6px}.video-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
#video-preview .dialog-foot{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:14px}#video-preview .dialog-foot a{color:var(--blue)}
.plan-setup{padding:28px}
.plan-fields{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:22px 0 18px}
.plan-fields label{display:flex;flex-direction:column;gap:9px;font-size:11px;color:var(--muted)}
.plan-days{display:flex;gap:8px;margin-bottom:24px}
.plan-days label{display:flex;flex-direction:column-reverse;align-items:center;gap:6px;font-size:10px;color:var(--muted);border:1px solid var(--line);border-radius:8px;padding:10px 8px;cursor:pointer}
.plan-days input{accent-color:var(--blue)}
.plan-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px;margin-top:18px}
.plan-day{border:1px solid var(--line);border-radius:10px;padding:12px;background:var(--surface);min-height:120px;display:flex;flex-direction:column;gap:8px}
.plan-day-empty{opacity:.55}
.plan-day header{display:flex;flex-direction:column;gap:2px;font-size:10px;color:var(--muted);padding-bottom:8px;border-bottom:1px solid var(--line)}
.plan-day header b{color:var(--text);font-size:11px;font-weight:600}
.plan-block{display:flex;flex-direction:column;gap:3px;padding:8px;border-radius:7px;background:var(--soft);font-size:9px;cursor:pointer}
.plan-block input{position:absolute;opacity:0}
.plan-block:has(input:checked){opacity:.5;text-decoration:line-through}
.plan-block .p-label{font-size:8px}
.plan-block b{font-size:10px;color:var(--text);text-decoration:inherit}
.plan-block small{color:var(--muted);line-height:1.5}
.plan-block.is-review{border-left:2px solid var(--blue)}
@media(max-width:900px){.plan-fields{grid-template-columns:repeat(2,minmax(0,1fr))}.plan-week{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.plan-week{grid-template-columns:1fr}.plan-days{flex-wrap:wrap}}
#syllabus-mode{margin-bottom:28px}
.exam-course .topic-detail{padding-left:22px}
.exam-course summary .topic-plus{font:10px monospace;border:1px solid var(--line);border-radius:20px;padding:3px 9px;transform:none!important}
.exam-course .topic-detail p{margin:0 0 10px;font-size:11px}
#exam-range{margin-top:18px}
.cepre-fijas{scroll-margin-top:110px;margin:60px 0;padding-top:36px;border-top:1px solid var(--line)}.frequency-row{display:flex;flex-wrap:wrap;gap:10px;margin:22px 0}.frequency-row>span{font:10px monospace;color:var(--muted);background:var(--soft);border:1px solid var(--line);border-radius:7px;padding:10px;text-align:center;min-width:60px}.frequency-row b{display:block;color:var(--text);font-size:19px;margin-top:9px}
.orbital-instrument{position:relative;align-self:center;width:min(100%,460px);aspect-ratio:620/460;justify-self:center;isolation:isolate}.orbital-canvas{width:100%;height:100%;display:block}.orbital-coordinate,.orbital-caption{position:absolute;left:0;width:100%;text-align:center;pointer-events:none}.orbital-coordinate{top:5px;font:8px monospace;letter-spacing:3px;color:var(--muted)}.orbital-caption{bottom:0;font-size:10px;letter-spacing:1px;color:var(--muted)}
.cepre-emblem{position:relative;align-self:center;width:min(100%,460px);aspect-ratio:620/460;justify-self:center;display:grid;place-items:center}
.emblem-ring{position:relative;width:78%;aspect-ratio:1;display:grid;place-items:center;border-radius:50%;background:radial-gradient(circle,var(--soft) 0%,transparent 70%)}
.emblem-ring:before{content:'';position:absolute;inset:0;border-radius:50%;border:1px solid var(--line)}
.emblem-ring:after{content:'';position:absolute;inset:14%;border-radius:50%;border:1px solid var(--line)}
.emblem-ripple{position:absolute;inset:-8%;border-radius:50%;border:1px solid #9babc02b;animation:emblem-breathe 7s ease-in-out infinite}
.emblem-ripple.two{inset:6%;animation-delay:-3.5s;animation-duration:9s}
.emblem-ring img{position:relative;width:62%;height:auto;object-fit:contain;filter:invert(1) saturate(0) brightness(1.35) contrast(.92)}
:root[data-theme=light] .emblem-ring img{filter:saturate(0) contrast(1.1)}
@keyframes emblem-breathe{50%{transform:scale(1.045);opacity:.6}}
@media(max-width:600px){.cepre-emblem{margin-top:28px}.p-feature:has(.cepre-emblem){grid-template-columns:minmax(0,1fr)}}
.score-intro{max-width:690px;margin-bottom:30px}.score-intro p{font-size:14px;line-height:1.9;color:var(--muted)}.score-layout{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(250px,1fr);gap:24px;align-items:start}.score-selectors{display:grid;grid-template-columns:minmax(0,2fr) minmax(90px,1fr);gap:15px}.score-selectors label{display:flex;flex-direction:column;gap:9px;font-size:11px;color:var(--muted)}.score-selectors select{max-width:100%;width:100%}.score-layout .p-subhead{margin:24px 0 6px}.score-layout .p-subhead h2{font-size:19px;letter-spacing:-.4px}
.score-grades{display:flex;flex-direction:column}
.grade-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:9px 2px;border-top:1px solid var(--line);font-size:12px;color:var(--muted)}
.grade-row:last-child{border-bottom:1px solid var(--line)}
.grade-row input{width:76px;flex-shrink:0;text-align:right;font-variant-numeric:tabular-nums;font-size:13px;padding:8px 10px}
.grade-row input:invalid{border-color:#fba3a3}.score-side{display:grid;gap:20px;position:sticky;top:110px}.score-big{font-size:clamp(42px,5vw,64px);letter-spacing:-3px;font-weight:500;margin:20px 0;font-variant-numeric:tabular-nums}.score-big small{font-size:17px;color:var(--muted);letter-spacing:0;margin-left:7px}.score-side p{font-size:11px;line-height:1.9;color:var(--muted)}.score-breakdown{display:grid;gap:12px;margin-top:22px;padding-top:20px;border-top:1px solid var(--line)}.score-breakdown>span{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:10px;color:var(--muted)}.score-breakdown b{font:13px monospace;color:var(--text)}.score-goal{padding-top:14px;margin-top:16px;border-top:1px solid var(--line);font-size:11px;line-height:1.8;color:var(--muted)}.score-goal strong{color:var(--text)}.score-error{color:#f5a4a4;font-size:12px;line-height:1.8;min-height:1em}.score-history{margin:28px 0}.score-history .p-subhead{margin:0 0 20px}.score-history h2{font-size:21px}.history-summary{display:flex;align-items:center;gap:22px;margin:18px 0 30px}.history-summary b{font-size:34px;letter-spacing:-1px;font-weight:400}.history-summary span{font-size:11px;color:var(--muted);max-width:190px}.table-scroll{overflow-x:auto}.score-history table{width:100%;border-collapse:collapse;text-align:left;font-size:12px}.score-history th{font-size:10px;color:var(--muted);font-weight:500;padding:12px 8px}.score-history td{padding:17px 8px;border-top:1px solid var(--line);font-variant-numeric:tabular-nums}.score-bar{min-width:100px;width:100%;height:5px;border-radius:4px;background:var(--soft);position:relative;font-size:9px;line-height:8px;color:var(--muted)}.score-bar i{position:absolute;height:5px;background:var(--blue);border-radius:4px}.score-method summary{cursor:pointer;font-size:13px}.score-method p{font-size:12px;line-height:1.9;color:var(--muted)}.score-method a{color:var(--blue)}
@media(max-width:1100px){.score-layout{grid-template-columns:minmax(0,1fr)}.score-side{position:static;grid-template-columns:repeat(2,minmax(0,1fr))}.orbital-instrument{max-width:330px}.brand-rail{gap:14px}.brand-link{width:110px}}
@media(max-width:600px){.score-side{grid-template-columns:minmax(0,1fr)}.score-selectors{grid-template-columns:minmax(0,1fr)}.score-grades{gap:15px 10px}.score-layout>.p-panel{padding:22px 18px}.score-history .p-subhead{display:block}.score-history .p-subhead>span{display:block;margin-top:10px}.catalog-options{flex-wrap:wrap}.catalog-divider{grid-template-columns:minmax(0,1fr)}.catalog-divider small{grid-column:1}.catalog-section>h3{font-size:13px}.orbital-instrument{max-width:320px;margin-top:28px}.p-feature:has(.orbital-instrument){grid-template-columns:minmax(0,1fr)}.brand-rail{gap:18px;padding:25px 0}.brand-link{width:98px;height:60px}.brand-rail .brand-uni{width:128px}.brand-rail .brand-universe{width:142px}.brand-whatsapp,.brand-drive,.brand-tiktok{width:50px}.catalog-identity .brand-link{width:140px}.catalog-identity{font-size:12px}.catalog-identity small{font-size:10px}.history-summary{gap:15px}.score-history td{padding:14px 5px}}

/* Brand rail — sin recuadro, sin recorte, monocroma.
   El tratamiento anterior posicionaba cada logo en absoluto dentro de una caja overflow:hidden y lo
   escalaba con un --logo-width por marca, lo que recortaba WhatsApp, Drive y TikTok. Igualar la altura
   tampoco basta: un logotipo ancho y un icono cuadrado a la misma altura no se ven del mismo tamaño.
   Aquí cada marca se dimensiona para ocupar la misma ÁREA óptica (~980 px², calculada de las
   proporciones reales de cada PNG), que es lo que el ojo compara. */
:root[data-theme] .brand-rail{gap:clamp(26px,4.2vw,58px);padding:46px 0}
:root[data-theme] .brand-rail a.brand-link{
  overflow:visible;width:auto;height:auto;padding:0!important;border:0!important;background:none!important;
  transition:transform .2s cubic-bezier(.23,1,.32,1);
}
:root[data-theme] .brand-rail a.brand-link img{
  position:static;left:auto;top:auto;transform:none;width:auto;max-width:none;object-fit:contain;
  /* Una sola silueta gris: la fila es un índice de sitios, no un muro de color de marca. */
  filter:grayscale(1) brightness(0) invert(1);opacity:.62;
  transition:opacity .2s cubic-bezier(.23,1,.32,1);
}
/* Tamaño por ÁREA DE TINTA, no por recuadro: los PNG traen rellenos transparentes muy distintos
   (YouTube 87%, CEPREUNI 68%, Linktree 65%, frente a 0% en UNI, Drive y TikTok), así que igualar el
   recuadro dejaba unas marcas diminutas y otras enormes. Se mide el rectángulo real de cada marca, se
   escala para que todas ocupen la misma área visible y se recorta el relleno con clip-path, con margen
   negativo para que ese hueco tampoco cuente en el espaciado. */
:root[data-theme] .brand-rail a.brand-uni img{height:16px;clip-path:inset(0% 0% 0% 0%);margin:0px 0px 0px 0px}
:root[data-theme] .brand-rail a.brand-cepreuni img{height:49px;clip-path:inset(27.5% 14.5% 30% 10.5%);margin:-13px -7px -15px -5px}
:root[data-theme] .brand-rail a.brand-youtube img{height:75px;clip-path:inset(41.33% 11.08% 41.33% 11.08%);margin:-31px -8px -31px -8px}
:root[data-theme] .brand-rail a.brand-whatsapp img{height:33px;clip-path:inset(7.57% 20.06% 7.57% 20.06%);margin:-2px -9px -2px -9px}
:root[data-theme] .brand-rail a.brand-drive img{height:27px;clip-path:inset(0% 0% 0% 0%);margin:0px 0px 0px 0px}
:root[data-theme] .brand-rail a.brand-tiktok img{height:29px;clip-path:inset(0% 0.03% 0% 0%);margin:0px 0px 0px 0px}
:root[data-theme] .brand-rail a.brand-linktree img{height:35px;clip-path:inset(32.13% 0.55% 32.13% 0.52%);margin:-11px 0px -11px 0px}
:root[data-theme] .brand-rail a.brand-link:hover{transform:translateY(-2px)}
:root[data-theme] .brand-rail a.brand-link:hover img{opacity:1}
:root[data-theme=light] .brand-rail a.brand-link img{filter:grayscale(1) brightness(0);opacity:.6}
@media(max-width:760px){:root[data-theme] .brand-rail{gap:26px}:root[data-theme] .brand-rail a.brand-link img{transform:scale(.82)}}

/* Catálogo de editoriales. Mismo principio que la fila de marcas: nada se recorta, todas comparten
   altura de caja y color, para que la rejilla se lea como un índice y no como publicidad. */
.publisher-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px}
.publisher-card{display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;gap:16px;
  min-height:104px;padding:18px;border:1px solid var(--line);border-radius:14px;text-decoration:none;
  transition:border-color .2s cubic-bezier(.23,1,.32,1),transform .2s cubic-bezier(.23,1,.32,1)}
.publisher-card:hover{border-color:#97b5ff55;transform:translateY(-2px)}
.publisher-card:active{transform:scale(.985)}
.publisher-card img{height:26px;width:auto;max-width:100%;object-fit:contain;
  filter:grayscale(1) brightness(0) invert(1);opacity:.72;transition:opacity .2s cubic-bezier(.23,1,.32,1)}
.publisher-card:hover img{opacity:1}
.publisher-card span{font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
:root[data-theme=light] .publisher-card img{filter:grayscale(1) brightness(0);opacity:.68}

/* Los logos de editorial vienen en dos formatos y no admiten el mismo tratamiento: unos son marcas
   recortadas sobre transparencia (funcionan como silueta) y otros son imágenes planas con fondo claro
   sólido, que como silueta se volverían un rectángulo blanco. A estos se les invierte el valor y se
   funden en modo screen, con lo que su fondo —ahora negro— desaparece dentro del panel. */
.publisher-card.is-flat img{filter:grayscale(1) invert(1);opacity:.9;mix-blend-mode:screen}
.publisher-card.is-flat:hover img{opacity:1}
:root[data-theme=light] .publisher-card.is-flat img{filter:grayscale(1);opacity:.85;mix-blend-mode:multiply}

/* Subdivisión por curso dentro de una sección del catálogo. */
.catalog-course{margin-top:26px}
.catalog-course:first-child{margin-top:0}
.catalog-course h4{display:flex;align-items:center;gap:10px;margin:0 0 14px;font-size:12px;font-weight:600;
  letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.catalog-course h4::after{content:"";flex:1;height:1px;background:var(--line)}
.catalog-course h4 small{order:1;font-size:10px;letter-spacing:0;text-transform:none}
@media(max-width:600px){.catalog-logo{height:62px}}

/* Resultados de búsqueda agrupados por dominio: temario, biblioteca, materiales y clases responden a
   la misma palabra, y agruparlos es lo que convierte una lista en un mapa de siguientes pasos. */
.search-group{margin-bottom:18px}
.search-group h4{display:flex;align-items:center;gap:10px;margin:0 0 8px;font-size:9px;font-weight:600;
  letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.search-group h4::after{content:"";flex:1;height:1px;background:var(--line)}
.search-group h4 small{order:1;font-size:9px;letter-spacing:0}
.search-row small{display:block;color:var(--muted);font-size:10px;margin-top:3px}
.intent-group{display:block;margin:14px 0 6px;font-size:9px;font-weight:600;letter-spacing:.16em;
  text-transform:uppercase;color:var(--muted)}

/* Asistente del planificador: tres pasos, una decisión por pantalla. */
.plan-steps{display:flex;flex-wrap:wrap;gap:10px 26px;list-style:none;margin:0 0 24px;padding:0}
.plan-steps li{display:flex;align-items:center;gap:9px;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.plan-steps li b{display:grid;place-items:center;width:22px;height:22px;border:1px solid var(--line);border-radius:50%;font-size:10px}
.plan-steps li[aria-current]{color:var(--text)}
.plan-steps li[aria-current] b{background:var(--text);color:var(--bg);border-color:var(--text)}
.plan-steps li.is-done b{border-color:#97b5ff65;color:#97b5ff}
.plan-choices{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin:18px 0}
.plan-choice{display:flex;flex-direction:column;align-items:flex-start;gap:6px;text-align:left;
  padding:16px;border:1px solid var(--line);border-radius:14px;background:none;color:var(--text);cursor:pointer;
  transition:border-color .2s cubic-bezier(.23,1,.32,1),transform .16s cubic-bezier(.23,1,.32,1)}
.plan-choice:hover{border-color:#97b5ff55}
.plan-choice:active{transform:scale(.985)}
.plan-choice[aria-pressed=true]{border-color:#97b5ff;background:#97b5ff10}
.plan-choice b{font-size:13px;font-weight:600}
.plan-choice small{color:var(--muted);font-size:10px;line-height:1.7}
.plan-est{font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:#97b5ff}
.plan-focus{max-height:none}
.plan-focus button[aria-pressed=true]{background:var(--text);color:var(--bg);border-color:var(--text)}
/* Un bloque se elimina donde está: el botón aparece al apuntarlo, no en un menú aparte. */
.plan-block-wrap{position:relative}
.plan-remove{position:absolute;top:6px;right:6px;width:22px;height:22px;display:grid;place-items:center;
  border:1px solid #ff6b6b55;border-radius:50%;background:#2a1214;color:#ff8d8d;font-size:13px;line-height:1;
  cursor:pointer;opacity:0;transition:opacity .15s cubic-bezier(.23,1,.32,1),transform .15s cubic-bezier(.23,1,.32,1)}
.plan-block-wrap:hover .plan-remove,.plan-remove:focus-visible{opacity:1}
.plan-remove:hover{background:#ff6b6b;color:#1a0b0c}
.plan-remove:active{transform:scale(.9)}
.plan-day header{display:flex;align-items:baseline;gap:8px}
.plan-day-add{margin-left:auto;width:20px;height:20px;display:grid;place-items:center;border:1px solid var(--line);
  border-radius:50%;background:none;color:var(--muted);cursor:pointer;font-size:12px;line-height:1;
  transition:border-color .2s,color .2s,transform .15s cubic-bezier(.23,1,.32,1)}
.plan-day-add:hover{border-color:#97b5ff;color:#97b5ff}
.plan-day-add:active{transform:scale(.9)}
#plan-add-dialog{border:1px solid var(--line);border-radius:16px;background:var(--solid,#0f1117);color:var(--text);padding:26px;max-width:min(560px,92vw);max-height:86vh;overflow:auto}
#plan-add-dialog::backdrop{background:#04050988;backdrop-filter:blur(6px)}
#plan-add-dialog h3{margin:0 0 18px;font-size:17px}
#plan-add-dialog .plan-add-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:0 0 22px}
@media(max-width:520px){#plan-add-dialog .plan-add-fields{grid-template-columns:1fr}#plan-add-dialog .plan-add-fields label{grid-column:1/-1!important}}
.plan-time{font:10px monospace;color:var(--blue);letter-spacing:.02em}
#plan-notify[aria-pressed="true"]{border-color:var(--blue);color:var(--blue)}
.class-video{padding:0;gap:0;min-height:0}
.class-thumb{position:relative;display:block;aspect-ratio:16/9;max-height:150px;overflow:hidden;background:var(--soft)}
.class-thumb img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .3s}
.class-video:hover .class-thumb img{transform:scale(1.04)}
.class-thumb svg{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:26px;height:26px;padding:7px;border-radius:50%;background:#000a;color:#fff}
.class-video h3{margin:10px 12px 0;font-size:12px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.class-video p{margin:4px 12px 0;font-size:10px}
.class-video .tile-foot{margin:8px 12px 12px}
