/* Language Land 67.1. Shared visual system; no clipping to conceal overflow. */
:root{--ui-ink:#172e40;--ui-muted:#52677a;--ui-accent:#175c83;--ui-tint:#eaf3f8;--ui-line:#dce5ed;--ui-surface:#fff;--ui-radius:18px}
html{scroll-padding-block:88px 100px}
body :where(main,section,article,form,fieldset,details,.actions){min-width:0}
body :where(button,input,select,textarea){font:inherit}
body :where(button,.button,.ll-button){touch-action:manipulation}
body :where(.button,.ll-button){min-height:48px;gap:8px;border-radius:12px;padding:11px 17px;white-space:normal;line-height:1.4;text-align:center;max-width:100%;text-decoration:none;font-weight:650}
body :where(.button,.ll-button) svg{width:20px;height:20px;flex:none}
body :where(a,button,input,select,textarea,summary):focus-visible{outline:3px solid #267fab;outline-offset:3px}
body :where(button:disabled,.button[aria-disabled=true]){cursor:not-allowed;opacity:.6}
body :where(.actions,.form-actions,.panel-head,.form-bottom){gap:10px;flex-wrap:wrap}
body :where(h1,h2,h3,p,label,dd,a,code){overflow-wrap:anywhere}
body :where(time,.ui-date){font-variant-numeric:tabular-nums}
:where(.portal-body,.android-app) :where(.actions,.form-actions,.table-actions)>a:not(.button):not(.ll-button){display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:10px 16px;border:1px solid var(--ui-line);border-radius:12px;background:var(--ui-surface);color:var(--ui-accent);font-weight:650;text-align:center;text-decoration:none}
:where(.portal-body,.android-app) :where(.panel,.auth-card,.student-card){border:1px solid var(--ui-line);box-shadow:0 3px 14px #1b3b5010;border-radius:var(--ui-radius)}
:where(.portal-body,.android-app) :where(.portal-page-head,.ll-heading){margin-bottom:24px}
:where(.portal-body,.android-app) :where(h1,h2,h3){font-family:inherit}
:where(.portal-body,.android-app) .button-primary{background:var(--ui-accent);color:#fff;border-color:var(--ui-accent)}
:where(.portal-body,.android-app) .button-soft{background:var(--ui-tint);color:#164c6d;border-color:#d3e3ed}
:where(.portal-body,.android-app) :where(input:not([type=checkbox]):not([type=radio]):not([type=hidden]),select,textarea){min-width:0;max-width:100%;border-radius:12px;min-height:48px;font-size:16px}
:where(.portal-body,.android-app) .panel-head h2{font-size:1.125rem;line-height:1.35}
:where(.portal-body,.android-app) .portal-main :where(.card-grid,.form-grid,.dashboard-grid)>*{min-width:0}
:where(.portal-body,.android-app) :where(.filter-form,.filter-row,.filters,.inline-form){flex-wrap:wrap}
:where(.portal-body,.android-app) .schedule-card__action>a{min-width:0;white-space:normal}
:where(.portal-body,.android-app) .schedule-card__date{min-width:0;width:auto;flex-basis:120px}
:where(.portal-body,.android-app) .ui-schedule-date{display:block;color:var(--ui-accent);font-size:.9375rem;font-weight:750;white-space:nowrap;letter-spacing:0}
/* The native date input remains a successful ISO form control. Only the
   adjacent editable presentation has DD-MM-YYYY; the picker is still native. */
.ui-date-field{position:relative;display:grid!important;grid-template-columns:minmax(0,1fr) 48px;gap:8px;align-items:start;width:100%;min-width:0;max-width:100%;isolation:isolate}
.ui-date-field .ui-date-text{box-sizing:border-box;width:100%;min-width:0;min-height:48px;margin:0;font-variant-numeric:tabular-nums}
.ui-date-field input.ui-date-native{position:absolute!important;inset:0 auto auto 0!important;width:1px!important;height:1px!important;min-height:0!important;min-width:0!important;max-width:1px!important;padding:0!important;border:0!important;margin:0!important;opacity:0;pointer-events:none}
.ui-date-field .ui-date-picker{display:grid;place-items:center;min-height:48px;width:48px;padding:0;margin:0;border:1px solid var(--ui-line);border-radius:12px;background:var(--ui-tint);color:var(--ui-accent);cursor:pointer}
.ui-date-picker svg{width:22px;height:22px}
.ui-date-error{display:block;font-size:.8125rem;line-height:1.45;color:#a32c3a;margin-top:6px}
.ui-date-error[hidden]{display:none}
.ui-date-text[aria-invalid=true]{border-color:#a32c3a;box-shadow:0 0 0 1px #a32c3a}
/* Application home: one primary action, then role-filtered shortcuts. */
.android-app{--mobile-ink:var(--ui-ink);--mobile-muted:var(--ui-muted);--mobile-accent:var(--ui-accent);--mobile-line:var(--ui-line);--mobile-tint:var(--ui-tint);--ui-rail-width:104px;background:#f4f7fb}
.android-app .portal-main{max-width:1240px}
.android-app .mobile-header{min-height:72px;background:#fff;box-shadow:none}
.android-app .mobile-avatar{width:48px;height:48px;border:0;border-radius:16px;color:#174a6b}
.android-app .mobile-brand img{width:40px;height:40px}
.android-app .ui-welcome{display:flex;align-items:center;gap:28px;justify-content:space-between;padding:28px;margin:0 0 28px;border:1px solid #d8e6f0;border-radius:24px;background:linear-gradient(115deg,#eaf3fa,#f6f9fc);box-shadow:none}
.ui-welcome-copy{flex:1;min-width:0}
.ui-kicker{display:block;font-size:.75rem;line-height:1.5;font-weight:700;color:#34627d;margin-bottom:8px;letter-spacing:.03em}
.android-app .ui-welcome h1{font-size:clamp(1.65rem,3vw,2.125rem);margin:0 0 10px;letter-spacing:-.035em;line-height:1.22}
.android-app .ui-welcome p{font-size:.9375rem;line-height:1.6;max-width:54ch;color:#456477}
.android-app .mobile-role-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:16px}
.android-app .mobile-role-chips span{font-size:.75rem;padding:5px 9px;border:1px solid #cfdee8;border-radius:8px;color:#385970;background:#ffffffb8}
.ui-primary-destination{display:flex;align-items:center;gap:14px;flex:0 1 304px;min-width:0;padding:20px;min-height:102px;border-radius:18px;background:#175c83;color:#fff!important;text-decoration:none;box-shadow:0 5px 12px #175c8315}
.ui-primary-destination>span:nth-child(2){min-width:0;flex:1}
.ui-primary-destination small{display:block;color:#dcebf5;font-size:.75rem;margin-bottom:4px}
.ui-primary-destination strong{display:block;font-size:1.125rem;line-height:1.35}
.ui-primary-destination svg{width:22px;height:22px;flex:none}
.ui-destination-icon{display:grid;place-items:center;flex:none;width:48px;height:48px;border-radius:14px;background:#ffffff1c}
.ui-destination-icon svg{width:26px;height:26px}
.android-app .mobile-section-title{min-height:48px;align-items:center;margin-bottom:12px;gap:12px}
.android-app .mobile-section-title h2{margin:0;font-size:1.125rem;letter-spacing:-.015em}
.android-app .ui-quiet-button{display:inline-flex;gap:8px;align-items:center;justify-content:center;min-height:48px;border:1px solid #d9e5ee;background:#fff;border-radius:12px;padding:10px 12px;font-weight:650;font-size:.8125rem;color:var(--ui-accent)}
.ui-quiet-button svg{width:18px;height:18px;flex:none}
.android-app .mobile-shortcut-grid{gap:14px;grid-template-columns:repeat(2,minmax(0,1fr))}
.android-app .mobile-shortcut{position:relative;min-height:156px;border-radius:18px;box-shadow:0 2px 6px #1b3b5005;padding:18px;gap:14px;justify-content:flex-start;align-items:flex-start;text-decoration:none}
.android-app .mobile-shortcut-icon{width:46px;height:46px;border-radius:14px;background:#eaf3f8;color:#1b5c81}
.android-app .mobile-shortcut:nth-child(3n+2) .mobile-shortcut-icon{background:#edf0fb;color:#4a57a5}
.android-app .mobile-shortcut:nth-child(3n) .mobile-shortcut-icon{background:#e9f4ef;color:#326a53}
.android-app .mobile-shortcut>svg:last-child{position:absolute;right:17px;top:22px;width:19px;height:19px;color:#638094}
.android-app .mobile-shortcut strong{font-size:.9375rem;line-height:1.4}
.android-app .mobile-shortcut small{font-size:.75rem;line-height:1.4;margin-bottom:4px;color:#5b6b7c}
.android-app .ui-account-section{min-width:0}
.android-app .ui-account-section .mobile-account-links{margin-top:0;padding:0 18px;box-shadow:none}
.android-app .mobile-account-links>a{min-height:84px;padding-block:17px;gap:12px}
.android-app .mobile-account-links>a>svg:last-child{width:18px;height:18px;color:#6c8597}
.android-app .mobile-account-links strong{font-size:.9375rem}
.android-app .mobile-account-links small{font-size:.8125rem}
.ui-settings-button{display:flex;align-items:center;gap:12px;min-height:56px;padding:14px 16px;margin-top:12px;border-radius:14px;border:1px solid var(--ui-line);background:#fff;color:#35586d;text-decoration:none;font-size:.875rem;font-weight:600}
.ui-settings-button svg{width:20px;height:20px;flex:none}
.ui-settings-button span{flex:1;min-width:0}
/* Navigation: stable touch area, compact selected icon pill and visible label. */
.android-app .mobile-bottom{padding:8px 8px max(8px,env(safe-area-inset-bottom));gap:2px;background:#fff}
.android-app .mobile-bottom>a,.android-app .mobile-bottom>button{gap:4px;min-height:64px;padding:4px 2px;border-radius:12px;font-size:.75rem;line-height:1.35;font-weight:600;background:transparent;color:#53697a}
.android-app .mobile-bottom :is([aria-current=page],[aria-expanded=true]){background:transparent;color:#164c6d;font-weight:750}
.ui-nav-glyph{display:flex;align-items:center;justify-content:center;min-width:56px;min-height:32px;border-radius:20px;transition:background .16s}
.android-app .mobile-bottom :is([aria-current=page],[aria-expanded=true]) .ui-nav-glyph{background:#dcecf6;color:#16577f}
.android-app .mobile-bottom svg{width:23px;height:23px}
/* Drawer actions and search remain permission-filtered on the server. */
.android-app .portal-sidebar{padding:22px 18px}
.android-app .mobile-drawer-head{gap:12px;align-items:flex-start}
.android-app .mobile-drawer-head h2{font-size:1.25rem;line-height:1.35}
.android-app .mobile-drawer-head p{font-size:.875rem;color:#52677a;overflow-wrap:anywhere}
.android-app .mobile-icon-button{min-width:48px;min-height:48px;border:1px solid var(--ui-line);background:#f6f8fa;border-radius:14px;color:#365b73}
.ui-menu-search{display:flex;align-items:center;gap:10px;padding:0 13px;margin:20px 0 12px;min-height:52px;border:1px solid var(--ui-line);background:#f4f7fa;border-radius:14px}
.ui-menu-search>svg{width:20px;height:20px;flex:none;color:#567187}
.android-app .ui-menu-search input{width:100%;min-width:0;background:transparent;border:0;box-shadow:none;padding:10px 0;min-height:50px;border-radius:0}
.ui-menu-search:focus-within{outline:2px solid #267fab;outline-offset:2px}
.android-app .ui-menu-search input:focus-visible{outline:0}
.ui-menu-empty{padding:18px 12px;color:var(--ui-muted);font-size:.9375rem}
.android-app .portal-sidebar .nav-section{margin-bottom:18px}
.android-app .portal-sidebar .sidebar-caption{font-size:.75rem;font-weight:650;text-transform:none;letter-spacing:.02em;color:#577081;margin:14px 12px 6px}
.android-app .portal-sidebar .access-navigation a{min-height:52px;border-radius:12px;gap:12px;padding:12px;margin-block:4px;border:1px solid transparent;text-decoration:none;line-height:1.4}
.android-app .portal-sidebar .access-navigation a.is-active{border-color:#d8e8f2;background:#eaf3f8;color:#175c83}
.android-app .portal-nav-icon{width:24px;height:24px;display:grid;place-items:center;flex:none}
.android-app .portal-nav-icon svg{width:22px;height:22px}
.android-app .mobile-drawer-account{display:grid;gap:10px;padding-top:18px;margin-top:8px;border-top:1px solid var(--ui-line)}
.android-app .mobile-drawer-account :is(a,button){display:flex;justify-content:center;align-items:center;min-height:48px;width:100%;border-radius:12px;padding:11px 14px}
.android-app .mobile-drawer-account .ui-signout{background:#fff;color:#943643;border:1px solid #e9d4d8}
.android-app .portal-sidebar [hidden]{display:none!important}
/* Auth typography, links-as-actions and comfortable long-form legal text. */
.mobile-auth{background:linear-gradient(165deg,#edf4f9,#f7f9fc 55%);padding-top:12px}
.mobile-auth .auth-card{box-shadow:0 12px 36px #254e7010;border-color:#dce6ee;border-radius:24px}
.mobile-auth .auth-card .auth-foot a,.mobile-auth .auth-card a.auth-link{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:10px 14px;margin:4px 0;border:1px solid #d8e5ee;border-radius:12px;background:#f2f7fa;color:#175c83;text-decoration:none;font-weight:650}
.mobile-auth .mobile-auth-note{font-size:.8125rem;line-height:1.6;padding:0 12px;color:#536b7d}
.mobile-auth .mobile-auth-note details{margin-top:14px}
.mobile-auth .mobile-auth-note summary{cursor:pointer;min-height:48px;padding:12px;color:#355d75}
@media(hover:hover){
  .ui-primary-destination:hover{background:#124e70}
  .android-app .mobile-shortcut:hover{background:#fbfdff;border-color:#a8c3d7;box-shadow:0 4px 14px #1b3b500c}
  .ui-settings-button:hover,.android-app .mobile-account-links>a:hover{color:#124d72;background:#f7fafc}
  .android-app .portal-sidebar .access-navigation a:hover{background:#f1f6f9}
}
@media(min-width:1000px) and (min-height:480px){
  .android-app .mobile-home-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(280px,1fr);gap:28px;align-items:start}
  .android-app .mobile-shortcut-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(min-width:600px) and (min-height:480px){
  .android-app .mobile-bottom{padding-top:28px;gap:12px}
  .android-app .mobile-bottom>a,.android-app .mobile-bottom>button{min-height:76px}
}
@media(max-width:999px){
  .android-app .ui-welcome{align-items:stretch;flex-direction:column;gap:20px}
  .ui-primary-destination{flex-basis:auto;width:100%;min-height:84px;padding:16px 18px}
  .android-app .ui-account-section{margin-top:24px}
}
@media(max-width:599px){
  .android-app .ui-welcome{padding:22px 20px;border-radius:20px;margin-bottom:22px}
  .android-app .ui-welcome h1{font-size:1.7rem}
  .android-app .mobile-shortcut{padding:16px;min-height:152px}
  .android-app .mobile-shortcut-grid{gap:12px}
  .android-app .portal-main{padding-inline:16px}
  .android-app .mobile-section-title h2{font-size:1.0625rem}
  .android-app .ui-quiet-button{font-size:.8125rem;padding:9px 11px}
  .android-app .portal-main :where(.form-grid,.form-grid-2,.form-grid-3,.crm-two-columns){grid-template-columns:minmax(0,1fr)}
  .portal-body .portal-main .schedule-card{grid-template-columns:minmax(0,1fr)}
  .portal-body .portal-main .schedule-card__date{display:flex;align-items:center;flex-wrap:wrap;gap:12px;justify-content:flex-start;padding:0 0 12px;width:auto;min-width:0}
  .portal-body .portal-main .schedule-card__action{width:100%;min-width:0}
  .portal-body .portal-main .schedule-card__action>a{width:100%;max-width:100%}
}
@media(max-width:359px){
  .android-app .portal-main{padding-inline:12px}
  .android-app .ui-welcome{padding:20px 16px}
  .android-app .mobile-shortcut{padding:14px;min-height:156px}
  .android-app .mobile-shortcut>svg:last-child{right:13px;width:16px;height:16px}
  .ui-primary-destination{padding:16px 12px;gap:10px}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}body :where(button,a,.ui-nav-glyph){transition:none!important}}
@media(forced-colors:active){.ui-primary-destination,.ui-nav-glyph,.mobile-shortcut,.button{border:1px solid ButtonText}.mobile-bottom [aria-current=page]{outline:2px solid Highlight}}

/* Legacy action groups must fit the real column/card width. Do not mask
   overflow: adaptive-ui measures content and switches to labelled cards. */
.portal-body .portal-main table[data-ui-reflow] :is(.record-actions,.record-actions form){min-width:0;max-width:100%;flex-wrap:wrap}
.portal-body .portal-main table[data-ui-reflow] .record-actions :is(a,button){max-width:100%;white-space:normal;overflow-wrap:anywhere}

.portal-body .portal-main :is(.button,.ll-button),.mobile-auth .auth-card .button{min-height:48px}
.portal-body .portal-menu-toggle{border:1px solid var(--ui-line);border-radius:12px;padding:10px 12px;background:var(--ui-tint);color:var(--ui-accent);font-size:.875rem;font-weight:650;min-height:48px;gap:8px;align-items:center;justify-content:center}
.portal-menu-toggle svg{width:22px;height:22px;flex:none}
@media(max-width:900px){.portal-body.portal-navigation-ready .portal-menu-toggle{display:inline-flex}}
