.auth-shell{min-height:calc(100vh - 76px);display:grid;place-items:center;padding:36px 18px;background:radial-gradient(circle at 80% 15%,rgba(201,163,95,.16),transparent 28%),linear-gradient(135deg,#f7f9fb,#eef3f6)}
.auth-card{width:min(460px,100%);background:#fff;border:1px solid var(--line);border-radius:18px;padding:34px;box-shadow:var(--shadow);text-align:center}.auth-mark img{width:72px;height:72px;object-fit:contain}.auth-card h1{font:800 30px/1.1 'Montserrat',sans-serif;color:var(--navy);margin:8px 0}.auth-copy{color:var(--muted);line-height:1.55;margin:0 auto 22px;max-width:390px}.auth-form{display:grid;gap:13px;text-align:left}.auth-form label{font:800 10px 'Montserrat',sans-serif;text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}.auth-form input{width:100%;margin-top:7px;border:1px solid var(--line);border-radius:9px;padding:13px 14px;outline:none;font-size:14px}.auth-form input:focus{border-color:#a8bac8;box-shadow:0 0 0 3px rgba(18,58,93,.07)}.auth-form .btn{margin-top:3px;padding:14px}.auth-link{border:0;background:none;color:var(--blue);font-weight:700;font-size:12px;margin-top:15px;cursor:pointer}.auth-status{margin-top:16px;border-radius:9px;padding:11px 12px;background:#eef5fa;color:var(--blue);font-size:12px;line-height:1.45}.auth-status.error{background:var(--red-bg);color:var(--red)}.setup-card{margin-top:20px;padding:15px;border-radius:11px;background:var(--amber-bg);border:1px solid #efd9aa;text-align:left}.setup-card strong,.setup-card span{display:block}.setup-card strong{color:#704809;font:800 12px 'Montserrat',sans-serif}.setup-card span{margin:7px 0 13px;color:#795a2b;font-size:12px;line-height:1.45}.setup-card .btn{width:100%}
.live-user-card{padding:4px 8px 18px;border-bottom:1px solid var(--line);margin-bottom:16px}.live-user-card strong{display:block;font:800 12px 'Montserrat',sans-serif;color:var(--navy)}.live-user-card span{display:block;color:var(--muted);font-size:11px;margin-top:4px;text-transform:capitalize}.connection-pill{display:inline-flex;margin-top:9px;padding:4px 7px;border-radius:99px;background:var(--green-bg);color:var(--green);font:800 8px 'Montserrat',sans-serif;text-transform:uppercase;letter-spacing:.06em}.metric-note{font-size:11px;color:var(--muted);margin-top:5px}.role-banner{display:flex;justify-content:space-between;gap:18px;align-items:center;background:linear-gradient(135deg,var(--navy),#113c5e);color:white;border-radius:14px;padding:20px;margin-bottom:20px}.role-banner h1{font:800 24px 'Montserrat',sans-serif;margin:0}.role-banner p{margin:5px 0 0;color:rgba(255,255,255,.72);font-size:13px}.role-banner .pill{background:rgba(201,163,95,.16);color:var(--gold)}.login-locked{padding:28px;text-align:center}.login-locked h2{font:800 21px 'Montserrat',sans-serif;color:var(--navy)}.school-list-mini{display:flex;flex-wrap:wrap;gap:7px}.school-chip{padding:7px 9px;border-radius:8px;background:#f4f7f9;border:1px solid var(--line);font-size:11px;color:var(--ink)}
.qr-callout{border:1px solid var(--line);border-radius:13px;padding:20px;background:#fff;display:grid;grid-template-columns:1fr auto;gap:16px;align-items:center}.qr-callout img{width:112px;height:112px}.qr-callout h3{font:800 15px 'Montserrat',sans-serif;color:var(--navy);margin:0 0 6px}.qr-callout p{margin:0;color:var(--muted);font-size:12px;line-height:1.5}.approval-inline{display:flex;gap:6px;flex-wrap:wrap}.minutes-input{width:86px;border:1px solid var(--line);border-radius:7px;padding:7px 8px}
@media(max-width:760px){.auth-shell{min-height:calc(100vh - 66px);padding:22px 13px}.auth-card{padding:25px 19px}.portal-shell{display:block}.live-user-card{display:none}.qr-callout{grid-template-columns:1fr}.qr-callout img{margin:auto}.role-banner{align-items:flex-start;flex-direction:column}}
.google-button{width:100%;border:1px solid #d7dee5;background:#fff;color:#22313e;border-radius:9px;padding:13px 16px;display:flex;align-items:center;justify-content:center;gap:11px;font:800 12px 'Montserrat',sans-serif;cursor:pointer;box-shadow:0 2px 7px rgba(20,40,60,.05)}.google-button:hover{border-color:#aebbc6;background:#fafcfd}.google-g{width:25px;height:25px;display:grid;place-items:center;border-radius:50%;font:800 17px Arial,sans-serif;color:#4285f4;background:#f6f9ff}.signin-note{font-size:11px!important;line-height:1.5!important;color:var(--muted)!important;margin:12px auto 4px!important;max-width:360px}.email-fallback{margin-top:14px;padding-top:15px;border-top:1px solid var(--line)}.signed-in-email{background:#f5f8fa;border:1px solid var(--line);padding:11px;border-radius:9px;font-size:12px;color:var(--muted);margin-top:14px}.signed-in-email strong{color:var(--navy)}.access-denied{margin-top:18px;background:var(--amber-bg);border:1px solid #efd9aa;border-radius:11px;padding:15px;text-align:left}.access-denied strong{font:800 12px 'Montserrat',sans-serif;color:#704809}.access-denied p{font-size:12px;line-height:1.5;color:#795a2b;margin:7px 0 0}.setup-card .btn{margin-top:5px}.check-card .google-button{margin-top:16px}

/* V4.3 portal state + access-control UI */
[hidden]{display:none!important}
.signed-out-card{text-align:center}
.signed-out-mark{width:68px;height:68px;margin:0 auto 12px;border-radius:50%;display:grid;place-items:center;background:#e7f5ef;color:#19724b;font:800 30px/1 'Montserrat',sans-serif}
.signed-out-action{width:100%;margin-top:4px}
.signed-out-link{display:inline-block;margin-top:18px}
.school-picker{position:relative}
.school-picker-button{width:100%;border:1px solid var(--line);border-radius:8px;padding:11px 38px 11px 12px;background:#fff;text-align:left;color:var(--ink);cursor:pointer;position:relative;font:inherit}
.school-picker-button:after{content:'⌄';position:absolute;right:13px;top:50%;transform:translateY(-55%);color:var(--muted);font-size:18px}
.school-picker-button.placeholder{color:#7f8b95}
.school-picker-button.priority-selected{background:#edf7fc;border-color:#c9e6f4}
.school-picker-menu{position:absolute;z-index:150;left:0;right:0;top:calc(100% + 6px);background:#fff;border:1px solid #d5e0e7;border-radius:10px;box-shadow:0 18px 46px rgba(7,24,41,.18);padding:6px;max-height:310px;overflow:auto}
.school-picker-option{width:100%;border:0;background:#fff;border-radius:7px;padding:10px 11px;text-align:left;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:10px;color:var(--ink);font-size:13px}
.school-picker-option:hover,.school-picker-option:focus{background:#f4f8fa;outline:none}
.school-picker-option.priority-school{background:#edf7fc}
.school-picker-option.priority-school:hover,.school-picker-option.priority-school:focus{background:#dff1fa}
.school-picker-option .priority-badge{flex:0 0 auto;border-radius:99px;padding:3px 7px;background:#d2ebf7;color:#155b78;font:800 8px/1 'Montserrat',sans-serif;text-transform:uppercase;letter-spacing:.05em}
.access-title{font-size:11px;color:var(--muted);margin-top:3px}

/* V4.4 institutional portal UX */
.notification-wrap,.account-menu-wrap{position:relative}.notification-button{position:relative;width:38px;height:38px;border-radius:50%;border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.07);color:#fff;cursor:pointer;font-size:20px;display:grid;place-items:center}.notification-button:hover,.avatar-button:hover{background:rgba(255,255,255,.14)}.notification-button span{position:absolute;right:-3px;top:-3px;min-width:18px;height:18px;padding:0 5px;border-radius:99px;background:var(--gold);color:var(--navy);font:800 9px/18px 'Montserrat',sans-serif}.header-popover{position:absolute;right:0;top:48px;width:310px;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 20px 55px rgba(4,24,40,.23);z-index:60;color:var(--ink);overflow:hidden}.user-menu{width:235px;padding:15px}.user-menu strong{display:block;font:800 13px 'Montserrat',sans-serif;color:var(--navy)}.user-menu>span{display:block;font-size:11px;color:var(--muted);margin:4px 0 13px}.user-menu a,.user-menu button{display:block;width:100%;padding:10px 0;border:0;border-top:1px solid #edf1f4;background:none;text-align:left;color:var(--ink);font-size:12px;text-decoration:none;cursor:pointer}.user-menu button{color:#8e3d3d}.popover-head{display:flex;align-items:center;justify-content:space-between;padding:14px 15px;border-bottom:1px solid var(--line)}.popover-head strong{font:800 12px 'Montserrat',sans-serif;color:var(--navy)}.popover-head button{border:0;background:none;font-size:20px;color:var(--muted);cursor:pointer}.notification-list button{width:100%;display:flex;flex-direction:column;gap:4px;text-align:left;padding:13px 15px;border:0;border-bottom:1px solid #edf1f4;background:#fff;color:var(--ink);font-size:12px;cursor:pointer}.notification-list button:hover{background:#f7fafb}.notification-list button span{font-size:10px;color:var(--blue);font-weight:700}.notification-empty{padding:22px 15px;text-align:center;color:var(--muted);font-size:12px}
.directory-card .card-body{padding:18px}.directory-toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:10px}.directory-search{min-width:260px}.directory-meta{display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:11px;margin:4px 0 14px}.text-action{border:0;background:none;color:var(--blue);font-weight:700;cursor:pointer}.table-note{display:block;margin-top:3px;color:var(--muted)}.compact-select{border:1px solid var(--line);border-radius:7px;padding:7px 8px;background:#fff;color:var(--ink);font-size:11px}
.partner-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.partner-card{text-align:left;border:1px solid var(--line);border-radius:13px;background:#fff;padding:18px;color:var(--ink);cursor:pointer;box-shadow:0 8px 25px rgba(17,40,62,.04)}.partner-card:hover{transform:translateY(-2px);box-shadow:0 14px 32px rgba(17,40,62,.08)}.partner-card.priority{background:#eff8fc;border-color:#cfe8f4}.partner-card-top{display:flex;justify-content:space-between;align-items:center}.primary-partner-badge{border-radius:99px;padding:5px 8px;background:#d9eef8;color:#175c78;font:800 8px 'Montserrat',sans-serif;text-transform:uppercase;letter-spacing:.06em}.partner-card h3{font:800 14px/1.35 'Montserrat',sans-serif;color:var(--navy);margin:10px 0 14px}.partner-card p,.partner-card small{display:block;color:var(--muted);font-size:11px;line-height:1.45;margin:10px 0 0}.partner-metrics{display:flex;gap:18px;padding-top:12px;border-top:1px solid rgba(20,50,75,.09)}.partner-metrics span{font-size:10px;color:var(--muted)}.partner-metrics strong{display:block;font:800 18px 'Montserrat',sans-serif;color:var(--navy)}.school-detail-section{border:1px solid var(--line);border-radius:10px;margin-top:14px;overflow:hidden}.liaison-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-bottom:1px solid #edf1f4}.liaison-row:last-child{border-bottom:0}.chip-row{display:flex;gap:8px;flex-wrap:wrap;padding:15px}.site-chip{padding:7px 9px;border-radius:99px;background:#eef5fa;color:var(--blue);font-size:10px;font-weight:700}.muted-copy{color:var(--muted);font-size:11px}.modal-kicker{font:800 9px 'Montserrat',sans-serif;text-transform:uppercase;letter-spacing:.09em;color:var(--gold);margin-bottom:6px}
.student-record-head{margin-bottom:20px}.record-back{border:0;background:none;padding:0;color:var(--blue);font-weight:700;font-size:11px;cursor:pointer;margin-bottom:14px}.student-record-title{display:flex;justify-content:space-between;align-items:flex-end;gap:20px}.student-record-title h1{margin:0;font:800 clamp(26px,3vw,38px)/1.1 'Montserrat',sans-serif;color:var(--navy)}.student-record-title p{margin:6px 0 0;color:var(--muted);font-size:13px}.record-tabs{display:flex;gap:5px;overflow:auto;margin-top:18px;padding-bottom:1px;border-bottom:1px solid var(--line)}.record-tab{white-space:nowrap;border:0;border-bottom:2px solid transparent;background:none;padding:10px 12px;color:var(--muted);font:800 10px 'Montserrat',sans-serif;cursor:pointer}.record-tab.active{color:var(--navy);border-bottom-color:var(--gold)}.detail-kpis{margin-top:0}.kpi-status{font-size:16px}.profile-facts{display:grid;grid-template-columns:1fr 1fr;gap:17px}.profile-facts span{display:block;font:800 8px 'Montserrat',sans-serif;text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}.profile-facts strong{display:block;margin-top:4px;font-size:13px;color:var(--ink)}.mini-activity{padding:10px 0;border-bottom:1px solid #edf1f4}.mini-activity:last-child{border-bottom:0}.mini-activity strong{display:block;font-size:12px}.mini-activity span{display:flex;align-items:center;gap:7px;flex-wrap:wrap;color:var(--muted);font-size:10px;margin-top:4px}.page-subhead{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:15px}.page-subhead h2{margin:0;font:800 18px 'Montserrat',sans-serif;color:var(--navy)}.page-subhead p{margin:5px 0 0;color:var(--muted);font-size:12px;max-width:720px;line-height:1.5}.notes-list{display:flex;flex-direction:column;gap:10px}.note-card{margin:0;background:#fff;border:1px solid var(--line);border-radius:11px;padding:15px}.note-card p{margin:0;line-height:1.55;font-size:13px}.note-card footer{margin-top:9px;color:var(--muted);font-size:10px}
.privacy-note a{color:var(--blue)}
@media(max-width:1050px){.partner-grid{grid-template-columns:1fr 1fr}.directory-toolbar .filter-select{flex:1;min-width:150px}.directory-search{flex-basis:100%}}
@media(max-width:760px){.notification-button{width:34px;height:34px}.header-popover{position:fixed;right:10px;left:10px;top:72px;width:auto}.partner-grid{grid-template-columns:1fr}.student-record-title{align-items:flex-start;flex-direction:column}.profile-facts{grid-template-columns:1fr}.page-subhead{flex-direction:column}.page-subhead .btn{width:100%}.record-tabs{margin-left:-14px;margin-right:-14px;padding-left:14px}.directory-toolbar .filter-select{width:100%;flex-basis:100%}}
.portal-legal-note{font-size:10px!important;line-height:1.45!important;color:#7a8792!important;margin:8px auto 0!important;max-width:370px}.portal-legal-note a{color:var(--blue);font-weight:700}
@media(max-width:760px){#sideNav{overflow-x:auto;justify-content:flex-start}.nav-item{min-width:70px}.notification-wrap{display:block}}
.directory-card table{min-width:1080px}

/* V4.9 competency framework */
.competency-summary-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:18px}.competency-summary-card{background:linear-gradient(135deg,#eef7fb,#fff);border:1px solid #cfe4ee;border-radius:13px;padding:18px}.competency-summary-card.clinical{background:linear-gradient(135deg,#f8f4eb,#fff);border-color:#eadbbd}.competency-summary-card>span{display:block;font:800 9px 'Montserrat',sans-serif;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.competency-summary-card>strong{display:block;font:800 27px 'Montserrat',sans-serif;color:var(--navy);margin:9px 0 11px}.competency-summary-card small{display:block;color:var(--muted);font-size:10px;margin-top:7px}.competency-summary-card .progress{height:8px}.competency-summary-card:first-child .progress span{background:#4b9bc0}.competency-legend{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:0 0 20px}.competency-legend span{border:1px solid var(--line);border-radius:9px;background:#fff;padding:10px 11px;color:var(--muted);font-size:10px;line-height:1.4}.competency-legend b{display:block;color:var(--navy);font-family:'Montserrat',sans-serif;margin-bottom:2px}.competency-track{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden;margin-bottom:18px;box-shadow:0 8px 25px rgba(17,40,62,.04)}.competency-track-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;padding:19px 20px;background:#f8fbfc;border-bottom:1px solid var(--line)}.clinical-track .competency-track-head{background:#fcfaf6}.competency-track-head h3{margin:7px 0 5px;font:800 17px 'Montserrat',sans-serif;color:var(--navy)}.competency-track-head p{margin:0;max-width:760px;color:var(--muted);font-size:11px;line-height:1.5}.competency-track-head>strong{font:800 20px 'Montserrat',sans-serif;color:var(--navy);white-space:nowrap}.track-tag{display:inline-flex;border-radius:99px;padding:5px 8px;font:800 8px 'Montserrat',sans-serif;text-transform:uppercase;letter-spacing:.07em}.track-tag.academy{background:#dff1fa;color:#155b78}.track-tag.readiness{background:#edf3f7;color:#34566e}.track-tag.clinical{background:#f5ead2;color:#79551e}.competency-group{border-bottom:1px solid #edf1f4}.competency-group:last-child{border-bottom:0}.competency-group summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:15px;padding:14px 18px;background:#fff}.competency-group summary::-webkit-details-marker{display:none}.competency-group summary span{font:800 12px 'Montserrat',sans-serif;color:var(--navy)}.competency-group summary small{color:var(--muted);font-size:10px}.competency-group summary:before{content:'›';font-size:18px;color:var(--muted);margin-right:2px;transition:.15s}.competency-group[open] summary:before{transform:rotate(90deg)}.competency-list{border-top:1px solid #edf1f4}.competency-list.compact{border-top:0}.competency-row{position:relative;padding:13px 18px;border-bottom:1px solid #edf1f4;background:#fff}.competency-row:last-child{border-bottom:0}.competency-main{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px}.competency-main strong{display:block;color:var(--ink);font-size:12px}.competency-main small{display:block;color:var(--muted);font-size:9px;line-height:1.45;margin-top:3px;max-width:900px}.competency-status{display:flex;align-items:center;justify-content:flex-end;gap:5px;flex-wrap:wrap}.competency-meta{padding-top:7px;color:var(--muted);font-size:9px;line-height:1.4;padding-right:85px}.competency-meta span{display:block;margin-top:3px;color:#586773}.competency-row-action{position:absolute;right:18px;bottom:11px}.competency-history{margin-top:20px}.competency-workspace{display:grid;grid-template-columns:minmax(360px,.72fr) minmax(0,1.45fr);gap:18px;align-items:start}.quick-signoff{background:#fff;border:1px solid var(--line);border-radius:14px;padding:19px;box-shadow:0 8px 25px rgba(17,40,62,.04);position:sticky;top:98px}.quick-signoff-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:18px}.quick-signoff-head h2{margin:7px 0 4px;font:800 18px 'Montserrat',sans-serif;color:var(--navy)}.quick-signoff-head p{margin:0;color:var(--muted);font-size:11px;line-height:1.45}.quick-signoff .form-grid{grid-template-columns:1fr 1fr}.quick-signoff-actions{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:17px;padding-top:15px;border-top:1px solid var(--line)}.quick-signoff-actions span{color:var(--muted);font-size:9px;line-height:1.4;max-width:250px}.level-buttons{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.level-buttons button{border:1px solid var(--line);border-radius:8px;background:#fff;color:#61717e;padding:10px 6px;font:800 9px 'Montserrat',sans-serif;cursor:pointer}.level-buttons button:hover{border-color:#9fbdcd;background:#f4f9fb}.level-buttons button.selected{background:#123a5d;border-color:#123a5d;color:#fff}.check-label{display:flex!important;flex-direction:row!important;align-items:center;gap:7px!important;text-transform:none!important;letter-spacing:0!important;font:700 11px 'Lato',sans-serif!important;color:var(--ink)!important}.check-label input{width:auto;margin:0}.check-label span,.optional-label{font-weight:400;color:var(--muted);text-transform:none;letter-spacing:0}.group-student-grid{border:1px solid var(--line);border-radius:9px;max-height:230px;overflow:auto;padding:4px}.group-student-grid label{display:flex;align-items:center;gap:9px;padding:9px;border-bottom:1px solid #edf1f4;cursor:pointer;text-transform:none!important;letter-spacing:0!important}.group-student-grid label:last-child{border-bottom:0}.group-student-grid input{width:auto}.group-student-grid span{font-size:11px;color:var(--ink)}.group-student-grid small{display:block;color:var(--muted);font-size:9px;margin-top:2px}.competency-roster-card{min-width:0}.dashboard-progress-block{margin-bottom:17px}.dashboard-progress-block:last-child{margin-bottom:0}.dashboard-progress-block>div:first-child{display:flex;justify-content:space-between;gap:10px;margin-bottom:7px}.dashboard-progress-block span{color:var(--muted);font-size:11px}.dashboard-progress-block strong{color:var(--navy);font:800 11px 'Montserrat',sans-serif}.student-progress-table{min-width:1240px}
@media(max-width:1150px){.competency-workspace{grid-template-columns:1fr}.quick-signoff{position:static}.competency-legend{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.competency-summary-grid{grid-template-columns:1fr}.competency-legend{grid-template-columns:1fr 1fr}.competency-track-head{flex-direction:column}.competency-main{grid-template-columns:1fr}.competency-status{justify-content:flex-start}.competency-meta{padding-right:0}.competency-row-action{position:static;margin-top:8px}.quick-signoff .form-grid{grid-template-columns:1fr}.quick-signoff-head{flex-direction:column}.quick-signoff-head .btn{width:100%}.quick-signoff-actions{flex-direction:column;align-items:stretch}.quick-signoff-actions .btn{width:100%}.level-buttons{grid-template-columns:1fr 1fr}.competency-legend span{font-size:9px}}
@media(max-width:420px){.competency-legend{grid-template-columns:1fr}.competency-summary-card>strong{font-size:24px}}
@media print{.competency-row-action,.quick-signoff,.competency-legend,.competency-history .card-link{display:none!important}.competency-track{break-inside:avoid;box-shadow:none}.competency-group{break-inside:avoid}.competency-group:not([open])>.competency-list{display:block!important}}
