:root{--color-background:#f6f7f9;--color-surface:#fff;--color-text:#0f172a;--color-text-muted:#64748b;--color-primary:#2563eb;--color-primary-hover:#1d4ed8;--color-primary-subtle:#2563eb14;--color-border:#e2e8f0;--color-border-strong:#cbd5e1;--color-primary-disabled:#e2e8f0;--color-success:#16a34a;--color-danger:#dc2626;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:24px;--shadow-sm:0 1px 3px #0f172a0f;--shadow-md:0 4px 16px #0f172a14;--shadow-lg:0 8px 32px #0f172a1a;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:64px;--font-sans:"Arial", Arial, sans-serif;--font-mono:ui-monospace, "Fira Code", monospace}@media (prefers-color-scheme:dark){:root{--color-background:#0c0f17;--color-surface:#131929;--color-text:#f1f5f9;--color-text-muted:#94a3b8;--color-border:#1e2a3a;--color-border-strong:#2d3f57;--shadow-sm:0 1px 3px #0000004d;--shadow-md:0 4px 16px #0006;--shadow-lg:0 8px 32px #00000080}}
.page{min-height:100vh;padding:var(--space-6);flex-direction:column;justify-content:center;align-items:center;display:flex}.container{width:100%;max-width:960px}.surface{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);border:1px solid var(--color-border)}.surface-flat{background:var(--color-surface);border-radius:var(--radius-lg);border:1px solid var(--color-border)}.hero{gap:var(--space-6);padding:var(--space-7);flex-direction:column;display:flex}.stack{gap:var(--space-4);flex-direction:column;display:flex}.actions{gap:var(--space-3);align-items:center;display:flex}.stack-sm{gap:var(--space-2);flex-direction:column;display:flex}.section{padding:var(--space-6)}.dashboard-header{justify-content:space-between;align-items:center;gap:var(--space-4);display:flex}.section-header{margin-bottom:var(--space-5)}
.heading-xl{letter-spacing:-.02em;margin:0;font-size:2.5rem;font-weight:800;line-height:1.1}.heading-md{letter-spacing:-.01em;margin:0;font-size:1.25rem;font-weight:700}.heading-sm{margin:0;font-size:1rem;font-weight:600}.text-lg{font-size:1.05rem;line-height:1.7}.text-muted{color:var(--color-text-muted)}.text-link{color:var(--color-primary);font-size:.9rem;font-weight:500;transition:opacity 80ms}.text-link:hover{opacity:.75}
.button{border-radius:var(--radius-sm);font-size:.95rem;font-weight:600;font-family:var(--font-sans);cursor:pointer;border:none;justify-content:center;align-items:center;padding:10px 16px;text-decoration:none;transition:background-color .12s,transform .12s;display:inline-flex}.button:hover{transform:translateY(-1px)}.button:active{transform:translateY(0)}.button-primary{background:var(--color-primary);color:#fff;box-shadow:0 1px 2px #2563eb40}.button-primary:hover{background:var(--color-primary-hover);box-shadow:0 2px 6px #2563eb59}.button:disabled{background:var(--color-primary-disabled);color:#fff;cursor:not-allowed;-webkit-user-select:none;user-select:none}.button-secondary{color:var(--color-text);border:1px solid var(--color-border);background:0 0}.button-secondary:hover{background:var(--color-border)}.button-secondary:disabled{color:var(--color-text-muted);border-color:var(--color-border);background:0 0}.button-danger{background:var(--color-danger);color:#fff}.button-danger:hover{background:#b91c1c}.button-danger:disabled{background:var(--color-primary-disabled);color:#fff}
.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}.card-body{padding:var(--space-6)}.card-header{margin-bottom:var(--space-5);justify-content:space-between;align-items:center;display:flex}.selection-list{gap:var(--space-3);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.selection-card{padding:var(--space-4);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface);justify-content:space-between;align-items:center;transition:border-color .12s,transform .12s,box-shadow .12s;display:flex}.selection-card:hover{border-color:var(--color-primary);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.selection-title{font-weight:600}.empty-state{padding:var(--space-5);border-radius:var(--radius-md);border:1px dashed var(--color-border);color:var(--color-text-muted)}.badge{letter-spacing:.03em;text-transform:uppercase;white-space:nowrap;border-radius:9999px;align-items:center;padding:3px 10px;font-size:.72rem;font-weight:700;display:inline-flex}.badge-open{color:#15803d;background:#dcfce7}.badge-closed{color:#475569;background:#f1f5f9}.badge-draft{color:#a16207;background:#fef9c3}.badge-evaluated{color:#1d4ed8;background:#dbeafe}.selection-page-title{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.detail-grid{gap:var(--space-5);grid-template-columns:repeat(2,1fr);display:grid}@media (max-width:600px){.detail-grid{grid-template-columns:1fr}}.detail-item{gap:var(--space-1);flex-direction:column;display:flex}.detail-label{text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);font-size:.75rem;font-weight:700}.detail-value{font-size:.95rem}.participant-grid{gap:var(--space-2);flex-wrap:wrap;display:flex}.selection-card-content{justify-content:space-between;align-items:center;gap:var(--space-4);width:100%;display:flex}.selection-card-main{flex-direction:column;gap:3px;min-width:0;display:flex}.selection-card-meta{color:var(--color-text-muted);font-size:.82rem;font-weight:400}.selection-card-static{cursor:default}.selection-card-static:hover{border-color:var(--color-border);box-shadow:none;transform:none}.option-score-list{gap:var(--space-2);margin-top:var(--space-2);flex-direction:column;display:flex}.option-score-row{align-items:center;gap:var(--space-3);grid-template-columns:minmax(120px,1fr) 3fr auto;font-size:.85rem;display:grid}.option-score-name{white-space:nowrap;text-overflow:ellipsis;font-weight:500;overflow:hidden}.option-score-bar-track{background:var(--color-border);border-radius:9999px;height:8px;overflow:hidden}.option-score-bar-fill{background:var(--color-primary);opacity:.7;border-radius:9999px;height:100%;transition:width .4s}.option-score-value{font-variant-numeric:tabular-nums;color:var(--color-text-muted);text-align:right;min-width:28px;font-weight:600}.assignment-table{border:1px solid var(--color-border);border-radius:var(--radius-sm);flex-direction:column;display:flex;overflow:hidden}.assignment-table-header{gap:var(--space-4);padding:var(--space-2) var(--space-4);background:var(--color-background);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);grid-template-columns:1fr 1fr;font-size:.75rem;font-weight:700;display:grid}.assignment-row{gap:var(--space-4);padding:var(--space-3) var(--space-4);border-top:1px solid var(--color-border);background:var(--color-surface);grid-template-columns:1fr 1fr;align-items:center;display:grid}.assignment-row-readonly{align-items:start}.assignment-row-student{flex-direction:column;gap:2px;display:flex}.assignment-student-name{font-size:.9rem;font-weight:500}.assignment-student-meta{color:var(--color-text-muted);font-size:.78rem}.assignment-select{padding:8px 10px;font-size:.9rem}.assignment-row-result{flex-direction:column;gap:2px;display:flex}.assignment-option-name{font-size:.9rem;font-weight:500}.assignment-result-card{gap:var(--space-1);padding:var(--space-4);border:2px solid var(--color-primary);border-radius:var(--radius-sm);background:#2563eb0a;flex-direction:column;display:flex}.assignment-result-name{color:var(--color-primary);font-size:1.1rem;font-weight:700}.assignment-result-meta{color:var(--color-text-muted);font-size:.85rem}.vote-progress-summary{justify-content:space-between;align-items:baseline;gap:var(--space-4);flex-wrap:wrap;display:flex}.vote-progress-count{font-size:1.05rem;font-weight:700}.vote-progress-deadline{color:var(--color-text-muted);font-size:.85rem}.vote-progress-bar-track{background:var(--color-border);border-radius:9999px;height:8px;overflow:hidden}.vote-progress-bar-fill{background:var(--color-primary);border-radius:9999px;height:100%;transition:width .4s}.course-card-header{justify-content:space-between;align-items:flex-start;gap:var(--space-4);display:flex}.participant-status-list{gap:var(--space-2);flex-direction:column;display:flex}.participant-status-item{padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);background:var(--color-background);justify-content:space-between;align-items:center;font-size:.9rem;display:flex}
.form{gap:var(--space-5);flex-direction:column;display:flex}.form-field{gap:var(--space-2);flex-direction:column;display:flex}.form-label{font-size:.95rem;font-weight:600}.form-error{color:#dc2626;margin:0;font-size:.9rem}.form-success{color:#16a34a;margin:0;font-size:.9rem}.input{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);width:100%;color:var(--color-text);padding:12px 14px;font-size:1rem;transition:border-color .12s,box-shadow .12s}.input:focus{border-color:var(--color-primary);outline:none;box-shadow:0 0 0 3px #2563eb26}.input::placeholder{color:var(--color-text-muted)}.textarea{resize:vertical;min-height:80px;line-height:1.5}.form-section{gap:var(--space-4);flex-direction:column;display:flex}.form-section-title{padding-bottom:var(--space-3);border-bottom:1px solid var(--color-border);margin:0;font-size:1rem;font-weight:700}.date-range{gap:var(--space-4);grid-template-columns:1fr 1fr;display:grid}@media (max-width:600px){.date-range{grid-template-columns:1fr}}.search-container{gap:var(--space-2);flex-direction:column;display:flex}.search-input-wrap{position:relative}.search-hint{color:var(--color-text-muted);margin:0;font-size:.875rem}.search-results{z-index:50;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);max-height:280px;box-shadow:var(--shadow-md);margin:0;padding:0;list-style:none;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto}.combobox-container{position:relative}.combobox-dropdown{top:calc(100% + var(--space-1));z-index:50;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);max-height:200px;box-shadow:var(--shadow-md);margin:0;padding:0;list-style:none;position:absolute;left:0;right:0;overflow-y:auto}.search-result-item{justify-content:space-between;align-items:center;gap:var(--space-3);width:100%;padding:var(--space-3) var(--space-4);text-align:left;cursor:pointer;font-size:.9rem;font-family:var(--font-sans);background:0 0;border:none;transition:background-color 80ms;display:flex}.search-result-item+.search-result-item{border-top:1px solid var(--color-border)}.search-result-item:hover:not(:disabled){background:var(--color-background)}.search-result-item:disabled{opacity:.4;cursor:default}.search-result-tag{background:#2563eb0a}.search-result-label{color:var(--color-text);font-weight:500}.search-result-meta{color:var(--color-text-muted);white-space:nowrap;font-size:.8rem}.chip-list{gap:var(--space-2);flex-wrap:wrap;display:flex}.chip{align-items:center;gap:var(--space-1);color:var(--color-primary);background:#2563eb1a;border-radius:9999px;padding:4px 10px;font-size:.85rem;font-weight:500;display:inline-flex}.chip-remove{cursor:pointer;color:inherit;opacity:.6;background:0 0;border:none;justify-content:center;align-items:center;margin-left:2px;padding:0;font-size:1rem;line-height:1;display:inline-flex}.chip-remove:hover{opacity:1}.option-manager{gap:var(--space-3);flex-direction:column;display:flex}.option-list{gap:var(--space-2);flex-direction:column;display:flex}.option-card{border:1px solid var(--color-border);border-radius:var(--radius-sm);overflow:hidden}.option-card-header{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--color-surface);display:flex}.option-card-info{flex-direction:column;gap:2px;min-width:0;display:flex}.option-card-name{font-size:.95rem;font-weight:600}.option-card-meta{color:var(--color-text-muted);font-size:.8rem}.option-card-actions{align-items:center;gap:var(--space-2);flex-shrink:0;display:flex}.option-card-edit{cursor:pointer;font-size:.85rem;font-family:var(--font-sans);color:var(--color-primary);border-radius:var(--radius-sm);background:0 0;border:none;padding:4px 8px}.option-card-edit:hover{background:#2563eb14}.option-card-remove{cursor:pointer;color:var(--color-text-muted);border-radius:var(--radius-sm);background:0 0;border:none;padding:2px 6px;font-size:1.2rem;line-height:1}.option-card-remove:hover{color:#dc2626;background:#dc262614}.option-card-body{padding:var(--space-4);border-top:1px solid var(--color-border);background:var(--color-background);gap:var(--space-4);flex-direction:column;display:flex}.option-add-button{width:100%;padding:var(--space-3) var(--space-4);border:1px dashed var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-muted);font-size:.9rem;font-family:var(--font-sans);cursor:pointer;text-align:left;background:0 0;align-items:center;transition:all .12s;display:flex}.option-add-button:hover{border-color:var(--color-primary);color:var(--color-primary);background:#2563eb0a}.option-new-form{border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-4);gap:var(--space-4);background:var(--color-background);flex-direction:column;display:flex}.form-hint{color:var(--color-text-muted);margin:0;font-size:.8rem;font-style:italic}.vote-options{gap:var(--space-3);flex-direction:column;display:flex}.vote-option-card{border:1px solid var(--color-border);border-radius:var(--radius-sm);transition:border-color .12s;overflow:hidden}.vote-option-card:focus-within{border-color:var(--color-primary)}.vote-option-header{justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-4);background:var(--color-surface);display:flex}.vote-option-info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.vote-option-right{align-items:center;gap:var(--space-3);flex-shrink:0;display:flex}.vote-score{flex-direction:column;align-items:center;gap:2px;display:flex}.vote-score-label{text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);font-size:.65rem;font-weight:700}.vote-score-input{text-align:center;border:2px solid var(--color-border);border-radius:var(--radius-sm);width:58px;font-size:1.1rem;font-weight:700;font-family:var(--font-sans);background:var(--color-surface);color:var(--color-text);padding:6px 4px;transition:border-color .12s}.vote-score-input:focus{border-color:var(--color-primary);outline:none}
.dev-switcher{top:var(--space-4);right:var(--space-4);z-index:1000;align-items:center;gap:var(--space-2);background:var(--color-surface);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);box-shadow:var(--shadow-md);border:1px solid #f59e0b;display:flex;position:fixed}.dev-switcher-label{color:#f59e0b;letter-spacing:.08em;flex-shrink:0;font-size:.7rem;font-weight:700}.dev-switcher-select{font-size:.875rem;font-family:var(--font-sans);color:var(--color-text);cursor:pointer;background:0 0;border:none;outline:none;min-width:180px}.dev-switcher-select:disabled{opacity:.5;cursor:not-allowed}
.top-nav{z-index:100;justify-content:space-between;align-items:center;gap:var(--space-4);padding:0 var(--space-6);background:var(--color-surface);border-bottom:1px solid var(--color-border);height:52px;box-shadow:var(--shadow-sm);display:flex;position:sticky;top:0}.top-nav-brand{color:var(--color-primary);font-size:1rem;font-weight:700}.top-nav-user{align-items:center;gap:var(--space-3);display:flex}.top-nav-name{font-size:.9rem;font-weight:500}.top-nav-role{color:var(--color-text-muted);background:var(--color-background);border:1px solid var(--color-border);border-radius:9999px;padding:2px 8px;font-size:.78rem}.top-nav-logout{color:var(--color-text-muted);border-radius:var(--radius-sm);padding:4px 10px;font-size:.85rem;font-weight:500;transition:color 80ms,background 80ms}.top-nav-logout:hover{color:var(--color-text);background:var(--color-background)}.page-centered{justify-content:center;align-items:center}.login-card{align-items:center;gap:var(--space-5);width:100%;max-width:420px;padding:var(--space-7);text-align:center;flex-direction:column;display:flex}.login-logo{opacity:.9}.login-heading{align-items:center}.login-actions{align-items:center;gap:var(--space-3);flex-direction:column;width:100%;display:flex}.login-dev-hint{font-size:.85rem;font-style:italic}
.dashboard-greeting{justify-content:space-between;align-items:flex-end;gap:var(--space-4);padding:var(--space-6) 0 var(--space-2);flex-wrap:wrap;display:flex}.greeting-eyebrow{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.08em;margin:0;font-size:.85rem;font-weight:500}.greeting-name{letter-spacing:-.02em;font-size:2.8rem;line-height:1}.instructions-link{align-items:center;gap:var(--space-2);color:var(--color-primary);background:var(--color-primary-subtle);white-space:nowrap;border-radius:9999px;padding:6px 14px;font-size:.875rem;font-weight:500;transition:background .12s,gap .12s;display:inline-flex}.instructions-link:hover{background:#2563eb24}.instructions-link-arrow{transition:transform .12s}.instructions-link:hover .instructions-link-arrow{transform:translate(3px)}.page-instructions{padding-top:var(--space-7);padding-bottom:var(--space-7);justify-content:flex-start;align-items:center}.instructions-nav{justify-content:space-between;align-items:center;gap:var(--space-4);display:flex}.lang-toggle{align-items:center;gap:var(--space-1);color:var(--color-text-muted);border:1px solid var(--color-border);border-radius:9999px;padding:4px 12px;font-size:.85rem;font-weight:600;transition:color .12s,border-color .12s;display:inline-flex}.lang-toggle:hover{color:var(--color-text);border-color:var(--color-border-strong)}.instructions-header{gap:var(--space-3);padding:var(--space-5) 0;border-bottom:1px solid var(--color-border);flex-direction:column;display:flex}.instructions-role-badge{text-transform:uppercase;letter-spacing:.08em;color:var(--color-primary);background:var(--color-primary-subtle);border-radius:9999px;align-items:center;width:fit-content;padding:3px 10px;font-size:.78rem;font-weight:700;display:inline-flex}.instructions-intro{max-width:680px;font-size:1.05rem;line-height:1.6}.instructions-steps{gap:var(--space-1);flex-direction:column;display:flex}.instruction-step{gap:var(--space-5);padding:var(--space-5) 0;border-bottom:1px solid var(--color-border);align-items:flex-start;display:flex}.instruction-step:last-child{border-bottom:none}.instruction-step-number{background:var(--color-primary);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;margin-top:2px;font-size:.9rem;font-weight:700;display:flex}.instruction-step-body{gap:var(--space-2);flex-direction:column;flex:1;display:flex}.instruction-step-title{margin:0;font-size:1.05rem;font-weight:700}.instruction-step-text{color:var(--color-text-muted);margin:0;font-size:.95rem;line-height:1.65}.instruction-tip{padding:var(--space-4) var(--space-5);border-radius:var(--radius-md);background:var(--color-primary-subtle);border-left:3px solid var(--color-primary);color:var(--color-text);font-size:.9rem;line-height:1.6}.instruction-tip strong{color:var(--color-primary)}
.history-modal-overlay{z-index:1000;background:#00000073;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.history-modal{background:var(--color-surface);border-radius:var(--radius-lg);border:1px solid var(--color-border);box-shadow:var(--shadow-lg);flex-direction:column;width:min(480px,90vw);max-height:80vh;display:flex;overflow:hidden}.history-modal-header{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;display:flex}.history-modal-title{margin:0;font-size:1rem;font-weight:700}.history-modal-close{cursor:pointer;color:var(--color-text-muted);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);background:0 0;border:none;font-family:inherit;font-size:1rem;line-height:1}.history-modal-close:hover{background:var(--color-background);color:var(--color-text)}.history-modal-body{padding:var(--space-4) var(--space-5);gap:var(--space-3);flex-direction:column;display:flex;overflow-y:auto}.history-modal-empty{color:var(--color-text-muted);text-align:center;padding:var(--space-4) 0;margin:0;font-size:.9rem}.history-modal-item{padding:var(--space-3);border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-background);flex-direction:column;gap:3px;display:flex}.history-item-option{font-size:.9rem;font-weight:600}.history-item-meta{color:var(--color-text-muted);font-size:.82rem}.history-item-period{color:var(--color-text-muted);font-size:.8rem}.history-item-teacher{color:var(--color-text-muted);font-size:.82rem}.history-btn{cursor:pointer;color:var(--color-primary);border-radius:var(--radius-sm);letter-spacing:.02em;white-space:nowrap;text-transform:uppercase;background:0 0;border:1px solid #0000;padding:2px 7px;font-family:inherit;font-size:.72rem;font-weight:700;line-height:1.4}.history-btn:hover{background:var(--color-primary-subtle);border-color:var(--color-primary)}.participant-status-name-group,.assignment-student-name-row{align-items:center;gap:var(--space-2);display:flex}.assignment-table-header-btn{cursor:pointer;font:inherit;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);background:0 0;border:none;align-items:center;gap:4px;padding:0;font-size:.75rem;font-weight:700;display:inline-flex}.assignment-table-header-btn:hover{color:var(--color-text)}
*,:before,:after{box-sizing:border-box;font-family:inherit}html{font-family:var(--font-sans)}html,body{min-height:100%;margin:0}body{background:var(--color-background);color:var(--color-text);font-family:var(--font-sans)}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}
