:root{--kds-blue:#041e42;--kds-blue-strong:#021631;--kds-blue-soft:#e7edf6;--kds-red:#a11919;--kds-red-strong:#7e1010;--kds-accent-blue:#06f;--kds-yellow:#f2b900;--kds-green:#13cf97;--ink:#1c2737;--ink-soft:#526173;--line:#d8dee7;--line-strong:#b8c3d1;--surface:#fff;--surface-muted:#f8f8f8;--surface-blue:#f3f6fa;--success:#087951;--success-soft:#e4f8ef;--warning:#9a4115;--warning-soft:#fff2e8;--danger-soft:#fff0f0;--radius-sm:8px;--radius:14px;--radius-lg:20px;--shadow:0 18px 46px #041e4214;--shadow-soft:0 5px 20px #041e420f;--ease-out:cubic-bezier(.23, 1, .32, 1);--ease-in-out:cubic-bezier(.77, 0, .175, 1)}*{box-sizing:border-box}html{background:var(--surface-muted);min-width:320px}body{background:var(--surface-muted);min-height:100dvh;color:var(--ink);font-family:var(--font-body), Arial, sans-serif;margin:0;font-size:16px;line-height:1.5}.jacob-barkin-credit-footer{border-top:1px solid var(--line);background:var(--surface);place-items:center;min-height:6.5rem;padding:1.25rem;display:grid}button,input,select,textarea{font:inherit}button,label,summary{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.62}a{color:var(--kds-red);font-weight:750}h1,h2,h3,p{margin-top:0}h1,h2,h3{color:var(--kds-blue);font-family:var(--font-heading), Georgia, serif;line-height:1.02}h1{letter-spacing:-.04em;font-size:clamp(2.45rem,4.6vw,4.25rem)}h2{letter-spacing:-.03em;font-size:clamp(1.75rem,2.8vw,2.55rem)}h3{letter-spacing:-.015em;font-size:1.28rem}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.eyebrow{color:var(--kds-red);letter-spacing:.11em;text-transform:uppercase;margin-bottom:.6rem;font-size:.71rem;font-weight:850;display:block}.eyebrow-light{color:#f4cbcb}.kds-brand{color:var(--kds-blue);font-family:var(--font-heading), Georgia, serif;letter-spacing:-.025em;align-items:center;gap:.64rem;font-size:1.22rem;font-weight:700;display:inline-flex}.kds-brand-mark-shell{border-radius:var(--radius-sm);background:#fff;place-items:center;width:2.45rem;height:2.45rem;padding:.14rem;display:inline-grid;box-shadow:0 1px #ffffff47}.kds-brand-mark{object-fit:cover;border-radius:5px;width:100%;height:100%}.kds-brand-inverse{color:#fff}.kds-brand-compact{font-size:1.12rem}.kds-brand-compact .kds-brand-mark-shell{width:2.2rem;height:2.2rem}.button{border:1px solid var(--kds-red);border-radius:var(--radius-sm);background:var(--kds-red);color:#fff;min-height:2.75rem;transition:transform .16s var(--ease-out), background-color .16s ease, border-color .16s ease, color .16s ease, box-shadow .16s ease;justify-content:center;align-items:center;gap:.5rem;padding:.66rem 1rem;font-size:.92rem;font-weight:800;line-height:1.1;text-decoration:none;display:inline-flex}.button:active:not(:disabled),.icon-button:active:not(:disabled),.nav-item:active:not(:disabled),.metric-card:active:not(:disabled),.template-choice:active:not(:disabled),.attention-row:active:not(:disabled),.photo-picker:active:not(:disabled){transform:scale(.97)}.button-secondary{border-color:var(--line-strong);background:var(--surface);color:var(--kds-blue)}.button-danger-secondary{background:var(--surface);color:var(--kds-red);border-color:#e3aaaa}.button-small{min-height:2.15rem;padding:.42rem .65rem;font-size:.78rem}.text-button{color:#fff;background:0 0;border:0;align-items:center;gap:.38rem;padding:.35rem;font-size:.86rem;font-weight:750;display:inline-flex}.text-action{color:var(--kds-red);background:0 0;border:0;align-items:center;gap:.16rem;padding:.25rem 0;font-size:.88rem;font-weight:800;display:inline-flex}.icon-button{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);width:2.35rem;height:2.35rem;color:var(--kds-blue);transition:transform .16s var(--ease-out), border-color .16s ease, color .16s ease, background-color .16s ease;place-items:center;padding:0;display:inline-grid}input,select{border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface);width:100%;min-height:2.65rem;color:var(--ink);outline:none;padding:.62rem .72rem;transition:border-color .16s,box-shadow .16s}input::placeholder{color:#738095;opacity:1}input:focus,select:focus,button:focus-visible,a:focus-visible,[contenteditable]:focus{outline-offset:2px;border-color:var(--kds-accent-blue);outline:3px solid #0066ff40}label{color:var(--ink);gap:.42rem;font-size:.87rem;font-weight:800;display:grid}.spin{animation:.75s linear infinite spin}.mini-spinner{border:2px solid #c4cfdd;border-top-color:var(--kds-blue);border-radius:50%;width:1rem;height:1rem;animation:.75s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}@media (hover:hover) and (pointer:fine){.button:hover:not(:disabled){border-color:var(--kds-red-strong);background:var(--kds-red-strong);color:#fff;transform:translateY(-1px);box-shadow:0 7px 16px #a119192e}.button-secondary:hover:not(:disabled){border-color:var(--kds-blue);background:var(--kds-blue-soft);color:var(--kds-blue);box-shadow:none}.text-button:hover{text-decoration:underline}.text-action:hover{color:var(--kds-red-strong)}.icon-button:hover{background:var(--kds-blue-soft);color:var(--kds-blue);border-color:#b6c6da}.button-danger-secondary:hover:not(:disabled){border-color:var(--kds-red);background:var(--danger-soft);color:var(--kds-red)}}.student-shell{background:var(--surface-muted);min-height:100dvh}.student-topbar{background:var(--kds-blue);justify-content:space-between;align-items:center;min-height:4.75rem;padding:0 max(1.35rem,50vw - 39rem);display:flex}.topbar-context{color:#ffffffc7;font-size:.84rem;font-weight:750}.student-layout{border-right:1px solid var(--line);border-left:1px solid var(--line);background:var(--surface);width:min(100%,78rem);min-height:calc(100dvh - 4.75rem);margin:0 auto}.student-aside{border-bottom:1px solid var(--line);background:var(--surface);grid-template-columns:minmax(14rem,.75fr) minmax(27rem,1.55fr) minmax(10rem,.38fr);align-items:center;gap:clamp(1.2rem,3vw,3rem);padding:clamp(1.45rem,3vw,2.45rem) clamp(1.45rem,4vw,3.5rem);display:grid}.student-aside h1{color:var(--kds-blue);margin-bottom:.55rem;font-size:clamp(2.15rem,3.5vw,3.3rem)}.student-aside-intro p{max-width:25rem;color:var(--ink-soft);margin:0;font-size:.96rem}.upload-steps{grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem;margin:0;padding:0;list-style:none;display:grid}.upload-step{color:var(--ink-soft);grid-template-columns:2.1rem 1fr;align-items:start;gap:.65rem;display:grid}.step-number{border:1px solid var(--line-strong);color:currentColor;border-radius:50%;place-items:center;width:2rem;height:2rem;font-size:.84rem;font-weight:850;display:inline-grid}.step-number svg{font-size:1.25rem}.upload-step strong{color:currentColor;font-size:.95rem;display:block}.upload-step small{margin-top:.12rem;font-size:.8rem;line-height:1.35;display:block}.upload-step.current{color:var(--kds-blue)}.upload-step.current .step-number{border-color:var(--kds-yellow);background:var(--kds-yellow);color:var(--kds-blue)}.upload-step.complete{color:var(--success)}.upload-step.complete .step-number{border-color:var(--kds-green);color:var(--kds-green)}.student-help{color:var(--ink-soft);align-items:flex-start;gap:.55rem;margin:0;font-size:.78rem;line-height:1.4;display:flex}.student-help svg{color:var(--kds-green);flex:none;margin-top:.12rem;font-size:1.12rem}.student-stage{background:var(--surface);align-content:start;width:min(100%,65rem);margin:0 auto;padding:clamp(1.8rem,4.2vw,4.5rem);display:grid}.upload-workspace{width:min(100%,52rem)}.student-stage-heading{justify-content:space-between;align-items:flex-start;gap:1.25rem;margin-bottom:2rem;display:flex}.student-stage-heading h2{margin-bottom:.65rem}.student-stage-heading p{max-width:40rem;color:var(--ink-soft);margin:0}.context-note{border-radius:var(--radius-sm);background:var(--warning-soft);color:var(--warning);border:1px solid #e8b49a;flex:0 0 min(12rem,30%);align-items:flex-start;gap:.35rem;padding:.66rem .7rem;font-size:.78rem;font-weight:700;line-height:1.35;display:flex}.context-note svg{flex:none;margin-top:.05rem}.photo-picker{border-radius:var(--radius);background:var(--surface-blue);width:100%;min-height:18.5rem;color:var(--kds-blue);text-align:center;transition:transform .16s var(--ease-out), border-color .16s ease, background-color .16s ease;border:1.5px dashed #94a7c1;place-content:center;gap:.7rem;padding:1.5rem;display:grid}.picker-icon{background:var(--kds-red);color:#fff;border-radius:50%;place-items:center;width:3.4rem;height:3.4rem;margin:0 auto .2rem;font-size:1.65rem;display:inline-grid}.photo-picker strong{font-family:var(--font-heading), Georgia, serif;letter-spacing:-.02em;font-size:1.65rem}.photo-picker>span:last-child{color:var(--ink-soft);font-size:.86rem}.photo-guidance{border-top:1px solid var(--line);grid-template-columns:minmax(0,.75fr) minmax(22rem,1.25fr);gap:1.75rem;margin-top:1.4rem;padding-top:1.5rem;display:grid}.guidance-copy h3{color:var(--kds-blue);margin-bottom:1rem}.guidance-copy ul{gap:.9rem;margin:0;padding:0;list-style:none;display:grid}.guidance-copy li{color:var(--ink-soft);grid-template-columns:1.65rem 1fr;gap:.6rem;font-size:.86rem;display:grid}.guidance-copy li svg{color:var(--kds-red);font-size:1.25rem}.guidance-copy li strong{color:var(--ink)}.photo-examples{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:.9rem;display:grid}.photo-examples figure{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface-muted);grid-template-rows:auto 1fr;min-width:0;margin:0;display:grid;overflow:hidden}.photo-examples img{aspect-ratio:7/8;object-fit:cover;width:100%;height:auto;display:block}.photo-examples figcaption{color:var(--ink-soft);align-items:flex-start;gap:.35rem;padding:.5rem;font-size:.7rem;font-weight:750;line-height:1.3;display:flex}.photo-examples figure:first-child figcaption svg{color:var(--success)}.photo-examples figure:last-child figcaption svg{color:var(--warning)}.crop-stage{border-radius:var(--radius);background:#192534;min-height:min(36rem,62vh);position:relative;overflow:hidden}.photo-preview{aspect-ratio:7/8;border-radius:var(--radius);object-fit:cover;background:0 0;width:min(100%,33rem);margin:0 auto;display:block}.crop-controls{flex-wrap:wrap;justify-content:flex-end;align-items:end;gap:.7rem;margin-top:1rem;display:flex}.crop-controls label{width:min(100%,14rem);color:var(--ink-soft);margin-right:auto;font-size:.78rem}.crop-controls label span{margin-bottom:.15rem}.crop-controls input{min-height:auto;accent-color:var(--kds-red);border:0;padding:0}.crop-controls-review{justify-content:flex-end}.review-note{border-radius:var(--radius-sm);background:var(--success-soft);width:min(100%,33rem);color:var(--success);border:1px solid #a9dac4;align-items:flex-start;gap:.55rem;margin:1rem auto 0;padding:.8rem .9rem;font-size:.86rem;display:flex}.review-note svg{flex:none;margin-top:.1rem;font-size:1.15rem}.review-note strong{color:#07553b}.submission-progress-panel{border-radius:var(--radius);background:var(--surface-muted);width:min(100%,33rem);box-shadow:var(--shadow-soft);border:1px solid #c5d3e4;margin:0 auto;padding:clamp(1.4rem,4vw,2rem)}.submission-progress-panel h3{color:var(--kds-blue);margin:.35rem 0 .45rem}.submission-progress-panel>p:not(.submission-progress-note){color:var(--ink-soft);margin:0}.submission-progress-bar{background:#d9e3ef;border-radius:999px;height:.65rem;margin-top:1.4rem;overflow:hidden}.submission-progress-bar>span{border-radius:inherit;background:linear-gradient(90deg, var(--kds-red), #cb3636);height:100%;transition:width .52s cubic-bezier(.22,1,.36,1);display:block}.submission-progress-steps{gap:.7rem;margin:1.25rem 0;padding:0;list-style:none;display:grid}.submission-progress-steps li{color:var(--ink-soft);grid-template-columns:1.65rem 1fr;align-items:center;gap:.65rem;font-size:.88rem;font-weight:700;transition:color .22s ease-out;display:grid}.submission-progress-marker{background:var(--surface);width:1.65rem;height:1.65rem;color:var(--ink-soft);font-variant-numeric:tabular-nums;border:1px solid #bdcad9;border-radius:50%;place-items:center;font-size:.76rem;display:grid}.submission-progress-steps .current{color:var(--kds-blue)}.submission-progress-steps .current .submission-progress-marker{border-color:var(--kds-blue);background:var(--kds-blue);color:#fff}.submission-progress-steps .complete{color:var(--success)}.submission-progress-steps .complete .submission-progress-marker{border-color:var(--success);background:var(--success);color:#fff}.submission-progress-marker svg{font-size:1.05rem}.submission-progress-note{border-top:1px solid var(--line);color:var(--ink-soft);margin:0;padding-top:1rem;font-size:.78rem;line-height:1.45}.inline-error{border-radius:var(--radius-sm);background:var(--warning-soft);color:var(--warning);border:1px solid #e8b49a;align-items:flex-start;gap:.45rem;margin:1rem 0 0;padding:.75rem .8rem;font-size:.88rem;font-weight:700;display:flex}.inline-error svg{flex:none;margin-top:.08rem;font-size:1.18rem}.state-panel{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);width:min(100%,44rem);box-shadow:var(--shadow-soft);align-items:flex-start;gap:1rem;padding:clamp(1.3rem,3.5vw,2.3rem);display:flex}.state-panel>svg{color:var(--kds-blue);flex:none;font-size:2rem}.state-panel h2{margin-bottom:.6rem}.state-panel p{max-width:34rem;color:var(--ink-soft);margin-bottom:1.2rem}.state-panel-success{background:var(--success-soft);border-color:#9bd8bb}.state-panel-success>svg{color:var(--success)}.state-panel-error{background:var(--warning-soft);border-color:#e3aa8d}.state-panel-error>svg{color:var(--warning)}.state-note{font-size:.85rem;font-weight:750;color:var(--success)!important;margin-bottom:0!important}.student-submission-shell{background:var(--surface-muted)}.student-submission-page{place-items:center;min-height:calc(100dvh - 4.75rem);padding:clamp(1.5rem,5vw,5rem) 1.35rem;display:grid}.submission-success-card{border-radius:var(--radius-lg);background:var(--surface);width:min(100%,43rem);box-shadow:var(--shadow);text-align:center;border:1px solid #a8d9c2;padding:clamp(1.8rem,5vw,3.8rem)}.submission-success-icon{background:var(--success-soft);width:4rem;height:4rem;color:var(--success);border-radius:50%;place-items:center;margin-bottom:1.4rem;font-size:2.15rem;display:inline-grid}.submission-success-card h1{max-width:33rem;margin:0 auto .9rem;font-size:clamp(2.4rem,5vw,4.2rem)}.submission-success-copy{max-width:34rem;color:var(--ink-soft);margin:0 auto 1.8rem;font-size:1.04rem}.submission-success-support{border-radius:var(--radius-sm);background:var(--surface-blue);color:var(--ink-soft);text-align:left;align-items:flex-start;gap:.75rem;padding:1rem;display:flex}.submission-success-support>svg{color:var(--kds-blue);flex:none;margin-top:.05rem;font-size:1.3rem}.submission-success-support strong{color:var(--kds-blue);margin-bottom:.14rem;display:block}.submission-success-support p{margin:0;font-size:.86rem;line-height:1.45}.link-only-shell{background:var(--surface-muted);min-height:100dvh}.link-only-topbar{background:var(--kds-blue);color:#ffffffc7;justify-content:space-between;align-items:center;min-height:4.75rem;padding:0 max(1.35rem,50vw - 39rem);font-size:.84rem;font-weight:750;display:flex}.link-only-page{place-items:center;min-height:calc(100dvh - 4.75rem);padding:clamp(1.5rem,5vw,5rem) 1.35rem;display:grid}.link-only-card{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);width:min(100%,43rem);box-shadow:var(--shadow);text-align:center;padding:clamp(1.8rem,5vw,3.8rem)}.link-only-icon{background:var(--kds-blue-soft);width:4rem;height:4rem;color:var(--kds-blue);border-radius:50%;place-items:center;margin-bottom:1.4rem;font-size:2rem;display:inline-grid}.link-only-card h1{max-width:34rem;margin:0 auto .9rem;font-size:clamp(2.4rem,5vw,4.2rem)}.link-only-copy{max-width:34rem;color:var(--ink-soft);margin:0 auto 1.8rem;font-size:1.04rem}.link-only-help{border-radius:var(--radius-sm);background:var(--surface-blue);color:var(--ink-soft);text-align:left;align-items:flex-start;gap:.75rem;padding:1rem;display:flex}.link-only-help>svg{color:var(--success);flex:none;margin-top:.05rem;font-size:1.25rem}.link-only-help p{margin:0;font-size:.86rem;line-height:1.45}.upload-skeleton{gap:1rem;width:min(100%,48rem);display:grid}.skeleton-line,.skeleton-photo,.skeleton-metric,.skeleton-panel{background:#eaf0f5;border-radius:6px;animation:1.1s ease-in-out infinite alternate skeleton-fade;display:block}.skeleton-label{width:7rem;height:.75rem}.skeleton-title{width:min(22rem,70%);height:2.7rem}.skeleton-copy{width:min(36rem,100%);height:1rem}.skeleton-photo{min-height:20rem;margin-top:.7rem}@keyframes skeleton-fade{to{opacity:.55}}.admin-shell{background:var(--surface-muted);min-height:100dvh}.admin-topbar{background:var(--kds-blue);justify-content:space-between;align-items:center;min-height:4.5rem;padding:.7rem 1.35rem;display:flex}.admin-topbar-brand{align-items:center;gap:.9rem;min-width:0;display:flex}.admin-app-name{color:#ffffffbd;border-left:1px solid #ffffff3d;padding-left:.9rem;font-size:.83rem;font-weight:750}.admin-account{color:#fffc;align-items:center;gap:.95rem;font-size:.84rem;display:flex}.admin-layout{grid-template-columns:14.5rem minmax(0,1fr);width:100%;min-height:calc(100dvh - 4.5rem);display:grid}.admin-sidebar{border-right:1px solid var(--line);background:var(--surface);flex-direction:column;padding:1.15rem 1rem 1.25rem;display:flex}.admin-navigation{gap:.25rem;display:grid}.nav-item{border-radius:var(--radius-sm);color:var(--ink-soft);text-align:left;transition:transform .16s var(--ease-out), color .16s ease, background-color .16s ease, border-color .16s ease;background:0 0;border:1px solid #0000;align-items:center;gap:.62rem;padding:.74rem .65rem;font-size:.9rem;font-weight:750;display:flex}.nav-item svg{font-size:1.15rem}.nav-item.active{background:var(--kds-blue-soft);color:var(--kds-blue);border-color:#c9d5e6}.sidebar-help{border-top:1px solid var(--line);color:var(--ink-soft);align-items:flex-start;gap:.45rem;margin:auto .25rem .25rem;padding:.85rem .65rem 0;font-size:.76rem;line-height:1.4;display:flex}.sidebar-help svg{color:var(--success);flex:none;margin-top:.06rem}.admin-workspace{background:var(--surface-muted);min-width:0;padding:clamp(1.5rem,3.8vw,3.5rem)}.workspace-heading{justify-content:space-between;align-items:end;gap:1.5rem;margin-bottom:1.8rem;display:flex}.workspace-heading h1{margin-bottom:.55rem}.workspace-heading p{max-width:40rem;color:var(--ink-soft);margin:0}.workspace-actions{flex-wrap:wrap;justify-content:flex-end;gap:.65rem;display:flex}.notice{border-radius:var(--radius-sm);transition:opacity .18s var(--ease-out), transform .18s var(--ease-out);border:1px solid;align-items:flex-start;gap:.65rem;margin-bottom:1.25rem;padding:.78rem .9rem;font-size:.88rem;font-weight:700;display:flex}.notice p{flex:1;margin:0}.notice>span{margin-top:.03rem;font-size:1.15rem;display:inline-grid}.notice button{color:currentColor;background:0 0;border:0;padding:0;font-size:1.25rem;line-height:1}.notice.success{background:var(--success-soft);color:#076947;border-color:#96d4b6}.notice.error{background:var(--warning-soft);color:var(--warning);border-color:#e4af94}@starting-style{.notice{opacity:0;transform:translateY(-5px)}}.dashboard-skeleton{gap:1.2rem;display:grid}.skeleton-dashboard-title{width:min(23rem,70%);height:2.8rem}.skeleton-metrics{grid-template-columns:repeat(4,minmax(0,1fr));gap:.9rem;display:grid}.skeleton-metric{min-height:9rem}.skeleton-panel{min-height:18rem}.dashboard-overview{gap:2rem;display:grid}.collection-overview{border-bottom:1px solid var(--line);padding:.35rem 0 1.8rem}.collection-progress-heading{justify-content:space-between;align-items:end;gap:1rem;margin-bottom:1.2rem;display:flex}.collection-progress-heading .eyebrow{margin-bottom:.35rem}.collection-progress-heading h2{margin-bottom:.3rem}.collection-progress-heading p{color:var(--ink-soft);margin:0}.collection-progress-bar{border-radius:var(--radius-sm);background:#e0e7ef;min-height:3.35rem;display:flex;overflow:hidden;box-shadow:inset 0 0 0 1px #041e420f}.collection-segment{border:0;border-right:2px solid var(--surface-muted);min-width:0;color:var(--kds-blue);text-align:center;transition:filter .16s ease, transform .16s var(--ease-out);place-items:center;padding:.45rem .65rem;font-size:.78rem;font-weight:850;line-height:1.15;display:grid}.collection-segment:last-child{border-right:0}.collection-segment.submitted{color:#07553b;background:#9de0c6}.collection-segment.not-started{color:var(--kds-blue);background:#d7e2f1}.collection-segment.processing{color:#6d4700;background:#ffe6a1}.collection-segment.failed{color:#741010;background:#f4bcbc}.collection-segment.empty{width:100%;color:var(--ink-soft)}.collection-legend{flex-wrap:wrap;gap:.45rem 1.1rem;margin-top:.8rem;display:flex}.collection-legend button{color:var(--ink-soft);text-align:left;background:0 0;border:0;align-items:center;gap:.38rem;padding:.25rem 0;font-size:.8rem;display:inline-flex}.collection-legend button strong{color:var(--ink)}.legend-marker{border-radius:50%;width:.6rem;height:.6rem}.legend-marker.submitted{background:var(--success)}.legend-marker.not-started{background:#7290b8}.legend-marker.processing{background:#bd8700}.legend-marker.failed{background:var(--kds-red)}.recent-email-panel{min-width:0}.recent-email-panel .panel-heading{margin-bottom:.75rem}.recent-email-list{border-top:1px solid var(--line);margin:0;padding:0;list-style:none;display:grid}.recent-email-list li{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:1rem;padding:.9rem 0;display:flex}.recent-email-list li:last-child{border-bottom:0}.recent-email-list strong,.recent-email-list span{display:block}.recent-email-list strong{max-width:48rem;color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:.9rem;overflow:hidden}.recent-email-list div>span{color:var(--ink-soft);margin-top:.18rem;font-size:.78rem}.metrics-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:.9rem;margin-bottom:1.2rem;display:grid}.metric-card{border:1px solid var(--line);border-top:4px solid var(--kds-blue);border-radius:var(--radius);background:var(--surface);min-height:9.3rem;box-shadow:var(--shadow-soft);color:var(--ink);text-align:left;transition:transform .16s var(--ease-out), box-shadow .16s ease, border-color .16s ease;padding:1.15rem;display:grid}.metric-card span{color:var(--ink-soft);font-size:.8rem;font-weight:800}.metric-card strong{color:var(--kds-blue);font-family:var(--font-heading), Georgia, serif;letter-spacing:-.055em;align-self:end;margin-top:.65rem;font-size:clamp(2.5rem,4vw,3.5rem);line-height:.84}.metric-card small{color:var(--ink-soft);margin-top:.45rem;font-size:.74rem;font-weight:650}.metric-card.submitted{border-top-color:var(--success)}.metric-card.submitted strong{color:var(--success)}.metric-card.needed{border-top-color:#c18800}.metric-card.needed strong{color:#865e00}.metric-card.failed{border-top-color:var(--kds-red)}.metric-card.failed strong{color:var(--kds-red)}.operations-grid{grid-template-columns:minmax(0,1.22fr) minmax(15rem,.78fr);gap:1.2rem;display:grid}.operations-panel{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);min-width:0;box-shadow:var(--shadow-soft);padding:clamp(1.15rem,2.6vw,1.8rem)}.panel-heading{justify-content:space-between;align-items:start;gap:1rem;margin-bottom:1.15rem;display:flex}.panel-heading .eyebrow{margin-bottom:.35rem}.panel-heading h2,.panel-heading h3{margin-bottom:0}.attention-list{border-top:1px solid var(--line);display:grid}.attention-row{border:0;border-bottom:1px solid var(--line);width:100%;color:var(--ink);text-align:left;transition:transform .16s var(--ease-out), color .16s ease;background:0 0;grid-template-columns:max-content 1fr max-content;align-items:center;gap:.75rem;padding:.85rem 0;display:grid}.attention-row:last-child{border-bottom:0}.attention-row>svg{color:var(--kds-red)}.attention-row strong,.attention-row small{display:block}.attention-row small{color:var(--ink-soft);font-size:.76rem}.progress-panel{flex-direction:column;display:flex}.progress-panel h2{margin-bottom:.55rem;font-size:clamp(2.3rem,4vw,3.4rem)}.progress-panel>p{color:var(--ink-soft);margin-bottom:1.2rem}.completion-meter{background:#e0e7ef;border-radius:999px;height:.65rem;margin-bottom:1.35rem;overflow:hidden}.completion-meter span{border-radius:inherit;background:var(--kds-green);height:100%;display:block}.progress-panel .button{align-self:start;margin-top:auto}.recent-panel{margin-top:1.2rem}.recent-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;display:grid}.recent-record{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface-muted);justify-content:space-between;align-items:start;gap:.75rem;padding:.85rem;display:flex}.recent-record strong,.recent-record span{display:block}.recent-record>div>span{color:var(--ink-soft);margin-top:.12rem;font-size:.77rem}.status-badge{white-space:nowrap;border-radius:999px;align-items:center;width:fit-content;padding:.25rem .47rem;font-size:.71rem;font-weight:850;line-height:1.2;display:inline-flex}.status-badge.not_started{background:var(--kds-blue-soft);color:var(--kds-blue)}.status-badge.processing{color:#7b4b00;background:#fff3d7}.status-badge.submitted{background:var(--success-soft);color:var(--success)}.status-badge.failed{color:var(--kds-red);background:#fee7e7}.compact-empty{border-top:1px solid var(--line);padding:1rem 0 0}.empty-state{color:var(--ink-soft);align-items:flex-start;gap:1rem;padding:1.25rem 0 .2rem;display:flex}.empty-state>svg{color:var(--kds-blue);flex:none;font-size:1.8rem}.empty-state h3{margin-bottom:.35rem}.empty-state p{max-width:30rem;margin-bottom:1rem}.admin-load-error{border-radius:var(--radius);background:var(--warning-soft);width:min(100%,42rem);color:var(--warning);border:1px solid #e3aa8d;gap:1rem;padding:1.5rem;display:flex}.admin-load-error>svg{flex:none;font-size:2rem}.admin-load-error h2{color:var(--warning);margin-bottom:.4rem}.admin-load-error p{color:#7e3512}.roster-view,.outreach-view{min-width:0}.outreach-intro{border-bottom:1px solid var(--line);justify-content:space-between;align-items:end;gap:1rem;margin-bottom:1.2rem;padding-bottom:1.2rem;display:flex}.outreach-intro h2{margin-bottom:.42rem}.outreach-intro p{max-width:42rem;color:var(--ink-soft);margin:0}.add-student-panel{border-radius:var(--radius);background:var(--surface-blue);border:1px solid #c5d3e4;margin-bottom:1.15rem;padding:clamp(1rem,2.8vw,1.5rem)}.add-student-panel .panel-heading{margin-bottom:1rem}.student-fields{grid-template-columns:.8fr 1.2fr 1.55fr;gap:.75rem;display:grid}.advanced-person{color:var(--kds-blue);margin-top:1rem;font-size:.86rem;font-weight:800}.advanced-person summary{cursor:pointer;align-items:center;gap:.25rem;width:fit-content;display:flex}.advanced-person[open] summary svg{transform:rotate(180deg)}.advanced-person>div{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;margin-top:.8rem;display:grid}.form-actions{justify-content:flex-end;gap:.65rem;margin-top:1.2rem;display:flex}.roster-toolbar{color:var(--ink-soft);justify-content:space-between;align-items:end;gap:1rem;margin:1rem 0 .65rem;font-size:.84rem;display:flex}.roster-toolbar label{width:min(15rem,100%)}.roster-toolbar .roster-search{flex:1;width:min(22rem,100%);max-width:22rem}.search-field{border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface);grid-template-columns:max-content minmax(0,1fr);align-items:center;gap:.48rem;min-height:2.65rem;padding:0 .72rem;transition:border-color .16s,box-shadow .16s;display:grid}.search-field:focus-within{border-color:var(--kds-accent-blue);box-shadow:0 0 0 3px #0066ff29}.search-field svg{color:var(--ink-soft);font-size:1.15rem}.search-field input{border:0;border-radius:0;min-height:0;padding:.5rem 0}.search-field input:focus{box-shadow:none}.roster-table-wrap,.campaign-table-wrap{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-soft);overflow-x:auto}.roster-table,.campaign-history table{border-collapse:collapse;width:100%}.roster-table th,.roster-table td,.campaign-history th,.campaign-history td{border-bottom:1px solid var(--line);color:var(--ink);text-align:left;vertical-align:middle;padding:.88rem .78rem}.roster-table tr:last-child td,.campaign-history tr:last-child td{border-bottom:0}.roster-table th,.campaign-history th{color:var(--ink-soft);letter-spacing:.07em;text-transform:uppercase;font-size:.7rem;font-weight:850}.roster-table td>strong,.roster-table td>span{display:block}.roster-table td>span:not(.status-badge){color:var(--ink-soft);margin-top:.12rem;font-size:.78rem}.row-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.4rem;min-width:30rem;display:flex}.row-actions .icon-button{text-decoration:none}.empty-cell{padding:0!important}.empty-table{color:var(--ink-soft);text-align:center;justify-items:center;gap:.25rem;padding:2.4rem 1rem;display:grid}.empty-table svg{color:var(--kds-blue);font-size:1.6rem}.empty-table span{font-size:.82rem}.campaign-layout{grid-template-columns:minmax(12rem,.42fr) minmax(0,1.58fr);gap:1.1rem;display:grid}.template-list{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-soft);align-content:start;gap:.42rem;padding:1rem;display:grid}.template-list-heading{justify-content:space-between;align-items:center;gap:.5rem;margin:.2rem .25rem .5rem;display:flex}.template-list-heading .eyebrow{margin:0}.template-choice{border-radius:var(--radius-sm);color:var(--ink);text-align:left;transition:transform .16s var(--ease-out), background-color .16s ease, border-color .16s ease, color .16s ease;background:0 0;border:1px solid #0000;grid-template-columns:max-content 1fr max-content;align-items:center;gap:.5rem;padding:.72rem;font-size:.85rem;font-weight:750;display:grid}.template-choice>svg:last-child{color:var(--ink-soft)}.template-choice.selected{background:var(--kds-blue-soft);color:var(--kds-blue);border-color:#bed0e7}.template-editor{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-soft);gap:.85rem;padding:clamp(1rem,2.7vw,1.5rem);display:grid}.email-editor{border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface);overflow:hidden}.editor-toolbar{border-bottom:1px solid var(--line);background:var(--surface-muted);flex-wrap:wrap;gap:.3rem;padding:.5rem;display:flex}.editor-toolbar button{min-height:2rem;color:var(--ink);background:0 0;border:1px solid #0000;border-radius:5px;padding:.3rem .5rem;font-size:.78rem;font-weight:800}.editor-toolbar button.is-active{background:var(--surface);color:var(--kds-red);border-color:#b6c6da}.editor-toolbar .variable-button{border-color:var(--line);background:var(--surface);color:var(--kds-blue)}.toolbar-divider{background:var(--line-strong);width:1px;margin:.15rem .1rem}.email-editor-content{min-height:12rem;color:var(--ink);outline:none;padding:.9rem;font-weight:400}.email-editor-content p{margin:0 0 .7rem}.email-editor-content p:last-child{margin-bottom:0}.email-editor-content h2{margin:0 0 .65rem;font-size:1.4rem}.email-editor-content ul,.email-editor-content ol{margin:0 0 .7rem;padding-left:1.35rem}.field-help{color:var(--ink-soft);font-size:.77rem;font-weight:600;line-height:1.4;display:block}.editor-loading{border:1px solid var(--line-strong);border-radius:var(--radius-sm);min-height:12rem;color:var(--ink-soft);align-items:center;gap:.55rem;padding:1rem;display:flex}.campaign-actions{flex-wrap:wrap;align-items:end;gap:.7rem;padding-top:.2rem;display:flex}.campaign-actions label{width:min(18rem,100%)}.campaign-actions .button:last-child{margin-left:auto}.campaign-history{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-soft);margin-top:1.2rem;padding:clamp(1rem,2.6vw,1.5rem)}.campaign-history .panel-heading{margin-bottom:1rem}.campaign-table-wrap{border-radius:var(--radius-sm);box-shadow:none}.campaign-result{color:var(--success);font-weight:800}.campaign-result.issue{color:var(--kds-red)}.empty-history{border-top:1px solid var(--line);color:var(--ink-soft);align-items:center;gap:.5rem;padding:1rem 0 0;font-size:.88rem;display:flex}.empty-history p{margin:0}.confirm-layer{z-index:10;background:#041e4275;place-items:center;padding:1.2rem;display:grid;position:fixed;inset:0}.confirm-card{border-radius:var(--radius-lg);background:var(--surface);border:1px solid #d8bfaf;width:min(100%,32rem);padding:clamp(1.3rem,4vw,2rem);box-shadow:0 24px 70px #041e4247}.confirm-card>svg{color:var(--warning);margin-bottom:.65rem;font-size:2rem}.confirm-card h2{margin-bottom:.7rem}.confirm-card p{color:var(--ink-soft);margin-bottom:1.4rem}.confirm-actions{justify-content:flex-end;gap:.65rem;display:flex}.activity-layer{z-index:11}.activity-card{border-radius:var(--radius-lg);background:var(--surface);border:1px solid #c5d3e4;width:min(100%,39rem);max-height:min(44rem,100dvh - 2.4rem);padding:clamp(1.3rem,4vw,2rem);overflow:auto;box-shadow:0 24px 70px #041e4247}.activity-card-heading{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:1rem;padding-bottom:1rem;display:flex}.activity-card-heading .eyebrow{margin-bottom:.35rem}.activity-card-heading h2{margin-bottom:.15rem}.activity-card-heading p{color:var(--ink-soft);margin:0;font-size:.84rem}.activity-loading{min-height:9rem;color:var(--ink-soft);align-items:center;gap:.55rem;display:flex}.activity-timeline{gap:0;margin:1rem 0 0;padding:0;list-style:none;display:grid}.activity-timeline li{grid-template-columns:1rem minmax(0,1fr);gap:.7rem;padding:0 0 1rem;display:grid;position:relative}.activity-timeline li:not(:last-child):before{content:"";background:#d5e0ec;width:2px;position:absolute;top:.85rem;bottom:-.2rem;left:.31rem}.activity-marker{z-index:1;border:2px solid var(--surface);background:var(--success);border-radius:50%;width:.7rem;height:.7rem;margin-top:.28rem;box-shadow:0 0 0 1px #9cd5bb}.activity-timeline li.issue .activity-marker{background:var(--kds-red);box-shadow:0 0 0 1px #e0aaaa}.activity-timeline strong,.activity-timeline time,.activity-timeline small{display:block}.activity-timeline strong{color:var(--ink);font-size:.9rem}.activity-timeline time{color:var(--ink-soft);margin-top:.12rem;font-size:.78rem}.activity-timeline small{color:var(--warning);margin-top:.18rem;font-size:.76rem;font-weight:700}.photo-preview-layer{z-index:12}.photo-preview-card{border-radius:var(--radius-lg);background:var(--surface);border:1px solid #c5d3e4;width:min(100%,54rem);max-height:min(50rem,100dvh - 2.4rem);padding:clamp(1.3rem,4vw,2rem);overflow:auto;box-shadow:0 24px 70px #041e4247}.photo-preview-heading{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:1rem;padding-bottom:1rem;display:flex}.photo-preview-heading .eyebrow{margin-bottom:.35rem}.photo-preview-heading h2{margin-bottom:.15rem}.photo-preview-heading p{color:var(--ink-soft);margin:0;font-size:.84rem}.admin-photo-preview{border:1px solid var(--line);border-radius:var(--radius-sm);object-fit:contain;background:#192534;width:100%;max-height:min(42rem,100dvh - 11rem);margin-top:1rem;display:block}.photo-preview-card .inline-error{margin-top:1rem}.admin-auth-shell{background:var(--kds-blue);place-items:center;min-height:100dvh;padding:1.5rem;display:grid}.admin-signin-card{border-radius:var(--radius-lg);background:var(--surface);justify-items:center;gap:1rem;width:min(100%,24rem);padding:clamp(1.75rem,4vw,2.25rem);display:grid;box-shadow:0 24px 70px #00000038}.admin-signin-title{color:var(--ink);font-family:var(--font-body);letter-spacing:.01em;margin:0;font-size:1.08rem;font-weight:800;line-height:1.25}.google-signin-button{border:1px solid var(--kds-red);border-radius:var(--radius-sm);background:var(--kds-red);color:#fff;justify-content:center;align-items:center;gap:.6rem;width:min(100%,19rem);max-width:100%;min-height:2.8rem;padding:.68rem 1rem;font-size:.92rem;font-weight:800;line-height:1.2;transition:background-color .16s,box-shadow .16s,transform .16s;display:inline-flex}.google-signin-button svg{flex:none;font-size:1.25rem}.admin-signin-problem{border-radius:var(--radius-sm);background:var(--warning-soft);width:100%;color:var(--warning);border:1px solid #e4af94;align-items:flex-start;gap:.55rem;padding:.75rem;font-size:.82rem;line-height:1.4;display:flex}.admin-signin-problem svg{flex:none;margin-top:.05rem;font-size:1.1rem}.admin-signin-problem p{margin:0}@media (hover:hover) and (pointer:fine){.google-signin-button:hover:not(:disabled){background:var(--kds-red-strong);transform:translateY(-1px);box-shadow:0 5px 16px #a1191940}.photo-picker:hover:not(:disabled){border-color:var(--kds-accent-blue);background:#eef5ff;transform:translateY(-1px)}.nav-item:hover:not(.active){background:var(--surface-muted);color:var(--kds-blue)}.metric-card:hover{border-color:#abc0db;transform:translateY(-2px);box-shadow:0 10px 22px #041e421a}.attention-row:hover{color:var(--kds-red)}.collection-segment:hover{filter:brightness(.95)}.collection-legend button:hover{color:var(--kds-red)}.template-choice:hover:not(.selected){background:var(--surface-muted)}.editor-toolbar button:hover{background:var(--surface);color:var(--kds-red);border-color:#b6c6da}}@media (max-width:980px){.student-aside{grid-template-columns:minmax(13rem,.65fr) minmax(25rem,1.35fr);padding:2rem 1.5rem}.student-aside h1{font-size:2.7rem}.student-help{display:none}.operations-grid{grid-template-columns:1fr}.student-fields{grid-template-columns:1fr 1fr}.student-fields label:last-child{grid-column:1/-1}}@media (max-width:760px){.student-topbar{min-height:4.35rem}.student-layout{border:0;width:100%;min-height:auto}.student-aside{grid-template-columns:1fr;padding:1.55rem 1.35rem}.student-aside-intro p{margin-bottom:1.35rem}.student-aside h1{font-size:2.55rem}.upload-steps{grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem}.upload-step{grid-template-columns:1.65rem 1fr;gap:.45rem}.upload-step small,.student-help{display:none}.student-stage{padding:1.5rem 1.35rem 2.7rem}.photo-guidance{grid-template-columns:1fr}.photo-examples{max-width:38rem}.link-only-topbar{min-height:4.35rem}.link-only-page{min-height:calc(100dvh - 4.35rem)}.admin-app-name{display:none}.admin-layout{border:0;grid-template-columns:1fr;width:100%}.admin-sidebar{border-right:0;border-bottom:1px solid var(--line);padding:.8rem 1rem;display:block}.sidebar-help{display:none}.admin-navigation{grid-template-columns:repeat(3,1fr);gap:.4rem;padding:0}.nav-item{justify-content:center;padding:.6rem .35rem;font-size:.78rem}.nav-item svg{display:none}.admin-workspace{padding:1.5rem 1.1rem 2.5rem}.workspace-heading,.collection-progress-heading{flex-direction:column;align-items:flex-start}.workspace-actions{justify-content:flex-start;width:100%}.collection-progress-heading .button{width:auto}.collection-legend{grid-template-columns:repeat(2,minmax(0,1fr));gap:.25rem .75rem;display:grid}.collection-legend button{min-width:0}.recent-email-list li{align-items:flex-start}.metrics-grid,.skeleton-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.campaign-layout{grid-template-columns:1fr}.template-list{grid-template-columns:repeat(2,minmax(0,1fr))}.template-list-heading{grid-column:1/-1}.campaign-actions .button:last-child{margin-left:0}}@media (max-width:530px){h1{font-size:2.45rem}.kds-brand-name{display:none}.student-topbar,.link-only-topbar{padding:0 1.15rem}.student-aside{padding:1.45rem 1.15rem}.student-aside h1{font-size:2.3rem}.upload-steps{gap:.35rem}.upload-step{grid-template-columns:1.45rem 1fr}.step-number{width:1.45rem;height:1.45rem;font-size:.72rem}.upload-step strong{font-size:.76rem}.student-stage{padding:1.4rem 1.15rem 2.3rem}.student-stage-heading{margin-bottom:1.4rem;display:block}.context-note{margin-top:.85rem}.photo-picker{min-height:15.5rem}.crop-stage{min-height:23rem}.crop-controls{align-items:stretch}.crop-controls label,.crop-controls .button{width:100%}.state-panel{display:block}.state-panel>svg{margin-bottom:.8rem;display:block}.submission-success-card,.link-only-card{text-align:left;padding:1.65rem 1.15rem}.submission-success-icon,.link-only-icon{margin-bottom:1.1rem}.submission-success-card h1,.link-only-card h1{margin-left:0;margin-right:0;font-size:clamp(2.25rem,11vw,3rem)}.submission-success-copy,.link-only-copy{margin-left:0;margin-right:0;font-size:1rem}.admin-topbar{padding:.7rem 1.1rem}.admin-account{gap:.35rem}.admin-account>span{display:none}.workspace-heading .button,.collection-progress-heading .button{width:100%}.collection-progress-bar{min-height:2.85rem}.collection-segment{padding:.35rem .25rem;font-size:.68rem}.collection-legend{grid-template-columns:1fr}.recent-email-list li{flex-direction:column;gap:.3rem}.recent-email-list strong{white-space:normal;max-width:100%}.metrics-grid{gap:.65rem}.metric-card{min-height:8rem;padding:.9rem}.metric-card strong{font-size:2.6rem}.recent-grid,.student-fields,.advanced-person>div{grid-template-columns:1fr}.student-fields label:last-child{grid-column:auto}.form-actions{flex-direction:column-reverse}.form-actions .button{width:100%}.workspace-actions{grid-template-columns:1fr;display:grid}.workspace-actions .button{width:100%}.roster-toolbar{grid-template-columns:1fr;align-items:stretch;display:grid}.roster-toolbar .roster-search,.roster-toolbar label{width:100%;max-width:none}.row-actions{min-width:26rem}.template-list{grid-template-columns:1fr}.campaign-actions{display:grid}.campaign-actions label,.campaign-actions .button{width:100%}.confirm-actions{flex-direction:column-reverse}.confirm-actions .button{width:100%}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important}.button,.icon-button,.nav-item,.metric-card,.template-choice,.attention-row,.photo-picker,.notice{transition-property:background-color,border-color,color,opacity,box-shadow}.button:active:not(:disabled),.icon-button:active:not(:disabled),.nav-item:active:not(:disabled),.metric-card:active:not(:disabled),.template-choice:active:not(:disabled),.attention-row:active:not(:disabled),.photo-picker:active:not(:disabled),.button:hover:not(:disabled),.photo-picker:hover:not(:disabled),.metric-card:hover{transform:none}.spin,.mini-spinner{animation:none}.skeleton-line,.skeleton-photo,.skeleton-metric,.skeleton-panel{animation:1.1s ease-in-out infinite alternate skeleton-fade}}
