:root{--color-primary: #0e4b5a;--color-primary-glow: rgba(14, 75, 90, .28);font-family:Inter,Segoe UI,Arial,sans-serif;color:#17323d;background:#f3f6f7}*{box-sizing:border-box}body{margin:0}.pwa-update-banner{align-items:center;background:#fff4d6;border-bottom:1px solid #e5c66b;display:flex;gap:12px;justify-content:center;padding:10px 16px;position:sticky;top:0;z-index:1000}.pwa-update-banner div{max-width:760px}.pwa-update-banner button{flex:0 0 auto}@media(max-width:720px){.pwa-update-banner{align-items:stretch;flex-direction:column}}.app-build-info{color:#627985;font-size:.78rem;padding:8px 16px 18px;text-align:center}button,input,select{font:inherit}button{border:0;border-radius:6px;background:#17323d;color:#fff;cursor:pointer;font-weight:700;min-height:42px;padding:0 16px}button:disabled{cursor:not-allowed;opacity:.5}button.secondary{background:#dce6ea;color:#17323d}button.invalid{background:#a83d37}input,select{border:1px solid #bfd0d7;border-radius:6px;color:#17323d;min-height:42px;padding:8px 10px;width:100%}input:disabled{background:#eef3f5}.shell{margin:0 auto;max-width:1180px;padding:28px}.login-shell{align-items:center;background:radial-gradient(circle at 50% 4%,rgba(255,123,42,.18),transparent 25%),radial-gradient(circle at 38% 0%,rgba(18,61,72,.08),transparent 28%),linear-gradient(180deg,#fff,#f7fbfc 54%,#edf5f8);display:flex;justify-content:center;min-height:100vh;padding:26px 22px 32px}.login-page{display:grid;gap:18px;justify-items:center;max-width:840px;width:100%}.login-brand{text-align:center}.login-logo{display:inline-flex;height:46px;justify-content:center;margin-bottom:12px;filter:drop-shadow(0 8px 12px rgba(255,122,42,.18));width:88px}.login-logo svg{height:100%;overflow:visible;width:100%}.runner{fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:5.2}.runner-primary{stroke:#123d48}.runner-accent{stroke:#ff7a2a}.login-brand h1{color:#142c36;font-size:44px;font-weight:900;line-height:1.05;margin-bottom:10px}.login-brand p{color:#2f4652;font-size:17px;line-height:1.4;margin-bottom:0}.login-card{background:#fffffff5;border:1px solid #dce6ea;border-radius:8px;box-shadow:0 26px 70px #17323d26;padding:36px 44px 38px;width:min(100%,620px)}.login-card h2{color:#142c36;font-size:26px;font-weight:900;margin-bottom:26px;text-align:center}.login-form{display:flex;flex-direction:column;gap:20px;width:100%}.login-form label{color:#17323d;display:flex;flex-direction:column;font-weight:800;gap:8px;width:100%}.login-input-wrap{display:block;position:relative;width:100%}.login-input-wrap input{border-color:#d2dde2;border-radius:7px;font-size:16px;min-height:52px;padding:11px 48px;width:100%}.login-input-wrap input:focus{border-color:#123d48;box-shadow:0 0 0 3px #123d481f;outline:none}.login-form input::placeholder{color:#798a94}.login-field-icon,.login-eye-icon{fill:none;pointer-events:none;position:absolute;stroke:#647988;stroke-linecap:round;stroke-linejoin:round;stroke-width:2;top:50%;transform:translateY(-50%)}.login-field-icon{height:23px;left:18px;width:23px}.login-eye-icon{height:24px;right:18px;width:24px}.login-submit{background:linear-gradient(180deg,#123d48,#0d4a55);box-shadow:0 12px 24px #123d483d;font-size:17px;font-weight:900;margin-top:2px;min-height:54px;width:100%}.login-submit:hover:not(:disabled){background:linear-gradient(180deg,#174b56,#0f5965);box-shadow:0 12px 24px #123d4838}.login-error{background:#fff5f3;border:1px solid #efc5bd;border-radius:8px;color:#7c2821;margin:18px 0 0;padding:12px 14px}.login-note{align-items:center;background:#eff8ffd1;border:1px solid #d5e9f7;border-radius:8px;color:#244a63;display:flex;gap:10px;margin:6px 0 0;padding:10px 14px;width:min(100%,620px)}.login-note p{font-size:14px;line-height:1.35;margin:0}.login-note-icon{align-items:center;border:1.5px solid #1677d2;border-radius:999px;color:#1677d2;display:inline-flex;flex:0 0 auto;font-size:15px;font-weight:900;height:24px;justify-content:center;width:24px}.login-features{display:grid;gap:14px;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:2px;width:min(100%,620px)}.login-features div{align-items:center;display:flex;gap:9px}.login-features svg{fill:none;flex:0 0 auto;height:18px;stroke:#1f7a56;stroke-linecap:round;stroke-linejoin:round;stroke-width:2;width:18px}.login-features h3{color:#17323d;font-size:12px;margin:0}.login-features p{display:none}.login-footer{color:#7a8f99;font-size:12px;margin-top:2px}.header{align-items:center;display:flex;gap:20px;justify-content:space-between;margin-bottom:18px}.header-user{color:#60747c;font-size:14px;margin:8px 0 0}.header-actions{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}.eyebrow{color:#60747c;font-size:14px;font-weight:700;margin:0 0 6px;text-transform:uppercase}h1,h2,h3,p{margin-top:0}h1{font-size:34px;margin-bottom:0}.status{border-radius:999px;font-weight:800;padding:10px 14px;white-space:nowrap}.status.idle{background:#dce6ea}.status.working{background:#f6c85f}.status.ready{background:#b7d7a8}.status.sent{background:#1f7a56;color:#fff}.status.failed{background:#a83d37;color:#fff}.toolbar{display:flex;flex-wrap:wrap;gap:10px;margin:24px 0 12px}.recorder-context{background:#fff;border:1px solid #d7e1e5;border-radius:8px;margin:18px 0 12px;max-width:360px;padding:14px 16px}.recorder-context span{color:#60747c;display:block;font-size:13px;font-weight:700;margin-bottom:6px}.message{background:#fff;border:1px solid #d7e1e5;border-radius:8px;padding:14px 16px}.class-card,.empty-state,.dashboard-panel,.class-status-panel,.class-assignment-panel,.import-panel,.login-panel,.results-review-panel,.ranking-panel,.audit-panel,.certificate-panel,.release-panel{background:#fff;border:1px solid #d7e1e5;border-radius:8px;padding:22px}.class-status-panel,.dashboard-panel,.class-assignment-panel,.import-panel,.login-panel,.results-review-panel,.ranking-panel,.audit-panel,.certificate-panel,.release-panel{margin-bottom:18px}.manager-nav,.sub-nav{background:#fff;border:1px solid #d7e1e5;border-radius:8px;display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px;padding:10px}.sub-nav button{min-height:36px}.manager-nav button{min-height:38px}.dashboard-summary{display:grid;gap:12px;grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:16px}.dashboard-summary div{border:1px solid #d7e1e5;border-radius:8px;padding:14px 16px}.dashboard-summary span{color:#60747c;display:block;font-size:13px;font-weight:800;margin-bottom:6px}.dashboard-summary strong{font-size:20px}.dashboard-hero{align-items:stretch;background:linear-gradient(135deg,#123d48,#1f7a56);border-radius:8px;color:#fff;display:grid;gap:18px;grid-template-columns:minmax(0,1.6fr) minmax(280px,.9fr);margin-bottom:14px;min-height:130px;padding:18px 22px}.dashboard-hero .eyebrow{color:#ffffffc7}.dashboard-hero h2{font-size:28px;margin-bottom:6px}.dashboard-status-line,.dashboard-last-change{color:#ffffffdb;margin-bottom:6px}.dashboard-hero-numbers{display:grid;gap:10px;grid-template-columns:repeat(3,minmax(0,1fr))}.dashboard-hero-numbers div{background:#ffffff1f;border:1px solid rgba(255,255,255,.18);border-radius:8px;display:grid;gap:4px;place-content:center;text-align:center}.dashboard-hero-numbers strong{font-size:24px}.dashboard-hero-numbers span{color:#ffffffd1;font-size:12px;font-weight:800}.dashboard-main-grid{display:grid;gap:18px;grid-template-columns:minmax(0,1fr) minmax(320px,.9fr);margin-bottom:18px}.dashboard-progress-card,.dashboard-next-card{border:1px solid #d7e1e5;border-radius:8px;padding:20px}.dashboard-progress-card h3,.dashboard-next-card h3{margin-bottom:0}.dashboard-progress-track{background:#e7eef1;border-radius:999px;height:18px;margin:22px 0 12px;overflow:hidden}.dashboard-progress-track span{background:linear-gradient(90deg,#1f7a56,#ff7a2a);display:block;height:100%;min-width:4px}.dashboard-progress-card p,.dashboard-next-card p{color:#60747c;margin-bottom:0}.dashboard-next-card{background:#fbfdfd;margin-bottom:14px}.dashboard-next-card button{margin-top:18px;min-width:220px}.dashboard-next-card h3{font-size:26px;margin-bottom:8px}.dashboard-leitstand-grid{display:grid;gap:14px;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.dashboard-checklist,.dashboard-status-list,.dashboard-hints{border:1px solid #d7e1e5;border-radius:8px;padding:16px 18px}.dashboard-checklist h3,.dashboard-status-list h3,.dashboard-hints h3{font-size:16px;margin-bottom:10px}.dashboard-checklist ul,.dashboard-hints ul{list-style:none;margin:0;padding:0}.dashboard-checklist li{align-items:center;display:flex;font-weight:800;gap:10px;padding:6px 0}.dashboard-checklist li span{align-items:center;border-radius:999px;display:inline-flex;height:24px;justify-content:center;width:24px}.dashboard-checklist li.done{color:#1f7a56}.dashboard-checklist li.done span{background:#d8f0e3}.dashboard-checklist li.warning{color:#8a5a10}.dashboard-checklist li.warning span{background:#f7dfad}.dashboard-checklist li.idle{color:#60747c}.dashboard-checklist li.idle span{background:#e6eef1}.dashboard-status-list div{align-items:center;border-bottom:1px solid #e2eaed;display:flex;justify-content:space-between;padding:7px 0}.dashboard-status-list div:last-child{border-bottom:0}.dashboard-status-list span{color:#60747c;font-weight:800}.dashboard-status-list strong{font-size:18px}.dashboard-status-cards{display:grid;gap:14px;grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:16px}.dashboard-status-card{border:1px solid #d7e1e5;border-radius:8px;padding:18px}.dashboard-status-card:before{border-radius:999px;content:"";display:block;height:12px;margin-bottom:12px;width:12px}.dashboard-status-card.sent:before{background:#1f7a56}.dashboard-status-card.downloaded:before{background:#f6c85f}.dashboard-status-card.idle:before{background:#d7e1e5}.dashboard-status-card.failed:before{background:#a83d37}.dashboard-status-card span{color:#60747c;display:block;font-size:13px;font-weight:800;margin-bottom:8px}.dashboard-status-card strong{font-size:34px}.dashboard-hints{background:#fff9ed;border-color:#f0d6a2;grid-column:1 / -1}.dashboard-hints.ok{background:#eef8f3;border-color:#b9dfca;color:#1f7a56}.dashboard-hints li{color:#8a5a10;font-weight:800;padding:4px 0}.dashboard-hints p{font-weight:800;margin:0}.preparation-panel{background:#fff;border:1px solid #d7e1e5;border-radius:8px;margin-bottom:18px;padding:22px}.preparation-header{align-items:center;display:flex;gap:18px;justify-content:space-between;margin-bottom:16px}.preparation-header h2{margin-bottom:0}.preparation-progress{background:#eff8ff;border:1px solid #d5e9f7;border-radius:8px;min-width:150px;padding:12px 14px;text-align:center}.preparation-progress strong{display:block;font-size:26px}.preparation-progress span{color:#60747c;font-size:13px;font-weight:800}.preparation-steps{display:grid;gap:10px;grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:18px}.legacy-preparation-steps{display:none}.preparation-step-nav{display:grid;gap:10px;grid-template-columns:repeat(5,minmax(0,1fr));margin-bottom:18px}.preparation-step{align-items:center;background:#f5f8f9;border:1px solid #d7e1e5;border-radius:8px;color:#60747c;cursor:pointer;display:flex;font-weight:900;gap:8px;justify-content:center;min-height:54px;padding:10px 12px;text-align:center}.preparation-step span{align-items:center;border-radius:999px;display:inline-flex;flex:0 0 auto;font-size:14px;height:22px;justify-content:center;width:22px}.preparation-step.done{background:#eef8f3;border-color:#b9dfca;color:#1f7a56}.preparation-step.done span{background:#d8f0e3}.preparation-step.warning{background:#fff8e8;border-color:#f0d6a2;color:#8a5a10}.preparation-step.warning span{background:#f7dfad}.preparation-step.idle span{background:#e6eef1}.preparation-step.active{border-color:#17323d;box-shadow:0 0 0 3px #17323d1f;color:#17323d}.preparation-steps span{background:#f5f8f9;border:1px solid #d7e1e5;border-radius:8px;color:#60747c;font-weight:800;padding:12px 14px}.preparation-steps span.done{background:#eef8f3;border-color:#b9dfca;color:#1f7a56}.preparation-grid{display:grid;gap:16px;grid-template-columns:1fr}.preparation-card{border:1px solid #d7e1e5;border-radius:8px;padding:18px}.preparation-card.inactive-step{display:none}.preparation-card.wide{grid-column:1 / -1}.preparation-alert{border-radius:8px;margin-bottom:14px;padding:12px 14px}.preparation-alert.warning{background:#fff8e8;border:1px solid #f0d6a2;color:#8a5a10}.preparation-alert.success{background:#eef8f3;border:1px solid #b9dfca;color:#1f7a56}.step-title{align-items:center;display:flex;gap:12px;margin-bottom:14px}.step-title>span{align-items:center;background:#17323d;border-radius:999px;color:#fff;display:inline-flex;flex:0 0 auto;font-weight:900;height:34px;justify-content:center;width:34px}.step-title h3{margin-bottom:2px}.step-title p{color:#60747c;margin-bottom:0}.step-success{background:#eef8f3;border:1px solid #b9dfca;border-radius:8px;color:#1f7a56;display:grid;gap:4px;font-weight:800;margin-bottom:12px;padding:10px 12px}.preparation-actions{display:grid;gap:10px;grid-template-columns:minmax(0,1fr) auto auto;margin-bottom:10px}.preparation-actions input[type=file]{min-width:0}.preparation-details{border-top:1px solid #e2eaed;margin-top:12px;padding-top:10px}.preparation-details summary{cursor:pointer;font-weight:800}.import-summary.compact{grid-template-columns:repeat(4,minmax(0,1fr));margin-top:10px}.assignment-cards h4{margin-bottom:10px}.assignment-card{align-items:center;border:1px solid #d7e1e5;border-radius:8px;display:grid;gap:10px;grid-template-columns:90px minmax(0,1fr) auto;margin-bottom:8px;padding:10px 12px}.assigned-collapse{margin-top:14px}.assigned-list{display:grid;gap:8px;margin-top:10px}.assigned-list div,.teacher-list>div{align-items:center;border:1px solid #d7e1e5;border-radius:8px;display:flex;gap:12px;justify-content:space-between;padding:10px 12px}.assigned-list span,.teacher-list span{color:#60747c}.teacher-list{display:grid;gap:8px}.teacher-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.compact-message{padding:10px 12px}.compact-status-list{display:grid;gap:8px}.compact-status-list div{align-items:center;border:1px solid #d7e1e5;border-radius:6px;display:flex;gap:12px;justify-content:space-between;padding:10px 12px}.compact-status-list span{color:#60747c;text-align:right}.muted-note{color:#60747c;display:block;font-size:12px;line-height:1.35;margin-top:6px;white-space:normal}.recorder-home{align-items:center;background:#fff;border:1px solid #d7e1e5;border-radius:8px;display:flex;gap:18px;justify-content:space-between;margin-bottom:16px;padding:18px 22px}.recorder-home p{margin-bottom:0}.form-grid{align-items:end;display:grid;gap:12px;grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:12px}.form-grid label{display:grid;gap:6px}.release-summary{align-items:end;display:grid;gap:12px;grid-template-columns:minmax(0,1fr) 140px repeat(3,minmax(160px,auto))}.release-summary span{color:#60747c;display:block;font-size:13px;font-weight:700;margin-bottom:6px}.section-header{align-items:center;display:flex;gap:12px;justify-content:space-between}.section-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.action-list{display:grid;gap:8px;list-style:none;padding-left:0}.action-list li{align-items:center;border:1px solid #d7e1e5;border-radius:6px;display:flex;gap:12px;justify-content:space-between;padding:10px 12px}.review-class{border-top:1px solid #d7e1e5;margin-top:16px;padding-top:14px}.conduct-workspace,.documents-workspace{display:grid;gap:18px}.conduct-tabs{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}.conduct-tabs button{background:#eef5f6;border:1px solid #c8d8dc;color:#12313b;font-size:16px;justify-content:center;padding:16px}.conduct-tabs button.active{background:#103743;border-color:#103743;color:#fff;box-shadow:0 10px 24px #10374329}.document-placeholder-panel,.certificate-panel{display:grid;gap:14px}.document-hint{background:#f3f8fa;border:1px solid #d7e6eb;border-radius:8px;color:#36515a;font-weight:700;margin:0;padding:12px 14px}.review-toolbar{align-items:end;display:grid;gap:12px;grid-template-columns:minmax(170px,250px) minmax(160px,210px);margin:14px 0 6px}.review-hint{color:#60747c;font-size:13px;margin:0 0 10px}.review-toolbar label,.review-edit-grid label,.review-attempt-row{display:grid;gap:6px}.review-class-header{align-items:center;display:flex;gap:12px;justify-content:space-between}.review-class-header h3{margin:0}.review-class-header span{background:#eef5f6;border-radius:999px;color:#36515a;font-size:13px;font-weight:800;padding:6px 10px}.review-summary-table{display:grid;gap:1px;overflow-x:auto}.review-summary-row{align-items:center;background:#fff;border-bottom:1px solid #e4ecef;display:grid;gap:10px;grid-template-columns:minmax(190px,1.4fr) 40px repeat(4,minmax(105px,.85fr)) 86px;min-width:860px;padding:10px 12px}.review-summary-row span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.review-summary-header{background:#f3f6f7;color:#60747c;font-size:13px;font-weight:800}.review-summary-entry{border:0;border-bottom:1px solid #e4ecef;border-radius:0;box-shadow:none;color:inherit;cursor:pointer;font:inherit;text-align:left;transition:background .12s ease,box-shadow .12s ease;width:100%}.review-summary-entry:hover,.review-summary-entry:focus-visible{background:#eef8f7;box-shadow:inset 4px 0 #0f766e;outline:none}.review-summary-entry.incomplete{background:#fff8e7}.review-summary-entry.incomplete:hover,.review-summary-entry.incomplete:focus-visible{background:#fff3d3;box-shadow:inset 4px 0 #d97706}.review-student-name{display:grid;gap:2px;line-height:1.22}.review-student-name strong{color:#12313b;font-weight:900;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.review-student-name small{color:#9a5a00;font-size:12px;font-weight:800}.review-total-chip{background:#edf7f4;border-radius:999px;color:#0f5d57;display:inline-block;font-weight:900;min-width:62px;padding:5px 9px;text-align:center}.review-total-chip.zero{background:#fff1d6;color:#8a4b00}.review-dialog-backdrop{align-items:center;background:#081f2752;display:flex;inset:0;justify-content:center;padding:24px;position:fixed;z-index:50}.review-dialog{background:#fff;border:1px solid #d7e1e5;border-radius:12px;box-shadow:0 24px 80px #081f2747;display:flex;flex-direction:column;gap:14px;max-height:calc(100vh - 36px);max-width:920px;overflow:hidden;padding:18px;width:min(920px,100%)}.review-dialog-header{align-items:start;background:#fff;border-bottom:1px solid #e4ecef;display:flex;gap:16px;justify-content:space-between;margin:-18px -18px 0;padding:16px 18px 12px;position:sticky;top:0;z-index:1}.review-dialog-header h3{font-size:22px;margin:0}.review-dialog-meta{color:#60747c;font-weight:700;margin:6px 0 0}.review-edit-list{display:grid;gap:10px;overflow:auto;padding-right:4px}.review-edit-card{border:1px solid #d7e1e5;border-radius:10px;display:grid;gap:9px;padding:12px}.review-edit-card-header{align-items:center;display:flex;gap:12px;justify-content:space-between}.review-edit-card-header span{background:#edf7f4;border-radius:999px;color:#0f5d57;font-size:13px;font-weight:900;padding:5px 9px}.review-edit-card h4,.review-edit-card p{margin:0}.review-edit-grid{align-items:end;display:grid;gap:10px;grid-template-columns:minmax(150px,1fr) minmax(150px,1fr) minmax(90px,auto)}.review-edit-grid div{display:grid;gap:6px}.review-edit-grid div span{color:#60747c;font-size:13px;font-weight:800}.review-attempt-editor{display:grid;gap:7px}.review-attempt-row{align-items:end;grid-template-columns:42px minmax(120px,1fr) minmax(135px,.9fr)}.review-attempt-row span{font-weight:800;padding-bottom:10px}.status-select.valid{border-color:#7bbf9f;background:#f0fbf5}.status-select.empty{border-color:#cfdbe0;background:#f8fafb}.status-select.invalid{border-color:#e0ad63;background:#fff8e7}.dialog-actions{align-items:center;background:#fff;border-top:1px solid #e4ecef;display:flex;flex-wrap:wrap;gap:10px;margin:0 -18px -18px;padding:12px 18px 16px}.unsaved-hint{color:#9a5a00;font-size:13px;font-weight:800}.ranking-group{border-top:1px solid #d7e1e5;margin-top:16px;padding-top:14px}.ranking-toolbar{align-items:end;display:grid;gap:12px;grid-template-columns:repeat(3,minmax(150px,220px));margin:14px 0 8px}.ranking-toolbar label{display:grid;gap:6px}.ranking-group-header{align-items:center;display:flex;gap:12px;justify-content:space-between;margin-bottom:8px}.ranking-group-header h3{margin:0}.ranking-group-header span{background:#fff8e7;border-radius:999px;color:#8a4b00;font-size:13px;font-weight:800;padding:6px 10px}.ranking-table{display:grid;gap:1px;overflow-x:auto}.ranking-row{align-items:center;background:#fff;border-bottom:1px solid #e4ecef;display:grid;gap:10px;grid-template-columns:110px minmax(190px,1fr) 90px 130px;min-width:540px;padding:10px 12px}.ranking-row span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ranking-header{background:#f3f6f7;color:#60747c;font-size:13px;font-weight:800}.ranking-entry{border:0;border-bottom:1px solid #e4ecef;border-radius:0;box-shadow:none;color:inherit;cursor:pointer;font:inherit;text-align:left;transition:background .12s ease,box-shadow .12s ease;width:100%}.ranking-entry:hover,.ranking-entry:focus-visible{background:#eef8f7;box-shadow:inset 4px 0 #0f766e;outline:none}.ranking-entry.zero{color:#6f8188}.ranking-student-name{color:#12313b;font-weight:900}.place-badge{background:#edf3f5;border:1px solid #d5e0e4;border-radius:999px;color:#36515a;display:inline-block;font-weight:900;min-width:78px;padding:5px 9px;text-align:center}.place-badge.top-1{background:linear-gradient(135deg,#ffe27a,#f5b700);border-color:#d19a00;color:#4f3300;box-shadow:0 2px 8px #d19a0038}.place-badge.top-2{background:linear-gradient(135deg,#f4f7f9,#b8c4cc);border-color:#8fa0aa;color:#2f414b;box-shadow:0 2px 8px #5d6e782e}.place-badge.top-3{background:linear-gradient(135deg,#ffc28a,#c86f2f);border-color:#a9561d;color:#47210b;box-shadow:0 2px 8px #a8561d33}.ranking-total-chip{background:#edf7f4;border-radius:999px;color:#0f5d57;display:inline-block;font-weight:900;min-width:72px;padding:5px 9px;text-align:center}.ranking-total-chip.zero{background:#f3f6f7;color:#60747c}.ranking-dialog-backdrop{align-items:center;background:#081f2752;display:flex;inset:0;justify-content:center;padding:24px;position:fixed;z-index:50}.ranking-dialog{background:#fff;border:1px solid #d7e1e5;border-radius:12px;box-shadow:0 24px 80px #081f2747;display:grid;gap:16px;max-width:620px;overflow:hidden;padding:18px;width:min(620px,100%)}.ranking-detail-summary{align-items:center;display:flex;gap:12px;justify-content:space-between}.ranking-detail-summary span,.ranking-detail-summary strong{background:#edf7f4;border-radius:999px;color:#0f5d57;font-weight:900;padding:7px 12px}.ranking-detail-list{display:grid;gap:8px}.ranking-detail-list div{align-items:center;border:1px solid #d7e1e5;border-radius:8px;display:flex;justify-content:space-between;padding:10px 12px}.certificate-table{display:grid;gap:1px;overflow-x:auto}.certificate-row{display:grid;gap:12px;grid-template-columns:80px 1.2fr .7fr .8fr .7fr 180px;min-width:960px;padding:10px 12px}.certificate-row span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.certificate-header{background:#f3f6f7;color:#60747c;font-size:13px;font-weight:800}.audit-table{display:grid;gap:1px;overflow-x:auto}.audit-row{display:grid;gap:12px;grid-template-columns:170px 1.2fr 1.1fr 1.2fr 2fr;min-width:980px;padding:10px 12px}.audit-row span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audit-header{background:#f3f6f7;color:#60747c;font-size:13px;font-weight:800}.login-current{align-items:end;display:grid;gap:12px;grid-template-columns:minmax(0,1fr) minmax(0,1fr) 140px}.login-current{grid-template-columns:repeat(3,minmax(0,1fr)) 140px}.login-current span{color:#60747c;display:block;font-size:13px;font-weight:700;margin-bottom:6px}.import-actions{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:12px}.import-actions input[type=file]{max-width:360px}.import-summary{display:grid;gap:12px;grid-template-columns:repeat(4,minmax(0,1fr));margin:14px 0}.import-summary div{background:#f3f6f7;border-radius:6px;padding:12px}.import-summary span{color:#60747c;display:block;font-size:13px;font-weight:700;margin-bottom:6px}.preview-table{display:grid;gap:1px;margin-top:12px;overflow-x:auto}.preview-row{display:grid;gap:12px;grid-template-columns:70px 1fr 1fr .8fr 1fr .7fr;min-width:760px;padding:10px 12px}.preview-row span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preview-header{background:#f3f6f7;color:#60747c;font-size:13px;font-weight:800}.import-errors{background:#fff4f3;border:1px solid #e9b7b2;border-radius:6px;margin-top:12px;padding:12px}.status-table,.assignment-table{display:grid;gap:1px;overflow-x:auto}.assignment-row{align-items:center;display:grid;gap:12px;grid-template-columns:.6fr 1fr 1fr 1.2fr 120px;min-width:780px;padding:10px 12px}.assignment-row span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.assignment-header{background:#f3f6f7;color:#60747c;font-size:13px;font-weight:800}.assignment-row button{width:100%}.recorder-row{align-items:center;display:grid;gap:12px;grid-template-columns:minmax(140px,1fr) minmax(180px,1.1fr) minmax(120px,.8fr) 80px minmax(140px,.9fr) minmax(190px,1fr);min-width:960px;padding:10px 12px}.recorder-row span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recorder-row .recorder-actions{display:flex;flex-direction:column;gap:6px;overflow:visible;white-space:normal}.recorder-actions button{line-height:1.2;min-height:36px;white-space:normal;width:100%}.status-row{display:grid;gap:12px;grid-template-columns:.7fr 1.4fr 1fr 1.2fr 140px;min-width:760px;padding:10px 12px}.status-row.no-actions{grid-template-columns:.7fr 1.4fr 1fr 1.2fr;min-width:620px}.status-row span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status-header{background:#f3f6f7;color:#60747c;font-size:13px;font-weight:800}.class-meta{display:grid;gap:14px;grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:24px}.class-meta div{background:#f3f6f7;border-radius:6px;padding:12px}.class-meta span,label span{color:#60747c;display:block;font-size:13px;font-weight:700;margin-bottom:6px}.class-meta strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.discipline-capture{display:grid;gap:16px}.discipline-tabs{display:flex;flex-wrap:wrap;gap:8px}.discipline-tabs button{min-width:116px}.discipline-table-wrap{background:#fff;border:1px solid #d8e4e8;border-radius:8px;overflow-x:auto}.discipline-table{border-collapse:collapse;min-width:760px;width:100%}.discipline-table th,.discipline-table td{border-bottom:1px solid #e7eef1;padding:10px;text-align:left;vertical-align:middle}.discipline-table th{background:#f4f8fa;color:#324d57;font-size:13px}.discipline-table tr:last-child td{border-bottom:0}.best-cell{font-weight:800;white-space:nowrap}.capture-direct-input,.capture-input-cell input[type=text],.capture-input-cell input:not([type]){background:#edf5f7;border:1px solid #c8d8dd;border-radius:6px;color:#12313b;font:inherit;font-weight:800;min-height:46px;min-width:86px;padding:8px 10px;transition:background-color .1s ease,border-color .1s ease,box-shadow .1s ease;width:100%}.capture-direct-input:focus,.capture-input-cell input:focus{background:#f7fcfd;border:3px solid var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-glow),0 0 18px #0e4b5a3d;outline:none}.capture-input-cell{display:grid;gap:6px;min-width:98px}.capture-input-cell.invalid-value input[type=text],.capture-input-cell.invalid-value input:not([type]){background:#fde7e4;border-color:#e4a7a0;color:#7c2821}.attempt-invalid-toggle{align-items:center;color:#60747c;display:flex;flex-direction:row;font-size:12px;font-weight:700;gap:5px;margin:0;white-space:nowrap}.attempt-invalid-toggle input{min-height:auto;width:auto}@media(max-width:900px){.class-meta,.dashboard-summary,.form-grid,.import-summary,.release-summary{grid-template-columns:1fr 1fr}.dashboard-hero,.dashboard-main-grid,.dashboard-leitstand-grid{grid-template-columns:1fr}.dashboard-status-cards,.preparation-grid,.preparation-steps,.preparation-step-nav{grid-template-columns:1fr 1fr}.preparation-actions,.assignment-card{grid-template-columns:1fr}.login-features{grid-template-columns:1fr;width:min(100%,560px)}}@media(max-width:640px){.shell{padding:16px}.header{align-items:flex-start;flex-direction:column}.login-brand h1{font-size:38px}.login-brand p{font-size:17px}.login-card{padding:28px 22px}.recorder-home{align-items:flex-start;flex-direction:column}.class-meta,.dashboard-summary,.form-grid,.import-summary{grid-template-columns:1fr}.action-list li,.release-summary{align-items:stretch;flex-direction:column;grid-template-columns:1fr}.dashboard-hero-numbers,.dashboard-status-cards{grid-template-columns:1fr}.preparation-header,.teacher-list>div,.assigned-list div{align-items:stretch;flex-direction:column}.preparation-steps,.preparation-step-nav{grid-template-columns:1fr}.discipline-table{min-width:680px}}
