:root{--ion-color-primary:var(--portal-primary);--ion-color-secondary:var(--portal-secondary);--ion-color-success:#34c759;--ion-color-danger:#ff3b30;--ion-color-warning:#ff9500;--ion-color-medium:var(--portal-muted)}.row{flex-wrap:wrap;display:flex}.no-wrap{flex-wrap:nowrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-right,.q-card__actions--right{justify-content:flex-end}.q-card__actions--between{justify-content:space-between}.col,.col-12,.col-md,.col-md-4,.col-md-6,.col-md-auto,.col-sm-4,.col-sm-6,.col-xl-4{box-sizing:border-box;width:100%;min-width:0}.col-md-auto{width:auto}@media (width>=600px){.col-sm-4{width:33.3333%}.col-sm-6{width:50%}}@media (width>=768px){.col-md{flex:1 1 0}.col-md-4{width:33.3333%}.col-md-6{width:50%}}@media (width>=1200px){.col-xl-4{width:33.3333%}}.q-col-gutter-md{margin:-8px}.q-col-gutter-md>*{padding:8px}.q-gutter-md>*+*{margin-top:16px}.q-gutter-sm>*+*{margin-top:8px}.q-pa-md{padding:16px}.q-px-none{padding-left:0;padding-right:0}.q-pt-md{padding-top:16px}.q-pt-none{padding-top:0}.q-mt-xs{margin-top:4px}.q-mt-sm{margin-top:8px}.q-mt-md{margin-top:16px}.q-mb-none{margin-bottom:0}.q-mb-sm{margin-bottom:8px}.q-mb-md{margin-bottom:16px}.q-ml-sm{margin-left:8px}.full-width{width:100%}.full-height{height:100%}.rounded-borders{border-radius:var(--portal-radius)}.ellipsis{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.cursor-pointer{cursor:pointer}.text-caption{color:var(--portal-muted);font-size:.74rem}.text-subtitle1{font-size:.97rem}.text-subtitle2{font-size:.88rem}.text-h5{letter-spacing:-.01em;font-size:1.4rem;font-weight:700}.text-weight-bold{font-weight:700}.text-weight-medium{font-weight:500}.text-left{text-align:left}.text-right{text-align:right}.text-grey-6,.text-grey-7,.text-grey-8{color:var(--portal-muted)}.text-primary{color:var(--portal-primary)}.text-white{color:#fff}.text-blue-1,.text-blue-10,.text-green-10,.text-red-10{color:inherit}.bg-grey-1,.bg-grey-2,.bg-blue-1,.bg-green-1,.bg-red-1{background:var(--portal-surface-2,#f9f9fb)}.bg-negative{background:#ff3b30}.bg-positive{background:#34c759}.q-card,.q-banner,.q-item,.q-list,.q-dialog,.q-table,.q-tabs,.q-tab-panels,.q-stepper{box-sizing:border-box}.q-card{background:var(--portal-surface);border:1px solid var(--portal-separator);border-radius:var(--portal-radius);box-shadow:var(--portal-shadow)}.q-card__section{padding:16px}.q-card__actions{align-items:center;gap:8px;padding:12px 16px;display:flex}.q-separator{border:0;border-top:1px solid var(--portal-separator);margin:0}.q-item{align-items:flex-start;gap:12px;display:flex}.q-item--dense{padding:8px 0}.q-item__section{flex:auto;min-width:0}.q-item__section--avatar,.q-item__section--side{flex:none}.q-item__label--caption{color:var(--portal-muted);font-size:.79rem}.q-banner{border-radius:var(--portal-radius);gap:10px;padding:12px 14px;font-size:.88rem;display:flex}.q-banner__avatar{flex:none}.q-banner__content{min-width:0}.q-icon{vertical-align:middle;font-size:1.2rem}.q-avatar{background:var(--portal-primary-tint);border-radius:999px;justify-content:center;align-items:center;width:40px;height:40px;display:inline-flex;overflow:hidden}.q-avatar--primary{background:var(--portal-primary-tint);color:var(--portal-primary)}.q-avatar--text-white{color:#fff}.q-avatar img,.q-img{object-fit:cover;width:100%;height:100%}.q-chip,.q-badge{background:var(--portal-primary-tint);color:var(--portal-primary);border-radius:6px;align-items:center;gap:5px;padding:4px 9px;font-size:.74rem;font-weight:700;display:inline-flex}.q-badge--primary,.q-chip--primary{background:var(--portal-primary-tint);color:var(--portal-primary)}.q-badge--positive,.q-chip--positive{color:#1a7a3e;background:#34c7591a}.q-badge--negative,.q-chip--negative{color:#b0281e;background:#ff3b301a}.q-badge--warning,.q-chip--warning{color:#995900;background:#ff95001a}.q-badge--grey-7,.q-chip--grey-7{background:var(--portal-surface-2);color:var(--portal-muted)}.q-btn{--border-radius:999px;text-transform:none;min-height:40px;font-size:.88rem;font-weight:600}.q-btn::part(native){border-radius:999px}.q-btn--round{--padding-start:10px;--padding-end:10px}.q-btn__icon{margin-right:5px;font-size:.95rem}.q-btn__label{white-space:nowrap}.q-field{gap:5px;display:grid}.q-field__label{color:var(--portal-ink);font-size:.84rem;font-weight:600}.q-field__control{border:1px solid var(--portal-separator);border-radius:var(--portal-radius);background:var(--portal-surface);align-items:center;gap:8px;min-height:48px;padding:0 14px;transition:border-color .15s;display:flex}.q-field__control:focus-within{border-color:var(--portal-primary)}.q-field__prepend,.q-field__append{align-items:center;display:inline-flex}.q-field__native{--background:transparent;--padding-start:0;--padding-end:0;--highlight-color-focused:var(--portal-primary);width:100%}.q-field__hint{color:var(--portal-muted);font-size:.76rem}.q-field--error .q-field__control{border-color:#ff3b30}.q-file{align-items:center;gap:8px;display:flex}.q-file__button{flex:auto}.q-file__clear{color:var(--portal-muted);background:0 0;border:0;font-size:1.1rem}.q-inner-loading{z-index:5;background:#ffffffbf;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.q-table{position:relative;overflow:hidden}.q-table__scroll{overflow-x:auto}.q-table table{border-collapse:collapse;width:100%}.q-table th,.q-table td{border-top:1px solid var(--portal-separator);vertical-align:top;padding:12px 14px}.q-table th{color:var(--portal-muted);text-transform:uppercase;letter-spacing:.05em;text-align:left;font-size:.74rem;font-weight:600}.q-table__empty{color:var(--portal-muted);padding:16px;font-size:.88rem}.q-tabs{-webkit-overflow-scrolling:touch;scrollbar-width:none;flex-wrap:nowrap;gap:6px;padding-bottom:4px;display:flex;overflow:auto visible}.q-tabs::-webkit-scrollbar{display:none}.q-tab{background:var(--portal-surface);border:1px solid var(--portal-separator);color:var(--portal-ink-2);white-space:nowrap;cursor:pointer;border-radius:20px;flex-shrink:0;align-items:center;gap:4px;padding:7px 12px;font-size:.8rem;font-weight:500;transition:background .15s,color .15s,border-color .15s;display:inline-flex}.q-tab__icon{font-size:1rem}.q-tab--active{background:var(--portal-primary-tint);border-color:var(--portal-primary);color:var(--portal-primary);font-weight:600}.q-stepper{gap:12px;display:grid}.q-step{border:1px solid var(--portal-separator);border-radius:var(--portal-radius-lg,16px);background:var(--portal-surface);overflow:hidden}.q-step__header{border-bottom:1px solid var(--portal-separator);align-items:center;gap:10px;padding:13px 16px;display:flex}.q-step__badge{background:var(--portal-primary-tint);width:30px;height:30px;color:var(--portal-primary);border-radius:999px;justify-content:center;align-items:center;font-size:.85rem;font-weight:700;display:inline-flex}.q-step__content{padding:0 16px 16px}.q-stepper-navigation{justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.q-toggle{align-items:center;gap:10px;font-size:.88rem;display:inline-flex}.q-timeline{gap:10px;display:grid}.q-timeline__entry{grid-template-columns:16px minmax(0,1fr);gap:10px;display:grid}.q-timeline__dot{background:var(--portal-primary);border-radius:999px;width:10px;height:10px;margin-top:6px}.q-timeline__subtitle{color:var(--portal-muted);margin-top:2px;font-size:.78rem}.q-layout,.q-page-container,.q-page{min-height:0}.q-toolbar{align-items:center;display:flex}.q-toolbar__title{flex:auto;min-width:0}@media (prefers-color-scheme:dark){.q-card{background:#1c1c1e;border-color:#54545899}.q-field__control{color:#fff;background:#2c2c2e;border-color:#54545899}.q-field__label{color:#ebebf5bf}.q-field__hint{color:#ebebf573}.q-separator{border-color:#54545899}.q-tab{color:#ebebf5bf;background:#2c2c2e;border-color:#54545899}.q-tab--active{color:#5b8ef0;background:#0f4fb840;border-color:#0f4fb880}.q-step{background:#1c1c1e;border-color:#54545899}.q-step__header{border-color:#54545899}.q-banner{background:#2c2c2e}.bg-negative{background:#ff3b3033}.bg-positive{background:#34c75933}.bg-grey-1,.bg-grey-2,.bg-blue-1,.bg-green-1,.bg-red-1{background:#2c2c2e}.text-grey-6,.text-grey-7,.text-grey-8,.q-item__label--caption{color:#ebebf573}}*{-webkit-tap-highlight-color:transparent;box-sizing:border-box}:root{--portal-primary:#0f4fb8;--portal-primary-tint:#0f4fb81a;--portal-secondary:#15243a;--portal-accent:#c8892f;--portal-bg:#f2f2f7;--portal-surface:#fff;--portal-surface-2:#f9f9fb;--portal-ink:#1c1c1e;--portal-ink-2:#3c3c43cc;--portal-muted:#8e8e93;--portal-separator:#3c3c431f;--portal-border:#3c3c431f;--portal-radius:12px;--portal-radius-sm:8px;--portal-radius-lg:16px;--portal-radius-xl:22px;--portal-card-radius:var(--portal-radius);--portal-soft-radius:var(--portal-radius-sm);--portal-page-x:16px;--portal-page-y:16px;--portal-card-gap:10px;--portal-touch-height:44px;--portal-font:-apple-system, BlinkMacSystemFont, "Inter", "Segoe UI", system-ui, sans-serif;--portal-shadow:0 1px 3px #0000000f, 0 1px 2px #0000000a;--portal-shadow-md:0 2px 8px #00000014, 0 1px 3px #0000000a}html,body,#app{min-height:100%}html,body,ion-app{overscroll-behavior:none}body{background:var(--portal-bg);color:var(--portal-ink);font-family:var(--portal-font);-webkit-font-smoothing:antialiased;margin:0}button,a,[role=button],.q-btn,.q-tab,.portal-menu-item,.portal-mobile-tabs button{touch-action:manipulation;-webkit-user-select:none;user-select:none}ion-app,ion-content,ion-menu,ion-modal{--background:transparent}.portal-shell{background:var(--portal-bg);grid-template-rows:auto 1fr auto;height:100svh;display:grid;overflow:hidden}.portal-main-scroll{-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain;background:var(--portal-bg);min-height:0;padding-bottom:var(--keyboard-inset,0px);overflow:hidden auto}.portal-quasar-shell{background:0 0}.portal-header{--background:var(--portal-primary);--color:#fff;--border-width:0;box-shadow:0 1px #00000029}.portal-toolbar{min-height:52px;padding:calc(6px + env(safe-area-inset-top,0px)) 8px 6px;gap:4px}.portal-toolbar-title{flex-direction:column;gap:1px;min-width:0;line-height:1.15;display:flex}.portal-toolbar-name,.portal-toolbar-caption{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.portal-toolbar-name{letter-spacing:-.01em;font-size:.93rem;font-weight:600}.portal-toolbar-caption{color:#ffffffad;max-width:min(720px,58vw);font-size:.7rem}.portal-logout-btn{color:#ffffffe0;border-radius:999px;font-size:.82rem}.portal-drawer{--background:var(--portal-surface);background:var(--portal-surface);flex-direction:column;display:flex}.portal-drawer-brand{padding:calc(20px + env(safe-area-inset-top,0px)) 16px 16px;border-bottom:1px solid var(--portal-separator);align-items:center;gap:12px;display:flex}.portal-drawer-brand strong,.portal-drawer-brand span{display:block}.portal-drawer-brand strong{color:var(--portal-ink);font-size:.93rem;font-weight:700;line-height:1.2}.portal-drawer-brand span{color:var(--portal-muted);margin-top:1px;font-size:.76rem}.portal-drawer-logo{background:var(--portal-primary);color:#fff;border-radius:9px;place-items:center;width:38px;height:38px;font-size:.88rem;font-weight:800;display:grid}.portal-menu-list{flex:auto;padding:10px 8px}.portal-menu-item{color:var(--portal-ink-2);--min-height:44px;border-radius:9px;margin-bottom:2px;font-size:.9rem}.portal-menu-item--active{background:var(--portal-primary-tint);color:var(--portal-primary);font-weight:600}.portal-drawer-footer{padding:8px 8px calc(16px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--portal-separator)}.portal-menu-item--logout,.portal-menu-item--logout .q-icon{color:#ff3b30}.portal-page{width:min(1180px,100%);padding:var(--portal-page-y) var(--portal-page-x) calc(32px + env(safe-area-inset-bottom,0px));margin:0 auto}.portal-page-hero{box-shadow:none;background:0 0;border:none;border-radius:0;padding:4px 2px 14px}.portal-page-hero p,.portal-kicker{color:var(--portal-primary);letter-spacing:.08em;text-transform:uppercase;margin:0 0 4px;font-size:.68rem;font-weight:700}.portal-page-hero h1,.portal-app-card h2,.portal-auth-card h2,.portal-register-card h1,.portal-dialog-card h2{color:var(--portal-ink);letter-spacing:-.02em;margin:0}.portal-page-hero h1{font-size:clamp(1.5rem,5vw,2rem);font-weight:800;line-height:1.08}.portal-app-card h2,.portal-dialog-card h2{font-size:1.08rem;font-weight:700;line-height:1.2}.portal-page-hero span{color:var(--portal-muted);margin-top:4px;font-size:.84rem;line-height:1.4;display:block}.portal-view-stack{gap:var(--portal-card-gap);display:grid}.portal-app-card,.portal-stat-card,.portal-student-card,.portal-auth-card,.portal-register-card,.portal-dialog-card{background:var(--portal-surface);border:1px solid var(--portal-separator);border-radius:var(--portal-radius);box-shadow:var(--portal-shadow)}.portal-app-card{overflow:hidden}.portal-soft-card{border-radius:var(--portal-radius-sm);background:var(--portal-surface-2);border:1px solid var(--portal-separator);box-shadow:none}.portal-mini-metric{border-radius:var(--portal-radius-sm);background:var(--portal-surface-2)}.contact-card{border-radius:var(--portal-radius);background:var(--portal-surface);border:1px solid var(--portal-separator);box-shadow:none;overflow:hidden}.contact-card__header{border-bottom:1px solid var(--portal-separator);padding:13px 15px}.contact-card__header strong{color:var(--portal-ink);font-size:.92rem;font-weight:700;line-height:1.3;display:block}.contact-card__header p{color:var(--portal-muted);margin:3px 0 0;font-size:.78rem;line-height:1.4}.contact-card__grid{padding:13px 15px}.portal-stat-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.portal-stat-card--native{border-radius:var(--portal-radius);margin:0}.portal-stat-card__content{gap:8px;display:grid;padding:14px 14px 12px!important}.portal-stat-card__icon{background:var(--portal-primary-tint);width:32px;height:32px;color:var(--portal-primary);border-radius:8px;justify-content:center;align-items:center;font-size:1rem;display:inline-flex}.portal-stat-card__value{color:var(--portal-ink);white-space:nowrap;text-overflow:ellipsis;font-size:.92rem;font-weight:700;overflow:hidden}.portal-stat-card__label{color:var(--portal-muted);font-size:.7rem;line-height:1.3}.portal-app-card--native{border-radius:var(--portal-radius-lg);box-shadow:var(--portal-shadow-md);margin:0}.portal-app-card--native ion-card-header,.portal-app-card--native ion-card-content{padding:16px}.portal-app-card--native ion-card-title{letter-spacing:-.01em;color:var(--portal-ink);font-size:1.08rem;font-weight:700;line-height:1.2}.portal-app-card--native p.text-grey-7{margin:4px 0 0;font-size:.83rem;line-height:1.45;color:var(--portal-muted)!important}.portal-native-actions{align-items:center;gap:8px;display:flex}.portal-native-actions--wrap{flex-wrap:wrap}.portal-native-actions ion-button{--border-radius:10px;min-height:40px;font-size:.87rem;font-weight:600}.portal-native-list{background:0 0;gap:8px;padding:0;display:grid}.portal-native-list ion-card{margin:0}.portal-empty-state{border-radius:var(--portal-radius);background:var(--portal-surface);border:1px dashed var(--portal-separator);text-align:center;justify-items:center;gap:6px;padding:36px 18px;display:grid}.portal-empty-state .material-icons{color:var(--portal-muted);opacity:.45;font-size:2rem}.portal-empty-state strong{color:var(--portal-ink-2);font-size:.92rem;font-weight:600}.portal-empty-state p{color:var(--portal-muted);margin:0;font-size:.8rem;line-height:1.45}.portal-skeleton-stack{gap:8px;display:grid}.portal-student-card--native,.portal-payment-card{border-radius:var(--portal-radius);margin:0}.portal-student-card__header{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.portal-metric-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:12px;display:grid}.portal-mini-metric--native{--background:var(--portal-surface-2);border-radius:var(--portal-radius-sm);min-height:58px}.portal-mini-metric--native ion-label{margin:0;padding:2px 0}.portal-mini-metric--native small{color:var(--portal-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:3px;font-size:.68rem;font-weight:600;display:block}.portal-mini-metric--native strong{color:var(--portal-ink);font-size:.9rem;font-weight:600}.portal-dialog-card{width:min(560px,100vw - 28px)}.portal-dialog-card--native{background:var(--portal-surface);border-radius:var(--portal-radius-xl);width:min(620px,100vw - 24px);margin:24px auto;box-shadow:0 8px 32px #00000029}.portal-modal-header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px;display:flex}.portal-card-header-inline{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.portal-payment-card .portal-native-actions{margin-top:12px}.portal-payment-actions{gap:7px;margin-top:12px;display:grid}.portal-payment-actions__row{grid-template-columns:1fr 1fr;gap:7px;display:grid}.portal-payment-actions ion-button{--border-radius:10px;margin:0;font-size:.82rem;font-weight:600}.portal-payments-segment-wrap{border-bottom:1px solid var(--portal-separator);padding:0 16px 4px}.portal-payments-segment{--background:var(--portal-surface-2,#f9f9fb);border-radius:var(--portal-radius-sm);width:100%}.portal-seg-label{align-items:center;gap:6px;font-size:.85rem;font-weight:500;display:inline-flex}.portal-seg-badge{border-radius:999px;justify-content:center;align-items:center;min-width:18px;height:18px;padding:1px 5px;font-size:.7rem;display:inline-flex}.portal-payment-qr{border:1px solid var(--portal-separator);border-radius:var(--portal-radius);background:#fff;width:160px;max-width:100%;margin-inline:auto}.portal-contract-doc-list{border:1px solid var(--portal-separator);border-radius:var(--portal-radius-sm);background:var(--portal-surface-2);margin-top:10px;overflow:hidden}.portal-contract-doc-item{--background:transparent;--min-height:44px;font-size:.88rem}.portal-contract-doc-item--active{--background:var(--portal-primary-tint)}.portal-history-entry-footer{color:var(--portal-muted);align-items:center;gap:5px;margin-top:8px;font-size:.78rem;display:flex}.portal-history-entry-footer ion-icon{font-size:.9rem}.portal-contract-toggle-row{border-top:1px solid var(--portal-separator);margin-top:14px;padding-top:14px}.app-form-control{width:100%}.app-form-affix{color:var(--portal-muted);font-size:.83rem}.portal-native-input{--background:var(--portal-surface-2);--border-radius:var(--portal-radius);border:1px solid var(--portal-separator);border-radius:var(--portal-radius);min-height:var(--portal-touch-height);overflow:hidden}.portal-native-input ion-label{margin-bottom:6px;font-size:.86rem;font-weight:600;color:var(--portal-ink)!important}.portal-native-input ion-input,.portal-native-input ion-textarea{--padding-top:8px;--padding-bottom:8px;--padding-start:2px;--padding-end:2px}.portal-inline-alert{border-radius:var(--portal-radius);padding:11px 14px;font-size:.86rem;font-weight:500}.portal-inline-alert--danger{color:#b0281e;background:#ff3b3012;border:1px solid #ff3b302e}.portal-inline-alert--success{color:#1a7a3e;background:#34c75912;border:1px solid #34c7592e}.portal-document-dialog{border-radius:var(--portal-radius-lg);width:min(760px,100vw - 28px)}.portal-document-body{max-height:min(62vh,620px);overflow:auto}.portal-document-body pre{white-space:pre-wrap;margin:0;font-family:inherit;line-height:1.55}.portal-document-pre{white-space:pre-wrap;border:1px solid var(--portal-separator);border-radius:var(--portal-radius-sm);background:var(--portal-surface-2);max-height:min(56vh,560px);color:var(--portal-ink);padding:14px;font-family:inherit;font-size:.87rem;line-height:1.55;overflow:auto}.document-item{border:1px solid var(--portal-separator);border-radius:var(--portal-radius);background:var(--portal-surface);justify-content:space-between;align-items:center;gap:12px;min-height:50px;padding:10px 12px;display:flex}.document-item__content{min-width:0}.document-item__status{flex:none;justify-content:flex-end;align-items:center;margin-left:auto;display:flex}.document-item+.document-item{margin-top:6px}.document-title{color:var(--portal-ink);font-size:.9rem;font-weight:600;line-height:1.25}.document-caption{color:var(--portal-muted);margin:2px 0 0;font-size:.74rem;line-height:1.35}.document-status{white-space:nowrap;border-radius:6px;min-width:max-content;margin:0;padding:3px 8px;font-size:.74rem;font-weight:700}.document-status .q-chip__content{white-space:nowrap}.document-status__icon{margin-right:3px;font-size:.8em}.document-status--pending{color:#995900;background:#ff95001a}.document-status--sent{color:var(--portal-primary);background:#0f4fb81a}.document-status--approved{color:#1a7a3e;background:#34c7591a}.document-status--rejected{color:#b0281e;background:#ff3b301a}.portal-auth-page-shell{inset:0;bottom:var(--keyboard-inset,0px);-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain;background:var(--portal-bg);color:var(--portal-ink);position:fixed;overflow:hidden auto}.portal-auth-layout{background:var(--portal-bg);min-height:100vh}.portal-auth-content{--background:var(--portal-bg);--color:var(--portal-ink)}.portal-auth-page{width:min(1040px,100vw - 32px);min-height:100vh;padding:calc(22px + env(safe-area-inset-top,0px)) 0 calc(22px + env(safe-area-inset-bottom,0px));grid-template-columns:minmax(0,1fr) minmax(310px,400px);align-items:center;gap:24px;margin:0 auto;display:grid}.portal-auth-page--single{grid-template-columns:minmax(0,460px);justify-content:center}.portal-auth-brand{gap:14px;min-width:0;display:grid}.portal-auth-brand h1{max-width:560px;color:var(--portal-ink);letter-spacing:-.02em;margin:0;font-size:clamp(1.8rem,5vw,2.8rem);font-weight:800;line-height:1.06}.portal-auth-brand p{max-width:500px;color:var(--portal-muted);margin:0;font-size:.94rem;line-height:1.55}.portal-auth-logo{background:var(--portal-primary);overflow:hidden;box-shadow:0 6px 20px #0f4fb847;border-radius:16px!important;width:68px!important;min-width:68px!important;height:68px!important}.portal-auth-logo img{object-fit:cover;display:block;width:100%!important;height:100%!important}.portal-auth-benefits{flex-wrap:wrap;gap:6px;display:flex}.portal-auth-card,.portal-register-card{background:var(--portal-surface);border:1px solid var(--portal-separator);box-shadow:var(--portal-shadow-md)}.portal-auth-card h2,.portal-register-card h1,.portal-dialog-card h2{letter-spacing:-.02em;font-size:1.28rem;font-weight:800;line-height:1.14}.portal-auth-card .q-card__section,.portal-register-card .q-card__section{min-width:0}.portal-auth-actions{padding:0 18px 18px}.portal-auth-links{flex-direction:column;align-items:flex-start;gap:2px;display:flex}.portal-native-page{position:relative}.portal-auth-brand--native{padding:8px 0}.portal-auth-logo--native{place-items:center;display:grid}.portal-auth-card--native{border-radius:var(--portal-radius-xl);box-shadow:var(--portal-shadow-md);overflow:hidden}.portal-auth-card__header{margin-bottom:10px}.portal-native-form{gap:10px;display:grid}.portal-primary-cta{--border-radius:var(--portal-radius);min-height:50px;font-size:.95rem;font-weight:700}.portal-auth-actions--native{gap:12px;padding:6px 0 0;display:grid}.portal-auth-actions--native .portal-auth-links{flex-wrap:wrap;justify-content:space-between;gap:0;display:flex}.portal-auth-page--register{grid-template-columns:minmax(0,520px);justify-content:center}.portal-register-card--native{width:100%}.portal-register-header{gap:12px;display:grid}.portal-register-back{justify-self:start}.portal-register-title-wrap{align-items:flex-start;gap:14px;display:flex}.portal-register-icon{background:var(--portal-primary-tint);width:44px;height:44px;color:var(--portal-primary);border-radius:12px;flex-shrink:0;place-items:center;font-size:1.4rem;display:grid}.portal-register-section-label{text-transform:uppercase;letter-spacing:.06em;color:var(--portal-muted);padding:0 2px;font-size:.74rem;font-weight:700}.portal-register-date-wrap{margin:0}.portal-register-age-banner{border-radius:var(--portal-radius-sm);align-items:flex-start;gap:8px;padding:10px 14px;font-size:.84rem;line-height:1.4;display:flex}.portal-register-age-banner .material-icons{flex-shrink:0;margin-top:1px;font-size:1.1rem}.portal-register-age-banner--minor{color:#995900;background:#ff95001a}.portal-register-age-banner--adult{background:var(--portal-primary-tint);color:var(--portal-primary)}.portal-register-field-error{color:#ff3b30;padding:2px 14px 0;font-size:.78rem}.portal-register-docs{border:1px solid var(--portal-separator);border-radius:var(--portal-radius-sm);background:var(--portal-surface-2);gap:2px;display:grid;overflow:hidden}.portal-register-doc-item{border-bottom:1px solid var(--portal-separator);align-items:center;gap:10px;padding:10px 12px;display:flex}.portal-register-doc-item:last-child{border-bottom:0}.portal-register-doc-info{flex:auto;min-width:0}.portal-register-doc-title{color:var(--portal-ink);font-size:.88rem;font-weight:500;line-height:1.3}.portal-register-doc-caption{color:var(--portal-muted);margin-top:1px;font-size:.74rem}.portal-forgot-step-indicator{align-items:center;gap:8px;margin-bottom:6px;display:flex}.portal-forgot-step{color:var(--portal-muted);align-items:center;gap:5px;font-size:.78rem;font-weight:600;display:flex}.portal-forgot-step .material-icons{font-size:1rem}.portal-forgot-step--done{color:#34c759}.portal-forgot-step--active{color:var(--portal-primary)}.portal-forgot-step-divider{background:var(--portal-separator);border-radius:1px;flex:auto;max-width:32px;height:2px}.portal-quasar-table{border-radius:0}.portal-avatar-file{width:min(210px,100%)}.portal-family-page{gap:12px}.portal-family-topbar{align-items:center;gap:12px;padding:4px 2px 2px;display:flex}.portal-family-topbar__icon,.portal-family-intro__badge{background:var(--portal-primary-tint);color:var(--portal-primary);border-radius:11px;flex-shrink:0;place-items:center;display:grid}.portal-family-topbar__icon{width:46px;height:46px}.portal-family-topbar__icon .material-icons,.portal-family-intro__badge .material-icons{font-size:24px}.portal-family-topbar__copy{flex:1;min-width:0}.portal-family-topbar__copy h2{color:var(--portal-ink);letter-spacing:-.02em;margin:0;font-size:1.65rem;font-weight:800;line-height:1.05}.portal-family-topbar__copy>p:last-child{color:var(--portal-muted);margin:3px 0 0;font-size:.86rem}.portal-family-intro{border-radius:var(--portal-radius);border:1px solid var(--portal-separator);background:var(--portal-surface);box-shadow:var(--portal-shadow);align-items:center;gap:13px;padding:13px 15px;display:flex}.portal-family-intro__badge{background:var(--portal-primary);color:#fff;border-radius:10px;flex-shrink:0;width:40px;height:40px}.portal-family-intro strong{color:var(--portal-ink);font-size:.9rem;font-weight:600;line-height:1.35;display:block}.portal-family-intro p{color:var(--portal-muted);margin:3px 0 0;font-size:.8rem;line-height:1.4}.portal-family-shell-card{border-radius:var(--portal-radius-lg);background:var(--portal-surface);border:1px solid var(--portal-separator);box-shadow:var(--portal-shadow-md);overflow:hidden}.portal-family-shell-card__hero{padding:18px 18px 14px}.portal-family-shell-card__eyebrow{color:var(--portal-primary);letter-spacing:.08em;text-transform:uppercase;margin-bottom:6px;font-size:.68rem;font-weight:700}.portal-family-shell-card__hero h2{letter-spacing:-.02em;color:var(--portal-ink);margin:0;font-size:clamp(1.5rem,4vw,2rem);font-weight:800;line-height:1.06}.portal-family-shell-card__hero p.text-grey-7{max-width:500px;margin-top:8px;font-size:.87rem;line-height:1.5;color:var(--portal-muted)!important}.portal-family-shell-card__aside{justify-content:center;display:flex}.portal-family-shell-card__art{background:var(--portal-primary-tint);width:72px;height:72px;color:var(--portal-primary);border-radius:18px;place-items:center;display:grid}.portal-family-shell-card__art .material-icons{font-size:40px}.portal-family-refresh-btn{min-height:44px;padding:0 16px}.portal-family-tabs{gap:6px;padding:8px 12px 12px;overflow-x:auto}.portal-family-tabs .q-tab{border:1px solid var(--portal-separator);background:var(--portal-surface);min-height:36px;color:var(--portal-ink-2);box-shadow:none;border-radius:8px;padding:0 13px;font-size:.84rem}.portal-family-tabs .q-tab .q-icon,.portal-family-tabs .q-tab__icon{font-size:.98rem}.portal-family-tabs .q-tab__label{font-size:.84rem;font-weight:500}.portal-family-tabs .q-tab--active{border-color:var(--portal-primary);background:var(--portal-primary-tint);color:var(--portal-primary);font-weight:600}.portal-family-panels{background:0 0}.portal-family-panels .q-tab-panel{padding:0}.portal-student-card--family{border-radius:var(--portal-radius-lg);background:var(--portal-surface);border:1px solid var(--portal-separator);box-shadow:var(--portal-shadow);overflow:hidden}.portal-student-card__family-body{padding:15px}.portal-student-card__family-header{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;display:grid}.portal-student-card__family-avatar{border:2px solid var(--portal-separator);box-shadow:none}.portal-student-card__family-copy{min-width:0}.portal-student-card__family-copy .text-subtitle1{color:var(--portal-ink);margin-bottom:2px;font-size:.93rem;font-weight:700;line-height:1.24}.portal-student-card__family-copy .text-grey-7{font-size:.8rem;color:var(--portal-muted)!important}.portal-student-card__family-status{text-transform:capitalize;border-radius:6px;padding:3px 9px;font-size:.75rem;font-weight:700;color:#1a7a3e!important;background:#34c7591a!important}.portal-student-card__family-actions{border-top:1px solid var(--portal-separator);justify-content:space-between;align-items:center;gap:10px;padding:11px 15px 15px;display:flex}.portal-student-card__family-upload{flex:1;min-width:0}.portal-avatar-file--family{width:100%}.portal-avatar-file--family .q-field__control{border-radius:var(--portal-radius-sm);background:var(--portal-surface-2);min-height:44px}.portal-student-card__family-remove{min-height:44px;padding:0 10px}.portal-mobile-footer{padding-bottom:env(safe-area-inset-bottom);-webkit-backdrop-filter:blur(20px)saturate(180%);border-top:1px solid var(--portal-separator);background:#ffffffdb}.portal-mobile-tabs{grid-template-columns:repeat(5,minmax(0,1fr));gap:0;padding:4px 2px 2px;display:grid}.portal-mobile-tabs .q-tab{min-height:50px;color:var(--portal-muted);background:0 0;border-radius:0;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:5px 2px;display:flex}.portal-mobile-tabs .q-tab .material-icons,.portal-mobile-tabs .q-tab__icon{font-size:1.3rem}.portal-mobile-tabs .q-tab__label{color:inherit;font-size:.63rem;font-weight:500;line-height:1.1}.portal-mobile-tabs .q-tab--active{color:var(--portal-primary);box-shadow:none;background:0 0}.portal-page--mobile-tabs{padding-bottom:calc(68px + env(safe-area-inset-bottom))}@media (width<=900px){.portal-auth-page{grid-template-columns:1fr;align-content:start;gap:12px}.portal-auth-brand{grid-template-columns:auto minmax(0,1fr);align-items:center;padding-top:8px}.portal-auth-brand>div{min-width:0}.portal-auth-brand h1{font-size:clamp(1.3rem,7vw,1.75rem)}.portal-auth-brand p:not(.portal-kicker){font-size:.86rem;line-height:1.4}.portal-auth-benefits{grid-column:1/-1}.portal-toolbar{align-items:center;min-height:52px}.portal-toolbar-caption{white-space:normal;max-width:58vw;line-height:1.2}.portal-family-shell-card__art{width:64px;height:64px}}@media (width<=720px){:root{--portal-page-x:14px;--portal-page-y:12px;--portal-card-gap:10px}.portal-page{padding-top:12px}.portal-page-hero{padding:2px 2px 10px}.portal-page-hero h1{font-size:1.55rem}.portal-auth-page{width:min(100vw,100vw - 16px);padding:calc(8px + env(safe-area-inset-top,0px)) 0 calc(16px + env(safe-area-inset-bottom,0px))}.portal-auth-logo{border-radius:13px!important;width:54px!important;min-width:54px!important;height:54px!important}.portal-auth-card h2,.portal-register-card h1{font-size:1.16rem}.portal-app-card h2,.portal-dialog-card h2{font-size:1rem}.portal-app-card--native ion-card-header,.portal-app-card--native ion-card-content{padding:13px}.portal-family-page{gap:10px}.portal-family-topbar__copy h2{font-size:1.45rem}.portal-family-shell-card__hero h2{font-size:1.5rem}.portal-family-shell-card__art{border-radius:14px;width:56px;height:56px}.portal-family-shell-card__art .material-icons{font-size:30px}.portal-family-tabs{padding:6px 10px 10px}.portal-student-card--family{border-radius:var(--portal-radius)}.portal-student-card__family-body{padding:13px}.portal-student-card__family-header{grid-template-columns:auto 1fr}.portal-student-card__family-status{grid-column:1/-1;justify-self:end;margin-top:-4px}.portal-student-card__family-actions{flex-direction:column;align-items:stretch;padding:10px 13px 13px}.portal-student-card__family-remove{justify-content:center;width:100%}.portal-native-actions{gap:6px}.portal-metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.portal-card-header-inline,.portal-modal-header{gap:8px}}@media (width<=480px){.document-item{align-items:flex-start;padding:10px}.document-status{font-size:.68rem}}@media (width<=360px){:root{--portal-page-x:12px}.portal-auth-brand h1{font-size:1.2rem}.portal-auth-card h2,.portal-register-card h1{font-size:1.08rem}}.portal-page-enter-active{transition:opacity .18s,transform .18s}.portal-page-leave-active{transition:opacity .14s,transform .14s}.portal-page-enter-from{opacity:0;transform:translateY(8px)}.portal-page-leave-to{opacity:0;transform:translateY(-4px)}ion-button,.q-btn{transition:opacity .12s,transform .12s}ion-button:active,.q-btn:active{opacity:.6;transform:scale(.96)}.portal-mobile-tabs button{transition:opacity .1s,transform .1s}.portal-mobile-tabs button:active{opacity:.5;transform:scale(.88)}.portal-menu-item{transition:background .12s,opacity .12s}.portal-menu-item:active{opacity:.65}ion-card{transition:transform .12s,box-shadow .12s}.portal-stat-grid--two{grid-template-columns:repeat(3,minmax(0,1fr))}.portal-sheet-header{--background:var(--portal-surface);--border-width:0;border-bottom:1px solid var(--portal-separator)}.portal-sheet-header ion-toolbar{--background:var(--portal-surface);--color:var(--portal-ink);--min-height:56px;padding:0 4px}.portal-sheet-title-block{flex-direction:column;gap:1px;min-width:0;display:flex}.portal-sheet-title{color:var(--portal-ink);text-overflow:ellipsis;white-space:nowrap;letter-spacing:-.01em;font-size:.95rem;font-weight:700;overflow:hidden}.portal-sheet-subtitle{color:var(--portal-muted);text-overflow:ellipsis;white-space:nowrap;font-size:.74rem;overflow:hidden}.portal-sheet-frame{flex-direction:column;height:100%;display:flex;overflow:hidden}.portal-sheet-scroll{-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain;background:var(--portal-bg);flex:auto;min-height:0;overflow-y:auto}.portal-pull-indicator{justify-content:center;align-items:center;height:0;display:flex;overflow:hidden}.portal-pull-indicator--animated{transition:height .25s}.portal-pull-icon{color:var(--portal-muted);font-size:1.4rem}.portal-pull-icon--spinning{animation:.7s linear infinite portal-spin}@keyframes portal-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.portal-sheet-body{gap:10px;padding:16px;display:grid}.portal-sheet-actions{flex-direction:column;align-items:stretch;margin-top:8px}.portal-sheet-actions ion-button{width:100%}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--portal-bg:#000;--portal-surface:#1c1c1e;--portal-surface-2:#2c2c2e;--portal-ink:#fff;--portal-ink-2:#ebebf5bf;--portal-muted:#ebebf573;--portal-separator:#54545899;--portal-border:#54545899;--portal-primary-tint:#0f4fb840;--portal-shadow:0 1px 3px #0006;--portal-shadow-md:0 2px 10px #00000080;--ion-background-color:#000;--ion-text-color:#fff;--ion-border-color:#54545899;--ion-item-background:transparent;--ion-card-background:#1c1c1e;--ion-toolbar-background:var(--portal-primary);--ion-tab-bar-background:#1c1c1ee0}body{background:#000}ion-card{--background:#1c1c1e;--color:#fff}ion-item{--background:transparent;--color:#fff;--border-color:#54545866}.portal-drawer{--background:#1c1c1e;background:#1c1c1e}.portal-mobile-footer{background:#1c1c1ee0}.portal-auth-layout{background:#000}.portal-auth-card,.portal-register-card{background:#1c1c1e;border-color:#54545880}.portal-sheet-header,.portal-sheet-header ion-toolbar{--background:#1c1c1e}.portal-sheet-scroll{--background:#000}.portal-pull-icon{color:#ebebf573}}
