:root{--ink:#14251f;--muted:#65736e;--line:#dce5e1;--paper:#fff;--canvas:#f3f7f5;--brand:#087f5b;--brand2:#0ca678;--danger:#b42318;--shadow:0 16px 45px rgba(24,55,44,.08)}
*{box-sizing:border-box}body{margin:0;background:var(--canvas);color:var(--ink);font:15px/1.5 Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}a{color:inherit;text-decoration:none}
.topbar{height:72px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 max(24px,calc((100vw - 1200px)/2));gap:44px;position:sticky;top:0;z-index:10}
.brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:18px}.brand>span,.brand-mark{display:grid;place-items:center;background:linear-gradient(145deg,var(--brand),var(--brand2));color:white;border-radius:12px;width:38px;height:38px}
nav{display:flex;gap:26px;height:100%}nav a{display:grid;place-items:center;color:var(--muted);border-bottom:2px solid transparent}nav a.active{color:var(--brand);border-color:var(--brand);font-weight:700}.user{margin-left:auto;display:flex;gap:14px}.user a{color:var(--brand)}
main{width:min(1200px,calc(100% - 40px));margin:48px auto 80px}.hero{display:flex;justify-content:space-between;align-items:end;margin:0 0 28px}.hero.compact{margin-bottom:18px}.hero h1{font-size:clamp(32px,5vw,52px);letter-spacing:-.04em;line-height:1.05;margin:4px 0}.eyebrow{text-transform:uppercase;letter-spacing:.13em;color:var(--brand);font-weight:800;font-size:12px;margin:0}.muted{color:var(--muted);margin:4px 0}
.button{border:1px solid var(--line);background:#fff;border-radius:10px;padding:10px 16px;font:inherit;font-weight:700;cursor:pointer;text-align:center}.button:hover{border-color:#aabbb4}.button.primary{background:var(--brand);border-color:var(--brand);color:#fff}.button.danger{color:var(--danger)}.wide{display:block;width:100%}
.search{background:#fff;border:1px solid var(--line);padding:10px;border-radius:14px;display:flex;gap:8px;box-shadow:var(--shadow);margin-bottom:20px}.search input{border:0;font-size:16px;padding:10px;width:100%;outline:none}
.table-card,.card{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);overflow:hidden}table{width:100%;border-collapse:collapse}th,td{padding:15px 18px;text-align:left;border-bottom:1px solid var(--line)}th{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);background:#fbfcfc}td small,td strong{display:block}.row-link{color:var(--brand);font-weight:700;white-space:nowrap}
.pagination{display:flex;height:auto;align-items:center;justify-content:center;gap:16px;margin-top:22px;color:var(--muted)}.pagination a{display:inline-block}.pagination span{text-align:center}
.empty-state{border:1px dashed #bdccc6;border-radius:14px;padding:36px;text-align:center;color:var(--muted);background:rgba(255,255,255,.5)}
.detail-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(300px,.8fr);gap:22px;align-items:start}.card{padding:24px}.stack{display:grid;gap:16px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.span-2{grid-column:1/-1}label{display:grid;gap:6px;font-weight:700;font-size:13px}input,select,textarea{width:100%;border:1px solid #cdd9d4;border-radius:9px;padding:10px 11px;background:#fff;color:var(--ink);font:inherit}input:focus,select:focus,textarea:focus{outline:3px solid rgba(12,166,120,.14);border-color:var(--brand)}
.section-title{display:flex;justify-content:space-between;align-items:center}.section-title h2,.card h2{margin:0}.section-title span,.pill{background:#e8f7f1;color:var(--brand);padding:4px 10px;border-radius:99px;font-size:12px;font-weight:800}.timeline{border-left:2px solid var(--line);margin:20px 0 10px;padding-left:20px}.timeline-item{position:relative;padding:0 0 20px}.timeline-item:before{content:"";position:absolute;width:10px;height:10px;border-radius:50%;background:#aebbb6;left:-26px;top:6px}.timeline-item.current:before{background:var(--brand);box-shadow:0 0 0 4px #dff4ec}.timeline-item small{display:block;color:var(--muted)}.inset{background:#f7faf9;margin:14px -8px -8px;padding:16px;border-radius:12px}.back{color:var(--brand);font-weight:700}
.course{display:grid;grid-template-columns:1fr auto;gap:15px}.course h2{margin:8px 0 2px}.course p{color:var(--muted)}.inline-form{display:flex;grid-column:1/-1;gap:8px}.course-group-title{display:flex;align-items:center;gap:12px;color:var(--brand);font-weight:900;font-size:18px;margin:12px 0 0}.course-group-title:after{content:"";height:1px;background:var(--line);flex:1}.export-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}.export-card{transition:.2s}.export-card:hover{transform:translateY(-3px);border-color:#9bcdbb}.export-card>span{display:inline-grid;place-items:center;background:#e8f7f1;color:var(--brand);font-weight:900;width:52px;height:52px;border-radius:13px}.export-card h2{margin-top:20px}
.course-type h2{margin:3px 0 0}.event-list{display:grid;margin-top:18px;border-top:1px solid var(--line)}.event-list>a{display:flex;justify-content:space-between;gap:18px;padding:13px 2px;border-bottom:1px solid var(--line)}.event-list>a:hover strong{color:var(--brand)}.event-list span{color:var(--muted);white-space:nowrap}.participant-total{background:#e8f7f1;color:var(--brand);border-radius:99px;padding:8px 14px;font-weight:800}.compact-search{margin:0;box-shadow:none;padding:5px}.participant-result{display:flex;align-items:center;justify-content:space-between;gap:10px;border-top:1px solid var(--line);padding-top:12px}.participant-result span,.participant-result small{display:block}
.hero-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.end-assignment{display:flex;align-items:center;gap:8px}.end-assignment input{min-width:145px}
.contact-end-assignment{margin-top:9px}.contact-end-assignment input{min-width:0;padding:7px 8px}.contact-end-assignment .button{padding:7px 10px}
.alert,.toast{width:min(1200px,calc(100% - 40px));margin:18px auto;padding:13px 16px;border-radius:10px}.alert{background:#fef3f2;color:#912018;border:1px solid #fecdca}.toast{background:#e8f7f1;color:#086447;border:1px solid #a9dfcb}.login-shell{min-height:calc(100vh - 50px);display:grid;place-items:center;margin:0 auto}.login-card{width:min(420px,calc(100vw - 32px));background:#fff;border:1px solid var(--line);border-radius:22px;padding:36px;box-shadow:var(--shadow)}.login-card h1{font-size:34px;margin:14px 0 2px}.login-card .brand-mark{width:48px;height:48px;font-size:20px;margin-bottom:24px}footer{text-align:center;color:var(--muted);padding:25px}
.duplicate-card{display:grid;grid-template-columns:70px 1fr 1fr;gap:24px;align-items:start}.duplicate-card .score{display:grid;place-items:center;width:60px;height:60px;border-radius:50%;background:#fff3cd;color:#795500;font-weight:900}.duplicate-card small{display:block;color:var(--muted)}.duplicate-card .reasons{grid-column:2/-1;color:#795500;font-size:13px}.import-upload{max-width:680px}.import-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.duplicate-row{background:#fff9e8}.warning{color:#9a6700;font-weight:800}.ok{color:var(--brand);font-weight:800}
.duplicate-card .merge-link{grid-column:2/-1;justify-self:start}.merge-table label{cursor:pointer}.merge-choice{display:flex;gap:10px;align-items:flex-start;min-width:210px}.merge-choice input{margin-top:4px}.merge-choice em{color:var(--muted)}
.export-kind{display:flex;gap:24px;align-items:center}.export-kind h2{margin-right:auto}.export-kind label{display:flex;grid-template-columns:auto 1fr;align-items:center;gap:10px}.export-kind input{width:18px;height:18px}.export-kind span,.export-kind small{display:block}.export-kind small{color:var(--muted);font-weight:400}.export-filter-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.check-list{display:grid;gap:3px;max-height:420px;overflow:auto;margin-top:16px}.check-list label{display:flex;align-items:center;gap:10px;padding:8px;border-radius:8px;font-weight:600}.check-list label:hover{background:#f3f7f5}.check-list input{width:18px;height:18px}.export-actions{display:flex;justify-content:flex-end;gap:10px}
.assignment-summary{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px}.assignment-summary span{background:#e8f7f1;color:var(--brand);padding:7px 12px;border-radius:99px;font-weight:800}.duplicate-row td:last-child small{display:block;margin-top:5px}
.bulk-bar{position:sticky;bottom:12px;z-index:5;display:grid;grid-template-columns:auto 1fr 1fr auto;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 14px;box-shadow:0 12px 35px rgba(24,55,44,.16)}.audit-entry{padding:0}.audit-entry summary{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:14px;padding:16px 20px;cursor:pointer}.audit-user b,.audit-user small{display:block}.audit-user small{color:var(--muted)}.audit-details{padding:0 20px 20px}.audit-details table{border:1px solid var(--line)}.audit-details th,.audit-details td{padding:10px 12px;text-transform:none;letter-spacing:0;font-size:13px}.audit-details td{white-space:pre-wrap}.audit-details dl{margin:0;display:grid;gap:1px;background:var(--line);border:1px solid var(--line)}.audit-details dl>div{display:grid;grid-template-columns:minmax(150px,.35fr) 1fr;background:#fff}.audit-details dt,.audit-details dd{margin:0;padding:10px 12px}.audit-details dt{font-weight:800;background:#f7faf9}.audit-details dd{white-space:pre-wrap;overflow-wrap:anywhere}
.label-page{background:#e5e7e6;font-family:Arial,Helvetica,sans-serif}.label-sheets{display:grid;gap:12mm;margin:24mm auto 12mm}.label-sheet{display:grid;grid-template-columns:repeat(3,70mm);grid-template-rows:repeat(7,41mm);align-content:start;width:210mm;height:297mm;padding-top:8.5mm;background:#fff;box-shadow:0 5px 24px rgba(0,0,0,.16);overflow:hidden}.label{width:70mm;height:41mm;padding:5mm 5mm 3mm;display:flex;flex-direction:column;overflow:hidden;outline:1px dashed #d8dddb;outline-offset:-1px}.label-sender{display:block;font-size:7pt;line-height:1;letter-spacing:-.08pt;text-decoration:underline;white-space:nowrap;margin-bottom:4mm;color:#111}.label-recipient{display:flex;flex-direction:column;font-size:11pt;line-height:1.35;color:#000;overflow-wrap:anywhere}.print-controls{position:fixed;z-index:20;left:0;right:0;top:0;min-height:64px;padding:10px 20px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:center;gap:20px;box-shadow:0 3px 14px rgba(0,0,0,.1)}.print-controls span{color:var(--muted);font-size:13px}.print-controls .button{width:auto}
@media(max-width:800px){.topbar{height:auto;padding:12px 18px;flex-wrap:wrap;gap:10px}.topbar nav{order:3;width:100%;overflow:auto;gap:20px}.topbar nav a{padding:8px 0}.user span{display:none}.detail-grid,.export-grid,.export-filter-grid{grid-template-columns:1fr}.export-kind{display:grid;gap:14px}.hero{align-items:start;gap:20px}.table-card{overflow:auto}.form-grid{grid-template-columns:1fr}.span-2{grid-column:auto}main{margin-top:30px}.course{grid-template-columns:1fr}.inline-form{flex-direction:column}.duplicate-card{grid-template-columns:60px 1fr}.duplicate-card>div:nth-of-type(3),.duplicate-card .reasons{grid-column:2}.bulk-bar,.audit-entry summary{grid-template-columns:1fr}}
@media print{html,body.label-page{width:210mm;margin:0;padding:0;background:#fff}.print-controls{display:none}.label-sheets{display:block;margin:0}.label-sheet{margin:0;box-shadow:none;break-after:page;page-break-after:always}.label-sheet:last-child{break-after:auto;page-break-after:auto}.label{outline:0}@page{size:A4 portrait;margin:0}}
