:root{--paper:#f4f1e8;--panel:#fffefa;--ink:#22241f;--muted:#6c6656;--line:#d9d2bc;--navy:#2b3a55;--navy-ink:#1e2a3f;--brick:#8c3b2e;--moss:#3f6e56;--amber:#a9782b}*{box-sizing:border-box}.app-root{color:var(--ink);background:var(--paper);min-height:100vh;font-family:Iowan Old Style,Palatino Linotype,Georgia,Times New Roman,serif}.app-root,.app-root input,.app-root select,.app-root button,.app-root a{font-size:14px}h1,h2,h3,h4{margin:0;font-family:Iowan Old Style,Palatino Linotype,Georgia,serif;font-weight:600}p{margin:4px 0}.muted{color:var(--muted)}.small{font-size:12.5px}.tiny{font-size:11.5px}.login-wrap{background:radial-gradient(circle at 20% 10%, #2b3a550f, transparent 40%), var(--paper);justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.login-card{background:var(--panel);border:1px solid var(--line);text-align:center;border-radius:4px;width:380px;padding:32px 28px;box-shadow:0 1px #00000008}.login-mark{background:var(--navy);color:#f4f1e8;border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;margin:0 auto 14px;display:flex}.login-card h1{letter-spacing:.01em;font-size:26px}.login-form{flex-direction:column;gap:10px;margin-top:22px;display:flex}.login-form .field{margin-bottom:0}.login-form .error-box{margin-top:0}.email-container{gap:10px;display:flex}input[type=email]:read-only{background:var(--paper);cursor:default}.edit-email{border:1px solid var(--line);background:var(--paper);cursor:pointer;border-radius:3px}.edit-email:disabled{cursor:default}.auth-btn{border:1px solid var(--line);background:var(--paper);cursor:pointer;color:var(--ink);border-radius:3px;justify-content:center;align-items:center;margin-top:10px;padding:13px 16px;font-family:inherit;font-size:14.5px;transition:border-color .15s;display:flex}.auth-btn:hover{border-color:var(--navy)}.topbar{background:var(--navy);color:#f4f1e8;border-bottom:3px solid var(--amber);justify-content:space-between;align-items:center;padding:10px 20px;display:flex}.topbar-left{align-items:center;gap:18px;display:flex}.brand{letter-spacing:.02em;align-items:center;gap:8px;font-size:17px;display:flex}.today{color:#c9d2e0;font-family:ui-sans-serif,system-ui,sans-serif;font-size:12px}.topbar-right{align-items:center;gap:14px;display:flex}.who{text-align:right;flex-direction:column;line-height:1.25;display:flex}.who-name{font-size:13px}.who-role{color:#c9d2e0;font-family:ui-sans-serif,system-ui,sans-serif;font-size:11px}.icon-btn{color:inherit;cursor:pointer;background:0 0;border:none;border-radius:3px;padding:6px;display:inline-flex;position:relative}.icon-btn:hover{background:#ffffff1a}.icon-btn.danger{color:var(--brick)}.icon-btn.danger:hover{background:#8c3b2e14}.dot{background:var(--brick);color:#fff;border-radius:50%;justify-content:center;align-items:center;min-width:15px;height:15px;font-family:ui-sans-serif,sans-serif;font-size:10px;display:flex;position:absolute;top:-2px;right:-2px}.message-panel{background:var(--panel);border:1px solid var(--line);z-index:40;border-radius:4px;width:500px;max-height:70vh;position:absolute;top:58px;right:20px;overflow:auto;box-shadow:0 8px 24px #0000001f}.message-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:10px 12px;font-size:13px;display:flex}.message-head span{align-items:center;gap:6px;display:flex}.message-item{border-bottom:1px solid var(--line);padding:8px 12px}.message-item summary{cursor:pointer;justify-content:space-between;font-size:12.5px;list-style:none;display:flex}.message-item summary::-webkit-details-marker{display:none}.message-subject{font-weight:600}.message-date{color:var(--muted);font-family:ui-sans-serif,sans-serif;font-size:11px}.message-item pre{white-space:pre-wrap;color:#3a3a30;margin-top:6px;font-family:ui-sans-serif,system-ui,sans-serif;font-size:12px}.workspace{align-items:stretch;gap:0;margin:0 auto;display:flex}.workspace.single{flex-direction:column;gap:20px;padding:20px}.sidebar{border-right:1px solid var(--line);flex-shrink:0;width:240px;min-height:calc(100vh - 54px);padding:20px 14px}.sidebar-list{flex-direction:column;gap:6px;margin-top:16px;display:flex}.sidebar-item{text-align:left;cursor:pointer;color:var(--ink);background:0 0;border:1px solid #0000;border-radius:3px;padding:8px 10px;font-family:inherit}.sidebar-item:hover{background:#2b3a550f}.sidebar-item.active{background:var(--panel);border-color:var(--line);box-shadow:inset 3px 0 0 var(--navy)}.si-top{align-items:center;gap:6px;font-size:13.5px;display:flex}.si-sub{color:var(--muted);margin-top:2px;font-family:ui-sans-serif,sans-serif;font-size:11px}.tag{background:var(--amber);color:#fff;border-radius:8px;padding:1px 5px;font-family:ui-sans-serif,sans-serif;font-size:9.5px}.content{flex:1;min-width:0;padding:24px 28px}.content-head{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:18px;padding-bottom:12px;display:flex}.content-head-student{margin-bottom:18px}.tabs{gap:4px;display:flex}.tab{border:1px solid var(--line);background:var(--panel);cursor:pointer;color:var(--muted);border-radius:3px 3px 0 0;padding:7px 12px;font-family:ui-sans-serif,system-ui,sans-serif;font-size:12.5px}.tab.active{color:var(--ink);background:var(--paper);border-bottom-color:var(--paper);font-weight:600}.empty-state{text-align:center;color:var(--muted);padding:60px 20px}.empty-state h3{color:var(--ink);margin-top:10px}.panel-grid{grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px;display:grid}.card{background:var(--panel);border:1px solid var(--line);border-radius:4px;padding:16px 18px}.card h4{align-items:center;gap:7px;margin-bottom:10px;font-size:14px;display:flex}.cards{flex-direction:column;gap:18px;display:flex}.subgroup-members{margin-top:20px;display:flex}.subgroup-members .card{background-color:var(--paper)}.subgroup-members .data-table{width:unset}.materials-card{align-self:flex-start;width:fit-content;max-width:100%;overflow-x:auto}.materials-card .data-table{width:auto}table.data-table,table.mini-table{border-collapse:collapse;width:100%;font-family:ui-sans-serif,system-ui,sans-serif;font-size:12.5px}.data-table th,.mini-table th{text-align:left;color:var(--muted);border-bottom:1px solid var(--line);text-transform:none;padding:6px 8px;font-size:11px;font-weight:600}.data-table td,.mini-table td{vertical-align:middle;border-bottom:1px solid #eae4d2;padding:7px 8px}.data-table tr.on-review{background-color:#3b82f614}.num-cell{font-variant-numeric:tabular-nums;color:var(--amber);width:30px;font-weight:600}.data-table tr:last-child td,.mini-table tr:last-child td{border-bottom:none}.badge{border-radius:10px;padding:2px 8px;font-family:ui-sans-serif,sans-serif;font-size:10.5px;display:inline-block}.badge-open{color:var(--moss);background:#3f6e5624}.badge-closed{color:var(--brick);background:#8c3b2e1f}.badge-upcoming,.badge-waiting{color:var(--amber);background:#a9782b24}.badge-draft{color:var(--muted);background:#eee}.badge-rework{color:var(--navy-ink);background:#2b3a551f}.btn{border:1px solid var(--line);background:var(--panel);cursor:pointer;color:var(--ink);border-radius:3px;align-items:center;gap:6px;padding:8px 14px;font-family:ui-sans-serif,system-ui,sans-serif;font-size:13px;display:inline-flex}.btn.primary{background:var(--navy);color:#fff;border-color:var(--navy)}.btn.primary:hover{background:var(--navy-ink)}.btn.ghost{background:0 0}.btn.small{padding:5px 10px;font-size:12px}.btn.tiny{padding:3px 8px;font-size:11px}.btn.block{justify-content:center;width:100%}.btn:disabled{opacity:.45;cursor:not-allowed}.link{color:var(--navy);cursor:pointer;background:0 0;border:none;align-items:center;gap:4px;padding:0;font-family:ui-sans-serif,sans-serif;font-size:12.5px;text-decoration:underline;display:inline-flex}.field{margin-bottom:14px;display:block}.field-label{color:var(--muted);align-items:center;gap:5px;margin-bottom:5px;font-family:ui-sans-serif,system-ui,sans-serif;font-size:12px;display:flex}.req{color:var(--brick)}.field-hint{color:var(--muted);margin-top:3px;font-family:ui-sans-serif,sans-serif;font-size:10.5px;display:block}select,input[type=text],input[type=email],input[type=password],input[type=number],input[type=date]{border:1px solid var(--line);width:100%;color:var(--ink);background:#fff;border-radius:3px;padding:8px 9px;font-family:ui-sans-serif,system-ui,sans-serif;font-size:13px}.grid-2{grid-template-columns:1fr 1fr;gap:16px;display:grid}.radio-row{grid-template-columns:1fr 1fr;gap:10px;display:grid}.radio-card{border:1px solid var(--line);cursor:pointer;border-radius:3px;flex-direction:column;gap:3px;padding:10px 12px;font-family:ui-sans-serif,sans-serif;display:flex}.radio-card input{display:none}.radio-card span{font-family:Iowan Old Style,Georgia,serif;font-size:14px}.radio-card em{color:var(--muted);font-size:11px;font-style:normal}.radio-card.active{border-color:var(--navy);background:#2b3a550d}.subpanel{border-left:2px solid var(--line);margin:4px 0 16px;padding-left:14px}.assign-list{flex-direction:column;gap:6px;max-height:180px;margin-top:10px;display:flex;overflow:auto}.assign-row{justify-content:space-between;align-items:center;gap:10px;font-family:ui-sans-serif,sans-serif;font-size:12.5px;display:flex}.assign-row select{width:150px;padding:4px 6px}.chip-row{flex-wrap:wrap;gap:6px;margin:8px 0;display:flex}.chip{border:1px solid var(--line);background:#efeada;border-radius:12px;align-items:center;gap:6px;padding:3px 10px;font-family:ui-sans-serif,sans-serif;font-size:12px;display:inline-flex}.chip button{cursor:pointer;color:var(--muted);background:0 0;border:none;display:flex}.inline-add{gap:8px;margin-top:8px;display:flex}.inline-add select{flex:1;width:auto}.upload-row{flex-wrap:wrap;align-items:center;gap:10px;margin-top:12px;display:flex}.submit-cell .locked{align-items:center;gap:4px;display:inline-flex}.error-box{color:var(--brick);background:#8c3b2e14;border:1px solid #8c3b2e4d;border-radius:3px;flex-direction:column;gap:4px;margin-top:12px;padding:8px 10px;font-family:ui-sans-serif,sans-serif;font-size:12px;display:flex}.error-box>div{align-items:center;gap:6px;display:flex}.warning-box{color:#76500f;background:#f5b7481f;border:1px solid #b26f1259;border-radius:6px;gap:8px;margin-top:14px;padding:12px;display:grid}.warning-box>div{align-items:flex-start;gap:7px;display:flex}.change-row{border-bottom:1px solid var(--border-color);padding:8px 0}.error-box.no-columns{flex-direction:row}.error-box-container{justify-content:flex-end;display:flex}.warning{color:var(--brick);font-family:ui-sans-serif,sans-serif;font-style:italic}.variants-row select{padding:4px 6px}.student{font-variant-numeric:tabular-nums;color:var(--amber);font-weight:600}fieldset{border:1px solid var(--line);border-radius:4px;margin-bottom:10px}.filters{gap:10px;display:flex}.review-status-containter{flex-wrap:wrap;align-items:center;gap:3px 10px;display:inline-flex}.review-status-containter .tag{white-space:nowrap;display:inline-block}.review-statuses-summary{gap:10px;margin-bottom:10px;display:flex}.review-statuses-summary .btn.active{border-color:var(--navy);background:#2b3a550d}.attachments{justify-content:space-between;margin-bottom:14px;display:flex}.attachment-container{align-items:center;gap:10px;display:flex}.attachment-container .icon-btn.danger{padding-right:0}.check-status{display:flex}.comment-input{resize:vertical;width:100%;display:block}.comment-column{align-items:center;gap:10px;font-size:11px;display:flex}.last-comment{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.comments-history-modal{width:720px}.comments-timeline{padding-left:28px;position:relative}.comments-timeline:before{content:"";background:var(--line);width:1px;position:absolute;top:8px;bottom:8px;left:7px}.comment-entry{padding-bottom:20px;position:relative}.comment-entry:last-child{padding-bottom:0}.comment-entry-marker{border:2px solid var(--navy);background:var(--paper);border-radius:50%;width:9px;height:9px;position:absolute;top:6px;left:-25px}.comment-entry-content{border-bottom:1px solid var(--line);padding-bottom:16px}.comment-entry:last-child .comment-entry-content{border-bottom:none;padding-bottom:0}.comment-entry-meta{justify-content:space-between;align-items:baseline;gap:12px;font-family:ui-sans-serif,system-ui,sans-serif;font-size:12px;display:flex}.comment-entry-meta time{color:var(--muted);white-space:nowrap}.comment-entry-status{color:var(--navy);margin-top:5px;font-family:ui-sans-serif,system-ui,sans-serif;font-size:12px;font-weight:600}.comment-entry-versions{color:var(--muted);margin-top:4px;font-family:ui-sans-serif,system-ui,sans-serif;font-size:11px}.comment-entry-text{white-space:pre-wrap;margin-top:8px;line-height:1.45}.version-history-modal{width:760px}.version-history-list{flex-direction:column;gap:12px;display:flex}.version-history-entry{border-bottom:1px solid var(--line);padding-bottom:12px}.version-history-entry:last-child{border-bottom:none;padding-bottom:0}.version-history-heading{justify-content:space-between;align-items:center;gap:12px;font-family:ui-sans-serif,system-ui,sans-serif;display:flex}.version-history-state{color:var(--moss);font-size:12px}.version-history-details{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 20px;margin:10px 0 0;font-family:ui-sans-serif,system-ui,sans-serif;font-size:12px;display:grid}.version-history-details>div{min-width:0}.version-history-details dt{color:var(--muted)}.version-history-details dd{overflow-wrap:anywhere;margin:2px 0 0}.version-after-deadline{color:var(--brick);margin-top:10px;font-family:ui-sans-serif,system-ui,sans-serif;font-size:12px;font-weight:600}.edit-group-header{margin-bottom:20px}.confirmation-text{white-space:pre-wrap}.modal-backdrop{z-index:60;background:#1e1c1473;justify-content:center;align-items:flex-start;padding:40px 16px;display:flex;position:fixed;inset:0;overflow:auto}.modal{background:var(--paper);border-radius:5px;width:640px;max-width:100%;box-shadow:0 20px 50px #00000040}.modal-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.modal-body{max-height:62vh;padding:20px;overflow:auto}.modal-foot{border-top:1px solid var(--line);justify-content:flex-end;gap:10px;padding:14px 20px;display:flex}@media (width<=820px){.workspace{flex-direction:column}.sidebar{border-right:none;border-bottom:1px solid var(--line);width:100%;min-height:auto}.panel-grid,.grid-2,.radio-row{grid-template-columns:1fr}.topbar-right .who{display:none}.comment-entry-meta{flex-direction:column;align-items:flex-start;gap:3px}.version-history-details{grid-template-columns:1fr}}
