:root{--green:#315b28;--green-2:#274a20;--green-soft:#f0f6ed;--ink:#172015;--muted:#687567;--line:#dfe7db;--border:var(--line);--surface:#fff;--surface-soft:#f8faf7;--canvas:#f4f7f2;--danger:#a61b1b;--danger-soft:#fff0f0;--success:#236b36;--success-soft:#edf8ef;--warning:#8a5a00;--shadow:0 8px 26px #1f361811;--shadow-lg:0 24px 70px #12220e33}*{box-sizing:border-box}html,body{min-height:100%;margin:0}body{color:var(--ink);background:var(--canvas);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.5}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}.app-shell{grid-template-columns:270px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{color:#fff;background:linear-gradient(180deg, var(--green), #203715);flex-direction:column;gap:24px;height:100vh;padding:24px 18px;display:flex;position:sticky;top:0}.brand{border-bottom:1px solid #ffffff24;align-items:center;gap:12px;padding:4px 6px 18px;display:flex}.brand-mark{min-width:48px;height:48px;color:var(--green);background:#fff;border-radius:14px;place-items:center;font-weight:900;display:grid}.brand strong{font-size:14px;line-height:1.25;display:block}.brand small{opacity:.75;margin-top:4px;display:block}.nav-list{gap:6px;display:grid}.nav-list a{color:#ffffffe0;border-radius:10px;padding:11px 12px;font-weight:650}.nav-list a:hover{color:#fff;background:#ffffff1f}.sidebar-user{border-top:1px solid #ffffff24;align-items:center;gap:11px;margin-top:auto;padding:14px 8px 0;display:flex}.avatar{background:#ffffff29;border-radius:50%;place-items:center;width:42px;height:42px;font-weight:800;display:grid}.sidebar-user-copy{min-width:0}.sidebar-user-copy strong,.sidebar-user-copy small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.sidebar-user-copy small{opacity:.72;margin-top:2px}.sidebar .sidebar-logout.button{color:#fff;background:0 0;border-color:#ffffff59;width:100%}.sidebar .sidebar-logout.button:hover{background:#ffffff14}.main{min-width:0;padding:32px}.content{max-width:1440px;margin:0 auto}.page-header{justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:22px;display:flex}.page-header h1{letter-spacing:-.03em;margin:0;font-size:clamp(26px,3vw,38px)}.page-header p{color:var(--muted);margin:7px 0 0}.page-actions{flex-wrap:wrap;gap:10px;display:flex}.card{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:16px}.card h2,.card h3{margin-top:0}.stat-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:20px;display:grid}.stat-card{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:15px;padding:18px}.stat-label{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:13px;font-weight:700}.stat-value{letter-spacing:-.04em;margin-top:7px;font-size:34px;font-weight:850}.stat-hint{color:var(--muted);margin-top:3px;font-size:13px}.grid-2{grid-template-columns:minmax(0,1.4fr) minmax(300px,.6fr);gap:20px;display:grid}.button{border:1px solid var(--green);background:var(--green);color:#fff;border-radius:9px;justify-content:center;align-items:center;gap:8px;min-height:40px;padding:9px 15px;font-weight:750;display:inline-flex}.button:hover{background:var(--green-2)}.button.secondary{color:var(--green);background:#fff;border-color:#b7c7ae}.button.small{min-height:34px;padding:6px 10px;font-size:13px}.button.disabled{opacity:.4;pointer-events:none}.flash{border:1px solid;border-radius:10px;margin:0 0 18px;padding:12px 15px;font-weight:650}.flash-ok{background:var(--success-soft);color:var(--success);border-color:#b9ddc0}.flash-error{background:var(--danger-soft);color:var(--danger);border-color:#edb6b6}.toolbar{flex-wrap:wrap;align-items:end;gap:10px;margin-bottom:16px;display:flex}label{color:#33402f;gap:6px;font-size:14px;font-weight:700;display:grid}input,select,textarea{width:100%;color:var(--ink);background:#fff;border:1px solid #bdc9b8;border-radius:9px;outline:none;padding:10px 11px}textarea{resize:vertical}.checkbox-row{flex-direction:row;align-items:center;gap:9px;display:flex}.checkbox-row input{width:auto}.form-grid{gap:16px;display:grid}.form-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.span-2{grid-column:span 2}.form-footer{border-top:1px solid var(--line);justify-content:flex-end;gap:10px;margin-top:20px;padding-top:18px;display:flex}.table-wrap{border-radius:14px;overflow-x:auto}table{border-collapse:collapse;background:#fff;width:100%;min-width:760px}th{text-align:left;text-transform:uppercase;letter-spacing:.055em;color:var(--muted);background:#f7f9f6;font-size:12px}th,td{vertical-align:middle;border-bottom:1px solid #e5eae2;padding:12px 14px}.table-actions{flex-wrap:wrap;gap:7px;display:flex}.badge{color:#445143;background:#eef2ec;border-radius:999px;align-items:center;min-height:25px;padding:3px 8px;font-size:12px;font-weight:800;display:inline-flex}.badge.green{background:var(--success-soft);color:var(--success)}.badge.red{background:var(--danger-soft);color:var(--danger)}.badge.amber{color:var(--warning);background:#fff6df}.muted{color:var(--muted)}.small{font-size:13px}.nowrap{white-space:nowrap}.empty{text-align:center;color:var(--muted);padding:38px 20px}.pagination{color:var(--muted);justify-content:space-between;align-items:center;gap:12px;margin-top:16px;display:flex}.login-shell{background:radial-gradient(circle at 0 0,#f0f6eb 0,#f7f8f6 40%,#eef2ec 100%);place-items:center;min-height:100vh;padding:24px;display:grid}.login-card{width:min(440px,100%);padding:28px}.login-brand{align-items:center;gap:14px;margin-bottom:24px;display:flex}.login-brand .brand-mark{background:var(--green);color:#fff}.login-brand h1{margin:0;font-size:23px}.login-brand p{color:var(--muted);margin:4px 0 0}.login-form{gap:15px;display:grid}.login-form .button{width:100%;margin-top:4px}.login-note{color:var(--muted);margin-top:16px;font-size:12px}.student-photo{object-fit:cover;border:1px solid var(--line);background:#edf1eb;border-radius:14px;width:160px;height:190px}.detail-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.detail-item{border-bottom:1px solid var(--line);padding-bottom:10px}.detail-item span{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-size:12px;font-weight:750;display:block}.detail-item strong{margin-top:4px;display:block}.notice-list{gap:12px;display:grid}.notice-card{border-left:4px solid var(--green);padding:16px}.notice-card h3{margin:0 0 5px}.notice-meta{color:var(--muted);font-size:12px}.inline-form{flex-wrap:wrap;align-items:end;gap:8px;display:flex}.inline-form label{min-width:120px}@media (max-width:1050px){.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-2{grid-template-columns:1fr}}@media (max-width:780px){.app-shell{display:block}.sidebar{height:auto;position:relative}.nav-list{grid-template-columns:repeat(2,minmax(0,1fr))}.sidebar-user{margin-top:10px}.main{padding:22px 14px}.page-header{flex-direction:column}.form-grid.two,.detail-list{grid-template-columns:1fr}.span-2{grid-column:auto}}@media (max-width:500px){.stat-grid,.nav-list{grid-template-columns:1fr}}.page-header.compact{align-items:center;margin-bottom:10px}.students-primary-actions{justify-content:flex-end;margin:0 0 14px}.live-pill{min-height:40px;color:var(--muted);background:#fff;border:1px solid #cbd6c6;border-radius:999px;align-items:center;gap:7px;padding:8px 12px;font-size:12px;font-weight:750;display:inline-flex}.live-dot{background:#2f9e44;border-radius:50%;width:8px;height:8px;box-shadow:0 0 0 4px #2f9e441f}.modal-backdrop{z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0d160b94;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.modal-card{border:1px solid var(--line);background:#fff;border-radius:18px;flex-direction:column;width:min(620px,100%);max-height:calc(100vh - 48px);display:flex;overflow:hidden;box-shadow:0 26px 80px #00000042}.modal-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;padding:16px 20px;display:flex}.modal-header h2{margin:0;font-size:20px}.modal-body{padding:0;overflow:auto}.modal-form{box-shadow:none;border:0;border-radius:0}.icon-button{border:1px solid var(--line);width:38px;height:38px;color:var(--ink);background:#fff;border-radius:9px;font-size:25px;line-height:1}.icon-button:hover{background:#f3f6f1}.import-callout{background:var(--green-soft);border:1px solid #cbd8c6;border-radius:12px;margin-bottom:18px;padding:14px}.import-callout p{color:var(--muted);margin:7px 0 12px}.import-callout code{background:#ffffffbf;border-radius:5px;padding:2px 5px}.stack-actions{gap:8px;min-width:520px;display:grid}.audit-details{word-break:break-word;max-width:520px}.architecture-flow{flex-wrap:wrap;align-items:center;gap:8px;margin:16px 0;display:flex}.architecture-flow span{background:var(--green-soft);border:1px solid #cbd8c6;border-radius:9px;padding:9px 11px;font-weight:750}.architecture-flow b{color:var(--muted)}@media (max-width:780px){.modal-backdrop{place-items:end center;padding:8px}.modal-card{border-radius:18px 18px 0 0;max-height:94vh}.students-primary-actions{justify-content:stretch}.students-primary-actions>*{flex:auto}}.field-help{color:var(--muted);margin-top:.35rem;font-size:.82rem;font-weight:500;display:block}.current-photo{border:1px solid var(--border);background:var(--surface-soft);border-radius:14px;align-items:center;gap:1rem;padding:.8rem;display:flex}.current-photo img{object-fit:cover;border:1px solid var(--border);background:#fff;border-radius:10px;width:72px;height:88px}.template-editor-grid{grid-template-columns:minmax(0,1fr) minmax(360px,.9fr);align-items:start;gap:1rem;display:grid}.template-preview-column{gap:1rem;display:grid}.id-preview-shell{background:var(--surface-soft);border-radius:16px;padding:.75rem;overflow:auto}.id-preview{border:1px solid #0f172a26;border-radius:16px;width:100%;max-width:560px;margin:auto;position:relative;overflow:hidden;box-shadow:0 10px 35px #0f172a29}.id-preview-field,.id-preview-photo{align-items:center;line-height:1.05;display:flex;position:absolute;overflow:hidden}.id-preview-photo{color:#64748b;background:#e2e8f0;border:1px dashed #64748b;justify-content:center;font-size:11px}.template-invalid{color:#b91c1c;background:#fef2f2;border:1px dashed #ef4444;border-radius:12px;padding:2rem}@media (max-width:1000px){.template-editor-grid{grid-template-columns:1fr}}.section-title-row{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.section-title-row h2,.section-title-row h3{margin-bottom:.25rem}.section-gap-sm{margin-top:1rem}.template-assets{border:1px solid var(--border);background:var(--surface-soft);border-radius:14px;padding:1rem}.template-json-details{border:1px solid var(--border);background:var(--surface);border-radius:12px;margin-top:1rem;overflow:hidden}.template-json-details summary{cursor:pointer;background:var(--surface-soft);padding:.8rem 1rem;font-weight:800}.template-json-details label{padding:0 1rem 1rem;display:block}.template-json-details textarea{width:100%;margin-top:.7rem;font-family:Consolas,Courier New,monospace;font-size:.8rem;line-height:1.35}.preview-sticky{z-index:2;position:sticky;top:1rem}.id-preview{background-position:50%;max-width:430px}.id-preview-background{z-index:0;object-fit:fill;pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block;position:absolute;inset:0}.id-preview-field,.id-preview-photo,.id-preview-image,.id-preview-line{z-index:1}.id-preview-field{overflow-wrap:anywhere;word-break:normal;padding:0;display:flex;position:absolute;overflow:hidden}.id-preview-photo,.id-preview-image{justify-content:center;align-items:center;display:flex;position:absolute;overflow:hidden}.id-preview-photo.real{background:#fff;border:0}.id-preview-photo img,.id-preview-image img{width:100%;height:100%;display:block}.id-preview-image span{color:#64748b;font-size:10px}.id-preview-line{position:absolute}.id-preview-qr{box-sizing:border-box;background-color:#fff;background-image:linear-gradient(90deg,#000 12%,#0000 12% 24%,#000 24% 35%,#0000 35% 48%,#000 48% 62%,#0000 62% 75%,#000 75% 88%,#0000 88%),linear-gradient(#000 12%,#0000 12% 24%,#000 24% 35%,#0000 35% 48%,#000 48% 62%,#0000 62% 75%,#000 75% 88%,#0000 88%),none;background-position:0 0,0 0,0 0;background-repeat:repeat,repeat,repeat;background-size:17px 17px;background-attachment:scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box;border:3px solid #fff;place-items:center;width:100%;height:100%;display:grid;position:relative}.id-preview-qr span{color:#000;background:#fff;padding:2px 4px;font-size:9px;font-weight:900}@media (max-width:700px){.preview-sticky{position:static}.id-preview{max-width:360px}}.compact-label{color:var(--muted);align-items:center;gap:.5rem;font-size:.85rem;display:flex}.compact-label select{min-width:190px}.designer-panel{border:1px solid var(--border);background:#fff;border-radius:14px;padding:1rem}.designer-tabs{gap:.5rem;margin-bottom:1rem;display:flex}.designer-tabs button,.designer-layer-list button{border:1px solid var(--border);background:var(--surface-soft);color:var(--ink);cursor:pointer;border-radius:9px;padding:.55rem .75rem;font-weight:750}.designer-tabs button.active,.designer-layer-list button.active{background:var(--green);border-color:var(--green);color:#fff}.designer-layer-list{flex-wrap:wrap;gap:.45rem;max-height:190px;margin:.6rem 0 1rem;padding:.15rem;display:flex;overflow:auto}.designer-layer-list button{text-transform:capitalize;font-size:.78rem}.designer-properties{border-top:1px solid var(--border);padding-top:1rem}.designer-help{background:var(--green-soft);border-radius:10px;align-items:center;padding:.65rem .8rem;display:flex}.compact-controls{gap:.65rem}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.form-grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.compact-controls label{font-size:.78rem}.compact-controls input,.compact-controls select,.compact-controls textarea{margin-top:.3rem}.designer-layer{cursor:move;touch-action:none;outline-offset:1px;outline:1px dashed #0000}.designer-layer:hover{outline-color:#2f59228c}.designer-layer.selected{outline-offset:2px;z-index:8;outline:2px solid #2563eb;box-shadow:0 0 0 3px #2563eb24}.preview-card{transition:border-color .15s,box-shadow .15s}.preview-card.active-side{border-color:#7fa56d;box-shadow:0 0 0 2px #2f592214}.id-filter-grid{grid-template-columns:repeat(4,minmax(0,1fr));align-items:end;gap:.8rem;display:grid}@media (max-width:1100px){.form-grid.four,.id-filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:700px){.form-grid.three,.form-grid.four,.id-filter-grid{grid-template-columns:1fr}.id-student-list .inline-form{min-width:0}}.designer-layer-heading{align-items:flex-end;gap:1rem}.designer-layer-actions{flex-wrap:wrap;justify-content:flex-end;align-items:flex-end;gap:.55rem;display:flex}.designer-add-layer{min-width:190px;margin:0}.designer-add-layer select{min-width:190px;margin-top:.25rem}.designer-layer-actions .button:disabled{opacity:.45;cursor:not-allowed}@media (max-width:760px){.designer-layer-heading{align-items:stretch}.designer-layer-actions{justify-content:flex-start;width:100%}.designer-add-layer,.designer-add-layer select{width:100%;min-width:100%}}.id-preview-text-fit-box{width:100%;min-width:0;height:100%;min-height:0;display:flex;overflow:hidden}.id-preview-text-fit-value{width:100%;max-width:100%;max-height:100%;display:block;overflow:hidden}@media (min-width:1001px){.template-preview-column{scrollbar-gutter:stable;max-height:calc(100vh - 2rem);padding-right:.2rem;position:sticky;top:1rem;overflow:auto}.preview-sticky{position:static}}body{font-size:14px}.app-shell{grid-template-columns:248px minmax(0,1fr)}.sidebar{gap:18px;padding:20px 14px;box-shadow:inset -1px 0 #ffffff0f}.brand{padding:4px 6px 16px}.brand-mark{border-radius:12px;width:44px;min-width:44px;height:44px;font-size:13px}.nav-list{scrollbar-width:thin;gap:4px;overflow:hidden auto}.nav-list a{border-radius:9px;width:100%;min-width:0;padding:9px 11px;font-size:13px;transition:background .14s,transform .14s;display:block}.nav-list a:hover{transform:translate(2px)}.main{padding:26px 28px 40px}.content{max-width:1500px}.page-header h1{font-size:clamp(24px,2.4vw,33px)}.page-header p{margin-top:5px;font-size:13px}.card{box-shadow:var(--shadow);border-radius:14px}.stat-card{box-shadow:var(--shadow);border-radius:13px;padding:15px 16px}.stat-label{font-size:11px}.stat-value{margin-top:4px;font-size:29px}.button{border-radius:8px;min-height:38px;padding:8px 13px;transition:transform .12s,box-shadow .12s,background .12s}.button:hover{transform:translateY(-1px);box-shadow:0 5px 14px #1f36181c}.button.small{min-height:32px;padding:5px 9px}input,select,textarea{border-color:#c7d2c2;border-radius:8px;min-height:40px;padding:8px 10px;transition:border-color .12s,box-shadow .12s,background .12s}textarea{min-height:76px}input[type=checkbox]{min-height:0}input[type=search]{padding-right:28px}.toolbar,.list-toolbar{border:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffffc7;border-radius:13px;flex-wrap:wrap;align-items:end;gap:10px;margin-bottom:14px;padding:12px;display:flex;position:relative;box-shadow:0 4px 14px #1f361809}.toolbar label{min-width:155px}.toolbar .grow{flex:320px}.compact-filter{width:fit-content;min-width:220px}.live-filter-form{padding-right:88px}.live-filter-state{min-height:28px;color:var(--muted);white-space:nowrap;background:#f3f6f1;border-radius:999px;align-items:center;gap:6px;padding:4px 8px;font-size:11px;font-weight:800;display:inline-flex}.live-filter-form>.live-filter-state{position:absolute;top:10px;right:10px}.live-filter-dot{background:#39a653;border-radius:50%;width:7px;height:7px}.live-filter-state.busy .live-filter-dot{animation:.8s ease-in-out infinite alternate pulseLive}@keyframes pulseLive{0%{opacity:.35;transform:scale(.8)}to{opacity:1;transform:scale(1.15)}}.list-toolbar{justify-content:space-between;align-items:center}.search-field{flex:340px;max-width:660px}.search-field input{background:#fff}.list-toolbar-meta{color:var(--muted);align-items:center;gap:12px;font-size:12px;font-weight:700;display:flex}.data-card{max-height:calc(100vh - 250px);overflow:auto}table{min-width:720px}th{z-index:3;background:#f6f9f5;border-bottom-color:#d8e2d4;padding:10px 12px;position:sticky;top:0}td{padding:10px 12px}tbody tr{transition:background .1s}tbody tr:last-child td{border-bottom:0}.table-actions{align-items:center;gap:6px}.form-card{padding:20px}.form-grid{gap:13px}.form-footer{z-index:2;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#fffffff5;margin:18px -20px -20px;padding:14px 20px;position:sticky;bottom:0}.modal-backdrop{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#0c160a7a}.modal-card{box-shadow:var(--shadow-lg);border-radius:16px}.modal-wide{width:min(920px,100%)}.modal-header h2{font-size:18px}.modal-body{overscroll-behavior:contain}.icon-button{border-radius:8px;width:34px;height:34px}.import-callout,.info-callout,.warning-callout,.danger-callout{border-radius:12px;padding:13px 14px}.info-callout{background:var(--green-soft);border:1px solid #cbdac5;align-items:flex-start;gap:10px;display:flex}.info-callout strong{white-space:nowrap}.warning-callout{color:#7a5410;background:#fff9e9;border:1px solid #ead6a5;gap:3px;margin-bottom:14px;display:grid}.danger-callout{background:var(--danger-soft);color:#7f2020;border:1px solid #efb8b8;margin-bottom:16px}.danger-callout p{color:#8e4a4a;margin:6px 0 0}.backup-badge{color:var(--success);background:#fff;border:1px solid #cbdac5;border-radius:999px;align-items:center;gap:7px;margin-top:8px;padding:5px 8px;font-size:11px;font-weight:800;display:inline-flex}.backup-badge-dot{background:var(--success);border-radius:50%;width:7px;height:7px}.clean-notice{padding:16px 18px}.notice-heading-row{flex-wrap:wrap;align-items:center;gap:9px;display:flex}.notice-heading-row h3{margin:0}.clean-notice p{white-space:pre-wrap;margin-bottom:0}.id-filter-grid.live-id-filters{grid-template-columns:minmax(220px,1.4fr) repeat(4,minmax(145px,1fr)) auto;align-items:end;gap:9px}.live-id-filters .live-filter-state{align-self:center;margin-bottom:6px}.id-student-list .inline-form{min-width:0}.students-primary-actions{margin-bottom:12px}.flash{margin-bottom:14px}.pagination{padding:10px 2px}.section-gap{margin-bottom:14px}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (max-width:1050px){.app-shell{grid-template-columns:220px minmax(0,1fr)}.main{padding:22px 20px 34px}.stat-grid,.id-filter-grid.live-id-filters{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:780px){.app-shell{display:block}.sidebar{height:auto;padding:12px;position:relative}.brand{border-bottom:0;padding-bottom:8px}.nav-list{grid-template-columns:repeat(2,minmax(0,1fr));max-height:260px}.sidebar-user{margin-top:4px}.main{padding:18px 12px 28px}.page-header{gap:10px;display:grid}.toolbar,.list-toolbar{padding:10px}.live-filter-form{padding-top:42px;padding-right:10px}.live-filter-form>.live-filter-state{left:10px;right:auto}.list-toolbar-meta{justify-content:space-between;width:100%}.form-grid.two{grid-template-columns:1fr}.span-2{grid-column:auto}.modal-backdrop{padding:0}.modal-card{border-radius:16px 16px 0 0;width:100%;max-height:94vh}.data-card{max-height:none}.id-filter-grid.live-id-filters{grid-template-columns:1fr}.live-id-filters .live-filter-state{justify-self:start}}@media (max-width:500px){.stat-grid{grid-template-columns:1fr}.nav-list{grid-template-columns:1fr 1fr}.page-actions>.button{flex:auto}}.nav-list a.active{color:#fff;background:#ffffff29;box-shadow:inset 3px 0 #ffffffbf}:focus-visible{outline:2px solid var(--green);outline-offset:2px}.button:focus-visible,.icon-button:focus-visible,.nav-list a:focus-visible{box-shadow:0 0 0 3px #315b2829}.button.secondary:hover{background:var(--green-soft);color:var(--green-2);border-color:#9fb694}.button.danger:hover{background:var(--danger-soft);border-color:#d99595}.button:disabled,.icon-button:disabled{cursor:not-allowed;opacity:.55;box-shadow:none;transform:none}input:disabled,select:disabled,textarea:disabled{cursor:not-allowed;color:#7a8478;background:#f1f4ef}.table-wrap{border:1px solid var(--line);background:var(--surface)}tbody tr:focus-within{background:#f5f9f3}.modal-card{scrollbar-gutter:stable}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.credential-download{justify-content:space-between;align-items:center;gap:14px;display:flex}.profile-hero{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:20px;margin-bottom:16px;display:grid}.profile-summary h2{margin:8px 0 2px}.profile-summary p{margin:0}.profile-photo-placeholder{color:var(--green);background:var(--green-soft);place-items:center;font-size:52px;font-weight:900;display:grid}.profile-sections{gap:16px;display:grid}.profile-subcard{border:1px solid var(--line);background:var(--surface-soft);border-radius:12px;padding:14px}.profile-subcard h3{margin:0 0 12px}.parent-profile-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.activity-list{display:grid}.activity-row{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;padding:10px 0;display:flex}.activity-row:last-child{border-bottom:0}.detail-item small{color:var(--muted);margin-bottom:3px;font-size:12px;font-weight:700;display:block}.detail-item strong{overflow-wrap:anywhere;display:block}@media (max-width:780px){.credential-download{flex-direction:column;align-items:stretch}.profile-hero,.parent-profile-grid{grid-template-columns:1fr}.activity-row{flex-direction:column;align-items:flex-start;gap:3px}}.person-profile-link{border-radius:10px;align-items:center;gap:10px;min-width:0;max-width:100%;margin:-3px -5px -3px -2px;padding:3px 5px 3px 2px;transition:background .12s,box-shadow .12s;display:inline-flex}.person-profile-link:hover{background:var(--green-soft);box-shadow:0 0 0 3px var(--green-soft)}.person-profile-link:focus-visible{outline:2px solid var(--green);outline-offset:3px}.person-avatar{background:var(--green-soft);width:38px;height:38px;color:var(--green);letter-spacing:.02em;border:1px solid #d5e0d0;border-radius:50%;flex:0 0 38px;place-items:center;font-size:12px;font-weight:850;display:grid;overflow:hidden}.person-avatar img{object-fit:cover;width:100%;height:100%;display:block}.person-profile-copy{gap:2px;min-width:0;display:grid}.person-profile-copy strong,.person-profile-copy .small{min-width:0;display:block}.person-profile-copy strong{line-height:1.25}.person-profile-link:hover strong{color:var(--green);text-underline-offset:2px;text-decoration:underline}@media (max-width:500px){.person-avatar{flex-basis:34px;width:34px;height:34px}}.form-subsection{border:1px solid var(--line);background:var(--surface-soft);border-radius:10px;justify-content:space-between;align-items:baseline;gap:12px;margin-top:4px;padding:10px 12px;display:flex}.form-subsection strong{color:var(--ink)}@media (max-width:700px){.form-subsection{gap:3px;display:grid}}:root{--starland-deep-green:#0f2a1d;--starland-main-green:#375534;--starland-soft-green:#6b9071;--starland-pale-green:#aec3b0;--starland-light-bg:#e3eed4;--starland-modern-bg:#f4f8ee;--starland-border:#d6e4cf;--starland-muted-text:#64748b;--green:var(--starland-main-green);--green-2:var(--starland-deep-green);--green-soft:var(--starland-light-bg);--ink:#102316;--muted:var(--starland-muted-text);--line:var(--starland-border);--canvas:var(--starland-modern-bg);--shadow:0 10px 24px #0f2a1d0e}body{background:var(--starland-modern-bg);color:var(--ink);font-family:Arial,Helvetica,sans-serif}.app-shell{grid-template-columns:258px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--starland-deep-green);z-index:45;gap:0;width:258px;height:100dvh;padding:20px 18px;position:fixed;overflow:hidden}.brand{border-bottom:1px solid #ffffff24;gap:12px;margin-bottom:14px;padding:0 2px 16px}.brand-logo{object-fit:contain;flex:none;width:42px;height:48px;display:block}.brand strong{font-size:16px;line-height:1.15}.brand small{color:var(--starland-pale-green);opacity:1;margin-top:4px;font-size:12px}.sidebar-scroll{scrollbar-gutter:stable;flex:auto;min-height:0;padding:2px 2px 16px 0;overflow:hidden auto}.sidebar-scroll::-webkit-scrollbar{width:7px}.sidebar-scroll::-webkit-scrollbar-track{background:0 0}.sidebar-scroll::-webkit-scrollbar-thumb{background:#ffffff24;border-radius:999px}.nav-section-title{color:var(--starland-pale-green);letter-spacing:.09em;text-transform:uppercase;margin:18px 10px 7px;font-size:11px;font-weight:900}.nav-list{gap:3px}.nav-list+.nav-list{margin-top:2px}.nav-list a{color:#ffffffe6;border-radius:6px;align-items:center;gap:10px;min-height:39px;padding:8px 10px;font-size:14px;font-weight:500;transition:background .14s,color .14s;display:flex}.nav-list a svg{color:#d8e8d7;flex:0 0 18px}.nav-list a:hover{background:#ffffff14}.nav-list a.active{color:#fff;background:#ffffff1f;font-weight:750}.nav-list a.active svg{color:#fff}.sidebar-signout{border-top:1px solid #ffffff1a;margin-top:10px;padding-top:14px}.sidebar .sidebar-logout,.sidebar .sidebar-logout:hover{color:var(--starland-deep-green);background:#fff;border:1px solid #fff;border-radius:6px;width:100%;min-height:38px;font-size:13px;font-weight:800}.sidebar .sidebar-logout:hover{background:var(--starland-light-bg);border-color:var(--starland-light-bg)}.main{grid-column:2;min-width:0;padding:0}.portal-topbar{border-bottom:1px solid var(--line);z-index:20;background:#fff;justify-content:space-between;align-items:center;gap:20px;min-height:64px;padding:10px 24px;display:flex;position:sticky;top:0}.portal-topbar strong,.portal-topbar small{display:block}.portal-topbar strong{font-size:15px}.portal-topbar small{color:var(--muted);margin-top:1px;font-size:12px}.portal-topbar>span{color:var(--muted);white-space:nowrap;font-size:13px}.content{max-width:1360px;padding:24px}.page-header{margin-bottom:14px}.page-header-dashboard{color:var(--ink);background:0 0;align-items:center;padding:0 0 4px}.page-header-dashboard .page-kicker{color:var(--green)}.page-header-dashboard h1{color:var(--ink);font-size:28px}.page-header-dashboard p{color:var(--muted)}.page-header-hero{background:linear-gradient(135deg, var(--starland-deep-green), var(--starland-main-green));color:#fff;border-radius:9px;align-items:center;min-height:146px;padding:20px 22px;position:relative;overflow:hidden;box-shadow:0 12px 26px #0f2a1d21}.page-header-hero:after{content:"";border:1px solid #ffffff14;border-radius:999px;width:180px;height:180px;position:absolute;top:-80px;right:-32px}.page-header-copy,.page-actions{z-index:1;position:relative}.page-kicker{color:var(--starland-pale-green);letter-spacing:.1em;text-transform:uppercase;margin-bottom:4px;font-size:11px;font-weight:900;display:block}.page-header h1{letter-spacing:-.025em;font-size:27px}.page-header-hero p{color:#ffffffd1;max-width:760px;font-size:13px;line-height:1.45}.page-header-hero .button{color:#fff;background:#ffffff14;border-color:#ffffff2e}.page-header-hero .button:hover{background:#ffffff24;border-color:#ffffff47}.page-header-hero .button.secondary{color:#fff;background:0 0}.card,.stat-card{border-color:var(--line);box-shadow:none;border-radius:8px}.card-pad{padding:16px}.stat-grid{gap:12px;margin-bottom:16px}.stat-card{min-height:110px;padding:16px;position:relative;overflow:hidden}.stat-card:before{background:var(--green);content:"";height:3px;position:absolute;inset:0 0 auto}.stat-label{color:#52667f;letter-spacing:.035em;text-transform:none;font-size:11px;font-weight:800}.stat-value{color:var(--ink);margin-top:8px;font-size:28px;font-weight:800}.stat-hint{margin-top:5px;font-size:11px}.grid-2{gap:14px}.button{border-radius:6px;min-height:38px;padding:8px 13px;font-size:13px;font-weight:750}.button.secondary{border-color:var(--line);color:var(--ink)}.button.secondary:hover{background:var(--starland-light-bg);border-color:var(--starland-pale-green)}.toolbar,.live-filter-form{border:1px solid var(--line);background:#fff;border-radius:8px;margin-bottom:14px;padding:14px}label{color:#334155;font-size:12px;font-weight:800}input,select,textarea{border-color:#cbd6cf;border-radius:6px;min-height:39px;padding:8px 10px}input:focus,select:focus,textarea:focus{border-color:var(--starland-main-green);box-shadow:0 0 0 3px #3755341a}.table-wrap{border:1px solid var(--line);background:#fff;border-radius:8px}table{background:#fff}th{color:#52667f;letter-spacing:.045em;background:#f6f9f3;font-size:11px}th,td{border-bottom-color:#e8eee5;padding:11px 13px}tbody tr:hover{background:#f8fbf6}.badge{min-height:23px;padding:3px 7px;font-size:11px}.notice-card{border:1px solid var(--line);border-left:3px solid var(--green);background:#fff;border-radius:7px;padding:14px}.modal-card{border-radius:10px}.modal-header{background:#fbfcfa;padding:14px 18px}.icon-button{border-radius:6px}@media (max-width:980px){.app-shell{display:block}.sidebar{width:100%;height:auto;max-height:none;position:sticky;top:0}.sidebar-scroll{max-height:min(44vh,360px);overflow-y:auto}.sidebar-signout{display:block}.main{grid-column:auto}.portal-topbar{position:static}.content{padding:18px}}@media (max-width:640px){.portal-topbar{flex-direction:column;align-items:flex-start;padding:12px 14px}.portal-topbar>span{white-space:normal}.content{padding:14px}.page-header-hero{flex-direction:column;align-items:stretch;min-height:auto;padding:18px}.page-header h1{font-size:23px}.page-actions{width:100%}.page-actions .button{flex:100%}}.dashboard-stat-grid .stat-card{background:linear-gradient(#fff 0%,#fbfdf9 100%)}.dashboard-stat-grid .stat-card:nth-child(2):before{background:#4d7f41}.dashboard-stat-grid .stat-card:nth-child(3):before{background:#2f7550}.dashboard-stat-grid .stat-card:nth-child(4):before{background:#b47a18}.dashboard-overview-grid{grid-template-columns:minmax(0,1.25fr) minmax(320px,.75fr);gap:14px;margin-bottom:14px;display:grid}.dashboard-chart-grid{grid-template-columns:minmax(0,1.35fr) minmax(340px,.65fr);gap:14px;margin-bottom:14px;display:grid}.dashboard-bottom-grid{margin-bottom:20px}.dashboard-card-heading{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.dashboard-card-heading h2{letter-spacing:-.02em;margin:2px 0 3px;font-size:18px}.dashboard-card-heading p{color:var(--muted);margin:0;font-size:12px}.dashboard-eyebrow{color:var(--green);letter-spacing:.09em;text-transform:uppercase;font-size:10px;font-weight:900;display:block}.dashboard-date-pill{border:1px solid var(--line);background:var(--surface-soft);min-height:30px;color:var(--muted);white-space:nowrap;border-radius:999px;align-items:center;padding:5px 9px;font-size:11px;font-weight:800;display:inline-flex}.dashboard-progress-list{gap:15px;display:grid}.dashboard-progress-item{gap:6px;display:grid}.dashboard-progress-copy{justify-content:space-between;gap:12px;font-size:12px;font-weight:800;display:flex}.dashboard-progress-copy strong{color:var(--ink)}.dashboard-progress-track{background:#edf1ea;border-radius:999px;height:8px;overflow:hidden}.dashboard-progress-fill{border-radius:inherit;background:#3d7740;height:100%;display:block}.dashboard-progress-fill.amber{background:#b17b22}.dashboard-progress-fill.red{background:#b64a45}.dashboard-progress-item p{color:var(--muted);margin:0;font-size:11px}.dashboard-quick-links{gap:8px;display:grid}.dashboard-quick-links a{border:1px solid var(--line);background:#fbfcfa;border-radius:8px;grid-template-columns:1fr auto;column-gap:12px;padding:11px 12px;transition:background .15s,border-color .15s,transform .15s;display:grid;position:relative}.dashboard-quick-links a:hover{background:var(--green-soft);border-color:#c5d5bd;transform:translateY(-1px)}.dashboard-quick-links strong{font-size:12px}.dashboard-quick-links span{color:var(--muted);grid-column:1;margin-top:2px;font-size:11px}.dashboard-quick-links b{color:var(--green);grid-area:1/2/span 2;align-self:center;font-size:16px}.dashboard-quick-links.student-links{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:14px}.dashboard-quick-links.student-links a{display:block}.dashboard-chart-card{min-height:310px}.dashboard-chart-legend{color:var(--muted);white-space:nowrap;align-items:center;gap:12px;font-size:10px;font-weight:800;display:flex}.dashboard-chart-legend span{align-items:center;gap:5px;display:inline-flex}.legend-dot{border-radius:2px;width:8px;height:8px;display:inline-block}.legend-dot.timed{background:#315b28}.legend-dot.completed{background:#8eb37f}.attendance-chart{border-top:1px solid #edf1ea;align-items:stretch;gap:8px;height:215px;padding-top:12px;display:flex}.attendance-chart-day{text-align:center;flex:1 1 0;grid-template-rows:18px 1fr auto auto;align-items:end;min-width:0;display:grid}.attendance-chart-values{color:#6d796b;justify-content:center;gap:8px;font-size:9px;font-weight:800;display:flex}.attendance-chart-bars{background:repeating-linear-gradient(0deg,#f4f7f2 0 1px,#0000 1px 36px);border-bottom:1px solid #dfe7db;justify-content:center;align-items:flex-end;gap:4px;height:145px;padding:4px 5px 0;display:flex}.attendance-bar{border-radius:4px 4px 1px 1px;width:min(16px,38%);min-height:0;transition:height .2s}.attendance-bar.timed{background:#315b28}.attendance-bar.completed{background:#8eb37f}.attendance-chart-day strong{color:#3c493b;margin-top:6px;font-size:10px}.attendance-chart-day small{color:var(--muted);font-size:9px}.grade-bars{gap:12px;display:grid}.grade-bar-row{gap:5px;display:grid}.grade-bar-label{justify-content:space-between;gap:10px;font-size:11px;display:flex}.grade-bar-label span{text-overflow:ellipsis;white-space:nowrap;color:#3f4d3d;font-weight:750;overflow:hidden}.grade-bar-label strong{color:var(--ink)}.grade-bar-track{background:#edf1ea;border-radius:999px;height:7px;overflow:hidden}.grade-bar-track span{border-radius:inherit;background:linear-gradient(90deg,#315b28,#6f9a62);height:100%;display:block}.dashboard-empty-compact{min-height:120px;color:var(--muted);text-align:center;background:#fafcf9;border:1px dashed #cfd8cb;border-radius:8px;place-items:center;padding:18px;font-size:12px;display:grid}.dashboard-notices .notice-card{border:1px solid var(--line);border-left:3px solid var(--green);background:#fbfcfa;border-radius:7px;padding:13px 13px 12px;position:relative}.dashboard-notices .notice-card p{color:#4f5d4c;margin:7px 0 0;font-size:12px;line-height:1.45}.notice-priority{float:right;color:var(--green);text-transform:uppercase;letter-spacing:.04em;background:#eef4eb;border-radius:999px;margin-left:8px;padding:3px 6px;font-size:9px;font-weight:850}@media (max-width:1100px){.dashboard-overview-grid,.dashboard-chart-grid{grid-template-columns:1fr}.dashboard-chart-card{min-height:auto}}@media (max-width:700px){.dashboard-card-heading{flex-direction:column;align-items:flex-start}.dashboard-chart-legend{white-space:normal}.dashboard-quick-links.student-links{grid-template-columns:1fr}.attendance-chart{gap:3px}.attendance-chart-bars{gap:2px;padding-left:2px;padding-right:2px}.attendance-chart-values{gap:3px;font-size:8px}}.action-submit-button:disabled{cursor:wait;opacity:.82}.action-spinner{border:2px solid #ffffff6b;border-top-color:#fff;border-radius:50%;flex:0 0 16px;width:16px;height:16px;animation:.75s linear infinite action-spin}.button.secondary .action-spinner{border-color:#315b2838;border-top-color:var(--green)}.action-spinner.large{border-width:3px;width:25px;height:25px}@keyframes action-spin{to{transform:rotate(360deg)}}.action-progress-overlay{z-index:1400;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#0f180da8;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.action-progress-card{background:#fff;border:1px solid #ffffff94;border-radius:16px;width:min(560px,100%);padding:22px;box-shadow:0 30px 90px #00000057}.action-progress-heading{grid-template-columns:auto 1fr auto;align-items:center;gap:12px;display:grid}.action-progress-icon{background:var(--green);border-radius:13px;place-items:center;width:45px;height:45px;display:grid}.action-progress-heading strong{color:var(--ink);font-size:17px;display:block}.action-progress-heading span{color:var(--muted);overflow-wrap:anywhere;margin-top:3px;font-size:12px;display:block}.action-progress-heading b{color:var(--muted);font-variant-numeric:tabular-nums;font-size:11px}.action-progress-track{background:#e8eee4;border-radius:999px;height:7px;margin:17px 0 18px;overflow:hidden}.action-progress-track span{border-radius:inherit;background:linear-gradient(90deg,#315b28,#83a878);width:42%;height:100%;animation:1.25s ease-in-out infinite action-progress-slide;display:block}@keyframes action-progress-slide{0%{transform:translate(-115%)}55%,to{transform:translate(260%)}}.action-progress-stages{gap:9px;display:grid}.action-progress-stage{color:#879184;grid-template-columns:24px 1fr;align-items:center;gap:9px;font-size:12px;font-weight:650;display:grid}.action-progress-stage i{color:#7c8978;background:#eef2ec;border-radius:50%;place-items:center;width:24px;height:24px;font-size:10px;font-style:normal;font-weight:900;display:grid}.action-progress-stage.active{color:var(--ink)}.action-progress-stage.active i{background:var(--green);color:#fff;box-shadow:0 0 0 4px #315b281a}.action-progress-stage.done{color:#587052}.action-progress-stage.done i{color:#315b28;background:#dcebd8}.action-progress-card>p{border-top:1px solid var(--line);color:var(--muted);margin:17px 0 0;padding-top:14px;font-size:11px;line-height:1.5}.upload-selection-summary{color:#53604f;background:#f4f8f1;border:1px solid #c9d8c4;border-radius:8px;flex-wrap:wrap;align-items:center;gap:5px;margin-top:2px;padding:8px 10px;font-size:12px;font-weight:650;display:flex}.upload-selection-summary strong{color:var(--green)}.bulk-upload-preview{grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-top:16px;display:grid}.bulk-upload-preview>div{border:1px solid var(--line);background:#fafcf9;border-radius:9px;padding:11px 12px}.bulk-upload-preview span,.bulk-upload-preview strong{display:block}.bulk-upload-preview span{color:var(--muted);text-transform:uppercase;letter-spacing:.045em;font-size:10px;font-weight:800}.bulk-upload-preview strong{color:var(--ink);margin-top:4px;font-size:15px}@media (max-width:640px){.action-progress-overlay{padding:14px}.action-progress-card{padding:17px}.action-progress-heading{grid-template-columns:auto 1fr}.action-progress-heading b{display:none}.bulk-upload-preview{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){.action-spinner,.action-progress-track span{animation-duration:2.5s}}.bulk-real-progress{background:#e6ece2;border-radius:999px;height:10px;margin:18px 0;overflow:hidden;box-shadow:inset 0 0 0 1px #315b280d}.bulk-real-progress span{border-radius:inherit;background:linear-gradient(90deg,#315b28,#72a164);min-width:3px;height:100%;transition:width .18s;display:block}.bulk-progress-metrics{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:4px;display:grid}.bulk-progress-metrics>div{border:1px solid var(--line);text-align:center;background:#fafcf9;border-radius:8px;padding:10px}.bulk-progress-metrics span,.bulk-progress-metrics strong{display:block}.bulk-progress-metrics span{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-size:9px;font-weight:850}.bulk-progress-metrics strong{color:var(--ink);margin-top:4px;font-size:13px}.upload-inline-error{margin:14px 0 0}@media (max-width:520px){.bulk-progress-metrics{grid-template-columns:1fr}}.parent-manage-grid{grid-template-columns:minmax(300px,.9fr) minmax(0,1.5fr);align-items:start;gap:18px;display:grid}.parent-list-panel,.parent-detail-panel{min-width:0}.section-heading-row{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.parent-account-list{gap:8px;max-height:560px;margin-top:12px;display:grid;overflow:auto}.parent-account-row{border:1px solid var(--line);text-align:left;cursor:pointer;background:#fff;border-radius:12px;justify-content:space-between;align-items:center;gap:12px;width:100%;padding:12px 14px;display:flex}.parent-account-row:hover,.parent-account-row.active{background:#f3f7f0;border-color:#789466}.parent-account-row span:first-child{gap:3px;display:grid}.parent-account-row small,.linked-student-row small{color:var(--muted);display:block}.linked-student-list{gap:10px;display:grid}.linked-student-row{border:1px solid var(--line);border-radius:12px;justify-content:space-between;align-items:center;gap:14px;padding:12px;display:flex}.parent-credential{background:#f3f8ef;border-color:#7da269}.credential-grid{flex-wrap:wrap;gap:10px;margin-top:10px;display:flex}.credential-grid code{background:#fff;border:1px dashed #789466;border-radius:9px;padding:10px 12px;font-size:1rem}.button.danger{color:#fff;background:#a33232;border-color:#a33232}.button.ghost{color:var(--text);border-color:var(--line);background:0 0}@media (max-width:900px){.parent-manage-grid{grid-template-columns:1fr}.section-heading-row{flex-direction:column;align-items:stretch}.section-heading-row .page-actions{width:100%}}.compact-stack{gap:.45rem;min-width:230px;display:grid}.device-token-result{border:1px solid var(--border,#d9dee7);background:var(--surface-soft,#f7f9fc);border-radius:.7rem;gap:.4rem;padding:.65rem;display:grid}.device-token-result input{width:100%;min-width:210px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.success-text{color:#137333}.error-text{color:#b3261e}.id-filter-grid.live-id-filters{grid-template-columns:minmax(220px,1.4fr) repeat(5,minmax(140px,1fr)) auto}.id-preview-safe-guide{z-index:6;pointer-events:none;border:1px dashed #dc26269e;border-radius:6px;position:absolute;box-shadow:inset 0 0 0 1px #ffffff59}.id-preview-dimensions{text-align:center;color:var(--muted);margin-top:.55rem;font-size:11px;font-weight:700}.id-preview-student-filters{grid-template-columns:minmax(190px,1.4fr) repeat(2,minmax(135px,1fr));align-items:end;gap:8px;margin:.75rem 0;display:grid}.id-preview-filter-meta{color:var(--muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-top:8px;font-size:11px;font-weight:700;display:flex}.student-id-preview-modal{padding:16px}.student-id-preview-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px;display:flex}.student-id-preview-badges{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.student-id-preview-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:14px;display:grid}.student-id-preview-grid>section{min-width:0}.student-id-preview-grid h3{margin:0 0 8px}.student-id-preview-grid .id-preview-shell{padding:.55rem}.student-id-preview-grid .id-preview{max-width:360px}.id-preview-empty{border:1px dashed var(--line);border-radius:8px;place-items:center;min-height:160px;display:grid}@media (max-width:1180px){.id-filter-grid.live-id-filters{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:760px){.id-filter-grid.live-id-filters,.id-preview-student-filters,.student-id-preview-grid{grid-template-columns:1fr}.student-id-preview-head{display:grid}.student-id-preview-badges{justify-content:flex-start}}.id-preview-qr-svg{background:#fff;width:100%;height:100%;display:block}.id-preview-qr.unavailable{background:repeating-linear-gradient(45deg,#111 0 4px,#fff 4px 8px);place-items:center;width:100%;height:100%;font-size:9px;font-weight:900;display:grid}.id-preview-qr.unavailable span{background:#fff;border-radius:3px;padding:2px 4px}.student-id-softcopy-note{color:var(--text);background:#f4f9f1;border:1px solid #b9d3ae;border-radius:10px;align-items:flex-start;gap:10px;margin-bottom:12px;padding:10px 12px;display:flex}.student-id-softcopy-note strong{white-space:nowrap}.student-id-softcopy-note span{color:var(--muted);font-size:12px}.parent-workspace-v2{gap:16px;display:grid}.parent-summary-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.parent-summary-card{border:1px solid var(--line);background:linear-gradient(#fff,#f8faf7);border-radius:14px;padding:15px 16px;box-shadow:0 6px 20px #1f371c0a}.parent-summary-card span,.parent-summary-card small{color:var(--muted);display:block}.parent-summary-card span{text-transform:uppercase;letter-spacing:.055em;font-size:11px;font-weight:850}.parent-summary-card strong{color:var(--ink);margin:5px 0 2px;font-size:28px;line-height:1;display:block}.parent-summary-card small{font-size:11px}.parent-toolbar{justify-content:space-between;align-items:center;gap:18px;display:flex}.parent-toolbar h2{margin:0}.parent-toolbar p{margin:4px 0 0}.parent-credential-v2{grid-template-columns:minmax(220px,.8fr) minmax(0,1.4fr);align-items:center;gap:18px;display:grid}.parent-credential-v2 h3{margin:4px 0}.credential-pairs{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.credential-pairs>div{background:#fff;border:1px dashed #789466;border-radius:10px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px;padding:10px;display:grid}.credential-pairs>div>span{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;grid-column:1/-1;font-size:10px;font-weight:800}.credential-pairs code{overflow-wrap:anywhere;min-width:0;font-size:14px}.parent-manage-grid-v2{grid-template-columns:minmax(310px,.85fr) minmax(0,1.65fr);gap:16px}.parent-list-panel-v2{padding:0;position:sticky;top:12px;overflow:hidden}.parent-list-search{grid-template-columns:minmax(0,1fr) 120px;gap:8px;padding:14px 14px 8px;display:grid}.parent-list-count{color:var(--muted);padding:0 14px 8px;font-size:11px;font-weight:700}.parent-account-list-v2{max-height:680px;margin:0;padding:0 8px 10px}.parent-account-row-v2{border:0;border-top:1px solid var(--line);background:0 0;border-radius:0;grid-template-columns:42px minmax(0,1fr) auto;padding:12px 8px;display:grid}.parent-account-row-v2:first-child{border-top:0}.parent-account-row-v2:hover{background:#f7faf5}.parent-account-row-v2.active{background:#edf5e8;border-color:#0000;border-radius:10px}.parent-avatar{color:#fff;letter-spacing:.04em;background:#315b28;border-radius:50%;place-items:center;width:38px;height:38px;font-size:12px;font-weight:900;display:grid!important}.parent-avatar.large{width:56px;height:56px;font-size:17px}.parent-row-main{gap:2px;min-width:0;display:grid}.parent-row-main strong,.parent-row-main small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.parent-row-meta{justify-items:end;gap:5px;display:grid}.parent-row-meta small{font-size:10px}.parent-detail-panel-v2{min-height:520px}.parent-detail-hero{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:14px;padding-bottom:14px;display:flex}.parent-detail-identity{align-items:center;gap:12px;display:flex}.parent-detail-identity h2{margin:3px 0 1px}.parent-detail-identity p{margin:0}.parent-fact-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:14px 0;display:grid}.parent-fact-grid>div{border:1px solid var(--line);background:var(--surface-soft);border-radius:10px;padding:11px 12px}.parent-fact-grid span,.parent-fact-grid strong{display:block}.parent-fact-grid span{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:10px;font-weight:800}.parent-fact-grid strong{overflow-wrap:anywhere;margin-top:4px;font-size:13px}.parent-action-bar{flex-wrap:wrap;gap:8px;padding:2px 0 16px;display:flex}.linked-students-heading{border-top:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:12px;padding-top:14px;display:flex}.linked-students-heading h3{margin:0}.linked-students-heading p{margin:3px 0 0}.linked-student-list-v2{margin-top:10px}.linked-student-card{border:1px solid var(--line);background:#fff;border-radius:12px;grid-template-columns:42px minmax(0,1fr) auto auto;align-items:center;gap:10px;padding:11px 12px;display:grid}.linked-student-icon{color:#315b28;background:#eef4eb;border-radius:10px;place-items:center;width:36px;height:36px;font-size:10px;font-weight:900;display:grid}.linked-student-info{gap:2px;min-width:0;display:grid}.linked-student-info strong,.linked-student-info span,.linked-student-info small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.linked-student-info span,.linked-student-info small{color:var(--muted);font-size:11px}.linked-student-tags{flex-wrap:wrap;justify-content:flex-end;gap:5px;display:flex}.parent-empty-state{text-align:center;min-height:180px;color:var(--muted);border:1px dashed var(--line);background:#fafcf9;border-radius:12px;align-content:center;place-items:center;gap:7px;padding:20px;display:grid}.parent-empty-state strong{color:var(--ink);font-size:15px}.parent-empty-state .button{margin-top:5px}@media (max-width:1050px){.parent-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.parent-manage-grid-v2{grid-template-columns:1fr}.parent-list-panel-v2{position:static}.parent-credential-v2{grid-template-columns:1fr}}@media (max-width:680px){.parent-summary-grid,.credential-pairs,.parent-fact-grid{grid-template-columns:1fr}.parent-toolbar,.parent-detail-hero{flex-direction:column;align-items:stretch}.parent-list-search{grid-template-columns:1fr}.linked-student-card{grid-template-columns:38px minmax(0,1fr)}.linked-student-tags,.linked-student-card>.button{grid-column:2;justify-self:start}.student-id-softcopy-note{display:grid}}.parent-workspace-v2 .modal-body{overflow-x:hidden}.parent-account-modal-form{min-width:0;padding:18px 20px 20px}.parent-account-modal-form>*,.parent-account-modal-form label{min-width:0}.parent-account-modal-form input,.parent-account-modal-form select{min-width:0;max-width:100%}.parent-account-modal-form .form-footer{flex-wrap:wrap;margin:18px -20px -20px;padding:14px 20px}.parent-edit-note{color:var(--muted);background:#f5f9f2;border:1px solid #cedbc9;border-radius:10px;gap:3px;padding:11px 12px;font-size:12px;display:grid}.parent-edit-note strong{color:var(--ink);font-size:12px}.parent-delete-warning{background:var(--danger-soft);color:#7f2020;border:1px solid #efb8b8;border-radius:12px;gap:7px;padding:14px;display:grid}.parent-delete-warning strong{font-size:14px}.parent-delete-warning span{color:#8e4a4a;font-size:12px;line-height:1.55}.parent-delete-button{margin-left:auto}.parent-account-modal-form code{overflow-wrap:anywhere}@media (max-width:780px){.parent-account-modal-form{padding:14px}.parent-account-modal-form .form-footer{flex-direction:column-reverse;align-items:stretch;margin:14px -14px -14px;padding:12px 14px}.parent-account-modal-form .form-footer .button{width:100%}.parent-delete-button{margin-left:0}}.parent-list-search{grid-template-columns:repeat(2,minmax(0,1fr))}.parent-list-search>.parent-list-search-input{grid-column:1/-1;width:100%;min-width:0}.parent-list-search>select{width:100%;min-width:0}@media (max-width:420px){.parent-list-search{grid-template-columns:1fr}.parent-list-search>.parent-list-search-input{grid-column:auto}}
