:root{
  --bg:#07070b;--bg2:#101018;--panel:rgba(20,20,31,.86);--panel2:#171722;--line:rgba(255,255,255,.09);
  --text:#f7f7fb;--muted:#aaa8b7;--pink:#f00059;--pink2:#ff3c7d;--gold:#ffb313;--orange:#ff6b18;
  --good:#24d18f;--warn:#ffb313;--bad:#ff4d67;--shadow:0 24px 70px rgba(0,0,0,.38);--radius:24px;
}
*{box-sizing:border-box}html{background:var(--bg);color:var(--text);font-family:Inter,Segoe UI,Arial,sans-serif;scroll-behavior:smooth}body{margin:0;min-height:100vh;background:radial-gradient(circle at 80% 0%,rgba(240,0,89,.13),transparent 32%),radial-gradient(circle at 10% 100%,rgba(255,179,19,.08),transparent 34%),var(--bg);overflow-x:hidden}
button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:inherit}.hidden{display:none!important}.ambient{position:fixed;pointer-events:none;filter:blur(70px);opacity:.18;border-radius:50%;z-index:0}.ambient-a{width:300px;height:300px;background:var(--pink);right:-90px;top:60px}.ambient-b{width:260px;height:260px;background:var(--gold);left:-100px;bottom:80px}
.glass,.panel{background:linear-gradient(145deg,rgba(28,28,42,.92),rgba(12,12,18,.88));border:1px solid var(--line);box-shadow:var(--shadow);backdrop-filter:blur(18px)}
.login-screen{min-height:100vh;display:grid;place-items:center;padding:24px;position:relative;z-index:1}.login-card{width:min(860px,100%);display:grid;grid-template-columns:1.2fr .8fr;gap:34px;border-radius:34px;padding:38px;overflow:hidden;position:relative}.login-card:before{content:"";position:absolute;inset:-1px;background:linear-gradient(120deg,rgba(255,179,19,.35),transparent 30%,transparent 65%,rgba(240,0,89,.35));z-index:-1;border-radius:inherit}.brand-lockup{display:flex;gap:24px;align-items:center}.login-logo{width:245px;max-width:44%;border-radius:26px;filter:drop-shadow(0 18px 35px rgba(240,0,89,.18))}.brand-lockup h1{font-size:clamp(34px,5vw,58px);line-height:.98;margin:8px 0 14px;letter-spacing:-2px}.brand-lockup p{color:var(--muted);font-size:17px;line-height:1.6}.eyebrow{font-size:11px;letter-spacing:2px;font-weight:800;color:var(--gold)}
.stack{display:flex;flex-direction:column;gap:17px;justify-content:center}.stack label,.scan-options label,.form-grid label{display:flex;flex-direction:column;gap:8px;color:#d8d7df;font-size:13px;font-weight:700}.stack input,.form-grid input,.form-grid select,.form-grid textarea,.scan-options select,.manual-entry input,.toolbar input,.search-box input{width:100%;border:1px solid var(--line);background:#0c0c13;color:var(--text);border-radius:14px;padding:14px 15px;outline:none;transition:.2s}.stack input:focus,.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus,.scan-options select:focus,.manual-entry input:focus,.toolbar input:focus,.search-box input:focus{border-color:rgba(240,0,89,.75);box-shadow:0 0 0 4px rgba(240,0,89,.1)}.pin-wrap{display:flex;gap:8px}.pin-wrap input{flex:1}.demo-note{font-size:12px;color:var(--muted);line-height:1.5}.demo-note strong{color:var(--gold)}
.btn{border:0;border-radius:13px;padding:12px 17px;font-weight:800;color:var(--text);display:inline-flex;align-items:center;justify-content:center;gap:9px;transition:transform .18s,box-shadow .18s,background .18s}.btn:hover{transform:translateY(-2px)}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn.primary{background:linear-gradient(135deg,var(--pink),var(--pink2));box-shadow:0 12px 30px rgba(240,0,89,.22)}.btn.accent{background:linear-gradient(135deg,var(--gold),var(--orange));color:#160b00;box-shadow:0 12px 28px rgba(255,179,19,.16)}.btn.ghost{background:rgba(255,255,255,.055);border:1px solid var(--line)}.btn.danger{background:rgba(255,77,103,.14);color:#ff8da0;border:1px solid rgba(255,77,103,.28)}.wide{width:100%}.icon-btn{width:42px;height:42px;display:grid;place-items:center;background:rgba(255,255,255,.055);border:1px solid var(--line);border-radius:12px;color:var(--text)}
.app-shell{min-height:100vh;display:grid;grid-template-columns:260px 1fr;position:relative;z-index:1}.sidebar{height:100vh;position:sticky;top:0;background:rgba(8,8,13,.94);border-right:1px solid var(--line);padding:22px 16px;display:flex;flex-direction:column;gap:26px;z-index:10}.sidebar-brand{display:flex;align-items:center;gap:12px;padding:0 5px}.sidebar-brand img{width:52px;height:52px;border-radius:15px}.sidebar-brand strong{display:block;font-size:17px}.sidebar-brand span{font-size:11px;color:var(--muted)}.main-nav{display:flex;flex-direction:column;gap:7px}.main-nav button{border:0;background:transparent;color:#c8c6d0;padding:13px 14px;border-radius:14px;text-align:left;font-weight:700;display:flex;gap:12px;align-items:center;transition:.2s}.main-nav button span{width:24px;color:var(--gold);font-weight:900}.main-nav button:hover,.main-nav button.active{background:linear-gradient(90deg,rgba(240,0,89,.17),rgba(240,0,89,.03));color:white;box-shadow:inset 3px 0 var(--pink)}.sidebar-bottom{margin-top:auto}.user-mini{display:flex;gap:10px;align-items:center;margin-bottom:12px;padding:10px}.user-avatar{width:38px;height:38px;border-radius:12px;background:linear-gradient(135deg,var(--gold),var(--pink));display:grid;place-items:center;color:#160008;font-weight:900}.user-mini strong{font-size:13px;display:block}.user-mini small{color:var(--muted)}
.main-content{min-width:0;padding:28px 32px 60px}.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px}.topbar h2{font-size:30px;margin:5px 0 0;letter-spacing:-.7px}.topbar-actions,.toolbar-actions{display:flex;gap:10px;align-items:center}.mobile-only{display:none}.view{display:none;animation:viewIn .35s ease}.view.active{display:block}@keyframes viewIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:18px}.metric-card{border-radius:20px;padding:20px;position:relative;overflow:hidden;min-height:145px}.metric-card:after{content:"";position:absolute;width:90px;height:90px;border-radius:50%;background:currentColor;opacity:.07;right:-20px;bottom:-25px}.metric-card .metric-icon{width:40px;height:40px;border-radius:12px;background:rgba(255,255,255,.07);display:grid;place-items:center;margin-bottom:16px}.metric-card b{display:block;font-size:31px;letter-spacing:-1px}.metric-card span{color:var(--muted);font-size:12px}.metric-card.pink{color:var(--pink2)}.metric-card.gold{color:var(--gold)}.metric-card.green{color:var(--good)}.metric-card.orange{color:var(--orange)}
.dashboard-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:18px}.panel{border-radius:var(--radius);padding:22px}.panel.compact{padding:15px 18px}.panel-head,.toolbar{display:flex;justify-content:space-between;align-items:center;gap:14px}.panel-head h3,.toolbar h3{margin:4px 0 0;font-size:19px}.link-btn{background:none;border:0;color:var(--pink2);font-weight:800}.bar-chart{height:260px;display:flex;align-items:end;gap:14px;padding:24px 4px 6px}.bar-item{flex:1;min-width:28px;display:flex;flex-direction:column;align-items:center;gap:9px;height:100%;justify-content:end}.bar-track{width:100%;max-width:48px;height:82%;background:rgba(255,255,255,.05);border-radius:10px;display:flex;align-items:end;overflow:hidden}.bar-fill{width:100%;min-height:4px;background:linear-gradient(180deg,var(--pink2),var(--gold));border-radius:10px;animation:growBar .8s cubic-bezier(.2,.8,.2,1)}@keyframes growBar{from{height:0!important}}.bar-item strong{font-size:12px}.bar-item span{font-size:10px;color:var(--muted)}.activity-list{display:flex;flex-direction:column;gap:10px;margin-top:16px}.activity-item{display:flex;align-items:center;gap:12px;padding:11px;border-radius:15px;background:rgba(255,255,255,.035)}.activity-avatar,.student-avatar{flex:0 0 auto;border-radius:14px;background:linear-gradient(135deg,rgba(255,179,19,.92),rgba(240,0,89,.92));display:grid;place-items:center;font-weight:900;color:#16000a}.activity-avatar{width:40px;height:40px}.activity-item .meta{min-width:0;flex:1}.activity-item strong{font-size:13px}.activity-item p{font-size:11px;color:var(--muted);margin:3px 0 0}.activity-item time{font-size:10px;color:var(--muted)}
.scanner-layout{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(280px,.7fr);gap:18px}.scanner-card{position:relative;overflow:hidden}.scanner-glow{position:absolute;width:300px;height:300px;background:var(--pink);filter:blur(100px);opacity:.08;top:-180px;right:-80px}.scan-options{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:20px 0}.camera-box{height:390px;background:#020204;border:1px solid var(--line);border-radius:22px;overflow:hidden;position:relative;display:grid;place-items:center}.camera-box video{width:100%;height:100%;object-fit:cover}.camera-placeholder{position:absolute;text-align:center;color:var(--muted);max-width:260px}.camera-placeholder strong{display:block;color:var(--pink2);font-size:54px}.scan-frame{position:absolute;width:62%;max-width:330px;aspect-ratio:1;pointer-events:none}.scan-frame i{position:absolute;width:42px;height:42px;border-color:var(--pink);border-style:solid}.scan-frame i:nth-child(1){left:0;top:0;border-width:4px 0 0 4px;border-radius:14px 0 0}.scan-frame i:nth-child(2){right:0;top:0;border-width:4px 4px 0 0;border-radius:0 14px 0 0}.scan-frame i:nth-child(3){left:0;bottom:0;border-width:0 0 4px 4px;border-radius:0 0 0 14px}.scan-frame i:nth-child(4){right:0;bottom:0;border-width:0 4px 4px 0;border-radius:0 0 14px}.scan-frame span{position:absolute;left:6%;right:6%;height:2px;background:linear-gradient(90deg,transparent,var(--pink),transparent);box-shadow:0 0 16px var(--pink);animation:scanLine 2.1s infinite ease-in-out}@keyframes scanLine{0%,100%{top:7%}50%{top:92%}}.scanner-actions{display:flex;gap:10px;margin-top:14px}.manual-entry{border-top:1px solid var(--line);margin-top:20px;padding-top:17px}.manual-entry>span{font-size:12px;color:var(--muted)}.inline-form{display:flex;gap:10px;margin-top:10px}.inline-form input{flex:1}.scan-result{min-height:500px;display:flex;align-items:center;justify-content:center}.empty-state{text-align:center;color:var(--muted);padding:24px}.empty-state span{font-size:52px;color:var(--pink2)}.empty-state h3{color:var(--text);margin:10px 0}.result-card{text-align:center;width:100%;animation:popIn .4s cubic-bezier(.2,.8,.2,1)}@keyframes popIn{from{opacity:0;transform:scale(.92)}to{opacity:1;transform:none}}.result-check{width:92px;height:92px;border-radius:50%;margin:0 auto 18px;display:grid;place-items:center;font-size:42px;background:rgba(36,209,143,.12);border:1px solid rgba(36,209,143,.35);color:var(--good);box-shadow:0 0 40px rgba(36,209,143,.12)}.result-card h3{font-size:27px;margin:0}.result-code{color:var(--muted);font-size:12px;margin-top:5px}.result-detail{margin-top:20px;background:rgba(255,255,255,.04);border-radius:18px;padding:16px;text-align:left;display:grid;gap:11px}.result-row{display:flex;justify-content:space-between;gap:12px;font-size:13px}.result-row span{color:var(--muted)}
.toolbar{margin-bottom:17px}.search-box{min-width:320px;display:flex;align-items:center;gap:8px;background:#0c0c13;border:1px solid var(--line);border-radius:14px;padding-left:14px}.search-box input{border:0;background:transparent;box-shadow:none!important}.students-grid,.plans-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.student-card,.plan-card{position:relative;overflow:hidden}.student-card{border-radius:22px;padding:18px;transition:.2s}.student-card:hover,.plan-card:hover{transform:translateY(-4px);border-color:rgba(240,0,89,.3)}.student-top{display:flex;gap:12px;align-items:center}.student-avatar{width:52px;height:52px;font-size:18px}.student-info{min-width:0}.student-info h3{font-size:16px;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.student-info p{color:var(--muted);font-size:12px;margin:4px 0 0}.student-status{position:absolute;right:14px;top:14px;width:9px;height:9px;border-radius:50%;background:var(--good);box-shadow:0 0 14px var(--good)}.student-status.inactive{background:var(--bad);box-shadow:none}.package-strip{margin:16px 0;background:rgba(255,255,255,.04);border-radius:15px;padding:12px}.package-strip strong{font-size:13px;display:block}.package-strip span{font-size:11px;color:var(--muted)}.progress{height:6px;background:rgba(255,255,255,.07);border-radius:99px;overflow:hidden;margin-top:10px}.progress i{height:100%;display:block;background:linear-gradient(90deg,var(--pink),var(--gold));border-radius:99px}.card-actions{display:flex;gap:8px}.card-actions .btn{flex:1;padding:10px 9px;font-size:12px}.plan-card{border-radius:22px;padding:20px}.plan-card:before{content:"";position:absolute;width:120px;height:120px;border-radius:50%;background:var(--pink);filter:blur(55px);opacity:.08;right:-40px;top:-40px}.plan-card .price{font-size:34px;font-weight:900;margin:16px 0 4px}.plan-card h3{margin:0;font-size:18px}.plan-card p{color:var(--muted);font-size:12px}.plan-meta{display:flex;gap:8px;flex-wrap:wrap;margin:13px 0}.chip,.status-pill{display:inline-flex;align-items:center;border-radius:999px;padding:6px 9px;font-size:10px;font-weight:800}.chip{background:rgba(255,255,255,.06);color:#d3d1db}.status-pill.good{background:rgba(36,209,143,.12);color:#63e8b7}.status-pill.warning{background:rgba(255,179,19,.12);color:#ffd15d}.status-pill.bad{background:rgba(255,77,103,.12);color:#ff8395}.status-pill.neutral{background:rgba(255,255,255,.06);color:var(--muted)}
.table-panel{padding:0;overflow:hidden}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;min-width:760px}th,td{text-align:left;padding:14px 16px;border-bottom:1px solid var(--line);font-size:12px}th{font-size:10px;letter-spacing:.8px;color:var(--muted);background:rgba(255,255,255,.025);position:sticky;top:0}td strong{display:block;font-size:13px}.money{font-weight:900;color:var(--gold)}.lock{color:var(--pink2)}.empty-row{text-align:center;color:var(--muted);padding:34px}.audit-list{display:flex;flex-direction:column;gap:10px}.audit-item{display:grid;grid-template-columns:44px 1fr auto;gap:12px;align-items:center}.audit-icon{width:44px;height:44px;border-radius:13px;background:rgba(240,0,89,.1);color:var(--pink2);display:grid;place-items:center;font-weight:900}.audit-item h4{margin:0 0 4px;font-size:13px}.audit-item p{margin:0;color:var(--muted);font-size:11px}.audit-item time{color:var(--muted);font-size:10px}
.modal-root{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:20px}.modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.72);backdrop-filter:blur(8px)}.modal{position:relative;width:min(700px,100%);max-height:92vh;overflow:auto;background:#111119;border:1px solid var(--line);box-shadow:0 35px 100px rgba(0,0,0,.6);border-radius:26px;padding:24px;animation:modalIn .25s ease}@keyframes modalIn{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}.modal-head{display:flex;justify-content:space-between;align-items:start;gap:12px;margin-bottom:20px}.modal-head h3{font-size:23px;margin:5px 0 0}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.form-grid .full{grid-column:1/-1}.form-grid textarea{min-height:90px;resize:vertical}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.profile-head{display:flex;align-items:center;gap:16px}.profile-head .student-avatar{width:70px;height:70px;font-size:24px}.profile-head h3{margin:0;font-size:25px}.profile-tabs{display:flex;gap:7px;margin:22px 0 16px}.profile-tabs button{border:0;border-radius:11px;background:rgba(255,255,255,.05);color:var(--muted);padding:9px 12px;font-weight:800;font-size:11px}.profile-tabs button.active{background:rgba(240,0,89,.16);color:var(--pink2)}.profile-pane{display:none}.profile-pane.active{display:block}.mini-list{display:flex;flex-direction:column;gap:9px}.mini-item{display:flex;justify-content:space-between;gap:12px;background:rgba(255,255,255,.04);padding:12px;border-radius:13px;font-size:12px}.mini-item span{color:var(--muted)}.qr-card{text-align:center;background:white;color:#121212;border-radius:22px;padding:22px;max-width:330px;margin:0 auto}.qr-card img{width:230px;height:230px}.qr-card h3{margin:8px 0 2px}.qr-card p{margin:0;color:#555}.qr-card .qr-logo{width:75px;height:75px;border-radius:16px;object-fit:cover}.toast-root{position:fixed;right:20px;bottom:20px;z-index:200;display:flex;flex-direction:column;gap:9px}.toast{background:#151520;border:1px solid var(--line);box-shadow:var(--shadow);border-radius:14px;padding:13px 16px;min-width:260px;max-width:380px;display:flex;gap:10px;align-items:center;animation:toastIn .25s ease}.toast.good{border-color:rgba(36,209,143,.3)}.toast.bad{border-color:rgba(255,77,103,.35)}@keyframes toastIn{from{opacity:0;transform:translateX(20px)}to{opacity:1;transform:none}}
@media(max-width:1100px){.metric-grid{grid-template-columns:repeat(2,1fr)}.students-grid,.plans-grid{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr}.scanner-layout{grid-template-columns:1fr}.scan-result{min-height:300px}}
@media(max-width:800px){.login-card{grid-template-columns:1fr;padding:25px}.brand-lockup{flex-direction:column;text-align:center}.login-logo{max-width:230px;width:62%}.app-shell{display:block}.sidebar{position:fixed;left:-280px;width:260px;transition:.25s;box-shadow:30px 0 70px rgba(0,0,0,.5)}.sidebar.open{left:0}.main-content{padding:20px 16px 50px}.mobile-only{display:grid}.topbar h2{font-size:24px}.topbar-actions .btn.ghost{display:none}.metric-grid{grid-template-columns:1fr 1fr}.students-grid,.plans-grid{grid-template-columns:1fr}.toolbar{align-items:stretch;flex-direction:column}.search-box{min-width:0;width:100%}.toolbar-actions{flex-wrap:wrap}.scanner-layout{display:block}.scan-result{margin-top:16px}.camera-box{height:330px}.form-grid{grid-template-columns:1fr}.form-grid .full{grid-column:auto}}
@media(max-width:520px){.metric-grid{grid-template-columns:1fr}.metric-card{min-height:125px}.topbar-actions .btn{padding:11px 13px}.scan-options{grid-template-columns:1fr}.inline-form{flex-direction:column}.login-card{padding:20px}.brand-lockup h1{font-size:38px}.panel{padding:17px}.modal{padding:18px}.profile-head{align-items:flex-start}.scanner-actions{flex-direction:column}}
@media print{body{background:white}.app-shell,.modal-head,.profile-tabs,.form-actions,.modal-backdrop{display:none!important}.modal-root{position:static;padding:0}.modal{box-shadow:none;border:0;background:white;overflow:visible}.qr-card{display:block}}

/* Versión 2: acceso de alumnos, fotografías, QR por paquete y comunidad */
.login-card{width:min(1120px,100%);grid-template-columns:.9fr 1.1fr;align-items:center}
.login-forms{display:grid;grid-template-columns:1fr 34px 1fr;gap:18px;align-items:stretch}
.login-forms .stack{background:rgba(255,255,255,.025);border:1px solid var(--line);border-radius:22px;padding:20px;justify-content:flex-start}
.login-mode-head{display:flex;flex-direction:column;align-items:flex-start;gap:9px;margin-bottom:3px}.login-mode-head strong{font-size:16px}.student-access-form p{font-size:12px;color:var(--muted);line-height:1.55;margin:0}.login-divider{display:grid;place-items:center;position:relative}.login-divider:before{content:"";position:absolute;top:0;bottom:0;width:1px;background:var(--line)}.login-divider span{position:relative;background:#14141f;color:var(--muted);width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-size:11px}
.form-grid small{color:var(--muted);font-weight:500}.form-hint{padding:12px 14px;border:1px solid rgba(255,179,19,.2);background:rgba(255,179,19,.07);border-radius:14px;color:#e6d39d;font-size:12px;line-height:1.5}
.scan-options.single-option{grid-template-columns:1fr}.bad-text{color:var(--bad)!important}.result-check.error{color:var(--bad);background:rgba(255,77,103,.12);border-color:rgba(255,77,103,.35)}
.student-avatar.photo{overflow:hidden;background:#111}.student-avatar.photo img{width:100%;height:100%;object-fit:cover}.student-avatar.large{width:82px!important;height:82px!important;font-size:28px!important;border-radius:22px}
.lookup-card{width:100%;align-self:stretch;display:flex;flex-direction:column;gap:18px}.lookup-person{display:flex;align-items:center;gap:16px;padding-bottom:16px;border-bottom:1px solid var(--line)}.lookup-person h3{font-size:25px;margin:5px 0 3px}.lookup-person p{margin:0;color:var(--muted);font-size:12px}.lookup-packages{display:flex;flex-direction:column;gap:8px}.section-label{font-size:10px;letter-spacing:1.6px;color:var(--gold);font-weight:900}.lookup-membership{display:flex;justify-content:space-between;gap:12px;align-items:center;border:1px solid var(--line);background:rgba(255,255,255,.035);border-radius:15px;padding:13px}.lookup-membership.scanned{border-color:rgba(240,0,89,.52);box-shadow:inset 3px 0 var(--pink)}.lookup-membership strong,.lookup-membership span{display:block}.lookup-membership span{color:var(--muted);font-size:10px;margin-top:4px}.lookup-membership b{color:var(--gold);white-space:nowrap}.selected-session{background:linear-gradient(135deg,rgba(240,0,89,.12),rgba(255,179,19,.07));border:1px solid rgba(240,0,89,.22);padding:15px;border-radius:16px}.selected-session span,.selected-session strong{display:block}.selected-session span{font-size:10px;color:var(--muted);margin-bottom:5px}.compact-empty{padding:12px}
.access-code-row{display:grid;grid-template-columns:1fr auto auto;align-items:center}.access-code-row .btn{padding:7px 10px;font-size:10px}.membership-qr-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.qr-membership-card{background:rgba(255,255,255,.025);border:1px solid var(--line);border-radius:22px;padding:14px}.qr-membership-card.active{border-color:rgba(36,209,143,.32)}.qr-membership-card .qr-card{padding:15px}.qr-membership-card .qr-card img:not(.qr-logo){width:200px;height:200px}.qr-meta{display:flex;justify-content:space-between;gap:10px;padding:11px 4px 2px;font-size:10px}.qr-meta strong{color:var(--good)}.qr-meta span{color:var(--muted)}
.community-layout{display:grid;grid-template-columns:300px minmax(0,1fr);padding:0;overflow:hidden;min-height:650px}.group-list{border-right:1px solid var(--line);padding:12px;overflow:auto;max-height:650px}.group-item{width:100%;border:1px solid transparent;background:transparent;color:var(--text);border-radius:15px;padding:13px;text-align:left;margin-bottom:7px}.group-item:hover,.group-item.active{background:rgba(240,0,89,.1);border-color:rgba(240,0,89,.2)}.group-item strong,.group-item span{display:block}.group-item span{color:var(--gold);font-size:10px;margin-top:4px}.group-item p{margin:7px 0 0;color:var(--muted);font-size:11px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.chat-panel{display:grid;grid-template-rows:auto 1fr auto;min-width:0}.chat-header{min-height:73px;padding:16px 18px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:12px}.chat-header strong,.chat-header span{display:block}.chat-header span{font-size:10px;color:var(--muted);margin-top:4px}.messages{overflow:auto;padding:18px;display:flex;flex-direction:column;gap:11px;max-height:510px}.message{max-width:min(78%,680px);border:1px solid var(--line);background:rgba(255,255,255,.045);border-radius:17px;padding:12px 14px}.message.staff{align-self:flex-end;background:linear-gradient(135deg,rgba(240,0,89,.18),rgba(240,0,89,.07));border-color:rgba(240,0,89,.24)}.message.student{align-self:flex-start}.message-meta{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}.message-meta strong{font-size:11px}.message-meta span{font-size:9px;color:var(--muted)}.message p{margin:7px 0 0;line-height:1.5;font-size:13px;white-space:pre-wrap;overflow-wrap:anywhere}.message-form{display:flex;gap:10px;border-top:1px solid var(--line);padding:14px}.message-form input{flex:1;border:1px solid var(--line);background:#0c0c13;color:var(--text);border-radius:14px;padding:13px 14px;outline:none}.message-form input:focus{border-color:rgba(240,0,89,.65)}
.member-picker{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;max-height:330px;overflow:auto;padding:5px}.member-check{display:grid!important;grid-template-columns:auto 42px 1fr;align-items:center!important;gap:9px!important;background:rgba(255,255,255,.035);border:1px solid var(--line);padding:10px;border-radius:13px}.member-check input{width:auto!important}.member-check .student-avatar{width:42px;height:42px;font-size:13px}.member-check span{font-size:12px}.member-check small{display:block;font-size:9px;margin-top:3px}.group-all-check{background:rgba(255,179,19,.06);padding:12px;border-radius:13px}
.student-portal{min-height:100vh;position:relative;z-index:1;padding:18px}.portal-header{max-width:1400px;margin:0 auto 18px;border-radius:22px;padding:12px 16px;display:flex;align-items:center;justify-content:space-between}.portal-content{max-width:1400px;margin:auto}.portal-summary{margin-bottom:18px}.portal-hero{display:flex;justify-content:space-between;align-items:center}.portal-person{display:flex;align-items:center;gap:18px}.portal-person h1{margin:5px 0;font-size:30px}.portal-person p{color:var(--muted);margin:0}.photo-upload-btn{position:relative}.portal-grid{display:grid;grid-template-columns:minmax(330px,.75fr) minmax(0,1.25fr);gap:18px}.portal-memberships{display:flex;flex-direction:column;gap:14px}.portal-membership{display:grid;grid-template-columns:1fr 160px;gap:16px;align-items:center;border:1px solid var(--line);background:rgba(255,255,255,.025);padding:16px;border-radius:20px}.portal-membership.active{border-color:rgba(36,209,143,.3)}.portal-membership h3{margin:12px 0 6px}.portal-membership-info>strong{font-size:22px;color:var(--gold)}.portal-membership-info p{color:var(--muted);font-size:11px}.portal-qr{text-align:center}.portal-qr img{width:140px;height:140px;background:white;border-radius:15px;padding:7px}.portal-qr small{display:block;color:var(--muted);font-size:9px;margin-top:6px}.portal-community-panel{padding:0;overflow:hidden}.portal-community-layout{grid-template-columns:240px minmax(0,1fr);min-height:570px}.portal-community-layout .group-list{max-height:570px}.portal-community-layout .messages{max-height:430px}

@media(max-width:1150px){.login-card{grid-template-columns:1fr}.brand-lockup{justify-content:center}.portal-grid{grid-template-columns:1fr}.community-layout{grid-template-columns:260px minmax(0,1fr)}}
@media(max-width:800px){.login-forms{grid-template-columns:1fr}.login-divider{height:22px}.login-divider:before{left:0;right:0;top:50%;bottom:auto;width:auto;height:1px}.community-layout,.portal-community-layout{grid-template-columns:1fr;min-height:auto}.group-list{border-right:0;border-bottom:1px solid var(--line);max-height:240px}.messages{min-height:330px}.membership-qr-grid{grid-template-columns:1fr}.member-picker{grid-template-columns:1fr}.portal-membership{grid-template-columns:1fr}.portal-qr img{width:180px;height:180px}.portal-hero{align-items:flex-start;gap:18px}.portal-person{align-items:flex-start}.access-code-row{grid-template-columns:1fr auto}.access-code-row .btn{grid-column:1/-1}}
@media(max-width:520px){.student-portal{padding:10px}.portal-header .sidebar-brand span{display:none}.portal-hero{display:block}.photo-upload-btn{margin-top:16px;width:100%}.portal-person h1{font-size:23px}.lookup-person{align-items:flex-start}.message{max-width:92%}.membership-qr-grid{display:block}.qr-membership-card{margin-bottom:14px}}
@media print{.membership-qr-grid{display:grid!important;grid-template-columns:repeat(2,1fr)!important}.qr-membership-card{break-inside:avoid}.qr-meta{color:#111}.qr-meta span{color:#333}}


/* Ajustes móviles y acceso de instalación — revisión 3 */
.login-install-row{grid-column:1/-1;display:flex;flex-direction:column;gap:8px;align-items:center;margin-top:-8px}.login-install-row small{color:var(--muted);font-size:10px;text-align:center}.login-install-row .ready{border-color:rgba(36,209,143,.45);box-shadow:0 0 0 4px rgba(36,209,143,.08)}
@media(max-width:1100px){
  .login-forms{grid-template-columns:1fr}
  .login-divider{height:22px}
  .login-divider:before{left:0;right:0;top:50%;bottom:auto;width:auto;height:1px}
  .login-card{width:min(720px,100%)}
}
@media(max-width:800px){
  .login-screen{align-items:start;place-items:start center;padding:16px 12px 30px;overflow:auto}
  .login-card{padding:18px;border-radius:25px;gap:20px}
  .brand-lockup{flex-direction:column;text-align:center;gap:14px}
  .login-logo{width:170px;max-width:58%}
  .brand-lockup h1{font-size:36px;line-height:1.02;letter-spacing:-1px}
  .brand-lockup p{font-size:14px;line-height:1.5}
  .login-forms .stack{padding:17px}
}
@media(max-width:420px){
  .login-card{padding:14px}
  .login-logo{width:145px}
  .brand-lockup h1{font-size:31px}
  .login-forms .stack{padding:15px}
}

/* v4: acciones administrativas protegidas */
.table-actions,.membership-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.table-actions .btn,.membership-actions .btn,.profile-payment-delete{padding:8px 10px;font-size:11px}.membership-actions{padding:12px 4px 2px}.membership-actions .btn{flex:1}.mini-item .profile-payment-delete{margin-left:10px}@media(max-width:800px){.table-actions{min-width:150px}.table-actions .btn{flex:1}.mini-item .profile-payment-delete{grid-column:1/-1;margin:8px 0 0}}

/* v5: paquete único, promociones, fotos, stickers y notificaciones */
.portal-header-actions{display:flex;align-items:center;gap:10px}.notification-btn{position:relative;background:rgba(255,179,19,.08);border:1px solid rgba(255,179,19,.22);color:var(--text)}.notification-btn.has-unread{border-color:rgba(240,0,89,.5);box-shadow:0 0 0 4px rgba(240,0,89,.08)}.notification-badge{min-width:22px;height:22px;border-radius:999px;background:var(--pink);color:#fff;display:inline-grid;place-items:center;font-size:10px;padding:0 6px}.portal-membership-history{margin-top:14px}.membership-history-details{border-top:1px solid var(--line);padding-top:13px}.membership-history-details summary{cursor:pointer;color:var(--muted);font-size:12px;font-weight:800}.history-package-list{display:flex;flex-direction:column;gap:8px;margin-top:11px}.history-package{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.025)}.history-package strong,.history-package span{display:block}.history-package span{font-size:9px;color:var(--muted);margin-top:3px}.group-title-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.group-unread{min-width:22px;height:22px;display:grid;place-items:center;border-radius:999px;background:var(--pink);color:#fff;font-size:9px}.message-form-rich{display:block}.message-tools{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:9px}.tool-btn{border:1px solid var(--line);background:rgba(255,255,255,.04);color:var(--text);border-radius:12px;padding:8px 11px;font:inherit;font-size:10px;font-weight:800;cursor:pointer}.tool-btn:hover{border-color:rgba(240,0,89,.4);background:rgba(240,0,89,.08)}.tool-btn.promotion{color:#ffd76b;border-color:rgba(255,179,19,.3)}.message-compose-row{display:flex;gap:10px}.message-compose-row input{flex:1;border:1px solid var(--line);background:#0c0c13;color:var(--text);border-radius:14px;padding:13px 14px;outline:none}.message-compose-row input:focus{border-color:rgba(240,0,89,.65)}.message.type-promotion{max-width:min(86%,760px);border-color:rgba(255,179,19,.35);background:linear-gradient(135deg,rgba(255,179,19,.16),rgba(240,0,89,.1))}.promotion-message h4{margin:7px 0 4px;font-size:18px}.promotion-label{font-size:9px;letter-spacing:1.4px;font-weight:900;color:var(--gold)}.promotion-preview{padding:15px;border-radius:15px;border:1px solid rgba(255,179,19,.28);background:linear-gradient(135deg,rgba(255,179,19,.12),rgba(240,0,89,.08));color:#ffe4a3;font-size:12px}.message.type-image{padding:8px;max-width:min(86%,720px)}.chat-image-wrap{overflow:hidden;border-radius:13px}.chat-image{display:block;width:100%;max-height:520px;object-fit:contain;background:#09090e;border-radius:12px}.chat-image-wrap p{padding:0 6px 5px}.message.type-sticker{padding:8px 11px;background:transparent;border-color:transparent}.chat-sticker{font-size:64px;line-height:1.05;filter:drop-shadow(0 10px 18px rgba(0,0,0,.28))}.sticker-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.sticker-option{font-size:46px;border:1px solid var(--line);background:rgba(255,255,255,.035);border-radius:18px;padding:16px;cursor:pointer}.sticker-option:hover{transform:translateY(-2px);border-color:rgba(240,0,89,.45);background:rgba(240,0,89,.08)}.notification-actions{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.notification-list{display:flex;flex-direction:column;gap:9px;max-height:520px;overflow:auto}.notification-item{width:100%;display:grid;grid-template-columns:48px 1fr;gap:12px;text-align:left;border:1px solid var(--line);background:rgba(255,255,255,.025);color:var(--text);border-radius:16px;padding:12px;cursor:pointer}.notification-item:hover{border-color:rgba(240,0,89,.36);background:rgba(240,0,89,.06)}.notification-item.type-promotion{border-color:rgba(255,179,19,.3);background:linear-gradient(135deg,rgba(255,179,19,.09),rgba(240,0,89,.05))}.notification-icon{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;background:rgba(255,255,255,.06);font-size:23px}.notification-item strong,.notification-item b,.notification-item small,.notification-item time{display:block}.notification-item strong{font-size:10px;color:var(--gold)}.notification-item b{font-size:13px;margin:3px 0}.notification-item small{color:var(--muted);line-height:1.45}.notification-item time{font-size:8px;color:var(--muted);margin-top:5px}.notification-note{font-size:9px;color:var(--muted);line-height:1.5;margin:14px 2px 0}
@media(max-width:620px){.portal-header-actions .notification-btn span{display:none}.portal-header-actions{gap:6px}.notification-btn,.portal-header-actions .btn{padding:10px}.message-compose-row{align-items:stretch}.message-compose-row .btn{padding-inline:12px}.message-tools{gap:6px}.tool-btn{padding:8px 9px}.sticker-grid{grid-template-columns:repeat(4,1fr);gap:8px}.sticker-option{font-size:35px;padding:11px}.chat-sticker{font-size:54px}.history-package{align-items:flex-start}.message.type-promotion,.message.type-image{max-width:96%}}
