:root{font-family:"Trebuchet MS","Arial Rounded MT Bold",Arial,sans-serif;color:#111a46;background:#f7faff}*{box-sizing:border-box}body{margin:0}button,a{font:inherit;-webkit-tap-highlight-color:transparent}.portal-shell{--portal-primary:#4f46e5;min-height:100vh;background-color:#f7faff;background-position:center;background-size:cover;background-attachment:fixed}.portal-shell.teacher{background-color:#f3fbf9;background-image:radial-gradient(circle at 78% 4%,#dff7f1 0,transparent 28%),linear-gradient(135deg,#f8fbff,#edf8f6 54%,#f8fafc)}.portal-header{min-height:124px;display:grid;grid-template-columns:minmax(250px,.8fr) minmax(310px,1.15fr) auto;align-items:center;gap:clamp(18px,3vw,46px);padding:14px clamp(18px,2.7vw,42px);border-bottom:1px solid rgba(90,108,180,.12);background:rgba(255,255,255,.9);backdrop-filter:blur(18px);position:sticky;top:0;z-index:20}.brand-lockup{display:flex;align-items:center;gap:15px;min-width:0}.brand-lockup img{width:172px;height:82px;object-fit:contain;object-position:left center}.brand-lockup p{max-width:130px;margin:0;padding-left:14px;border-left:1px solid #aab4cf;color:#34446f;font-size:14px;line-height:1.25}.greeting-block{display:flex;flex-direction:column;align-items:flex-start}.greeting-block span{color:#111d51;font-size:clamp(36px,4vw,60px);font-weight:900;line-height:.95;letter-spacing:-.045em}.greeting-block strong{color:#35457b;font-size:20px;font-family:"Segoe Print","Comic Sans MS",cursive;font-weight:600;transform:rotate(-1deg)}.teacher .greeting-block span{font-size:clamp(30px,3.4vw,48px)}.teacher .greeting-block strong{font-family:inherit;transform:none;color:#44706c}.header-actions{display:flex;align-items:center;gap:14px}.role-switch{display:flex;padding:5px;border-radius:999px;background:#f2f4fb;box-shadow:inset 0 0 0 1px #dce2f0,0 8px 24px rgba(35,49,105,.08)}.role-switch button{min-width:82px;min-height:42px;border:0;border-radius:999px;background:transparent;color:#33406b;font-weight:800;cursor:pointer}.role-switch button.active{background:var(--portal-primary);color:#fff;box-shadow:0 7px 18px color-mix(in srgb,var(--portal-primary) 30%,transparent)}.time-card{min-width:146px;display:grid;grid-template-columns:auto 1fr;column-gap:9px;align-items:center;padding:10px 15px;border-radius:20px;background:rgba(255,255,255,.88);border:1px solid #dce3f3;box-shadow:0 9px 26px rgba(33,45,99,.08)}.clock-icon{grid-row:1/3;color:#f5ac1a;font-size:31px}.time-card>span:not(.clock-icon){font-size:12px;color:#68759a}.time-card strong{font-size:19px;color:#172252}.portal-body{width:100%;padding:18px clamp(8px,1.2vw,20px) 58px}.portal-content{width:100%}.portal-content.has-tools-background{padding:clamp(10px,1.2vw,18px);border:1px solid rgba(255,255,255,.48);border-radius:28px;background-position:center;background-size:cover;box-shadow:0 18px 45px rgba(28,46,104,.1)}.apps-grid{display:grid;gap:clamp(9px,1vw,15px)}.card-size-small{grid-template-columns:repeat(5,minmax(0,1fr))}.card-size-compact{grid-template-columns:repeat(4,minmax(0,1fr))}.card-size-standard{grid-template-columns:repeat(3,minmax(250px,1fr))}.app-card{--app-accent:#4f46e5;min-height:176px;display:grid;grid-template-columns:84px minmax(0,1fr);grid-template-rows:1fr auto;gap:12px 16px;align-items:center;padding:24px;border:1px solid color-mix(in srgb,var(--app-accent) 20%,white);border-radius:21px;background:linear-gradient(135deg,color-mix(in srgb,var(--app-accent) 9%,white),rgba(255,255,255,.97));color:#111a46;text-align:left;text-decoration:none;box-shadow:0 13px 28px rgba(34,48,108,.1);cursor:pointer;overflow:hidden;transition:transform .2s ease,box-shadow .2s ease}.student .app-card{aspect-ratio:1.95/1;min-height:0}.app-card:hover{transform:translateY(-3px);box-shadow:0 18px 36px rgba(34,48,108,.14)}.app-card:focus-visible{outline:4px solid color-mix(in srgb,var(--app-accent) 34%,white);outline-offset:3px}.app-card.has-artwork{display:block;padding:0;background:#fff}.app-artwork{width:100%;height:100%;display:block;object-fit:cover}.card-size-small .app-card{min-height:132px;grid-template-columns:58px minmax(0,1fr);gap:8px 11px;padding:15px;border-radius:17px}.card-size-compact .app-card{min-height:152px;grid-template-columns:68px minmax(0,1fr);gap:10px 13px;padding:19px;border-radius:19px}.app-icon{grid-row:1/3;width:78px;height:78px;display:grid;place-items:center;border-radius:24px;font-size:38px}.card-size-small .app-icon{width:54px;height:54px;border-radius:17px;font-size:27px}.card-size-compact .app-icon{width:64px;height:64px;border-radius:20px;font-size:32px}.app-copy{min-width:0;display:flex;flex-direction:column;gap:5px}.app-copy strong{font-size:clamp(18px,1.55vw,25px);line-height:1.08}.app-copy small{color:#657094;font-size:14px;line-height:1.2}.card-size-small .app-copy strong{font-size:clamp(15px,1.15vw,19px)}.card-size-small .app-copy small{font-size:12px}.card-size-compact .app-copy strong{font-size:clamp(17px,1.3vw,22px)}.card-size-compact .app-copy small{font-size:13px}.open-pill{width:fit-content;min-width:84px;display:inline-flex;justify-content:center;padding:9px 20px;border-radius:999px;color:#fff;font-size:14px;font-weight:900}.card-size-small .open-pill{min-width:66px;padding:7px 14px;font-size:12px}.card-size-compact .open-pill{min-width:74px;padding:8px 16px;font-size:13px}.empty-state{min-height:280px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;border:2px dashed #d8def0;border-radius:28px;background:rgba(255,255,255,.75);color:#606d95}.empty-state[hidden]{display:none}@media(max-width:1500px){.card-size-small{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:1100px){.portal-header{grid-template-columns:1fr auto}.greeting-block{grid-row:2;grid-column:1/-1}.apps-grid,.card-size-small,.card-size-compact,.card-size-standard{grid-template-columns:repeat(2,minmax(220px,1fr))}}@media(max-width:780px){.portal-header{position:relative;grid-template-columns:1fr;gap:14px;padding:15px 18px}.brand-lockup img{width:130px}.brand-lockup p,.time-card{display:none}.greeting-block{grid-row:auto;grid-column:auto}.greeting-block span{font-size:34px}.greeting-block strong{font-size:16px}.header-actions{position:absolute;right:18px;top:22px}.role-switch button{min-width:66px;min-height:38px}.portal-body{padding:12px 10px 40px}.apps-grid,.card-size-small,.card-size-compact,.card-size-standard{grid-template-columns:1fr}.app-card{min-height:150px}.student .app-card{min-height:0}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition-duration:.01ms!important}}
