:root{color-scheme:dark;--bg:#0e0e10;--card:#1b1b1e;--line:#343438;--red:#e51c2a;--muted:#b8b8c2;--green:#a5e8bb}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:#f8f8fa;font:15px/1.55 Lexend,system-ui,sans-serif}button,input,a{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #fff;outline-offset:3px}[hidden]{display:none!important}.app-shell{max-width:900px;margin:auto;padding:20px 18px calc(112px + env(safe-area-inset-bottom))}.topbar{display:flex;align-items:center;gap:12px;padding-bottom:20px}.brand-mark{width:46px;height:46px;border-radius:50%;object-fit:contain;background:#c81720}.brand-title{font-weight:700;letter-spacing:.03em}.topbar small{display:block;color:var(--muted);font-size:11px}.topbar .icon-button{margin-left:auto}.icon-button{border:1px solid var(--line);background:var(--card);color:white;padding:10px;border-radius:14px;min-height:44px;display:inline-flex;align-items:center;gap:8px}.icon-button svg,.bottom-nav svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}h1{font-size:clamp(26px,5vw,36px);line-height:1.2;margin:8px 0 12px}h2{font-size:20px;line-height:1.3;margin:0 0 12px}h3{font-size:17px;line-height:1.4;margin:0 0 12px}p{margin:8px 0 16px;color:var(--muted)}small{color:var(--muted)}.card{background:var(--card);border:1px solid var(--line);border-radius:22px;padding:22px;margin:16px 0}.hero{background:linear-gradient(135deg,#42131a 0%,#1b1b1e 75%);border-color:#793038}.eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:1.5px;color:#ffc4ca;font-weight:600;margin:0 0 12px}.large-date{font-size:25px;font-weight:700;line-height:1.3;text-transform:none}.hero-time{font-size:34px;font-weight:700;line-height:1.2;margin:10px 0}.badge{display:inline-flex;align-items:center;border:1px solid #735621;background:#3b2d18;color:#ffd483;border-radius:99px;padding:6px 10px;font-size:12px;line-height:1.4}.badge.green{background:#153521;border-color:#28643a;color:var(--green)}.badge.red{background:#39191c;border-color:#822b33;color:#ffb8be}.badge.neutral{background:#25252a;border-color:#46464e;color:#d7d7df}.btn{display:flex;justify-content:center;align-items:center;gap:8px;background:var(--red);color:#fff;border:1px solid var(--red);border-radius:14px;text-decoration:none;font-weight:600;padding:14px 16px;min-height:48px;width:100%;margin:12px 0 0}.btn.secondary{background:#242428;border-color:#4b4b53}.btn:disabled{opacity:.5;cursor:default}.btn svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8}.metrics{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:16px 0}.metric{border:1px solid var(--line);background:var(--card);border-radius:18px;padding:18px;text-align:left;color:white}.metric strong{font-size:28px;display:block}.metric span{display:block;color:var(--muted);font-size:12px}.progress{display:flex;gap:6px;margin:14px 0}.progress span{flex:1;height:8px;border-radius:10px;background:#38383e}.progress span.done{background:var(--red)}.actions{display:flex;gap:10px;flex-wrap:wrap}.actions>*{flex:1;min-width:120px}.quick-list button{width:100%;display:flex;align-items:center;justify-content:space-between;padding:16px 0;background:transparent;border:0;border-bottom:1px solid var(--line);color:white;text-align:left}.quick-list button:last-child{border-bottom:0}.quick-list button span:first-child{display:flex;gap:12px;align-items:center}.quick-list svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8}.bottom-nav{position:fixed;bottom:0;left:0;right:0;z-index:20;background:#141416;border-top:1px solid #3b3b42;padding:8px 8px calc(8px + env(safe-area-inset-bottom));display:flex;justify-content:center;gap:4px}.bottom-nav button{color:#aaaab5;background:transparent;border:0;min-height:58px;max-width:150px;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;border-radius:12px;font-size:10px}.bottom-nav button.active{background:#31171c;color:#ff7783}.bottom-nav button[disabled]{opacity:.4}.notice{border:1px solid #8c4a2b;background:#2f2019;border-radius:16px;padding:16px;color:#ffd9b5;margin:16px 0}.notice p{color:inherit;margin:6px 0 0}.notice.demo{background:#20203a;border-color:#6262aa;color:#e2e2ff}.view{animation:appear .15s ease}@keyframes appear{from{opacity:.3;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}.tabs{display:flex;border:1px solid var(--line);border-radius:14px;padding:4px;gap:4px;margin:16px 0}.tabs button{flex:1;border:0;border-radius:10px;background:transparent;color:#bfbfc9;padding:10px;font-size:13px}.tabs button.active{background:#3f2026;color:#ffb9c2}.class-card{display:grid;grid-template-columns:60px 1fr;gap:16px;padding:18px;background:var(--card);border:1px solid var(--line);border-radius:18px;margin:12px 0}.class-day{background:#2c2024;border:1px solid #62303b;border-radius:14px;padding:8px 4px;text-align:center;align-self:start}.class-day b{display:block;font-size:26px;line-height:1.3}.class-day small{display:block;font-size:10px;text-transform:uppercase}.class-info h3{margin:0 0 5px;text-transform:capitalize}.class-info p{font-size:13px;margin:5px 0 10px}.class-info .badge{font-size:11px}.month{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:16px;margin:16px 0}.month h3{text-transform:capitalize}.calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.calendar small{text-align:center;font-size:11px}.calendar .day{background:#252529;text-align:center;border-radius:8px;padding:6px 2px;min-height:46px;font-size:12px}.calendar .day.booked{background:#952030;color:white}.calendar .day.attended{background:#245237}.calendar .day span{display:block;font-size:9px;line-height:1.25}.detail-list{margin:0}.detail-list div{display:grid;grid-template-columns:1fr 1.4fr;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}.detail-list div:last-child{border:0}.detail-list dt{color:var(--muted);font-size:13px}.detail-list dd{margin:0;text-align:right;overflow-wrap:anywhere}.big-benefit{font-size:36px;font-weight:700;color:#fff}.muted{color:var(--muted)}.profile-avatar{width:58px;height:58px;border:1px solid #b74451;border-radius:18px;background:#441c25;display:grid;place-items:center;font-size:23px;font-weight:700}.profile-heading{display:flex;align-items:center;gap:14px}.profile-heading h1{font-size:24px}.access-input{width:100%;border:1px solid #555;border-radius:12px;padding:12px;background:#111;color:white;margin:10px 0}.access details{margin-top:22px}.access summary{cursor:pointer}.status-message{font-size:13px;min-height:20px}.footer{font-size:11px;text-align:center;color:#9999a5;margin-top:22px}.install-help{padding:12px 0}.loading{padding:40px 0;color:var(--muted)}.empty{text-align:center;padding:30px 16px}.test-summary p{font-size:14px}.test-summary strong{display:block;color:white;margin-bottom:4px}@media(min-width:700px){.home-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:18px;align-items:start}.home-grid .card{margin-top:0}.bottom-nav{padding-top:12px}.app-shell{padding-top:28px}.class-list{display:grid;grid-template-columns:1fr 1fr;gap:12px}.class-card{margin:0}.months{display:grid;grid-template-columns:1fr 1fr;gap:16px}.month{margin:0}}

.profile-avatar{overflow:hidden;flex-shrink:0}.profile-avatar img{width:100%;height:100%;object-fit:contain}#ca-datos-extra select{width:100%;padding:12px}

/* Perfil: controles estables, sin zoom de foco en iPhone. */
#student-profile-form .access-input{font:16px/1.5 Lexend,system-ui,sans-serif;min-width:0;max-width:100%;min-height:50px}#student-profile-form select{white-space:normal}#student-profile-form [aria-invalid="true"]{border:2px solid #ff7783}#sp-error:not(:empty){border:1px solid #ff7783;padding:12px;color:#ffd9df}
