:root {
  --wine:#7d171c;
  --wine-2:#9e252a;
  --wine-3:#5d0e13;
  --wine-soft:#f7e9e9;
  --ink:#171316;
  --ink-2:#332b2e;
  --muted:#756b6e;
  --muted-2:#968b8e;
  --paper:#f6f2ee;
  --paper-2:#efe8e2;
  --card:#fffdfb;
  --line:rgba(70,45,49,.10);
  --green:#236343;
  --green-soft:#e8f4ed;
  --amber:#8a5a10;
  --amber-soft:#fff1d6;
  --blue:#315f7d;
  --blue-soft:#e8f1f6;
  --shadow:0 16px 42px rgba(49,28,31,.10);
  --shadow-soft:0 8px 26px rgba(49,28,31,.07);
  --safe-top:env(safe-area-inset-top,0px);
  --safe-bottom:env(safe-area-inset-bottom,0px);
  --safe-left:env(safe-area-inset-left,0px);
  --safe-right:env(safe-area-inset-right,0px);
  /* v1.8.10: iOS WebView is edge-to-edge (contentInset=never). These CSS safe-area values are the single source of top/bottom inset positioning across every screen. */
}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;min-height:100%;width:100%;max-width:100%;overflow-x:hidden;background:var(--paper);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","SF Pro Text","Helvetica Neue",Arial,sans-serif}
body{overscroll-behavior-y:auto;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;font-size:16px}
button,input{font:inherit}button{border:0;cursor:pointer}button:disabled{opacity:.55;cursor:default}
#app,.app-shell{width:100%;max-width:100%}#app{min-height:100dvh;overflow-x:hidden}
img{max-width:100%}svg{stroke-linecap:round;stroke-linejoin:round}
.card{background:rgba(255,253,251,.96);border:1px solid rgba(255,255,255,.92);border-radius:26px;box-shadow:var(--shadow-soft)}
.glass{background:rgba(255,255,255,.72);border:1px solid rgba(255,255,255,.78);box-shadow:var(--shadow);backdrop-filter:blur(28px) saturate(160%);-webkit-backdrop-filter:blur(28px) saturate(160%)}
.small{font-size:14px;color:var(--muted);line-height:1.4}.muted{color:var(--muted)}.hidden{display:none!important}

/* Authentication */
.auth-shell{min-height:100dvh;position:relative;overflow-y:auto;padding:calc(var(--safe-top) + 24px) 18px calc(var(--safe-bottom) + 28px);display:flex;align-items:flex-end}
.auth-bg{position:fixed;inset:-12px;background:url('assets/faemhs-gate.jpg') center/cover no-repeat;transform:scale(1.08);filter:blur(7px) saturate(.9) brightness(.88)}
.auth-bg::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(24,16,17,.10),rgba(67,26,30,.30) 48%,rgba(24,13,15,.76))}
.auth-panel{position:relative;width:100%;max-width:520px;margin:0 auto;padding:24px;border-radius:32px;background:rgba(255,255,255,.78);border:1px solid rgba(255,255,255,.82);box-shadow:0 28px 90px rgba(0,0,0,.28);backdrop-filter:blur(38px) saturate(165%);-webkit-backdrop-filter:blur(38px) saturate(165%)}
.brand-row{display:flex;align-items:center;gap:14px;margin-bottom:18px}.brand-logo{width:64px;height:64px;border-radius:20px;object-fit:contain;background:#fff;padding:3px;box-shadow:0 7px 20px rgba(82,16,19,.16)}
.brand-copy{min-width:0}.brand-title{font-weight:900;letter-spacing:-.045em;font-size:32px;line-height:1}.brand-school{margin-top:6px;font-size:11px;line-height:1.3;font-weight:800;letter-spacing:.045em;color:#5e5154;max-width:300px}
.segmented{display:grid;grid-template-columns:repeat(3,1fr);padding:5px;gap:5px;background:rgba(81,56,59,.07);border-radius:17px;margin:18px 0}.segmented button{background:transparent;padding:12px 6px;border-radius:13px;color:#726568;font-size:13px;font-weight:780}.segmented button.active{background:#fff;color:var(--wine);box-shadow:0 3px 12px rgba(62,34,37,.1)}
.auth-title{font-size:25px;font-weight:900;letter-spacing:-.035em;margin:8px 0 6px}.auth-subtitle{font-size:14px;line-height:1.45;color:var(--muted);margin-bottom:18px}.field{margin:14px 0}.field label{display:block;font-size:13px;font-weight:780;color:#62575a;margin:0 0 8px 3px}.optional{font-weight:600;color:#93898b}
.field input,.profile-form input,.profile-form textarea{width:100%;border:1px solid rgba(91,59,64,.14);background:#fff;padding:15px 16px;border-radius:17px;outline:none;color:var(--ink);font-size:16px;min-height:52px}.field input:focus,.profile-form input:focus,.profile-form textarea:focus{border-color:rgba(125,23,28,.42);box-shadow:0 0 0 4px rgba(125,23,28,.08)}
.primary{width:100%;min-height:52px;padding:15px 18px;border-radius:17px;color:#fff;background:linear-gradient(135deg,var(--wine),var(--wine-2));font-weight:850;box-shadow:0 10px 25px rgba(125,23,28,.20)}.secondary{width:100%;min-height:48px;padding:13px 16px;border-radius:16px;color:var(--wine);background:rgba(125,23,28,.08);font-weight:820}.text-button{display:block;margin:14px auto 0;padding:7px 10px;background:transparent;color:var(--wine);font-size:14px;font-weight:780}.helper{margin-top:13px;font-size:12px;line-height:1.5;color:#776c6e}

/* Shell and headers */
.app-shell{min-height:100dvh;background:radial-gradient(circle at 100% 0,rgba(125,23,28,.045),transparent 35%),linear-gradient(180deg,#f8f5f2 0%,#f1ebe6 100%);padding-bottom:calc(104px + var(--safe-bottom))}.top-safe{height:var(--safe-top)}
.hero{position:relative;overflow:hidden;background:#4d2528}.compact-hero{height:300px;border-radius:0 0 38px 38px;box-shadow:0 18px 50px rgba(47,24,27,.15)}.hero-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 50%}.hero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(31,15,17,.04) 0%,rgba(43,17,19,.25) 48%,rgba(30,13,15,.88) 100%)}
.hero-toolbar{position:relative;z-index:2;display:flex;align-items:center;justify-content:space-between;padding:14px 20px}.hero-mark{display:flex;gap:11px;align-items:center;min-width:0}.hero-mark img{width:46px;height:46px;object-fit:contain;background:rgba(255,255,255,.96);padding:2px;border-radius:15px}.hero-mark div{color:#fff;min-width:0}.hero-mark strong{display:block;font-size:20px;letter-spacing:-.03em}.hero-mark span{display:block;font-size:11px;letter-spacing:.045em;font-weight:760;opacity:.92;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:250px}
.icon-btn{position:relative;width:48px;height:48px;border-radius:17px;background:rgba(255,255,255,.20);color:#fff;display:grid;place-items:center;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid rgba(255,255,255,.28)}.icon-btn svg{width:23px;height:23px;stroke-width:2}.bell-button i{position:absolute;right:-3px;top:-4px;min-width:20px;height:20px;border-radius:10px;padding:0 5px;display:grid;place-items:center;background:#fff;color:var(--wine);font-size:11px;font-style:normal;font-weight:900;box-shadow:0 2px 7px rgba(0,0,0,.18)}
.hero-profile{position:absolute;z-index:2;left:20px;right:20px;bottom:24px;display:flex;align-items:flex-end;gap:16px;color:#fff}.avatar{width:78px;height:78px;border-radius:25px;overflow:hidden;display:grid;place-items:center;background:#fff;color:var(--wine);border:3px solid rgba(255,255,255,.95);box-shadow:0 12px 28px rgba(0,0,0,.22);font-size:25px;font-weight:900;flex:0 0 auto}.avatar img{width:100%;height:100%;object-fit:cover}.avatar.image-error{background:#fff}.profile-copy{min-width:0;padding-bottom:3px}.profile-copy .eyebrow{font-size:11px;font-weight:850;letter-spacing:.09em;text-transform:uppercase;opacity:.9;margin-bottom:5px}.profile-copy h1{margin:0;font-size:29px;line-height:1.03;letter-spacing:-.045em;text-shadow:0 2px 10px rgba(0,0,0,.18);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.profile-copy p{margin:7px 0 0;font-size:14px;font-weight:680;opacity:.96;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.content,.page{padding:20px 18px 34px;max-width:760px;margin:0 auto}.dashboard-content{padding-top:18px}
.sync-note,.offline-note{display:flex;align-items:center;gap:9px;padding:11px 13px;border-radius:16px;font-size:13px;font-weight:760;margin:2px 0 14px}.sync-note{background:rgba(35,99,67,.075);color:var(--green);border:1px solid rgba(35,99,67,.08)}.offline-note{background:var(--amber-soft);color:#765008}.sync-note svg,.offline-note svg{width:18px;height:18px;flex:0 0 auto}
.page-head{position:sticky;top:0;z-index:12;padding:calc(var(--safe-top) + 18px) 20px 16px;background:rgba(248,245,242,.90);backdrop-filter:blur(28px) saturate(165%);-webkit-backdrop-filter:blur(28px) saturate(165%);border-bottom:1px solid rgba(93,72,75,.07);display:flex;align-items:center;justify-content:space-between;gap:15px}.page-head h1{margin:0;font-size:34px;line-height:1.05;letter-spacing:-.05em}.page-head p{margin:6px 0 0;font-size:14px;line-height:1.3;color:var(--muted)}.mini-icon{width:46px;height:46px;border-radius:16px;background:var(--wine-soft);color:var(--wine);display:grid;place-items:center;flex:0 0 auto}.mini-icon svg{width:22px;height:22px;stroke-width:2}
.section-head{display:flex;justify-content:space-between;align-items:flex-end;margin:28px 2px 12px;gap:12px}.section-head>div{min-width:0}.section-head h2{margin:1px 0 0;font-size:24px;line-height:1.06;letter-spacing:-.04em}.section-head>span,.section-head>button{font-size:13px;color:var(--wine);font-weight:820;background:none;padding:4px 0;flex:0 0 auto}.section-kicker,.overline{display:block;font-size:11px;line-height:1.2;color:var(--muted);font-weight:850;letter-spacing:.085em;text-transform:uppercase}.page-note{font-size:13px;line-height:1.5;color:var(--muted);margin:12px 5px 0}

/* Home */
.academic-overview{padding:20px}.overview-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.overview-heading h2{font-size:24px;margin:4px 0 0;letter-spacing:-.04em}.state-pill{padding:8px 11px;border-radius:999px;background:#f0ece9;color:#6c6264;font-size:11px;font-weight:850;white-space:nowrap}.state-pill.active{background:var(--blue-soft);color:var(--blue)}
.overview-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:10px;margin-top:18px}.overview-primary{grid-row:span 1;padding:17px;border-radius:21px;background:linear-gradient(145deg,var(--wine-3),var(--wine));color:#fff;min-height:140px;display:flex;flex-direction:column;justify-content:center}.overview-primary>span{font-size:12px;opacity:.86;font-weight:760}.overview-primary>strong{font-size:43px;line-height:1;margin:6px 0;letter-spacing:-.055em}.overview-primary>small{font-size:11px;line-height:1.35;opacity:.82}
.overview-mini{padding:14px 12px;border-radius:20px;background:#f5f1ee;display:flex;flex-direction:column;gap:13px;min-width:0}.overview-mini>span{width:35px;height:35px;border-radius:12px;display:grid;place-items:center;background:#fff;color:var(--wine);box-shadow:0 4px 14px rgba(60,36,39,.06)}.overview-mini svg{width:18px;height:18px}.overview-mini strong{display:block;font-size:21px;letter-spacing:-.035em}.overview-mini small{display:block;font-size:11px;color:var(--muted);font-weight:720;margin-top:2px}
.latest-grade-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.latest-grade{padding:17px;text-align:left;display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;gap:4px 10px;color:var(--ink);min-height:104px}.latest-grade .grade-course{font-size:11px;letter-spacing:.08em;color:var(--wine);font-weight:900}.latest-grade strong{grid-row:1/3;grid-column:2;font-size:38px;line-height:1;color:var(--wine);letter-spacing:-.055em;align-self:center}.latest-grade small{font-size:13px;line-height:1.3;color:var(--ink-2);font-weight:740;align-self:end}.roomy-empty{padding:26px 20px;text-align:center;color:var(--muted)}.roomy-empty>svg{width:28px;height:28px;color:var(--wine);margin-bottom:8px}.roomy-empty strong{display:block;font-size:16px;color:var(--ink)}.roomy-empty p{margin:6px 0 0;font-size:13px;line-height:1.45}
.attention-stack{display:grid;gap:10px}.attention-card,.next-card{width:100%;color:var(--ink);text-align:left}.attention-card{display:grid;grid-template-columns:48px 1fr 20px;align-items:center;gap:13px;padding:15px}.attention-icon,.next-icon{display:grid;place-items:center;background:var(--amber-soft);color:var(--amber);border-radius:16px}.attention-icon{width:48px;height:48px}.attention-icon svg{width:22px;height:22px}.attention-card>span:nth-child(2){min-width:0}.attention-card strong,.next-card strong{display:block;font-size:16px;letter-spacing:-.015em}.attention-card small,.next-card small{display:block;margin-top:4px;font-size:12px;line-height:1.4;color:var(--muted)}.attention-card>svg{width:19px;height:19px;color:#9c9092}
.next-card{display:grid;grid-template-columns:54px 1fr 20px;align-items:center;gap:14px;padding:17px}.next-icon{width:54px;height:54px;background:linear-gradient(145deg,var(--wine),var(--wine-2));color:#fff}.next-icon svg{width:23px;height:23px}.next-chevron svg{width:20px;height:20px;color:#9b8f91}

/* Subjects */
.subject-list{display:grid;gap:11px}.subject{width:100%;display:grid;grid-template-columns:50px 1fr auto 18px;align-items:center;gap:13px;padding:14px;color:var(--ink);text-align:left}.subject-icon{width:50px;height:50px;border-radius:17px;display:grid;place-items:center;background:var(--wine-soft);color:var(--wine);font-size:14px;font-weight:900;letter-spacing:.03em}.subject-main{min-width:0}.subject-main strong{display:block;font-size:16px;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.subject-main>span{display:block;margin-top:4px;font-size:12px;color:var(--muted);font-weight:680}.subject-track{height:5px;border-radius:6px;background:#eee9e5;overflow:hidden;margin-top:9px}.subject-track i{display:block;width:var(--value);height:100%;background:linear-gradient(90deg,#b85b60,var(--wine));border-radius:6px}.grade-pill{min-width:54px;height:42px;padding:0 11px;border-radius:15px;display:grid;place-items:center;background:#f1ece9;color:#675e60;font-weight:900;font-size:18px}.grade-pill.good{background:var(--green-soft);color:var(--green)}.grade-pill.warn{background:var(--amber-soft);color:var(--amber)}.grade-pill.pending{background:#f3efec;color:#9b9092}.subject>svg{width:18px;height:18px;color:#a39799}.compact-subject{padding:13px}
.term-section+.term-section{margin-top:34px}.subject-detail-hero{padding:20px;display:flex;align-items:center;gap:18px}.subject-icon.xl{width:72px;height:72px;border-radius:22px;font-size:20px}.detail-grade{font-size:48px;font-weight:900;line-height:1;letter-spacing:-.055em;margin-top:4px}.metric-kicker{font-size:11px;text-transform:uppercase;letter-spacing:.075em;font-weight:850;color:var(--muted)}.back-link{background:none;color:var(--wine);font-size:14px;font-weight:820;padding:8px 0 14px}.term-history{padding:7px 17px}.term-history>div{display:flex;justify-content:space-between;align-items:center;padding:14px 0;border-bottom:1px solid var(--line)}.term-history>div:last-child{border-bottom:0}.term-history span{font-size:14px;color:var(--muted)}.term-history strong{font-size:18px}

/* Activity list */
.filter-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;padding:5px;border-radius:18px;background:#eae4df;margin:2px 0 14px}.filter-tabs button{padding:12px 6px;border-radius:14px;background:transparent;color:#776b6e;font-size:12px;line-height:1.2;font-weight:800}.filter-tabs button.active{background:#fff;color:var(--wine);box-shadow:0 4px 14px rgba(55,34,36,.08)}
.compact-list{overflow:hidden}.activity-row,.schedule-row{display:flex;align-items:center;gap:13px;padding:16px}.activity-row+.activity-row,.schedule-row+.schedule-row,.activity-row+.schedule-row,.schedule-row+.activity-row{border-top:1px solid var(--line)}.activity-copy{flex:1;min-width:0}.activity-copy strong,.schedule-row>div:last-child strong{display:block;font-size:15px;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.activity-score{margin-left:auto;font-size:14px;font-weight:880;text-align:right;white-space:nowrap}.activity-score span{display:block;font-size:11px;font-weight:700;color:var(--muted);margin-top:3px}.date-badge{width:76px;flex:0 0 auto;padding:9px;border-radius:14px;background:var(--wine-soft)}.date-badge strong{display:block;font-size:12px}.date-badge span{display:block;font-size:11px;color:var(--wine);font-weight:850;margin-top:3px}.empty-inline{padding:31px 18px;text-align:center;font-size:13px;line-height:1.45;color:var(--muted)}

/* Progress */
.progress-summary{display:grid;grid-template-columns:repeat(3,1fr);margin-top:2px;padding:14px;gap:7px}.progress-summary>div{text-align:left;padding:12px 10px;border-radius:18px;background:#f5f1ee;min-width:0}.progress-summary>div>span{width:34px;height:34px;border-radius:12px;background:#fff;color:var(--wine);display:grid;place-items:center;margin-bottom:12px}.progress-summary svg{width:18px;height:18px}.progress-summary strong{display:block;font-size:21px;letter-spacing:-.035em}.progress-summary small{display:block;margin-top:4px;font-size:11px;line-height:1.25;color:var(--muted);font-weight:720}.term-coverage-list{padding:6px 17px}.coverage-row{display:grid;grid-template-columns:minmax(98px,1fr) 1.1fr 42px;align-items:center;gap:12px;padding:14px 0;border-bottom:1px solid var(--line)}.coverage-row:last-child{border-bottom:0}.coverage-row strong{display:block;font-size:14px}.coverage-row span{display:block;margin-top:3px;font-size:11px;color:var(--muted)}.coverage-row b{text-align:right;font-size:16px}.coverage-meter{height:7px;background:#eee9e5;border-radius:6px;overflow:hidden}.coverage-meter i{display:block;width:var(--value);height:100%;background:linear-gradient(90deg,#be6c70,var(--wine));border-radius:6px}.posted-grade-list{display:grid;gap:10px}.posted-grade{display:grid;grid-template-columns:48px 1fr auto 18px;gap:12px;align-items:center;padding:13px;text-align:left;color:var(--ink)}.posted-grade .subject-icon{width:48px;height:48px}.posted-grade strong{display:block;font-size:15px}.posted-grade span{display:block;margin-top:3px;font-size:11px;color:var(--muted)}.posted-grade b{font-size:23px;color:var(--wine)}.posted-grade>svg{width:18px;height:18px;color:#a39799}.trend-card{padding:8px 17px}.trend-row{display:grid;grid-template-columns:82px 1fr 48px;align-items:center;gap:12px;padding:13px 0}.trend-row span{font-size:13px;color:var(--muted)}.trend-row strong{text-align:right;font-size:15px}.trend-bar{height:8px;border-radius:7px;background:#eee9e5;overflow:hidden}.trend-bar i{display:block;height:100%;width:var(--value);background:linear-gradient(90deg,#b75a5e,var(--wine));border-radius:7px}.attendance-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.metric-tile{text-align:center;padding:14px 5px}.metric-tile strong{display:block;font-size:20px}.metric-tile span{display:block;margin-top:4px;font-size:11px;color:var(--muted);font-weight:760}

/* Profile and settings */
.profile-page{padding-top:16px}.profile-hero-card{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:18px;padding:20px;background:linear-gradient(145deg,#fffdfb,#f8efec)}.photo-wrap{position:relative;width:max-content}.profile-photo-large{width:96px;height:96px;border-radius:29px;box-shadow:0 12px 30px rgba(74,39,43,.14);border:4px solid #fff}.photo-edit{position:absolute;right:-5px;bottom:-5px;width:38px;height:38px;border-radius:14px;background:var(--wine);color:#fff;display:grid;place-items:center;box-shadow:0 7px 18px rgba(125,23,28,.28)}.photo-edit svg{width:19px;height:19px}.profile-hero-copy{min-width:0}.verified-label{display:inline-flex;align-items:center;gap:5px;padding:6px 9px;border-radius:999px;background:var(--green-soft);color:var(--green);font-size:11px;font-weight:850}.verified-label svg{width:13px;height:13px}.profile-hero-copy h2{font-size:23px;line-height:1.1;letter-spacing:-.035em;margin:9px 0 4px}.profile-hero-copy p{font-size:12px;color:var(--muted);line-height:1.35;margin:0}.profile-edit-button{display:inline-flex;align-items:center;gap:7px;margin-top:12px;background:var(--wine-soft);color:var(--wine);border-radius:13px;padding:9px 11px;font-size:12px;font-weight:850}.profile-edit-button svg{width:16px;height:16px}
.profile-edit-card{padding:20px;margin-top:13px}.edit-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.edit-head h2{font-size:22px;letter-spacing:-.035em;margin:3px 0 0}.icon-soft{width:36px;height:36px;border-radius:12px;background:#f0ebe7;color:var(--muted);font-size:23px;line-height:1}.profile-form{display:grid;gap:13px;margin-top:18px}.profile-form label>span{display:block;font-size:13px;font-weight:800;color:#665b5e;margin:0 0 7px 3px}.form-grid.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}.form-note{margin:0;font-size:11px;line-height:1.45;color:var(--muted)}
.detail-card{padding:4px 17px}.detail-row{display:grid;grid-template-columns:45px 1fr;align-items:center;gap:12px;padding:14px 0;border-bottom:1px solid var(--line)}.detail-row:last-child{border-bottom:0}.detail-icon{width:42px;height:42px;border-radius:14px;background:var(--wine-soft);color:var(--wine);display:grid;place-items:center}.detail-icon svg{width:20px;height:20px}.detail-row small{display:block;font-size:11px;color:var(--muted);font-weight:720}.detail-row strong{display:block;margin-top:3px;font-size:15px;line-height:1.25}
.wellness-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.wellness-card{padding:15px 12px;min-width:0}.wellness-card>span{width:36px;height:36px;border-radius:12px;background:var(--blue-soft);color:var(--blue);display:grid;place-items:center}.wellness-card svg{width:18px;height:18px}.wellness-card strong{display:block;margin-top:14px;font-size:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wellness-card small{display:block;margin-top:4px;font-size:11px;color:var(--muted);line-height:1.25}
.sync-status-card{padding:17px}.sync-summary{display:flex;align-items:flex-start;gap:13px;padding-bottom:13px}.sync-big-icon{width:45px;height:45px;border-radius:15px;background:var(--green-soft);color:var(--green);display:grid;place-items:center;flex:0 0 auto}.sync-big-icon svg{width:21px;height:21px}.sync-summary strong{font-size:15px}.sync-summary p{font-size:11px;color:var(--muted);line-height:1.4;margin:4px 0 0}.sync-status-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:11px 0;border-top:1px solid var(--line)}.sync-status-row span{font-size:12px;color:var(--muted);font-weight:760}.sync-status-row strong{font-size:11px;text-align:right}.update-row{display:flex;gap:12px;align-items:flex-start;padding:15px}.update-row.read{opacity:.68}.update-dot{width:9px;height:9px;border-radius:50%;background:var(--wine);margin-top:5px;flex:0 0 auto}.update-row.read .update-dot{background:#c4babc}.update-row strong{font-size:15px;display:block}.update-row p{font-size:13px;color:var(--muted);line-height:1.45;margin:4px 0}.update-row small{font-size:11px;color:#95898c}.notice{padding:17px;margin:9px 0}.notice strong{display:block;font-size:16px}.notice p{margin:6px 0 0;font-size:13px;color:var(--muted);line-height:1.5}.message-meta{margin-top:8px}.compact-button{margin-top:11px;padding:10px 13px;min-height:40px;font-size:12px}
.account-actions{display:grid;gap:10px}.action-card{width:100%;padding:15px;display:grid;grid-template-columns:44px 1fr 18px;align-items:center;gap:12px;text-align:left;color:var(--ink)}.action-card.static{grid-template-columns:44px 1fr}.action-card>svg{width:18px;height:18px;color:#a19396}.action-card strong{display:block;font-size:15px}.action-card p{margin:4px 0 0;font-size:12px;color:var(--muted);line-height:1.4}.action-icon{width:44px;height:44px;border-radius:15px;display:grid;place-items:center;background:var(--wine-soft);color:var(--wine)}.action-icon svg{width:20px;height:20px}.code-box{margin-top:10px;padding:17px;border-radius:17px;background:#fff;border:1px dashed rgba(125,23,28,.3);text-align:center;font-size:22px;letter-spacing:.08em;color:var(--wine);font-weight:900}
.feedback-card{display:flex;gap:13px;padding:17px}.feedback-icon{width:45px;height:45px;border-radius:15px;display:grid;place-items:center;background:var(--wine-soft);color:var(--wine);flex:0 0 auto}.feedback-icon svg{width:20px;height:20px}.feedback-card strong{font-size:15px}.feedback-card p{font-size:12px;color:var(--muted);line-height:1.45;margin:5px 0}.feedback-card small{font-size:11px;color:#94888b}
.account-hero{padding:17px;display:flex;align-items:center;gap:14px;margin-top:4px}.account-hero .avatar{width:66px;height:66px;border-radius:20px;box-shadow:none}.account-hero strong{font-size:16px}.child-switch{display:flex;gap:8px;overflow:auto;scrollbar-width:none;padding:2px 0 6px}.child-switch::-webkit-scrollbar{display:none}.child-chip{flex:0 0 auto;border-radius:15px;padding:10px 13px;background:rgba(96,71,74,.08);color:#6d6264;font-size:12px;font-weight:820}.child-chip.active{background:var(--wine);color:#fff}.empty{text-align:center;padding:32px 18px;color:var(--muted);font-size:13px;line-height:1.45}.empty-mark{font-size:28px;margin-bottom:7px}

/* Bottom navigation */
.bottom-nav{position:fixed;z-index:30;left:12px;right:12px;bottom:calc(10px + var(--safe-bottom));height:78px;border-radius:27px;display:grid;grid-template-columns:repeat(5,1fr);padding:7px;background:rgba(255,255,255,.90);border:1px solid rgba(255,255,255,.96);box-shadow:0 18px 52px rgba(50,30,33,.18);backdrop-filter:blur(30px) saturate(180%);-webkit-backdrop-filter:blur(30px) saturate(180%)}.nav-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;background:transparent;color:#817478;border-radius:20px;font-size:11px;font-weight:780}.nav-btn svg{width:23px;height:23px;stroke-width:2}.nav-btn.active{color:var(--wine);background:var(--wine-soft)}

/* Loading / pending / admin */
.loading-screen,.pending-screen{min-height:100dvh;display:grid;place-items:center;padding:25px;text-align:center;background:linear-gradient(180deg,#faf7f4,#f2ece8)}.loading-card,.pending-card{width:100%;max-width:430px;padding:29px 23px;border-radius:30px}.loading-card>img{width:70px;height:70px;border-radius:20px;margin-bottom:15px}.spinner{width:36px;height:36px;border-radius:50%;border:3px solid rgba(125,23,28,.15);border-top-color:var(--wine);animation:spin .8s linear infinite;margin:0 auto 14px}@keyframes spin{to{transform:rotate(360deg)}}.pending-card img{width:82px;height:82px;object-fit:contain;border-radius:23px;background:#fff;padding:3px}.pending-card h2{margin:14px 0 8px;font-size:24px}.pending-card p{color:var(--muted);line-height:1.5;font-size:13px}.toast{position:fixed;z-index:100;left:50%;bottom:calc(105px + var(--safe-bottom));transform:translateX(-50%);max-width:calc(100% - 32px);padding:13px 16px;border-radius:16px;background:rgba(33,27,28,.95);color:#fff;font-size:13px;font-weight:700;box-shadow:0 12px 36px rgba(0,0,0,.24)}
.admin-screen{min-height:100dvh;background:linear-gradient(180deg,#faf7f4,#f0e9e5);padding:calc(14px + var(--safe-top)) 16px calc(28px + var(--safe-bottom))}.admin-head{max-width:720px;margin:0 auto 14px;display:flex;align-items:center;justify-content:space-between;padding:8px 3px}.admin-page{max-width:720px;margin:0 auto}.admin-search-card{padding:19px;margin-bottom:15px}.admin-search-card h1{font-size:28px;letter-spacing:-.04em;margin:0}.admin-search-card p{font-size:13px;color:var(--muted);margin:6px 0 15px}.admin-search-card form{display:grid;grid-template-columns:1fr auto;gap:9px}.admin-search-card input{min-width:0;border:1px solid rgba(101,75,78,.16);background:#fff;border-radius:16px;padding:14px 15px;font-size:16px;color:var(--ink);outline:none}.admin-search-card form .primary{width:auto;padding-left:18px;padding-right:18px}.admin-result{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px;background:transparent;color:var(--ink);text-align:left;border-bottom:1px solid var(--line)}.admin-result:last-child{border-bottom:0}.admin-result strong{display:block;font-size:15px}.admin-result small{display:block;margin-top:4px;font-size:11px;color:var(--muted)}.admin-result>svg{width:18px;height:18px;color:#a19396}.admin-request-list{display:grid;gap:10px}.admin-request{padding:15px}.admin-request-main strong{font-size:15px}.admin-request-main p{font-size:12px;color:var(--muted);margin:4px 0}.admin-request-main small{font-size:11px;color:#8f8285}.admin-request-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}.admin-preview-strip{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:4px 0 12px;padding:11px 13px;border-radius:15px;background:var(--wine-soft);color:var(--wine);font-size:12px}.admin-preview-strip button{background:#fff;color:var(--wine);border-radius:10px;padding:8px 10px;font-size:11px;font-weight:820}

@media (max-width:380px){
  .content,.page{padding-left:14px;padding-right:14px}.compact-hero{height:282px}.hero-toolbar{padding-left:16px;padding-right:16px}.hero-profile{left:16px;right:16px}.profile-copy h1{font-size:26px}.overview-grid{grid-template-columns:1.25fr 1fr}.overview-primary{grid-row:span 2}.latest-grade strong{font-size:34px}.subject{grid-template-columns:46px 1fr auto 16px;gap:9px}.subject-icon{width:46px;height:46px}.grade-pill{min-width:47px}.bottom-nav{left:8px;right:8px}.nav-btn{font-size:11px}.progress-summary{padding:10px}.progress-summary>div{padding:10px 7px}.progress-summary strong{font-size:18px}.attendance-grid{gap:5px}.metric-tile span{font-size:11px}.form-grid.two{grid-template-columns:1fr}.wellness-grid{gap:6px}.wellness-card{padding:12px 8px}.wellness-card strong{font-size:16px}
}
@media (min-width:700px){
  .compact-hero{height:340px;border-radius:0 0 44px 44px}.content,.page{padding-left:26px;padding-right:26px}.bottom-nav{left:50%;right:auto;width:610px;transform:translateX(-50%)}.subject-list{grid-template-columns:repeat(2,1fr)}.term-section .subject-list{grid-template-columns:repeat(2,1fr)}.latest-grade-grid{grid-template-columns:repeat(4,1fr)}
}


/* ========================================================================== 
   v1.5.3 — Gemini-informed Home refinement
   ========================================================================== */

/* Home hero --------------------------------------------------------------- */
.home-hero-v151{
  height:360px;
  border-radius:0 0 32px 32px;
  box-shadow:0 18px 46px rgba(42,24,28,.16);
}
.home-hero-v151::after{
  background:
    linear-gradient(90deg,rgba(15,8,10,.10) 0%,rgba(20,10,12,.16) 30%,rgba(30,12,15,.58) 66%,rgba(23,9,12,.83) 100%),
    linear-gradient(180deg,rgba(12,7,8,.05) 0%,rgba(18,8,10,.08) 42%,rgba(18,8,10,.58) 100%);
}
.home-hero-v151 .hero-photo{object-position:center 46%}
.hero-actions{display:flex;align-items:center;gap:8px}
.home-hero-v151 .hero-toolbar{
  position:absolute;
  z-index:4;
  top:calc(var(--safe-top) + 13px);
  left:17px;
  right:17px;
  padding:0;
}
.home-hero-v151 .hero-mark{
  max-width:calc(100% - 108px);
  gap:9px;
  padding:6px 12px 6px 6px;
  border-radius:999px;
  background:rgba(37,27,30,.30);
  border:1px solid rgba(255,255,255,.22);
  box-shadow:0 8px 24px rgba(0,0,0,.12),inset 0 1px 0 rgba(255,255,255,.12);
  backdrop-filter:blur(18px) saturate(145%);
  -webkit-backdrop-filter:blur(18px) saturate(145%);
}
.home-hero-v151 .hero-mark img{
  width:36px;
  height:36px;
  border-radius:50%;
  padding:1px;
  background:#fff;
  box-shadow:0 3px 10px rgba(0,0,0,.14);
}
.home-hero-v151 .hero-mark>div{min-width:0}
.home-hero-v151 .hero-mark strong{
  font-size:16px;
  line-height:1;
  letter-spacing:-.028em;
}
.home-hero-v151 .hero-mark span{
  margin-top:4px;
  max-width:205px;
  font-size:9px;
  line-height:1.05;
  font-weight:760;
  letter-spacing:.055em;
  text-transform:uppercase;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  opacity:.88;
}
.home-hero-v151 .icon-btn{
  width:42px;
  height:42px;
  border-radius:15px;
  background:rgba(37,27,30,.34);
  border:1px solid rgba(255,255,255,.25);
  color:#fff;
  box-shadow:0 8px 22px rgba(0,0,0,.12),inset 0 1px 0 rgba(255,255,255,.10);
  backdrop-filter:blur(18px) saturate(145%);
  -webkit-backdrop-filter:blur(18px) saturate(145%);
}
.home-hero-v151 .icon-btn svg{width:21px;height:21px;stroke-width:2.15}
.home-hero-v151 .bell-button i{right:-4px;top:-5px}

.identity-hero{
  position:absolute;
  z-index:3;
  left:18px;
  right:18px;
  bottom:20px;
  display:grid;
  grid-template-columns:minmax(112px,31.5%) minmax(0,1fr);
  gap:19px;
  align-items:center;
  color:#fff;
}
.hero-photo-wrap{position:relative;min-width:0}
.hero-avatar-passport{
  width:100%;
  height:auto;
  aspect-ratio:3/4;
  border-radius:25px;
  overflow:hidden;
  display:grid;
  place-items:center;
  background:linear-gradient(145deg,#f2ece9,#ded2ce);
  border:3px solid rgba(255,255,255,.96);
  box-shadow:0 18px 38px rgba(0,0,0,.28),0 0 0 1px rgba(255,255,255,.14);
  color:var(--wine);
}
.hero-avatar-passport img{
  width:100%;
  height:100%;
  display:block;
  object-fit:cover;
  object-position:center 33%;
}
.hero-avatar-passport.image-error{
  background:linear-gradient(145deg,#f7f1ee,#e5dad5);
  color:transparent;
  font-size:0;
}
.hero-avatar-passport.image-error::before{
  content:"";
  width:58%;
  aspect-ratio:1;
  border-radius:50%;
  background:#c8b8b2;
  box-shadow:0 66px 0 26px #c8b8b2;
  transform:translateY(-26px);
}
.hero-photo-edit{
  position:absolute;
  right:-5px;
  bottom:-4px;
  width:39px;
  height:39px;
  border-radius:14px;
  display:grid;
  place-items:center;
  background:rgba(255,255,255,.96);
  color:var(--wine);
  border:1px solid rgba(125,23,28,.10);
  box-shadow:0 9px 24px rgba(0,0,0,.22);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
}
.hero-photo-edit svg{width:19px;height:19px;stroke-width:2.35}
.identity-copy{
  min-width:0;
  padding-bottom:1px;
  align-self:center;
  text-shadow:0 2px 16px rgba(0,0,0,.23);
}
.identity-term{
  display:flex;
  align-items:center;
  gap:8px;
  margin-bottom:9px;
  font-size:10.5px;
  line-height:1;
  font-weight:850;
  letter-spacing:.20em;
  text-transform:uppercase;
  opacity:.92;
}
.identity-term::before{
  content:"";
  width:18px;
  height:2px;
  border-radius:999px;
  background:rgba(255,255,255,.92);
}
.identity-surname{
  font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","Helvetica Neue",Arial,sans-serif;
  font-size:clamp(39px,10.5vw,51px);
  font-weight:900;
  line-height:.91;
  letter-spacing:-.055em;
  white-space:nowrap;
}
.identity-surname span{font-weight:600;opacity:.88}
.identity-given{
  margin-top:7px;
  font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","Helvetica Neue",Arial,sans-serif;
  font-size:clamp(27px,7.2vw,35px);
  font-weight:300;
  line-height:1.02;
  letter-spacing:-.045em;
  white-space:nowrap;
}
.identity-class{
  display:inline-flex;
  align-items:center;
  margin-top:13px;
  padding:6px 10px;
  border-radius:11px;
  background:rgba(255,255,255,.11);
  border:1px solid rgba(255,255,255,.13);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  font-size:13px;
  line-height:1;
  font-weight:660;
  letter-spacing:-.012em;
  white-space:nowrap;
}
.identity-class span{margin:0 6px;opacity:.56}

/* Home body --------------------------------------------------------------- */
.home-v151{padding-top:14px}
.home-v151 .sync-note,.home-v151 .offline-note{
  min-height:42px;
  margin:0 0 12px;
  padding:10px 13px;
  border-radius:15px;
  font-size:11.5px;
  line-height:1.25;
}
.home-v151 .sync-note svg,.home-v151 .offline-note svg{width:17px;height:17px;flex:0 0 auto}

/* Asymmetrical bento summary --------------------------------------------- */
.home-metric-layout{
  display:grid;
  grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);
  gap:10px;
  align-items:stretch;
}
.home-metric-stack{
  display:grid;
  grid-template-rows:1fr 1fr;
  gap:10px;
  min-width:0;
}
.home-metric{
  position:relative;
  min-width:0;
  overflow:hidden;
  border-radius:22px;
  font-variant-numeric:tabular-nums;
}
.metric-grade-primary{
  min-height:196px;
  padding:16px 16px 14px;
  display:flex;
  flex-direction:column;
  background:linear-gradient(145deg,#861a21 0%,#641016 100%);
  color:#fff;
  border:1px solid rgba(255,255,255,.14);
  box-shadow:0 17px 35px rgba(110,18,24,.23),inset 0 1px 0 rgba(255,255,255,.08);
}
.metric-grade-primary::after{
  content:"";
  position:absolute;
  width:150px;
  height:150px;
  top:-76px;
  right:-66px;
  border-radius:50%;
  background:radial-gradient(circle,rgba(255,255,255,.13),rgba(255,255,255,0) 68%);
  pointer-events:none;
}
.metric-topline{
  position:relative;
  z-index:1;
  display:grid;
  grid-template-columns:36px minmax(0,1fr) auto;
  grid-template-rows:36px auto;
  align-items:center;
  column-gap:8px;
  row-gap:6px;
  min-width:0;
}
.metric-grade-primary .metric-icon{
  width:36px;
  height:36px;
  flex:0 0 auto;
  margin:0;
  border-radius:12px;
  display:grid;
  place-items:center;
  background:rgba(255,255,255,.13);
}
.metric-grade-primary .metric-icon svg{width:19px;height:19px;stroke-width:2.3}
.metric-grade-primary .metric-title{
  grid-column:1 / -1;
  grid-row:2;
  min-width:0;
  text-align:center;
  white-space:nowrap;
  font-size:12.8px;
  line-height:1.08;
  font-weight:820;
  letter-spacing:-.012em;
}
.metric-status-chip{
  grid-column:3;
  grid-row:1;
  justify-self:end;
  margin-left:0;
  flex:0 0 auto;
  padding:4px 7px;
  border-radius:999px;
  background:rgba(255,255,255,.12);
  border:1px solid rgba(255,255,255,.10);
  font-size:8.8px;
  line-height:1;
  font-weight:850;
  letter-spacing:.07em;
  text-transform:uppercase;
  opacity:.91;
}
.metric-grade-primary .metric-value{
  position:relative;
  z-index:1;
  flex:1 1 auto;
  min-height:64px;
  margin:4px 0 8px;
  display:grid;
  place-items:center;
  width:100%;
  text-align:center;
  font-size:clamp(58px,15.7vw,70px);
  line-height:.88;
  font-weight:860;
  letter-spacing:-.06em;
  font-variant-numeric:tabular-nums;
}
.metric-grade-primary .metric-caption{
  position:relative;
  z-index:1;
  margin-top:auto;
  padding-top:9px;
  min-height:0;
  border-top:1px solid rgba(255,255,255,.27);
  font-size:10.2px;
  line-height:1.28;
  font-weight:620;
  opacity:.88;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
.home-metric-compact{
  min-height:93px;
  padding:11px 12px 9px;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  background:rgba(255,255,255,.78);
  border:1px solid rgba(255,255,255,.82);
  box-shadow:0 10px 25px rgba(47,31,34,.055),inset 0 1px 0 rgba(255,255,255,.74);
  backdrop-filter:blur(18px) saturate(135%);
  -webkit-backdrop-filter:blur(18px) saturate(135%);
}
.metric-attendance{
  color:#1f6841;
  background:linear-gradient(145deg,rgba(255,255,255,.88),rgba(237,248,241,.90));
  border-color:rgba(184,218,196,.54);
}
.metric-subject{
  color:#934514;
  background:linear-gradient(145deg,rgba(255,255,255,.90),rgba(255,244,229,.92));
  border-color:rgba(234,203,169,.54);
}
.metric-compact-head{
  display:grid;
  grid-template-columns:31px minmax(0,1fr);
  grid-template-rows:auto auto;
  align-items:center;
  column-gap:8px;
  row-gap:1px;
  min-width:0;
}
.home-metric-compact .metric-icon{
  grid-column:1;
  grid-row:1 / span 2;
  align-self:center;
  width:31px;
  height:31px;
  margin:0;
  border-radius:11px;
  display:grid;
  place-items:center;
}
.metric-attendance .metric-icon{background:#e6f4ea;color:#25834e}
.metric-subject .metric-icon{background:#fff0df;color:#c56521}
.home-metric-compact .metric-icon svg{width:17px;height:17px;stroke-width:2.35}
.reactive-icon{position:relative}
.reactive-icon::after{
  content:"";
  position:absolute;
  inset:-4px;
  border:1.5px solid currentColor;
  border-radius:14px;
  opacity:.10;
  animation:homeSoftPulse 3.2s ease-in-out infinite;
}
@keyframes homeSoftPulse{
  0%,100%{transform:scale(.96);opacity:.07}
  50%{transform:scale(1.08);opacity:.17}
}
.home-metric-compact .metric-title{
  grid-column:2;
  grid-row:1;
  align-self:end;
  min-width:0;
  font-size:10.5px;
  line-height:1.04;
  font-weight:820;
  letter-spacing:-.012em;
}
.home-metric-compact .metric-value{
  grid-column:2;
  grid-row:2;
  justify-self:start;
  min-height:0;
  margin:1px 0 0;
  display:block;
  white-space:nowrap;
  font-size:clamp(24px,6.2vw,29px);
  line-height:.94;
  font-weight:850;
  letter-spacing:-.045em;
  font-variant-numeric:tabular-nums;
}
.home-metric-compact .metric-caption{
  margin:7px 0 0;
  padding-top:6px;
  min-height:0;
  border-top:1px solid currentColor;
  font-size:9.2px;
  line-height:1.22;
  font-weight:620;
  opacity:.75;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
.metric-attendance .metric-caption{border-top-color:rgba(31,104,65,.19)}
.metric-subject .metric-caption{border-top-color:rgba(147,69,20,.19)}

/* Subject snapshot -------------------------------------------------------- */
.subject-snapshot-panel{
  position:relative;
  margin-top:12px;
  padding:17px 16px 13px;
  overflow:hidden;
  border-radius:25px;
  background:rgba(255,255,255,.72);
  border:1px solid rgba(255,255,255,.84);
  box-shadow:0 13px 32px rgba(53,38,41,.06),inset 0 1px 0 rgba(255,255,255,.78);
  backdrop-filter:blur(24px) saturate(145%);
  -webkit-backdrop-filter:blur(24px) saturate(145%);
  touch-action:pan-y;
}
.subject-snapshot-panel::before{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background:linear-gradient(135deg,rgba(255,255,255,.26),transparent 44%);
}
.snapshot-head{
  position:relative;
  z-index:1;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding-bottom:11px;
}
.snapshot-head>div:first-child{min-width:0}
.snapshot-kicker{
  display:block;
  margin-bottom:3px;
  color:var(--wine);
  font-size:9.5px;
  line-height:1.1;
  font-weight:850;
  letter-spacing:.13em;
  text-transform:uppercase;
}
.snapshot-head h2{
  margin:0;
  font-size:21px;
  line-height:1.04;
  font-weight:850;
  letter-spacing:-.04em;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.snapshot-head small{
  display:block;
  max-width:238px;
  margin-top:4px;
  color:var(--muted);
  font-size:9.8px;
  line-height:1.25;
}
.snapshot-controls{display:flex;align-items:center;gap:6px;flex:0 0 auto}
.snapshot-controls button{
  width:34px;
  height:34px;
  border-radius:12px;
  display:grid;
  place-items:center;
  background:rgba(248,245,242,.88);
  color:#6d6264;
  font-size:23px;
  line-height:1;
  box-shadow:0 4px 12px rgba(42,28,31,.05);
  border:1px solid rgba(89,62,66,.05);
}
.snapshot-dots{display:flex;align-items:center;gap:4px}
.snapshot-dots i{width:5px;height:5px;border-radius:50%;background:#cfc5c7}
.snapshot-dots i.active{width:14px;border-radius:5px;background:var(--wine)}
.snapshot-rows{position:relative;z-index:1;border-top:1px solid var(--line)}
.snapshot-row{
  display:grid;
  grid-template-columns:38px minmax(0,1fr) auto;
  align-items:center;
  gap:11px;
  padding:11px 0;
  border-bottom:1px solid var(--line);
}
.snapshot-row-icon{
  width:38px;
  height:38px;
  border-radius:13px;
  display:grid;
  place-items:center;
  background:rgba(122,26,37,.08);
  color:var(--wine);
}
.snapshot-row:nth-child(2) .snapshot-row-icon{background:rgba(63,73,145,.08);color:#4d4b94}
.snapshot-row:nth-child(3) .snapshot-row-icon{background:rgba(205,126,27,.10);color:#a55c13}
.snapshot-row-icon svg{width:19px;height:19px;stroke-width:2.2}
.snapshot-row-copy{min-width:0}
.snapshot-row strong{
  display:block;
  font-size:12.8px;
  line-height:1.16;
  font-weight:760;
  letter-spacing:-.012em;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.snapshot-row small{
  display:block;
  margin-top:3px;
  color:var(--muted);
  font-size:9.6px;
  line-height:1.15;
}
.snapshot-progress{
  position:relative;
  height:4px;
  margin-top:7px;
  overflow:hidden;
  border-radius:999px;
  background:rgba(65,49,52,.07);
}
.snapshot-progress i{
  position:absolute;
  inset:0 auto 0 0;
  width:var(--value,0%);
  border-radius:inherit;
  background:linear-gradient(90deg,var(--wine),#a93740);
  transition:width .35s ease;
}
.snapshot-score{text-align:right;min-width:42px}
.snapshot-score b{
  display:block;
  color:var(--wine);
  font-size:15px;
  line-height:1;
  font-weight:850;
  font-variant-numeric:tabular-nums;
}
.snapshot-score span{
  display:block;
  margin-top:3px;
  color:var(--muted);
  font-size:9.2px;
  line-height:1;
}
.snapshot-footnote{
  position:relative;
  z-index:1;
  display:flex;
  align-items:flex-start;
  gap:7px;
  padding-top:10px;
  color:var(--muted);
  font-size:9.4px;
  line-height:1.3;
}
.snapshot-footnote svg{width:15px;height:15px;flex:0 0 auto;margin-top:0}

/* Latest posted grades ---------------------------------------------------- */
.compact-home-section{margin-top:22px;margin-bottom:10px}
.compact-home-section .section-kicker{font-size:9.5px;letter-spacing:.14em}
.compact-home-section h2{font-size:24px;letter-spacing:-.045em}
.latest-grade-grid{gap:9px}
.latest-grade{
  min-height:112px;
  padding:15px 14px;
  border-radius:22px;
  background:rgba(255,255,255,.68);
  border:1px solid rgba(255,255,255,.84);
  box-shadow:0 9px 23px rgba(53,38,41,.05);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
}
.latest-grade strong{font-size:36px;letter-spacing:-.055em;font-variant-numeric:tabular-nums}
.latest-grade small{font-size:12px;line-height:1.15}
.grade-course{font-size:9.2px;letter-spacing:.12em}
.dashboard-content{padding-bottom:126px}

/* Profile/settings sheet -------------------------------------------------- */
.menu-scrim,.photo-manager-scrim{
  position:fixed;
  z-index:60;
  inset:0;
  background:rgba(24,15,17,.38);
  backdrop-filter:blur(5px);
  -webkit-backdrop-filter:blur(5px);
}
.quick-menu{
  position:fixed;
  z-index:61;
  left:50%;
  bottom:0;
  width:min(100%,430px);
  max-height:88dvh;
  transform:translateX(-50%);
  overflow:auto;
  padding:13px 20px calc(24px + var(--safe-bottom));
  border-radius:32px 32px 0 0;
  background:rgba(250,248,245,.95);
  border:1px solid rgba(255,255,255,.75);
  box-shadow:0 -18px 55px rgba(36,21,23,.22);
  backdrop-filter:blur(30px) saturate(150%);
  -webkit-backdrop-filter:blur(30px) saturate(150%);
}
.quick-menu-handle{width:40px;height:5px;border-radius:6px;background:rgba(62,45,49,.16);margin:0 auto 16px}
.quick-menu-head{display:flex;align-items:flex-start;justify-content:space-between;gap:11px}
.quick-menu-profile{display:flex;align-items:center;gap:13px;min-width:0}
.menu-avatar{width:54px;height:68px;border-radius:17px;box-shadow:0 6px 17px rgba(39,25,28,.10);border:2px solid rgba(255,255,255,.92)}
.quick-menu-profile>div{min-width:0}
.quick-menu-profile span,.quick-menu-profile small{display:block;font-size:10px;color:var(--muted)}
.quick-menu-profile strong{display:block;max-width:230px;margin:2px 0;font-size:17px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.menu-close{width:38px;height:38px;border-radius:13px;background:rgba(85,64,68,.07);color:#685d60;display:grid;place-items:center;flex:0 0 auto}
.menu-close svg{width:19px;height:19px}
.menu-section{margin-top:21px}
.menu-label{display:block;margin:0 4px 7px;font-size:10px;text-transform:uppercase;letter-spacing:.10em;color:var(--muted);font-weight:860}
.menu-row{
  width:100%;
  min-height:58px;
  display:grid;
  grid-template-columns:38px minmax(0,1fr) 17px;
  align-items:center;
  gap:11px;
  padding:9px 4px;
  text-align:left;
  background:transparent;
  color:var(--ink);
  border-bottom:1px solid var(--line);
}
.menu-row>svg:first-child{width:21px;height:21px;color:var(--wine);stroke-width:2.2}
.menu-row>svg:last-child{width:17px;height:17px;color:#9e9295}
.menu-row strong{display:block;font-size:14px;line-height:1.15}
.menu-row small{display:block;margin-top:3px;color:var(--muted);font-size:10px;line-height:1.2}
.menu-profile-list{display:flex;gap:7px;overflow:auto;scrollbar-width:none;padding:1px 0}
.menu-profile-list::-webkit-scrollbar{display:none}
.menu-profile-chip{flex:0 0 auto;background:#f1ebe8;color:#685e60;border-radius:13px;padding:9px 11px;font-size:11px;font-weight:800}
.menu-profile-chip.active{background:var(--wine);color:#fff}

/* Versioned photo manager ------------------------------------------------- */
.photo-manager{
  position:fixed;
  z-index:71;
  left:50%;
  bottom:0;
  width:min(100%,430px);
  max-height:88dvh;
  transform:translateX(-50%);
  overflow:auto;
  padding:21px 20px calc(22px + var(--safe-bottom));
  border-radius:32px 32px 0 0;
  background:rgba(252,250,248,.97);
  border:1px solid rgba(255,255,255,.80);
  box-shadow:0 -18px 55px rgba(36,21,23,.24);
  backdrop-filter:blur(30px) saturate(145%);
  -webkit-backdrop-filter:blur(30px) saturate(145%);
}
.photo-manager-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.photo-manager-head h2{margin:2px 0 0;font-size:24px;letter-spacing:-.04em}
.photo-upload-btn{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:16px}
.photo-upload-btn svg{width:20px;height:20px}
.photo-history-loading{display:grid;place-items:center;gap:6px;padding:35px;color:var(--muted);font-size:12px}
.photo-history-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:16px}
.photo-history-item{padding:9px;border-radius:19px;background:#f5f0ec;border:1px solid transparent}
.photo-history-item.current{border-color:rgba(125,23,28,.30);background:#fff5f5}
.photo-history-image{aspect-ratio:3/4;border-radius:15px;overflow:hidden;background:#eadfdb;position:relative;display:grid;place-items:center}
.photo-history-image img{width:100%;height:100%;object-fit:cover}
.photo-history-image i{position:absolute;left:7px;top:7px;background:var(--wine);color:#fff;border-radius:999px;padding:5px 7px;font-size:9px;font-style:normal;font-weight:850}
.photo-history-item>div:last-child{padding:8px 2px 1px}
.photo-history-item strong{display:block;font-size:12px}
.photo-history-item small{display:block;margin-top:2px;color:var(--muted);font-size:9.5px}
.photo-default-button{margin-bottom:0}
.profile-photo-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:10px}
.profile-photo-actions .secondary{display:flex;align-items:center;justify-content:center;gap:7px}
.profile-photo-actions svg{width:18px;height:18px}

/* Refine global bottom navigation for the Home redesign ------------------ */
.bottom-nav{
  height:72px;
  border-radius:25px;
  padding:6px;
  background:rgba(255,255,255,.86);
  border:1px solid rgba(255,255,255,.90);
  box-shadow:0 15px 42px rgba(50,30,33,.16),inset 0 1px 0 rgba(255,255,255,.70);
  backdrop-filter:blur(28px) saturate(165%);
  -webkit-backdrop-filter:blur(28px) saturate(165%);
}
.nav-btn{gap:3px;border-radius:18px;font-size:10.5px}
.nav-btn svg{width:22px;height:22px}
.nav-btn.active{background:rgba(125,23,28,.09);color:var(--wine);box-shadow:inset 0 0 0 1px rgba(125,23,28,.025)}



/* Animated subject icons -------------------------------------------------- */
.subject-vicon{
  --subject-accent:var(--wine);
  position:relative;
  display:grid;
  place-items:center;
  overflow:hidden;
  color:var(--subject-accent);
  background:linear-gradient(145deg,rgba(255,255,255,.92),rgba(248,240,238,.86));
  border:1px solid rgba(125,23,28,.08);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.88),0 6px 16px rgba(55,32,35,.055);
}
.subject-vicon svg{width:58%;height:58%;overflow:visible;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8}
.subject-vicon-math{--subject-accent:#8b2029;background:linear-gradient(145deg,#fff8f8,#f5e7e8)}
.subject-vicon-tech{--subject-accent:#315f9c;background:linear-gradient(145deg,#f8fbff,#e9f0fb)}
.subject-vicon-physics{--subject-accent:#6752a4;background:linear-gradient(145deg,#fbf9ff,#eee9fb)}
.subject-vicon-chemistry{--subject-accent:#2f7b55;background:linear-gradient(145deg,#f8fff9,#e6f3ea)}
.subject-vicon-research{--subject-accent:#a05b19;background:linear-gradient(145deg,#fffaf3,#f8ead8)}
.subject-vicon-book{--subject-accent:#7d171c;background:linear-gradient(145deg,#fff9f8,#f2e8e6)}
.subject-vicon .draw-path{stroke-dasharray:32;stroke-dashoffset:32;animation:subjectDraw 4.2s cubic-bezier(.4,0,.2,1) infinite}
.subject-vicon .subject-pulse-dot{transform-box:fill-box;transform-origin:center;animation:subjectDot 2.4s ease-in-out infinite}
.subject-vicon .tech-signal{stroke-dasharray:22;stroke-dashoffset:22;animation:subjectSignal 3.4s ease-in-out infinite}
.subject-vicon-physics .orbit{transform-box:fill-box;transform-origin:center;opacity:.78}
.subject-vicon-physics .orbit-a{animation:subjectOrbitA 6.8s linear infinite}
.subject-vicon-physics .orbit-b{animation:subjectOrbitB 8.2s linear infinite reverse}
.subject-vicon-physics .orbit-c{animation:subjectOrbitC 7.5s linear infinite}
.subject-vicon .bubble{transform-box:fill-box;transform-origin:center;animation:subjectBubble 2.8s ease-in-out infinite}
.subject-vicon .bubble-b{animation-delay:-1.1s}
.subject-vicon .research-scan{stroke-dasharray:14;stroke-dashoffset:14;animation:subjectScan 3s ease-in-out infinite}
.subject-vicon .research-handle{transform-box:fill-box;transform-origin:left center;animation:subjectHandle 3s ease-in-out infinite}
.subject-vicon .book-line{stroke-dasharray:20;stroke-dashoffset:20;animation:subjectDraw 4.5s ease-in-out infinite}
@keyframes subjectDraw{0%,18%{stroke-dashoffset:32;opacity:.35}46%,78%{stroke-dashoffset:0;opacity:1}100%{stroke-dashoffset:-32;opacity:.35}}
@keyframes subjectDot{0%,100%{transform:scale(.72);opacity:.45}50%{transform:scale(1.24);opacity:1}}
@keyframes subjectSignal{0%,20%{stroke-dashoffset:22;opacity:.35}55%,82%{stroke-dashoffset:0;opacity:1}100%{stroke-dashoffset:-22;opacity:.35}}
@keyframes subjectOrbitA{to{transform:rotate(360deg)}}
@keyframes subjectOrbitB{to{transform:rotate(360deg)}}
@keyframes subjectOrbitC{to{transform:rotate(360deg)}}
@keyframes subjectBubble{0%,100%{transform:translateY(2px) scale(.8);opacity:.3}50%{transform:translateY(-3px) scale(1.15);opacity:1}}
@keyframes subjectScan{0%,18%{stroke-dashoffset:14;opacity:.35}55%,80%{stroke-dashoffset:0;opacity:1}100%{stroke-dashoffset:-14;opacity:.35}}
@keyframes subjectHandle{0%,100%{transform:rotate(0deg)}50%{transform:rotate(7deg)}}

/* Home latest-grade cards use icons instead of letter badges. */
.latest-grade{
  grid-template-columns:44px minmax(0,1fr) auto;
  grid-template-rows:1fr;
  align-items:center;
  gap:10px;
}
.latest-grade-icon{width:44px;height:44px;border-radius:15px;flex:0 0 auto}
.latest-grade-icon svg{width:24px;height:24px}
.latest-grade-copy{min-width:0;display:flex;flex-direction:column;gap:4px;align-self:center}
.latest-grade .grade-course{display:block;font-size:9px;letter-spacing:.11em;line-height:1;color:var(--wine);font-weight:900;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.latest-grade small{display:block;font-size:11.5px;line-height:1.15;color:var(--ink-2);font-weight:760;align-self:auto;white-space:normal}
.latest-grade strong{grid-row:auto;grid-column:auto;align-self:center;justify-self:end;font-size:34px}

.subject-icon.subject-vicon{font-size:0;letter-spacing:0}
.subject-icon.subject-vicon svg{width:25px;height:25px}
.subject-icon.xl.subject-vicon svg{width:36px;height:36px}

/* Responsive adjustments ------------------------------------------------- */
@media(max-width:390px){
  .home-hero-v151{height:344px}
  .home-hero-v151 .hero-toolbar{left:14px;right:14px}
  .home-hero-v151 .hero-mark{max-width:calc(100% - 103px)}
  .home-hero-v151 .hero-mark strong{font-size:15px}
  .home-hero-v151 .hero-mark span{max-width:165px;font-size:8.7px}
  .identity-hero{left:14px;right:14px;bottom:18px;grid-template-columns:minmax(100px,30.5%) minmax(0,1fr);gap:15px}
  .hero-avatar-passport{border-radius:22px}
  .identity-term{font-size:9.8px;margin-bottom:7px}
  .identity-surname{font-size:clamp(35px,9.8vw,44px)}
  .identity-given{font-size:clamp(24px,6.6vw,30px)}
  .identity-class{font-size:12.6px;margin-top:10px;padding:5px 8px}
  .home-metric-layout{gap:8px}
  .home-metric-stack{gap:8px}
  .metric-grade-primary{min-height:184px;padding:14px 13px 12px}
  .metric-grade-primary .metric-value{font-size:clamp(52px,14.8vw,60px);margin:3px 0 7px;min-height:58px}
  .metric-status-chip{font-size:8.2px;padding:4px 6px}
  .home-metric-compact{min-height:88px;padding:10px 9px 8px}
  .metric-compact-head{grid-template-columns:28px minmax(0,1fr);column-gap:6px;row-gap:1px}
  .home-metric-compact .metric-icon{width:28px;height:28px}
  .home-metric-compact .metric-title{font-size:9.8px}
  .home-metric-compact .metric-value{font-size:clamp(21px,5.8vw,26px)}
  .home-metric-compact .metric-caption{font-size:8.8px}
  .subject-snapshot-panel{padding:15px 13px 12px}
  .snapshot-head h2{font-size:19px}
  .snapshot-head small{font-size:9.3px;max-width:190px}
  .snapshot-row{grid-template-columns:34px minmax(0,1fr) auto;gap:9px}
  .snapshot-row-icon{width:34px;height:34px}
  .snapshot-row strong{font-size:11.8px}
  .snapshot-row small{font-size:9.2px}
  .snapshot-footnote{font-size:9px}
}

@media(min-width:700px){
  .home-hero-v151{height:390px}
  .identity-hero{grid-template-columns:132px minmax(0,1fr);max-width:620px}
  .home-metric-layout{grid-template-columns:minmax(0,1.14fr) minmax(0,.86fr)}
}

@media(prefers-reduced-motion:reduce){
  .reactive-icon::after{animation:none!important}
  .snapshot-progress i{transition:none!important}
  .subject-vicon *{animation:none!important;transition:none!important}
}


/* ==========================================================================\n   v1.5.6 — Latest-grade readability + unmistakable profile editing\n   ========================================================================== */

/* Latest posted grades are full-width mobile rows. Long subject names may wrap
   inside the center column; the grade owns a fixed badge at the right and can
   never collide with the copy. */
.latest-grade-grid{
  display:grid;
  grid-template-columns:1fr;
  gap:10px;
}
.latest-grade{
  min-height:82px;
  padding:12px 13px;
  display:grid;
  grid-template-columns:48px minmax(0,1fr) 64px;
  grid-template-rows:1fr;
  align-items:center;
  gap:12px;
  text-align:left;
  overflow:hidden;
}
.latest-grade-icon{
  width:48px;
  height:48px;
  border-radius:16px;
}
.latest-grade-icon svg{width:26px;height:26px}
.latest-grade-copy{
  min-width:0;
  align-self:center;
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:5px;
}
.latest-grade .grade-course{
  display:block;
  max-width:100%;
  font-size:9.5px;
  line-height:1;
  letter-spacing:.11em;
  color:var(--wine);
  font-weight:900;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.latest-grade small{
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
  overflow:hidden;
  font-size:14px;
  line-height:1.18;
  color:var(--ink);
  font-weight:780;
  letter-spacing:-.018em;
}
.latest-grade strong{
  width:64px;
  min-width:64px;
  min-height:54px;
  padding:0 7px;
  border-radius:18px;
  display:grid;
  place-items:center;
  align-self:center;
  justify-self:end;
  font-size:29px;
  line-height:1;
  font-weight:850;
  letter-spacing:-.045em;
  color:#286342;
  background:#e8f3ec;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9);
  font-variant-numeric:tabular-nums;
}

/* Profile editing is intentionally obvious. */
.profile-manage-actions{
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:8px;
}
.profile-manage-actions .secondary{
  min-width:0;
  padding:11px 7px;
  border-radius:15px;
  font-size:10.5px;
  line-height:1.15;
  white-space:normal;
}
.profile-manage-actions .secondary span{min-width:0}
.profile-manage-card{
  width:100%;
  margin-top:10px;
  padding:14px;
  display:grid;
  grid-template-columns:44px minmax(0,1fr) 18px;
  align-items:center;
  gap:12px;
  text-align:left;
  color:var(--ink);
  background:linear-gradient(145deg,#fffdfb,#f9f0ed);
}
.profile-manage-card>.profile-manage-icon{
  width:44px;
  height:44px;
  border-radius:14px;
  display:grid;
  place-items:center;
  background:var(--wine-soft);
  color:var(--wine);
}
.profile-manage-card>.profile-manage-icon svg{width:20px;height:20px}
.profile-manage-card>span:nth-child(2){min-width:0}
.profile-manage-card strong{
  display:block;
  font-size:14px;
  line-height:1.2;
  letter-spacing:-.015em;
}
.profile-manage-card small{
  display:block;
  margin-top:4px;
  font-size:10.5px;
  line-height:1.3;
  color:var(--muted);
}
.profile-manage-card>svg{width:18px;height:18px;color:#9d9193}
.profile-page .section-head>button{
  flex:0 0 auto;
  border:0;
  background:transparent;
  color:var(--wine);
  font-weight:850;
  font-size:12px;
  padding:8px 2px 8px 10px;
}
.profile-edit-card{
  scroll-margin-top:18px;
  border:1px solid rgba(125,23,28,.08);
  box-shadow:0 16px 34px rgba(60,36,40,.08);
}
.profile-form input{
  background:#fff;
  border-color:rgba(91,59,64,.15);
}

@media(max-width:375px){
  .latest-grade{grid-template-columns:44px minmax(0,1fr) 58px;gap:10px;padding:11px}
  .latest-grade-icon{width:44px;height:44px}
  .latest-grade strong{width:58px;min-width:58px;min-height:50px;font-size:27px;border-radius:16px}
  .latest-grade small{font-size:13px}
  .profile-manage-actions{grid-template-columns:1fr 1fr}
  .profile-manage-actions .secondary:last-child{grid-column:1 / -1}
}

/* ==========================================================================
   v1.5.7 — Enlight animated welcome + live Grade 12 Engineering schedule
   ========================================================================== */

/* Animated ENLIGHT desktop identity loading/welcome surface ---------------- */
.loading-screen.enlight-welcome-screen{
  position:relative;
  overflow:hidden;
  min-height:100dvh;
  padding:calc(30px + var(--safe-top)) 24px calc(30px + var(--safe-bottom));
  background:
    radial-gradient(circle at 50% 30%,rgba(31,150,255,.16),transparent 32%),
    radial-gradient(circle at 35% 38%,rgba(255,215,45,.12),transparent 26%),
    linear-gradient(165deg,#151b24 0%,#252c36 48%,#11161e 100%);
  color:#fff;
}
.enlight-welcome-ambient{position:absolute;border-radius:50%;filter:blur(60px);opacity:.34;pointer-events:none}
.enlight-welcome-ambient.ambient-a{width:240px;height:240px;left:-90px;top:24%;background:#ffda24;animation:welcomeAmbient 7s ease-in-out infinite}
.enlight-welcome-ambient.ambient-b{width:280px;height:280px;right:-120px;top:31%;background:#128ae8;animation:welcomeAmbient 8.4s ease-in-out infinite reverse}
.enlight-welcome-card{
  position:relative;
  z-index:2;
  width:min(100%,390px);
  padding:22px 20px 24px;
  border:1px solid rgba(255,255,255,.12);
  background:rgba(15,22,31,.28);
  box-shadow:0 28px 70px rgba(0,0,0,.28),inset 0 1px 0 rgba(255,255,255,.08);
  backdrop-filter:blur(20px) saturate(125%);
  -webkit-backdrop-filter:blur(20px) saturate(125%);
}
.enlight-logo-stage{position:relative;width:min(76vw,280px);aspect-ratio:1;margin:0 auto 8px;display:grid;place-items:center;isolation:isolate}
.enlight-welcome-logo{
  width:100%;height:100%;object-fit:contain;border-radius:0!important;margin:0!important;
  filter:drop-shadow(0 18px 28px rgba(0,0,0,.28));
  animation:enlightLogoFloat 4.6s cubic-bezier(.4,0,.2,1) infinite;
}
.enlight-logo-stage::before{
  content:"";position:absolute;inset:17%;border-radius:50%;z-index:-1;
  background:radial-gradient(circle,rgba(255,220,35,.30) 0%,rgba(36,155,255,.18) 42%,transparent 72%);
  filter:blur(22px);animation:enlightLogoGlow 3.2s ease-in-out infinite;
}
.enlight-logo-sheen{position:absolute;inset:12% 16%;overflow:hidden;pointer-events:none;mix-blend-mode:screen}
.enlight-logo-sheen::after{content:"";position:absolute;top:-30%;bottom:-30%;width:38%;left:-60%;transform:skewX(-18deg);background:linear-gradient(90deg,transparent,rgba(255,255,255,.35),transparent);animation:enlightSheen 4.8s ease-in-out infinite}
.enlight-spark{position:absolute;width:7px;height:7px;z-index:3;opacity:.72;transform:rotate(45deg);background:#ffe34b;box-shadow:0 0 16px rgba(255,224,66,.85);animation:enlightSpark 2.7s ease-in-out infinite}
.enlight-spark.spark-a{left:25%;top:24%}.enlight-spark.spark-b{right:23%;top:31%;animation-delay:-.9s}.enlight-spark.spark-c{right:33%;top:16%;animation-delay:-1.7s}
.enlight-welcome-card>strong{display:block;margin-top:8px;font-size:14px;font-weight:760;letter-spacing:-.01em;color:rgba(255,255,255,.92)}
.enlight-welcome-card>small{display:block;margin-top:5px;font-size:10px;font-weight:620;letter-spacing:.06em;text-transform:uppercase;color:rgba(255,255,255,.48)}
.welcome-progress{width:116px;height:3px;margin:4px auto 15px;border-radius:999px;background:rgba(255,255,255,.10);overflow:hidden}
.welcome-progress i{display:block;width:45%;height:100%;border-radius:inherit;background:linear-gradient(90deg,#ffdc27,#26a7ff);animation:welcomeProgress 1.65s cubic-bezier(.65,0,.35,1) infinite}
@keyframes enlightLogoFloat{0%,100%{transform:translateY(0) scale(.985)}50%{transform:translateY(-7px) scale(1.015)}}
@keyframes enlightLogoGlow{0%,100%{transform:scale(.9);opacity:.55}50%{transform:scale(1.12);opacity:1}}
@keyframes enlightSheen{0%,58%{left:-60%;opacity:0}66%{opacity:1}82%,100%{left:125%;opacity:0}}
@keyframes enlightSpark{0%,100%{transform:rotate(45deg) scale(.5);opacity:.22}50%{transform:rotate(45deg) scale(1.25);opacity:.95}}
@keyframes welcomeProgress{0%{transform:translateX(-125%)}100%{transform:translateX(270%)}}
@keyframes welcomeAmbient{0%,100%{transform:translate3d(0,0,0) scale(.9)}50%{transform:translate3d(22px,-16px,0) scale(1.08)}}

/* Live schedule card in the primary Home slot ----------------------------- */
.live-class-card{justify-content:flex-start;padding:14px 14px 12px;gap:0}
.live-class-top{position:relative;z-index:2;display:grid;grid-template-columns:40px minmax(0,1fr);align-items:center;gap:10px;min-width:0}
.live-class-icon{width:40px;height:40px;display:grid;place-items:center}
.schedule-subject-icon{width:40px;height:40px;border-radius:13px!important;background:rgba(255,255,255,.13)!important;border:1px solid rgba(255,255,255,.14)!important;color:#fff!important;box-shadow:none!important}
.schedule-subject-icon svg{width:23px!important;height:23px!important;stroke-width:1.9}
.live-class-kicker{display:block;margin-bottom:2px;font-size:8.5px;line-height:1;font-weight:900;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.62)}
.live-class-top strong{display:block;min-width:0;font-size:22px;line-height:1.02;font-weight:880;letter-spacing:-.04em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.live-grade-chip{position:absolute;right:0;top:0;padding:5px 7px;border-radius:999px;background:rgba(255,255,255,.11);border:1px solid rgba(255,255,255,.10);font-size:8px;font-weight:850;letter-spacing:.03em;color:rgba(255,255,255,.76)}
.live-class-teacher{position:relative;z-index:2;margin-top:8px;display:flex;align-items:center;gap:6px;font-size:11px;font-weight:760;color:rgba(255,255,255,.88)}
.live-class-teacher svg{width:15px;height:15px;stroke-width:2}
.live-class-meta{position:relative;z-index:2;margin-top:8px;padding:8px 0;border-top:1px solid rgba(255,255,255,.18);border-bottom:1px solid rgba(255,255,255,.18);display:grid;gap:3px}
.live-class-meta span{font-size:9px;line-height:1.18;font-weight:620;color:rgba(255,255,255,.66)}
.live-class-meta b{font-size:11px;line-height:1.1;font-weight:820;color:#fff}
.live-class-next{position:relative;z-index:2;margin-top:auto;padding-top:8px;display:grid;grid-template-columns:15px minmax(0,1fr);gap:6px;align-items:start;font-size:9.5px;line-height:1.22;font-weight:650;color:rgba(255,255,255,.78)}
.live-class-next svg{width:14px;height:14px;stroke-width:2.1;margin-top:-1px}

/* Animated class schedule icon ------------------------------------------- */
.menu-animated-icon{width:21px;height:21px;display:grid;place-items:center;color:var(--wine)}
.menu-animated-icon>svg{width:21px;height:21px;stroke-width:2.15}
.schedule-hand{transform-box:fill-box;transform-origin:0 45%;animation:scheduleHand 2.8s cubic-bezier(.4,0,.2,1) infinite}
@keyframes scheduleHand{0%,100%{transform:rotate(-18deg)}50%{transform:rotate(24deg)}}

/* Class schedule sheet ---------------------------------------------------- */
.schedule-scrim{position:fixed;z-index:66;inset:0;background:rgba(24,17,19,.42);backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}
.schedule-sheet{
  position:fixed;z-index:67;left:12px;right:12px;bottom:calc(8px + var(--safe-bottom));
  max-height:min(82dvh,720px);overflow:auto;padding:18px 16px 20px;border-radius:30px;
  background:rgba(250,247,244,.95);border:1px solid rgba(255,255,255,.88);
  box-shadow:0 28px 68px rgba(44,28,31,.24);backdrop-filter:blur(30px) saturate(150%);-webkit-backdrop-filter:blur(30px) saturate(150%);
}
.schedule-sheet-handle{width:40px;height:5px;border-radius:6px;background:rgba(62,45,49,.14);margin:0 auto 12px}
.schedule-sheet-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.schedule-sheet-head h2{margin:2px 0 4px;font-size:25px;line-height:1.02;letter-spacing:-.04em}
.schedule-sheet-head p{margin:0;max-width:260px;color:var(--muted);font-size:10px;line-height:1.35;font-weight:600}
.schedule-day-banner{margin:15px 0 10px;padding:10px 12px;border-radius:15px;background:linear-gradient(145deg,#7d171c,#5f1015);color:#fff;display:flex;align-items:center;gap:8px;font-size:11px;font-weight:850;letter-spacing:.01em}
.schedule-day-banner svg{width:18px;height:18px;stroke-width:2.1}.schedule-day-banner .schedule-hand{animation:scheduleHand 2.8s ease-in-out infinite}
.schedule-list{display:grid;gap:8px}
.schedule-row{position:relative;display:grid;grid-template-columns:44px 82px minmax(0,1fr) auto;align-items:center;gap:9px;min-height:66px;padding:9px 10px;border-radius:18px;background:rgba(255,255,255,.72);border:1px solid rgba(255,255,255,.88);box-shadow:0 7px 18px rgba(56,37,40,.05)}
.schedule-row.is-now{border-color:rgba(125,23,28,.24);box-shadow:0 10px 24px rgba(125,23,28,.10);background:linear-gradient(145deg,#fff,#fbf2f0)}
.schedule-list-icon{width:44px;height:44px;border-radius:14px}
.schedule-list-icon svg{width:25px;height:25px}
.schedule-time{font-size:9.5px;line-height:1.25;font-weight:800;color:#766a6d;font-variant-numeric:tabular-nums}
.schedule-copy{min-width:0}.schedule-copy strong{display:block;font-size:13.5px;line-height:1.15;letter-spacing:-.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.schedule-copy small{display:block;margin-top:3px;font-size:9.5px;color:var(--muted);font-weight:620}
.schedule-now-chip{padding:5px 7px;border-radius:999px;background:var(--wine);color:#fff;font-size:8px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}
.schedule-break{grid-template-columns:82px minmax(0,1fr) auto;min-height:54px;background:rgba(244,238,233,.78)}
.schedule-break .schedule-time{grid-column:1}.schedule-break .schedule-copy{grid-column:2}.schedule-break .schedule-now-chip{grid-column:3}
.schedule-sheet-note{margin-top:10px;padding:10px 11px;border-radius:14px;background:rgba(125,23,28,.045);display:grid;grid-template-columns:16px minmax(0,1fr);gap:7px;color:var(--muted);font-size:9.5px;line-height:1.35}
.schedule-sheet-note svg{width:15px;height:15px;color:var(--wine);stroke-width:2}

@media(max-width:375px){
  .live-class-top strong{font-size:19px}
  .live-grade-chip{display:none}
  .live-class-meta span{font-size:8.4px}
  .live-class-meta b{font-size:10px}
  .live-class-next{font-size:8.7px}
  .schedule-sheet{left:8px;right:8px;padding-left:13px;padding-right:13px}
  .schedule-row{grid-template-columns:40px 72px minmax(0,1fr) auto;gap:7px;padding:8px}
  .schedule-list-icon{width:40px;height:40px}
  .schedule-time{font-size:8.6px}
  .schedule-copy strong{font-size:12.5px}
  .schedule-break{grid-template-columns:72px minmax(0,1fr) auto}
}

@media(prefers-reduced-motion:reduce){
  .enlight-welcome-logo,.enlight-logo-stage::before,.enlight-logo-sheen::after,.enlight-spark,.enlight-welcome-ambient,.welcome-progress i,.schedule-hand{animation:none!important}
}
.live-class-top>div{min-width:0;padding-right:56px}
@media(max-width:375px){.live-class-top>div{padding-right:0}}

/* ========================================================================== 
   v1.5.8 — Home redesign: authentic assets, neutral hierarchy, subject hub
   ========================================================================== */
:root{
  --color-brand-primary:#74181e;
  --color-brand-deep:#531015;
  --color-background:#f5f2ed;
  --color-surface:#fffefc;
  --color-surface-secondary:#eeeae5;
  --color-text-primary:#171516;
  --color-text-secondary:#615b5d;
  --color-text-tertiary:#918a8c;
  --color-success:#2f6848;
  --color-success-soft:#edf5f0;
  --color-accent-warm:#8d5c2b;
  --color-border:rgba(49,43,44,.10);
  --home-space-1:4px;
  --home-space-2:8px;
  --home-space-3:12px;
  --home-space-4:16px;
  --home-space-5:20px;
  --home-space-6:24px;
  --home-space-7:32px;
  --home-radius-sm:12px;
  --home-radius-md:18px;
  --home-radius-lg:26px;
  --home-radius-hero:30px;
  --home-shadow-sm:0 4px 12px rgba(24,22,22,.05);
  --home-shadow-md:0 10px 30px rgba(24,22,22,.07);
}

.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.app-shell{background:linear-gradient(180deg,#f8f6f2 0%,var(--color-background) 100%)}

/* Authentic campus hero --------------------------------------------------- */
.home-hero-v158{
  position:relative;
  height:350px;
  overflow:visible;
  border-radius:0;
  background:#dedad4;
  box-shadow:none;
  margin-bottom:74px;
}
.home-hero-v158::after{display:none}
.hero-media-clip{
  position:absolute;
  inset:0;
  overflow:hidden;
  border-radius:0 0 var(--home-radius-hero) var(--home-radius-hero);
  box-shadow:var(--home-shadow-md);
}
.home-hero-v158 .hero-photo{object-position:center 44%}
.hero-neutral-overlay{
  position:absolute;
  inset:0;
  background:linear-gradient(180deg,rgba(17,17,17,.24) 0%,rgba(17,17,17,.08) 54%,rgba(247,244,239,.36) 100%);
  pointer-events:none;
}
.home-brand-header{
  position:absolute;
  z-index:4;
  top:calc(var(--safe-top) + 12px);
  left:20px;
  right:20px;
  padding:0;
}
.home-brand-mark{gap:11px;max-width:calc(100% - 116px);color:#fff;text-shadow:0 2px 10px rgba(0,0,0,.20)}
.home-brand-mark img{
  width:58px;
  height:58px;
  flex:0 0 auto;
  object-fit:contain;
  padding:2px;
  border-radius:50%;
  background:rgba(255,255,255,.98);
  box-shadow:0 4px 14px rgba(0,0,0,.11);
}
.home-brand-mark>div{min-width:0}
.home-brand-mark strong{display:block;font-size:clamp(25px,7vw,31px);font-weight:760;line-height:.98;letter-spacing:-.035em}
.home-brand-mark span{display:block;margin-top:4px;max-width:190px;font-size:11px;line-height:1.18;font-weight:650;letter-spacing:.01em;white-space:normal;opacity:.96}
.home-hero-v158 .hero-actions{gap:8px}
.home-hero-v158 .icon-btn{
  width:50px;
  height:50px;
  border-radius:50%;
  background:rgba(255,255,255,.88);
  color:#2e292a;
  border:1px solid rgba(255,255,255,.92);
  box-shadow:var(--home-shadow-sm);
  backdrop-filter:blur(14px) saturate(120%);
  -webkit-backdrop-filter:blur(14px) saturate(120%);
}
.home-hero-v158 .icon-btn svg{width:22px;height:22px;stroke-width:2}
.home-hero-v158 .bell-button i{background:var(--color-brand-primary);color:#fff;border:2px solid #fff;min-width:18px;height:18px;font-size:9px;right:-2px;top:-2px}

/* Student identity -------------------------------------------------------- */
.student-identity-panel{
  position:absolute;
  z-index:5;
  left:20px;
  right:20px;
  bottom:-70px;
  min-height:172px;
  display:grid;
  grid-template-columns:minmax(108px,35%) minmax(0,1fr);
  align-items:center;
  gap:16px;
  padding:14px 16px 14px 14px;
  border-radius:var(--home-radius-lg);
  background:rgba(255,254,252,.97);
  border:1px solid rgba(255,255,255,.96);
  box-shadow:var(--home-shadow-md);
}
.student-photo-wrap{position:relative;align-self:stretch;min-width:0}
.student-identity-panel .hero-avatar-passport{
  width:100%;
  height:100%;
  min-height:144px;
  aspect-ratio:3/4;
  border-radius:22px;
  border:0;
  box-shadow:none;
  background:#e6e1dc;
}
.student-identity-panel .hero-avatar-passport img{width:100%;height:100%;object-fit:cover;object-position:center 33%}
.student-identity-panel .hero-avatar-passport.image-error{background:#e5e1dc}
.student-identity-panel .hero-avatar-passport.image-error::before{background:#bdb7b3;box-shadow:0 58px 0 23px #bdb7b3}
.student-identity-panel .hero-photo-edit{
  right:-6px;
  bottom:-4px;
  width:44px;
  height:44px;
  border-radius:50%;
  background:#fff;
  color:var(--color-brand-primary);
  border:1px solid var(--color-border);
  box-shadow:0 6px 18px rgba(25,23,23,.12);
}
.student-identity-panel .hero-photo-edit svg{width:20px;height:20px}
.student-identity-copy{min-width:0;padding-right:58px}
.student-eyebrow{display:block;margin-bottom:7px;color:var(--color-text-tertiary);font-size:11px;line-height:1;font-weight:720;letter-spacing:.145em;text-transform:uppercase}
.student-identity-copy h1{
  margin:0;
  max-width:100%;
  color:var(--color-text-primary);
  font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","SF Pro Text","Helvetica Neue",Arial,sans-serif;
  font-size:clamp(27px,7.6vw,34px);
  line-height:1.02;
  font-weight:780;
  letter-spacing:-.045em;
  overflow-wrap:anywhere;
}
.student-meta{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:12px;color:var(--color-text-secondary);font-size:12px;line-height:1.2;font-weight:680}
.student-meta i{width:3px;height:3px;border-radius:50%;background:#aaa2a3}
.student-term-badge{position:absolute;right:16px;top:15px;padding:7px 9px;border-radius:10px;background:#eef2ef;color:#52645a;font-size:10px;line-height:1;font-weight:780;letter-spacing:.035em;text-transform:uppercase}

/* Home body and trust status --------------------------------------------- */
.home-v158{padding:0 20px calc(116px + var(--safe-bottom));max-width:760px}
.home-v158>.child-switch{margin-bottom:12px}
.home-sync-status{
  width:100%;
  min-height:58px;
  margin:0 0 20px;
  padding:12px 14px;
  display:grid;
  grid-template-columns:20px minmax(0,1fr) 18px;
  align-items:center;
  gap:10px;
  text-align:left;
  color:var(--color-success);
  background:#edf2ee;
  border:1px solid rgba(47,104,72,.09);
  border-radius:var(--home-radius-md);
  box-shadow:none;
}
.home-sync-status.is-offline{color:#715c30;background:#f3efe5;border-color:rgba(113,92,48,.09)}
.home-sync-status>svg{width:18px;height:18px;stroke-width:2.1}
.home-sync-status>svg:last-child{width:16px;height:16px;justify-self:end;opacity:.58}
.home-sync-status span{min-width:0;font-size:12px;line-height:1.3;font-weight:680}

/* Academic overview ------------------------------------------------------- */
.academic-overview-grid{
  display:grid;
  grid-template-columns:minmax(0,1.22fr) minmax(0,.98fr);
  gap:12px;
  align-items:stretch;
  margin-bottom:24px;
}
.academic-overview-stack{display:grid;grid-template-rows:1fr 1fr;gap:12px;min-width:0}
.overview-card{
  appearance:none;
  -webkit-appearance:none;
  width:100%;
  min-width:0;
  border:1px solid var(--color-border);
  border-radius:var(--home-radius-lg);
  text-align:left;
  color:var(--color-text-primary);
  background:var(--color-surface);
  box-shadow:var(--home-shadow-sm);
  transition:transform .18s ease,box-shadow .18s ease;
}
.overview-card:active{transform:scale(.985);box-shadow:0 2px 8px rgba(24,22,22,.045)}
.overview-grade-card{
  min-height:222px;
  padding:18px 18px 16px;
  display:flex;
  flex-direction:column;
  color:#fff;
  background:linear-gradient(150deg,#751820 0%,#5a1117 100%);
  border-color:rgba(255,255,255,.08);
  box-shadow:0 8px 24px rgba(83,16,21,.15);
  overflow:hidden;
}
.overview-card-head{display:grid;grid-template-columns:36px minmax(0,1fr) auto;align-items:center;gap:9px;min-width:0}
.overview-card-head.compact{grid-template-columns:32px minmax(0,1fr)}
.overview-icon{width:36px;height:36px;border-radius:12px;display:grid;place-items:center;background:rgba(255,255,255,.12);flex:0 0 auto}
.overview-icon svg{width:18px;height:18px;stroke-width:2.15}
.overview-title{min-width:0;font-size:12.5px;line-height:1.1;font-weight:760;letter-spacing:-.012em}
.overview-status{padding:5px 7px;border-radius:999px;background:rgba(255,255,255,.11);border:1px solid rgba(255,255,255,.11);font-size:8.5px;line-height:1;font-weight:820;letter-spacing:.075em}
.overview-grade-value{
  flex:1 1 auto;
  min-height:86px;
  display:grid;
  place-items:center;
  margin:5px 0;
  font-size:clamp(66px,18vw,80px);
  line-height:.9;
  font-weight:780;
  letter-spacing:-.06em;
  font-variant-numeric:tabular-nums;
}
.overview-grade-caption{padding-top:11px;border-top:1px solid rgba(255,255,255,.22);font-size:10.5px;line-height:1.32;font-weight:590;color:rgba(255,255,255,.78);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.overview-attendance-card,.overview-subject-card{min-height:105px;padding:13px 14px;background:var(--color-surface)}
.success-icon{background:var(--color-success-soft);color:var(--color-success)}
.subject-accent-icon{background:#f3eee7;color:var(--color-accent-warm)}
.subject-accent-icon .subject-vicon{width:32px;height:32px;background:transparent!important;border:0!important;box-shadow:none!important;color:inherit!important}
.subject-accent-icon .subject-vicon svg{width:20px;height:20px}
.overview-attendance-value{margin:8px 0 6px;color:var(--color-success);font-size:clamp(29px,8.5vw,36px);line-height:.9;font-weight:780;letter-spacing:-.05em;font-variant-numeric:tabular-nums}
.overview-progress{height:4px;overflow:hidden;border-radius:999px;background:#e9ece9}
.overview-progress i{display:block;height:100%;width:var(--value,0%);border-radius:inherit;background:var(--color-success)}
.overview-microcopy{margin-top:7px;color:var(--color-text-tertiary);font-size:9.3px;line-height:1.22;font-weight:620;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.overview-subject-body{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:7px;margin-top:8px}
.overview-subject-body>div{min-width:0}
.overview-subject-body strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px;line-height:1.1;font-weight:760}
.overview-subject-body small{display:block;margin-top:4px;color:var(--color-text-tertiary);font-size:9.3px;line-height:1.18;font-weight:600;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.overview-subject-body>b{align-self:center;color:var(--color-brand-primary);font-size:clamp(29px,8vw,35px);line-height:.9;font-weight:780;letter-spacing:-.045em;font-variant-numeric:tabular-nums}

/* Live schedule uses the same primary slot -------------------------------- */
.overview-live-card{cursor:pointer}
.overview-live-card .overview-subject-icon{background:rgba(255,255,255,.12)}
.overview-live-card .overview-subject-icon .subject-vicon{width:36px;height:36px;background:transparent!important;border:0!important;box-shadow:none!important;color:#fff!important}
.overview-live-card .overview-subject-icon .subject-vicon svg{width:21px;height:21px}
.overview-live-subject{margin-top:15px;font-size:clamp(25px,7.2vw,32px);line-height:.95;font-weight:800;letter-spacing:-.045em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.overview-live-teacher{display:flex;align-items:center;gap:7px;margin-top:8px;color:rgba(255,255,255,.88);font-size:11px;font-weight:680}
.overview-live-teacher svg{width:15px;height:15px}
.overview-live-meta{margin-top:10px;padding:9px 0;border-top:1px solid rgba(255,255,255,.19);border-bottom:1px solid rgba(255,255,255,.19);display:grid;gap:4px}
.overview-live-meta span{font-size:9.2px;line-height:1.2;color:rgba(255,255,255,.68);font-weight:590}
.overview-live-meta b{font-size:10.5px;line-height:1.15;color:#fff;font-weight:740}
.overview-live-next{display:grid;grid-template-columns:15px minmax(0,1fr);gap:7px;align-items:start;margin-top:auto;padding-top:9px;color:rgba(255,255,255,.75);font-size:9.2px;line-height:1.25;font-weight:600}
.overview-live-next svg{width:14px;height:14px}

/* Current subject hub ----------------------------------------------------- */
.subject-hub{
  margin-top:0;
  padding:20px 18px 6px;
  border-radius:var(--home-radius-lg);
  background:var(--color-surface);
  border:1px solid var(--color-border);
  box-shadow:var(--home-shadow-sm);
  touch-action:pan-y;
}
.subject-hub-header{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:12px;padding-bottom:15px}
.subject-hub-eyebrow{display:block;margin-bottom:5px;color:var(--color-text-tertiary);font-size:10px;line-height:1;font-weight:760;letter-spacing:.14em;text-transform:uppercase}
.subject-hub h2{margin:0;color:var(--color-text-primary);font-size:clamp(23px,6.5vw,28px);line-height:1.03;font-weight:780;letter-spacing:-.04em}
.subject-selector{position:relative;display:flex;align-items:center;min-width:108px;max-width:138px;height:42px;border-radius:13px;background:var(--color-surface-secondary);border:1px solid rgba(49,43,44,.05);overflow:hidden}
.subject-selector select{appearance:none;-webkit-appearance:none;width:100%;height:100%;padding:0 29px 0 11px;border:0;outline:0;background:transparent;color:var(--color-text-primary);font-size:11px;font-weight:700;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}
.subject-selector-chevron{position:absolute;right:10px;top:50%;transform:translateY(-55%);pointer-events:none;color:var(--color-text-tertiary);font-size:15px}
.subject-hub-status{min-height:42px;margin-bottom:4px;padding:10px 11px;display:grid;grid-template-columns:17px minmax(0,1fr);align-items:center;gap:8px;border-radius:13px;background:#f2f0ed;color:var(--color-text-secondary);font-size:10.5px;line-height:1.28;font-weight:620}
.subject-hub-status svg{width:16px;height:16px;color:var(--color-brand-primary)}
.subject-hub-status.empty-state{color:var(--color-text-secondary)}
.subject-hub-rows{border-top:1px solid var(--color-border)}
.subject-hub-row{
  width:100%;
  min-height:78px;
  padding:12px 0;
  display:grid;
  grid-template-columns:42px minmax(0,1fr) auto 16px;
  align-items:center;
  gap:11px;
  text-align:left;
  color:var(--color-text-primary);
  background:transparent;
  border-bottom:1px solid var(--color-border);
}
.subject-hub-row:last-child{border-bottom:0}
.subject-hub-row-icon{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;background:#f2efec;color:var(--color-brand-primary)}
.subject-hub-row-icon svg{width:20px;height:20px;stroke-width:2.1}
.subject-hub-row-copy{min-width:0}
.subject-hub-row-copy strong{display:block;font-size:13.5px;line-height:1.12;font-weight:740;letter-spacing:-.012em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.subject-hub-row-copy small{display:block;margin-top:4px;color:var(--color-text-tertiary);font-size:10px;line-height:1.15;font-weight:580}
.subject-hub-progress{display:block;height:4px;margin-top:7px;overflow:hidden;border-radius:999px;background:#eeece9}
.subject-hub-progress i{display:block;width:var(--value,0%);height:100%;border-radius:inherit;background:var(--color-brand-primary)}
.subject-hub-row-value{text-align:right;min-width:48px}
.subject-hub-row-value b{display:block;color:var(--color-brand-primary);font-size:14px;line-height:1;font-weight:780;font-variant-numeric:tabular-nums}
.subject-hub-row-value small{display:block;margin-top:4px;color:var(--color-text-tertiary);font-size:8.8px;line-height:1.05;font-weight:590;white-space:nowrap}
.subject-hub-row-chevron{color:#aaa3a4;display:grid;place-items:center}
.subject-hub-row-chevron svg{width:16px;height:16px}

/* Bottom navigation: one strong selected state, no pill clutter ----------- */
.bottom-nav{
  left:14px;
  right:14px;
  bottom:calc(10px + var(--safe-bottom));
  height:76px;
  padding:6px;
  border-radius:25px;
  background:rgba(255,254,252,.93);
  border:1px solid rgba(255,255,255,.96);
  box-shadow:0 -4px 20px rgba(20,20,20,.06);
  backdrop-filter:blur(22px) saturate(130%);
  -webkit-backdrop-filter:blur(22px) saturate(130%);
}
.nav-btn{border-radius:17px;background:transparent;color:#777174;transition:background .18s ease,color .18s ease,transform .18s ease}
.nav-btn.active{background:var(--color-brand-primary);color:#fff;box-shadow:none}
.nav-btn:active{transform:scale(.985)}
.nav-btn svg{stroke-width:1.9}

/* Entry motion ------------------------------------------------------------ */
.home-v158>*{animation:homeV158Enter .22s ease both}
.home-v158>*:nth-child(2){animation-delay:.025s}.home-v158>*:nth-child(3){animation-delay:.05s}.home-v158>*:nth-child(4){animation-delay:.075s}
@keyframes homeV158Enter{from{opacity:.001;transform:translateY(5px)}to{opacity:1;transform:none}}

@media(max-width:375px){
  .home-hero-v158{height:336px;margin-bottom:70px}
  .home-brand-header{left:16px;right:16px}
  .home-brand-mark{max-width:calc(100% - 108px);gap:8px}
  .home-brand-mark img{width:52px;height:52px}
  .home-brand-mark strong{font-size:23px}.home-brand-mark span{max-width:142px;font-size:9.5px}
  .home-hero-v158 .icon-btn{width:46px;height:46px}
  .student-identity-panel{left:16px;right:16px;bottom:-68px;grid-template-columns:minmax(104px,35%) minmax(0,1fr);gap:13px;padding:12px 14px 12px 12px}
  .student-identity-copy{padding-right:48px}.student-identity-copy h1{font-size:26px}.student-term-badge{right:13px;top:13px;font-size:9px}
  .home-v158{padding-left:16px;padding-right:16px}
  .academic-overview-grid{gap:10px;grid-template-columns:minmax(0,1.18fr) minmax(0,.96fr)}.academic-overview-stack{gap:10px}
  .overview-grade-card{min-height:210px;padding:15px 14px 13px}.overview-grade-value{font-size:62px}.overview-title{font-size:11.5px}.overview-status{font-size:7.8px}
  .overview-attendance-card,.overview-subject-card{min-height:100px;padding:11px 12px}.overview-attendance-value{font-size:28px}.overview-microcopy{font-size:8.5px}.overview-subject-body strong{font-size:12px}.overview-subject-body small{font-size:8.7px}.overview-subject-body>b{font-size:28px}
  .subject-hub{padding:17px 14px 5px}.subject-hub-header{gap:9px}.subject-hub h2{font-size:22px}.subject-selector{min-width:102px;max-width:118px}.subject-hub-row{grid-template-columns:38px minmax(0,1fr) auto 14px;gap:9px}.subject-hub-row-icon{width:38px;height:38px}.subject-hub-row-copy strong{font-size:12.8px}
}

@media(min-width:700px){
  .home-hero-v158{height:390px;margin-bottom:82px;border-radius:0}
  .student-identity-panel{max-width:680px;left:50%;right:auto;width:calc(100% - 52px);transform:translateX(-50%);grid-template-columns:138px minmax(0,1fr)}
  .home-brand-header{left:50%;right:auto;width:min(calc(100% - 52px),680px);transform:translateX(-50%)}
  .home-v158{padding-left:26px;padding-right:26px}.academic-overview-grid{grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr)}
}

@media(prefers-reduced-motion:reduce){
  .home-v158>*,.overview-card,.nav-btn{animation:none!important;transition:none!important}
}

/* v1.5.8 navigation proportion correction */
.bottom-nav{display:flex;grid-template-columns:none}
.nav-btn{flex:1 1 0;min-width:0;transition:flex .18s ease,background .18s ease,color .18s ease,transform .18s ease}
.nav-btn.active{flex:1.55 1 0}

/* ========================================================================
   v1.6.0 — Multi-account, Plus Points, scheduler, welcome refinements
   ======================================================================== */

/* White Engineering-logo welcome ---------------------------------------- */
.engineering-welcome-screen{
  position:fixed;inset:0;z-index:9999;display:grid;place-items:center;
  background:#fff;color:#161313;overflow:hidden;
}
.engineering-welcome-logo{
  width:clamp(128px,35vw,184px);height:auto;object-fit:contain;
  animation:engineeringWelcome 1.45s cubic-bezier(.22,.72,.2,1) both;
  transform-origin:center;
}
@keyframes engineeringWelcome{
  0%{opacity:0;transform:scale(.86)}
  24%{opacity:1;transform:scale(.96)}
  68%{opacity:1;transform:scale(1.035)}
  100%{opacity:0;transform:scale(1.075)}
}

/* Slightly frosted authentic campus image — no recoloring ---------------- */
.home-hero-v158 .hero-photo{
  filter:blur(1.35px) brightness(1.02) saturate(.94);
  transform:scale(1.012);
}
.home-hero-v158 .hero-neutral-overlay{
  position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(247,245,241,.10) 0%,rgba(245,242,237,.16) 42%,rgba(245,242,237,.35) 100%);
  pointer-events:none;
}

/* Prevent status label collisions on the grade card ---------------------- */
.overview-grade-card .overview-card-head{
  grid-template-columns:36px minmax(0,1fr) max-content;
  min-height:38px;
}
.overview-grade-card .overview-title{overflow-wrap:normal;word-break:normal}
.overview-grade-card .overview-status{
  justify-self:end;white-space:nowrap;max-width:100%;
  font-size:8px;letter-spacing:.06em;padding:5px 6px;
}

/* Plus Points overview --------------------------------------------------- */
.overview-plus-card{
  min-height:105px;padding:12px 13px 11px;background:#fffdfa;
  border-color:rgba(111,23,32,.10);overflow:hidden;
}
.plus-icon{background:#f5eceb;color:var(--color-brand-primary)}
.plus-icon svg{stroke-width:2.2}
.plus-overview-total{display:flex;align-items:flex-end;gap:7px;margin-top:5px}
.plus-overview-total b{
  color:var(--color-brand-primary);font-size:clamp(27px,7vw,34px);line-height:.9;
  font-weight:800;letter-spacing:-.055em;font-variant-numeric:tabular-nums;
}
.plus-overview-total span{padding-bottom:2px;color:var(--color-text-tertiary);font-size:8.7px;font-weight:650;white-space:nowrap}
.plus-mini-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin-top:7px}
.plus-mini-grid>span{min-width:0;padding:5px 4px;border-radius:9px;background:#f6f2ef;text-align:center}
.plus-mini-grid b{display:block;color:var(--color-text-primary);font-size:10.5px;line-height:1;font-weight:800;font-variant-numeric:tabular-nums}
.plus-mini-grid small{display:block;margin-top:3px;color:var(--color-text-tertiary);font-size:7.7px;line-height:1;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.plus-threshold-copy{display:grid;gap:2px;margin-top:6px;color:#786b6d;font-size:7.8px;line-height:1.15;font-weight:650}
.plus-threshold-copy span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* Student Plus Points detail --------------------------------------------- */
.plus-points-detail{margin-top:20px;padding:18px;border-radius:26px;background:#fff;border:1px solid var(--color-border);box-shadow:var(--home-shadow-sm)}
.plus-points-detail>header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding-bottom:14px;border-bottom:1px solid var(--color-border)}
.plus-points-detail>header h2{margin:3px 0 0;font-size:23px;line-height:1.05;letter-spacing:-.035em}
.plus-points-detail>header>strong{flex:0 0 auto;padding:7px 9px;border-radius:10px;background:#f4efec;color:var(--color-brand-primary);font-size:10px;font-weight:800}
.plus-shop-link{width:100%;display:grid;grid-template-columns:42px minmax(0,1fr) 18px;align-items:center;gap:11px;margin-top:13px;padding:11px 12px;border:1px solid rgba(111,23,32,.10);border-radius:17px;background:linear-gradient(135deg,#fbf5f2,#f5efec);color:var(--color-text-primary);text-align:left;box-shadow:0 7px 18px rgba(68,35,38,.045);transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}
.plus-shop-link:active{transform:scale(.988);box-shadow:0 3px 10px rgba(68,35,38,.04)}
.plus-shop-link:disabled{opacity:.62}
.plus-shop-link-icon{width:42px;height:42px;display:grid;place-items:center;border-radius:13px;background:var(--color-brand-primary);color:#fff;box-shadow:0 7px 14px rgba(111,23,32,.18)}
.plus-shop-link-icon svg{width:20px;height:20px;stroke-width:1.9}
.plus-shop-link-copy{min-width:0}
.plus-shop-link-copy strong{display:block;color:var(--color-brand-primary);font-size:12px;line-height:1.15;font-weight:820}
.plus-shop-link-copy small{display:block;margin-top:4px;color:var(--color-text-tertiary);font-size:9px;line-height:1.32;font-weight:620}
.plus-shop-link-arrow{display:grid;place-items:center;color:#aaa0a0}
.plus-shop-link-arrow svg{width:16px;height:16px;stroke-width:2}
.plus-subject-list{display:grid;gap:13px;padding-top:14px}
.plus-subject-card{padding:14px;border-radius:19px;background:#faf8f5;border:1px solid #eee8e3}
.plus-subject-head{display:grid;grid-template-columns:42px minmax(0,1fr);gap:10px;align-items:center}
.plus-subject-head .subject-icon{width:42px;height:42px;border-radius:13px}
.plus-subject-head strong{display:block;font-size:14px;line-height:1.15}
.plus-subject-head small{display:block;margin-top:3px;color:var(--color-text-tertiary);font-size:9.5px;font-weight:620}
.plus-milestones{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}
.plus-milestones>span{padding:10px;border-radius:13px;background:#f1ede9;text-align:center}
.plus-milestones>span.unlocked{background:#eaf3ed;color:var(--color-success)}
.plus-milestones b{display:block;font-size:17px;line-height:1;font-weight:820;font-variant-numeric:tabular-nums}
.plus-milestones small{display:block;margin-top:4px;color:inherit;opacity:.72;font-size:8.7px;font-weight:650}
.plus-stage-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px;padding:9px 0;border-top:1px solid #ece6e2;border-bottom:1px solid #ece6e2}
.plus-stage-row span{min-width:0}.plus-stage-row small{display:block;color:var(--color-text-tertiary);font-size:8.5px;font-weight:650}.plus-stage-row strong{display:block;margin-top:2px;font-size:11.5px;line-height:1.2}
.plus-targets{display:grid;margin-top:4px}.plus-target-row{width:100%;display:grid;grid-template-columns:minmax(0,1fr) 16px;align-items:center;gap:8px;padding:11px 0;text-align:left;background:transparent;color:var(--color-text-primary);border-bottom:1px solid #ece7e3}.plus-target-row:last-child{border-bottom:0}.plus-target-row strong{display:block;font-size:11.5px}.plus-target-row small{display:block;margin-top:3px;color:var(--color-text-tertiary);font-size:9px}.plus-target-row svg{width:15px;height:15px;color:#aaa2a3}
.plus-stage-empty{margin:10px 0 0;color:var(--color-text-tertiary);font-size:9.5px;line-height:1.35}
.plus-irrev-note{margin:14px 0 0;padding-top:12px;border-top:1px solid var(--color-border);color:var(--color-text-tertiary);font-size:9px;line-height:1.4}

/* Saved account switcher -------------------------------------------------- */
.saved-account-panel{margin:12px 0 18px;padding:13px;border-radius:19px;background:#f7f3ef;border:1px solid #ece4df}
.saved-account-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px}.saved-account-head span{display:block;color:var(--muted);font-size:8.5px;font-weight:720;text-transform:uppercase;letter-spacing:.08em}.saved-account-head strong{display:block;margin-top:2px;font-size:11.5px}
.saved-account-list{display:grid;gap:7px}.saved-account-row{display:grid;grid-template-columns:minmax(0,1fr) 34px;align-items:center;border-radius:14px;background:#fff;border:1px solid #eee7e2;overflow:hidden}.saved-account-row.current{border-color:rgba(111,23,32,.19)}
.saved-account-switch{min-width:0;display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:9px;padding:8px 7px 8px 9px;text-align:left;background:transparent;color:var(--ink)}.saved-account-avatar{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:#efe6e4;color:var(--wine);font-size:11px;font-weight:850}.saved-account-switch strong{display:block;font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.saved-account-switch small{display:block;margin-top:2px;color:var(--muted);font-size:8.3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.saved-account-switch em{font-style:normal;color:var(--wine);font-size:7.5px;font-weight:800;text-transform:uppercase}.saved-account-switch>svg{width:14px;height:14px;color:#aaa}
.saved-account-remove{width:34px;height:100%;min-height:48px;background:transparent;color:#9b9192;font-size:18px}.saved-account-note{margin:9px 2px 0;color:var(--muted);font-size:8.5px;line-height:1.35}.add-account-cancel{margin:-3px 0 10px}

/* Activities scheduler ---------------------------------------------------- */
.schedule-activity-card,.official-schedule-card,.student-scheduler{margin-bottom:18px;padding:16px;border-radius:24px}
.official-schedule-list{display:grid;gap:7px}.official-schedule-row{display:grid;grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px;border-radius:15px;background:#faf8f5;border:1px solid #eee9e4}.official-schedule-row.is-now{background:#f5eceb;border-color:rgba(111,23,32,.16)}.official-schedule-row>div{min-width:0}.official-schedule-row strong{display:block;font-size:12px}.official-schedule-row small{display:block;margin-top:3px;color:var(--muted);font-size:9px}.official-schedule-row>b{padding:5px 7px;border-radius:999px;background:var(--wine);color:#fff;font-size:7.5px;text-transform:uppercase}.schedule-break-icon{width:40px;height:40px;border-radius:12px;background:#f0ece8;color:#82787a;display:grid;place-items:center}.schedule-break-icon svg{width:18px;height:18px}
.student-schedule-form{display:grid;gap:10px;padding:12px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-bottom:10px}.student-schedule-form label{display:grid;gap:5px;color:var(--muted);font-size:9px;font-weight:700}.student-schedule-form input,.student-schedule-form select,.student-schedule-form textarea{width:100%;min-height:42px;padding:10px 11px;border:1px solid #e6ded9;border-radius:12px;background:#fff;color:var(--ink);font:inherit;font-size:12px;outline:none}.student-schedule-form textarea{resize:vertical}.schedule-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.scheduler-actions{display:flex;justify-content:flex-end;align-items:center;gap:9px}.personal-event-list{display:grid}.personal-event-row{display:grid;grid-template-columns:72px minmax(0,1fr) auto;align-items:center;gap:10px;padding:11px 0;border-bottom:1px solid var(--line)}.personal-event-row:last-child{border-bottom:0}.personal-event-row>div:nth-child(2){min-width:0}.personal-event-row>div:nth-child(2)>strong{display:block;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.personal-event-row>div:nth-child(2)>small{display:block;margin-top:3px;color:var(--muted);font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.event-actions{display:flex;gap:5px}.event-actions button{width:34px;height:34px;border-radius:10px;background:#f5f1ee;color:var(--wine)}.event-actions svg{width:15px;height:15px}

/* Admin Plus Points ------------------------------------------------------- */
.admin-v160{min-height:100vh;background:var(--bg)}.admin-v160 .admin-page{padding-bottom:50px}.admin-head-actions{display:flex;gap:8px}.admin-plus-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.admin-plus-hero h1{margin:4px 0 5px;font-size:31px;letter-spacing:-.045em}.admin-plus-hero p{margin:0;color:var(--muted);font-size:11px}.admin-plus-summary{min-width:78px;padding:12px;border-radius:16px;background:#f3ece9;text-align:center}.admin-plus-summary strong{display:block;color:var(--wine);font-size:26px;line-height:1}.admin-plus-summary span{display:block;margin-top:4px;color:var(--muted);font-size:8px}.admin-award-card{margin-top:14px;padding:16px}.admin-live-value{color:var(--wine);font-size:20px;font-weight:850}.admin-point-presets{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;margin:10px 0}.admin-point-presets button{min-height:38px;border-radius:11px;background:#f4efec;color:#6f6365;font-size:10px;font-weight:800}.admin-point-presets button.active{background:var(--wine);color:#fff}.admin-field{display:grid;gap:5px;margin-top:10px;color:var(--muted);font-size:9px;font-weight:700}.admin-field em{font-style:normal;font-weight:500}.admin-field select,.admin-field input{min-height:42px;padding:9px 10px;border:1px solid #e7dfda;border-radius:12px;background:#fff;font:inherit;color:var(--ink)}.admin-award-context{margin-top:11px;padding:10px;border-radius:12px;background:#faf6f3;color:var(--muted);font-size:9px;line-height:1.4}.admin-roster-list{display:grid;margin-top:9px}.admin-roster-row{display:grid;grid-template-columns:minmax(0,1fr) 52px;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}.admin-roster-row:last-child{border-bottom:0}.admin-roster-name strong{display:block;font-size:11.5px}.admin-roster-name small{display:block;margin-top:3px;color:var(--muted);font-size:8.5px}.admin-award-one{width:50px;height:38px;border-radius:11px;background:var(--wine);color:#fff;font-size:11px;font-weight:850}.admin-award-history{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;padding:12px}.admin-award-history+ .admin-award-history{border-top:1px solid var(--line)}.admin-award-history strong{display:block;font-size:11px}.admin-award-history small,.admin-award-history span{display:block;margin-top:3px;color:var(--muted);font-size:8.5px}.admin-account-sheet{position:fixed;inset:0;z-index:120;background:rgba(24,17,19,.34);display:grid;align-items:end}.admin-account-sheet.hidden{display:none}.admin-account-sheet-card{padding:16px 16px calc(18px + var(--safe-bottom));background:#fff;border-radius:24px 24px 0 0}.account-sheet-row{width:100%;display:grid;grid-template-columns:40px minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px;text-align:left;background:transparent;color:var(--ink);border-bottom:1px solid var(--line)}.account-sheet-row strong{display:block;font-size:12px}.account-sheet-row small{display:block;margin-top:2px;color:var(--muted);font-size:9px}.account-sheet-row em{font-style:normal;color:var(--wine);font-size:8px;font-weight:800}.account-add-btn{margin-top:12px;width:100%}

@media(max-width:375px){
  .plus-mini-grid{gap:3px}.plus-mini-grid>span{padding:5px 2px}.plus-threshold-copy{font-size:7px}
  .overview-plus-card{padding-left:10px;padding-right:10px}
  .admin-point-presets{grid-template-columns:repeat(3,1fr)}
  .schedule-form-grid{grid-template-columns:1fr}
}
@media(prefers-reduced-motion:reduce){.engineering-welcome-logo{animation:none!important;opacity:1!important;transform:none!important}}

/* v1.6.0 Admin Plus Point summary */
.admin-ledger-summary{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px;
  margin:14px 0 4px;
}
.admin-summary-tile{
  min-width:0;
  min-height:112px;
  padding:15px;
  border:1px solid rgba(111,23,32,.08);
  border-radius:18px;
  background:rgba(255,255,255,.92);
  box-shadow:0 6px 18px rgba(38,25,24,.045);
  display:flex;
  flex-direction:column;
  justify-content:space-between;
}
.admin-summary-tile.is-total{
  grid-column:1 / -1;
  min-height:118px;
  background:linear-gradient(135deg,#741b25,#59131b);
  border-color:transparent;
  color:#fff;
}
.admin-summary-tile small{
  color:var(--muted);
  font-size:11px;
  font-weight:750;
  letter-spacing:.015em;
}
.admin-summary-tile strong{
  display:block;
  margin:7px 0 6px;
  color:var(--wine);
  font-size:30px;
  line-height:1;
  letter-spacing:-.045em;
  font-variant-numeric:tabular-nums;
}
.admin-summary-tile span{
  color:var(--muted);
  font-size:10px;
  line-height:1.35;
}
.admin-summary-tile.is-total small,
.admin-summary-tile.is-total span{color:rgba(255,255,255,.74)}
.admin-summary-tile.is-total strong{color:#fff;font-size:38px}
.admin-summary-tile.milestone{background:#f8f5f0}
@media (min-width:700px){
  .admin-ledger-summary{grid-template-columns:repeat(4,minmax(0,1fr))}
  .admin-summary-tile.is-total{grid-column:span 2}
}

/* ========================================================================
   v1.6.1 — Approved Home + Activities visual implementation
   Mirrors the approved mockups while retaining live EnlightN data.
   ======================================================================== */

/* Splash: white, centered Engineering seal, opacity only. ---------------- */
.engineering-welcome-screen{
  background:#fff;
}
.engineering-welcome-mark{
  width:min(76vw,330px);
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:24px;
  animation:engineeringWelcomeFade 1.55s ease-in-out both;
}
.engineering-welcome-logo{
  width:100%;
  max-width:330px;
  height:auto;
  animation:none!important;
  transform:none!important;
  filter:none;
}
.engineering-welcome-wordmark{
  display:flex;
  align-items:baseline;
  justify-content:center;
  color:#1b1a1a;
  font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","SF Pro Text","Helvetica Neue",Arial,sans-serif;
  font-size:clamp(30px,9vw,42px);
  line-height:1;
  font-weight:390;
  letter-spacing:-.045em;
}
.engineering-welcome-wordmark b{color:#a7181f;font-weight:560}
@keyframes engineeringWelcomeFade{
  0%{opacity:0}
  24%{opacity:1}
  72%{opacity:1}
  100%{opacity:0}
}

/* Campus: stronger frosted-glass softening, authentic image unchanged. ---- */
.home-hero-v158 .hero-photo{
  filter:blur(5.25px) brightness(1.055) saturate(.88);
  transform:scale(1.055);
}
.home-hero-v158 .hero-neutral-overlay{
  background:
    linear-gradient(180deg,rgba(251,249,246,.17) 0%,rgba(249,247,243,.23) 44%,rgba(247,244,239,.43) 100%);
}

/* Tentative/Final grade: status is deliberately isolated from the label. -- */
.overview-grade-card{padding:18px 18px 16px}
.overview-grade-head{
  display:grid;
  grid-template-columns:44px minmax(0,1fr);
  align-items:start;
  gap:10px;
  min-height:66px;
}
.overview-grade-head .overview-icon{
  width:44px;
  height:44px;
  border-radius:14px;
}
.overview-grade-head .overview-icon svg{width:21px;height:21px}
.overview-grade-head-copy{
  min-width:0;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:7px;
  padding-top:1px;
}
.overview-grade-head-copy .overview-title{
  display:block;
  max-width:100%;
  color:#fff;
  font-size:13px;
  line-height:1.08;
  font-weight:790;
  letter-spacing:-.016em;
  white-space:normal;
}
.overview-grade-head-copy .overview-status{
  display:inline-flex;
  align-items:center;
  min-height:24px;
  padding:5px 10px;
  margin:0;
  border:1px solid rgba(255,255,255,.18);
  border-radius:999px;
  background:rgba(255,255,255,.09);
  color:rgba(255,255,255,.96);
  font-size:8.2px;
  line-height:1;
  font-weight:840;
  letter-spacing:.08em;
  white-space:nowrap;
}
.overview-grade-value{
  min-height:102px;
  margin:8px 0 12px;
  font-size:clamp(72px,20vw,92px);
  font-weight:790;
}
.overview-grade-caption{font-size:10.8px;line-height:1.35}

/* The approved right-side overview cards. ------------------------------- */
.overview-attendance-card,.overview-plus-card{
  border-radius:26px;
  box-shadow:0 8px 24px rgba(43,32,31,.055);
}
.overview-attendance-card{padding:15px 14px 14px}
.overview-attendance-card .overview-card-head.compact{grid-template-columns:44px minmax(0,1fr);gap:10px}
.overview-attendance-card .overview-icon{width:44px;height:44px;border-radius:14px}
.overview-attendance-card .overview-title{font-size:13px;font-weight:790}
.overview-attendance-value{font-size:clamp(35px,10vw,45px);margin:10px 0 8px}
.overview-progress{height:5px}
.overview-microcopy{font-size:9.4px;margin-top:8px}
.overview-plus-card{padding:14px 14px 12px}
.overview-plus-card .overview-card-head.compact{grid-template-columns:42px minmax(0,1fr);gap:10px}
.overview-plus-card .overview-icon{width:42px;height:42px;border-radius:14px}
.overview-plus-card .overview-title{font-size:13px;font-weight:790}
.plus-overview-total{margin-top:7px;gap:8px}
.plus-overview-total b{font-size:clamp(31px,8.6vw,39px)}
.plus-overview-total span{font-size:9px}
.plus-mini-grid{gap:6px;margin-top:8px}
.plus-mini-grid>span{padding:7px 3px;border-radius:11px;background:#f5f1ee}
.plus-mini-grid b{font-size:12px}.plus-mini-grid small{font-size:8px}
.plus-threshold-copy{font-size:8.1px;line-height:1.25;margin-top:8px;gap:3px}

/* Subject hub spacing matching the approved composition. ---------------- */
.subject-hub{margin-top:0;padding:22px 18px 8px;border-radius:28px}
.subject-hub-header{padding-bottom:16px}
.subject-hub-eyebrow{font-size:10.5px;letter-spacing:.15em}
.subject-hub h2{font-size:clamp(26px,7vw,31px);line-height:.98}
.subject-selector{height:48px;min-width:116px;max-width:150px;border-radius:15px}
.subject-selector select{font-size:12px;padding-left:13px}

/* Activities page -------------------------------------------------------- */
.activities-page-head{
  padding:calc(var(--safe-top) + 22px) 22px 14px;
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:16px;
  background:linear-gradient(180deg,#faf8f4 0%,rgba(250,248,244,.96) 76%,rgba(250,248,244,0) 100%);
}
.activities-page-head h1{
  margin:0;
  color:var(--color-text-primary);
  font-size:clamp(36px,10vw,43px);
  line-height:.98;
  font-weight:820;
  letter-spacing:-.055em;
}
.activities-page-head p{
  margin:7px 0 0;
  color:var(--color-text-secondary);
  font-size:14px;
  line-height:1.25;
  font-weight:520;
}
.activities-add-button{
  flex:0 0 auto;
  width:50px;
  height:50px;
  display:grid;
  place-items:center;
  border-radius:50%;
  background:linear-gradient(145deg,#8a2027,#6c151a);
  color:#fff;
  font-size:30px;
  line-height:1;
  font-weight:310;
  box-shadow:0 8px 22px rgba(112,22,27,.16);
}
.activities-page{
  padding:8px 20px calc(116px + var(--safe-bottom));
  max-width:760px;
}
.activities-page>.child-switch{margin-bottom:12px}

.activity-overview-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px;
  margin:3px 0 28px;
}
.activity-overview-tile{
  min-width:0;
  min-height:102px;
  padding:14px;
  display:grid;
  grid-template-columns:46px minmax(0,1fr) auto 15px;
  align-items:center;
  gap:9px;
  border:1px solid rgba(255,255,255,.65);
  border-radius:22px;
  text-align:left;
  color:#171515;
  box-shadow:0 5px 18px rgba(38,31,30,.035);
}
.activity-overview-tile.today{background:linear-gradient(145deg,#f9ecea,#f4dfdd);--tile-accent:#8b1c24}
.activity-overview-tile.upcoming{background:linear-gradient(145deg,#edf5fc,#dfedf9);--tile-accent:#245f94}
.activity-overview-tile.classes{background:linear-gradient(145deg,#edf6ef,#e0efe4);--tile-accent:#2c754c}
.activity-overview-tile.personal{background:linear-gradient(145deg,#fbf2e3,#f5e4c8);--tile-accent:#9a611b}
.activity-overview-icon{
  width:46px;height:46px;border-radius:14px;display:grid;place-items:center;
  background:rgba(255,255,255,.50);color:var(--tile-accent);
}
.activity-overview-icon svg{width:24px;height:24px;stroke-width:2}
.activity-overview-copy{min-width:0}
.activity-overview-copy strong{display:block;font-size:14px;line-height:1.08;font-weight:780;letter-spacing:-.02em}
.activity-overview-copy small{display:block;margin-top:4px;color:#787173;font-size:10px;font-weight:570;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.activity-overview-tile>b{color:var(--tile-accent);font-size:27px;line-height:1;font-weight:760;font-variant-numeric:tabular-nums}
.activity-overview-tile>svg{width:15px;height:15px;color:#756e70}

.activity-schedule-section,.activity-personal-section,.recorded-work-section{margin-top:0}
.activity-personal-section,.recorded-work-section{margin-top:28px}
.activity-section-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  margin:0 2px 12px;
}
.activity-section-head h2{
  margin:0;
  color:var(--color-text-primary);
  font-size:clamp(25px,7vw,31px);
  line-height:1;
  font-weight:800;
  letter-spacing:-.045em;
}
.activity-date-chip{
  flex:0 0 auto;
  padding:10px 13px;
  border-radius:15px;
  background:#f0ede9;
  color:#272324;
  font-size:10.5px;
  line-height:1;
  font-weight:650;
}
.activity-date-chip i{margin-left:6px;font-style:normal;color:#8b8385}

.activity-class-list,.activity-personal-list{display:grid;gap:8px}
.activity-class-tile,.activity-personal-row{
  --activity-accent:#8b2029;
  position:relative;
  min-width:0;
  min-height:82px;
  overflow:hidden;
  display:grid;
  align-items:center;
  gap:11px;
  width:100%;
  padding:10px 13px 10px 0;
  border:1px solid rgba(52,44,44,.045);
  border-radius:20px;
  background:#fff;
  color:var(--color-text-primary);
  text-align:left;
  box-shadow:0 6px 20px rgba(37,30,29,.045);
}
.activity-class-tile{grid-template-columns:7px 86px 52px minmax(0,1fr) 18px}
.activity-class-stripe,.activity-personal-stripe{align-self:stretch;width:7px;background:var(--activity-accent)}
.activity-class-time{padding-left:8px;border-right:1px solid #ece7e3;font-variant-numeric:tabular-nums}
.activity-class-time strong{display:block;font-size:13px;line-height:1.05;font-weight:790;white-space:nowrap}
.activity-class-time small{display:block;margin-top:6px;color:#777073;font-size:11px;line-height:1;font-weight:550;white-space:nowrap}
.activity-class-icon,.activity-personal-icon{width:52px;height:52px;border-radius:15px;display:grid;place-items:center;background:#f7f2ef;color:var(--activity-accent)}
.activity-class-icon .subject-vicon,.activity-personal-icon .subject-vicon{width:52px;height:52px;border-radius:15px;box-shadow:none}
.activity-class-copy,.activity-personal-copy{min-width:0}
.activity-class-copy strong,.activity-personal-copy strong{display:block;font-size:14px;line-height:1.12;font-weight:790;letter-spacing:-.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.activity-class-copy small,.activity-personal-copy small{display:block;margin-top:4px;color:#777073;font-size:10.5px;line-height:1.1;font-weight:540;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.activity-class-chevron,.activity-personal-chevron{display:grid;place-items:center;color:#777073}
.activity-class-chevron svg,.activity-personal-chevron svg{width:17px;height:17px}
.activity-now-chip{padding:5px 7px;border-radius:999px;background:var(--activity-accent);color:#fff;font-size:7.5px;line-height:1;font-weight:850;text-transform:uppercase}
.activity-class-tile.is-now{box-shadow:0 8px 24px color-mix(in srgb,var(--activity-accent) 14%,transparent);border-color:color-mix(in srgb,var(--activity-accent) 20%,transparent)}
.class-math,.personal-math{--activity-accent:#9c2730}
.class-physics,.personal-physics{--activity-accent:#2d82cb}
.class-chemistry,.personal-chemistry{--activity-accent:#4a9567}
.class-research,.personal-research{--activity-accent:#c98928}
.class-tech,.personal-tech{--activity-accent:#3569a3}
.class-book,.personal-book{--activity-accent:#7c5e66}

.activity-personal-row{grid-template-columns:7px 93px 52px minmax(0,1fr) 18px}
.activity-personal-date{padding-left:8px;border-right:1px solid #ece7e3;font-variant-numeric:tabular-nums}
.activity-personal-date strong{display:block;color:var(--activity-accent);font-size:10.5px;line-height:1;font-weight:860;letter-spacing:.03em}
.activity-personal-date small{display:block;margin-top:5px;color:#6f686b;font-size:9.8px;line-height:1.32;font-weight:550;white-space:nowrap}
.activity-personal-icon>svg{width:24px;height:24px;stroke-width:2;color:var(--activity-accent)}
.activity-add-row{
  width:100%;
  min-height:62px;
  margin-top:12px;
  padding:11px 16px;
  display:flex;
  align-items:center;
  gap:12px;
  border:1.5px dashed rgba(125,23,28,.34);
  border-radius:18px;
  background:rgba(125,23,28,.025);
  color:var(--color-brand-primary);
  text-align:left;
}
.activity-add-row span{width:32px;height:32px;border:2px solid currentColor;border-radius:50%;display:grid;place-items:center;font-size:22px;font-weight:300;line-height:1}
.activity-add-row strong{font-size:12.5px;font-weight:760}

.recorded-work-section .filter-tabs{margin-bottom:10px}
.recorded-work-section>.card{border-radius:22px}

/* Scheduler composer is a compact iOS sheet, never a giant plus state. --- */
.schedule-composer-scrim{
  position:fixed;
  inset:0;
  z-index:95;
  display:grid;
  align-items:end;
  background:rgba(28,23,24,.28);
  backdrop-filter:blur(6px);
  -webkit-backdrop-filter:blur(6px);
}
.schedule-composer-sheet{
  max-height:min(86dvh,720px);
  overflow:auto;
  padding:9px 18px calc(18px + var(--safe-bottom));
  border-radius:28px 28px 0 0;
  background:rgba(255,254,252,.98);
  box-shadow:0 -18px 48px rgba(38,29,30,.16);
}
.schedule-composer-handle{width:40px;height:5px;margin:2px auto 14px;border-radius:999px;background:#d7d0cc}
.schedule-composer-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.schedule-composer-head h2{margin:4px 0 0;font-size:26px;line-height:1;font-weight:800;letter-spacing:-.045em}
.schedule-composer-close{width:40px;height:40px;border-radius:50%;background:#f2eeeb;color:#6c6365;font-size:27px;line-height:1;font-weight:300}
.activity-composer-form{margin:16px 0 0;padding:0;border:0}
.activity-composer-form label{font-size:10px}
.activity-composer-form input,.activity-composer-form select,.activity-composer-form textarea{min-height:48px;border-radius:15px;font-size:16px;background:#fff}
.activity-composer-form textarea{min-height:78px}
.scheduler-actions{justify-content:space-between;margin-top:4px}
.scheduler-actions .primary{width:auto;min-width:160px;min-height:48px;padding:12px 22px}
.schedule-delete-button{min-height:44px;padding:10px 12px;border-radius:13px;background:#f5eceb;color:var(--wine);font-size:11px;font-weight:760}

@media(max-width:390px){
  .engineering-welcome-mark{width:min(78vw,300px);gap:20px}
  .home-hero-v158 .hero-photo{filter:blur(5.5px) brightness(1.055) saturate(.88);transform:scale(1.06)}
  .overview-grade-card{padding:16px 14px 14px}
  .overview-grade-head{grid-template-columns:40px minmax(0,1fr);gap:9px}
  .overview-grade-head .overview-icon{width:40px;height:40px}
  .overview-grade-head-copy .overview-title{font-size:12px}
  .overview-grade-head-copy .overview-status{font-size:7.7px;padding:5px 8px}
  .overview-grade-value{font-size:68px}
  .activities-page-head{padding-left:18px;padding-right:18px}
  .activities-page{padding-left:16px;padding-right:16px}
  .activities-add-button{width:46px;height:46px;font-size:27px}
  .activity-overview-tile{grid-template-columns:42px minmax(0,1fr) auto 13px;padding:12px 11px;gap:7px;min-height:94px}
  .activity-overview-icon{width:42px;height:42px}
  .activity-overview-copy strong{font-size:12.5px}.activity-overview-copy small{font-size:8.8px}.activity-overview-tile>b{font-size:24px}
  .activity-class-tile{grid-template-columns:7px 76px 46px minmax(0,1fr) 16px;gap:8px;padding-right:10px}
  .activity-class-icon,.activity-personal-icon{width:46px;height:46px}.activity-class-icon .subject-vicon,.activity-personal-icon .subject-vicon{width:46px;height:46px}
  .activity-class-time strong{font-size:11.5px}.activity-class-time small{font-size:9.5px}.activity-class-copy strong{font-size:12.5px}.activity-class-copy small{font-size:9.5px}
  .activity-personal-row{grid-template-columns:7px 82px 46px minmax(0,1fr) 16px;gap:8px;padding-right:10px}
  .activity-personal-date strong{font-size:9.4px}.activity-personal-date small{font-size:8.8px}.activity-personal-copy strong{font-size:12.5px}.activity-personal-copy small{font-size:9.3px}
}

@media(prefers-reduced-motion:reduce){
  .engineering-welcome-mark{animation:none!important;opacity:1!important}
}


/* ========================================================================
   v1.6.2 — Digital ID + base-attached navigation dock
   ======================================================================== */





.app-shell{padding-bottom:calc(116px + var(--safe-bottom))}
.bottom-nav{
  position:fixed!important;z-index:70!important;
  left:0!important;right:0!important;bottom:0!important;
  width:100%!important;max-width:none!important;height:calc(78px + var(--safe-bottom))!important;
  transform:none!important;margin:0!important;
  display:flex!important;align-items:flex-start!important;
  padding:8px 8px calc(8px + var(--safe-bottom))!important;
  border-radius:24px 24px 0 0!important;
  background:rgba(255,255,255,.965)!important;
  border:1px solid rgba(90,58,62,.08)!important;border-bottom:0!important;
  box-shadow:0 -9px 30px rgba(50,30,33,.09)!important;
  backdrop-filter:blur(28px) saturate(155%)!important;-webkit-backdrop-filter:blur(28px) saturate(155%)!important;
}
.nav-btn{
  flex:1 1 0!important;min-width:0!important;height:62px!important;
  display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;gap:4px!important;
  border-radius:14px!important;background:transparent!important;color:#5f595b!important;
  font-size:10px!important;font-weight:720!important;transition:color .16s ease,transform .16s ease!important;
}
.nav-btn.active{flex:1 1 0!important;background:transparent!important;color:var(--wine)!important;box-shadow:none!important}
.nav-btn>svg{width:24px!important;height:24px!important;stroke-width:2!important}
.nav-btn.nav-digitalid{overflow:visible!important;justify-content:flex-start!important;padding-top:0!important;gap:2px!important;color:var(--wine)!important}
.digital-id-nav-orb{
  width:62px;height:62px;margin-top:-27px;margin-bottom:1px;border-radius:50%;display:grid;place-items:center;
  color:#fff;background:linear-gradient(145deg,var(--wine-2),var(--wine-3));
  border:5px solid rgba(248,245,242,.98);box-shadow:0 9px 22px rgba(84,17,22,.28),0 0 0 1px rgba(125,23,28,.08);
}
.digital-id-nav-orb svg{width:29px!important;height:29px!important;stroke-width:1.9!important}
.nav-digitalid.active .digital-id-nav-orb{box-shadow:0 10px 24px rgba(84,17,22,.34),0 0 0 2px rgba(125,23,28,.13)}
.nav-digitalid span:last-child{font-size:10px;font-weight:800;white-space:nowrap}
@media(min-width:760px){.bottom-nav{left:50%!important;right:auto!important;width:760px!important;transform:translateX(-50%)!important}}

.digital-id-page{padding-top:14px;padding-bottom:34px}
.digital-id-identity{max-width:430px;margin:0 auto 14px;display:grid;grid-template-columns:62px minmax(0,1fr);align-items:center;gap:13px;padding:12px 14px;border-radius:20px;background:rgba(255,255,255,.72);border:1px solid rgba(255,255,255,.85);box-shadow:var(--shadow-soft)}
.digital-id-mini-avatar{width:58px;height:58px;border-radius:50%;overflow:hidden;display:grid;place-items:center;background:var(--wine-soft);color:var(--wine);font-size:17px;font-weight:900;border:2px solid #fff;box-shadow:0 5px 16px rgba(65,36,40,.10)}
.digital-id-mini-avatar img{width:100%;height:100%;object-fit:cover}.digital-id-identity>div:last-child{min-width:0}.digital-id-identity h2{margin:6px 0 2px;font-size:19px;line-height:1.05;letter-spacing:-.025em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.digital-id-identity p{margin:0;color:var(--muted);font-size:10.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.digital-id-verified{display:inline-flex;align-items:center;gap:4px;padding:4px 7px;border-radius:999px;background:var(--green-soft);color:var(--green);font-size:8.8px;font-weight:850}.digital-id-verified svg{width:11px;height:11px}
.digital-id-stage{--did-scale:1;--did-tilt-x:-.8deg;--did-tilt-y:1.2deg;--did-flip:0deg;--did-shine-x:36%;width:min(100%,348px);aspect-ratio:2159/3396;margin:0 auto;perspective:1600px;filter:drop-shadow(0 24px 24px rgba(35,42,52,.18));touch-action:pan-y}
.digital-id-card{width:100%;height:100%;position:relative;transform-style:preserve-3d;transform:rotateX(var(--did-tilt-x)) rotateY(calc(var(--did-flip) + var(--did-tilt-y)));transition:transform .58s cubic-bezier(.2,.76,.18,1);cursor:pointer;outline:none;will-change:transform}
.digital-id-face{position:absolute;inset:0;overflow:hidden;border-radius:15px;background:#fff;backface-visibility:hidden;-webkit-backface-visibility:hidden;box-shadow:inset 0 0 0 1px rgba(16,29,45,.08),0 0 0 1px rgba(255,255,255,.92)}
.digital-id-front{transform:translateZ(1.5px)}.digital-id-back{transform:rotateY(180deg) translateZ(1.5px)}.digital-id-fixed-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}.digital-id-design{position:absolute;left:0;top:0;width:222px;height:348px;transform-origin:top left;transform:scale(var(--did-scale));pointer-events:none}
.digital-id-photo{position:absolute;left:41.35px;top:70.05px;width:99.2px;height:98.6px;object-fit:cover;background:#fff;border:1.85px solid #4c38c7;box-shadow:0 0 0 .65px rgba(121,167,255,.70),inset 0 0 0 .35px rgba(255,255,255,.55);z-index:3}.digital-id-photo-placeholder{display:grid;place-items:center;color:#6a5b71;font-family:DigitalIDArchivo,sans-serif;font-size:18px;background:linear-gradient(145deg,#f0eef4,#d9d7e1)}
.digital-id-field{position:absolute;display:flex;align-items:center;overflow:hidden;white-space:nowrap;text-rendering:geometricPrecision;-webkit-font-smoothing:antialiased}.digital-id-name{left:31px;top:180.04px;width:191px;height:20px;justify-content:center;text-align:center;color:#fff;font-family:DigitalIDArchivo,sans-serif;font-size:17.55px;line-height:1;letter-spacing:-.10px}.digital-id-lrn{left:55px;top:224.6px;width:143px;height:23px;justify-content:center;text-align:center;color:#111;font-family:DigitalIDAnton,sans-serif;font-size:15.85px;line-height:1;letter-spacing:.01px}.digital-id-birth{left:106.3px;top:259px;width:99.5px;height:10.4px;color:#1a1a1a;font-family:DigitalIDGaret,Arial,sans-serif;font-size:6.95px;line-height:1;font-weight:400}.digital-id-address{left:106.3px;top:271.3px;width:110px;height:10.2px;color:#1a1a1a;font-family:DigitalIDGaret,Arial,sans-serif;font-size:6.3px;line-height:1;font-weight:400;text-transform:uppercase}.digital-id-guardian{left:95.6px;top:42.55px;width:110px;height:10.8px;color:#171717;font-family:DigitalIDGaret,Arial,sans-serif;font-size:9.45px;line-height:1;font-weight:700}.digital-id-contact{left:91.2px;top:58.2px;width:114px;height:11.2px;color:#171717;font-family:DigitalIDArialUnicode,Arial,sans-serif;font-size:10.55px;line-height:1;font-weight:700}
.digital-id-verification{position:absolute;left:29px;top:115.5px;width:164px;height:82px;text-align:center;color:#252525;display:block;z-index:5}.digital-id-verify-title{position:absolute;left:0;top:5.5px;width:164px;height:8px;font-family:DigitalIDGaret,Arial,sans-serif;font-size:5.65px;line-height:1;letter-spacing:.68px;font-weight:700;color:#626262;text-align:center}.digital-id-barcode{position:absolute;left:6px;top:17.5px;width:152px;height:35px;display:block;background:#fff;border:1px solid rgba(0,0,0,.13);box-shadow:0 .45px 1px rgba(0,0,0,.04)}.digital-id-barcode svg{width:100%;height:100%;display:block;shape-rendering:crispEdges}.digital-id-barcode-pending{height:100%;display:grid;place-items:center;color:#8e8688;font-family:DigitalIDGaret,sans-serif;font-size:5.4px}.digital-id-verify-ref{position:absolute;left:0;top:56px;width:164px;height:8px;font-family:DigitalIDArialUnicode,Arial,sans-serif;font-size:5.45px;line-height:1;color:#292929;text-align:center;letter-spacing:.10px;font-weight:700}.digital-id-verify-meta{position:absolute;left:0;top:67.5px;width:164px;height:8px;font-family:DigitalIDGaret,Arial,sans-serif;font-size:4.75px;line-height:1;color:#747474;text-align:center;letter-spacing:.03px}
.digital-id-hologram{--hx:0;--hy:0;--hangle:22deg;position:absolute;left:45.6px;top:133.1px;width:31.85px;height:31.85px;z-index:6;border-radius:50%;isolation:isolate;opacity:.56;filter:drop-shadow(0 .45px .8px rgba(45,68,105,.20)) drop-shadow(0 0 .9px rgba(155,205,225,.15))}.digital-id-hologram img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;z-index:1;opacity:.76;filter:grayscale(.78) saturate(.55) contrast(1.18) brightness(.93)}
.digital-id-hologram::before{content:"";position:absolute;inset:0;z-index:2;border-radius:50%;-webkit-mask:url('assets/id/engineering-hologram.png') center/contain no-repeat;mask:url('assets/id/engineering-hologram.png') center/contain no-repeat;background:linear-gradient(calc(var(--hangle) + 58deg),rgba(48,54,63,.20),rgba(224,230,234,.62) 18%,rgba(102,111,122,.34) 34%,rgba(240,244,246,.54) 49%,rgba(86,94,104,.32) 66%,rgba(213,220,226,.55) 83%,rgba(57,64,73,.22)),repeating-linear-gradient(calc(var(--hangle) + 14deg),rgba(255,67,183,.54) 0 1.25px,rgba(132,91,255,.48) 1.25px 2.5px,rgba(38,217,255,.56) 2.5px 3.75px,rgba(75,255,177,.46) 3.75px 5px,rgba(255,224,72,.50) 5px 6.25px,rgba(255,103,70,.46) 6.25px 7.5px),conic-gradient(from calc(var(--hangle) - 38deg),rgba(255,80,196,.56),rgba(114,100,255,.55),rgba(35,221,255,.62),rgba(79,247,177,.52),rgba(249,217,93,.56),rgba(255,110,83,.50),rgba(255,80,196,.56));background-size:100% 100%,175% 175%,132% 132%;background-position:center,calc(50% + (var(--hx) * 20%)) calc(50% + (var(--hy) * 18%)),calc(50% - (var(--hx) * 12%)) calc(50% - (var(--hy) * 12%));background-blend-mode:soft-light,screen,color;mix-blend-mode:screen;opacity:.74;filter:saturate(1.55) contrast(1.10);animation:digitalIdHoloDrift 7s linear infinite}.digital-id-hologram::after{content:"";position:absolute;inset:1.05px;z-index:3;border-radius:50%;-webkit-mask:url('assets/id/engineering-hologram.png') center/contain no-repeat;mask:url('assets/id/engineering-hologram.png') center/contain no-repeat;background:linear-gradient(118deg,transparent 0 31%,rgba(205,219,229,.10) 35%,rgba(232,240,246,.46) 43%,rgba(140,201,225,.25) 49%,rgba(220,139,205,.16) 54%,transparent 62% 100%),repeating-radial-gradient(circle at 38% 32%,rgba(255,255,255,.10) 0 .55px,rgba(55,67,79,.09) .55px 1.15px,transparent 1.15px 2.55px);background-size:235% 100%,100% 100%;background-position:135% center,center;mix-blend-mode:screen;opacity:.43;box-shadow:inset 0 0 2px rgba(255,255,255,.16),inset 0 0 0 .48px rgba(182,210,225,.54);animation:digitalIdHoloSpecular 4.4s ease-in-out infinite alternate}@keyframes digitalIdHoloDrift{0%{filter:hue-rotate(0deg) saturate(1.48) contrast(1.08);background-position:center,42% 54%,58% 44%}50%{filter:hue-rotate(52deg) saturate(1.72) contrast(1.12);background-position:center,61% 43%,41% 59%}100%{filter:hue-rotate(0deg) saturate(1.48) contrast(1.08);background-position:center,42% 54%,58% 44%}}@keyframes digitalIdHoloSpecular{from{background-position:142% center,center;opacity:.28}to{background-position:-42% center,center;opacity:.48}}
.digital-id-laminate{position:absolute;inset:0;z-index:7;pointer-events:none;border-radius:inherit;background:linear-gradient(112deg,transparent 0 24%,rgba(255,255,255,.04) 33%,rgba(255,255,255,.15) var(--did-shine-x),rgba(255,255,255,.03) 49%,transparent 61%);mix-blend-mode:screen}.digital-id-rim{position:absolute;inset:0;z-index:8;pointer-events:none;border-radius:inherit;box-shadow:inset 1px 1px 0 rgba(255,255,255,.60),inset -1px -1px 0 rgba(0,0,0,.07),2px 3px 0 rgba(166,176,188,.17)}
.digital-id-controls{width:max-content;margin:15px auto 0;display:flex;gap:5px;padding:5px;border-radius:999px;background:rgba(255,255,255,.82);border:1px solid rgba(55,43,46,.06);box-shadow:0 8px 22px rgba(50,30,33,.08)}.digital-id-controls button{min-width:66px;padding:9px 13px;border-radius:999px;background:transparent;color:var(--muted);font-size:11px;font-weight:800}.digital-id-controls button.active{background:var(--wine);color:#fff}.digital-id-controls .digital-id-flip{min-width:36px;width:36px;padding:0;color:var(--wine);background:var(--wine-soft)}.digital-id-controls svg{width:16px;height:16px}.digital-id-hint{text-align:center;margin:9px auto 0;color:var(--muted);font-size:10px;line-height:1.35}.digital-id-data-note{max-width:430px;margin:16px auto 0;padding:14px}.digital-id-data-note strong{font-size:12px}.digital-id-data-note p{margin:4px 0 0;color:var(--muted);font-size:10px;line-height:1.45}
@media(prefers-reduced-motion:reduce){.digital-id-card{transition:none!important}.digital-id-hologram::before,.digital-id-hologram::after{animation:none!important}}

/* v1.6.3 — Digital ID profile completion */
.profile-form textarea{resize:vertical;min-height:88px;font-family:inherit;line-height:1.45}
.profile-form-subsection{display:grid;gap:13px;margin:3px 0;padding:16px;border-radius:20px;background:linear-gradient(145deg,rgba(125,23,28,.045),rgba(255,255,255,.78));border:1px solid rgba(125,23,28,.10)}
.profile-form-subhead{margin-bottom:1px}.profile-form-subhead strong{display:block;margin-top:4px;font-size:14px;color:var(--ink)}.profile-form-subhead p{margin:5px 0 0;font-size:11px;line-height:1.45;color:var(--muted)}
.digital-id-gate{max-width:430px;margin:4px auto 0;padding:24px;text-align:center;background:linear-gradient(150deg,#fff,#faf4f2);border:1px solid rgba(125,23,28,.08)}
.digital-id-gate-icon{width:62px;height:62px;margin:0 auto 12px;border-radius:21px;display:grid;place-items:center;background:var(--wine);color:#fff;box-shadow:0 13px 26px rgba(125,23,28,.20)}
.digital-id-gate-icon svg{width:31px;height:31px}.digital-id-gate h2{font-size:23px;letter-spacing:-.035em;margin:5px 0 8px}.digital-id-gate>p{font-size:12px;line-height:1.55;color:var(--muted);margin:0 auto;max-width:340px}
.digital-id-gate-list{display:grid;gap:7px;text-align:left;margin:17px 0}.digital-id-gate-list>div{display:flex;align-items:center;gap:8px;padding:9px 11px;border-radius:13px;background:#fff;border:1px solid var(--line);font-size:11px;font-weight:760;color:#665b5e}.digital-id-gate-list svg{width:15px;height:15px;color:var(--wine);flex:0 0 auto}
.digital-id-gate .primary{width:100%;display:flex;align-items:center;justify-content:center;gap:8px}.digital-id-gate .primary svg{width:17px;height:17px}


/* ========================================================================
   v1.6.4 — Profile editing resilience + account switcher refinement
   ======================================================================== */

/* Single, smaller opening mark. No scale pulse, no double fade. */
.engineering-welcome-mark{
  width:min(58vw,220px)!important;
  gap:15px!important;
  animation:engineeringWelcomeV164 2.6s ease-in-out both!important;
}
.engineering-welcome-logo{
  width:min(44vw,150px)!important;
  max-width:150px!important;
  animation:none!important;
  transform:none!important;
}
.engineering-welcome-wordmark{
  font-size:clamp(25px,7.2vw,34px)!important;
}
@keyframes engineeringWelcomeV164{
  0%{opacity:0}
  20%{opacity:1}
  28%{opacity:1}
  100%{opacity:0}
}

/* Keep editing comfortable when the iOS keyboard is open. */
.profile-keyboard-open .bottom-nav{
  transform:translateY(calc(115% + var(--safe-bottom)))!important;
  opacity:0!important;
  pointer-events:none!important;
  transition:transform .22s ease,opacity .18s ease;
}
.profile-keyboard-open .page{
  padding-bottom:42vh!important;
}
.profile-save-note{
  padding:11px 13px;
  border-radius:14px;
  background:#faf6f3;
  border:1px solid rgba(125,23,28,.08);
}
.profile-save-note strong{font-size:12px!important}
.profile-save-note p{font-size:10px!important}

/* Proper saved-account rows: thumbnail, text, status, small chevron. */
.menu-account-list{
  display:grid;
  overflow:hidden;
  border-top:1px solid var(--line);
}
.menu-account-row{
  border-bottom:1px solid var(--line);
  min-width:0;
}
.menu-account-row>button{
  width:100%;
  min-width:0;
  display:grid;
  grid-template-columns:42px minmax(0,1fr) auto;
  align-items:center;
  gap:10px;
  padding:9px 4px;
  background:transparent;
  color:var(--ink);
  text-align:left;
  font:inherit;
}
.menu-account-row>button>span:nth-child(2){min-width:0}
.menu-account-row strong{
  display:block;
  color:var(--ink);
  font-size:12.5px;
  line-height:1.18;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.menu-account-row small{
  display:block;
  margin-top:3px;
  color:var(--muted);
  font-size:9px;
  line-height:1.15;
  text-transform:capitalize;
}
.menu-account-row em{
  font-style:normal;
  color:var(--wine);
  font-size:8px;
  font-weight:850;
  text-transform:uppercase;
  letter-spacing:.03em;
}
.menu-account-row>button>svg{
  width:15px!important;
  height:15px!important;
  color:#9e9295!important;
  stroke-width:1.9!important;
}
.saved-account-avatar{
  position:relative;
  width:42px;
  height:42px;
  border-radius:13px;
  display:grid;
  place-items:center;
  overflow:hidden;
  background:#efe6e4;
  color:var(--wine);
  font-size:11px;
  font-weight:850;
  flex:0 0 auto;
}
.saved-account-avatar .saved-account-fallback{
  position:absolute;
  inset:0;
  display:grid;
  place-items:center;
}
.saved-account-avatar img{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
  border-radius:inherit;
  z-index:2;
}
.saved-account-avatar.has-photo{
  background:#ece8e5;
}
.saved-account-switch .saved-account-avatar,
.account-sheet-row .saved-account-avatar{
  width:38px;
  height:38px;
  border-radius:12px;
}

/* ========================================================================
   EnlightN v1.7.0 — Student commerce/messaging + blue adviser shell
   ======================================================================== */
:root{
  --enlight-blue:#0a57d4;
  --enlight-blue-2:#1476f2;
  --enlight-blue-3:#073b94;
  --enlight-blue-soft:#eaf2ff;
  --enlight-sky:#f3f7ff;
  --gem-calc:#1c6cff;
  --gem-phys:#ed5c9b;
  --gem-unassigned:#8a9099;
}

/* Student hero: four action icons + live gem wallet ---------------------- */
.home-hero-v158 .home-brand-header{align-items:flex-start}
.home-hero-v158 .home-brand-mark{max-width:150px;gap:8px}
.home-hero-v158 .home-brand-mark img{width:44px;height:44px}
.home-hero-v158 .home-brand-mark strong{font-size:21px}
.home-hero-v158 .home-brand-mark span{display:none}
.home-hero-v158 .hero-actions{gap:6px}
.home-hero-v158 .icon-btn{width:40px;height:40px}
.home-hero-v158 .icon-btn svg{width:19px;height:19px}
.home-wallet-strip{
  position:absolute;z-index:5;top:calc(var(--safe-top) + 62px);right:20px;
  display:flex;align-items:center;gap:6px;padding:5px;border-radius:18px;
  background:rgba(255,255,255,.82);border:1px solid rgba(255,255,255,.9);
  box-shadow:0 6px 20px rgba(24,24,26,.12);backdrop-filter:blur(18px) saturate(150%);
  -webkit-backdrop-filter:blur(18px) saturate(150%);
}
.wallet-pill{display:grid;grid-template-columns:17px auto;grid-template-rows:auto auto;column-gap:5px;align-items:center;min-width:62px;padding:5px 7px;border-radius:13px;background:transparent;color:#4e494b;text-align:left}
.wallet-pill .gem-shape{grid-row:1/3;width:16px;height:18px}
.wallet-pill strong{font-size:11px;line-height:1;font-weight:860;font-variant-numeric:tabular-nums}
.wallet-pill small{font-size:7.5px;line-height:1.1;font-weight:700;color:#8d8487}
.gem-shape{display:inline-block;width:17px;height:20px;clip-path:polygon(50% 0,88% 21%,100% 62%,50% 100%,0 62%,12% 21%);background:linear-gradient(145deg,#8fc2ff 0 25%,#2f76ff 26% 55%,#0c3fb9 56% 100%);box-shadow:inset 2px 2px 3px rgba(255,255,255,.65),inset -2px -3px 4px rgba(0,0,0,.16)}
.gem-pink .gem-shape,.wallet-pill.gem_pink .gem-shape,.wallet-pill.gem-pink .gem-shape{background:linear-gradient(145deg,#ffc0dd 0 25%,#ef69a4 26% 56%,#b22664 57% 100%)}
.gem-grey .gem-shape,.wallet-pill.gem_grey .gem-shape,.wallet-pill.gem-grey .gem-shape{background:linear-gradient(145deg,#d7dbe0 0 25%,#959ca6 26% 56%,#5f6670 57% 100%)}
.wallet-pill.gem_blue .gem-shape,.wallet-pill.gem-blue .gem-shape{background:linear-gradient(145deg,#a7cfff 0 25%,#3981ff 26% 56%,#0b46c3 57% 100%)}

/* Upcoming activities ---------------------------------------------------- */
.home-upcoming-head{margin-top:32px}
.upcoming-activity-list{display:grid;gap:9px}
.upcoming-activity-card{display:grid;grid-template-columns:52px minmax(0,1fr) 18px;gap:12px;align-items:center;padding:12px 13px;border-radius:20px;background:#fff;border:1px solid rgba(48,41,43,.07);box-shadow:0 5px 16px rgba(34,28,30,.05)}
.upcoming-date-tile{width:52px;height:52px;border-radius:16px;display:grid;place-items:center;align-content:center;background:#f3efec;color:var(--wine)}
.upcoming-date-tile strong{font-size:18px;line-height:1;font-weight:850;font-variant-numeric:tabular-nums}
.upcoming-date-tile span{margin-top:3px;font-size:8px;font-weight:850;letter-spacing:.08em}
.upcoming-activity-card.calc1 .upcoming-date-tile{background:#eaf2ff;color:#155acb}
.upcoming-activity-card.phys3 .upcoming-date-tile{background:#ffeaf3;color:#bc3d76}
.upcoming-copy{min-width:0}.upcoming-copy>.upcoming-kind{display:block;font-size:8.5px;line-height:1.2;text-transform:uppercase;letter-spacing:.07em;font-weight:820;color:#8a8083}
.upcoming-copy>strong{display:block;margin-top:3px;font-size:13px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.upcoming-copy>small{display:block;margin-top:4px;font-size:9.5px;line-height:1.3;color:#867b7e;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.upcoming-chevron svg{width:17px;height:17px;color:#b2a8aa}
.home-upcoming-empty{padding:18px}.home-upcoming-empty strong{display:block;font-size:13px}.home-upcoming-empty span{display:block;margin-top:5px;color:#897e80;font-size:10px}
.upcoming-full-head{margin-top:20px}

/* Requested Plus Points subject label enlargement only ------------------ */
.plus-subject-head strong{font-size:19px!important;letter-spacing:-.025em}

/* Profile v1.7 ----------------------------------------------------------- */
.wellness-grid-two{grid-template-columns:repeat(2,1fr)!important}
.profile-manage-actions{grid-template-columns:repeat(2,minmax(0,1fr))!important}
.profile-show-qr{background:linear-gradient(145deg,#f0f4ff,#e4edff)!important;color:#315b9d!important}
.profile-show-qr svg{width:20px;height:20px}

/* Full-screen student overlays ------------------------------------------ */
.v17-overlay-scrim,.admin-modal-scrim{position:fixed;inset:0;z-index:80;background:rgba(20,18,19,.32);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);display:flex;align-items:flex-end;justify-content:center;padding-top:calc(var(--safe-top) + 10px)}
.v17-overlay-panel{width:100%;max-width:760px;max-height:92dvh;overflow:auto;background:#fbfaf8;border-radius:30px 30px 0 0;padding:18px 17px calc(22px + var(--safe-bottom));box-shadow:0 -20px 70px rgba(29,24,26,.22)}
.overlay-head{position:sticky;top:-18px;z-index:4;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:14px 0 12px;background:rgba(251,250,248,.93);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}
.overlay-head h2{margin:2px 0 0;font-size:28px;letter-spacing:-.045em}.overlay-head p{margin:4px 0 0;color:#82777a;font-size:11px}
.overlay-close,.admin-menu-sheet .overlay-head button{width:40px;height:40px;border-radius:14px;background:#eee9e6;color:#4f4648;font-size:25px;line-height:1}
.overlay-actions{display:flex;justify-content:space-between;align-items:center;margin:0 2px 10px;color:#817679;font-size:11px}.text-button.inline{display:inline;margin:0;color:var(--wine)}

/* Notifications */
.notification-list{display:grid;gap:7px}.notification-item{width:100%;display:grid;grid-template-columns:9px minmax(0,1fr) 18px;gap:10px;align-items:start;padding:13px;border-radius:17px;background:#fff;color:#211c1e;text-align:left;border:1px solid #eee8e5}.notification-item.is-unread{background:#fff8f7;border-color:#f2ddda}.notification-dot{width:8px;height:8px;border-radius:50%;margin-top:5px;background:#c8bfc1}.notification-item.is-unread .notification-dot{background:var(--wine)}.notification-item strong{font-size:13px}.notification-item p{margin:4px 0;color:#766c6f;font-size:10.5px;line-height:1.35}.notification-item small{font-size:9px;color:#a19799}.notification-item>svg{width:16px;height:16px;color:#b5aaad;margin-top:10px}

/* Messaging */
.chat-channel-strip{display:flex;gap:7px;overflow-x:auto;padding:2px 0 10px;scrollbar-width:none}.chat-channel-strip::-webkit-scrollbar{display:none}.chat-channel-strip button{position:relative;flex:0 0 auto;padding:9px 12px;border-radius:13px;background:#eee9e5;color:#706568;font-size:10px;font-weight:800}.chat-channel-strip button.active{background:#2d292a;color:#fff}.chat-channel-strip button i{position:absolute;right:-4px;top:-5px;min-width:17px;height:17px;padding:0 4px;border-radius:9px;background:var(--wine);color:#fff;font-style:normal;font-size:8px;display:grid;place-items:center}
.chat-message-list{min-height:360px;display:flex;flex-direction:column;gap:8px;padding:8px 1px 16px}.chat-bubble{align-self:flex-start;max-width:82%;padding:10px 12px;border-radius:17px 17px 17px 5px;background:#fff;border:1px solid #ece6e3}.chat-bubble.mine{align-self:flex-end;border-radius:17px 17px 5px 17px;background:#f5e8e8;border-color:#efdada}.chat-bubble strong{font-size:9px;color:#8e8285}.chat-bubble p{margin:4px 0 0;font-size:13px;line-height:1.35;white-space:pre-wrap}.chat-bubble small{display:block;margin-top:5px;font-size:8px;color:#a09698}.chat-composer{position:sticky;bottom:0;display:grid;grid-template-columns:1fr 44px;gap:8px;padding:10px 0 calc(2px + var(--safe-bottom));background:#fbfaf8}.chat-composer input{min-width:0;height:46px;border:1px solid #e5dedb;background:#fff;border-radius:16px;padding:0 14px;outline:none}.chat-composer button{border-radius:15px;background:var(--wine);color:#fff;font-size:21px}.chat-readonly{padding:14px;border-radius:15px;background:#eee9e6;color:#766c6f;font-size:11px;text-align:center}

/* Secure QR */
.qr-overlay{max-width:520px}.qr-identity{display:flex;align-items:center;gap:12px;padding:4px 4px 14px}.qr-avatar{width:58px;height:58px;border-radius:20px;box-shadow:none;border:2px solid #fff}.qr-identity strong{display:block;font-size:15px}.qr-identity small{display:block;margin-top:4px;color:#807477;font-size:10px}.qr-code-frame{width:min(82vw,360px);aspect-ratio:1;margin:6px auto 14px;padding:13px;border-radius:26px;background:#fff;border:1px solid #ece7e3;box-shadow:0 12px 34px rgba(27,23,24,.08);display:grid;place-items:center}.qr-code-frame svg{width:100%;height:100%;display:block}.qr-loading{font-size:12px;color:#8a8082}.qr-security-note{max-width:380px;margin:0 auto 13px;text-align:center;color:#776d70;font-size:10.5px;line-height:1.45}.qr-expiry{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;border-radius:15px;background:#f1edeb;margin-bottom:10px}.qr-expiry span{font-size:10px;color:#817679}.qr-expiry strong{font-size:11px}

/* Shop */
.shop-overlay{background:linear-gradient(180deg,#fbfbfc,#f5f4f7)}
.shop-wallet-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:4px 0 12px}.shop-gem{display:grid;grid-template-columns:20px 1fr;grid-template-rows:auto auto;gap:1px 6px;align-items:center;padding:10px;border-radius:16px;background:#fff;border:1px solid #ebe8eb}.shop-gem .gem-shape{grid-row:1/3}.shop-gem b{font-size:13px}.shop-gem small{font-size:8px;color:#8e878c}.shop-tabs{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:4px;border-radius:15px;background:#e9e8eb;margin-bottom:10px}.shop-tabs button{padding:10px;border-radius:12px;background:transparent;color:#736e74;font-size:11px;font-weight:800}.shop-tabs button.active{background:#fff;color:#1657bd;box-shadow:0 2px 8px rgba(30,33,42,.08)}
.convert-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;padding:14px;border-radius:19px;background:#fff;border:1px solid #e9e7eb;margin-bottom:11px}.convert-card>div:first-child strong{display:block;margin-top:2px;font-size:13px}.convert-card>div:first-child small{display:block;margin-top:3px;color:#817c82;font-size:9px;line-height:1.3}.convert-card>.secondary{grid-column:1/-1;min-height:40px;padding:9px 12px;margin:0;color:#315f9f;background:#edf4ff}.shop-product-grid{display:grid;gap:10px}.shop-product-card{display:grid;grid-template-columns:76px minmax(0,1fr) auto;gap:12px;align-items:center;padding:11px;border-radius:20px;background:#fff;border:1px solid #e9e7eb}.shop-product-card.disabled{opacity:.58}.shop-product-art{width:76px;height:76px;border-radius:17px;display:grid;place-items:center;background:radial-gradient(circle at 35% 25%,#d5e8ff,#8fb8ff 55%,#3d6bc4);box-shadow:inset 0 0 0 1px rgba(255,255,255,.55)}.shop-product-card.term_exam_exemption .shop-product-art{background:radial-gradient(circle at 35% 25%,#fff2c2,#f2c249 55%,#b7790d)}.shop-product-card.subject_grade_100 .shop-product-art{background:radial-gradient(circle at 35% 25%,#e4dcff,#9b80ee 55%,#5b3fbd)}.shop-art-symbol{font-size:24px;font-weight:900;color:#fff;text-shadow:0 2px 8px rgba(0,0,0,.2)}.shop-product-copy{min-width:0}.shop-product-copy>span{display:block;font-size:8px;color:#999199;font-weight:800;text-transform:uppercase;letter-spacing:.06em}.shop-product-copy>strong{display:block;margin-top:2px;font-size:13px;line-height:1.15}.shop-product-copy>p{margin:4px 0 0;color:#7f7980;font-size:9px;line-height:1.3}.shop-product-copy>small{display:block;margin-top:5px;color:#55719c;font-size:8.5px;font-weight:750}.shop-buy{min-width:51px;height:42px;padding:0 9px;border-radius:14px;background:#1d5fd4;color:#fff;display:flex;align-items:center;justify-content:center;gap:5px;font-size:10px;font-weight:850}.shop-buy .gem-shape{width:13px;height:15px}.shop-stepper{display:flex;align-items:center;gap:6px}.shop-stepper button{width:28px;height:28px;border-radius:10px;background:#eeeef2;color:#4f4a51;font-size:17px}.shop-stepper b{min-width:23px;text-align:center;font-size:11px}.product-stepper{grid-column:2/3;justify-self:start;margin-top:-4px}

/* Admin blue shell ------------------------------------------------------- */
.admin-shell-v17{min-height:100dvh;padding-bottom:calc(96px + var(--safe-bottom));background:radial-gradient(circle at 100% 0,rgba(42,121,255,.11),transparent 34%),linear-gradient(180deg,#f7faff 0%,#eef4fb 100%);color:#162237}
.admin-topbar-v17{position:sticky;top:0;z-index:35;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:calc(var(--safe-top) + 10px) 16px 10px;background:rgba(247,250,255,.88);border-bottom:1px solid rgba(32,79,148,.08);backdrop-filter:blur(24px) saturate(160%);-webkit-backdrop-filter:blur(24px) saturate(160%)}
.admin-brand-v17{display:flex;align-items:center;gap:9px;min-width:0}.admin-enlight-logo{width:42px;height:42px;border-radius:13px;object-fit:contain;background:#fff;padding:3px;box-shadow:0 4px 14px rgba(28,74,140,.12)}.admin-brand-v17 strong{display:block;color:#153c75;font-size:17px;line-height:1}.admin-brand-v17 span{display:block;margin-top:4px;color:#71809a;font-size:8.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:160px}.admin-top-actions{display:flex;gap:5px}.admin-top-actions button{position:relative;width:39px;height:39px;border-radius:13px;background:#fff;color:#345377;display:grid;place-items:center;border:1px solid #e3ebf6}.admin-top-actions svg{width:19px;height:19px}.admin-top-actions i{position:absolute;right:-3px;top:-4px;min-width:17px;height:17px;padding:0 4px;border-radius:9px;background:#e74b60;color:#fff;font-size:8px;font-style:normal;display:grid;place-items:center;border:2px solid #f7faff}
.admin-main-v17{max-width:760px;margin:0 auto;padding:18px 16px 30px}.admin-page-title span,.admin-eyebrow{display:block;color:#6d83a5;font-size:9px;line-height:1;text-transform:uppercase;letter-spacing:.12em;font-weight:850}.admin-page-title h1{margin:4px 0 0;color:#18375f;font-size:32px;line-height:1;letter-spacing:-.05em}.admin-page-title p{margin:6px 0 0;color:#71809a;font-size:11px}
.admin-welcome-v17{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:15px 2px 18px}.admin-welcome-v17 h1{margin:4px 0 0;font-size:28px;line-height:1.03;color:#18375f;letter-spacing:-.045em}.admin-welcome-v17 p{margin:6px 0 0;color:#6d7d96;font-size:10px}.admin-welcome-v17 img{width:58px;height:58px;object-fit:contain;border-radius:18px;background:#fff;padding:3px;box-shadow:0 6px 18px rgba(27,65,122,.12)}
.admin-primary-action{width:100%;display:grid;grid-template-columns:46px minmax(0,1fr) 18px;gap:12px;align-items:center;padding:14px;border-radius:20px;background:linear-gradient(135deg,var(--enlight-blue-3),var(--enlight-blue-2));color:#fff;text-align:left;box-shadow:0 12px 30px rgba(15,87,201,.22)}.admin-primary-action>svg:first-child{width:28px;height:28px}.admin-primary-action strong{display:block;font-size:14px}.admin-primary-action small{display:block;margin-top:3px;font-size:9px;line-height:1.3;opacity:.82}.admin-primary-action>svg:last-child{width:17px;height:17px}
.admin-status-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin:12px 0}.admin-status-card{padding:12px 8px;border-radius:17px;background:#fff;border:1px solid #e4edf8;text-align:center;box-shadow:0 4px 14px rgba(42,73,113,.04)}.admin-status-card>span{display:block;font-size:22px;font-weight:900}.admin-status-card strong{display:block;margin-top:3px;font-size:9.5px}.admin-status-card small{display:block;margin-top:2px;color:#8390a4;font-size:7.5px}.tone-red{color:#d64657}.tone-amber{color:#c57a16}.tone-blue{color:#246bd5}.tone-purple{color:#7355c4}
.admin-section-title{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;margin:22px 2px 8px}.admin-section-title.inside{margin:0 0 12px}.admin-section-title>div>span{font-size:8.5px;text-transform:uppercase;letter-spacing:.09em;color:#7c8ca5;font-weight:850}.admin-section-title h2{margin:2px 0 0;font-size:19px;line-height:1.05;color:#263c5d;letter-spacing:-.035em}.admin-section-title>small{color:#71819b;font-size:8.5px}.admin-section-title>b{color:var(--enlight-blue);font-size:20px}
.admin-list-card{overflow:hidden;border-radius:20px;background:#fff;border:1px solid #e4edf8;box-shadow:0 5px 18px rgba(42,73,113,.045)}.admin-attendance-row,.admin-simple-row{padding:11px 12px;border-bottom:1px solid #edf2f8}.admin-attendance-row:last-child,.admin-simple-row:last-child{border-bottom:0}.admin-attendance-row{display:grid;gap:8px}.admin-simple-row{display:flex;align-items:center;justify-content:space-between;gap:10px}.admin-person-row{display:flex;align-items:center;gap:9px;min-width:0}.admin-row-avatar{width:38px;height:38px;border-radius:13px;border:0;box-shadow:none;background:#e9eef6;font-size:11px}.admin-person-row>div{min-width:0}.admin-person-row strong{display:block;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.admin-person-row small{display:block;margin-top:3px;color:#7d899c;font-size:8.5px;line-height:1.25}.admin-attendance-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding-left:47px}.excuse-pill{padding:5px 7px;border-radius:999px;background:#edf0f4;color:#69758a;font-size:7.5px;font-weight:850}.excuse-pill.approved{background:#e8f5ed;color:#347050}.excuse-pill.rejected{background:#fdebed;color:#ad3d4b}.excuse-pill.pending-review{background:#fff2d9;color:#9b6c16}.admin-attendance-actions>a,.review-buttons button,.admin-text-button{background:transparent;color:#246bd5;font-size:8.5px;font-weight:800;text-decoration:none;padding:5px}.review-buttons{display:flex;gap:2px}.review-buttons button:last-child{color:#c14a58}.admin-row-status{padding:5px 7px;border-radius:9px;background:#edf2f7;color:#6b7890;font-size:7.5px;font-weight:800}.admin-row-status.danger{background:#fdebed;color:#b03f4f}.admin-grade-danger{font-size:17px;font-weight:900;color:#cb4253}.admin-clear-state{padding:22px;text-align:center;color:#70809a}.admin-clear-state svg{width:24px;height:24px;color:#3a8a61}.admin-clear-state strong{display:block;margin-top:7px;font-size:11px}.admin-clear-state small{display:block;margin-top:4px;font-size:8.5px}.admin-clear-state.compact{padding:16px}

/* Admin gradebook */
.admin-subject-toggle{display:flex;gap:6px;overflow:auto;padding:12px 0 7px;scrollbar-width:none}.admin-subject-toggle::-webkit-scrollbar{display:none}.admin-subject-toggle button{flex:0 0 auto;padding:8px 11px;border-radius:12px;background:#e8eef7;color:#60718d;font-size:9px;font-weight:800}.admin-subject-toggle button.active{background:var(--enlight-blue);color:#fff}.admin-grade-buckets{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:5px 0 10px}.admin-grade-buckets button{display:flex;align-items:center;justify-content:center;gap:5px;padding:9px;border-radius:13px;background:#fff;color:#65758e;border:1px solid #e1eaf6}.admin-grade-buckets button.active{background:#e8f1ff;color:#155dc9;border-color:#cbdfff}.admin-grade-buckets svg{width:15px;height:15px}.admin-grade-buckets strong{font-size:9px}.admin-gradebook-card{overflow:hidden;border-radius:20px;border:1px solid #e0e9f5;box-shadow:0 8px 24px rgba(32,65,112,.06)}.gradebook-header,.gradebook-row{display:grid;grid-template-columns:minmax(114px,1.7fr) repeat(5,minmax(34px,.55fr));align-items:stretch}.gradebook-header{background:#1b5fbf;color:#fff}.gradebook-name-head,.gradebook-col-head{padding:9px 6px;display:grid;place-items:center;border-right:1px solid rgba(255,255,255,.13)}.gradebook-name-head{place-items:center start;padding-left:12px;font-size:9px;font-weight:850}.gradebook-col-head strong{font-size:10px}.gradebook-col-head small{margin-top:2px;font-size:6.5px;opacity:.75}.gradebook-row{min-height:46px;border-bottom:1px solid #edf2f8;background:#fff}.gradebook-row:last-child{border-bottom:0}.gradebook-learner{min-width:0;display:grid;grid-template-columns:30px minmax(0,1fr);gap:7px;align-items:center;padding:6px 6px 6px 8px;border-right:1px solid #edf2f8}.gradebook-avatar{width:30px;height:30px;border-radius:10px;border:0;box-shadow:none;font-size:8px}.gradebook-learner strong{font-size:8.5px;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gradebook-score{display:grid;place-items:center;border-right:1px solid #edf2f8;font-size:9.5px;font-weight:780;font-variant-numeric:tabular-nums}.gradebook-score.empty{color:#b4bdca}.gradebook-key{margin-top:9px;padding:11px 12px;border-radius:16px}.gradebook-key strong{font-size:10px}.gradebook-key p{margin:4px 0 0;color:#75849a;font-size:7.5px;line-height:1.35}.page-flip-in{transform-origin:left center;animation:adminPageFlip .34s cubic-bezier(.22,.8,.34,1)}@keyframes adminPageFlip{0%{opacity:.2;transform:perspective(800px) rotateY(18deg) translateX(8px)}100%{opacity:1;transform:none}}

/* Admin Plus Points */
.admin-plus-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:13px 0}.admin-plus-tabs button{display:grid;grid-template-columns:16px 1fr;grid-template-rows:auto auto;align-items:center;column-gap:5px;padding:9px;border-radius:15px;background:#fff;color:#65758d;text-align:left;border:1px solid #e1eaf5}.admin-plus-tabs .gem-shape{grid-row:1/3;width:15px;height:17px}.admin-plus-tabs button:nth-child(2) .gem-shape{background:linear-gradient(145deg,#ffc4df,#ee6aa6 55%,#ad2c66)}.admin-plus-tabs button:nth-child(3) .gem-shape{background:linear-gradient(145deg,#d7dce1,#929aa4 55%,#606872)}.admin-plus-tabs button{font-size:7.5px;font-weight:780}.admin-plus-tabs b{font-size:11px}.admin-plus-create-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:11px}.admin-feature-card{display:grid;grid-template-columns:36px minmax(0,1fr) 14px;gap:8px;align-items:center;padding:11px;border-radius:17px;background:#fff;color:#1c314f;text-align:left;border:1px solid #e1eaf5}.admin-feature-card>span:first-child{width:36px;height:36px;border-radius:12px;display:grid;place-items:center;background:#e9f2ff;color:#1762cd}.admin-feature-card.qr>span:first-child{background:#e8f6f3;color:#247a67}.admin-feature-card svg{width:17px;height:17px}.admin-feature-card strong{display:block;font-size:9.5px}.admin-feature-card small{display:block;margin-top:3px;color:#7c899d;font-size:7.5px;line-height:1.25}.admin-quick-award-v17{padding:14px;border-radius:20px}.admin-quick-award-v17 .admin-point-presets{margin-bottom:10px}.admin-award-roster{display:grid;max-height:430px;overflow:auto;margin-top:10px;border-top:1px solid #e9eff7}.admin-award-roster>article{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 2px;border-bottom:1px solid #edf2f8}.admin-award-roster>article>button{width:42px;height:34px;border-radius:11px;background:#e8f1ff;color:#145ec9;font-size:9px;font-weight:900}.admin-award-roster>article.awarded>button{background:#e5f4eb;color:#2e7b53}.admin-award-roster.modal-roster{max-height:58dvh}

/* Admin Digital ID + Profile */
.admin-id-gate{margin-top:16px;padding:22px;border-radius:24px;text-align:center}.admin-id-gate>img{width:72px;height:72px;object-fit:contain;margin-bottom:12px}.admin-id-gate h2{margin:4px 0 14px;font-size:22px;color:#1e416e}.admin-id-labels{display:grid;grid-template-columns:1fr 1fr;gap:8px;text-align:left}.admin-id-labels span{padding:10px;border-radius:13px;background:#f0f5fb}.admin-id-labels small{display:block;color:#72829b;font-size:7px}.admin-id-labels strong{display:block;margin-top:3px;font-size:9px}.admin-id-gate p{margin:15px 0 0;color:#718099;font-size:9.5px;line-height:1.45}.admin-id-missing{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;margin-top:12px}.admin-id-missing span{display:flex;gap:4px;align-items:center;padding:6px 8px;border-radius:10px;background:#fff0e6;color:#a9622b;font-size:7.5px;font-weight:780}.admin-id-missing svg{width:12px;height:12px}.admin-profile-hero{display:flex;align-items:center;gap:13px;padding:15px}.admin-profile-hero>img{width:72px;height:72px;border-radius:22px;object-fit:cover;background:#fff;padding:3px}.admin-profile-hero h1{margin:5px 0 0;font-size:20px;color:#1e416e}.admin-profile-hero p{margin:5px 0 0;color:#72819a;font-size:9px}.admin-detail-row{display:flex;justify-content:space-between;gap:14px;padding:12px;border-bottom:1px solid #edf2f8}.admin-detail-row:last-child{border-bottom:0}.admin-detail-row span{font-size:9px;color:#78869a}.admin-detail-row strong{font-size:9px;text-align:right}.admin-signout-row{width:100%;display:flex;align-items:center;gap:9px;padding:13px;background:transparent;color:#be4051;font-size:10px;font-weight:800;border-top:1px solid #edf2f8}.admin-signout-row svg{width:17px;height:17px}

/* Admin modals */
.admin-menu-sheet,.admin-activity-dialog,.admin-activity-award-panel{width:100%;max-width:600px;max-height:90dvh;overflow:auto;border-radius:28px 28px 0 0;background:#f8fbff;padding:17px 16px calc(18px + var(--safe-bottom));box-shadow:0 -18px 60px rgba(19,48,89,.25)}.admin-menu-sheet>button:not(.overlay-head button){width:100%;display:grid;grid-template-columns:28px minmax(0,1fr) 16px;gap:9px;align-items:center;padding:12px;background:transparent;color:#263c5c;text-align:left;border-bottom:1px solid #e6edf7}.admin-menu-sheet>button svg{width:17px;height:17px}.admin-menu-sheet>button span{font-size:10px;font-weight:800}.admin-activity-dialog label{display:block;margin:10px 0}.admin-activity-dialog label>span{display:block;margin-bottom:5px;color:#657791;font-size:8.5px;font-weight:800}.admin-activity-dialog input,.admin-activity-dialog select{width:100%;height:44px;border:1px solid #dce7f4;background:#fff;border-radius:13px;padding:0 12px;color:#213754;font-size:11px;outline:none}.admin-point-presets.dialog{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.admin-point-presets.dialog label{margin:0}.admin-point-presets.dialog input{display:none}.admin-point-presets.dialog span{display:grid;height:38px;place-items:center;border-radius:12px;background:#e9eff7;color:#55708f;font-size:10px}.admin-point-presets.dialog input:checked+span{background:#1b65d0;color:#fff}.activity-mode-switch{display:grid;grid-template-columns:1fr 1fr;gap:5px;padding:4px;border-radius:14px;background:#e8eef6;margin-bottom:10px}.activity-mode-switch button{padding:9px;border-radius:11px;background:transparent;color:#657691;font-size:9px;font-weight:800}.activity-mode-switch button.active{background:#fff;color:#1761ca}.activity-footer{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:12px}.secondary.danger{color:#b64251;background:#fdebed}.qr-scanner-shell{position:relative;min-height:430px;border-radius:22px;overflow:hidden;background:#121820;color:#fff;padding:14px;display:flex;flex-direction:column;justify-content:flex-end}.qr-scanner-shell video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.88}.scanner-frame{position:absolute;left:15%;right:15%;top:20%;aspect-ratio:1;border:2px solid rgba(255,255,255,.9);border-radius:24px;box-shadow:0 0 0 999px rgba(4,11,20,.33)}.qr-scanner-shell strong,.qr-scanner-shell p,.qr-scanner-shell button{position:relative;z-index:2}.qr-scanner-shell strong{font-size:12px}.qr-scanner-shell p{margin:5px 0 12px;font-size:9px;line-height:1.4;opacity:.78}

.admin-bottom-nav{position:fixed;z-index:50;left:12px;right:12px;bottom:calc(9px + var(--safe-bottom));height:78px;display:grid;grid-template-columns:repeat(5,1fr);padding:6px;border-radius:25px;background:rgba(255,255,255,.94);border:1px solid rgba(255,255,255,.98);box-shadow:0 14px 40px rgba(33,72,126,.16);backdrop-filter:blur(28px) saturate(170%);-webkit-backdrop-filter:blur(28px) saturate(170%)}.admin-bottom-nav button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;border-radius:18px;background:transparent;color:#7c8ca5;font-size:8px;font-weight:800}.admin-bottom-nav button svg{width:21px;height:21px}.admin-bottom-nav button.active{background:#e9f2ff;color:#155fc9}.admin-bottom-nav .admin-nav-id.active{background:linear-gradient(135deg,#0a55cc,#1678f1);color:#fff}

@media(max-width:390px){
  .home-hero-v158 .home-brand-mark{max-width:116px}.home-hero-v158 .home-brand-mark img{width:38px;height:38px}.home-hero-v158 .home-brand-mark strong{font-size:18px}.home-hero-v158 .icon-btn{width:36px;height:36px}.home-hero-v158 .hero-actions{gap:4px}.home-wallet-strip{top:calc(var(--safe-top) + 55px);right:14px}.wallet-pill{min-width:55px;padding:5px}.wallet-pill small{font-size:7px}.shop-product-card{grid-template-columns:64px minmax(0,1fr) auto}.shop-product-art{width:64px;height:64px}.admin-status-grid{gap:5px}.admin-status-card{padding-left:4px;padding-right:4px}.admin-plus-create-grid{grid-template-columns:1fr}.admin-brand-v17 span{max-width:120px}.admin-top-actions button{width:36px;height:36px}
}
@media(min-width:700px){
  .admin-bottom-nav{left:50%;right:auto;width:610px;transform:translateX(-50%)}.home-wallet-strip{right:calc(50% - 340px)}
}
.admin-plus-tabs button.active{box-shadow:0 5px 16px rgba(33,71,125,.11);transform:translateY(-1px)}
.admin-plus-tabs button.calc.active{background:#e7f0ff;color:#175ec8;border-color:#bdd5ff}
.admin-plus-tabs button.phys.active{background:#ffe9f2;color:#af3a70;border-color:#ffc7dc}
.admin-plus-tabs button.unc.active{background:#eef0f3;color:#5f6670;border-color:#d7dce3}


/* ========================================================================
   v1.7.1 — Student Shop art direction + contextual secure learner QR
   Inspiration distilled from mobile game shop conventions: strong currency
   hierarchy, visual product cards, clear locked/available states, and compact
   thumb-friendly controls. All artwork below is original EnlightN vector art.
   ======================================================================== */

/* Gems belong in the Shop only; Home no longer renders .home-wallet-strip. */

.shop-overlay{
  --shop-accent:#236bd8;
  --shop-accent-2:#73b1ff;
  --shop-soft:#eaf3ff;
  --shop-ink:#17385e;
  background:
    radial-gradient(circle at 90% 8%,rgba(80,143,237,.13),transparent 27%),
    linear-gradient(180deg,#fbfdff 0,#f4f7fb 58%,#f8f8fa 100%);
}
.shop-overlay.shop-theme-phys{
  --shop-accent:#c43f7a;
  --shop-accent-2:#f38ab7;
  --shop-soft:#fff0f6;
  --shop-ink:#6e2448;
  background:
    radial-gradient(circle at 90% 8%,rgba(228,92,150,.12),transparent 27%),
    linear-gradient(180deg,#fffafd 0,#fbf5f8 58%,#f8f8fa 100%);
}
.shop-overlay-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
.shop-title-cluster{display:flex;align-items:center;gap:10px;min-width:0}.shop-title-cluster>div{min-width:0}.shop-title-cluster h2{margin:2px 0 0;font-size:21px;line-height:1.05;letter-spacing:-.025em}.shop-title-icon{width:42px;height:42px;border-radius:15px;display:grid;place-items:center;color:#fff;background:linear-gradient(145deg,var(--shop-accent-2),var(--shop-accent));box-shadow:0 8px 20px color-mix(in srgb,var(--shop-accent) 24%,transparent)}.shop-title-icon svg{width:23px;height:23px;stroke-width:1.8}
.shop-wallet-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:2px 0 12px}.shop-gem{display:flex;align-items:center;gap:7px;padding:8px 9px;border-radius:17px;background:rgba(255,255,255,.92);border:1px solid rgba(37,57,85,.08);box-shadow:0 4px 16px rgba(32,47,72,.045);min-width:0}.shop-gem-icon{width:28px;height:28px;object-fit:contain;flex:0 0 auto;filter:drop-shadow(0 5px 7px rgba(25,49,90,.14))}.shop-gem>div{min-width:0}.shop-gem b{display:block;font-size:13px;line-height:1;font-variant-numeric:tabular-nums}.shop-gem small{display:block;margin-top:3px;color:#858a92;font-size:7.7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.shop-tabs{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;padding:4px;border-radius:17px;background:#e9edf3;margin-bottom:10px}.shop-tabs button{display:flex;align-items:center;justify-content:center;gap:7px;min-height:43px;padding:7px 10px;border-radius:13px;background:transparent;color:#727b88;font-size:9px;font-weight:820}.shop-tabs button img{width:25px;height:25px;object-fit:contain;filter:saturate(.72);opacity:.72}.shop-tabs button.active{background:#fff;color:var(--shop-accent);box-shadow:0 3px 12px rgba(32,48,71,.1)}.shop-tabs button.active img{filter:none;opacity:1}
.shop-subject-hero{position:relative;overflow:hidden;min-height:150px;display:grid;grid-template-columns:minmax(0,1fr) 112px;align-items:center;gap:6px;padding:17px 13px 15px 17px;border-radius:25px;background:linear-gradient(132deg,var(--shop-accent),color-mix(in srgb,var(--shop-accent) 82%,#152849));color:#fff;box-shadow:0 13px 30px color-mix(in srgb,var(--shop-accent) 18%,transparent);margin-bottom:11px}.shop-subject-hero::before{content:"";position:absolute;inset:auto -45px -85px auto;width:230px;height:230px;border-radius:50%;border:34px solid rgba(255,255,255,.08)}.shop-subject-hero::after{content:"";position:absolute;left:-38px;top:-58px;width:150px;height:150px;border-radius:50%;background:rgba(255,255,255,.07)}.shop-subject-hero-copy{position:relative;z-index:2;min-width:0}.shop-hero-eyebrow{display:block;font-size:7px;font-weight:900;letter-spacing:.12em;opacity:.72}.shop-subject-hero h3{margin:5px 0 4px;font-size:19px;line-height:1.05}.shop-subject-hero p{max-width:230px;margin:0;font-size:8.3px;line-height:1.38;opacity:.82}.shop-subject-crest{position:relative;z-index:2;width:108px;height:108px;object-fit:contain;filter:drop-shadow(0 12px 20px rgba(3,13,31,.2))}.shop-hero-balance{display:inline-grid;grid-template-columns:23px auto auto;gap:5px;align-items:center;margin-top:11px;padding:6px 9px 6px 6px;border-radius:14px;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.2);backdrop-filter:blur(10px)}.shop-hero-balance img{width:23px;height:23px}.shop-hero-balance strong{font-size:13px}.shop-hero-balance span{font-size:7.5px;opacity:.78}
.convert-card{display:grid;grid-template-columns:74px minmax(0,1fr) auto;grid-template-areas:"visual copy step" "action action action";gap:9px;align-items:center;padding:12px;border-radius:21px;background:#fff;border:1px solid rgba(40,56,79,.09);box-shadow:0 5px 18px rgba(34,49,72,.04);margin-bottom:14px}.convert-visual{grid-area:visual;display:flex;align-items:center;justify-content:center;gap:3px}.convert-visual img{width:28px;height:28px;filter:drop-shadow(0 5px 7px rgba(31,50,78,.13))}.convert-visual span{font-size:13px;color:#9aa0aa;font-weight:900}.convert-copy{grid-area:copy;min-width:0}.convert-copy strong{display:block;margin-top:2px;font-size:10.7px;line-height:1.16}.convert-copy small{display:block;margin-top:3px;color:#838790;font-size:7.5px;line-height:1.3}.convert-card>.shop-stepper{grid-area:step}.convert-action{grid-area:action;min-height:38px;margin:0!important;background:var(--shop-soft)!important;color:var(--shop-accent)!important}
.shop-section-heading{display:flex;justify-content:space-between;align-items:end;gap:10px;margin:4px 2px 9px}.shop-section-heading span{display:block;color:var(--shop-accent);font-size:6.8px;font-weight:900;letter-spacing:.12em}.shop-section-heading h3{margin:2px 0 0;font-size:15px}.shop-section-heading>small{font-size:7.5px;color:#8d929a}
.shop-product-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.shop-product-card{position:relative;display:flex;flex-direction:column;gap:0;min-width:0;overflow:hidden;padding:0;border-radius:22px;background:#fff;border:1px solid rgba(39,55,78,.09);box-shadow:0 8px 24px rgba(38,53,75,.055)}.shop-product-card.disabled{opacity:.58;filter:saturate(.72)}.shop-product-visual{position:relative;display:grid;place-items:center;height:132px;overflow:hidden;background:linear-gradient(160deg,var(--shop-soft),#fff 78%)}.shop-product-visual::after{content:"";position:absolute;inset:auto -25px -53px auto;width:120px;height:120px;border-radius:50%;border:20px solid color-mix(in srgb,var(--shop-accent) 8%,transparent)}.shop-product-art-img{position:relative;z-index:1;width:112px;height:112px;object-fit:contain;filter:drop-shadow(0 10px 14px rgba(35,49,75,.15));transition:transform .22s ease}.shop-product-card:not(.disabled):active .shop-product-art-img{transform:scale(.96)}.shop-product-tag{position:absolute;z-index:2;left:9px;top:9px;padding:4px 6px;border-radius:8px;background:rgba(255,255,255,.9);color:var(--shop-accent);font-size:6.4px;font-weight:900;letter-spacing:.05em;text-transform:uppercase;box-shadow:0 3px 9px rgba(20,36,62,.07)}.shop-owned-badge{position:absolute;z-index:2;right:9px;top:9px;padding:4px 6px;border-radius:8px;background:#dff3e8;color:#27704c;font-size:6.4px;font-weight:900;text-transform:uppercase}.shop-product-copy{min-width:0;display:flex;flex-direction:column;padding:10px 10px 7px;flex:1}.shop-product-copy>span{display:block;color:var(--shop-accent);font-size:6.6px;font-weight:900;text-transform:uppercase;letter-spacing:.07em}.shop-product-copy>strong{display:block;margin-top:3px;font-size:10.5px;line-height:1.13;min-height:24px}.shop-product-copy>p{margin:5px 0 0;color:#838791;font-size:7.15px;line-height:1.3;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.shop-product-copy>small{display:block;margin-top:auto;padding-top:6px;color:#667fa6;font-size:7.2px;font-weight:760;line-height:1.2}.product-stepper{margin:0 10px 7px;justify-self:auto}.shop-buy{width:calc(100% - 18px);min-width:0;height:38px;margin:0 9px 9px;padding:0 10px;border-radius:13px;background:linear-gradient(135deg,var(--shop-accent-2),var(--shop-accent));color:#fff;display:flex;align-items:center;justify-content:center;gap:6px;font-size:10px;font-weight:900;box-shadow:0 6px 14px color-mix(in srgb,var(--shop-accent) 20%,transparent)}.shop-buy img{width:19px;height:19px;object-fit:contain;filter:drop-shadow(0 3px 4px rgba(0,0,0,.14))}.shop-buy:disabled{background:#d9dde3;color:#90969e;box-shadow:none}.shop-footnote{margin:11px 4px 0;color:#8b8f96;font-size:7.2px;line-height:1.35;text-align:center}
.shop-stepper{display:flex;align-items:center;gap:5px}.shop-stepper button{width:28px;height:28px;border-radius:10px;background:#eef1f5;color:#4f5660;font-size:16px}.shop-stepper b{min-width:21px;text-align:center;font-size:10px}

/* Secure learner QR — identity-pass treatment, with Engineering seal centered
   over an H-error-correction QR returned by the Edge Function. */
.qr-overlay{max-width:520px;background:linear-gradient(180deg,#fbfbfb,#f4f1ee)}.learner-qr-pass{position:relative;overflow:hidden;padding:13px;border-radius:26px;background:linear-gradient(160deg,#fff,#f8f6f4);border:1px solid #e8e3df;box-shadow:0 18px 48px rgba(35,29,28,.1)}.learner-qr-pass::before{content:"";position:absolute;left:-80px;top:-90px;width:220px;height:220px;border-radius:50%;background:radial-gradient(circle,#f2dfe1 0,rgba(242,223,225,0) 68%);pointer-events:none}.learner-qr-pass-top{position:relative;z-index:2;display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:9px;align-items:center;padding:3px 3px 10px}.learner-qr-pass-top>img{width:42px;height:42px;object-fit:contain}.learner-qr-pass-top span{display:block;color:#8b2026;font-size:7px;font-weight:900;letter-spacing:.12em}.learner-qr-pass-top strong{display:block;margin-top:2px;font-size:10px}.learner-qr-pass-top i{display:flex;align-items:center;gap:4px;padding:5px 7px;border-radius:10px;background:#e8f5ec;color:#2c7651;font-size:6.6px;font-style:normal;font-weight:900}.learner-qr-pass-top i b{width:6px;height:6px;border-radius:50%;background:#32a36a;box-shadow:0 0 0 3px rgba(50,163,106,.12)}
.qr-identity{position:relative;z-index:2;display:flex;align-items:center;gap:10px;padding:10px;border-radius:17px;background:#f4f1ef;border:1px solid rgba(91,71,69,.06);margin-bottom:10px}.qr-avatar{width:48px;height:48px;border-radius:16px;box-shadow:none;border:2px solid #fff}.qr-identity>div{min-width:0}.qr-identity>div>span{display:block;color:#6f926f;font-size:6.6px;font-weight:900;text-transform:uppercase;letter-spacing:.08em}.qr-identity strong{display:block;margin-top:2px;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.qr-identity small{display:block;margin-top:3px;color:#80777a;font-size:7.4px;line-height:1.3}
.qr-context-label{text-align:center;margin:9px 0 5px}.qr-context-label span{display:block;color:#822027;font-size:7.2px;font-weight:900;letter-spacing:.13em}.qr-context-label small{display:block;margin-top:2px;color:#958b8e;font-size:7px}.qr-code-frame{position:relative;width:min(80vw,330px);aspect-ratio:1;margin:5px auto 8px;padding:15px;border-radius:28px;background:#fff;border:1px solid #e7e1dc;box-shadow:0 12px 34px rgba(27,23,24,.08);display:grid;place-items:center}.qr-code-surface{width:100%;height:100%;display:grid;place-items:center}.qr-code-surface svg{width:100%;height:100%;display:block}.qr-center-logo{position:absolute;left:50%;top:50%;width:18%;height:18%;transform:translate(-50%,-50%);display:grid;place-items:center;border-radius:50%;background:#fff;padding:4px;box-shadow:0 0 0 4px #fff,0 5px 16px rgba(55,40,43,.16);z-index:5}.qr-center-logo img{width:100%;height:100%;object-fit:contain;border-radius:50%}.qr-context-footer{text-align:center;padding:0 8px 8px}.qr-context-footer strong{display:block;font-size:9.5px}.qr-context-footer span{display:block;margin-top:2px;color:#8c8285;font-size:7.2px}.qr-security-note{max-width:360px;margin:0 auto 10px;text-align:center;color:#786f72;font-size:8px;line-height:1.4}.qr-expiry{display:flex;justify-content:space-between;align-items:center;padding:10px 11px;border-radius:14px;background:#f0ece9;margin-bottom:8px}.qr-expiry span{display:flex;align-items:center;gap:6px;font-size:7.8px;color:#817679}.qr-expiry strong{font-size:9px}.qr-expiry-dot{width:7px;height:7px;border-radius:50%;background:#b42d38;box-shadow:0 0 0 3px rgba(180,45,56,.12)}.qr-refresh-button{width:100%;display:flex;align-items:center;justify-content:center;gap:7px}.qr-refresh-button svg{width:15px;height:15px}

@media(max-width:390px){
  .shop-product-visual{height:118px}.shop-product-art-img{width:99px;height:99px}.shop-product-copy>strong{font-size:9.8px}.shop-subject-hero{grid-template-columns:minmax(0,1fr) 96px}.shop-subject-crest{width:94px;height:94px}.convert-card{grid-template-columns:65px minmax(0,1fr) auto}.qr-code-frame{width:min(78vw,310px)}
}

/* ========================================================================
   v1.7.2 — Native scanner + exact Digital ID export
   ======================================================================== */
.digital-id-action-row{width:min(100%,430px);margin:15px auto 0;display:flex;align-items:center;justify-content:center;gap:9px;flex-wrap:wrap}
.digital-id-action-row .digital-id-controls{margin:0}
.digital-id-save-png{height:47px;padding:0 16px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;gap:7px;background:#fff;color:var(--wine);border:1px solid rgba(125,23,28,.10);box-shadow:0 8px 22px rgba(50,30,33,.08);font-size:10.5px;font-weight:850;white-space:nowrap}
.digital-id-save-png svg{width:16px;height:16px}.digital-id-save-png:active{transform:translateY(1px)}.digital-id-save-png:disabled{opacity:.58;pointer-events:none}
.digital-id-save-png.is-saving span{font-size:0}.digital-id-save-png.is-saving span::after{content:'Rendering…';font-size:10.5px}
@media(max-width:360px){.digital-id-save-png{width:100%;max-width:250px}.digital-id-action-row{gap:7px}}

.qr-scanner-shell .scanner-native-note{margin-top:8px;color:var(--muted);font-size:9px;line-height:1.4}

/* ========================================================================
   v1.7.4 — Production adviser ID + Safari-safe front/back rendering
   The adviser ID mirrors the approved standalone v4 implementation:
   explicit face visibility (not WebKit backface exposure), dynamic gloss,
   FAEMHS foil hologram, and downloadable current-side PNG.
   ======================================================================== */
.admin-id-ready-v173{padding-bottom:34px}
.admin-id-identity{max-width:430px;margin:0 auto 14px;display:grid;grid-template-columns:62px minmax(0,1fr);align-items:center;gap:13px;padding:12px 14px;border-radius:20px;background:rgba(255,255,255,.76);border:1px solid rgba(255,255,255,.9);box-shadow:0 10px 30px rgba(27,62,111,.08)}
.admin-id-identity>img{width:58px;height:58px;border-radius:19px;object-fit:cover;object-position:center 18%;background:#fff;border:2px solid #fff;box-shadow:0 5px 16px rgba(40,77,124,.11)}
.admin-id-identity>div{min-width:0}.admin-id-identity h2{margin:6px 0 2px;font-size:18px;line-height:1.06;color:#173d6c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.admin-id-identity p{margin:0;color:#71819a;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.admin-verified-pill{display:inline-flex;align-items:center;gap:4px;padding:4px 7px;border-radius:999px;background:#e8f3ec;color:#286342;font-size:8.4px;font-weight:850}.admin-verified-pill svg{width:11px;height:11px}

.admin-id-stage-v173{--aid-scale:1;--aid-tilt-x:-.7deg;--aid-tilt-y:1.1deg;--aid-shine-x:35%;--aid-gx:.18;--aid-gy:-.08;--aid-gloss-angle:124deg;width:min(100%,348px);aspect-ratio:1287/2048;margin:0 auto;perspective:1600px;filter:drop-shadow(0 24px 25px rgba(31,52,79,.18));touch-action:pan-y;position:relative}
.admin-id-card-v173{position:absolute;inset:0;transform-style:preserve-3d;-webkit-transform-style:preserve-3d;transform:rotateX(var(--aid-tilt-x)) rotateY(var(--aid-tilt-y));transition:transform .32s cubic-bezier(.22,.78,.2,1);cursor:pointer;outline:none;will-change:transform}
.admin-id-face-v173{position:absolute;inset:0;border-radius:16px;overflow:hidden;background:#fff;border:1px solid rgba(48,66,91,.10);box-shadow:inset 0 0 0 1px rgba(255,255,255,.52);transform-style:preserve-3d;-webkit-transform-style:preserve-3d;transition:transform .68s cubic-bezier(.22,.78,.2,1),opacity .20s ease,visibility 0s linear .34s;will-change:transform,opacity;transform-origin:center center}
/* Safari-safe switching: the hidden face is actually hidden, so Safari can
   never expose the mirrored reverse of the front artwork as the back. */
.admin-id-front-v173{transform:rotateY(0deg);opacity:1;visibility:visible}
.admin-id-back-v173{transform:rotateY(180deg);opacity:0;visibility:hidden}
.admin-id-card-v173.is-back-v174 .admin-id-front-v173{transform:rotateY(-180deg);opacity:0;visibility:hidden}
.admin-id-card-v173.is-back-v174 .admin-id-back-v173{transform:rotateY(0deg);opacity:1;visibility:visible;transition:transform .68s cubic-bezier(.22,.78,.2,1),opacity .20s ease .18s,visibility 0s linear 0s}
.admin-id-fixed-bg-v173{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;display:block;z-index:1}
.admin-id-design-v173{position:absolute;left:0;top:0;width:643.5px;height:1024px;transform-origin:top left;transform:scale(var(--aid-scale));pointer-events:none;z-index:3}
.admin-id-photo-v173{position:absolute;left:279.3419655px;top:504.92586px;width:388.952635px;height:519.02569px;object-fit:fill;display:block;z-index:2;pointer-events:none}
.admin-id-position-exact-v174{position:absolute;left:570px;top:213.5px;width:41px;height:333.5px;object-fit:fill;display:block;z-index:4;pointer-events:none}
.admin-id-position-v173{position:absolute;left:590.75px;top:380.25px;width:333.5px;height:48px;transform:translate(-50%,-50%) rotate(-90deg);transform-origin:center;display:flex;align-items:center;justify-content:center;font-family:"Poppins","Avenir Next","Helvetica Neue",Arial,sans-serif;font-size:36.9333px;font-weight:500;line-height:1;letter-spacing:0;color:#DC9FA2;white-space:nowrap;text-align:center;z-index:4;text-rendering:geometricPrecision;-webkit-font-smoothing:antialiased}

.admin-id-hologram-v173{--hx:0;--hy:0;--hangle:18deg;position:absolute;left:534.15px;top:914.65px;width:92.35px;height:92.35px;z-index:7;border-radius:50%;isolation:isolate;opacity:.59;filter:drop-shadow(0 1px 1.5px rgba(38,61,92,.22))}
.admin-id-hologram-v173 img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:.74;filter:grayscale(.78) saturate(.5) contrast(1.15) brightness(.91)}
.admin-id-hologram-v173::before{content:"";position:absolute;inset:0;border-radius:50%;z-index:2;-webkit-mask:url('assets/admin-id/faemhs-hologram.png') center/contain no-repeat;mask:url('assets/admin-id/faemhs-hologram.png') center/contain no-repeat;background:linear-gradient(calc(var(--hangle) + 58deg),rgba(48,54,63,.27),rgba(219,226,232,.58) 18%,rgba(96,105,116,.42) 34%,rgba(229,235,239,.49) 49%,rgba(77,85,96,.38) 66%,rgba(204,213,220,.52) 83%,rgba(49,56,65,.29)),repeating-linear-gradient(calc(var(--hangle) + 14deg),rgba(255,61,179,.52) 0 2px,rgba(119,87,255,.47) 2px 4px,rgba(31,210,255,.55) 4px 6px,rgba(72,247,174,.44) 6px 8px,rgba(255,220,72,.49) 8px 10px,rgba(255,98,65,.45) 10px 12px),conic-gradient(from calc(var(--hangle) - 38deg),rgba(255,78,194,.54),rgba(113,100,255,.54),rgba(33,218,255,.60),rgba(77,243,174,.50),rgba(245,214,91,.54),rgba(255,108,80,.49),rgba(255,78,194,.54));background-size:100% 100%,175% 175%,132% 132%;background-position:center,calc(50% + (var(--hx) * 20%)) calc(50% + (var(--hy) * 18%)),calc(50% - (var(--hx) * 12%)) calc(50% - (var(--hy) * 12%));background-blend-mode:soft-light,screen,color;mix-blend-mode:screen;opacity:.70;filter:saturate(1.55) contrast(1.08)}
.admin-id-hologram-v173::after{content:"";position:absolute;inset:3px;border-radius:50%;z-index:3;-webkit-mask:url('assets/admin-id/faemhs-hologram.png') center/contain no-repeat;mask:url('assets/admin-id/faemhs-hologram.png') center/contain no-repeat;background:linear-gradient(118deg,transparent 0 35%,rgba(205,219,229,.08) 39%,rgba(225,235,241,.34) 46%,rgba(121,187,216,.18) 51%,rgba(209,127,194,.13) 56%,transparent 64% 100%),repeating-radial-gradient(circle at 38% 32%,rgba(255,255,255,.10) 0 1px,rgba(55,67,79,.08) 1px 2px,transparent 2px 4px);background-size:235% 100%,100% 100%;background-position:calc(135% - (var(--hx) * 135%)) center,center;mix-blend-mode:screen;opacity:.35;box-shadow:inset 0 0 3.5px rgba(255,255,255,.16),inset 0 0 0 .9px rgba(182,210,225,.48)}

/* Student-style laminate/gloss copied into the adviser ID and made more
   dimensional with pointer-driven specular position. */
.admin-id-laminate-v173{position:absolute;inset:0;z-index:8;pointer-events:none;border-radius:inherit;mix-blend-mode:screen;opacity:.78;overflow:hidden}
.admin-id-laminate-v173::before{content:"";position:absolute;inset:-4%;background:linear-gradient(var(--aid-gloss-angle),transparent 10%,rgba(255,255,255,.02) 20%,rgba(255,255,255,.16) 31%,rgba(255,255,255,.34) 39%,rgba(187,224,255,.18) 44%,rgba(255,255,255,.06) 51%,transparent 62%);transform:translate3d(calc(var(--aid-gx)*14%),calc(var(--aid-gy)*11%),0);opacity:.65}
.admin-id-laminate-v173::after{content:"";position:absolute;inset:0;background:radial-gradient(circle at calc(55% + var(--aid-gx)*35%) calc(20% + var(--aid-gy)*18%),rgba(255,255,255,.28),rgba(255,255,255,.12) 10%,rgba(255,255,255,.03) 20%,transparent 36%),linear-gradient(180deg,rgba(255,255,255,.11),rgba(255,255,255,.02) 12%,transparent 28%,transparent 72%,rgba(255,255,255,.05) 100%);opacity:.58}
.admin-id-back-v173 .admin-id-laminate-v173{opacity:.88}
.admin-id-back-v173 .admin-id-laminate-v173::before{background:linear-gradient(var(--aid-gloss-angle),transparent 0%,rgba(255,255,255,.04) 16%,rgba(255,255,255,.21) 31%,rgba(255,255,255,.38) 40%,rgba(255,255,255,.10) 49%,transparent 59%)}
.admin-id-back-v173 .admin-id-laminate-v173::after{background:radial-gradient(circle at calc(52% + var(--aid-gx)*34%) calc(16% + var(--aid-gy)*16%),rgba(255,255,255,.32),rgba(255,255,255,.10) 11%,transparent 28%),linear-gradient(180deg,rgba(255,255,255,.09),transparent 20%,transparent 82%,rgba(255,255,255,.04) 100%)}
.admin-id-rim-v173{position:absolute;inset:0;z-index:9;pointer-events:none;border-radius:inherit;box-shadow:inset 1px 1px 0 rgba(255,255,255,.62),inset -1px -1px 0 rgba(0,0,0,.07),2px 3px 0 rgba(166,176,188,.17)}

.admin-id-action-row-v173{width:min(100%,430px);margin:15px auto 0;display:flex;align-items:center;justify-content:center;gap:9px;flex-wrap:wrap}
.admin-id-controls-v173{display:flex;gap:5px;padding:5px;border-radius:999px;background:rgba(255,255,255,.84);border:1px solid rgba(42,75,119,.08);box-shadow:0 8px 22px rgba(37,72,117,.09)}
.admin-id-controls-v173 button{min-width:66px;padding:9px 13px;border-radius:999px;background:transparent;color:#71819a;font-size:11px;font-weight:800}.admin-id-controls-v173 button.active{background:#1f5fa6;color:#fff}.admin-id-controls-v173 .admin-id-flip-v173{min-width:36px;width:36px;padding:0;color:#1f5fa6;background:#eaf2fb}.admin-id-controls-v173 svg{width:16px;height:16px}
.admin-id-save-v173{height:47px;padding:0 16px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;gap:7px;background:#fff;color:#1f5fa6;border:1px solid rgba(31,95,166,.12);box-shadow:0 8px 22px rgba(37,72,117,.09);font-size:10.5px;font-weight:850;white-space:nowrap}.admin-id-save-v173 svg{width:16px;height:16px}.admin-id-save-v173:active{transform:translateY(1px)}.admin-id-save-v173:disabled{opacity:.58;pointer-events:none}.admin-id-save-v173.is-saving span{font-size:0}.admin-id-save-v173.is-saving span::after{content:'Rendering…';font-size:10.5px}
.admin-id-hint-v173{text-align:center;max-width:430px;margin:9px auto 0;color:#71819a;font-size:9.7px;line-height:1.4}
.admin-profile-photo-v173{object-position:center 18%!important}.admin-editable-row button{display:inline-flex;align-items:center;justify-content:flex-end;gap:7px;background:transparent;color:#1d4675}.admin-editable-row button svg{width:14px;height:14px}.admin-profile-note-v173{margin:9px 3px 18px;color:#71819a;font-size:9px;line-height:1.4}
@media(max-width:360px){.admin-id-save-v173{width:100%;max-width:250px}.admin-id-action-row-v173{gap:7px}}
@media(prefers-reduced-motion:reduce){.admin-id-card-v173,.admin-id-face-v173{transition:none!important}}

/* ========================================================================
   v1.7.5 — visual/content restoration
   - Preserve the v1.6.4 student Home hierarchy.
   - Schedule status is contextual information above the academic overview;
     it never replaces the grade/GWA tile.
   - Admin typography follows the larger client visual scale.
   - Admin Digital ID is the elevated center navigation action.
   ======================================================================== */

/* Student Home: schedule information is additive, not a replacement tile. */
.home-schedule-info{
  width:100%;min-height:72px;margin:0 0 11px;padding:11px 12px;
  display:grid;grid-template-columns:46px minmax(0,1fr) auto 16px;gap:10px;align-items:center;
  border-radius:20px;background:linear-gradient(145deg,rgba(255,255,255,.98),rgba(249,247,245,.96));
  border:1px solid rgba(77,55,59,.07);box-shadow:0 6px 18px rgba(39,30,33,.055);
  color:#2c2527;text-align:left;
}
.home-schedule-info.is-live{background:linear-gradient(145deg,#fff,#fff6f5);border-color:rgba(125,23,28,.10)}
.home-schedule-info-icon{width:46px;height:46px;border-radius:15px;display:grid;place-items:center;background:#f1edeb;color:var(--wine);overflow:hidden}
.home-schedule-info-icon .subject-vicon,.home-schedule-info-icon>svg{width:46px;height:46px}
.home-schedule-info-copy{min-width:0;display:block}
.home-schedule-info-copy small{display:block;color:var(--wine);font-size:8.5px;line-height:1;text-transform:uppercase;letter-spacing:.09em;font-weight:850}
.home-schedule-info-copy strong{display:block;margin-top:5px;font-size:14px;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.home-schedule-info-copy em{display:block;margin-top:4px;color:#81777a;font-size:9.5px;line-height:1.15;font-style:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.home-schedule-info-meta{min-width:92px;text-align:right}
.home-schedule-info-meta b{display:block;color:#4b4245;font-size:10px;line-height:1.15;font-weight:850}
.home-schedule-info-meta small{display:block;margin-top:4px;color:#978d90;font-size:8px;line-height:1.15}
.home-schedule-info-chevron svg{width:16px;height:16px;color:#b1a7aa}

/* Admin: restore the client-style type scale rather than miniature dashboard text. */
.admin-topbar-v17{padding-top:calc(var(--safe-top) + 12px);padding-bottom:12px}
.admin-enlight-logo{width:48px;height:48px;border-radius:15px}
.admin-brand-v17 strong{font-size:21px;letter-spacing:-.03em}
.admin-brand-v17 span{font-size:10px;max-width:190px}
.admin-top-actions button{width:42px;height:42px;border-radius:14px}
.admin-top-actions svg{width:20px;height:20px}
.admin-main-v17{padding:22px 16px calc(122px + var(--safe-bottom))}
.admin-page-title span,.admin-eyebrow{font-size:10px}
.admin-page-title h1{margin-top:6px;font-size:38px;letter-spacing:-.055em}
.admin-page-title p{margin-top:8px;font-size:13px;line-height:1.35}
.admin-welcome-v17{padding:18px 2px 22px}
.admin-welcome-v17 h1{margin-top:6px;font-size:36px;line-height:1.02;letter-spacing:-.052em}
.admin-welcome-v17 p{margin-top:8px;font-size:12.5px}
.admin-welcome-v17 img{width:68px;height:68px;border-radius:20px}
.admin-primary-action{grid-template-columns:52px minmax(0,1fr) 20px;padding:16px;border-radius:22px}
.admin-primary-action>svg:first-child{width:31px;height:31px}
.admin-primary-action strong{font-size:16px;line-height:1.1}
.admin-primary-action small{margin-top:5px;font-size:11px;line-height:1.32}
.admin-status-grid{gap:8px;margin:15px 0 20px}
.admin-status-card{padding:15px 7px;border-radius:19px}
.admin-status-card>span{font-size:30px;line-height:1;font-weight:900}
.admin-status-card strong{margin-top:5px;font-size:11px}
.admin-status-card small{margin-top:3px;font-size:9px}
.admin-section-title{margin:28px 2px 10px}
.admin-section-title>div>span{font-size:9.5px}
.admin-section-title h2{margin-top:4px;font-size:24px;letter-spacing:-.04em}
.admin-section-title>small{font-size:10px}
.admin-section-title>b{font-size:24px}
.admin-attendance-row,.admin-simple-row{padding:13px 13px}
.admin-person-row{gap:11px}
.admin-row-avatar{width:44px;height:44px;border-radius:14px;font-size:12px}
.admin-person-row strong{font-size:13.5px;line-height:1.15}
.admin-person-row small{margin-top:4px;font-size:10.5px;line-height:1.3}
.admin-attendance-actions{padding-left:55px;gap:7px}
.excuse-pill,.admin-row-status{font-size:9px;padding:6px 8px}
.admin-attendance-actions>a,.review-buttons button,.admin-text-button{font-size:10px}
.admin-grade-danger{font-size:20px}
.admin-clear-state strong{font-size:13px}
.admin-clear-state small{font-size:10px}

/* Admin navigation: same base-attached, elevated Digital ID treatment as client. */
.admin-shell-v17{padding-bottom:calc(116px + var(--safe-bottom))}
.admin-bottom-nav{
  position:fixed!important;z-index:70!important;left:0!important;right:0!important;bottom:0!important;
  width:100%!important;max-width:none!important;height:calc(78px + var(--safe-bottom))!important;
  transform:none!important;margin:0!important;display:flex!important;align-items:flex-start!important;
  padding:8px 8px calc(8px + var(--safe-bottom))!important;border-radius:24px 24px 0 0!important;
  background:rgba(255,255,255,.97)!important;border:1px solid rgba(42,91,160,.08)!important;border-bottom:0!important;
  box-shadow:0 -9px 30px rgba(28,70,128,.10)!important;
  backdrop-filter:blur(28px) saturate(155%)!important;-webkit-backdrop-filter:blur(28px) saturate(155%)!important;
}
.admin-bottom-nav .admin-nav-btn{
  flex:1 1 0!important;min-width:0!important;height:62px!important;display:flex!important;flex-direction:column!important;
  align-items:center!important;justify-content:center!important;gap:4px!important;border-radius:14px!important;
  background:transparent!important;color:#65758c!important;font-size:10px!important;font-weight:740!important;
  transition:color .16s ease,transform .16s ease!important;
}
.admin-bottom-nav .admin-nav-btn.active{background:transparent!important;color:#155fc9!important;box-shadow:none!important}
.admin-bottom-nav .admin-nav-btn>svg{width:24px!important;height:24px!important;stroke-width:2!important}
.admin-bottom-nav .admin-nav-id{overflow:visible!important;justify-content:flex-start!important;padding-top:0!important;gap:2px!important;color:#155fc9!important}
.admin-digital-id-nav-orb{
  width:62px;height:62px;margin-top:-27px;margin-bottom:1px;border-radius:50%;display:grid;place-items:center;
  color:#fff;background:linear-gradient(145deg,#176fe3,#0a4cae);border:5px solid rgba(247,250,255,.99);
  box-shadow:0 9px 22px rgba(23,91,181,.30),0 0 0 1px rgba(21,95,201,.08);
}
.admin-digital-id-nav-orb svg{width:29px!important;height:29px!important;stroke-width:1.9!important}
.admin-nav-id.active .admin-digital-id-nav-orb{background:linear-gradient(145deg,#0a55cc,#1678f1);box-shadow:0 10px 25px rgba(19,91,194,.36),0 0 0 1px rgba(21,95,201,.10)}

/* Larger admin feature-page controls without disturbing compact five-column gradebook cells. */
.admin-plus-tabs button{font-size:9.5px}
.admin-plus-tabs b{font-size:13px}
.admin-feature-card strong{font-size:11.5px}
.admin-feature-card small{font-size:9px}
.admin-profile-hero h1{font-size:27px}
.admin-profile-hero p{font-size:11px}
.admin-detail-row span,.admin-detail-row strong{font-size:11px}
.admin-id-labels small{font-size:9px}.admin-id-labels strong{font-size:11px}
.admin-id-gate p{font-size:11px}

@media(max-width:390px){
  .home-schedule-info{grid-template-columns:42px minmax(0,1fr) 16px;gap:8px}
  .home-schedule-info-icon{width:42px;height:42px}
  .home-schedule-info-icon .subject-vicon,.home-schedule-info-icon>svg{width:42px;height:42px}
  .home-schedule-info-meta{grid-column:2/3;text-align:left;display:flex;gap:8px;align-items:center;margin-top:-2px}
  .home-schedule-info-chevron{grid-column:3;grid-row:1/3}
  .admin-page-title h1{font-size:34px}
  .admin-welcome-v17 h1{font-size:32px}
  .admin-welcome-v17 img{width:62px;height:62px}
  .admin-status-card>span{font-size:26px}
  .admin-status-card strong{font-size:10px}
  .admin-person-row strong{font-size:12.5px}
}

/* ========================================================================
   v1.7.6 — Digital ID compact viewport, fullscreen and export ergonomics
   ======================================================================== */
html.id-fullscreen-active-v176,body.id-fullscreen-active-v176{overflow:hidden!important;overscroll-behavior:none!important}
body.digital-id-route-v176{height:100dvh;overflow:hidden!important}
body.digital-id-route-v176 .app-shell{height:100dvh!important;min-height:100dvh!important;overflow:hidden!important;padding-bottom:0!important}

.digital-id-page.digital-id-compact-v176{
  width:100%;max-width:520px;height:calc(100dvh - 82px - var(--safe-bottom));
  margin:0 auto!important;padding:calc(var(--safe-top) + 7px) 14px 0!important;
  overflow:hidden!important;display:flex;flex-direction:column;align-items:stretch;gap:6px;
}
.digital-id-compact-v176 .child-switch{flex:0 0 auto;margin:0 auto 2px;max-width:430px;width:100%}
.digital-id-compact-v176 .digital-id-identity{
  width:min(100%,430px);min-height:58px;flex:0 0 auto;margin:0 auto 2px;padding:7px 9px;
  grid-template-columns:46px minmax(0,1fr) auto;gap:9px;border-radius:17px;
}
.digital-id-compact-v176 .digital-id-mini-avatar{width:44px;height:44px;font-size:14px}
.digital-id-identity-copy{min-width:0}
.digital-id-compact-v176 .digital-id-identity h2{margin:3px 0 1px;font-size:16px;line-height:1.08}
.digital-id-compact-v176 .digital-id-identity p{font-size:9.4px}
.digital-id-compact-v176 .digital-id-verified{padding:3px 6px;font-size:7.8px}
.digital-id-identity-actions-v176,.admin-id-identity-actions-v176{display:flex;align-items:center;gap:5px}
.digital-id-identity-actions-v176 button,.admin-id-identity-actions-v176 button{
  width:34px;height:34px;border-radius:11px;display:grid;place-items:center;background:rgba(255,255,255,.94);
  border:1px solid rgba(90,58,62,.08);box-shadow:0 4px 12px rgba(50,30,33,.06);color:var(--wine)
}
.digital-id-identity-actions-v176 svg,.admin-id-identity-actions-v176 svg{width:17px;height:17px;stroke-width:2}
.digital-id-identity-actions-v176 button:disabled,.admin-id-identity-actions-v176 button:disabled{opacity:.45}

.digital-id-compact-v176 .digital-id-stage{
  flex:0 1 auto;height:clamp(282px,calc(100dvh - 232px - var(--safe-top) - var(--safe-bottom)),548px);
  width:auto;max-width:calc(100vw - 28px);margin:0 auto;aspect-ratio:2159/3396;
}
.digital-id-compact-v176 .digital-id-card{width:100%;height:100%;aspect-ratio:2159/3396}
.digital-id-compact-v176 .digital-id-action-row{flex:0 0 auto;margin:3px auto 0;gap:7px;flex-wrap:nowrap}
.digital-id-compact-v176 .digital-id-controls{margin:0;padding:4px;gap:4px}
.digital-id-compact-v176 .digital-id-controls button{min-width:58px;padding:8px 10px;font-size:10px}
.digital-id-compact-v176 .digital-id-controls .digital-id-flip{min-width:33px;width:33px}
.digital-id-compact-v176 .digital-id-save-png{height:42px;padding:0 12px;font-size:9.6px}
.digital-id-compact-v176 .digital-id-hint{flex:0 0 auto;margin:0 auto;color:#8b8285;font-size:8.4px;line-height:1.25;max-width:410px}
.digital-id-name{padding-inline:6px;box-sizing:border-box}
.digital-id-guardian,.digital-id-contact{padding-inline:4px;box-sizing:border-box}
.digital-id-gate-page-v176{overflow:auto!important;padding-bottom:20px!important}

.id-fullscreen-close-v176{display:none}
.digital-id-stage.is-fullscreen-v176,.admin-id-stage-v173.is-fullscreen-v176{
  position:fixed!important;inset:0!important;z-index:140!important;width:100vw!important;height:100dvh!important;max-width:none!important;
  margin:0!important;padding:calc(var(--safe-top) + 46px) 14px calc(var(--safe-bottom) + 20px)!important;
  aspect-ratio:auto!important;display:grid!important;place-items:center!important;background:rgba(10,12,16,.965)!important;
  filter:none!important;perspective:1800px!important;touch-action:none!important;
}
.digital-id-stage.is-fullscreen-v176 .digital-id-card{
  position:relative!important;inset:auto!important;width:min(92vw,430px)!important;height:auto!important;aspect-ratio:2159/3396!important;
}
.admin-id-stage-v173.is-fullscreen-v176 .admin-id-card-v173{
  position:relative!important;inset:auto!important;width:min(92vw,430px)!important;height:auto!important;aspect-ratio:1287/2048!important;
}
.is-fullscreen-v176 .id-fullscreen-close-v176{
  display:grid;place-items:center;position:fixed;right:calc(14px + var(--safe-right));top:calc(10px + var(--safe-top));z-index:145;
  width:38px;height:38px;border-radius:50%;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.22);color:#fff;
  font-size:27px;line-height:1;font-weight:300;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)
}

.admin-main-v17.admin-id-compact-v176{
  width:100%;max-width:760px;height:calc(100dvh - 148px - var(--safe-top) - var(--safe-bottom));
  margin:0 auto!important;padding:7px 14px 0!important;overflow:hidden!important;display:flex;flex-direction:column;gap:6px;
}
.admin-id-compact-v176 .admin-id-identity{
  width:min(100%,430px);min-height:58px;flex:0 0 auto;margin:0 auto 2px;padding:7px 9px;
  grid-template-columns:46px minmax(0,1fr) auto;gap:9px;border-radius:17px;
}
.admin-id-compact-v176 .admin-id-identity>img{width:44px;height:44px;border-radius:14px}
.admin-id-compact-v176 .admin-id-identity h2{margin:3px 0 1px;font-size:16px}
.admin-id-compact-v176 .admin-id-identity p{font-size:9.3px}
.admin-id-compact-v176 .admin-verified-pill{font-size:7.8px;padding:3px 6px}
.admin-id-identity-actions-v176 button{color:#1f5fa6;border-color:rgba(31,95,166,.10);box-shadow:0 4px 12px rgba(37,72,117,.07)}
.admin-id-compact-v176 .admin-id-stage-v173{
  flex:0 1 auto;height:clamp(270px,calc(100dvh - 305px - var(--safe-top) - var(--safe-bottom)),548px);
  width:auto;max-width:calc(100vw - 28px);margin:0 auto;aspect-ratio:1287/2048;
}
.admin-id-compact-v176 .admin-id-card-v173{width:100%;height:100%;inset:auto;position:relative;aspect-ratio:1287/2048}
.admin-id-compact-v176 .admin-id-action-row-v173{flex:0 0 auto;margin:3px auto 0;gap:7px;flex-wrap:nowrap}
.admin-id-compact-v176 .admin-id-controls-v173{padding:4px;gap:4px}
.admin-id-compact-v176 .admin-id-controls-v173 button{min-width:58px;padding:8px 10px;font-size:10px}
.admin-id-compact-v176 .admin-id-controls-v173 .admin-id-flip-v173{min-width:33px;width:33px}
.admin-id-compact-v176 .admin-id-save-v173{height:42px;padding:0 12px;font-size:9.6px}
.admin-id-compact-v176 .admin-id-hint-v173{flex:0 0 auto;margin:0 auto;font-size:8.4px;line-height:1.25}
.admin-id-gate-page-v176{height:auto!important;min-height:calc(100dvh - 160px);overflow:auto!important;padding-bottom:110px!important}

@media(max-height:700px){
  .digital-id-compact-v176 .digital-id-hint,.admin-id-compact-v176 .admin-id-hint-v173{display:none}
  .digital-id-compact-v176 .digital-id-stage{height:clamp(270px,calc(100dvh - 215px - var(--safe-top) - var(--safe-bottom)),420px)}
  .admin-id-compact-v176 .admin-id-stage-v173{height:clamp(255px,calc(100dvh - 282px - var(--safe-top) - var(--safe-bottom)),410px)}
}
@media(max-width:360px){
  .digital-id-compact-v176 .digital-id-save-png,.admin-id-compact-v176 .admin-id-save-v173{width:auto;max-width:none;padding-inline:9px}
  .digital-id-compact-v176 .digital-id-action-row,.admin-id-compact-v176 .admin-id-action-row-v173{gap:4px}
}
@media(orientation:landscape){
  .digital-id-stage.is-fullscreen-v176 .digital-id-card{width:auto!important;height:calc(100dvh - var(--safe-top) - var(--safe-bottom) - 28px)!important}
  .admin-id-stage-v173.is-fullscreen-v176 .admin-id-card-v173{width:auto!important;height:calc(100dvh - var(--safe-top) - var(--safe-bottom) - 28px)!important}
}
@media(prefers-reduced-motion:reduce){
  .digital-id-stage.is-fullscreen-v176,.admin-id-stage-v173.is-fullscreen-v176{transition:none!important}
}


/* ========================================================================
   v1.7.6 — Milestone 3/6: Admin density + canonical branding
   Preserve the client-scale headings and centered Digital ID dock introduced
   in v1.7.5 while making the class record denser and easier to scan.
   ======================================================================== */

/* Canonical EnlightN administrator mark supplied by the user. */
.admin-enlight-logo{
  width:48px;height:48px;padding:0!important;border-radius:14px!important;
  object-fit:cover!important;background:#fff;box-shadow:0 5px 16px rgba(28,74,140,.12)
}

/* Grades: the subject names were too small. Keep the selector compact, but
   return Calculus 1 / Physics 3 / General Mathematics to readable iOS scale. */
.admin-grades-v17 .admin-subject-toggle{gap:7px;padding:13px 0 8px}
.admin-grades-v17 .admin-subject-toggle button{
  min-height:32px;padding:7px 12px;border-radius:12px;font-size:12px!important;
  line-height:1.05;letter-spacing:-.01em;font-weight:800
}
.admin-grades-v17 .admin-subject-toggle button.active{box-shadow:0 5px 14px rgba(25,92,194,.14)}
.admin-grades-v17 .admin-grade-buckets{gap:7px;margin:5px 0 10px}
.admin-grades-v17 .admin-grade-buckets button{min-height:38px;padding:8px 7px}
.admin-grades-v17 .admin-grade-buckets strong{font-size:10.5px}

/* Five assessment columns remain visible at phone width. Rows are content-led
   rather than artificially tall, with ~3 px larger record typography. */
.admin-grades-v17 .gradebook-header,
.admin-grades-v17 .gradebook-row{
  grid-template-columns:minmax(116px,1.72fr) repeat(5,minmax(33px,.55fr))
}
.admin-grades-v17 .gradebook-name-head{padding:8px 6px 8px 10px;font-size:11px}
.admin-grades-v17 .gradebook-col-head{padding:7px 3px}
.admin-grades-v17 .gradebook-col-head strong{font-size:12px;line-height:1}
.admin-grades-v17 .gradebook-col-head small{margin-top:2px;font-size:7.5px;line-height:1}
.admin-grades-v17 .gradebook-row{min-height:0;height:auto}
.admin-grades-v17 .gradebook-learner{
  grid-template-columns:27px minmax(0,1fr);gap:6px;padding:5px 5px 5px 7px
}
.admin-grades-v17 .gradebook-avatar{width:27px;height:27px;border-radius:9px;font-size:8px}
.admin-grades-v17 .gradebook-learner strong{
  font-size:11.5px;line-height:1.08;letter-spacing:-.018em
}
.admin-grades-v17 .gradebook-score{font-size:12.5px;line-height:1;font-weight:800}
.admin-grades-v17 .gradebook-key{margin-top:8px;padding:10px 12px}
.admin-grades-v17 .gradebook-key strong{font-size:11.5px}
.admin-grades-v17 .gradebook-key p{margin-top:3px;font-size:8.5px;line-height:1.3}

/* Profile: saved accounts should read like a tight account switcher, not a
   second set of profile cards. */
.admin-profile-v17 .account-sheet-row{
  grid-template-columns:32px minmax(0,1fr) auto;gap:8px;min-height:0;padding:6px 9px
}
.admin-profile-v17 .account-sheet-row .saved-account-avatar{
  width:32px!important;height:32px!important;border-radius:10px!important;font-size:9px!important
}
.admin-profile-v17 .account-sheet-row strong{font-size:11px;line-height:1.05}
.admin-profile-v17 .account-sheet-row small{margin-top:2px;font-size:8px;line-height:1}
.admin-profile-v17 .account-sheet-row em{font-size:7.5px}
.admin-profile-v17 .account-sheet-row>svg{width:15px;height:15px}
.admin-profile-v17 .admin-signout-row{min-height:42px;padding:9px 11px;font-size:10px}

@media(max-width:390px){
  .admin-grades-v17 .admin-subject-toggle button{font-size:11.5px!important;padding-inline:10px}
  .admin-grades-v17 .gradebook-header,.admin-grades-v17 .gradebook-row{grid-template-columns:minmax(108px,1.64fr) repeat(5,minmax(31px,.55fr))}
  .admin-grades-v17 .gradebook-learner strong{font-size:11px}
  .admin-grades-v17 .gradebook-score{font-size:12px}
}

/* ========================================================================
   v1.7.6 — Discord-style Enlight Messages
   ======================================================================== */
.chat-app-panel-v176{--chat-accent:var(--wine);--chat-accent-soft:#f4e8e9;--chat-sidebar:#f1eeec;--chat-ink:#211c1e;--chat-muted:#7c7275;--chat-line:#e7e1de;--chat-panel:#fbfaf8;width:min(100%,900px);height:min(92dvh,calc(var(--chat-vh,100dvh) - var(--safe-top) - 10px));max-height:none;overflow:hidden;padding:0;border-radius:28px 28px 0 0;background:var(--chat-panel)}
.admin-message-panel{--chat-accent:#1765cf;--chat-accent-soft:#e7f0ff;--chat-sidebar:#edf3fa;--chat-ink:#1f3655;--chat-muted:#70819b;--chat-line:#dfe8f4;--chat-panel:#f8fbff;max-width:900px}
.chat-app-v176{position:relative;display:grid;grid-template-columns:minmax(0,1fr);height:100%;min-height:0;color:var(--chat-ink);background:var(--chat-panel)}
.chat-main-v176{display:grid;grid-template-rows:auto minmax(0,1fr) auto auto;min-width:0;min-height:0;height:100%}
.chat-header-v176{z-index:5;display:flex;align-items:center;gap:9px;min-height:69px;padding:calc(9px + var(--safe-top)*.04) 12px 9px;border-bottom:1px solid var(--chat-line);background:rgba(251,250,248,.94);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}
.admin-message-panel .chat-header-v176{background:rgba(248,251,255,.94)}
.chat-header-icon-v176,.chat-close-v176{flex:0 0 auto;width:38px;height:38px;border-radius:13px;display:grid;place-items:center;background:transparent;color:var(--chat-muted);font-size:18px;font-weight:700}.chat-header-icon-v176:active,.chat-close-v176:active{background:var(--chat-accent-soft);color:var(--chat-accent)}
.chat-close-v176{font-size:25px}.chat-header-title-v176{min-width:0;flex:1}.chat-header-title-v176>span{display:block;color:var(--chat-accent);font-size:7.8px;font-weight:900;letter-spacing:.12em;text-transform:uppercase}.chat-header-title-v176>strong{display:block;margin-top:2px;font-size:16px;line-height:1.12;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-header-title-v176>small{display:block;margin-top:2px;max-width:100%;color:var(--chat-muted);font-size:8.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat-message-list-v176{min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:16px 11px 12px;scrollbar-width:none}.chat-message-list-v176::-webkit-scrollbar{display:none}
.chat-message-v176{display:grid;grid-template-columns:36px minmax(0,1fr);gap:9px;padding:7px 5px;border-radius:13px;transition:background .18s ease}.chat-message-v176:hover,.chat-message-v176:focus-within{background:rgba(120,100,105,.045)}.chat-message-v176.mentioned{background:color-mix(in srgb,var(--chat-accent) 8%,transparent);box-shadow:inset 3px 0 var(--chat-accent)}.chat-message-v176.flash{animation:chatFlashV176 .9s ease}
@keyframes chatFlashV176{0%,100%{background:transparent}35%{background:color-mix(in srgb,var(--chat-accent) 16%,transparent)}}
.chat-avatar-wrap-v176{width:36px;height:36px;position:relative}.chat-avatar-v176,.chat-avatar-fallback-v176{width:36px;height:36px;border-radius:12px;object-fit:cover;background:var(--chat-accent-soft)}.chat-avatar-fallback-v176{display:grid;place-items:center;color:var(--chat-accent);font-size:12px;font-weight:900}
.chat-message-content-v176{min-width:0}.chat-message-meta-v176{display:flex;align-items:baseline;gap:6px;min-height:17px}.chat-message-meta-v176 strong{font-size:10.5px;line-height:1.2}.chat-message-meta-v176 time{color:var(--chat-muted);font-size:7.5px}.chat-message-meta-v176 em{color:var(--chat-muted);font-size:7px;font-style:normal}
.chat-message-body-v176{margin:3px 0 0;color:var(--chat-ink);font-size:13px;line-height:1.42;white-space:pre-wrap;overflow-wrap:anywhere}
.chat-reply-source-v176{display:block;width:100%;margin:2px 0 5px;padding:6px 8px;border-left:2px solid var(--chat-accent);border-radius:0 8px 8px 0;background:color-mix(in srgb,var(--chat-accent-soft) 64%,transparent);text-align:left;overflow:hidden}.chat-reply-source-v176 b,.chat-reply-source-v176 span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-reply-source-v176 b{color:var(--chat-accent);font-size:8px}.chat-reply-source-v176 span{margin-top:2px;color:var(--chat-muted);font-size:8px}
.chat-attachments-v176{display:grid;gap:5px;margin-top:7px}.chat-attachments-v176>button{display:grid;grid-template-columns:28px minmax(0,1fr);gap:7px;align-items:center;width:min(100%,340px);padding:7px;border-radius:11px;background:color-mix(in srgb,var(--chat-accent-soft) 58%,#fff);border:1px solid color-mix(in srgb,var(--chat-accent) 13%,var(--chat-line));text-align:left;color:var(--chat-ink)}.chat-attachments-v176>button>span{width:28px;height:28px;border-radius:9px;display:grid;place-items:center;background:#fff;color:var(--chat-accent);font-size:13px}.chat-attachments-v176 strong,.chat-attachments-v176 small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-attachments-v176 strong{font-size:8.5px}.chat-attachments-v176 small{margin-top:2px;color:var(--chat-muted);font-size:7px}
.chat-reactions-v176{display:flex;align-items:center;flex-wrap:wrap;gap:4px;margin-top:5px;min-height:24px}.chat-reaction-pill-v176,.chat-react-add-v176 summary,.chat-react-add-v176>div button{height:24px;min-width:30px;padding:0 7px;border-radius:9px;background:#f1edeb;color:var(--chat-muted);font-size:10px}.chat-reaction-pill-v176{display:flex;align-items:center;gap:4px;border:1px solid transparent}.chat-reaction-pill-v176 b{font-size:7.5px}.chat-reaction-pill-v176.mine{background:var(--chat-accent-soft);color:var(--chat-accent);border-color:color-mix(in srgb,var(--chat-accent) 22%,transparent)}.chat-react-add-v176{position:relative}.chat-react-add-v176 summary{display:grid;place-items:center;list-style:none;cursor:pointer}.chat-react-add-v176 summary::-webkit-details-marker{display:none}.chat-react-add-v176>div{position:absolute;z-index:10;left:0;bottom:29px;display:flex;gap:3px;padding:5px;border-radius:12px;background:#fff;border:1px solid var(--chat-line);box-shadow:0 9px 25px rgba(30,25,28,.15)}.chat-react-add-v176>div button{padding:0 5px;background:transparent;font-size:14px}
.chat-message-actions-v176{display:flex;gap:4px;max-height:0;opacity:0;overflow:hidden;transition:max-height .15s ease,opacity .15s ease;margin-top:0}.chat-message-v176:hover .chat-message-actions-v176,.chat-message-v176:focus-within .chat-message-actions-v176{max-height:30px;opacity:1;margin-top:4px}.chat-message-actions-v176 button{padding:4px 7px;border-radius:8px;background:#f0ecea;color:var(--chat-muted);font-size:7px;font-weight:800}.chat-message-actions-v176 button.danger{color:#b74352;background:#fdebed}
@media(hover:none){.chat-message-actions-v176{max-height:30px;opacity:1;margin-top:4px}}
.chat-empty-v176{min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:var(--chat-muted);padding:40px}.chat-empty-v176 strong{font-size:16px;color:var(--chat-ink)}.chat-empty-v176 span{margin-top:5px;font-size:9px;line-height:1.4}
.chat-typing-v176{height:23px;display:flex;align-items:center;gap:6px;padding:0 14px;color:var(--chat-muted);font-size:8px}.chat-typing-v176>span{display:flex;gap:2px}.chat-typing-v176 i{width:4px;height:4px;border-radius:50%;background:var(--chat-muted);animation:chatDotV176 1.2s infinite}.chat-typing-v176 i:nth-child(2){animation-delay:.16s}.chat-typing-v176 i:nth-child(3){animation-delay:.32s}@keyframes chatDotV176{0%,60%,100%{transform:translateY(0);opacity:.45}30%{transform:translateY(-3px);opacity:1}}
.chat-composer-wrap-v176{position:relative;padding:0 10px calc(9px + var(--safe-bottom));background:var(--chat-panel);border-top:1px solid var(--chat-line)}.chat-composer-v176{display:grid;grid-template-columns:36px minmax(0,1fr) 40px;gap:6px;align-items:end;padding-top:8px}.chat-composer-v176 textarea{width:100%;min-height:44px;max-height:118px;resize:none;overflow-y:auto;border:1px solid var(--chat-line);border-radius:14px;background:#fff;color:var(--chat-ink);padding:11px 12px;font:inherit;font-size:16px;line-height:1.3;outline:none}.chat-composer-v176 textarea:focus{border-color:color-mix(in srgb,var(--chat-accent) 48%,var(--chat-line));box-shadow:0 0 0 3px color-mix(in srgb,var(--chat-accent) 8%,transparent)}.chat-attach-v176{position:relative;width:36px;height:44px;border-radius:13px;display:grid;place-items:center;background:var(--chat-accent-soft);color:var(--chat-accent);font-size:22px;font-weight:400;overflow:hidden}.chat-attach-v176 input{position:absolute;inset:0;opacity:0;cursor:pointer}.chat-send-v176{width:40px;height:44px;border-radius:13px;background:var(--chat-accent);color:#fff;font-size:20px;font-weight:800;box-shadow:0 6px 15px color-mix(in srgb,var(--chat-accent) 20%,transparent)}
.chat-compose-mode-v176{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:7px 0 0;padding:7px 9px;border-radius:11px;background:var(--chat-accent-soft);border-left:3px solid var(--chat-accent)}.chat-compose-mode-v176>span{min-width:0;color:var(--chat-muted);font-size:8px}.chat-compose-mode-v176 strong{color:var(--chat-accent)}.chat-compose-mode-v176 small{display:block;margin-top:2px;max-width:270px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-compose-mode-v176>button{width:25px;height:25px;border-radius:8px;background:transparent;color:var(--chat-muted);font-size:17px}.chat-compose-mode-v176.edit{border-left-color:#d28a21;background:#fff4df}.chat-compose-mode-v176.edit strong{color:#a96512}
.chat-pending-files-v176{display:flex;gap:5px;overflow-x:auto;padding-top:7px;scrollbar-width:none}.chat-pending-files-v176::-webkit-scrollbar{display:none}.chat-pending-files-v176>span{position:relative;flex:0 0 auto;max-width:190px;padding:7px 25px 7px 8px;border-radius:10px;background:#fff;border:1px solid var(--chat-line)}.chat-pending-files-v176 b,.chat-pending-files-v176 small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-pending-files-v176 b{font-size:7.5px}.chat-pending-files-v176 small{margin-top:2px;color:var(--chat-muted);font-size:6.5px}.chat-pending-files-v176 button{position:absolute;right:3px;top:3px;width:19px;height:19px;border-radius:7px;background:#f2eded;color:#8d777a}
.chat-readonly-v176{margin:0 10px calc(10px + var(--safe-bottom));padding:12px;border-radius:13px;background:var(--chat-accent-soft);color:var(--chat-muted);font-size:9px;text-align:center;border-top:1px solid var(--chat-line)}
.chat-sidebar-v176{position:absolute;z-index:12;inset:0 auto 0 0;width:min(82vw,300px);transform:translateX(-103%);transition:transform .2s ease;background:var(--chat-sidebar);border-right:1px solid var(--chat-line);overflow-y:auto;padding:calc(10px + var(--safe-top)*.03) 8px calc(12px + var(--safe-bottom));box-shadow:16px 0 38px rgba(28,25,27,.14)}.chat-sidebar-v176.open{transform:translateX(0)}.chat-sidebar-scrim-v176{display:none;position:absolute;z-index:11;inset:0;background:rgba(25,21,23,.25)}.chat-app-v176.sidebar-open .chat-sidebar-scrim-v176{display:block}
.chat-sidebar-top-v176{display:flex;align-items:center;justify-content:space-between;padding:7px 7px 11px;border-bottom:1px solid var(--chat-line)}.chat-sidebar-top-v176 strong{font-size:14px}.chat-sidebar-top-v176 button{width:30px;height:30px;border-radius:10px;background:transparent;color:var(--chat-muted);font-size:20px}.chat-nav-group-v176{padding-top:12px}.chat-nav-label-v176{display:flex;align-items:center;justify-content:space-between;padding:0 7px 5px}.chat-nav-label-v176 span{color:var(--chat-muted);font-size:7.5px;font-weight:900;letter-spacing:.11em}.chat-nav-label-v176 button{width:25px;height:25px;border-radius:8px;background:transparent;color:var(--chat-muted);font-size:16px}.chat-nav-row-v176{position:relative;width:100%;display:grid;grid-template-columns:30px minmax(0,1fr) auto;gap:7px;align-items:center;min-height:42px;padding:5px 7px;border-radius:10px;text-align:left;color:var(--chat-muted);background:transparent}.chat-nav-row-v176:hover{background:rgba(255,255,255,.5)}.chat-nav-row-v176.active{background:#fff;color:var(--chat-ink);box-shadow:0 3px 12px rgba(40,34,36,.06)}.chat-nav-icon-v176{width:30px;height:30px;border-radius:10px;display:grid;place-items:center;background:rgba(255,255,255,.7);overflow:hidden;color:var(--chat-accent);font-size:13px}.chat-nav-icon-v176 img{width:100%;height:100%;object-fit:cover}.chat-nav-icon-v176 b{font-size:17px;font-weight:600}.chat-nav-copy-v176{min-width:0}.chat-nav-copy-v176 strong,.chat-nav-copy-v176 small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-nav-copy-v176 strong{font-size:9.5px}.chat-nav-copy-v176 small{margin-top:2px;font-size:7px;color:var(--chat-muted)}.chat-nav-row-v176>i{min-width:18px;height:18px;padding:0 4px;border-radius:9px;display:grid;place-items:center;background:var(--chat-accent);color:#fff;font-size:7px;font-style:normal;font-weight:900}.chat-empty-side-v176{display:block;padding:6px 8px;color:var(--chat-muted);font-size:8px}
.chat-dm-picker-v176{position:sticky;bottom:0;margin:10px 2px 0;padding:7px;border-radius:14px;background:#fff;border:1px solid var(--chat-line);box-shadow:0 9px 30px rgba(28,34,44,.12)}.chat-dm-search-v176{display:grid;grid-template-columns:minmax(0,1fr) 28px;gap:5px}.chat-dm-search-v176 input{width:100%;height:35px;border:1px solid var(--chat-line);border-radius:10px;padding:0 9px;font-size:16px;outline:none}.chat-dm-search-v176 button{border-radius:9px;background:#f1efee;color:var(--chat-muted);font-size:16px}.chat-dm-results-v176{max-height:225px;overflow:auto;margin-top:5px}.chat-dm-results-v176>button{width:100%;display:grid;grid-template-columns:30px minmax(0,1fr);gap:7px;align-items:center;padding:5px;border-radius:9px;background:transparent;text-align:left}.chat-dm-results-v176>button:hover{background:var(--chat-accent-soft)}.chat-dm-results-v176 img,.chat-dm-results-v176>button>span{width:30px;height:30px;border-radius:9px;object-fit:cover;display:grid;place-items:center;background:var(--chat-accent-soft);color:var(--chat-accent)}.chat-dm-results-v176 strong{font-size:8.5px}.chat-dm-results-v176>small{display:block;padding:9px;color:var(--chat-muted);font-size:8px}
.chat-context-v176{position:absolute;z-index:13;inset:0 0 0 auto;width:min(82vw,285px);overflow-y:auto;background:var(--chat-panel);border-left:1px solid var(--chat-line);box-shadow:-16px 0 38px rgba(28,25,27,.14);padding:13px;animation:chatContextInV176 .18s ease}@keyframes chatContextInV176{from{transform:translateX(20px);opacity:0}to{transform:none;opacity:1}}.chat-context-head-v176{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding-bottom:10px;border-bottom:1px solid var(--chat-line)}.chat-context-head-v176 span,.chat-context-head-v176 strong{display:block}.chat-context-head-v176 span{color:var(--chat-accent);font-size:7px;font-weight:900;letter-spacing:.1em}.chat-context-head-v176 strong{margin-top:2px;font-size:14px}.chat-context-head-v176 button{width:30px;height:30px;border-radius:10px;background:var(--chat-accent-soft);color:var(--chat-accent);font-size:19px}.chat-context-v176>p{color:var(--chat-muted);font-size:9px;line-height:1.45}.chat-context-v176 h4{margin:14px 0 6px;font-size:8px;color:var(--chat-muted);text-transform:uppercase;letter-spacing:.08em}.chat-member-list-v176{display:grid;gap:5px}.chat-member-list-v176>div{display:grid;grid-template-columns:32px minmax(0,1fr);gap:7px;align-items:center;padding:5px;border-radius:10px}.chat-member-list-v176 img,.chat-member-list-v176>div>span{width:32px;height:32px;border-radius:10px;object-fit:cover;display:grid;place-items:center;background:var(--chat-accent-soft);color:var(--chat-accent)}.chat-member-list-v176 strong,.chat-member-list-v176 small{display:block}.chat-member-list-v176 strong{font-size:8.5px}.chat-member-list-v176 small{margin-top:2px;color:var(--chat-muted);font-size:7px}
@media(min-width:700px){.chat-app-v176{grid-template-columns:230px minmax(0,1fr)}.chat-sidebar-v176{position:relative;inset:auto;width:auto;transform:none!important;box-shadow:none;z-index:1}.chat-sidebar-scrim-v176,.chat-sidebar-top-v176 button,.chat-header-v176 [data-chat-sidebar-toggle]{display:none!important}.chat-context-v176{width:260px}.chat-message-list-v176{padding-left:17px;padding-right:17px}.chat-composer-wrap-v176{padding-left:17px;padding-right:17px}}
@media(max-width:390px){.chat-header-v176{gap:5px;padding-left:8px;padding-right:8px}.chat-header-icon-v176,.chat-close-v176{width:35px;height:35px}.chat-message-list-v176{padding-left:7px;padding-right:7px}.chat-message-v176{grid-template-columns:32px minmax(0,1fr);gap:7px}.chat-avatar-wrap-v176,.chat-avatar-v176,.chat-avatar-fallback-v176{width:32px;height:32px}.chat-message-body-v176{font-size:12.5px}.chat-composer-wrap-v176{padding-left:7px;padding-right:7px}.chat-sidebar-v176{width:88vw}}
/* Message actions stay touch-accessible; EnlightN is primarily an iOS surface. */
.chat-message-actions-v176{max-height:30px;opacity:1;margin-top:4px}
.chat-modal-open-v176 .admin-bottom-nav,.chat-modal-open-v176 .bottom-nav{visibility:hidden!important;pointer-events:none!important}
body.chat-modal-open-v176{overflow:hidden!important}
body.chat-modal-open-v176 .v17-overlay-scrim,body.chat-modal-open-v176 .admin-modal-scrim{top:var(--chat-vtop,0px)!important;bottom:auto!important;height:var(--chat-vh,100dvh)!important}


/* ========================================================================
   v1.7.7 — Post-release iPhone QA hardening
   ======================================================================== */
/* Keep pinch zoom accessibility, but suppress iOS double-tap page zoom and
   the old 300 ms gesture delay on interactive app surfaces. */
html,body,#app,.app-shell,.admin-shell-v17{touch-action:manipulation}
.content,.page,.admin-main-v17,.chat-message-list-v176,.admin-award-roster,.schedule-list{touch-action:pan-y}
button,a,[role="button"],.bottom-nav,.admin-bottom-nav{touch-action:manipulation}

/* Fast native-feeling page transition; respects reduced motion below. */
::view-transition-old(root){animation:v177Out .115s ease both}
::view-transition-new(root){animation:v177In .16s cubic-bezier(.2,.75,.25,1) both}
@keyframes v177Out{to{opacity:.4;transform:scale(.997)}}
@keyframes v177In{from{opacity:.2;transform:translateY(4px) scale(.998)}to{opacity:1;transform:none}}
.surface-leave-v177{animation:v177Out .07s ease both}
.surface-enter-v177{animation:v177In .16s ease both}
.bottom-nav .nav-btn,.admin-bottom-nav .admin-nav-btn{position:relative;transition:color .16s ease,transform .2s cubic-bezier(.2,.85,.28,1),background .16s ease}
.bottom-nav .nav-btn>svg,.bottom-nav .digital-id-nav-orb,.admin-bottom-nav .admin-nav-btn>svg,.admin-bottom-nav .admin-digital-id-nav-orb{transition:transform .2s cubic-bezier(.2,.9,.28,1),filter .18s ease}
.bottom-nav .nav-btn.active>svg,.bottom-nav .nav-btn.active .digital-id-nav-orb{transform:translateY(-2px) scale(1.10)}
.bottom-nav .nav-btn.active::after{content:"";position:absolute;bottom:4px;width:15px;height:3px;border-radius:999px;background:currentColor;opacity:.9;animation:v177NavDot .2s cubic-bezier(.2,.9,.3,1)}
.admin-bottom-nav .admin-nav-btn.active>svg,.admin-bottom-nav .admin-nav-btn.active .admin-digital-id-nav-orb{transform:translateY(-2px) scale(1.10)}
.admin-bottom-nav .admin-nav-btn.active::after{content:"";position:absolute;bottom:3px;width:15px;height:3px;border-radius:999px;background:#1765cf;animation:v177NavDot .2s cubic-bezier(.2,.9,.3,1)}
@keyframes v177NavDot{from{width:4px;opacity:.2}to{width:15px;opacity:1}}

/* Student Profile hierarchy requested in device QA. */
.profile-name-stack-v177{margin:10px 0 5px!important;letter-spacing:-.035em!important;line-height:1!important;white-space:normal!important;overflow:visible!important}
.profile-name-stack-v177>span{display:block}
.profile-surname-v177{font-size:31px;font-weight:900;letter-spacing:-.045em;line-height:.98}
.profile-given-v177{margin-top:5px;font-size:28px;font-weight:730;letter-spacing:-.035em;line-height:1.04}
.profile-manage-actions{gap:10px!important}
.profile-manage-actions .secondary{min-height:54px!important;padding:14px 11px!important;gap:8px!important;font-size:12px!important;transition:transform .14s ease,background .16s ease,color .16s ease!important}
.profile-manage-actions .secondary:active{transform:scale(.97)}
.profile-manage-actions .secondary svg{width:21px!important;height:21px!important;flex:0 0 auto}
.profile-edit-button{font-size:13px!important;min-height:42px}.profile-edit-button svg{width:18px!important;height:18px!important}
.profile-manage-card>.profile-manage-icon svg{fill:currentColor;stroke:none}

/* Explicit photo-source UI replaces the unreliable iOS file-picker Take Photo path. */
.photo-source-scrim-v177{position:fixed;inset:0;z-index:168;background:rgba(21,16,18,.34);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.photo-source-sheet-v177{position:fixed;z-index:169;left:0;right:0;bottom:0;margin:auto;width:min(100%,620px);padding:10px 16px calc(18px + var(--safe-bottom));border-radius:28px 28px 0 0;background:#fff;box-shadow:0 -18px 60px rgba(35,21,24,.22);animation:v177SheetIn .2s cubic-bezier(.2,.8,.25,1)}
@keyframes v177SheetIn{from{transform:translateY(20px);opacity:.35}to{transform:none;opacity:1}}
.photo-source-handle-v177{width:42px;height:5px;border-radius:99px;background:#dad2d0;margin:0 auto 12px}
.photo-source-sheet-v177 header{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.photo-source-sheet-v177 h2{margin:2px 0 4px;font-size:24px;letter-spacing:-.04em}.photo-source-sheet-v177 header p{margin:0;color:var(--muted);font-size:11px;line-height:1.4}
.photo-source-actions-v177{display:grid;gap:7px;margin-top:14px}.photo-source-actions-v177>button{display:grid;grid-template-columns:42px minmax(0,1fr) 18px;align-items:center;gap:10px;width:100%;padding:11px;border-radius:17px;background:#f8f4f2;color:var(--ink);text-align:left}.photo-source-actions-v177>button>svg:first-child{width:23px;height:23px;color:var(--wine);justify-self:center}.photo-source-actions-v177>button>svg:last-child{width:16px;height:16px;color:#998d90}.photo-source-actions-v177 strong{display:block;font-size:12px}.photo-source-actions-v177 small{display:block;margin-top:2px;color:var(--muted);font-size:9px}

/* Activities overview: count owns a dedicated top-right pill, never colliding
   with the title/copy even on narrow phones. */
.activity-overview-tile{grid-template-columns:46px minmax(0,1fr) auto!important;grid-template-areas:"icon copy value" "icon copy arrow"!important;align-items:center!important;column-gap:9px!important;row-gap:2px!important}
.activity-overview-icon{grid-area:icon}.activity-overview-copy{grid-area:copy}.activity-overview-value{grid-area:value;align-self:start;justify-self:end;display:grid;place-items:center;min-width:34px;height:31px;padding:0 8px;border-radius:999px;background:rgba(255,255,255,.68);box-shadow:inset 0 0 0 1px rgba(255,255,255,.5);font-size:22px!important}
.activity-overview-arrow{grid-area:arrow;justify-self:end;align-self:end;display:grid;place-items:center;color:#756e70}.activity-overview-arrow svg{width:15px;height:15px}

/* Learner QR must remain optically standard. Crisp square modules, modest
   centre badge and a proper four-module quiet-zone from the server renderer. */
.qr-code-frame{border-radius:22px!important;padding:12px!important}.qr-code-surface{image-rendering:pixelated}.qr-code-surface svg{shape-rendering:crispEdges}.qr-center-logo{width:15%!important;height:15%!important;border-radius:12px!important;padding:3px!important;box-shadow:0 0 0 5px #fff,0 4px 14px rgba(55,40,43,.13)!important}.qr-center-logo img{border-radius:9px!important}

/* Admin theme hard-lock: no learner maroon may leak into adviser surfaces. */
.admin-shell-v17{--wine:#1765cf;--wine-2:#2879df;--wine-3:#0b438f;--wine-soft:#e8f1ff;--ink:#162237;--ink-2:#273d5d;--muted:#70809a;--line:rgba(27,83,157,.10);--shadow:0 16px 42px rgba(26,69,127,.10);--shadow-soft:0 8px 26px rgba(26,69,127,.07)}
.admin-shell-v17 .primary:not(.danger){background:linear-gradient(135deg,#0b56c8,#2680e9)!important;box-shadow:0 10px 25px rgba(23,101,207,.20)!important}
.admin-shell-v17 .secondary:not(.danger){color:#155fc9!important;background:#e8f1ff!important}
.admin-shell-v17 .admin-point-presets button.active,.admin-shell-v17 .admin-award-one{background:#1765cf!important;color:#fff!important}
.admin-shell-v17 .admin-live-value,.admin-shell-v17 .account-sheet-row em{color:#1765cf!important}
.admin-welcome-v17 img{width:58px;height:58px;object-fit:cover!important;border-radius:18px!important;padding:0!important}
.admin-status-grid{grid-template-columns:repeat(auto-fit,minmax(74px,1fr))!important}

/* Legacy v1.7.7 native-scanner presentation classes retained only for CSS compatibility.
   v1.8.6 never invokes the native barcode-scanner plugin; the active scanner uses
   the WKWebView camera surface below. */
.qr-native-launch-v177{padding:20px 16px 16px;border-radius:22px;background:linear-gradient(150deg,#edf5ff,#f8fbff);border:1px solid #d9e9ff;text-align:center;color:#193f70}
.qr-native-visual-v177{position:relative;width:118px;height:118px;margin:3px auto 15px;border-radius:29px;background:linear-gradient(145deg,#0d5dce,#2f8df0);display:grid;place-items:center;box-shadow:0 14px 28px rgba(22,101,207,.18)}
.qr-native-visual-v177::before,.qr-native-visual-v177::after{content:"";position:absolute;inset:13px;border:2px solid rgba(255,255,255,.88);border-radius:20px}.qr-native-visual-v177::after{inset:24px;border-width:1px;border-style:dashed;opacity:.45}.qr-native-glyph-v177{display:grid;place-items:center;color:#fff}.qr-native-glyph-v177 svg{width:50px;height:50px}.qr-native-visual-v177>i{position:absolute;width:54px;height:2px;border-radius:99px;background:#fff;box-shadow:0 0 12px rgba(255,255,255,.8);animation:v177ScanLine 1.65s ease-in-out infinite alternate}
@keyframes v177ScanLine{from{transform:translateY(-25px)}to{transform:translateY(25px)}}
.qr-native-copy-v177>strong{display:block;margin-top:4px;font-size:18px}.qr-native-copy-v177>p{max-width:410px;margin:7px auto 15px;color:#6a7f9c;font-size:10.5px;line-height:1.48}
.admin-camera-launch-v177{width:100%;min-height:50px;border-radius:16px;display:flex;align-items:center;justify-content:center;gap:9px;background:linear-gradient(135deg,#0b56c8,#2680e9);color:#fff;font-weight:850;box-shadow:0 10px 22px rgba(23,101,207,.18)}.admin-camera-launch-v177 svg{width:21px;height:21px}.admin-camera-launch-v177.is-busy{opacity:.65}
.activity-footer .secondary:first-child{color:#155fc9!important;background:#e8f1ff!important}.activity-footer .danger{color:#a83a49!important;background:#fdebed!important}

/* Denser gradebook rows + per-subject visual identity. */
.admin-grades-v17{--grade-accent:#1765cf;--grade-accent-soft:#e8f1ff;--grade-accent-line:#c9ddfb}
.admin-grades-v17.grade-theme-calc1{--grade-accent:#4f46e5;--grade-accent-soft:#eeedff;--grade-accent-line:#d5d2ff}
.admin-grades-v17.grade-theme-phys3{--grade-accent:#0b78a8;--grade-accent-soft:#e5f6fb;--grade-accent-line:#bee9f5}
.admin-grades-v17.grade-theme-chem1{--grade-accent:#138463;--grade-accent-soft:#e5f6ef;--grade-accent-line:#bce8d7}
.admin-grades-v17.grade-theme-research2{--grade-accent:#b56b12;--grade-accent-soft:#fff2df;--grade-accent-line:#f3d8ae}
.admin-grades-v17 .admin-subject-toggle button.active{background:var(--grade-accent)!important;color:#fff!important;border-color:var(--grade-accent)!important;box-shadow:0 5px 14px color-mix(in srgb,var(--grade-accent) 22%,transparent)!important}
.admin-grades-v17 .admin-grade-buckets button.active{background:var(--grade-accent-soft)!important;color:var(--grade-accent)!important;border-color:var(--grade-accent-line)!important}.admin-grades-v17 .gradebook-header{background:var(--grade-accent)!important}.admin-grades-v17 .admin-gradebook-card{border-color:var(--grade-accent-line)!important}.admin-grades-v17 .gradebook-key{border-color:var(--grade-accent-line);background:linear-gradient(145deg,#fff,var(--grade-accent-soft))}
/* v1.7.8: teacher-managed record rows are exactly avatar height + 5 px above + 5 px below.
   Scope this to Physics 3 and Calculus 1 so adviser-only Final Grade rows retain their own editor geometry. */
.admin-grades-v17.grade-theme-phys3 .gradebook-learner,.admin-grades-v17.grade-theme-calc1 .gradebook-learner{grid-template-columns:28px minmax(0,1fr)!important;gap:6px!important;padding:5px 5px 5px 7px!important}
.admin-grades-v17.grade-theme-phys3 .gradebook-avatar,.admin-grades-v17.grade-theme-calc1 .gradebook-avatar{width:28px!important;height:28px!important;border-radius:9px!important}
.admin-grades-v17.grade-theme-phys3 .gradebook-row,.admin-grades-v17.grade-theme-calc1 .gradebook-row{height:38px!important;min-height:38px!important;max-height:38px!important}
.admin-grades-v17.grade-theme-phys3 .gradebook-score,.admin-grades-v17.grade-theme-calc1 .gradebook-score{height:38px!important;min-height:38px!important;max-height:38px!important}
.gradebook-final-mode .gradebook-header,.gradebook-final-mode .gradebook-row{grid-template-columns:minmax(152px,1fr) 94px!important}.gradebook-final-head{display:grid;place-items:center;padding:5px;color:#fff}.gradebook-final-head strong{font-size:11px}.gradebook-final-head small{margin-top:1px;font-size:7px;opacity:.75}.gradebook-final-editor{position:relative;display:flex;align-items:center;justify-content:center;padding:2px 6px;border-left:1px solid #edf2f8}.gradebook-final-editor input{width:66px;height:28px;border:1px solid var(--grade-accent-line);border-radius:9px;background:#fff;color:var(--grade-accent);text-align:center;font-size:13px;font-weight:850;outline:none;font-variant-numeric:tabular-nums}.gradebook-final-editor input:focus{border-color:var(--grade-accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--grade-accent) 12%,transparent)}.grade-sync-dot{position:absolute;right:5px;width:5px;height:5px;border-radius:50%;background:#35a56f}.grade-sync-dot.empty{background:#c7ced8}.gradebook-final-editor.saving .grade-sync-dot{background:#d49a25;animation:v177Pulse .7s ease infinite alternate}@keyframes v177Pulse{to{opacity:.3}}

/* Native UI presentations may briefly hide WKWebView. Suppress transition
   artifacts while Camera/Photos/Scanner owns the foreground. */
.native-ui-active-v177 *{animation-play-state:paused!important}
@media(prefers-reduced-motion:reduce){::view-transition-old(root),::view-transition-new(root),.surface-leave-v177,.surface-enter-v177,.bottom-nav .nav-btn,.admin-bottom-nav .admin-nav-btn,.qr-native-visual-v177>i{animation:none!important;transition:none!important}}

/* v1.7.7 admin-modal density: long activity names must not dominate the QR
   workflow. Admin accents stay in the blue/cyan family; red is reserved only
   for destructive/error semantics. */
.admin-activity-award-panel .overlay-head{top:-18px;padding:10px 0 9px;background:rgba(248,251,255,.96);gap:10px}
.admin-activity-award-panel .overlay-head>div{min-width:0;flex:1}
.admin-activity-award-panel .overlay-head h2{max-width:100%;margin:3px 0 0;font-size:clamp(19px,5.1vw,23px);line-height:1.04;letter-spacing:-.04em;overflow-wrap:anywhere;text-wrap:balance}
.admin-activity-award-panel .overlay-head p{margin-top:4px;font-size:10px;line-height:1.25}
.admin-activity-award-panel .overlay-head>button{flex:0 0 36px;width:36px;height:36px;border-radius:12px;background:#edf4fd;color:#1765cf;font-size:20px}
.admin-activity-award-panel .section-kicker{font-size:8px;color:#6c83a1}
.admin-plus-tabs button:nth-child(2) .gem-shape{background:linear-gradient(145deg,#bfeeff,#41b8ea 55%,#0b78a8)!important}
.admin-plus-tabs button.phys.active{background:#e7f7ff!important;color:#0b6f9e!important;border-color:#bce7f4!important}
.admin-feature-card.qr>span:first-child{background:#e8f3ff!important;color:#1765cf!important}


/* =====================================================================
   v1.8.0 — Asset-Driven Shop V3 + Admin Messages visibility hotfix
   Scoped only to .shop-v3-* and the admin Messages modal wrapper.
   ===================================================================== */
.admin-messages-scrim-v180{z-index:5000!important;display:grid!important;place-items:stretch!important;padding:0!important;background:rgba(16,31,51,.22)!important;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.admin-messages-scrim-v180>.admin-message-panel{position:relative!important;inset:auto!important;width:min(100%,780px)!important;height:var(--chat-vh,100dvh)!important;max-height:none!important;margin:0 auto!important;border-radius:0!important;overflow:hidden!important;background:#fff!important;box-shadow:0 22px 60px rgba(15,35,63,.22)!important}
.chat-dm-results-v176>button>div{min-width:0}.chat-dm-results-v176>button>div strong,.chat-dm-results-v176>button>div small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-dm-results-v176>button>div small{margin-top:2px;color:var(--chat-muted);font-size:6.8px;text-transform:capitalize}

.shop-overlay.shop-v3-shell{--v3-ink:#171414;--v3-muted:#726d6a;--v3-maroon:#8e1b25;--v3-line:rgba(74,49,46,.08);width:min(100%,430px);max-width:430px;height:min(94dvh,880px);padding:18px 15px calc(24px + var(--safe-bottom));overflow-y:auto;overflow-x:hidden;background:linear-gradient(180deg,#fffefd 0%,#fbf8f6 100%);color:var(--v3-ink);border-radius:30px 30px 0 0;box-shadow:0 -10px 45px rgba(45,28,30,.14)}
.shop-v3-head{display:grid;grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:9px}.shop-v3-back{width:32px;height:40px;border:0;background:transparent;color:#413a38;font-size:32px;line-height:1}.shop-v3-head h2{margin:0;font-size:30px;line-height:.95;letter-spacing:-1px}.shop-v3-head p{margin:5px 0 0;color:var(--v3-muted);font-size:10.5px;white-space:nowrap}.shop-v3-resources{display:flex;gap:6px}.shop-v3-resources>div{min-width:68px;height:52px;padding:6px 8px;border-radius:16px;background:#fff;border:1px solid var(--v3-line);display:grid;grid-template-columns:23px auto;grid-template-rows:auto auto;column-gap:5px;align-items:center;box-shadow:0 7px 18px rgba(58,34,34,.045)}.shop-v3-resources span,.shop-v3-resources img{grid-row:1/3;width:23px;height:23px;object-fit:contain;display:grid;place-items:center;color:#d0922f}.shop-v3-resources b{font-size:16px;line-height:1;color:#801924}.shop-v3-resources small{font-size:6.7px;color:#6a6462;white-space:nowrap}
.shop-v3-tabs{margin-top:15px;padding:4px;border-radius:18px;background:#efe9e6;display:grid;grid-template-columns:1fr 1fr;gap:4px}.shop-v3-tabs button{height:42px;border:0;border-radius:14px;background:transparent;font-size:10px;font-weight:800;color:#5d5755}.shop-v3-tabs button.active{color:#fff;background:linear-gradient(180deg,#a41f2b,#841821);box-shadow:0 8px 18px rgba(137,28,37,.18)}
.shop-v3-banner{margin-top:12px;min-height:82px;padding:14px 16px;border-radius:21px;display:flex;align-items:center;gap:12px;color:#8b1924;background:linear-gradient(135deg,#fff2f1,#fae8e8);border:1px solid rgba(137,28,37,.06)}.shop-v3-banner>span{font-size:27px}.shop-v3-banner h3{margin:0;font-size:15px;letter-spacing:.2px}.shop-v3-banner p{margin:4px 0 0;color:#7e3036;font-size:9.3px;line-height:1.25}
.shop-v3-carousel{height:414px;margin:0 -15px;position:relative;overflow:hidden;isolation:isolate;perspective:950px;touch-action:pan-y;user-select:none;-webkit-user-select:none;cursor:grab;overscroll-behavior-x:contain}.shop-v3-carousel.dragging{cursor:grabbing}.shop-v3-ambient{position:absolute;left:50%;top:42px;width:258px;height:295px;transform:translateX(-50%);border-radius:50%;background:radial-gradient(circle,var(--ambient),transparent 66%);filter:blur(35px);opacity:.27;pointer-events:none;will-change:background}
.shop-v3-orbit-stage{position:absolute;left:50%;top:165px;width:432px;height:226px;transform:translateX(-50%);pointer-events:none;z-index:0}.shop-v3-ground-fade{position:absolute;left:50%;bottom:0;width:432px;height:114px;transform:translateX(-50%);border-radius:50%;background:radial-gradient(ellipse at 50% 56%,rgba(133,102,103,.14) 0 14%,rgba(181,164,160,.12) 26%,rgba(222,214,211,.10) 44%,rgba(245,241,239,.06) 63%,rgba(255,255,255,0) 80%);filter:blur(12px);opacity:.95}.shop-v3-turntable-base{position:absolute;left:50%;top:74px;width:388px;height:122px;transform:translateX(-50%);border-radius:50%;background:linear-gradient(180deg,rgba(255,255,255,.9),rgba(241,233,229,.97) 28%,rgba(229,220,215,.98) 66%,rgba(214,203,198,.95));border:1px solid rgba(126,102,99,.16);box-shadow:inset 0 3px 10px rgba(255,255,255,.78),inset 0 -15px 20px rgba(100,76,73,.09),0 20px 26px rgba(56,39,42,.09)}.shop-v3-turntable-base:before{content:"";position:absolute;inset:11px 21px;border-radius:50%;border:1.4px solid rgba(144,27,38,.14);box-shadow:0 0 0 1px rgba(255,255,255,.56) inset}.shop-v3-turntable-base:after{content:"";position:absolute;left:50%;top:54%;width:46%;height:34%;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(ellipse,rgba(142,27,37,.08),transparent 74%);filter:blur(3px)}.shop-v3-orbit-floor{position:absolute;left:50%;top:87px;width:325px;height:84px;transform:translateX(-50%);border-radius:50%;background:radial-gradient(ellipse at 50% 50%,rgba(255,255,255,.86) 0 22%,rgba(246,239,235,.9) 47%,rgba(227,216,211,.86) 82%,rgba(218,206,201,.78) 100%);border:1px solid rgba(116,85,82,.14);box-shadow:inset 0 2px 8px rgba(255,255,255,.74),inset 0 -8px 12px rgba(90,68,65,.08)}.shop-v3-orbit-floor:before{content:"";position:absolute;inset:7px 17px;border-radius:50%;border:1px dashed rgba(145,27,38,.18);opacity:.62}.shop-v3-front-anchor{position:absolute;left:50%;top:138px;width:108px;height:18px;transform:translateX(-50%);border-radius:50%;background:radial-gradient(ellipse,rgba(142,27,37,.18),rgba(142,27,37,.052) 56%,transparent 78%);filter:blur(4px);opacity:.74}
.shop-v3-reward{position:absolute;left:50%;top:7px;width:235px;height:384px;transform-origin:50% 77%;will-change:transform,opacity,filter;pointer-events:none;transform-style:preserve-3d}.shop-v3-reward.focused{opacity:1}.shop-v3-stack{position:relative;width:100%;height:100%;transform-style:preserve-3d;will-change:transform}.shop-v3-flip{position:absolute;left:50%;top:0;width:202px;height:286px;transform:translateX(-50%);transform-style:preserve-3d;transition:transform .52s cubic-bezier(.2,.76,.24,1);pointer-events:auto}.shop-v3-reward.flipped .shop-v3-flip{transform:translateX(-50%) rotateY(180deg)}.shop-v3-face{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden}.shop-v3-face.front{display:grid;place-items:center}.shop-v3-tablet{width:100%;height:100%;object-fit:contain;pointer-events:none;transform:translate3d(var(--tablet-shift-x,0px),var(--tablet-shift-y,0px),0) rotateZ(var(--tablet-tilt-z,0deg)) rotateX(var(--tablet-tilt-x,0deg));transform-origin:50% 84%;filter:drop-shadow(0 10px 12px rgba(43,31,34,.10));animation:shopV3TabletDrift 6.2s ease-in-out infinite;animation-delay:var(--phase,0s)}@keyframes shopV3TabletDrift{0%,100%{transform:translate3d(var(--tablet-shift-x,0px),var(--tablet-shift-y,0px),0) rotateZ(var(--tablet-tilt-z,0deg)) rotateX(var(--tablet-tilt-x,0deg))}50%{transform:translate3d(var(--tablet-shift-x,0px),calc(var(--tablet-shift-y,0px) - var(--tablet-bob,4px)),0) rotateZ(calc(var(--tablet-tilt-z,0deg) + var(--tablet-rock,.6deg))) rotateX(var(--tablet-tilt-x,0deg))}}.shop-v3-foil{position:absolute;inset:7% 8%;border-radius:24px;pointer-events:none;background:linear-gradient(115deg,transparent 35%,rgba(255,255,255,.03) 43%,rgba(255,203,255,.20) 50%,rgba(154,242,255,.17) 54%,transparent 62%);mix-blend-mode:screen;opacity:.45}.shop-v3-lock{position:absolute;left:17px;right:17px;bottom:17px;padding:7px 9px;border-radius:10px;background:rgba(255,255,255,.92);color:#695e60;font-size:7px;font-weight:850;text-align:center;box-shadow:0 6px 18px rgba(30,20,24,.11)}.shop-v3-face.back{transform:rotateY(180deg);border-radius:27px;padding:17px;color:#fff;text-align:center;border:2px solid var(--accent);background:linear-gradient(160deg,rgba(26,18,39,.985),rgba(15,11,23,.985));box-shadow:inset 0 0 0 1px rgba(255,255,255,.08),0 0 25px var(--glow)}.shop-v3-back-kicker{display:block;color:var(--accent);font-size:7px;font-weight:900;letter-spacing:1px}.shop-v3-face.back h3{margin:4px 0 11px;font-size:18px}.shop-v3-score,.shop-v3-balance-preview{display:flex;justify-content:space-between;align-items:end;padding-top:9px;border-top:1px solid rgba(255,255,255,.12);font-size:8px;color:#d9d2db}.shop-v3-score strong,.shop-v3-balance-preview strong{font-size:14px;color:#fff}.shop-v3-stepper{display:grid;grid-template-columns:35px 1fr 35px;gap:8px;align-items:center;margin:11px 0}.shop-v3-stepper button{width:35px;height:35px;border:1px solid rgba(255,255,255,.15);border-radius:11px;color:#fff;background:rgba(255,255,255,.08);font-size:18px}.shop-v3-stepper b{font-size:21px}.shop-v3-face.back p{margin:0 0 9px;color:#d8d2da;font-size:8px}.shop-v3-face.back p strong{color:#fff}.shop-v3-balance-preview{margin-bottom:10px}.shop-v3-redeem{width:100%;height:37px;border:0;border-radius:12px;background:linear-gradient(180deg,#a51f2c,#811821);color:#fff;font-size:9px;font-weight:850}.shop-v3-redeem:disabled{opacity:.45}.shop-v3-flip-back{margin-top:6px;border:0;background:transparent;color:#cfc5d1;font-size:7px}.shop-v3-unavailable{padding:26px 0!important}.shop-v3-pedestal{position:absolute;left:50%;bottom:8px;width:213px;height:150px;transform:translateX(-50%);object-fit:contain;pointer-events:none;z-index:-1;will-change:transform,filter}.shop-v3-orbit-shadow{position:absolute;left:50%;bottom:15px;width:154px;height:28px;transform:translateX(-50%);border-radius:50%;background:radial-gradient(ellipse,rgba(48,30,34,.22),rgba(48,30,34,.08) 48%,transparent 73%);filter:blur(5px);pointer-events:none;z-index:-2;will-change:transform,opacity}
.shop-v3-dots{display:flex;justify-content:center;gap:8px;margin-top:-4px}.shop-v3-dots button{width:9px;height:9px;border:0;padding:0;border-radius:50%;background:#ddd3d1}.shop-v3-dots button.active{background:#8d1b25;transform:scale(1.12)}.shop-v3-hint{margin-top:10px;padding:10px 12px;border-radius:15px;background:#faecec;color:#8a3e45;font-size:8.5px;text-align:center;border:1px solid rgba(138,30,39,.05)}
.shop-v3-converter{margin-top:12px;padding:12px;border-radius:18px;background:#fff;border:1px solid var(--v3-line);box-shadow:0 6px 18px rgba(50,34,37,.04);display:grid;grid-template-columns:minmax(0,1fr) auto;gap:9px;align-items:center}.shop-v3-converter span{display:block;color:#8e1b25;font-size:6.5px;font-weight:900;letter-spacing:.1em}.shop-v3-converter strong{display:block;margin-top:3px;font-size:10px}.shop-v3-converter small{display:block;margin-top:3px;color:#7f7977;font-size:7px;line-height:1.3}.shop-v3-convert-controls{display:grid;grid-template-columns:25px 30px 25px;gap:4px;align-items:center}.shop-v3-convert-controls button{height:28px;border:0;border-radius:9px;background:#f1ecea;color:#68222a;font-weight:850}.shop-v3-convert-controls b{text-align:center;font-size:9px}.shop-v3-convert-controls #convertUnassignedBtn{grid-column:1/4;margin-top:3px;background:#8e1b25;color:#fff;font-size:7px}
.shop-v3-major{margin-top:22px}.shop-v3-section-title{display:flex;justify-content:space-between;align-items:end;margin-bottom:10px}.shop-v3-section-title span{display:block;color:#8e1b25;font-size:6.5px;font-weight:900;letter-spacing:.1em}.shop-v3-section-title h3{margin:2px 0 0;font-size:21px;letter-spacing:-.6px}.shop-v3-section-title small{color:#8b8582;font-size:7px}.shop-v3-major-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:start}.shop-v3-major-card{position:relative;display:flex;flex-direction:column;padding:0;border:1px solid rgba(114,78,72,.10);border-radius:20px;overflow:hidden;background:#fff;box-shadow:0 10px 24px rgba(62,39,36,.09);text-align:left}.shop-v3-major-card:disabled{opacity:.78}.shop-v3-major-card>img{display:block;width:100%;height:auto;aspect-ratio:1/1;object-fit:contain;object-position:center;background:linear-gradient(180deg,#fff 0%,#fffaf7 100%)}.shop-v3-major-overlay{position:relative;left:auto;right:auto;bottom:auto;margin:0;padding:9px 9px 10px;border-radius:0;background:rgba(103,17,29,.96);color:#fff;backdrop-filter:none;min-height:48px}.shop-v3-major-card.grade .shop-v3-major-overlay{background:rgba(67,19,87,.96)}.shop-v3-progress{height:8px;padding:2px;border-radius:99px;background:#fff}.shop-v3-progress span{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#e6667c,#bd2340)}.shop-v3-major-overlay strong,.shop-v3-major-overlay small{display:block}.shop-v3-major-overlay strong{margin-top:6px;font-size:7.6px;line-height:1.25}.shop-v3-major-overlay small{margin-top:3px;font-size:6.5px;line-height:1.25;opacity:.88}
.shop-v3-history{margin:12px 0 2px;border-radius:17px;background:#fff;border:1px solid var(--v3-line);overflow:hidden}.shop-v3-history>button{width:100%;padding:11px 12px;display:flex;justify-content:space-between;align-items:center;text-align:left;background:transparent}.shop-v3-history>button span b,.shop-v3-history>button span small{display:block}.shop-v3-history>button span b{font-size:9.5px}.shop-v3-history>button span small{margin-top:2px;color:#89827f;font-size:7px}.shop-v3-history>button i{font-style:normal;color:#8e1b25;font-size:17px}.shop-v3-history>div{padding:0 10px 9px}.shop-v3-history article{padding:8px 2px;border-top:1px solid #f0ebea}.shop-v3-history article strong,.shop-v3-history article span,.shop-v3-history article small{display:block}.shop-v3-history article strong{font-size:8px}.shop-v3-history article span{margin-top:2px;color:#6e6765;font-size:7px}.shop-v3-history article small{margin-top:2px;color:#99918e;font-size:6.5px}
.shop-v3-confirm-scrim{position:fixed;z-index:5100;inset:0;display:flex;align-items:flex-end;justify-content:center;background:rgba(28,18,20,.28);backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px)}.shop-v3-confirm-sheet{width:min(100%,430px);padding:20px 18px calc(18px + var(--safe-bottom));border-radius:25px 25px 0 0;background:#fff;box-shadow:0 -14px 45px rgba(40,21,25,.17)}.shop-v3-confirm-kicker{color:#8e1b25;font-size:7px;font-weight:900;letter-spacing:.11em;text-transform:uppercase}.shop-v3-confirm-sheet h3{margin:4px 0 8px;font-size:20px}.shop-v3-confirm-sheet>p{margin:0 0 12px;color:#6f6866;font-size:9px;line-height:1.45}.shop-v3-confirm-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}.shop-v3-confirm-grid.single{grid-template-columns:1fr}.shop-v3-confirm-grid>div{padding:11px;border-radius:15px;background:#faf6f4;border:1px solid #efe6e3}.shop-v3-confirm-grid span,.shop-v3-confirm-grid strong,.shop-v3-confirm-grid small{display:block}.shop-v3-confirm-grid span{color:#867c79;font-size:7px}.shop-v3-confirm-grid strong{margin-top:3px;font-size:15px}.shop-v3-confirm-grid small{margin-top:2px;color:#9b918e;font-size:6.7px}.shop-v3-confirm-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.shop-v3-confirm-actions button{height:44px;border-radius:14px;font-size:10px;font-weight:850}.shop-v3-primary{border:0;background:#8e1b25;color:#fff}
@media(max-width:390px){.shop-overlay.shop-v3-shell{padding-left:12px;padding-right:12px}.shop-v3-head{grid-template-columns:28px minmax(0,1fr)}.shop-v3-resources{grid-column:2;justify-self:start;margin-top:7px}.shop-v3-carousel{margin-left:-12px;margin-right:-12px;height:400px}.shop-v3-reward{width:224px}.shop-v3-flip{width:194px;height:274px}.shop-v3-pedestal{width:202px}.shop-v3-orbit-stage{transform:translateX(-50%) scale(.93);transform-origin:50% 60%}.shop-v3-major-card>img{height:auto;aspect-ratio:1/1}.shop-v3-major-overlay{padding:8px 8px 9px;min-height:46px}}
@media(prefers-reduced-motion:reduce){.shop-v3-reward,.shop-v3-flip,.shop-v3-pedestal,.shop-v3-tablet{transition:none!important;animation:none!important}}


/* ========================================================================
   v1.8.1 — targeted iPhone QA repair: chat keyboard, greeting, Grade View B,
   and deliberate app-wide zoom suppression requested by the user.
   ======================================================================== */
/* The user explicitly disabled app zoom. Keep scrolling, but do not expose
   pinch/double-tap zoom semantics inside the application surface. */
html,body,#app,.app-shell,.admin-shell-v17,.content,.page,.admin-main-v17,
.chat-message-list-v176,.admin-award-roster,.schedule-list{touch-action:pan-y!important}
button,a,[role="button"],input,textarea,select,.bottom-nav,.admin-bottom-nav{touch-action:manipulation!important}

/* Friendlier adviser greeting: two intentional lines, not a shouty legal name. */
.admin-welcome-v17 .admin-greeting-v181{font-size:31px!important;line-height:1.02!important;letter-spacing:-.045em!important;text-transform:none!important}
.admin-welcome-v17 .admin-greeting-v181 span{font-size:.94em;font-weight:790;letter-spacing:-.035em}

/* View selector remains subordinate to the subject selector. */
.admin-grade-toolbar{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:end}
.admin-grade-toolbar .admin-subject-toggle{min-width:0}
.admin-grade-view-toggle{display:flex;align-items:center;gap:4px;padding:0 0 7px}
.admin-grade-view-toggle>span{font-size:7px;font-weight:850;letter-spacing:.08em;text-transform:uppercase;color:#7b8aa0;margin-right:1px}
.admin-grade-view-toggle button{width:29px;height:30px;border:1px solid #dce6f2;border-radius:10px;background:#fff;color:#667894;font-size:9px;font-weight:850}
.admin-grade-view-toggle button.active{background:var(--grade-accent,#176cc7);color:#fff;border-color:var(--grade-accent,#176cc7);box-shadow:0 4px 10px color-mix(in srgb,var(--grade-accent,#176cc7) 18%,transparent)}

/* The old per-input sync dot is intentionally retired. It was redundant and,
   in the affected iOS render path, could surface as the grey visual artifact. */
.grade-sync-dot{display:none!important}

/* View Style B: full learner identity, then compact grade context columns. */
.gradebook-final-scroll{width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.gradebook-final-scroll::-webkit-scrollbar{display:none}
.gradebook-final-mode.view-style-b .gradebook-header,
.gradebook-final-mode.view-style-b .gradebook-row{
  width:max-content;min-width:100%;
  grid-template-columns:var(--style-b-name-width,190px) 66px 78px 57px!important;
}
.gradebook-final-mode.view-style-b .gradebook-row{height:38px!important;min-height:38px!important;max-height:38px!important}
.gradebook-final-mode.view-style-b .gradebook-learner{
  grid-template-columns:28px max-content!important;
  gap:6px!important;
  padding:5px 5px!important;
  align-items:center!important;
}
.gradebook-final-mode.view-style-b .gradebook-avatar{width:28px!important;height:28px!important;border-radius:9px!important}
.gradebook-final-mode.view-style-b .gradebook-learner strong{
  font-size:11px!important;line-height:1!important;white-space:nowrap!important;overflow:visible!important;text-overflow:clip!important
}
.gradebook-styleb-head{display:grid;place-items:center;padding:5px 3px;border-left:1px solid rgba(255,255,255,.13);color:#fff;font-size:8px;font-weight:850;line-height:1.05;text-align:center}
.gradebook-final-mode.view-style-b .gradebook-final-editor,
.gradebook-final-mode.view-style-b .gradebook-descriptor,
.gradebook-final-mode.view-style-b .gradebook-remark{height:38px!important;min-height:38px!important;max-height:38px!important}
.gradebook-final-editor{position:relative;display:flex;align-items:center;justify-content:center;padding:2px 5px;border-left:1px solid #edf2f8}
.gradebook-final-editor input{-webkit-appearance:none;appearance:none;margin:0;width:54px;height:28px;border:1px solid var(--grade-accent-line);border-radius:9px;background:#fff;color:var(--grade-accent);text-align:center;font-size:12px;font-weight:850;outline:none;font-variant-numeric:tabular-nums}
.gradebook-final-editor input:focus{border-color:var(--grade-accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--grade-accent) 12%,transparent)}
.gradebook-final-editor.saving input{opacity:.62}
.gradebook-descriptor,.gradebook-remark{display:grid;place-items:center;padding:2px 4px;border-left:1px solid #edf2f8;text-align:center;font-size:7.7px;font-weight:800;line-height:1.05;color:#516078;background:#fff}
.gradebook-descriptor.advancing{color:#13784f}.gradebook-descriptor.benchmarking{color:#1268a8}.gradebook-descriptor.connecting{color:#6f58a9}.gradebook-descriptor.developing{color:#a96b14}.gradebook-descriptor.emerging{color:#a33e49}
.gradebook-remark.passed{color:#13784f}.gradebook-remark.failed{color:#a33e49}.gradebook-descriptor.empty,.gradebook-remark.empty{color:#b1bac7}

/* Style A remains the existing compact final-grade layout. */
.gradebook-final-mode.view-style-a .gradebook-header,.gradebook-final-mode.view-style-a .gradebook-row{grid-template-columns:minmax(152px,1fr) 94px!important}

/* Optional Style B on teacher-managed records only expands learner identity;
   score semantics and the five existing assessment columns do not change. */
.admin-gradebook-card.view-style-b.teacher-managed .gradebook-header,
.admin-gradebook-card.view-style-b.teacher-managed .gradebook-row{
  width:max-content;min-width:100%;grid-template-columns:var(--style-b-name-width,190px) repeat(5,minmax(44px,1fr))!important
}
.admin-gradebook-card.view-style-b.teacher-managed .gradebook-learner{grid-template-columns:28px max-content!important;gap:6px!important;padding:5px!important}
.admin-gradebook-card.view-style-b.teacher-managed .gradebook-learner strong{white-space:nowrap!important;overflow:visible!important;text-overflow:clip!important}

/* Keyboard-safe Messages. The panel is sized to the visual viewport rather
   than the layout viewport so the composer remains immediately above iOS KB. */
body.chat-modal-open-v176 .v17-overlay-scrim,
body.chat-modal-open-v176 .admin-modal-scrim,
.admin-messages-scrim-v180{
  position:fixed!important;left:0!important;right:0!important;
  top:var(--chat-vtop,0px)!important;bottom:auto!important;
  height:var(--chat-vh,100dvh)!important;min-height:0!important;
}
.chat-app-panel-v176,.admin-messages-scrim-v180>.admin-message-panel{
  height:100%!important;max-height:100%!important;min-height:0!important;
}
.chat-app-v176,.chat-main-v176{height:100%!important;min-height:0!important;overflow:hidden!important}
.chat-message-list-v176{min-height:0!important;overflow-y:auto!important}
.chat-composer-wrap-v176{position:relative!important;z-index:8!important;flex:0 0 auto!important;background:var(--chat-panel)!important}
body.chat-keyboard-open-v181 .chat-composer-wrap-v176{padding-bottom:6px!important}
body.chat-keyboard-open-v181 .chat-app-panel-v176{border-radius:0!important}

@media(max-width:390px){
  .admin-grade-toolbar{grid-template-columns:1fr}.admin-grade-view-toggle{justify-content:flex-end;padding-top:0}
  .gradebook-final-mode.view-style-b .gradebook-header,.gradebook-final-mode.view-style-b .gradebook-row{grid-template-columns:var(--style-b-name-width,184px) 60px 74px 54px!important}
}
/* v1.8.1 polish: keep all four subject tabs fully available; the A/B selector
   sits on its own compact row rather than stealing width from the subjects. */
.admin-grade-toolbar{display:block!important}
.admin-grade-toolbar .admin-subject-toggle{width:100%}
.admin-grade-view-toggle{justify-content:flex-end!important;padding:0 0 7px!important;margin-top:-2px}

/* ========================================================================
   v1.8.3 — Enlight Messages presentation redesign
   Discord-inspired hierarchy and interaction quality, EnlightN identity.
   Backend/RPC/privacy/realtime contracts remain unchanged.
   ======================================================================== */
.messages-v2{
  --msg-bg:#fff;--msg-surface:#f2f3f5;--msg-pressed:#e9eaec;--msg-text:#111214;
  --msg-secondary:#4e5058;--msg-muted:#80848e;--msg-divider:rgba(6,6,7,.10);
  --msg-danger:#da373c;--msg-accent:var(--wine);--msg-accent-soft:color-mix(in srgb,var(--msg-accent) 8%,#fff);
  width:100%!important;max-width:780px!important;height:100%!important;max-height:100%!important;
  padding:0!important;border-radius:0!important;background:var(--msg-bg)!important;color:var(--msg-text)!important;
  overflow:hidden!important;font-family:-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif!important;
  -webkit-font-smoothing:antialiased;
}
.messages-v2.admin-message-panel{--msg-accent:var(--admin-accent,#1765cf);--chat-accent:var(--msg-accent);--chat-accent-soft:#eaf2ff;--chat-panel:#fff;--chat-line:var(--msg-divider);--chat-muted:var(--msg-muted);--chat-ink:var(--msg-text)}
.messages-v2:not(.admin-message-panel){--chat-accent:var(--msg-accent);--chat-accent-soft:var(--msg-accent-soft);--chat-panel:#fff;--chat-line:var(--msg-divider);--chat-muted:var(--msg-muted);--chat-ink:var(--msg-text)}
.messages-v2-shell{display:block!important;position:relative!important;width:100%;height:100%!important;background:#fff!important;overflow:hidden!important}
.messages-v2 button{font-family:inherit}
.messages-v2 button:focus-visible,.messages-v2 textarea:focus-visible,.messages-v2 input:focus-visible{outline:2px solid color-mix(in srgb,var(--msg-accent) 55%,#fff);outline-offset:2px}
.messages-v2-icon{width:44px;height:44px;min-width:44px;border:0;border-radius:999px;background:transparent;color:#5d6067;display:grid;place-items:center;font-size:28px;line-height:1;padding:0}
.messages-v2-icon:active{background:var(--msg-surface)}
.messages-v2-icon.close{font-size:30px;font-weight:300}

/* Messages Home */
.messages-v2-home{height:100%;display:flex;flex-direction:column;background:#fff;overflow:hidden;position:relative}
.messages-v2-home-header{min-height:82px;padding:calc(var(--safe-top,0px) + 12px) 18px 8px 20px;display:flex;align-items:flex-end;justify-content:space-between;flex:none}
.messages-v2-home-header h1{margin:0;font-size:27px;line-height:32px;font-weight:750;letter-spacing:-.45px;color:var(--msg-text)}
.messages-v2-home-actions{display:grid;grid-template-columns:48px minmax(0,1fr);gap:10px;padding:8px 20px 13px;flex:none}
.messages-v2-search-button{width:48px;height:48px;border:0;border-radius:24px;background:var(--msg-surface);color:#565960;font-size:25px;display:grid;place-items:center;line-height:1}
.messages-v2-search-button.active,.messages-v2-search-button:active{background:var(--msg-pressed)}
.messages-v2-new-message{height:48px;border-radius:24px;border:1px solid var(--msg-divider);background:#fff;color:var(--msg-text);display:flex;align-items:center;justify-content:center;gap:9px;padding:0 18px}
.messages-v2-new-message>span{font-size:20px;color:#55585f;transform:translateY(-1px)}
.messages-v2-new-message>strong{font-size:17px;line-height:20px;font-weight:680}
.messages-v2-new-message:active{background:var(--msg-surface)}
.messages-v2-home-search{height:48px;margin:0 20px 10px;border-radius:24px;background:var(--msg-surface);display:grid;grid-template-columns:36px minmax(0,1fr) 38px;align-items:center;padding:0 5px 0 7px;flex:none}
.messages-v2-home-search>span{display:grid;place-items:center;color:#72757d;font-size:21px}
.messages-v2-home-search input{width:100%;height:44px;border:0;background:transparent;color:var(--msg-text);outline:0;font-size:16px;line-height:21px;padding:0 4px}
.messages-v2-home-search input::placeholder{color:#7c8088}
.messages-v2-home-search button{width:34px;height:34px;border-radius:17px;background:transparent;color:#6e727a;font-size:22px}
.messages-v2-home-search button:active{background:#e2e3e6}
.messages-v2-home-scroll{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding-bottom:calc(18px + var(--safe-bottom,0px));scrollbar-width:none}
.messages-v2-home-scroll::-webkit-scrollbar{display:none}
.messages-v2-section-label{padding:10px 20px 7px;color:var(--msg-muted);font-size:12px;line-height:14px;font-weight:680;letter-spacing:.04em}
.messages-v2-section-label.recent{padding-top:2px}
.messages-v2-section-label.channels{padding-top:15px}
.messages-v2-recents{display:flex;gap:12px;padding:1px 20px 13px;overflow-x:auto;scrollbar-width:none}
.messages-v2-recents::-webkit-scrollbar{display:none}
.messages-v2-recents>button{position:relative;flex:0 0 70px;width:70px;min-height:72px;padding:0;background:transparent;text-align:center;color:var(--msg-text)}
.messages-v2-recent-avatar{width:54px;height:54px;margin:0 auto 6px;border-radius:50%;display:grid;place-items:center;overflow:hidden;background:var(--msg-surface);color:var(--msg-accent);font-size:16px;font-weight:750}
.messages-v2-recent-avatar img,.messages-v2-recent-avatar>span{width:100%;height:100%;border-radius:inherit;object-fit:cover;display:grid;place-items:center;background:var(--msg-accent-soft);color:var(--msg-accent)}
.messages-v2-recents b{display:block;font-size:13px;line-height:16px;font-weight:620;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.messages-v2-recents i{position:absolute;right:3px;top:35px;min-width:20px;height:20px;padding:0 5px;border:3px solid #fff;border-radius:11px;background:var(--msg-accent);color:#fff;display:grid;place-items:center;font-size:10px;font-style:normal;font-weight:750}
.messages-v2-list{padding:0 8px}
.messages-v2-row{width:100%;min-height:70px;padding:8px 12px;border:0;border-radius:12px;background:#fff;color:var(--msg-text);display:grid;grid-template-columns:46px minmax(0,1fr) auto;gap:12px;align-items:center;text-align:left}
.messages-v2-row:active{background:var(--msg-surface)}
.messages-v2-row.unread .messages-v2-row-copy strong{font-weight:780}
.messages-v2-row-avatar{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;overflow:hidden;background:var(--msg-surface);color:#60636a;font-size:20px;font-weight:650}
.messages-v2-row-avatar.channel{border-radius:15px;font-size:25px;font-weight:500}
.messages-v2-row-avatar.direct img,.messages-v2-row-avatar.direct>span{width:100%;height:100%;border-radius:50%;object-fit:cover;display:grid;place-items:center;background:var(--msg-accent-soft);color:var(--msg-accent)}
.messages-v2-row-copy{min-width:0}
.messages-v2-row-copy strong,.messages-v2-row-copy small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.messages-v2-row-copy strong{font-size:18px;line-height:22px;font-weight:680;letter-spacing:-.15px;color:var(--msg-text)}
.messages-v2-row-copy small{margin-top:3px;font-size:14px;line-height:18px;color:var(--msg-secondary)}
.messages-v2-row-side{align-self:stretch;min-width:45px;display:flex;flex-direction:column;align-items:flex-end;justify-content:center}
.messages-v2-row-side time{font-size:13px;line-height:16px;color:var(--msg-muted);white-space:nowrap}
.messages-v2-row-side i{margin-top:7px;min-width:22px;height:22px;padding:0 6px;border-radius:11px;background:var(--msg-accent);color:#fff;display:grid;place-items:center;font-size:11px;font-style:normal;font-weight:750}
.messages-v2-empty-section{padding:11px 12px 16px;color:var(--msg-muted);font-size:14px;line-height:19px}

/* New Message directory */
.messages-v2-directory{position:absolute;z-index:40;inset:0;background:#fff;display:flex;flex-direction:column;animation:messagesV2SheetIn .2s ease both}
@keyframes messagesV2SheetIn{from{transform:translateY(18px);opacity:.3}to{transform:none;opacity:1}}
.messages-v2-directory>header{min-height:82px;padding:calc(var(--safe-top,0px) + 12px) 14px 8px 8px;display:flex;align-items:flex-end;gap:7px;border-bottom:1px solid var(--msg-divider);flex:none}
.messages-v2-directory>header>div{min-width:0;padding-bottom:3px}
.messages-v2-directory>header strong,.messages-v2-directory>header small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.messages-v2-directory>header strong{font-size:20px;line-height:24px;font-weight:730;color:var(--msg-text)}
.messages-v2-directory>header small{margin-top:1px;font-size:12.5px;line-height:15px;color:var(--msg-muted)}
.messages-v2-directory-search{height:50px;margin:14px 18px 8px;border-radius:25px;background:var(--msg-surface);display:grid;grid-template-columns:36px minmax(0,1fr) 38px;align-items:center;padding:0 5px 0 7px;flex:none}
.messages-v2-directory-search>span{display:grid;place-items:center;color:#72757d;font-size:21px}
.messages-v2-directory-search input{height:46px;width:100%;border:0;background:transparent;color:var(--msg-text);outline:0;font-size:16px;padding:0 4px}
.messages-v2-directory-search input::placeholder{color:#747880}
.messages-v2-directory-search button{width:34px;height:34px;border-radius:17px;background:transparent;color:#6f737a;font-size:21px}
.messages-v2-directory-results{flex:1;min-height:0;overflow-y:auto;padding:3px 8px 10px;scrollbar-width:none}
.messages-v2-directory-results::-webkit-scrollbar{display:none}
.messages-v2-directory-results>button{width:100%;min-height:68px;border:0;border-radius:12px;background:#fff;display:grid;grid-template-columns:48px minmax(0,1fr);gap:12px;align-items:center;padding:8px 12px;text-align:left;color:var(--msg-text)}
.messages-v2-directory-results>button:active{background:var(--msg-surface)}
.messages-v2-directory-avatar{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;overflow:hidden;background:var(--msg-accent-soft);color:var(--msg-accent);font-weight:750}
.messages-v2-directory-avatar img,.messages-v2-directory-avatar>span{width:100%;height:100%;border-radius:inherit;object-fit:cover;display:grid;place-items:center}
.messages-v2-directory-results>button>span:last-child{min-width:0}
.messages-v2-directory-results strong,.messages-v2-directory-results small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.messages-v2-directory-results strong{font-size:17px;line-height:21px;font-weight:680}
.messages-v2-directory-results small{margin-top:3px;font-size:13px;line-height:17px;color:var(--msg-muted)}
.messages-v2-directory-empty{padding:24px 20px;color:var(--msg-muted);font-size:14px;text-align:center}
.messages-v2-directory-privacy{margin:0;padding:10px 20px calc(12px + var(--safe-bottom,0px));border-top:1px solid var(--msg-divider);color:var(--msg-muted);font-size:12px;line-height:16px;text-align:center;flex:none}

/* Conversation header + timeline */
.messages-v2-conversation{height:100%!important;display:grid!important;grid-template-rows:auto minmax(0,1fr) 24px auto!important;background:#fff!important;overflow:hidden!important}
.messages-v2-conversation-header{min-height:76px!important;padding:calc(var(--safe-top,0px) + 8px) 12px 8px 8px!important;display:flex!important;align-items:flex-end!important;gap:8px!important;border-bottom:1px solid var(--msg-divider)!important;background:rgba(255,255,255,.97)!important;backdrop-filter:blur(20px)!important;-webkit-backdrop-filter:blur(20px)!important}
.messages-v2-conversation-header .messages-v2-icon{margin-bottom:0}
.messages-v2-header-avatar{width:40px;height:40px;min-width:40px;margin-bottom:0;border-radius:50%;overflow:hidden;display:grid;place-items:center;background:var(--msg-surface);color:#60636a;font-size:22px}
.messages-v2-header-avatar.channel{border-radius:13px}
.messages-v2-header-avatar img,.messages-v2-header-avatar>span{width:100%;height:100%;object-fit:cover;border-radius:inherit;display:grid;place-items:center;background:var(--msg-accent-soft);color:var(--msg-accent);font-weight:750;font-size:13px}
.messages-v2-conversation-header .chat-header-title-v176{min-width:0;flex:1;padding-bottom:0}
.messages-v2-conversation-header .chat-header-title-v176>strong{display:block!important;margin:0!important;font-size:20px!important;line-height:24px!important;font-weight:740!important;letter-spacing:-.25px!important;color:var(--msg-text)!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.messages-v2-conversation-header .chat-header-title-v176>small{display:block!important;margin-top:1px!important;font-size:12.5px!important;line-height:15px!important;color:var(--msg-muted)!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.messages-v2-timeline{min-height:0!important;overflow-y:auto!important;overscroll-behavior:contain;padding:0 16px 12px!important;background:#fff!important;scrollbar-width:none}
.messages-v2-timeline::-webkit-scrollbar{display:none}
.messages-v2-origin{padding:30px 8px 23px}
.messages-v2-origin-avatar{width:92px;height:92px;margin-bottom:19px;border-radius:50%;display:grid;place-items:center;overflow:hidden;background:var(--msg-accent-soft);color:var(--msg-accent);font-size:28px;font-weight:760}
.messages-v2-origin-avatar img,.messages-v2-origin-avatar>span{width:100%;height:100%;border-radius:inherit;object-fit:cover;display:grid;place-items:center}
.messages-v2-origin h2{margin:0;font-size:34px;line-height:38px;font-weight:760;letter-spacing:-.7px;color:var(--msg-text)}
.messages-v2-origin h3{margin:3px 0 0;font-size:19px;line-height:24px;font-weight:400;color:var(--msg-secondary)}
.messages-v2-origin p{max-width:360px;margin:12px 0 13px;font-size:16px;line-height:22px;color:var(--msg-secondary)}
.messages-v2-role-chip{display:inline-flex;align-items:center;height:30px;padding:0 13px;border-radius:15px;background:var(--msg-surface);color:#55585f;font-size:13px;font-weight:620}
.messages-v2-channel-origin{padding:30px 8px 22px}
.messages-v2-channel-origin>span{width:64px;height:64px;border-radius:18px;display:grid;place-items:center;background:var(--msg-surface);color:#5f636b;font-size:34px}
.messages-v2-channel-origin h2{margin:16px 0 0;font-size:28px;line-height:33px;font-weight:750;letter-spacing:-.45px}
.messages-v2-channel-origin p{margin:8px 0 0;color:var(--msg-secondary);font-size:15px;line-height:21px}
.messages-v2-date-divider{height:38px;display:flex;align-items:center;gap:10px;color:var(--msg-muted);font-size:12.5px;line-height:16px}
.messages-v2-date-divider:before,.messages-v2-date-divider:after{content:"";height:1px;background:var(--msg-divider);flex:1}
.messages-v2-date-divider span{white-space:nowrap}

/* Flat Discord-like message rows */
.messages-v2 .chat-message-v176{position:relative;display:grid!important;grid-template-columns:40px minmax(0,1fr) 44px!important;gap:10px!important;padding:8px 2px 6px!important;border-radius:10px!important;background:transparent;transition:background .11s ease}
.messages-v2 .chat-message-v176:hover,.messages-v2 .chat-message-v176:focus-within{background:rgba(6,6,7,.025)}
.messages-v2 .chat-message-v176.mentioned{background:color-mix(in srgb,var(--msg-accent) 7%,#fff)!important;box-shadow:inset 3px 0 var(--msg-accent)!important}
.messages-v2 .chat-avatar-wrap-v176,.messages-v2 .chat-avatar-v176,.messages-v2 .chat-avatar-fallback-v176{width:40px!important;height:40px!important;border-radius:50%!important}
.messages-v2 .chat-avatar-v176{object-fit:cover}
.messages-v2 .chat-avatar-fallback-v176{display:grid;place-items:center;background:var(--msg-accent-soft)!important;color:var(--msg-accent)!important;font-size:12px!important;font-weight:760!important}
.messages-v2 .chat-message-content-v176{min-width:0;padding-top:0}
.messages-v2 .chat-message-meta-v176{min-height:20px!important;display:flex;align-items:baseline;gap:7px!important}
.messages-v2 .chat-message-meta-v176 strong{font-size:16px!important;line-height:20px!important;font-weight:680!important;color:var(--msg-text)!important}
.messages-v2 .chat-message-meta-v176 time{font-size:13px!important;line-height:16px!important;color:var(--msg-muted)!important}
.messages-v2 .chat-message-meta-v176 em{font-size:12px!important;line-height:15px!important;color:var(--msg-muted)!important;font-style:normal}
.messages-v2 .chat-message-body-v176{margin:1px 0 0!important;font-size:16px!important;line-height:21px!important;color:#242528!important;white-space:pre-wrap;overflow-wrap:anywhere}
.messages-v2 .chat-reply-source-v176{display:block;width:100%;margin:1px 0 4px;padding:2px 0 3px 9px;border:0;border-left:2px solid var(--msg-accent);border-radius:0;background:transparent;text-align:left;overflow:hidden}
.messages-v2 .chat-reply-source-v176 b,.messages-v2 .chat-reply-source-v176 span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.messages-v2 .chat-reply-source-v176 b{color:var(--msg-accent);font-size:13px;line-height:16px;font-weight:680}
.messages-v2 .chat-reply-source-v176 span{margin-top:1px;color:var(--msg-muted);font-size:13px;line-height:16px}
.messages-v2 .chat-attachments-v176{display:grid;gap:6px;margin-top:7px}
.messages-v2 .chat-attachments-v176>button{display:grid;grid-template-columns:36px minmax(0,1fr);gap:9px;align-items:center;width:min(100%,360px);min-height:54px;padding:8px 10px;border-radius:12px;background:#fff;border:1px solid var(--msg-divider);text-align:left;color:var(--msg-text)}
.messages-v2 .chat-attachments-v176>button:active{background:var(--msg-surface)}
.messages-v2 .chat-attachments-v176>button>span{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:var(--msg-surface);color:var(--msg-accent);font-size:17px}
.messages-v2 .chat-attachments-v176 strong,.messages-v2 .chat-attachments-v176 small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.messages-v2 .chat-attachments-v176 strong{font-size:14.5px;line-height:18px;font-weight:680}
.messages-v2 .chat-attachments-v176 small{margin-top:2px;color:var(--msg-muted);font-size:12px;line-height:15px}
.messages-v2 .chat-reactions-v176{display:flex;align-items:center;flex-wrap:wrap;gap:5px;margin-top:6px;min-height:0}
.messages-v2 .chat-reaction-pill-v176{height:28px;min-width:43px;padding:0 9px;border-radius:9px;background:var(--msg-surface);border:1px solid transparent;color:#5d6068;display:flex;align-items:center;gap:5px}
.messages-v2 .chat-reaction-pill-v176 span{width:17px;height:17px;display:grid;place-items:center;font-size:16px}
.messages-v2 .chat-reaction-pill-v176 img{width:17px;height:17px;display:block}
.messages-v2 .chat-reaction-pill-v176 b{font-size:12px!important;line-height:14px;font-weight:680;color:#5d6068}
.messages-v2 .chat-reaction-pill-v176.mine{border-color:color-mix(in srgb,var(--msg-accent) 35%,transparent)!important;background:var(--msg-accent-soft)!important;color:var(--msg-accent)!important}
.messages-v2-message-more{align-self:start;width:44px;height:44px;border-radius:22px;background:transparent;color:#7b7f87;font-size:15px;letter-spacing:1px;opacity:.48;display:grid;place-items:center;padding:0}
.messages-v2-message-more:active,.messages-v2-message-more.active,.chat-message-v176:focus-within .messages-v2-message-more{background:var(--msg-surface);opacity:1}
.messages-v2-message-menu{position:absolute;z-index:25;right:4px;top:48px;width:188px;padding:6px;border:1px solid var(--msg-divider);border-radius:14px;background:#fff;box-shadow:0 12px 34px rgba(20,22,26,.16);display:grid;gap:2px}
.messages-v2-message-menu>button{height:42px;border-radius:9px;background:transparent;color:var(--msg-text);display:grid;grid-template-columns:28px minmax(0,1fr);align-items:center;text-align:left;padding:0 10px;font-size:14px;font-weight:620}
.messages-v2-message-menu>button:active{background:var(--msg-surface)}
.messages-v2-message-menu>button.danger{color:var(--msg-danger)}
.messages-v2-reaction-menu{display:grid;grid-template-columns:repeat(5,1fr);gap:3px;padding:5px 3px 2px;border-top:1px solid var(--msg-divider)}
.messages-v2-reaction-menu button{width:34px;height:34px;border-radius:9px;background:transparent;display:grid;place-items:center;font-size:19px}
.messages-v2-reaction-menu button:active{background:var(--msg-surface)}
.messages-v2-reaction-menu img{width:19px;height:19px}

/* Typing + composer */
.messages-v2 .chat-typing-v176{height:24px!important;min-height:24px!important;display:flex;align-items:center;gap:7px;padding:0 72px 0 16px!important;background:#fff;color:var(--msg-muted)!important;font-size:12.5px!important;line-height:16px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.messages-v2 .chat-typing-v176>span{display:flex;gap:2px;flex:none}
.messages-v2 .chat-typing-v176 i{width:4px;height:4px;border-radius:50%;background:#777b83}
.messages-v2-composer-wrap{position:relative!important;z-index:8!important;flex:none!important;padding:8px 10px calc(10px + var(--safe-bottom,0px))!important;border-top:1px solid rgba(6,6,7,.07)!important;background:#fff!important}
.messages-v2-composer{display:grid!important;grid-template-columns:44px minmax(0,1fr) 44px!important;gap:7px!important;align-items:end!important;padding:0!important}
.messages-v2-attach{position:relative!important;width:44px!important;height:44px!important;border-radius:22px!important;display:grid!important;place-items:center!important;background:var(--msg-surface)!important;color:#52555c!important;font-size:27px!important;font-weight:300!important;overflow:hidden!important}
.messages-v2-attach:active{background:var(--msg-pressed)!important}
.messages-v2-attach input{position:absolute;inset:0;opacity:0;cursor:pointer}
.messages-v2-field-shell{position:relative;min-height:44px;border-radius:22px;background:var(--msg-surface);overflow:hidden}
.messages-v2-field-shell textarea{display:block!important;width:100%!important;height:44px;min-height:44px!important;max-height:120px!important;resize:none!important;overflow-y:auto!important;border:0!important;outline:0!important;box-shadow:none!important;background:transparent!important;padding:11px 44px 10px 15px!important;color:var(--msg-text)!important;font-family:inherit!important;font-size:16px!important;line-height:21px!important;border-radius:22px!important}
.messages-v2-field-shell textarea::placeholder{color:#71757d}
.messages-v2-field-shell textarea:focus{box-shadow:none!important;border:0!important}
.messages-v2-emoji-button{position:absolute;right:2px;bottom:2px;width:40px;height:40px;border-radius:20px;background:transparent;color:#62666e;font-size:24px;display:grid;place-items:center;padding:0}
.messages-v2-emoji-button:active,.messages-v2-emoji-button.active{background:#e3e4e7}
.messages-v2-send{width:44px!important;height:44px!important;border-radius:22px!important;background:var(--msg-accent)!important;color:#fff!important;font-size:21px!important;font-weight:780!important;box-shadow:none!important;transition:transform .11s ease,opacity .11s ease,background .11s ease}
.messages-v2-send:active:not(:disabled){transform:scale(.94)}
.messages-v2-send:disabled{background:var(--msg-surface)!important;color:#a1a5ad!important;opacity:.72!important}
.messages-v2 .chat-compose-mode-v176{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 7px;padding:7px 10px;border-radius:11px;background:var(--msg-accent-soft);border-left:3px solid var(--msg-accent)}
.messages-v2 .chat-compose-mode-v176>span{min-width:0;color:var(--msg-muted);font-size:12px;line-height:15px}
.messages-v2 .chat-compose-mode-v176 strong{color:var(--msg-accent);font-weight:700}
.messages-v2 .chat-compose-mode-v176 small{display:block;margin-top:2px;max-width:300px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12px}
.messages-v2 .chat-compose-mode-v176>button{width:32px;height:32px;border-radius:16px;background:transparent;color:var(--msg-muted);font-size:20px;flex:none}
.messages-v2 .chat-compose-mode-v176.edit{border-left-color:#d28a21;background:#fff4df}
.messages-v2 .chat-compose-mode-v176.edit strong{color:#a96512}
.messages-v2 .chat-pending-files-v176{display:flex;gap:6px;overflow-x:auto;padding:0 0 7px;scrollbar-width:none}
.messages-v2 .chat-pending-files-v176::-webkit-scrollbar{display:none}
.messages-v2 .chat-pending-files-v176>span{position:relative;flex:0 0 auto;max-width:220px;padding:8px 32px 8px 10px;border-radius:12px;background:var(--msg-surface);border:1px solid var(--msg-divider)}
.messages-v2 .chat-pending-files-v176 b,.messages-v2 .chat-pending-files-v176 small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.messages-v2 .chat-pending-files-v176 b{font-size:13px;line-height:16px}
.messages-v2 .chat-pending-files-v176 small{margin-top:2px;color:var(--msg-muted);font-size:11px;line-height:14px}
.messages-v2 .chat-pending-files-v176 button{position:absolute;right:3px;top:3px;width:28px;height:28px;border-radius:14px;background:transparent;color:#757981;font-size:17px}
.messages-v2-emoji-panel{position:absolute;z-index:30;left:10px;right:10px;bottom:calc(62px + var(--safe-bottom,0px));padding:9px;border:1px solid var(--msg-divider);border-radius:18px;background:#fff;box-shadow:0 14px 38px rgba(20,22,26,.18)}
.messages-v2-emoji-panel>div{display:flex;align-items:center;justify-content:space-between;padding:0 4px 6px 8px}
.messages-v2-emoji-panel>div strong{font-size:13px;color:var(--msg-muted);text-transform:uppercase;letter-spacing:.04em}
.messages-v2-emoji-panel>div button{width:36px;height:36px;border-radius:18px;background:transparent;color:#6e727a;font-size:21px}
.messages-v2-emoji-panel>section{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:2px;max-height:176px;overflow-y:auto}
.messages-v2-emoji-panel>section button{height:40px;border-radius:10px;background:transparent;font-size:24px;display:grid;place-items:center;padding:0}
.messages-v2-emoji-panel>section button:active{background:var(--msg-surface)}
.messages-v2-readonly{min-height:54px!important;margin:8px 10px calc(10px + var(--safe-bottom,0px))!important;padding:0 16px!important;border:0!important;border-radius:27px!important;background:var(--msg-surface)!important;color:var(--msg-muted)!important;font-size:14px!important;line-height:18px!important;display:grid;place-items:center;text-align:center}

/* Info sheet */
.messages-v2-info-sheet{position:absolute!important;z-index:45!important;inset:0 0 0 auto!important;width:min(88vw,340px)!important;overflow-y:auto!important;background:#fff!important;border-left:1px solid var(--msg-divider)!important;box-shadow:-16px 0 38px rgba(28,25,27,.14)!important;padding:calc(var(--safe-top,0px) + 14px) 16px calc(18px + var(--safe-bottom,0px))!important;animation:chatContextInV176 .18s ease}
.messages-v2 .chat-context-head-v176{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding-bottom:12px;border-bottom:1px solid var(--msg-divider)}
.messages-v2 .chat-context-head-v176 span{color:var(--msg-accent)!important;font-size:12px!important;line-height:14px;font-weight:700!important;letter-spacing:.04em!important}
.messages-v2 .chat-context-head-v176 strong{margin-top:3px!important;font-size:20px!important;line-height:24px!important;color:var(--msg-text)!important}
.messages-v2 .chat-context-head-v176 button{width:44px!important;height:44px!important;border-radius:22px!important;background:var(--msg-surface)!important;color:#61656d!important;font-size:25px!important;flex:none}
.messages-v2-info-profile{padding:24px 4px 16px}
.messages-v2-info-profile>span{width:82px;height:82px;border-radius:50%;display:grid;place-items:center;overflow:hidden;background:var(--msg-accent-soft);color:var(--msg-accent);font-size:26px;font-weight:750}
.messages-v2-info-profile img,.messages-v2-info-profile>span>span{width:100%;height:100%;object-fit:cover;border-radius:inherit;display:grid;place-items:center}
.messages-v2-info-profile>strong,.messages-v2-info-profile>small{display:block}
.messages-v2-info-profile>strong{margin-top:14px;font-size:22px;line-height:27px;font-weight:740}
.messages-v2-info-profile>small{margin-top:4px;color:var(--msg-muted);font-size:14px;line-height:18px}
.messages-v2 .chat-context-v176>p{color:var(--msg-secondary)!important;font-size:14px!important;line-height:20px!important}
.messages-v2 .chat-context-v176 h4{margin:17px 0 8px!important;font-size:12px!important;line-height:14px;color:var(--msg-muted)!important;text-transform:uppercase;letter-spacing:.04em}
.messages-v2 .chat-member-list-v176{display:grid;gap:3px}
.messages-v2 .chat-member-list-v176>div{display:grid;grid-template-columns:44px minmax(0,1fr);gap:10px;align-items:center;min-height:58px;padding:7px 5px;border-radius:10px}
.messages-v2 .chat-member-list-v176>div:active{background:var(--msg-surface)}
.messages-v2 .chat-member-list-v176 img,.messages-v2 .chat-member-list-v176>div>span{width:44px!important;height:44px!important;border-radius:50%!important;object-fit:cover;display:grid;place-items:center;background:var(--msg-accent-soft)!important;color:var(--msg-accent)!important}
.messages-v2 .chat-member-list-v176 strong,.messages-v2 .chat-member-list-v176 small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.messages-v2 .chat-member-list-v176 strong{font-size:15px!important;line-height:19px!important}
.messages-v2 .chat-member-list-v176 small{margin-top:2px!important;color:var(--msg-muted)!important;font-size:12.5px!important;line-height:16px!important}

/* Keyboard + reduced motion */
body.chat-keyboard-open-v181 .messages-v2-composer-wrap{padding-bottom:6px!important}
body.chat-keyboard-open-v181 .messages-v2{border-radius:0!important}
@media(max-width:390px){
  .messages-v2-home-header{padding-left:18px}.messages-v2-home-actions{padding-left:18px;padding-right:18px}.messages-v2-home-search{margin-left:18px;margin-right:18px}
  .messages-v2-timeline{padding-left:12px!important;padding-right:12px!important}
  .messages-v2 .chat-message-v176{grid-template-columns:38px minmax(0,1fr) 42px!important;gap:8px!important}
  .messages-v2 .chat-avatar-wrap-v176,.messages-v2 .chat-avatar-v176,.messages-v2 .chat-avatar-fallback-v176{width:38px!important;height:38px!important}
  .messages-v2-message-more{width:42px;height:42px}
  .messages-v2 .chat-message-meta-v176 strong{font-size:15.5px!important}.messages-v2 .chat-message-body-v176{font-size:15.5px!important;line-height:20.5px!important}
  .messages-v2-emoji-panel>section{grid-template-columns:repeat(7,minmax(0,1fr))}
}
@media(prefers-reduced-motion:reduce){.messages-v2-directory,.messages-v2 .chat-message-v176,.messages-v2-send{animation:none!important;transition:none!important}.messages-v2 .chat-typing-v176 i{animation:none!important}}

/* v1.8.6 — Student Digital ID back + signature */
.digital-id-signature-v186{position:absolute;left:58px;top:280.68px;width:132px;height:50px;object-fit:contain;object-position:center;z-index:4;mix-blend-mode:multiply}
.digital-id-emergency-info-v186{position:absolute;left:11px;top:31px;width:149px;height:37px;text-align:center;z-index:5}
.digital-id-guardian-v186{left:5px;top:1px;width:139px;height:14px;justify-content:center;text-align:center;color:#09090b;font-family:DigitalIDGaret,Arial,sans-serif;font-size:9.9px;line-height:1;font-weight:800}
.digital-id-emergency-label-v186{position:absolute;left:5px;top:17px;width:139px;height:6px;display:flex;align-items:center;justify-content:center;color:#52525b;font-family:DigitalIDGaret,Arial,sans-serif;font-size:3.5px;line-height:1;font-weight:500}
.digital-id-contact-v186{left:11px;top:24px;width:127px;height:12px;justify-content:center;text-align:center;color:#09090b;font-family:DigitalIDArialUnicode,Arial,sans-serif;font-size:7.6px;line-height:1;font-weight:700}
.digital-id-emergency-qr-v186{position:absolute;left:167.7px;top:30.5px;width:35px;height:39.7px;z-index:6;text-align:center;color:#4b4b53;font-family:DigitalIDGaret,Arial,sans-serif;font-weight:750;line-height:1}
.digital-id-emergency-qr-v186>svg{display:block;width:34.4px;height:34.4px;margin:0 auto;shape-rendering:crispEdges;background:#fff}
.digital-id-emergency-qr-v186>span{position:absolute;left:-4px;right:-4px;top:35.6px;height:3.5px;display:flex;align-items:center;justify-content:center;font-size:2.65px;white-space:nowrap}
.digital-id-qr-unavailable-v186{width:34.4px;height:34.4px;margin:0 auto;display:grid;place-items:center;border:1px solid #ddd;color:#aaa;font-size:5px;background:#fff}
.digital-id-verification-v186{left:11px!important;top:77px!important;width:200px!important;height:54px!important}
.digital-id-verification-v186 .digital-id-verify-title{left:0!important;top:0!important;width:200px!important;height:6px!important;font-size:4.7px!important;letter-spacing:.55px!important}
.digital-id-verification-v186 .digital-id-barcode{left:0!important;top:7px!important;width:200px!important;height:38px!important;border:0!important;box-shadow:none!important}
.digital-id-verification-v186 .digital-id-verify-ref{display:none!important}
.digital-id-verification-v186 .digital-id-verify-meta{left:0!important;top:47px!important;width:200px!important;height:6px!important;font-size:3.7px!important;font-weight:600!important;color:#555!important}

/* v1.8.6 — crash-safe in-WebView QR camera */
.qr-scanner-safe-v186{position:relative;overflow:hidden;min-height:430px;background:#10151d}
.qr-scanner-safe-v186 video{display:block;position:absolute;inset:0;width:100%;height:100%;max-height:none;object-fit:cover;background:#10151d;border-radius:20px}
.qr-scanner-safe-v186 #adminQrScannerStatus{padding-top:7px;text-shadow:0 1px 4px rgba(0,0,0,.55)}

/* v1.8.6 — LIS profile data and handwritten signature */
.lis-choice-grid-v186{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.lis-choice-v186{display:flex!important;align-items:center;gap:8px;padding:10px 11px;border:1px solid var(--line);border-radius:13px;background:#fff;font-size:11px!important;font-weight:700!important;color:var(--ink)!important;margin:0!important}
.lis-choice-v186 input{width:17px;height:17px;accent-color:var(--wine);flex:0 0 auto}

.lis-summary-note-v186{margin:-6px 3px 16px;color:var(--muted);font-size:10px;line-height:1.45}
.lis-summary-card-v186 .detail-row p{margin:3px 0 0;color:var(--muted);font-size:9.5px;line-height:1.35}
#lisProfileSectionV186 .profile-form-subhead p{max-width:64ch}
.profile-signature-card-v186{display:grid;grid-template-columns:1fr auto;align-items:center;gap:12px;padding:13px;border-radius:16px;background:#fff;border:1px solid var(--line)}
.profile-signature-preview-v186{height:54px;min-width:0;border-bottom:1px solid #bbb;display:flex;align-items:flex-end;justify-content:center;overflow:hidden}
.profile-signature-preview-v186 img{max-width:100%;max-height:50px;object-fit:contain;mix-blend-mode:multiply}
.profile-signature-preview-v186 span{align-self:center;font-size:11px;color:var(--muted)}
.profile-signature-actions-v186{display:flex;flex-direction:column;gap:6px}.profile-signature-actions-v186 button{font-size:11px;padding:8px 10px;border-radius:10px;background:var(--wine-soft);color:var(--wine);font-weight:800}
.signature-modal-v186{position:fixed;inset:0;z-index:9999;background:#f7f4f2;display:flex;flex-direction:column;padding:max(18px,env(safe-area-inset-top)) 18px max(18px,env(safe-area-inset-bottom));touch-action:none}
.signature-modal-head-v186{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px}.signature-modal-head-v186 h2{margin:3px 0 4px;font-size:24px}.signature-modal-head-v186 p{margin:0;color:var(--muted);font-size:11px;line-height:1.45}.signature-modal-close-v186{width:40px;height:40px;border-radius:13px;background:#fff;border:1px solid var(--line);font-size:24px}
.signature-canvas-shell-v186{position:relative;flex:1;min-height:250px;background:#fff;border:1px solid #d8d2d0;border-radius:18px;overflow:hidden;box-shadow:0 10px 30px rgba(30,20,20,.08)}.signature-canvas-shell-v186 canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none}.signature-line-v186{position:absolute;left:7%;right:7%;bottom:16%;height:1px;background:#bbb;pointer-events:none}.signature-hint-v186{position:absolute;left:0;right:0;bottom:9%;text-align:center;font-size:11px;color:#aaa;pointer-events:none}
.signature-modal-actions-v186{display:grid;grid-template-columns:auto auto 1fr;gap:9px;margin-top:14px}.signature-modal-actions-v186 button{min-height:44px;border-radius:13px;font-weight:800}.signature-modal-actions-v186 .primary{background:var(--wine);color:#fff}
@media(max-width:520px){.lis-choice-grid-v186{grid-template-columns:1fr}.signature-modal-v186{padding-left:12px;padding-right:12px}}


/* EnlightN v1.8.7 — deconstructed Point Converter mechanical rig. */
.shop-v3-resources>div{transition:transform .22s ease,box-shadow .22s ease}.shop-v3-resources>div.flash{animation:shopWalletFlashV187 .44s cubic-bezier(.2,.8,.2,1)}@keyframes shopWalletFlashV187{45%{transform:scale(1.07);box-shadow:0 0 0 5px rgba(180,44,83,.12),0 10px 24px rgba(50,25,30,.10)}}
.shop-v3-converter-rig-card{margin-top:13px;padding:12px 10px 13px;border-radius:21px;background:radial-gradient(circle at 50% 19%,#4b2633 0,#2d1821 51%,#1d1218 100%);border:1px solid rgba(101,32,45,.18);box-shadow:0 12px 28px rgba(66,27,36,.14);color:#fff;overflow:hidden}
.shop-v3-converter-rig-head{display:flex;align-items:center;justify-content:space-between;gap:9px;padding:0 3px 5px}.shop-v3-converter-rig-head span{display:block;color:#ff9caa;font-size:6.3px;font-weight:900;letter-spacing:.13em}.shop-v3-converter-rig-head strong{display:block;margin-top:3px;font-size:10px;line-height:1.15}.shop-v3-converter-rig-head small{display:block;margin-top:3px;color:#c8b9bd;font-size:6.6px}.shop-v3-converter-rig-flow{display:flex;align-items:center;gap:3px;flex:none}.shop-v3-converter-rig-flow img{width:27px;height:27px;object-fit:contain;filter:drop-shadow(0 3px 5px rgba(0,0,0,.32))}.shop-v3-converter-rig-flow i{font-style:normal;color:#f1ccd1;font-size:11px}
.shop-v3-converter-stage{position:relative;width:min(100%,360px);aspect-ratio:1122/1402;margin:-3px auto -9px;isolation:isolate;perspective:900px;transform:translateZ(0)}.shop-v3-converter-asset{position:absolute;object-fit:contain;pointer-events:none;user-select:none}.shop-v3-converter-asset.chassis{z-index:1;left:0;top:0;width:100%;height:100%}.shop-v3-converter-asset.intake{z-index:8;left:1%;top:29%;width:39.5%;height:auto}.shop-v3-converter-asset.rotor{z-index:8;left:28.5%;top:31.6%;width:43%;height:auto}.shop-v3-converter-asset.chamber{z-index:5;left:28.9%;top:34.2%;width:42%;height:auto;opacity:.9}.shop-v3-converter-asset.output{z-index:8;left:61.1%;top:62%;width:34%;height:auto}.shop-v3-converter-asset.core{z-index:12;left:32.7%;top:11.7%;width:34.8%;height:auto;mix-blend-mode:screen;transform-origin:50% 54%;animation:shopConverterCoreIdleV187 4.6s ease-in-out infinite}
.shop-v3-converter-mechanics{position:absolute;inset:0;z-index:7;pointer-events:none;transform-style:preserve-3d}.shop-v3-converter-mechanics .ring{position:absolute;border-radius:50%;transform-style:preserve-3d;will-change:transform,filter}.shop-v3-converter-mechanics .ring:before{content:"";position:absolute;inset:0;border-radius:50%;background:repeating-conic-gradient(from 0deg,#f2b640 0 8deg,#7d3b15 8deg 14deg,#ffdb77 14deg 21deg,#8a4219 21deg 29deg);-webkit-mask:radial-gradient(circle,transparent 0 57%,#000 58% 74%,transparent 75%);mask:radial-gradient(circle,transparent 0 57%,#000 58% 74%,transparent 75%);filter:drop-shadow(0 0 5px rgba(255,176,56,.53))}.shop-v3-converter-mechanics .top-a{left:38.2%;top:38%;width:23.7%;aspect-ratio:1}.shop-v3-converter-mechanics .top-b{left:40.8%;top:39.4%;width:18.5%;aspect-ratio:1}.shop-v3-converter-mechanics .gear-a{left:40.1%;top:50.8%;width:19.7%;aspect-ratio:1}.shop-v3-converter-mechanics .gear-b{left:38.6%;top:59.5%;width:22.6%;aspect-ratio:1}.shop-v3-converter-mechanics .gear-c{left:40.3%;top:68.3%;width:19%;aspect-ratio:1}.shop-v3-converter-mechanics .top-a,.shop-v3-converter-mechanics .top-b{transform:rotateX(67deg)}.shop-v3-converter-mechanics .gear-a,.shop-v3-converter-mechanics .gear-b,.shop-v3-converter-mechanics .gear-c{transform:rotateX(69deg)}
.shop-v3-converter-stage.idle .top-a{animation:shopRigRingAIdle 10s linear infinite}.shop-v3-converter-stage.idle .top-b{animation:shopRigRingBIdle 8s linear infinite}.shop-v3-converter-stage.idle .gear-a{animation:shopRigGearAIdle 7.5s linear infinite}.shop-v3-converter-stage.idle .gear-b{animation:shopRigGearBIdle 9s linear infinite}.shop-v3-converter-stage.idle .gear-c{animation:shopRigGearAIdle 11s linear infinite reverse}.shop-v3-converter-stage.running .top-a{animation:shopRigRingARun 1.1s linear infinite}.shop-v3-converter-stage.running .top-b{animation:shopRigRingBRun .78s linear infinite}.shop-v3-converter-stage.running .gear-a{animation:shopRigGearARun .8s linear infinite}.shop-v3-converter-stage.running .gear-b{animation:shopRigGearBRun .62s linear infinite}.shop-v3-converter-stage.running .gear-c{animation:shopRigGearARun .94s linear infinite reverse}@keyframes shopRigRingAIdle{to{transform:rotateX(67deg) rotateZ(360deg)}}@keyframes shopRigRingBIdle{to{transform:rotateX(67deg) rotateZ(-360deg)}}@keyframes shopRigGearAIdle{to{transform:rotateX(69deg) rotateZ(360deg)}}@keyframes shopRigGearBIdle{to{transform:rotateX(69deg) rotateZ(-360deg)}}@keyframes shopRigRingARun{to{transform:rotateX(67deg) rotateZ(360deg)}}@keyframes shopRigRingBRun{to{transform:rotateX(67deg) rotateZ(-360deg)}}@keyframes shopRigGearARun{to{transform:rotateX(69deg) rotateZ(360deg)}}@keyframes shopRigGearBRun{to{transform:rotateX(69deg) rotateZ(-360deg)}}
@keyframes shopConverterCoreIdleV187{0%,100%{transform:translateY(0) scale(.99);filter:brightness(1)}50%{transform:translateY(-4px) scale(1.015);filter:brightness(1.08)}}.shop-v3-converter-stage.running .core{animation:shopConverterCoreChargeV187 .72s ease-in-out infinite}@keyframes shopConverterCoreChargeV187{0%,100%{transform:translateY(-2px) scale(.98);filter:brightness(1.06)}50%{transform:translateY(-8px) scale(1.065);filter:brightness(1.42) drop-shadow(0 0 18px #ffb5ff)}}
.shop-v3-converter-gate{position:absolute;z-index:14;left:31%;top:49.2%;width:7.4%;height:2.6%;border-radius:999px;background:linear-gradient(90deg,#7e3b11,#ffd76d,#9c4d12);box-shadow:0 2px 5px rgba(0,0,0,.55),0 0 7px #ffcf65;transform-origin:8% 50%;opacity:.92}.shop-v3-converter-stage.running .shop-v3-converter-gate{animation:shopConverterGateV187 .62s cubic-bezier(.2,.8,.2,1) 2}@keyframes shopConverterGateV187{0%,100%{transform:rotate(0)}42%{transform:rotate(-30deg)}68%{transform:rotate(-18deg)}}
.shop-v3-converter-intake-light{position:absolute;z-index:9;left:15%;top:44%;width:28%;height:20%;border-radius:50%;background:radial-gradient(ellipse at 60% 50%,rgba(255,217,97,.4) 0,rgba(255,188,38,.22) 35%,transparent 70%);filter:blur(7px);opacity:.35;mix-blend-mode:screen}.shop-v3-converter-stage.running .shop-v3-converter-intake-light{animation:shopConverterIntakePulseV187 .44s ease-in-out infinite}@keyframes shopConverterIntakePulseV187{50%{opacity:.9;filter:blur(5px) brightness(1.35)}}
.shop-v3-converter-chamber-glow{position:absolute;z-index:6;left:36.5%;top:46%;width:28%;height:34%;border-radius:46%;background:radial-gradient(ellipse,rgba(255,142,244,.48) 0,rgba(158,99,255,.26) 34%,transparent 70%);filter:blur(14px);opacity:.24;mix-blend-mode:screen}.shop-v3-converter-stage.running .shop-v3-converter-chamber-glow{animation:shopConverterChamberPulseV187 .54s ease-in-out infinite}@keyframes shopConverterChamberPulseV187{50%{opacity:.8;transform:scale(1.08)}}
.shop-v3-converter-output-glow{position:absolute;z-index:9;left:65%;top:69%;width:27%;height:18%;border-radius:50%;background:radial-gradient(ellipse,rgba(78,190,255,.68),transparent 68%);filter:blur(10px);opacity:0;mix-blend-mode:screen}.shop-v3-converter-output-glow.success{animation:shopConverterOutputPulseV187 .55s ease-out}@keyframes shopConverterOutputPulseV187{0%{opacity:0;transform:scale(.75)}45%{opacity:.95;transform:scale(1.08)}100%{opacity:0;transform:scale(1.28)}}.shop-v3-converter-asset.output.success{animation:shopConverterTrayPulseV187 .48s cubic-bezier(.2,.8,.2,1)}@keyframes shopConverterTrayPulseV187{45%{transform:translateY(2px) scale(1.025);filter:brightness(1.35) drop-shadow(0 0 14px rgba(85,188,255,.6))}}
.shop-v3-converter-dynamic{position:absolute;inset:0;z-index:25;pointer-events:none;overflow:visible}.shop-v3-converter-gem{position:absolute;width:7.1%;aspect-ratio:1;object-fit:contain;transform:translate(-50%,-50%);filter:drop-shadow(0 5px 6px rgba(0,0,0,.6));will-change:left,top,transform,opacity,filter}.shop-v3-converter-flash{position:absolute;width:10%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#fff 0 12%,#fff3a9 20%,rgba(255,133,238,.67) 42%,transparent 72%);transform:translate(-50%,-50%) scale(.2);opacity:0;filter:blur(2px);z-index:24}.shop-v3-converter-spark{position:absolute;width:5px;height:5px;border-radius:50%;background:#fff5b9;box-shadow:0 0 9px #ffe45e,0 0 18px #ff77e6;opacity:0}.shop-v3-converter-wallet-gem{position:fixed;z-index:9999;width:44px;height:44px;object-fit:contain;pointer-events:none;filter:drop-shadow(0 5px 7px rgba(0,0,0,.42))}
.shop-v3-converter-qty-row{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:0 2px 7px}.shop-v3-converter-qty{height:44px;border:1px solid rgba(255,255,255,.13);border-radius:13px;background:rgba(255,255,255,.055);color:#fff;display:grid;grid-template-columns:minmax(0,1fr) 18px;align-items:center;padding:4px 7px;cursor:pointer}.shop-v3-converter-qty.active{background:rgba(141,29,43,.58);border-color:rgba(255,150,166,.65);box-shadow:inset 0 0 0 1px rgba(255,255,255,.08),0 0 14px rgba(181,32,50,.13)}.shop-v3-converter-qty:disabled{opacity:.3}.shop-v3-converter-qty-gems{position:relative;height:32px;display:flex;align-items:center;justify-content:center}.shop-v3-converter-qty-gems img{width:24px;height:24px;object-fit:contain;margin-left:-7px;filter:drop-shadow(0 2px 3px rgba(0,0,0,.25))}.shop-v3-converter-qty-gems img:first-child{margin-left:0}.shop-v3-converter-qty b{font-size:10px;text-align:right}.shop-v3-converter-go{display:block;width:100%;height:39px;border:0;border-radius:12px;background:linear-gradient(180deg,#b92130,#891722);color:#fff;font-size:8px;font-weight:900;letter-spacing:.02em}.shop-v3-converter-go:disabled{opacity:.42}.shop-v3-converter-status{height:13px;margin-top:4px;color:#d9c9cd;font-size:6.5px;text-align:center}
.shop-converting-v187 .shop-v3-tabs,.shop-converting-v187 .shop-v3-carousel,.shop-converting-v187 .shop-v3-dots,.shop-converting-v187 .shop-v3-converter-qty-row,.shop-converting-v187 .shop-v3-converter-go,.shop-converting-v187 .shop-v3-major,.shop-converting-v187 .shop-v3-history{pointer-events:none}.shop-converting-v187 .shop-v3-converter-go{opacity:.55}
@media(max-width:390px){.shop-v3-converter-stage{width:min(100%,332px)}.shop-v3-converter-rig-card{padding-left:7px;padding-right:7px}.shop-v3-converter-rig-head strong{font-size:9px}}
@media(prefers-reduced-motion:reduce){.shop-v3-converter-stage *{animation-duration:.001ms!important;animation-iteration-count:1!important}.shop-v3-converter-wallet-gem{display:none!important}}

/* v1.9.0 — explicit, user-controlled release updates */
.update-toggle-v190{cursor:default}
.update-toggle-v190 input[type="checkbox"]{appearance:none;-webkit-appearance:none;width:42px;height:24px;border-radius:999px;background:#d9d2d1;position:relative;flex:0 0 auto;transition:.2s ease;outline:none}
.update-toggle-v190 input[type="checkbox"]::after{content:"";position:absolute;width:18px;height:18px;left:3px;top:3px;border-radius:50%;background:#fff;box-shadow:0 2px 6px rgba(46,32,34,.22);transition:.2s ease}
.update-toggle-v190 input[type="checkbox"]:checked{background:var(--wine)}
.update-toggle-v190 input[type="checkbox"]:checked::after{transform:translateX(18px)}


/* v1.9.2 — profile photo crop at the existing upload point only */
.profile-photo-large img{object-fit:fill}
.profile-crop-scrim-v191{position:fixed;inset:0;z-index:174;background:rgba(19,13,15,.54);backdrop-filter:blur(9px);-webkit-backdrop-filter:blur(9px)}
.profile-crop-sheet-v191{position:fixed;z-index:175;left:50%;bottom:0;transform:translateX(-50%);width:min(100%,620px);padding:16px 18px calc(18px + var(--safe-bottom));border-radius:28px 28px 0 0;background:#fff;box-shadow:0 -22px 70px rgba(29,15,18,.28)}
.profile-crop-head-v191{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.profile-crop-head-v191 h2{margin:2px 0 4px;font-size:24px;letter-spacing:-.04em}.profile-crop-head-v191 p{margin:0;max-width:46ch;color:var(--muted);font-size:11px;line-height:1.45}
.profile-crop-stage-v191{position:relative;width:min(78vw,330px);aspect-ratio:99.2/98.6;margin:18px auto 15px;overflow:hidden;background:#171214;border-radius:22px;touch-action:none;cursor:grab;box-shadow:0 0 0 1px rgba(255,255,255,.12),0 14px 32px rgba(37,22,25,.18)}
.profile-crop-stage-v191.dragging{cursor:grabbing}.profile-crop-stage-v191>img{position:absolute;max-width:none;max-height:none;user-select:none;-webkit-user-drag:none;pointer-events:none;will-change:left,top,width,height}
.profile-crop-grid-v191{position:absolute;inset:0;pointer-events:none;border:2px solid rgba(255,255,255,.94);border-radius:22px;background:linear-gradient(90deg,transparent 33.1%,rgba(255,255,255,.34) 33.33%,rgba(255,255,255,.34) 33.7%,transparent 33.9%,transparent 66.1%,rgba(255,255,255,.34) 66.33%,rgba(255,255,255,.34) 66.7%,transparent 66.9%),linear-gradient(0deg,transparent 33.1%,rgba(255,255,255,.34) 33.33%,rgba(255,255,255,.34) 33.7%,transparent 33.9%,transparent 66.1%,rgba(255,255,255,.34) 66.33%,rgba(255,255,255,.34) 66.7%,transparent 66.9%);box-shadow:inset 0 0 0 999px rgba(0,0,0,.03)}
.profile-crop-zoom-v191{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;margin:0 auto 15px;max-width:390px}.profile-crop-zoom-v191 span{font-size:11px;font-weight:850;color:var(--muted)}.profile-crop-zoom-v191 input{width:100%;accent-color:var(--wine)}.profile-crop-zoom-v191 button{padding:7px 9px;border-radius:10px;background:var(--wine-soft);color:var(--wine);font-size:10px;font-weight:850}
.profile-crop-actions-v191{display:grid;grid-template-columns:1fr 1.35fr;gap:9px;max-width:390px;margin:0 auto}.profile-crop-actions-v191 button{min-height:45px;border-radius:14px;font-size:12px;font-weight:900}.profile-crop-actions-v191 .secondary{background:#f2eeee;color:var(--ink)}.profile-crop-actions-v191 .primary{background:var(--wine);color:#fff}.profile-crop-actions-v191 button:disabled{opacity:.6}
@media(min-width:700px){.profile-crop-sheet-v191{bottom:50%;transform:translate(-50%,50%);border-radius:28px;max-height:92vh;overflow:auto}}
