*{box-sizing:border-box}body{color:#162238;background:#f4f6fa;margin:0;font-family:Arial,Helvetica,sans-serif;font-size:16px;line-height:1.5}button,input{font:inherit}main{max-width:1160px;margin:auto;padding:48px 32px}header{margin-bottom:36px}.eyebrow{letter-spacing:.12em;color:#385cca;font-size:13px;font-weight:700}.heading{justify-content:space-between;align-items:center;gap:24px;display:flex}h1{letter-spacing:-.04em;margin:8px 0;font-size:40px}header p{color:#536176;margin:0 0 24px}.counter{white-space:nowrap;font-size:28px;font-weight:700}.counter small{color:#536176;font-size:14px;font-weight:400}.rules{background:#e6ecff;border-left:3px solid #3459d6;flex-wrap:wrap;gap:12px 30px;padding:16px 20px;font-size:14px;display:flex}section{background:#fff;border:1px solid #dbe1eb;border-radius:10px;margin:28px 0;overflow:hidden}.unit{border-bottom:1px solid #dbe1eb;align-items:center;gap:14px;padding:18px 22px;display:flex}.unitnum{color:#385cca;font-size:14px;font-weight:700}h2{margin:0;font-size:19px}table{border-collapse:collapse;table-layout:fixed;width:100%}th{text-align:left;color:#536176;background:#f8f9fc;padding:12px 22px;font-size:14px;font-weight:500}th:first-child{width:60%}td{vertical-align:middle;border-top:1px solid #edf0f5;padding:17px 22px}td:first-child{align-items:baseline;gap:18px;display:flex}.topicnum{color:#8390a4;font-size:13px}.slot{color:#3459bf;cursor:pointer;background:#fff;border:1px dashed #b4c2dd;border-radius:6px;width:100%;padding:10px 5px;font-size:14px}.slot:hover{background:#eaf0ff;border-color:#3459bf}.reserved{background:#edf1f8;border-radius:6px;align-items:center;gap:10px;padding:9px 12px;display:flex}.reserved span{color:#617088;font-size:12px}.success,.error{border-radius:6px;margin:12px 0;padding:12px 16px}.success{color:#19563d;background:#e2f2e9}.error{color:#a22727;background:#ffebeb}footer{color:#69768a;margin:30px 0;font-size:14px}.overlay{background:#101b37a6;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.dialog{background:#fff;border-radius:12px;width:100%;max-width:480px;max-height:90vh;padding:30px;overflow:auto;box-shadow:0 24px 90px #0003}.dialog h2{margin:12px 0 24px;font-size:23px}.dialog label{font-size:14px;font-weight:700;display:block}.dialog input{border:1px solid #9eabc1;border-radius:6px;width:100%;margin-top:8px;padding:12px}.dialog p{color:#536176;font-size:14px}.actions{justify-content:flex-end;gap:10px;margin-top:24px;display:flex}.actions button{cursor:pointer;background:#fff;border:1px solid #dbe1eb;border-radius:6px;padding:11px 16px}.actions .confirm{color:#fff;background:#3459d6;border-color:#3459d6}button:disabled{opacity:.5;cursor:wait}:is(button:focus-visible,input:focus-visible){outline-offset:3px;outline:3px solid #7296ff}@media (max-width:650px){main{padding:24px 12px}h1{font-size:29px}.heading{flex-direction:column;align-items:flex-start;gap:4px}.counter{margin-bottom:12px;font-size:20px}.rules{flex-direction:column;gap:8px}th:first-child{width:50%}th,td{padding:12px 8px}th{font-size:13px}td:first-child{gap:7px;font-size:14px}.slot{font-size:13px}.reserved{flex-direction:column;gap:0;padding:8px 2px}.unit{padding:15px 12px}h2{font-size:17px}}.three-slots th:first-child{width:52%}.three-slots td{padding-left:16px;padding-right:16px}.three-slots .reserved{flex-wrap:wrap;gap:4px 8px}.no-slot{text-align:center;color:#8390a4;display:block}.remaining{background:#e6ecff;border-left:3px solid #3459d6;border-radius:6px;margin-top:28px;padding:20px 22px}.remaining h2{font-size:17px}.remaining p{color:#263c70;overflow-wrap:anywhere;margin:8px 0 0;font-weight:600}@media (max-width:650px){.three-slots th:first-child{width:43%}.three-slots th,.three-slots td{padding:12px 5px}.three-slots th{font-size:12px}.three-slots .slot{min-height:44px;padding:10px 3px;font-size:13px}.three-slots .reserved{flex-direction:column;gap:0}.remaining{padding:16px 14px}}.topic-title{min-width:0}.presented-badge{color:#19563d;white-space:nowrap;background:#e2f2e9;border:1px solid #a3d6bc;border-radius:5px;flex-shrink:0;margin:6px 0 0;padding:3px 9px;font-size:13px;font-weight:600;line-height:1.5;display:inline-block}.topic-title .presented-badge{display:table}footer{flex-wrap:wrap;justify-content:space-between;gap:12px 24px;display:flex}a{color:#3459bf}a:focus-visible{outline-offset:3px;outline:3px solid #7296ff}.professor-link{color:#fff;background:#3459d6;border-radius:6px;padding:12px 18px;font-weight:600;text-decoration:none;display:inline-block}.professor-nav{background:#e6ecff;flex-wrap:wrap;gap:12px 24px;padding:16px 20px;font-size:14px;display:flex}.presentation-list{margin:0;padding:0;list-style:none}.presentation-list li{border-top:1px solid #edf0f5;justify-content:space-between;align-items:center;gap:20px;padding:18px 22px;display:flex}.presentation-list li:first-child{border-top:0}.presentation-title{align-items:baseline;gap:14px;display:flex}.presentation-detail{flex:1;min-width:0}.presentation-meta{color:#536176;flex-wrap:wrap;align-items:center;gap:8px 14px;margin:8px 0 0 31px;font-size:14px;display:flex}.presentation-meta .presented-badge{margin:0}.presentation-list .mark-presented,.presentation-list .undo-presented{color:#fff;height:auto;min-height:44px;font:inherit;cursor:pointer;white-space:nowrap;background:#3459d6;border:1px solid #3459d6;border-radius:6px;flex-shrink:0;padding:10px 14px;font-size:14px;font-weight:600}.presentation-list .undo-presented{color:#3459bf;background:#fff;border-color:#b4c2dd}.presentation-list .topic-presented{background:#f3faf6}.presentation-list button:disabled{cursor:default}.professor-nav span{overflow-wrap:anywhere}@media (max-width:650px){.presentation-list li{align-items:flex-start;gap:12px;padding:16px 12px}.presentation-title{gap:8px;font-size:14px}.presentation-meta{margin-left:24px}.presentation-list .mark-presented,.presentation-list .undo-presented{padding:10px;font-size:13px}.professor-view .counter{white-space:normal}.professor-nav{gap:8px 18px;padding:14px 12px}}.professor-login{gap:10px;max-width:360px;margin:20px 0 24px;display:grid}.professor-login label{font-weight:600}.professor-login input{width:100%;font:inherit;border:1px solid #aab7ce;border-radius:6px;padding:11px 12px}.professor-login button{color:#fff;font:inherit;cursor:pointer;background:#3459d6;border:0;border-radius:6px;padding:11px 16px;font-weight:600}.professor-login button:disabled{opacity:.6;cursor:default}.professor-nav form{margin:0}.professor-nav button{color:#3459bf;font:inherit;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}
