:root{
  --bg:#f6f7ff;
  --bg-soft:#eef1ff;
  --surface:rgba(255,255,255,.8);
  --surface-solid:#ffffff;
  --surface-2:#f8f8ff;
  --line:rgba(54,43,122,.08);
  --text:#19172c;
  --text-soft:#6f6a86;
  --nav:#211a52;
  --nav-2:#2f2470;
  --primary:#6e5cff;
  --primary-2:#8d7bff;
  --accent:#ef72c5;
  --success:#22c55e;
  --danger:#ef4444;
  --shadow-lg:0 30px 60px rgba(38, 24, 109, .14);
  --shadow-md:0 16px 36px rgba(38, 24, 109, .10);
  --shadow-sm:0 8px 20px rgba(38, 24, 109, .08);
  --radius-xl:32px;
  --radius-lg:24px;
  --radius-md:18px;
  --radius-sm:14px;
  --safe-top:env(safe-area-inset-top, 0px);
  --safe-bottom:env(safe-area-inset-bottom, 0px);
  --topbar-h:76px;
  --topbar-total-h:calc(var(--topbar-h) + var(--safe-top));
  --dock-h:110px;
}

*{
  box-sizing:border-box;
  -webkit-tap-highlight-color:transparent;
}

html, body{
  margin:0;
  min-height:100%;
  font-family:"Nunito", sans-serif;
  background:
    radial-gradient(circle at 0% 0%, rgba(141,123,255,.18), transparent 28%),
    radial-gradient(circle at 100% 20%, rgba(239,114,197,.12), transparent 24%),
    linear-gradient(180deg, #fbfbff 0%, #f2f4ff 50%, #edf0ff 100%);
  color:var(--text);
  overflow:hidden;
}

body{
  min-height:100vh;
  min-height:100dvh;
}

button,
input,
textarea,
select{
  font:inherit;
}

button:focus,
button:focus-visible,
input:focus,
input:focus-visible{
  outline:none;
  box-shadow:none;
}

.hide-scrollbar{
  overflow:auto;
  scrollbar-width:none;
  -ms-overflow-style:none;
}

.hide-scrollbar::-webkit-scrollbar{
  display:none;
}

.app{
  position:relative;
  width:100%;
  min-height:100vh;
  min-height:100dvh;
  overflow:hidden;
}

.app.is-guest .topbar,
.app.is-guest .dock-wrap,
.app.is-guest .sheet,
.app.is-guest .backdrop{
  display:none;
}

.app.is-boot .topbar,
.app.is-boot .dock-wrap,
.app.is-boot .sheet,
.app.is-boot .backdrop{
  display:none;
}

.app.is-guest .app-shell{
  padding:0;
}

.app.is-boot .app-shell{
  padding:0;
}

.app.is-boot{
  background:
    radial-gradient(circle at 12% 14%, rgba(20,184,166,.12), transparent 24%),
    radial-gradient(circle at 88% 10%, rgba(14,165,233,.10), transparent 20%),
    linear-gradient(180deg, #f8fbff 0%, #eef4f8 52%, #e8f0f5 100%);
}

.app-shell{
  min-height:100vh;
  padding:calc(var(--topbar-total-h) + 18px) 18px calc(var(--dock-h) + 28px + var(--safe-bottom));
  overflow:auto;
  -webkit-overflow-scrolling:touch;
}

.auth-shell{
  min-height:100vh;
  min-height:100dvh;
  display:flex;
  align-items:flex-start;
  justify-content:center;
  padding:max(56px, calc(var(--safe-top) + 34px)) 20px max(20px, calc(var(--safe-bottom) + 20px));
  background:
    radial-gradient(circle at 12% 10%, rgba(37,99,235,.10), transparent 24%),
    radial-gradient(circle at 86% 14%, rgba(14,165,233,.08), transparent 20%),
    linear-gradient(180deg, #f7fafc 0%, #eef3f8 52%, #e8eef5 100%);
  position:relative;
  overflow:hidden;
}

.auth-shell::before,
.auth-shell::after{
  content:"";
  position:absolute;
  inset:auto;
  border-radius:50%;
  filter:blur(8px);
  pointer-events:none;
}

.auth-shell::before{
  width:280px;
  height:280px;
  top:-104px;
  right:-88px;
  background:rgba(37,99,235,.08);
}

.auth-shell::after{
  width:240px;
  height:240px;
  left:-76px;
  bottom:-92px;
  background:rgba(14,165,233,.08);
}

.auth-stage{
  position:relative;
  z-index:1;
  width:min(100%, 430px);
  display:flex;
  flex-direction:column;
  gap:14px;
}

.auth-brand{
  display:flex;
  align-items:center;
  gap:14px;
  color:#0f172a;
}

.auth-brand-mark{
  width:58px;
  height:58px;
  border-radius:8px;
  display:grid;
  place-items:center;
  color:#f8fafc;
  font-size:20px;
  font-weight:800;
  letter-spacing:.04em;
  background:linear-gradient(135deg, #0f172a 0%, #1e293b 100%);
  box-shadow:0 18px 38px rgba(15,23,42,.18);
}

.auth-brand-name{
  font-size:17px;
  font-weight:800;
  color:#0f172a;
}

.auth-brand::after{
  content:"Plataforma escolar";
  display:block;
  margin-left:auto;
  padding:8px 12px;
  border-radius:999px;
  font-size:11px;
  font-weight:700;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:#0f766e;
  background:rgba(255,255,255,.82);
  border:1px solid rgba(15,118,110,.10);
}

.auth-visual{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:8px;
  padding:0 0 4px;
}

.auth-visual-logo{
  width:112px;
  height:112px;
  max-width:112px;
  max-height:112px;
  display:block;
  box-sizing:border-box;
  object-fit:contain;
  object-position:center;
  padding:16px;
  border-radius:24px;
  background:rgba(255,255,255,.74);
  border:1px solid rgba(255,255,255,.88);
  box-shadow:0 18px 40px rgba(15,23,42,.08);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
}

.auth-school-name{
  max-width:280px;
  overflow:hidden;
  color:#334155;
  font-size:11px;
  font-weight:800;
  letter-spacing:.04em;
  text-align:center;
  text-overflow:ellipsis;
  text-transform:uppercase;
  white-space:nowrap;
}

.auth-copy{
  display:flex;
  flex-direction:column;
  gap:8px;
  color:#0f172a;
}

.auth-kicker{
  font-size:12px;
  font-weight:700;
  text-transform:uppercase;
  color:#0f766e;
  opacity:.9;
}

.auth-copy h1{
  margin:0;
  font-size:38px;
  line-height:1.02;
  color:#0f172a;
  letter-spacing:-.03em;
}

.auth-copy p{
  margin:0;
  font-size:15px;
  line-height:1.55;
  color:#475569;
  max-width:36ch;
}

.auth-form{
  padding:22px 20px 18px;
  display:flex;
  flex-direction:column;
  gap:12px;
  background:rgba(255,255,255,.92);
  border:1px solid rgba(203,213,225,.72);
  border-radius:8px;
  box-shadow:0 24px 56px rgba(15,23,42,.08);
  backdrop-filter:blur(18px);
  -webkit-backdrop-filter:blur(18px);
}

.auth-form .app-status{
  margin:2px 0 0;
}

.auth-form .state-card{
  grid-template-columns:40px minmax(0, 1fr);
  gap:12px;
  padding:14px;
  border:1px solid rgba(148,163,184,.16);
  box-shadow:none;
  background:#f8fafc;
}

.auth-form .state-card .state-action{
  grid-column:1 / -1;
  width:100%;
}

.auth-form .state-icon{
  width:40px;
  height:40px;
}

.auth-form-head{
  display:flex;
  flex-direction:column;
  gap:5px;
  margin-bottom:4px;
}

.auth-form-head h2{
  margin:0;
  font-size:22px;
  line-height:1.05;
  color:#111827;
}

.auth-form-head p{
  margin:0;
  font-size:13px;
  line-height:1.5;
  color:#6b7280;
}

.auth-biometric-entry{
  display:flex;
  flex-direction:column;
  gap:12px;
}

.auth-biometric-entry[hidden],
.auth-biometric-optin[hidden]{
  display:none;
}

.auth-biometric-button{
  width:100%;
  min-height:68px;
  display:grid;
  grid-template-columns:44px minmax(0, 1fr) 20px;
  gap:12px;
  align-items:center;
  padding:11px 13px;
  border:1px solid rgba(37,99,235,.14);
  border-radius:12px;
  background:linear-gradient(135deg, rgba(239,246,255,.96), rgba(240,253,250,.92));
  color:#172554;
  text-align:left;
  cursor:pointer;
  transition:transform .18s ease, border-color .18s ease, box-shadow .18s ease, opacity .18s ease;
}

.auth-biometric-button:hover{
  transform:translateY(-1px);
  border-color:rgba(37,99,235,.28);
  box-shadow:0 12px 24px rgba(37,99,235,.08);
}

.auth-biometric-button:disabled{
  cursor:progress;
  opacity:.72;
}

.auth-biometric-icon,
.auth-biometric-optin-icon{
  display:grid;
  place-items:center;
  color:#2563eb;
  background:#fff;
  box-shadow:0 8px 18px rgba(37,99,235,.10);
}

.auth-biometric-icon{
  width:44px;
  height:44px;
  border-radius:12px;
}

.auth-biometric-icon svg{
  width:25px;
  height:25px;
}

.auth-biometric-button small,
.auth-biometric-button strong{
  display:block;
}

.auth-biometric-button small{
  margin-bottom:2px;
  color:#64748b;
  font-size:10px;
  font-weight:800;
  letter-spacing:.07em;
  text-transform:uppercase;
}

.auth-biometric-button strong{
  overflow:hidden;
  color:#172554;
  font-size:13px;
  line-height:1.3;
  text-overflow:ellipsis;
  white-space:nowrap;
}

.auth-biometric-arrow{
  width:18px;
  height:18px;
  color:#2563eb;
}

.auth-biometric-button.is-loading .auth-biometric-icon svg{
  animation:biometricPulse 1s ease-in-out infinite;
}

.auth-divider{
  display:flex;
  align-items:center;
  gap:10px;
  color:#94a3b8;
  font-size:10px;
  font-weight:700;
  text-transform:uppercase;
}

.auth-divider::before,
.auth-divider::after{
  content:"";
  flex:1 1 auto;
  height:1px;
  background:#e2e8f0;
}

.auth-biometric-optin{
  display:grid;
  grid-template-columns:18px 36px minmax(0, 1fr);
  gap:10px;
  align-items:center;
  padding:11px;
  border:1px solid rgba(148,163,184,.20);
  border-radius:10px;
  background:#f8fafc;
  color:#334155;
  cursor:pointer;
}

.auth-biometric-optin > input{
  width:18px;
  height:18px;
  margin:0;
  accent-color:#2563eb;
}

.auth-biometric-optin-icon{
  width:36px;
  height:36px;
  border-radius:10px;
}

.auth-biometric-optin-icon svg{
  width:21px;
  height:21px;
}

.auth-biometric-optin strong,
.auth-biometric-optin small{
  display:block;
}

.auth-biometric-optin strong{
  font-size:12px;
  line-height:1.3;
}

.auth-biometric-optin small{
  margin-top:2px;
  color:#7b879b;
  font-size:9px;
  line-height:1.35;
}

@keyframes biometricPulse{
  0%, 100%{ transform:scale(1); opacity:1; }
  50%{ transform:scale(.88); opacity:.55; }
}

.auth-field{
  display:flex;
  flex-direction:column;
  gap:7px;
}

.auth-field span{
  font-size:12px;
  font-weight:700;
  color:#4b5563;
}

.auth-field input{
  width:100%;
  min-height:50px;
  border:1px solid #d7dee8;
  border-radius:8px;
  padding:0 15px;
  background:rgba(248,250,252,.9);
  color:#111827;
  transition:border-color .18s ease, box-shadow .18s ease, background-color .18s ease;
}

.auth-field input::placeholder{
  color:#94a3b8;
}

.auth-field input:focus,
.auth-field input:focus-visible{
  border-color:#2563eb;
  background:#ffffff;
  box-shadow:0 0 0 4px rgba(37,99,235,.10);
}

.auth-submit{
  margin-top:6px;
  width:100%;
  min-height:50px;
  border:none;
  border-radius:8px;
  background:linear-gradient(135deg, #0f172a 0%, #111827 100%);
  color:#fff;
  font-weight:800;
  cursor:pointer;
  box-shadow:0 14px 30px rgba(15,23,42,.16);
  transition:transform .18s ease, box-shadow .18s ease, opacity .18s ease;
}

.boot-shell{
  min-height:100vh;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:24px;
  background:transparent;
}

.boot-stage{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:14px;
  text-align:center;
  color:#0f172a;
}

.boot-visual{
  width:120px;
  height:120px;
  display:flex;
  align-items:center;
  justify-content:center;
  position:relative;
}

.boot-lottie{
  width:120px;
  height:120px;
  display:flex;
  align-items:center;
  justify-content:center;
  position:relative;
}

.boot-lottie-layer{
  position:absolute;
  inset:0;
  display:flex;
  align-items:center;
  justify-content:center;
  z-index:2;
  opacity:0;
  transition:opacity .18s ease;
}

.boot-lottie.is-ready .boot-lottie-layer{
  opacity:1;
}

.boot-lottie-layer svg{
  width:100%;
  height:100%;
}

.boot-mark{
  width:72px;
  height:72px;
  display:grid;
  place-items:center;
  border-radius:18px;
  background:linear-gradient(135deg, #0f172a 0%, #1f2937 100%);
  color:#fff;
  font-size:24px;
  font-weight:800;
  box-shadow:0 18px 34px rgba(15,23,42,.16);
  position:absolute;
  inset:0;
  margin:auto;
  transition:opacity .18s ease;
  z-index:1;
}

.boot-stage h1{
  margin:0;
  font-size:24px;
  line-height:1.1;
}

.boot-stage p{
  margin:0;
  color:#64748b;
  font-size:14px;
}

.boot-loader{
  width:34px;
  height:34px;
  border-radius:50%;
  border:3px solid rgba(15,23,42,.08);
  border-top-color:#0f172a;
  animation:bootSpin .8s linear infinite;
}

@keyframes bootSpin{
  to{
    transform:rotate(360deg);
  }
}

.auth-submit:hover{
  transform:translateY(-1px);
  box-shadow:0 22px 38px rgba(15,23,42,.22);
}

.auth-check{
  display:flex;
  align-items:center;
  gap:10px;
  color:#4b5563;
  font-size:12px;
  font-weight:600;
  margin-top:2px;
}

.auth-check input{
  width:18px;
  height:18px;
  accent-color:#1d2636;
}

.auth-submit:disabled{
  opacity:.7;
  cursor:progress;
}

.auth-feedback{
  min-height:20px;
  margin:2px 0 0;
  font-size:12px;
  color:#b42318;
  opacity:0;
}

.auth-feedback.is-visible{
  opacity:1;
}

.auth-legal{
  margin:-4px 0 0;
  color:#7b879b;
  font-size:10px;
  line-height:1.45;
  text-align:center;
}

.auth-legal a,
.sheet-privacy-link{
  color:#285b9d;
  font-weight:800;
  text-decoration:none;
}

.auth-legal a:hover,
.sheet-privacy-link:hover{
  text-decoration:underline;
}

.sheet-privacy-link{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:auto;
  max-width:100%;
  min-height:36px;
  margin:0 auto;
  padding:8px 14px;
  font-size:11px;
  text-align:center;
}

.sheet-privacy-space{
  display:flex;
  justify-content:center;
  width:100%;
  margin-top:20px;
  padding:10px 0 4px;
}

.sheet-scroll-spacer{
  width:100%;
  height:calc(148px + var(--safe-bottom));
  flex:0 0 auto;
  pointer-events:none;
}


.topbar{
  position:fixed;
  inset:0 0 auto 0;
  height:var(--topbar-total-h);
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:14px;
  padding:calc(var(--safe-top) + 12px) 18px 12px;
  z-index:40;
  background:rgba(255,255,255,.72);
  backdrop-filter:blur(18px);
  -webkit-backdrop-filter:blur(18px);
  box-shadow: 0px 0px 5px #5b5b5b !important;
}

.topbar img{
  border-right: 2px solid #e6e6e6;
  padding-right: 10px;
  width: 75px;
  height:48px;
  max-width:75px;
  max-height:48px;
  box-sizing:border-box;
  display:block;
  flex:0 0 75px;
  object-fit:contain;
  object-position:center;
}

.topbar-left{
  min-width:0;
  display:flex;
  align-items:center;
  gap:12px;
}

.logo-circle{
  position:relative;
  flex:0 0 auto;
  width:50px;
  height:50px;
  border-radius:18px;
  display:grid;
  place-items:center;
  color:#fff;
  font-weight:800;
  font-size:16px;
  background:linear-gradient(135deg, var(--primary) 0%, var(--accent) 100%);
  box-shadow:0 14px 28px rgba(111, 92, 255, .28);
  overflow:hidden;
}

.logo-circle svg{
  width:76%;
  height:76%;
  display:block;
}

.logo-circle::after{
  content:"";
  position:absolute;
  inset:1px;
  border-radius:17px;
  background:linear-gradient(180deg, rgba(255,255,255,.16), rgba(255,255,255,0));
  pointer-events:none;
}

.module-text{
  min-width:0;
  display:flex;
  flex-direction:column;
  gap:3px;
  padding-left: 5px;
}

.eyebrow{
  font-size:11px;
  font-weight:700;
  letter-spacing:.12em;
  text-transform:uppercase;
  color:var(--primary);
}

.module-title{
  font-size:18px;
  font-weight:800;
  line-height:1.1;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

.module-subtitle{
  min-width:0;
  font-size:12px;
  color:var(--text-soft);
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

.topbar-right{
  display:flex;
  align-items:center;
  gap:10px;
  flex:0 0 auto;
}

.icon-btn{
  position:relative;
  width:44px;
  height:44px;
  border:1px solid var(--line);
  background:rgba(255,255,255,.82);
  border-radius:16px;
  display:grid;
  place-items:center;
  color:#332c63;
  box-shadow:var(--shadow-sm);
  cursor:pointer;
  transition:transform .22s ease, box-shadow .22s ease, background .22s ease;
}

.icon-btn:hover{
  transform:translateY(-1px);
  box-shadow:0 14px 26px rgba(38,24,109,.12);
  background:#fff;
}

.icon-btn svg{
  width:20px;
  height:20px;
}

.notif-dot{
  position:absolute;
  top:5px;
  right:4px;
  min-width:17px;
  height:17px;
  display:grid;
  place-items:center;
  padding:0 4px;
  border-radius:999px;
  background:var(--danger);
  color:#fff;
  font-size:9px;
  font-weight:900;
  line-height:1;
  box-shadow:0 0 0 3px rgba(255,255,255,.96);
  opacity:0;
  transform:scale(.55);
  transition:opacity .2s ease, transform .24s cubic-bezier(.2,.8,.2,1);
}

.icon-btn.has-updates .notif-dot{
  opacity:1;
  transform:scale(1);
}

.icon-btn.has-updates svg{
  animation:notificationBellIn .56s cubic-bezier(.2,.8,.2,1) both;
}

@keyframes notificationBellIn{
  0%,100%{transform:rotate(0)}
  30%{transform:rotate(10deg)}
  55%{transform:rotate(-8deg)}
  78%{transform:rotate(4deg)}
}

.hero{
  position:relative;
  overflow:hidden;
  padding:24px;
  border-radius:30px;
  background:
    radial-gradient(circle at 100% 0%, rgba(255,255,255,.28), transparent 32%),
    linear-gradient(135deg, #241d5e 0%, #392d86 50%, #6d57ff 100%);
  color:#fff;
  box-shadow:var(--shadow-lg);
  margin-bottom:18px;
}

.hero::before,
.hero::after{
  content:"";
  position:absolute;
  border-radius:999px;
  pointer-events:none;
  filter:blur(2px);
}

.hero::before{
  width:180px;
  height:180px;
  right:-40px;
  top:-65px;
  background:radial-gradient(circle, rgba(255,255,255,.22), rgba(255,255,255,0));
}

.hero::after{
  width:120px;
  height:120px;
  right:36px;
  bottom:-34px;
  background:radial-gradient(circle, rgba(239,114,197,.36), rgba(239,114,197,0));
}

.hero-grid{
  position:relative;
  z-index:1;
  display:grid;
  grid-template-columns:minmax(0, 1.2fr) minmax(230px, .8fr);
  gap:18px;
  align-items:end;
}

.hero-kicker{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:8px 12px;
  border-radius:999px;
  background:rgba(255,255,255,.14);
  color:rgba(255,255,255,.9);
  font-size:12px;
  font-weight:700;
  margin-bottom:14px;
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
}

.hero h1{
  margin:0;
  font-size:30px;
  line-height:1.02;
  letter-spacing:normal;
}

.hero p{
  margin:12px 0 0;
  max-width:620px;
  color:rgba(255,255,255,.76);
  font-size:14px;
  line-height:1.65;
}

.hero-stats{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:12px;
}

.hero-stat{
  padding:16px;
  border-radius:22px;
  background:rgba(255,255,255,.12);
  border:1px solid rgba(255,255,255,.14);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
}

.hero-stat-label{
  display:block;
  font-size:11px;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:rgba(255,255,255,.68);
  margin-bottom:8px;
}

.hero-stat-value{
  display:block;
  font-size:26px;
  font-weight:800;
  line-height:1;
  margin-bottom:6px;
}

.hero-stat-help{
  font-size:12px;
  color:rgba(255,255,255,.72);
}

.section-grid{
  display:grid;
  grid-template-columns:1.1fr .9fr;
  gap:16px;
  align-items:start;
}

.card{
  position:relative;
  border-radius:28px;
  padding:20px;
  background:rgba(255,255,255,.76);
  border:1px solid rgba(255,255,255,.84);
  box-shadow:var(--shadow-md);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  overflow:hidden;
}

.card::after{
  content:"";
  position:absolute;
  inset:0;
  border-radius:inherit;
  pointer-events:none;
  background:linear-gradient(180deg, rgba(255,255,255,.35), rgba(255,255,255,0));
}

.card-head{
  position:relative;
  z-index:1;
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:14px;
  margin-bottom:16px;
}

.card-head h3{
  margin:0 0 4px;
  font-size:18px;
  line-height:1.1;
}

.card-head p{
  margin:0;
  font-size:13px;
  color:var(--text-soft);
  line-height:1.5;
}


.soft-chip{
  flex:0 0 auto;
  padding:8px 12px;
  border-radius:999px;
  background:#f3f1ff;
  color:var(--primary);
  font-size:11px;
  font-weight:800;
  letter-spacing:.08em;
  text-transform:uppercase;
}

.quick-grid{
  position:relative;
  z-index:1;
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  gap:12px;
}

.quick-card{
  display:flex;
  align-items:center;
  gap:14px;
  min-width:0;
  padding:16px;
  border-radius:22px;
  background:var(--surface-solid);
  border:1px solid rgba(96, 79, 205, .08);
  box-shadow:0 10px 20px rgba(40,26,114,.05);
  transition:transform .22s ease, box-shadow .22s ease;
  cursor:pointer;
}

.quick-card:hover{
  transform:translateY(-2px);
  box-shadow:0 18px 32px rgba(40,26,114,.08);
}

.quick-icon{
  flex:0 0 auto;
  width:48px;
  height:48px;
  border-radius:16px;
  display:grid;
  place-items:center;
  color:#fff;
  background:linear-gradient(135deg, var(--primary) 0%, var(--accent) 100%);
  box-shadow:0 12px 22px rgba(111,92,255,.2);
}

.quick-icon svg{
  width:22px;
  height:22px;
}

.quick-copy{
  min-width:0;
}

.quick-copy strong{
  display:block;
  font-size:14px;
  line-height:1.2;
  margin-bottom:4px;
  color:#231c55;
}

.quick-copy span{
  display:block;
  font-size:12px;
  line-height:1.45;
  color:var(--text-soft);
}

.activity-list{
  position:relative;
  z-index:1;
  display:flex;
  flex-direction:column;
  gap:12px;
}

.activity-item{
  display:flex;
  align-items:flex-start;
  gap:12px;
  padding:14px;
  border-radius:20px;
  background:rgba(255,255,255,.88);
  border:1px solid rgba(93,74,198,.08);
}

.activity-badge{
  flex:0 0 auto;
  width:42px;
  height:42px;
  border-radius:15px;
  display:grid;
  place-items:center;
  background:#f1eeff;
  color:var(--primary);
}

.activity-badge svg{
  width:20px;
  height:20px;
}

.activity-copy{
  min-width:0;
  flex:1 1 auto;
}

.activity-copy strong{
  display:block;
  font-size:14px;
  margin-bottom:4px;
}

.activity-copy p{
  margin:0;
  color:var(--text-soft);
  font-size:12px;
  line-height:1.5;
}

.activity-time{
  flex:0 0 auto;
  color:#9b96b2;
  font-size:11px;
  font-weight:700;
}

.backdrop{
  position:fixed;
  inset:0;
  background:rgba(18, 13, 49, .38);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  opacity:0;
  pointer-events:none;
  transition:opacity .34s ease;
  z-index:60;
}

.backdrop.show{
  opacity:1;
  pointer-events:auto;
}

.global-loader{
  position:fixed;
  inset:0;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:24px;
  background:rgba(18, 13, 49, .34);
  backdrop-filter:blur(16px);
  -webkit-backdrop-filter:blur(16px);
  opacity:0;
  pointer-events:none;
  transition:opacity .22s ease;
  z-index:80;
}

.app.is-boot .global-loader{
  background:
    radial-gradient(circle at 12% 14%, rgba(20,184,166,.14), transparent 24%),
    radial-gradient(circle at 88% 10%, rgba(14,165,233,.12), transparent 20%),
    linear-gradient(180deg, rgba(248,251,255,.76) 0%, rgba(238,244,248,.72) 52%, rgba(232,240,245,.68) 100%);
  backdrop-filter:blur(20px);
  -webkit-backdrop-filter:blur(20px);
}

.global-loader.show{
  opacity:1;
  pointer-events:auto;
}

.global-loader-card{
  width:min(268px, 84vw);
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:14px;
  padding:24px 22px 22px;
  border-radius:24px;
  background:rgba(255,255,255,.88);
  border:1px solid rgba(255,255,255,.9);
  box-shadow:0 24px 70px rgba(24,16,74,.20);
  backdrop-filter:blur(18px);
  -webkit-backdrop-filter:blur(18px);
}

.global-loader-lottie{
  width:118px;
  height:118px;
  display:flex;
  align-items:center;
  justify-content:center;
}

.global-loader-lottie.has-lottie .global-loader-fallback{
  display:none;
}

.global-loader-lottie svg{
  width:100%;
  height:100%;
}

.global-loader-fallback{
  width:34px;
  height:34px;
  border-radius:999px;
  border:3px solid rgba(110,92,255,.14);
  border-top-color:var(--primary);
  animation:lottieSpinner .72s linear infinite;
}

.global-loader-text{
  margin:0;
  text-align:center;
  font-size:14px;
  font-weight:700;
  color:#20194d;
}

.sheet{
  position:fixed;
  inset:auto 0 0 0;
  z-index:70;
  opacity:0;
  pointer-events:none;
  padding:0;
}

.sheet.open{
  opacity:1;
  pointer-events:auto;
}

.sheet-panel{
  width:min(92vw, 1120px);
  max-height:calc(100vh - 76px);
  max-height:calc(100dvh - max(76px, var(--safe-top)));
  margin:0 auto;
  display:flex;
  flex-direction:column;
  border-radius:34px;
  overflow:hidden;
  background:rgba(255,255,255,.9);
  border:1px solid rgba(255,255,255,.9);
  box-shadow:0 30px 80px rgba(24,16,74,.22);
  backdrop-filter:blur(18px);
  -webkit-backdrop-filter:blur(18px);
}

.sheet-handle{
  width:68px;
  height:6px;
  border-radius:999px;
  background:#d7d3ee;
  margin:14px auto 6px;
  flex:0 0 auto;
}

.sheet-head{
  position:relative;
  z-index:3;
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:14px;
  padding:8px 22px 12px;
  flex:0 0 auto;
  background:linear-gradient(180deg, rgba(255,255,255,.98) 0%, rgba(255,255,255,.94) 100%);
}

.sheet-head::after{
  content:"";
  position:absolute;
  z-index:1;
  left:0;
  right:0;
  bottom:-20px;
  height:22px;
  pointer-events:none;
  background:linear-gradient(180deg, rgba(255,255,255,.96) 0%, rgba(255,255,255,.72) 42%, rgba(255,255,255,0) 100%);
  opacity:.72;
  transform:translateY(0);
  transition:opacity .18s ease, height .22s ease, bottom .22s ease;
}

.sheet.is-scrolled .sheet-head::after{
  opacity:1;
  bottom:-42px;
  height:44px;
}

.sheet-head h3{
  margin:0 0 6px;
  font-size:22px;
  line-height:1;
  color:#20194d;
}

.sheet-head p{
  margin:0;
  font-size:13px;
  color:var(--text-soft);
}

.sheet-close{
  flex:0 0 auto;
  width:44px;
  height:44px;
  border:none;
  border-radius:16px;
  background:#f3f1ff;
  color:var(--primary);
  display:grid;
  place-items:center;
  font-size:22px;
  cursor:pointer;
}

.sheet-body{
  flex:1 1 auto;
  min-height:0;
  padding:18px 22px 16px;
  overflow:auto;
  scroll-padding-bottom:calc(148px + var(--safe-bottom));
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
}

.launcher-search{
  display:flex;
  align-items:center;
  gap:10px;
  padding:14px 16px;
  border-radius:20px;
  background:#f7f6ff;
  border:1px solid rgba(94,76,197,.08);
  margin-bottom:14px;
}

.launcher-search svg{
  width:18px;
  height:18px;
  color:#7f78a5;
  flex:0 0 auto;
}

.launcher-search input{
  width:100%;
  border:none;
  background:transparent;
  color:var(--text);
  font-size:14px;
}

.module-grid{
  display:grid;
  grid-template-columns:repeat(4, minmax(0, 1fr));
  gap:14px;
}

.module-card{
  border:none;
  text-align:left;
  padding:18px;
  border-radius:24px;
  background:linear-gradient(180deg, #ffffff 0%, #f7f5ff 100%);
  border:1px solid rgba(97,77,206,.08);
  box-shadow:0 14px 28px rgba(38,24,109,.06);
  cursor:pointer;
  transition:transform .24s ease, box-shadow .24s ease, border-color .24s ease;
}

.lottie-icon{
  position:relative;
  display:grid;
  place-items:center;
  width:100%;
  height:100%;
}

.lottie-loading-shell{
  width:100%;
  height:100%;
  display:grid;
  place-items:center;
}

.lottie-loading-ring{
  width:18px;
  height:18px;
  border-radius:999px;
  border:2px solid rgba(255,255,255,.38);
  border-top-color:#ffffff;
  animation:lottieSpinner .72s linear infinite;
}

.lottie-static-mark{
  width:28px;
  height:28px;
  display:grid;
  place-items:center;
  border-radius:8px;
  background:rgba(255,255,255,.24);
  color:#ffffff;
  font-size:10px;
  font-weight:800;
  letter-spacing:.06em;
}

@keyframes lottieSpinner{
  from{
    transform:rotate(0deg);
  }

  to{
    transform:rotate(360deg);
  }
}

.module-card:hover{
  transform:translateY(-3px);
  box-shadow:0 20px 38px rgba(38,24,109,.1);
  border-color:rgba(97,77,206,.16);
}

.module-icon{
  width:46px;
  height:46px;
  border-radius:16px;
  display:grid;
  place-items:center;
  margin-bottom:14px;
  color:#fff;
  background:linear-gradient(135deg, var(--primary) 0%, var(--accent) 100%);
  box-shadow:0 12px 22px rgba(111,92,255,.22);
}

.module-icon svg{
  width:22px;
  height:22px;
}

.module-card h4{
  margin:0 0 6px;
  font-size:15px;
  color:#271f5d;
  line-height:1.2;
}

.module-card p{
  margin:0;
  font-size:12px;
  line-height:1.55;
  color:var(--text-soft);
}

.dock-wrap{
  position:fixed;
  inset:auto 0 0 0;
  z-index:50;
  pointer-events:none;
}

.bottom-nav{
  pointer-events:auto;
  display:flex;
  justify-content:center;
  padding:0 0 calc(12px + var(--safe-bottom));
}

.nav-shell{
  position:relative;
  width:min(92vw, 980px);
  height:88px;
  display:grid;
  grid-template-columns:1fr 1fr 120px 1fr 1fr;
  align-items:end;
  padding:9px 15px 12px;
  border-radius:34px;
  background:
    radial-gradient(circle at 50% 0%, rgba(255,255,255,.08), transparent 30%),
    linear-gradient(180deg, var(--nav-2) 0%, var(--nav) 100%);
  box-shadow:0 24px 48px rgba(28,18,87,.24);
  overflow:visible;
  border-radius: 10px;
}

.nav-shell::before{
  content:"";
  position:absolute;
  left:12px;
  right:12px;
  top:1px;
  height:48%;
  border-radius:28px;
  background:linear-gradient(180deg, rgba(255,255,255,.08), rgba(255,255,255,0));
  pointer-events:none;
}

.nav-side{
  display:contents;
}

.nav-item{
  position:relative;
  z-index:1;
  height:58px;
  border:none;
  background:none;
  color:rgba(255,255,255,.56);
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:5px;
  border-radius:20px;
  cursor:pointer;
  transition:transform .24s ease, color .24s ease, background .24s ease;
  font-size:11px;
  font-weight:700;
  letter-spacing:.02em;
}

.nav-item svg{
  width:21px;
  height:21px;
  transition:transform .24s ease, opacity .24s ease;
  opacity:.95;
}

.nav-item.active{
  color:#fff;
}

.nav-item.active::before{
  content:"";
  position:absolute;
  inset:0px 0px;
  border-radius:16px;
  background:rgba(255,255,255,.08);
  z-index:-1;
}

.nav-item.active svg{
  transform:translateY(-1px) scale(1.02);
}

.nav-center-slot{
  position:relative;
  height:100%;
  display:flex;
  align-items:flex-start;
  justify-content:center;
  pointer-events:none;
}

.nav-center{
  position:absolute;
  top:-34px;
  width:82px;
  height:82px;
  border:none;
  border-radius:28px;
  pointer-events:auto;
  display:grid;
  place-items:center;
  cursor:pointer;
  color:#fff;
  background:
    radial-gradient(circle at 30% 20%, #a192ff 0%, #7a66ff 34%, #5e44f7 68%, #4d31da 100%);
  box-shadow:
    0 18px 34px rgba(74, 51, 218, .42),
    inset 0 2px 10px rgba(255,255,255,.16);
  transition:transform .28s cubic-bezier(.2,.9,.2,1), box-shadow .28s ease;
}

.nav-center::before{
  content:"";
  position:absolute;
  inset:-8px;
  border-radius:34px;
  background:radial-gradient(circle, rgba(109,87,255,.22), rgba(109,87,255,0) 70%);
  z-index:-1;
}

.nav-center svg{
  width:30px;
  height:30px;
  transition:transform .34s ease;
}

.nav-center.open svg{
  transform:rotate(180deg) scale(1.05);
}

.nav-item:active,
.nav-center:active,
.module-card:active,
.quick-card:active,
.icon-btn:active{
  transform:scale(.98);
}

@media (max-width: 980px){
  .hero-grid,
  .section-grid{
    grid-template-columns:1fr;
  }

  .module-grid{
    grid-template-columns:repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 720px){
  .app-shell{
    padding-left:14px;
    padding-right:14px;
  }

  .auth-panel{
    min-height:calc(100vh - 40px);
  }

  .hero{
    padding:22px 18px;
  }

  .hero h1{
    font-size:26px;
  }

  .hero-stats,
  .quick-grid,
  .module-grid{
    grid-template-columns:repeat(2, minmax(0, 1fr));
  }

  .sheet-panel,
  .nav-shell{
    width:92vw;
    bottom: 0px;
  }

  .nav-shell{
    grid-template-columns:1fr 1fr 104px 1fr 1fr;
    height:84px;
    border-radius:30px;
  }

  .nav-center{
    width:72px;
    height:72px;
    top:-26px;
    border-radius:24px;
  }
}

@media (max-width: 520px){
  .topbar{
    padding:calc(var(--safe-top) + 10px) 14px 10px;
  }

  .module-title{
    font-size:16px;
  }

  .hero-kicker{
    margin-bottom:12px;
  }

  .hero p{
    font-size:13px;
  }

  .hero-stats,
  .quick-grid,
  .module-grid{
    grid-template-columns:1fr;
  }

  .card,
  .hero,
  .sheet-panel{
    border-radius:26px;
  }

  .sheet-head{
    padding-left:18px;
    padding-right:18px;
  }

  .sheet-body{
    padding-left:18px;
    padding-right:18px;
  }

  .nav-item span{
    font-size:10px;
  }
}

.review-preview[hidden]{display:none!important}

.review-preview{
  position:fixed;
  z-index:2200;
  inset:0;
  display:flex;
  align-items:flex-end;
  justify-content:center;
  padding:16px;
  opacity:0;
  pointer-events:none;
  transition:opacity .28s ease;
}

.review-preview.is-visible{
  opacity:1;
  pointer-events:auto;
}

.review-preview.is-closing{
  pointer-events:none;
}

.review-preview-backdrop{
  position:absolute;
  inset:0;
  width:100%;
  border:0;
  background:rgba(12,22,39,.58);
  opacity:0;
  -webkit-backdrop-filter:blur(4px);
  backdrop-filter:blur(4px);
  transition:opacity .28s ease;
}

.review-preview.is-visible .review-preview-backdrop{
  opacity:1;
}

.review-preview-panel{
  position:relative;
  z-index:1;
  box-sizing:border-box;
  width:min(100%, 510px);
  padding:13px 22px calc(22px + env(safe-area-inset-bottom));
  overflow:hidden;
  border:1px solid rgba(255,255,255,.9);
  border-radius:28px;
  background:linear-gradient(180deg,#fff 0%,#f8fbff 100%);
  color:#14213d;
  box-shadow:0 28px 80px rgba(9,23,46,.3);
  transform:translate3d(0,calc(100% + 32px),0);
  transition:transform .46s cubic-bezier(.2,.86,.28,1);
  will-change:transform;
}

.review-preview.is-visible .review-preview-panel{
  transform:translate3d(0,0,0);
}

.review-preview-handle{
  width:42px;
  height:4px;
  margin:0 auto 12px;
  border-radius:999px;
  background:#d3dce9;
}

.review-preview-close{
  position:absolute;
  top:18px;
  right:18px;
  display:grid;
  place-items:center;
  width:34px;
  height:34px;
  border:0;
  border-radius:50%;
  background:#edf2f9;
  color:#526178;
  font:inherit;
  font-size:21px;
  line-height:1;
}

.review-preview-app{
  display:grid;
  grid-template-columns:58px minmax(0,1fr);
  align-items:center;
  gap:13px;
  padding-right:42px;
}

.review-preview-app img{
  width:58px;
  height:58px;
  padding:5px;
  object-fit:contain;
  border:1px solid #e1e8f1;
  border-radius:17px;
  background:#fff;
  box-shadow:0 7px 20px rgba(29,51,83,.08);
}

.review-preview-app small{
  color:#6d7c91;
  font-size:12px;
  font-weight:800;
}

.review-preview-app h2{
  margin:3px 0 0;
  font-size:22px;
  line-height:1.1;
}

.review-preview-panel>p{
  margin:16px 0 12px;
  color:#68768a;
  font-size:14px;
  line-height:1.48;
}

.review-preview-stars{
  display:flex;
  justify-content:center;
  gap:9px;
  padding:12px;
  border:1px solid #e3eaf3;
  border-radius:17px;
  background:#fff;
  color:#efb536;
  font-size:34px;
  line-height:1;
  letter-spacing:.02em;
}

.review-preview-actions{
  display:grid;
  grid-template-columns:.8fr 1.35fr;
  gap:9px;
  margin-top:15px;
}

.review-preview-actions button{
  min-height:43px;
  border:0;
  border-radius:13px;
  background:#edf1f6;
  color:#56647a;
  font:inherit;
  font-size:13px;
  font-weight:900;
}

.review-preview-actions button:last-child{
  background:#275a9e;
  color:#fff;
  box-shadow:0 8px 20px rgba(39,90,158,.2);
}

.review-preview-actions button:disabled{
  opacity:.62;
  box-shadow:none;
}

.review-preview-open{
  overflow:hidden;
}

@media (max-width:520px){
  .review-preview{
    padding:5px;
  }

  .review-preview-panel{
    width:100%;
    padding:11px 18px calc(19px + env(safe-area-inset-bottom));
    border-radius:25px 25px 8px 8px;
  }

  .review-preview-stars{
    gap:7px;
    font-size:31px;
  }
}

@media (prefers-reduced-motion:reduce){
  .review-preview,
  .review-preview-backdrop,
  .review-preview-panel{
    transition-duration:.01ms!important;
  }
}

/* Selector global de alumno para cuentas familiares. */
.student-switch-trigger{
  display:flex;
  align-items:center;
  gap:4px;
  height:44px;
  padding:4px 7px 4px 4px;
  border:1px solid rgba(255,255,255,.82);
  border-radius:16px;
  background:rgba(255,255,255,.78);
  color:#244d91;
  box-shadow:var(--shadow-sm);
  cursor:pointer;
}

.student-switch-trigger[hidden]{display:none!important}
.student-switch-trigger>span{display:grid;place-items:center;width:34px;height:34px;border-radius:12px;background:linear-gradient(135deg,#285ca7,#477fc5);color:#fff;font-size:11px;font-weight:900;letter-spacing:.03em}
.student-switch-trigger>svg{width:14px;height:14px}

.student-switch-dialog{position:fixed;inset:0;z-index:80;display:grid;align-items:end;justify-items:center}
.student-switch-dialog[hidden]{display:none!important}
.student-switch-backdrop{position:absolute;inset:0;border:0;background:rgba(17,29,51,.38);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}
.student-switch-panel{position:relative;width:min(100%,520px);max-height:min(76dvh,620px);overflow:auto;padding:12px 20px max(22px,calc(var(--safe-bottom) + 18px));border-radius:28px 28px 0 0;background:#fff;box-shadow:0 -24px 70px rgba(22,38,67,.22);animation:studentSwitchIn .26s cubic-bezier(.22,1,.36,1)}
.student-switch-handle{width:42px;height:5px;margin:0 auto 16px;border-radius:99px;background:#dce3ec}
.student-switch-panel header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.student-switch-panel header span{display:block;color:#627da8;font-size:11px;font-weight:900;letter-spacing:.11em;text-transform:uppercase}
.student-switch-panel h2{margin:4px 0 0;color:#17243c;font-size:21px;line-height:1.15}
.student-switch-panel>p{margin:9px 48px 17px 0;color:#7c8798;font-size:13px;line-height:1.45}
.student-switch-close{display:grid;place-items:center;flex:0 0 38px;width:38px;height:38px;border:0;border-radius:13px;background:#f0f4f9;color:#43536c;font-size:24px;cursor:pointer}
.student-switch-list{display:grid;gap:9px}
.student-switch-option{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;width:100%;padding:12px;border:1px solid #e5eaf1;border-radius:17px;background:#fbfcfe;color:#1c2b45;text-align:left;font:inherit;cursor:pointer}
.student-switch-option:hover{border-color:#b9cbea;background:#f5f8fd}
.student-switch-option.is-active{border-color:#6f96ce;background:#edf4ff;box-shadow:0 8px 24px rgba(41,91,162,.1)}
.student-switch-option-avatar{display:grid;place-items:center;width:42px;height:42px;border-radius:14px;background:#e8f0fc;color:#28599e;font-size:12px;font-weight:900}
.student-switch-option.is-active .student-switch-option-avatar{background:#285aa6;color:#fff}
.student-switch-option strong,.student-switch-option small{display:block}
.student-switch-option strong{font-size:14px}.student-switch-option small{margin-top:2px;color:#8791a0;font-size:11px}
.student-switch-option-state{color:#2f6ab8;font-size:12px;font-weight:900}
.student-switch-feedback{min-height:18px;margin:10px 0 0!important;color:#a0444b!important;font-size:12px!important}
@keyframes studentSwitchIn{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}

@media(max-width:560px){
  .topbar-right{gap:6px}
  .student-switch-trigger{height:42px;border-radius:14px}
  .student-switch-trigger>span{width:32px;height:32px;border-radius:11px}
  .student-switch-panel{padding-left:16px;padding-right:16px}
}

/* Apertura y cierre del launcher de modulos. */
.sheet{
  visibility:hidden;
  transform:translateZ(0);
  transition:
    opacity .26s ease,
    visibility 0s linear .34s;
}

.sheet.open{
  visibility:visible;
  transition-delay:0s;
}

.sheet .sheet-panel{
  opacity:0;
  transform:translate3d(0, 42px, 0) scale(.985);
  transform-origin:center bottom;
  transition:
    transform .34s cubic-bezier(.22, 1, .36, 1),
    opacity .24s ease;
  will-change:transform, opacity;
}

.sheet.open .sheet-panel{
  opacity:1;
  transform:translate3d(0, 0, 0) scale(1);
  transition-duration:.46s, .28s;
}

.sheet .sheet-handle,
.sheet .sheet-head{
  opacity:0;
  transform:translateY(10px);
  transition:opacity .2s ease, transform .24s ease;
}

.sheet.open .sheet-handle,
.sheet.open .sheet-head{
  opacity:1;
  transform:translateY(0);
  transition-delay:.08s;
}

.sheet .module-card{
  opacity:0;
  transform:translate3d(0, 16px, 0) scale(.975);
  transition:
    opacity .18s ease,
    transform .2s ease,
    box-shadow .24s ease,
    border-color .24s ease;
}

.sheet.open .module-card{
  opacity:1;
  transform:translate3d(0, 0, 0) scale(1);
  transition-duration:.3s, .38s, .24s, .24s;
  transition-timing-function:ease, cubic-bezier(.22, 1, .36, 1), ease, ease;
}

.sheet.open .module-card:hover{
  transform:translate3d(0, -2px, 0) scale(1.005);
}

.sheet.open .module-card:active{
  transform:translate3d(0, 0, 0) scale(.985);
}

.sheet.open .module-card:nth-child(1){transition-delay:.07s}
.sheet.open .module-card:nth-child(2){transition-delay:.095s}
.sheet.open .module-card:nth-child(3){transition-delay:.12s}
.sheet.open .module-card:nth-child(4){transition-delay:.145s}
.sheet.open .module-card:nth-child(5){transition-delay:.17s}
.sheet.open .module-card:nth-child(6){transition-delay:.195s}
.sheet.open .module-card:nth-child(7){transition-delay:.22s}
.sheet.open .module-card:nth-child(8){transition-delay:.245s}
.sheet.open .module-card:nth-child(9){transition-delay:.27s}
.sheet.open .module-card:nth-child(n+10){transition-delay:.29s}

.sheet .sheet-close{
  transition:transform .28s cubic-bezier(.22, 1, .36, 1), background .2s ease;
}

.sheet.open .sheet-close{
  transform:rotate(90deg);
}

.nav-center.open{
  transform:translateY(-2px) scale(1.04);
  box-shadow:0 22px 42px rgba(15,23,42,.3);
}

@media (prefers-reduced-motion: reduce){
  .sheet,
  .sheet .sheet-panel,
  .sheet .sheet-handle,
  .sheet .sheet-head,
  .sheet .module-card,
  .sheet .sheet-close,
  .nav-center,
  .nav-center svg,
  .backdrop{
    transition-duration:.01ms!important;
    transition-delay:0s!important;
  }
}

/* Modern clean visual theme */
:root{
  --bg:#f4f7fb;
  --bg-soft:#e8eef7;
  --surface:rgba(255,255,255,.78);
  --surface-solid:#ffffff;
  --surface-2:#f8fafc;
  --line:rgba(15,23,42,.09);
  --text:#101828;
  --text-soft:#667085;
  --nav:#0b1220;
  --nav-2:#182235;
  --primary:#2563eb;
  --primary-2:#1d4ed8;
  --accent:#ff6b4a;
  --shadow-lg:0 28px 70px rgba(37,99,235,.14);
  --shadow-md:0 18px 44px rgba(15,23,42,.10);
  --shadow-sm:0 10px 26px rgba(15,23,42,.08);
  --radius-xl:8px;
  --radius-lg:8px;
  --radius-md:8px;
  --radius-sm:8px;
}

html,
body{
  background:
    linear-gradient(135deg, rgba(37,99,235,.12), transparent 32%),
    linear-gradient(315deg, rgba(255,107,74,.055), transparent 28%),
    var(--bg);
}

body,
button,
input,
textarea,
select{
  font-family:"Nunito", sans-serif;
}

.app-shell{
  width:min(100%, 1180px);
  height:100vh;
  height:100dvh;
  min-height:0;
  margin:0 auto;
  padding-left:clamp(16px, 3vw, 28px);
  padding-right:clamp(16px, 3vw, 28px);
  overflow-y:auto;
  overflow-x:hidden;
  overscroll-behavior:contain;
}

.topbar{
  background:rgba(244,247,251,.72);
  box-shadow:none;
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
}

.logo-circle,
.icon-btn,
.hero,
.hero-stat,
.card,
.quick-card,
.quick-icon,
.activity-item,
.activity-badge,
.sheet-panel,
.sheet-close,
.launcher-search,
.module-card,
.module-icon,
.nav-shell,
.nav-item,
.nav-item.active::before,
.nav-center{
  border-radius:var(--radius-md);
}

.logo-circle{
  background:var(--primary);
  box-shadow:0 16px 28px rgba(37,99,235,.24);
}

.logo-circle::after,
.card::after,
.nav-shell::before,
.nav-center::before{
  background:transparent;
}

.hero::before{
  background:transparent;
  filter:none;
}

.hero::after{
  background:transparent;
  filter:none;
}

.icon-btn{
  color:var(--nav);
  background:rgba(255,255,255,.72);
  border-color:rgba(255,255,255,.74);
  box-shadow:var(--shadow-sm);
}

.icon-btn:hover,
.quick-card:hover,
.module-card:hover{
  transform:translateY(-3px);
  box-shadow:var(--shadow-sm);
}

.hero{
  color:var(--text);
  background:rgba(255,255,255,.72);
  border:1px solid rgba(255,255,255,.78);
  box-shadow:var(--shadow-lg);
  backdrop-filter:blur(18px);
  -webkit-backdrop-filter:blur(18px);
  padding:clamp(22px, 4vw, 36px);
}

.hero h1{
  max-width:780px;
  font-size:40px;
  line-height:1;
  letter-spacing:normal;
}

.hero p{
  color:var(--text-soft);
}

.hero-kicker,
.hero-stat{
  background:rgba(255,255,255,.66);
  border:1px solid rgba(255,255,255,.82);
  color:var(--text);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
}

.notif-dot{
  background:var(--accent);
}

.hero-kicker{
  color:var(--primary);
}

.hero-stat-label,
.hero-stat-help{
  color:var(--text-soft);
}

.card{
  background:rgba(255,255,255,.78);
  border:1px solid rgba(255,255,255,.76);
  box-shadow:var(--shadow-md);
  backdrop-filter:blur(16px);
  -webkit-backdrop-filter:blur(16px);
}

.module-content{
  margin-bottom:16px;
}

.app-status{
  display:flex;
  flex-direction:column;
  gap:10px;
  margin-bottom:16px;
}

.app-status[hidden]{
  display:none;
}

.state-card{
  display:grid;
  grid-template-columns:48px minmax(0, 1fr) auto;
  align-items:center;
  gap:14px;
  padding:16px;
  border-radius:8px;
  background:rgba(255,255,255,.84);
  border:1px solid rgba(255,255,255,.82);
  box-shadow:var(--shadow-md);
  backdrop-filter:blur(16px);
  -webkit-backdrop-filter:blur(16px);
}

.state-card[hidden]{
  display:none;
}

.state-icon{
  width:48px;
  height:48px;
  display:grid;
  place-items:center;
  border-radius:8px;
  background:rgba(37,99,235,.11);
  color:var(--primary);
}

.state-icon svg{
  width:24px;
  height:24px;
}

.state-card h3{
  margin:0 0 4px;
  color:var(--text);
  font-size:15px;
  line-height:1.2;
}

.state-card p{
  margin:0;
  color:var(--text-soft);
  font-size:13px;
  line-height:1.45;
}

.offline-card{
  border-color:rgba(255,107,74,.22);
}

.offline-card .state-icon{
  background:rgba(255,107,74,.12);
  color:var(--accent);
}

.state-card.is-attention{
  animation:stateCardShake .46s ease;
}

@keyframes stateCardShake{
  0%,
  100%{
    transform:translateX(0);
  }

  20%{
    transform:translateX(-8px);
  }

  40%{
    transform:translateX(7px);
  }

  60%{
    transform:translateX(-5px);
  }

  80%{
    transform:translateX(4px);
  }
}

.state-action{
  min-height:42px;
  padding:0 14px;
  border:0;
  border-radius:8px;
  background:var(--primary);
  color:#fff;
  cursor:pointer;
  font-weight:800;
  font-size:12px;
}

.state-action:active{
  transform:scale(.98);
}

.module-view{
  min-height:180px;
}

.module-placeholder{
  position:relative;
  z-index:1;
  padding:18px;
  border-radius:8px;
  background:rgba(248,250,252,.76);
  border:1px dashed rgba(37,99,235,.20);
}

.module-placeholder strong{
  display:block;
  margin-bottom:6px;
  color:var(--text);
  font-size:14px;
}

.module-placeholder p{
  margin:0;
  color:var(--text-soft);
  font-size:13px;
  line-height:1.55;
}

.soft-chip,
.sheet-close,
.quick-icon,
.activity-badge,
.module-icon,
.nav-item.active::before{
  background:rgba(37,99,235,.11);
  color:var(--primary);
}

.quick-card,
.activity-item,
.module-card{
  background:rgba(255,255,255,.76);
  border:1px solid rgba(255,255,255,.82);
  box-shadow:0 10px 28px rgba(15,23,42,.06);
}

.module-grid{
  grid-template-columns:repeat(auto-fit, minmax(220px, 1fr));
  gap:5px;
}

.module-card{
  position:relative;
  isolation:isolate;
  overflow:hidden;
  display:grid;
  grid-template-columns:48px minmax(0, 1fr) 18px;
  grid-template-rows:auto auto;
  align-items:center;
  column-gap:14px;
  row-gap:0px;
  min-height:80px;
  padding:16px 18px;
  background:rgba(255,255,255,.88);
  border:1px solid rgba(37,99,235,.10);
  box-shadow:0 1px 2px rgba(15,23,42,.05);
}

.module-card::after{
  content:"";
  display:block;
  grid-column:3;
  grid-row:1 / span 2;
  width:8px;
  height:8px;
  border-top:2px solid rgba(37,99,235,.44);
  border-right:2px solid rgba(37,99,235,.44);
  transform:rotate(45deg);
  justify-self:end;
}

.module-card .module-icon{
  grid-column:1;
  grid-row:1 / span 2;
  position:relative;
  overflow:hidden;
  width:48px;
  height:48px;
  margin:0;
  background:rgba(37,99,235,.10);
  color:var(--primary);
  border:1px solid rgba(37,99,235,.12);
  box-shadow:none;
}

.module-card::before{
  content:"";
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  display:block;
  height:4px;
  border-radius:999px;
  background:var(--primary);
  transform:scaleX(0);
  transform-origin:left center;
  opacity:0;
  z-index:2;
}

.module-card.is-loading{
  border-color:rgba(37,99,235,.28);
  pointer-events:none;
}

.module-card.is-loading::before{
  animation:moduleCardProgress 1.22s cubic-bezier(.2,.8,.2,1) forwards;
}

.module-card.is-selected{
  border-color:rgba(37,99,235,.42);
  background:linear-gradient(100deg, rgba(239,246,255,.98), rgba(255,255,255,.96) 62%);
  box-shadow:inset 4px 0 0 #3977d4, 0 12px 28px rgba(37,99,235,.12);
}

.module-card.is-selected::after{
  border-color:var(--primary);
}

.module-active-state{
  position:absolute;
  top:7px;
  right:10px;
  display:none;
  align-items:center;
  gap:4px;
  padding:3px 7px 3px 6px;
  border:1px solid rgba(37,99,235,.13);
  border-radius:999px;
  background:rgba(219,234,254,.94);
  color:#2559a7;
  font-size:8px;
  font-weight:900;
  letter-spacing:.08em;
  line-height:1.2;
  text-transform:uppercase;
  box-shadow:0 3px 9px rgba(37,99,235,.08);
}

.module-active-state i{
  width:5px;
  height:5px;
  border-radius:50%;
  background:#2f6fd1;
  box-shadow:0 0 0 3px rgba(47,111,209,.11);
}

.module-card.is-selected .module-active-state{
  display:inline-flex;
  animation:moduleActiveStateIn .28s cubic-bezier(.22,1,.36,1) both;
}

.module-card.is-selected h4{
  padding-right:42px;
}

@keyframes moduleActiveStateIn{
  from{opacity:0;transform:translateY(-4px) scale(.94)}
  to{opacity:1;transform:none}
}

@keyframes moduleCardProgress{
  0%{
    opacity:0;
    transform:scaleX(0);
  }

  12%{
    opacity:1;
  }

  100%{
    opacity:1;
    transform:scaleX(1);
  }
}

.module-card h4{
  grid-column:2;
  grid-row:1;
  margin:0;
  font-size:14px;
  line-height:1.2;
}

.module-card p{
  grid-column:2;
  grid-row:2;
  margin:0;
  font-size:12px;
  line-height:1.45;
}

.module-card:hover{
  border-color:rgba(37,99,235,.22);
  box-shadow:0 12px 28px rgba(37,99,235,.12);
}

.module-card:hover .module-icon{
  background:var(--primary);
  color:#fff;
}

.module-card:hover .module-icon-lottie{
  background:rgba(37,99,235,.10);
  color:var(--primary);
}

.lottie-icon{
  width:42px;
  height:42px;
  display:block;
  pointer-events:none;
}

.lottie-icon svg{
  width:100%;
  height:100%;
  display:block;
}

.module-card:hover::after{
  border-color:var(--primary);
}

.module-card.is-hidden{
  display:none;
}

.empty-modules{
  display:none;
  padding:18px;
  border:1px dashed rgba(37,99,235,.22);
  border-radius:8px;
  color:var(--text-soft);
  background:rgba(255,255,255,.58);
  font-size:13px;
  line-height:1.5;
}

.empty-modules.show{
  display:block;
}

.quick-card{
  padding:18px;
}

.quick-copy strong,
.module-card h4,
.sheet-head h3{
  color:var(--text);
}

.backdrop{
  background:rgba(11,18,32,.36);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
}

.sheet-panel{
  border-radius:8px 8px 0 0;
  --sheet-surface:rgba(248,250,252,.96);
  background:var(--sheet-surface);
  border:1px solid rgba(255,255,255,.84);
  box-shadow:0 28px 76px rgba(15,23,42,.20);
  backdrop-filter:blur(20px);
  -webkit-backdrop-filter:blur(20px);
}

.sheet-handle{
  background:#cbd5e1;
}

/* El encabezado y la lista comparten una sola superficie visual. */
.sheet-head,
.sheet-body{
  background:transparent;
}

.sheet-head::after{
  background:linear-gradient(
    180deg,
    rgba(248,250,252,.96) 0%,
    rgba(248,250,252,.70) 44%,
    rgba(248,250,252,0) 100%
  );
  opacity:.34;
}

.sheet.is-scrolled .sheet-head::after{
  opacity:1;
}

.launcher-search{
  background:rgba(248,250,252,.86);
  border-color:rgba(15,23,42,.07);
}

.nav-shell{
  background:rgba(255,255,255,1);
  border:1px solid rgba(255,255,255,.78);
  box-shadow:0 22px 54px rgba(15,23,42,.16);
  backdrop-filter:blur(22px);
  -webkit-backdrop-filter:blur(22px);
  width:min(95vw, 860px);
  height:80px;
  grid-template-columns:1fr 1fr 92px 1fr 1fr;
  border-radius: 30px;
  box-shadow: 0px 0px 5px #c6c6c6;
}

.nav-item{
  color:#64748b;
}

.nav-item.active{
  color:var(--primary);
}

.app.is-onboarding-locked .nav-item.is-locked,
.app.is-onboarding-locked #notificationsBtn:disabled{
  cursor:not-allowed;
  opacity:.32;
  filter:grayscale(.35);
}

.app.is-onboarding-locked .nav-item.is-locked::before{
  display:none;
}

.nav-center{
  border-radius:8px;
  top:-20px;
  width:64px;
  height:64px;
  background:var(--nav);
  box-shadow:0 18px 36px rgba(15,23,42,.24);
}

.nav-center svg{
  width:24px;
  height:24px;
}

@media (max-width: 520px){
  .card,
  .hero,
  .sheet-panel{
    border-radius:8px;
  }

  .sheet-panel{
    border-radius:8px 8px 0 0;
  }
}

@media (max-width: 720px){
  .hero h1{
    font-size:32px;
  }

  .nav-shell{
    height:78px;
    grid-template-columns:1fr 1fr 84px 1fr 1fr;
  }

  .nav-center{
    top:-23px;
    width:58px;
    height:58px;
  }

  .auth-shell{
    padding:max(34px, calc(var(--safe-top) + 24px)) 14px max(14px, calc(var(--safe-bottom) + 14px));
  }

  .auth-stage{
    width:100%;
    gap:12px;
  }

  .auth-form{
    padding:20px 16px 16px;
  }

  .auth-copy h1{
    font-size:32px;
  }

  .auth-brand::after{
    display:none;
  }

  .auth-visual-logo{
    width:96px;
    height:96px;
    padding:14px;
  }
}

@media (max-width: 520px){
  .hero h1{
    font-size:28px;
  }

  .state-card{
    grid-template-columns:42px minmax(0, 1fr);
  }

  .state-action{
    grid-column:1 / -1;
    width:100%;
  }
}
