:root{color-scheme:light;--bg: #f8fafc;--bg-card: #fff;--bg-side: #0f172a;--border: #e2e8f0;--text: #1e293b;--muted: #64748b;--primary: #4f46e5;--primary-dark: #4338ca;--primary-soft: rgba(79, 70, 229, .1);--success: #16a34a;--error: #dc2626;--warning: #f59e0b;--radius: 8px;--side-w: 250px}@font-face{font-family:Pretendard Variable;src:url(/app/assets/PretendardVariable-CJuje-Rk.woff2) format("woff2-variations");font-weight:45 920;font-style:normal;font-display:swap}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:Segoe UI,Malgun Gothic,system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--text);font-size:14px;-webkit-user-select:none;user-select:none}input,textarea,select,table,code,pre{-webkit-user-select:text;user-select:text}a{color:var(--primary)}h1,h2,h3{margin:0;font-weight:600;text-wrap:balance}h2{font-size:1.05rem}h3{font-size:.92rem;margin-top:.75rem;color:var(--muted)}code{font-family:Consolas,D2Coding,monospace;font-size:.85em;background:var(--primary-soft);padding:0 .3em;border-radius:3px}.screen{max-width:1080px;display:flex;flex-direction:column;gap:1rem}.screen.wide{max-width:1400px}.screen-head{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.screen-head h1{font-size:1.35rem}.head-actions{margin-left:auto;display:flex;gap:.5rem;align-items:center}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.15rem;display:flex;flex-direction:column;gap:.75rem}.card-head{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.card-head>:last-child:not(h2){margin-left:auto}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:1rem;align-items:start}@media (max-width: 900px){.two-col{grid-template-columns:1fr}}.stack{display:flex;flex-direction:column;gap:.75rem}.row{display:flex;gap:.75rem;align-items:flex-end;flex-wrap:wrap}.row-end{display:flex;gap:.5rem;justify-content:flex-end;align-items:center;flex-wrap:wrap}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem}@media (max-width: 700px){.grid-2,.grid-3{grid-template-columns:1fr}}.chip{display:inline-block;font-size:.72rem;padding:.12rem .5rem;border-radius:999px;background:var(--primary-soft);color:var(--primary);font-weight:500;margin-left:.35rem;white-space:nowrap}.chips{display:flex;flex-wrap:wrap;gap:.25rem}.chips .chip{margin-left:0}.chip-neutral{background:var(--border);color:var(--muted)}.chip-ok{background:color-mix(in srgb,var(--success) 15%,transparent);color:var(--success)}.chip-warn{background:color-mix(in srgb,var(--warning) 18%,transparent);color:var(--warning)}.chip-error{background:color-mix(in srgb,var(--error) 15%,transparent);color:var(--error)}.chip-primary{background:var(--primary-soft);color:var(--primary)}.muted{color:var(--muted)}.small{font-size:.82rem}.center{text-align:center;margin:0}.mono{font-family:Consolas,D2Coding,monospace}.ok{color:var(--success);font-weight:500}.error{color:var(--error);margin:0}.error-list{margin:0;padding-left:1.2rem;color:var(--error);font-size:.85rem;max-height:8rem;overflow:auto}.empty{border:1px dashed var(--border);border-radius:var(--radius);padding:1.5rem;color:var(--muted);text-align:center;line-height:1.7}.todo{margin:0;padding-left:1.2rem;color:var(--muted);line-height:1.8}.field{display:flex;flex-direction:column;gap:.25rem;font-size:.85rem;min-width:0}.field-label{color:var(--muted)}.field-hint{color:var(--muted);font-size:.75rem}input,select,textarea{padding:.5rem .65rem;border:1px solid var(--border);border-radius:4px;background:var(--bg);color:var(--text);font-size:.92rem;font-family:inherit;min-width:0}input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--primary);outline-offset:1px}input:disabled,select:disabled{opacity:.6}input.inline,select.inline{padding:.25rem .4rem;font-size:.85rem;width:auto}input.inline.num{width:4.5rem}.search{max-width:320px}.check{display:flex;align-items:center;gap:.4rem;font-size:.88rem}.checks{display:flex;flex-wrap:wrap;gap:.5rem 1rem}.fieldset{border:1px solid var(--border);border-radius:var(--radius);padding:.5rem .75rem .75rem}.fieldset legend{color:var(--muted);font-size:.85rem;padding:0 .3rem}button{font-family:inherit;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}.btn-primary,.btn-secondary,.btn-danger{padding:.5rem .9rem;border-radius:4px;font-size:.9rem;font-weight:500;border:1px solid transparent;transition:background .15s ease;white-space:nowrap}.btn-primary{background:var(--primary);color:#fff}.btn-secondary{background:transparent;color:var(--primary);border-color:var(--primary)}.btn-secondary:hover:not(:disabled){background:var(--primary-soft)}.btn-danger{background:var(--error);color:#fff}.btn-link,.btn-danger-link{background:none;border:none;color:var(--primary);padding:.15rem .3rem;font-size:.85rem;text-decoration:none}.btn-link:hover:not(:disabled){text-decoration:underline}.btn-danger-link{color:var(--error)}.table-wrap{overflow:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card)}.table-wrap.tall{max-height:60vh}.data-table{width:100%;border-collapse:collapse;font-size:.86rem;font-variant-numeric:tabular-nums}.data-table th,.data-table td{padding:.45rem .6rem;border-bottom:1px solid var(--border);text-align:left;vertical-align:middle;white-space:nowrap}.data-table th{color:var(--muted);font-weight:500;font-size:.78rem;letter-spacing:.02em;position:sticky;top:0;background:var(--bg-card);z-index:1}.data-table th.small{font-size:.7rem}.data-table .num{text-align:right}.data-table tbody tr:hover{background:var(--primary-soft)}.data-table tfoot td{border-top:2px solid var(--border);border-bottom:none}.data-table .row-actions{text-align:right}.data-table .row-muted{color:var(--muted)}.data-table .row-selected{background:var(--primary-soft)}.data-table .row-best{background:color-mix(in srgb,var(--success) 10%,transparent)}.data-table.stats tbody tr{cursor:pointer}.facts{margin:0;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card)}.facts.compact{border:none;background:transparent}.facts>div{display:grid;grid-template-columns:150px 1fr;gap:1rem;padding:.55rem .9rem;border-bottom:1px solid var(--border)}.facts.compact>div{padding:.3rem 0}.facts>div:last-child{border-bottom:none}.facts dt{color:var(--muted);font-size:.85rem}.facts dd{margin:0;font-size:.9rem}.banner{padding:.6rem .9rem;border-radius:var(--radius);border-left:4px solid var(--primary);background:var(--bg-card);font-size:.88rem;line-height:1.5;display:flex;flex-wrap:wrap;gap:.35rem;align-items:center}.banner-warning{border-left-color:var(--warning)}.banner-error{border-left-color:var(--error)}.banner-detail{color:var(--muted);width:100%}.tabs{display:flex;gap:.25rem;border-bottom:1px solid var(--border)}.tab{background:none;border:none;border-bottom:2px solid transparent;padding:.5rem .8rem;color:var(--muted);font-size:.9rem}.tab.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:500}.modal-backdrop{position:fixed;inset:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:50;padding:1rem}.modal{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;width:100%;max-width:560px;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 12px 40px #00000040}.modal-wide{max-width:min(1280px,96vw)}.modal-head{display:flex;align-items:center;padding:.9rem 1.15rem;border-bottom:1px solid var(--border)}.modal-head h2{flex:1}.modal-body{padding:1rem 1.15rem;overflow:auto;display:flex;flex-direction:column;gap:.75rem}.modal-foot{padding:.75rem 1.15rem;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:.5rem}.toasts{position:fixed;top:64px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:.5rem;z-index:1100;max-width:min(560px,calc(100vw - 2rem));pointer-events:none}.toast{pointer-events:auto;cursor:pointer;padding:.6rem .9rem;border-radius:var(--radius);background:var(--bg-card);border:1px solid var(--border);border-left:4px solid var(--primary);box-shadow:0 6px 20px #0000002e;font-size:.88rem}.toast-ok{border-left-color:var(--success)}.toast-error{border-left-color:var(--error)}.toast-warn{border-left-color:#f59e0b;background:#fffbeb;white-space:pre-line}:root{--hx-primary: #4f46e5;--hx-secondary: #0891b2;--hx-accent: #22d3ee;--hx-side-w: 264px;--hx-side-collapsed: 70px;--hx-text: #1e293b}.screen{max-width:none}.shell{display:grid;grid-template-columns:var(--hx-side-w) 1fr;height:100%;transition:grid-template-columns .25s ease-in-out}.shell.sidebar-collapsed{grid-template-columns:var(--hx-side-collapsed) 1fr}.content-wrapper{display:flex;flex-direction:column;min-width:0;height:100%}.content{flex:1;overflow:auto;padding:.5rem .6rem 1rem;background:var(--bg)}.sidebar{position:relative;display:flex;flex-direction:column;min-height:0;height:100%;overflow:visible;background:#fff;color:#0f172a;border-right:1px solid #e5e7eb;box-shadow:1px 0 12px #0f172a0a;padding:0;gap:0;font-family:Pretendard Variable,Pretendard,Malgun Gothic,맑은 고딕,Segoe UI,sans-serif;letter-spacing:-.01em}.sidebar-brand{flex:none;display:flex;align-items:center;gap:9px;padding:16px 18px 12px;color:#0f172a;text-decoration:none;font-size:19px;font-weight:800;letter-spacing:-.02em}.sidebar-brand .brand-icon{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:9px;background:linear-gradient(135deg,#4f46e5,#06b6d4);box-shadow:0 3px 10px #4f46e559;color:#fff;font-size:16px;font-weight:900;font-style:normal}.sidebar-brand sup{margin-left:4px;padding:1px 6px;border-radius:999px;background:#eef2ff;color:#4f46e5;font-size:10.5px;font-weight:800;vertical-align:4px}.sidebar .scope{flex:none;display:flex;flex-direction:column;gap:8px;margin:12px 12px 6px;padding:10px 10px 12px;border-radius:14px;background:linear-gradient(160deg,#f5f7ff,#eef2ff);color:#0f172a;border:1px solid #e0e7ff}.scope-head{display:flex;align-items:center;justify-content:space-between}.scope-title{font-size:11px;font-weight:800;letter-spacing:.08em;color:#6366f1}.scope-year{padding:1px 8px;border-radius:999px;background:#e0e7ff;color:#3730a3;font-size:11.5px;font-weight:700}.sidebar .scope-school{display:flex;align-items:center;gap:6px;padding:4px 8px;border-radius:8px;background:#fff;border:1px solid #c7d2fe}.sidebar .scope-school:focus-within{border-color:#6366f1;box-shadow:0 0 0 2px #6366f140}.scope-school-icon{display:inline-flex;color:#6366f1}.sidebar .scope input{flex:1;min-width:0;padding:3px 0;font-size:14.5px;font-weight:800;background:transparent;color:#0f172a;border:none;outline:none}.sidebar .scope input::placeholder{color:#94a3b8;font-weight:500}.sidebar .scope input[readonly]{cursor:default}.sidebar .scope-school:has(input[aria-invalid=true]){border-color:#f59e0b;box-shadow:0 0 0 2px #f59e0b4d}.scope-move{display:grid;grid-template-columns:1fr auto 1.2fr;align-items:stretch;gap:6px}.scope-from,.scope-to{display:flex;flex-direction:column;justify-content:center;gap:1px;min-width:0;padding:5px 8px;border-radius:8px}.scope-from small,.scope-to small{font-size:10.5px;font-weight:700}.scope-from{background:#f1f5f9;color:#475569}.scope-from b{font-size:14px;color:#334155}.scope-arrow{align-self:center;color:#6366f1;font-size:15px;font-weight:800}.scope-to{background:#4f46e5;color:#e0e7ff;cursor:pointer}.sidebar .scope-to select{width:100%;padding:0 2px;margin-left:-2px;font-size:15px;font-weight:800;background:transparent;color:#fff;border:none;outline:none;cursor:pointer}.sidebar .scope-to:focus-within{box-shadow:0 0 0 2px #a5b4fc}@supports not (appearance: base-select){.sidebar .scope select option{background:#fff;color:#0f172a;font-weight:500}}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.school-gate{max-width:560px;margin:48px auto;text-align:center}.school-gate p{color:#334155;line-height:1.6}.scope-mini{display:none}.sidebar .menu{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;gap:2px;padding:4px 10px 10px;overflow-y:auto;overflow-x:hidden;scrollbar-width:none}.sidebar .menu::-webkit-scrollbar{display:none}.sidebar-heading{padding:14px 10px 5px;font-size:11.5px;font-weight:700;letter-spacing:.06em;color:#94a3b8}.nav-link{display:flex;align-items:center;gap:10px;width:100%;min-height:38px;padding:7px 10px;color:#1e293b;font-family:inherit;font-size:14.5px;font-weight:600;line-height:1.3;border:none;border-radius:10px;background:transparent;text-decoration:none;text-align:left;cursor:pointer;transition:background .15s ease,color .15s ease,box-shadow .15s ease}.nav-link span{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nav-link:hover{color:#0f172a;background:#f1f5f9}.nav-link.active{color:#fff;font-weight:700;background:linear-gradient(135deg,#4f46e5,#6366f1);box-shadow:0 4px 12px #4f46e54d}.nav-link .nav-icon{flex:none;display:inline-flex;justify-content:center;width:22px;font-size:15px;font-style:normal;text-align:center;color:#64748b}.nav-link.active .nav-icon{color:#fff}.nav-link .step-badge{height:22px;line-height:22px;border-radius:50%;background:#eef2ff;color:#4f46e5;font-size:12px;font-weight:800}.nav-link.done .step-badge{background:#dcfce7;color:#15803d}.nav-link.active .step-badge{background:#fff;color:#4f46e5}.sidebar-foot{flex:none;padding:10px 18px 14px;border-top:1px solid #f1f5f9;font-size:12px;color:#94a3b8}.sidebar-foot .small{display:block;color:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-toggle{position:absolute;right:-14px;bottom:24px;width:28px;height:28px;border:2px solid #fff;border-radius:50%;background:linear-gradient(135deg,var(--hx-primary) 0%,var(--hx-secondary) 100%);color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #4f46e566;z-index:30;font-size:16px;line-height:1}.sidebar-toggle:hover{transform:scale(1.1)}.sidebar-collapsed .sidebar-brand-text,.sidebar-collapsed .sidebar-heading,.sidebar-collapsed .nav-link span,.sidebar-collapsed .scope,.sidebar-collapsed .sidebar-foot{display:none!important}.sidebar-collapsed .sidebar-brand{justify-content:center;padding:16px 0 10px}.sidebar-collapsed .scope-mini{display:block;margin:6px 10px 4px;padding:5px 0;border-radius:8px;background:#eef2ff;color:#4f46e5;font-size:12px;font-weight:800;text-align:center}.sidebar-collapsed .nav-link{justify-content:center;padding:7px 0}.sidebar-collapsed .sidebar-heading+.nav-link{margin-top:10px}.harmonix-topbar{position:relative;display:flex;align-items:center;gap:12px;padding:8px 16px;min-height:56px;background:#fff;border-bottom:1px solid #e2e8f0;box-shadow:0 1px 3px #0000000d;z-index:10}.harmonix-topbar:after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--hx-primary) 0%,var(--hx-secondary) 100%);opacity:.6}.topbar-title{flex:0 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600;font-size:15px;color:var(--hx-text)}.topbar-right{margin-left:auto;display:flex;align-items:center;gap:8px;flex-shrink:0}.harmonix-badge-logout{display:inline-flex;align-items:center;padding:6px 14px;font-size:13px;font-weight:600;border-radius:20px;border:1px solid transparent;transition:all .2s ease}.harmonix-badge-logout{background:#f1f5f9;color:#64748b;border-color:#e2e8f0}.harmonix-badge-logout:hover{background:#ef4444;color:#fff}.harmonix-user-info{display:flex;align-items:center;gap:8px;padding:6px 14px;background:#f8fafc;border-radius:8px;border:1px solid #e2e8f0;font-size:13px;font-weight:600;color:#475569}.harmonix-user-info .user-icon{color:var(--hx-primary);font-size:16px}.step-navigation{display:flex;align-items:center;gap:2px;margin:0 8px 0 20px;padding-left:16px;border-left:1px solid #e2e8f0;flex:1 1 auto;min-width:0;overflow:hidden}.step-item{display:inline-flex;align-items:center;gap:5px;padding:4px 8px;border:none;background:transparent;border-radius:14px;font-size:12px;cursor:pointer;white-space:nowrap;transition:all .2s ease}.step-item:hover{background:#f1f5f9}.step-number{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;font-size:11px;font-weight:700;background:#e2e8f0;color:#64748b}.step-label{font-weight:600;color:#94a3b8}.step-arrow{color:#cbd5e1;margin-left:2px}.step-item.completed .step-number{background:#22c55e;color:#fff}.step-item.completed .step-label{color:#16a34a}.step-item.current .step-number{background:linear-gradient(135deg,var(--hx-primary),var(--hx-secondary));color:#fff;box-shadow:0 0 0 3px #4f46e533}.step-item.current .step-label{color:var(--hx-primary)}.step-item.current{background:#eef2ff}@media (max-width: 1250px){.step-label{display:none}}.dashboard{gap:.25rem}.dashboard-title{margin:.4rem .5rem}.dashboard-title h5{margin:0;font-size:1.05rem;color:var(--hx-text)}.card-group{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;padding:6px 8px}.dashboard-card{background:var(--bg-card);border-radius:12px;border:1px solid var(--border);box-shadow:0 2px 10px #0000000f;overflow:hidden;display:flex;flex-direction:column;min-height:210px}.dashboard-card.placeholder{visibility:hidden}.dashboard-card .card-header{padding:10px 14px;border-bottom:1px solid var(--border);background:#f8fafc;position:relative}.dashboard-card .clickable-header{cursor:pointer}.dashboard-card .clickable-header:hover{background:#eef2ff}.dashboard-card .card-header h5{margin:0;font-size:.95rem;font-weight:700;color:var(--hx-text);display:flex;align-items:center;gap:8px;flex-wrap:wrap}.dashboard-card .card-header .step-number{width:24px;height:24px;font-size:12px;color:#fff}.step-prepare .card-header .step-number{background:linear-gradient(135deg,#06b6d4,#0891b2)}.step-execute .card-header .step-number{background:linear-gradient(135deg,#6366f1,#4f46e5)}.step-complete .card-header .step-number{background:linear-gradient(135deg,#22c55e,#16a34a)}.dashboard-card .card-body{padding:10px 14px;display:flex;flex-direction:column;gap:8px;flex:1}.status-badge{font-size:.7rem;font-weight:700;padding:2px 9px;border-radius:10px;margin-left:2px}.badge-complete{background:#dcfce7;color:#15803d}.badge-pending{background:#fef3c7;color:#b45309}.badge-danger{background:#fee2e2;color:#b91c1c}.badge-waiting{background:#e2e8f0;color:#475569}.badge-optional{background:#dbeafe;color:#1d4ed8}.info-box{background:#f8fafc;border-left:3px solid var(--hx-primary);border-radius:6px;padding:8px 10px;font-size:.85rem}.info-box h6{margin:0;font-size:.85rem;font-weight:600;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.info-box p{margin:0 0 6px}.info-box p:last-child{margin-bottom:0}.info-box .info-sub{font-size:.8rem;opacity:.85}.info-box.tall{flex:1}.dim{opacity:.75;font-size:.78rem}.alert-light{background:#f8fafc;border:1px solid var(--border);border-radius:6px;padding:8px 10px;font-size:.82rem;color:var(--muted)}.alert-info{background:#e0f2fe;border:1px solid #7dd3fc;color:#0c4a6e;border-radius:6px;padding:10px 12px;font-size:.85rem;line-height:1.6}.btn-destroy{position:absolute;right:12px;top:50%;transform:translateY(-50%);background:linear-gradient(135deg,#ef4444,#b91c1c);color:#fff;border:none;border-radius:6px;padding:4px 12px;font-size:.8rem;font-weight:700}.chart-container{min-height:110px;flex:1}.chart-empty{color:var(--muted);font-size:.8rem;text-align:center;padding:1.5rem 0}.bar-chart{display:flex;flex-direction:column;gap:4px;height:100%}.bar-legend{display:flex;gap:10px;font-size:.72rem;color:var(--muted)}.bar-legend i{display:inline-block;width:10px;height:10px;border-radius:2px;vertical-align:middle}.bar-area{display:flex;align-items:flex-end;gap:6px;height:96px;padding:0 4px;overflow-x:auto}.bar-group{display:flex;flex-direction:column;align-items:center;flex:1 0 34px;height:100%}.bars{display:flex;align-items:flex-end;gap:2px;flex:1;width:100%;justify-content:center}.bar{width:9px;border-radius:3px 3px 0 0;position:relative;min-height:2px}.bar-value{position:absolute;top:-12px;left:50%;transform:translate(-50%);font-size:9px;color:var(--muted)}.bar-label{font-size:.7rem;color:var(--muted);margin-top:2px}.ssm-list{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;box-shadow:0 2px 10px #0000000d;gap:0;min-height:calc(100vh - 100px)}.ssm-list>.card-header{padding:8px 12px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:10px;flex-wrap:wrap}.ssm-list>.card-header.text-right{justify-content:flex-end}.search-bar .search-item{display:flex;align-items:center;gap:6px}.search-bar .search-item label{font-size:12px;font-weight:600;color:#475569;white-space:nowrap}.search-item.grow,.grow{flex:1}.search-item.guidance{justify-content:flex-end;gap:8px}.form-control-sm{height:27px;padding:2px 8px;font-size:12.5px;border:1px solid #cbd5e1;border-radius:4px;background:var(--bg-card);color:var(--text);min-width:90px}.form-control-sm.short{min-width:60px;width:80px}textarea.form-control-sm{height:auto;width:100%}.form-control-sm:read-only{background:#f1f5f9}.action-bar .title-line{margin:0 0 0 10px;color:var(--hx-text);font-size:13px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.count-pill{background:#f1f5f9;padding:3px 10px;border-radius:4px;font-weight:600}.c-primary{color:var(--hx-primary)}.c-ok{color:#22c55e}.c-warn{color:#f97316}.push{margin-left:auto}.sep{color:#ccc;margin:0 4px}.text-primary{color:var(--hx-primary)}.text-danger{color:#dc2626}.bold{font-weight:700}.accent{color:#ff4500}.highlight{background:#fff3cd;padding:0 4px;border-radius:3px}.btn-guide{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 12px 0 6px;border:1px solid #93c5fd;border-radius:14px;background:#eff6ff;color:#1d4ed8;font-size:12px;font-weight:600;line-height:1;white-space:nowrap;transition:background .15s ease,border-color .15s ease}.btn-guide:hover{background:#dbeafe;border-color:#3b82f6}.btn-guide-icon{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:#2563eb;color:#fff;font:italic 700 12px/1 Georgia,Times New Roman,serif}.btn-gradient{display:inline-flex;align-items:center;gap:5px;color:#fff;border:none;padding:6px 14px;border-radius:6px;font-weight:600;font-size:12px;line-height:1;height:28px;box-shadow:0 2px 8px #00000026;transition:all .2s ease;white-space:nowrap}.btn-gradient:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #00000038}.btn-gradient.primary{background:linear-gradient(135deg,#4f46e5,#6366f1)}.btn-gradient.success{background:linear-gradient(135deg,#059669,#10b981)}.btn-gradient.info{background:linear-gradient(135deg,#17a2b8,#20c997)}.btn-gradient.gray{background:linear-gradient(135deg,#64748b,#94a3b8)}.btn-gradient.cyan{background:linear-gradient(135deg,#0891b2,#06b6d4)}.btn-gradient.purple{background:linear-gradient(135deg,#7c3aed,#a855f7)}.btn-gradient.danger{background:linear-gradient(135deg,#dc2626,#ef4444)}.btn-gradient.round{border-radius:20px;padding:4px 12px}.btn-outline{background:#fff;color:var(--hx-primary);border:2px solid var(--hx-primary);padding:5px 12px;border-radius:6px;font-weight:600;font-size:12px;height:28px;transition:all .2s ease}.btn-outline.gray{color:#6c757d;border-color:#6c757d}.btn-outline.big{height:36px;font-size:14px;padding:6px 18px}.btn-sm-primary{background:var(--hx-primary);color:#fff;border:none;border-radius:4px;padding:3px 9px;font-size:12px;font-weight:600}.btn-sm-run{display:inline-flex;align-items:center;gap:7px;background:linear-gradient(135deg,#059669,#22c55e);color:#fff;border:none;border-radius:999px;padding:9px 22px;font-size:13.5px;font-weight:800;letter-spacing:.01em;line-height:1;white-space:nowrap;box-shadow:0 3px 10px #05966959,inset 0 1px #ffffff40;transition:transform .14s ease,box-shadow .14s ease,filter .14s ease;animation:run-ready 2.2s ease-out 3}.btn-sm-run:hover:not(:disabled){transform:translateY(-2px) scale(1.02);filter:brightness(1.06);box-shadow:0 7px 18px #05966973,inset 0 1px #ffffff4d}.btn-sm-run:active:not(:disabled){transform:translateY(0) scale(.99);box-shadow:0 2px 6px #05966966}.btn-sm-run:focus-visible{outline:3px solid #86efac;outline-offset:2px}.btn-sm-run:disabled{background:#eef2f7;color:#a0aec0;box-shadow:none;animation:none;cursor:not-allowed}@keyframes run-ready{0%{box-shadow:0 3px 10px #05966959,0 0 #22c55e80}70%{box-shadow:0 3px 10px #05966959,0 0 0 10px #22c55e00}to{box-shadow:0 3px 10px #05966959,0 0 #22c55e00}}@media (prefers-reduced-motion: reduce){.btn-sm-run{animation:none}.btn-sm-run:hover:not(:disabled){transform:none}}.btn-sm-info{background:#17a2b8;color:#fff;border:none;border-radius:4px;padding:3px 9px;font-size:12px;font-weight:600}.btn-wizard-download{position:relative;overflow:hidden;display:inline-flex;align-items:center;gap:8px;background:linear-gradient(135deg,#047857,#22c55e 55%,#16a34a);color:#fff;border:none;border-radius:999px;padding:10px 24px;font-size:13.5px;font-weight:800;letter-spacing:.01em;line-height:1;white-space:nowrap;box-shadow:0 4px 14px #05966966,inset 0 1px #ffffff47;transition:transform .14s ease,box-shadow .14s ease,filter .14s ease}.btn-wizard-download:after{content:"";position:absolute;top:-60%;left:-70%;width:45%;height:220%;background:linear-gradient(90deg,#fff0,#ffffff73,#fff0);transform:skew(-20deg);animation:dl-shine 3.5s ease-in-out infinite;pointer-events:none}@keyframes dl-shine{0%{left:-70%}22%{left:130%}to{left:130%}}.btn-wizard-download .dl-ico{display:inline-block;font-size:15px;animation:dl-bob 2.4s ease-in-out infinite}@keyframes dl-bob{0%,70%,to{transform:translateY(0)}80%{transform:translateY(2.5px)}90%{transform:translateY(-1px)}}.btn-wizard-download:hover:not(:disabled){transform:translateY(-2px) scale(1.02);filter:brightness(1.06);box-shadow:0 8px 22px #05966980,inset 0 1px #ffffff52}.btn-wizard-download:active:not(:disabled){transform:translateY(0) scale(.99);box-shadow:0 2px 8px #05966973}.btn-wizard-download:focus-visible{outline:3px solid #86efac;outline-offset:2px}.btn-wizard-download:disabled{background:#eef2f7;color:#a0aec0;box-shadow:none;cursor:not-allowed}.btn-wizard-download:disabled:after,.btn-wizard-download:disabled .dl-ico{animation:none}@media (prefers-reduced-motion: reduce){.btn-wizard-download:after,.btn-wizard-download .dl-ico{animation:none}.btn-wizard-download:hover:not(:disabled){transform:none}}.custom-link{background:none;border:none;color:#1d4ed8;padding:0;font-size:inherit;text-decoration:underline dotted;cursor:pointer;text-align:left;white-space:normal}.custom-link:hover{color:var(--hx-primary)}.action-button-wrapper{display:flex;align-items:center;gap:12px;padding:10px 12px 4px}.exe-msg{font-size:13px;color:#475569;font-weight:600}.ssm-table-wrap{border:none;border-radius:0;margin:6px 8px;max-height:calc(100vh - 230px)}.ssm-table{font-size:12px}.ssm-table th.th-get,.ssm-table th.th-get-footer{background:#f1f5f9;color:#334155;font-weight:700;text-align:center;border:1px solid #e2e8f0;padding:5px 6px;font-size:11.5px;line-height:1.3;position:sticky;top:0}.ssm-table th.th-get-footer{position:static;background:#e2e8f0}.ssm-table thead tr:nth-child(2) th.th-get{top:28px}.ssm-table td{border:1px solid #eef2f7;padding:4px 6px;white-space:nowrap}.ssm-table td.td-get{text-align:center}.ssm-table td.td-get-l{text-align:left;white-space:normal;min-width:80px}.ssm-table td.td-get-r{text-align:right}.ssm-table td.empty-row{padding:2rem;color:var(--muted)}.ssm-table td.td-run{padding:10px 14px}.ssm-table tbody tr:hover{background:#f8fafc}.ssm-table tr.selected-row{background:#eef2ff}.ssm-table tr.target-row{background:#fef9c3;font-weight:700}.ssm-table tr.row-muted{color:var(--muted)}.ssm-table .primary-text{color:#dc2626}.ssm-table.cross td{text-align:center}.badge{display:inline-block;font-size:11px;font-weight:700;padding:2px 7px;border-radius:4px;margin-left:4px}.badge-success{background:#22c55e;color:#fff}.badge-secondary{background:#94a3b8;color:#fff}.badge-danger{background:#ef4444;color:#fff}.badge-info{background:#0ea5e9;color:#fff}.foot-note{padding:6px 12px}.file-pick{height:48px;padding:12px 8px;background:#f7f7f9;font-size:14px;width:100%;border:1px dashed #94a3b8;border-radius:6px;color:#334155;text-align:left}.upload-result{font-size:13px;min-height:1.4rem}.upload-result .ok{color:#15803d;font-weight:600}.form-table{width:100%;border-collapse:collapse;font-size:12.5px;margin:4px 0 10px}.form-table th,.form-table td{border:1px solid #e2e8f0;padding:5px 8px;vertical-align:middle}.form-table th.th-get,.form-table th.th-get-l,.form-table th.td-get-r{background:#f1f5f9;color:#334155;font-weight:700;text-align:left;white-space:nowrap}.form-table th.td-get-r{text-align:right;font-weight:600;background:#f8fafc;padding-left:24px}.form-table.six th{width:12%}.form-table.two th{width:17%}.form-table.config th{width:26%}.form-table td .form-control-sm,.form-table td.wide .form-control-sm{width:100%}.form-table .clickable{cursor:pointer;min-height:27px;background:#fffdf5}.form-table .clickable:hover{background:#fff7d6}.form-table .emphasized-text{background:#fff7ed;color:#7c2d12;font-weight:600}.level-row{display:flex;gap:6px;align-items:center}.level-row .level,.form-control-sm.level{width:15%;min-width:110px}.level-row input{flex:1}.section-title{margin:8px 4px 4px;font-size:13px;font-weight:700;color:var(--hx-primary)}.section-title .hint{font-weight:500;color:#475569;font-size:12.5px}.student-edit{min-width:0}.form-title{margin:8px 12px 0;font-size:13px}.form-card{border:none;padding:0 8px 8px}.form-card .card-header{display:flex;gap:8px;justify-content:flex-end;padding:8px 4px;border-bottom:1px solid var(--border)}.config-form .form-table tr.sub th{border-left:4px solid #cbd5e1}.case-badge{display:inline-block;background:var(--hx-primary);color:#fff;padding:1px 10px;border-radius:10px;font-size:12px;margin-left:4px}.radio-inline{display:flex;gap:14px;flex-wrap:wrap}.radio-inline label{display:inline-flex;align-items:center;gap:4px;font-size:12.5px}.radio-card{display:flex;align-items:center;gap:12px;border:2px solid #e2e8f0;border-radius:10px;padding:12px 14px;margin:8px 0;cursor:pointer;transition:all .2s ease}.radio-card.selected{border-color:var(--hx-primary);background:#eef2ff}.radio-card-icon{font-size:22px}.radio-card-label{font-size:13px;line-height:1.5}.valid-main,.valid-card{margin:6px 8px;padding:0;gap:0}.valid-main>.card-header,.valid-card>.card-header{padding:6px 10px;border-bottom:1px solid var(--border);background:#f8fafc}.valid-main .clickable{cursor:pointer}.valid-main h6,.valid-card h6{margin:0;font-size:13px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.valid-main .table-wrap,.valid-card .table-wrap{border:none;border-radius:0;max-height:40vh}.valid-grid{display:grid;grid-template-columns:1fr 1fr;gap:0}.pick-head{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.pick-head h6{margin:0}.pick-table{max-height:60vh}.modal-foot .grow{margin-right:auto;text-align:left}.legend-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:6px 12px;font-size:12px}.legend-bar .tag{padding:2px 8px;border-radius:4px;font-size:11px;font-weight:700;color:#fff}.same-curban-tag{background:#0ea5e9}.same-ban-tag{background:#22c55e}.diff-ban-tag{background:#ef4444}.samename-tag{background:#f59e0b}.group-tag{background:#a855f7}.student-info{flex-basis:100%;min-height:1.2rem;font-size:12.5px}.all_class_container{display:flex;flex-wrap:wrap;gap:6px;padding:4px 10px 8px;align-items:flex-start;min-height:300px}.class-container{flex:1 0 150px;min-width:150px;max-width:220px;background:#f8fafc;border:2px solid #e2e8f0;border-radius:8px;padding:4px;display:flex;flex-direction:column;gap:2px;transition:border-color .15s}.class-container.droppable{border-color:#93c5fd;border-style:dashed}.class-container.unassigned{border-color:#f59e0b;background:#fffbeb}.class-container .info{background:linear-gradient(135deg,#1e3a5f,#0f172a);color:#fff;border-radius:6px;padding:4px 5px;display:flex;align-items:center;gap:4px}.class-container .info h5{margin:0;font-size:14px;font-weight:800;flex:0 0 auto}.count-display{display:inline-flex;align-items:center;font-size:11px;font-weight:600;line-height:16px;border-radius:999px;background:#ffffff24;padding:0 1px;font-variant-numeric:tabular-nums;letter-spacing:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.count-display>span{padding:0 4px;white-space:nowrap}.count-display>span+span{border-left:1px solid rgba(255,255,255,.22)}.male-count{color:#7dd3fc}.female-count{color:#f9a8d4}.total-count{color:#fde68a}.eq-count-display{margin-left:auto;display:flex;gap:2px}.student{font-size:11.5px;line-height:16px;min-height:22px;padding:2px 6px;border-radius:5px;border:1px solid transparent;cursor:grab;background:#fff;white-space:nowrap;overflow:hidden;display:grid;grid-template-columns:3.5em minmax(0,1fr) auto;align-items:center;column-gap:5px;--rel-bar: transparent;--rel-ring: transparent;--rel-lift: 0 0 transparent;position:relative;box-shadow:inset 3px 0 0 var(--rel-bar),0 0 0 2px var(--rel-ring),var(--rel-lift)}.student.student-M{background:#e0f2fe;border-color:#bae6fd}.student.student-F{background:#fce7f3;border-color:#fbcfe8}.student:hover{filter:brightness(.96)}.student.selected{outline:2px solid var(--hx-primary);outline-offset:1px;--rel-lift: 0 3px 10px rgba(67, 56, 202, .35);z-index:3;font-weight:700}.student.rel-same-curban{--rel-bar: #0ea5e9}.student.rel-same-ban{background:#dcfce7;border-color:#86efac;--rel-ring: #16a34a}.student.rel-diff-ban{background:#fee2e2;border-color:#fca5a5;--rel-ring: #dc2626}.student.rel-twin{background:#e0e7ff;border-color:#a5b4fc;--rel-ring: #4f46e5}.student.rel-samename{background:#fef3c7;border-color:#fcd34d;--rel-ring: #d97706}.student.rel-group{background:#f3e8ff;border-color:#d8b4fe;--rel-ring: #9333ea}.student.rel-same-ban,.student.rel-diff-ban,.student.rel-twin,.student.rel-samename,.student.rel-group{--rel-lift: 0 2px 7px rgba(15, 23, 42, .26);z-index:2}.rel-ico{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;font-size:11px;line-height:1;border-radius:50%;background:#fff;box-shadow:0 0 0 1px #0f172a2e;filter:saturate(1.3)}.legend-bar .rel-ico{width:18px;height:18px;font-size:13px}.student-name.samename{background:#1e293b;color:#fff;border-radius:3px;padding:0 3px}.legend-bar .rel-tag{display:inline-flex;align-items:center;gap:4px;background:#f1f5f9;color:#334155;border:1px solid #e2e8f0}.legend-hint{font-size:11px;color:var(--muted);font-weight:600}.rel-bar{display:inline-block;width:3px;height:13px;border-radius:2px;background:#0ea5e9}.twin-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.twin-row .grow{flex:1 1 200px;min-width:160px;word-break:keep-all}.form-table td .twin-row .form-control-sm{flex:0 0 auto;width:190px;min-width:190px}.twin-hint{margin:3px 0 0;font-size:11px;color:#4338ca;font-weight:600}.student.transfer{opacity:.6}.student.transfer .student-name{text-decoration:line-through;text-decoration-thickness:1px}.student-id{display:grid;grid-template-columns:1fr auto 1.5em;align-items:center;color:#64748b;font-size:10.5px;font-weight:600;line-height:16px;letter-spacing:-.03em;font-variant-numeric:tabular-nums;overflow:hidden}.sid-ban{text-align:right}.sid-sep{padding:0 1px;opacity:.45}.sid-no{text-align:right}.legend-card .student-id.legend-id{display:inline-block}.student-main{min-width:0;overflow:hidden;text-overflow:ellipsis;line-height:16px}.student-name{font-weight:700}.student-meta{display:inline-flex;align-items:center;justify-content:flex-end;gap:3px;height:16px}.student-rank{min-width:1.35em;text-align:right;color:#64748b;font-size:10px;line-height:16px;font-weight:700;font-variant-numeric:tabular-nums}.legend-card .student-id,.legend-card .student-rank{display:inline-block;background:#fff;border:1px solid #e2e8f0;border-radius:3px;padding:0 3px;min-width:0}.badge-eq{display:inline-block;min-width:16px;height:15px;line-height:15px;white-space:nowrap;font-size:10px;font-weight:600;letter-spacing:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;border-radius:3px;color:#fff;padding:0 4px}.badge-eq1{background:#f97316}.badge-eq2{background:#8b5cf6}.badge-eq3{background:#0d9488}.badge-transfer{background:#64748b;color:#fff;font-size:9.5px;font-weight:600;-webkit-font-smoothing:antialiased;border-radius:3px;padding:0 4px}.cross-head{display:flex;align-items:center;justify-content:space-between;padding:4px 12px}.cross-head h6{margin:0;font-size:13px}.adjust .table-wrap{margin:0 8px 8px}.ssm-list.adjust>*{flex-shrink:0}.fullscreen-btn{background:#0f172a;color:#fff;border:none;border-radius:6px;padding:4px 10px;font-size:12px}.adjust.fullscreen{position:fixed;inset:0;z-index:40;min-height:100vh;border-radius:0;overflow:auto}.notice-layout{display:grid;grid-template-columns:minmax(0,4fr) 48px minmax(0,5fr);gap:8px;padding:10px;align-items:start;container-type:inline-size;--page-w: min(640px, calc((100cqw - 64px) * 5 / 9))}.notice-page.edit{--page-w: min(640px, calc((100cqw - 64px) * 4 / 9))}.screen.notice{container:notice / inline-size}@container notice (max-width: 1060px){.notice-layout{grid-template-columns:1fr}.notice-apply .btn-round-primary{rotate:90deg}.notice-layout,.notice-page.edit{--page-w: min(640px, 100cqw)}}.notice-page{background:#fff;border:1px solid #cbd5e1;box-shadow:0 4px 16px #00000014;color:#111;width:var(--page-w, 640px);max-width:100%;margin:0 auto;aspect-ratio:210 / 297;min-height:0;overflow:auto;display:flex;flex-direction:column;--pt: calc(var(--page-w, 640px) / 794 * 4 / 3);padding:calc(var(--pt) * 34.5);font-size:calc(var(--pt) * 11.5);line-height:1.65;font-family:Malgun Gothic,맑은 고딕,Segoe UI,sans-serif}.notice-page p{margin:4px 0}.notice-gap{flex-basis:0;min-height:0}.notice-page .nl-title{font-size:calc(var(--pt) * 15)}.notice-page .nl-head{font-size:calc(var(--pt) * 19);letter-spacing:.04em}.notice-page .nl-who{font-size:calc(var(--pt) * 12.5)}.notice-page .nl-school{font-size:calc(var(--pt) * 14)}.notice-page .nl-mark{font-size:calc(var(--pt) * 12)}.notice-page .nl-body{text-indent:.9em;text-align:justify}.notice-page .centered{text-align:center}.notice-page input.form-control-sm{width:100%;text-align:center;font-weight:700}.yellow-bg{background:#fff59d;padding:2px 6px}.notice-footer-img{margin-top:auto;width:100%;height:auto;display:block;border-radius:4px}.notice-apply{display:flex;align-items:center;justify-content:center;align-self:center}.notice-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 4px}.notice-top .btn-wizard-download{flex:0 0 auto;padding:8px 18px;font-size:12.5px}.notice-dl-hint{margin:6px 0 10px;font-size:11.5px;line-height:1.5;color:#475569;background:#f1f5f9;border-left:3px solid #94a3b8;border-radius:0 4px 4px 0;padding:5px 8px}.btn-round-primary{width:44px;height:44px;border-radius:50%;border:none;background:var(--hx-primary);color:#fff;font-size:20px;box-shadow:0 4px 12px #4f46e566}.btn-round-primary:hover{transform:scale(1.08)}.gd{display:flex;flex-direction:column;gap:18px;font-size:14px;line-height:1.6;color:#1e293b}.gd b{color:#0f172a}.gd-lead{display:flex;align-items:center;gap:14px;padding:14px 18px;border-radius:12px;background:linear-gradient(135deg,#eef2ff,#e0f2fe);border:1px solid #c7d2fe}.gd-lead-step{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;background:var(--hx-primary);color:#fff;font-size:22px;font-weight:800}.gd-lead-label{font-size:12px;font-weight:700;color:var(--hx-primary);letter-spacing:.02em}.gd-lead-text{font-size:16px;font-weight:700;color:#0f172a}.gd-sec{display:flex;flex-direction:column;gap:10px}.gd-sec-title{margin:0;font-size:15px;font-weight:800;color:#0f172a;padding-bottom:6px;border-bottom:2px solid #e2e8f0}.gd-flow{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:26px}.gd-flow-step{position:relative;flex:1 1 150px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:4px;padding:16px 10px 12px;border:1px solid #c7d2fe;border-radius:12px;background:#fff;box-shadow:0 1px 2px #0f172a0f}.gd-flow-step:not(:last-child):after{content:"▶";position:absolute;right:-20px;top:50%;transform:translateY(-50%);color:#818cf8;font-size:14px}.gd-flow-no{position:absolute;top:-11px;left:50%;transform:translate(-50%);min-width:22px;height:22px;padding:0 6px;border-radius:11px;background:var(--hx-primary);color:#fff;font-size:12px;font-weight:800;line-height:22px}.gd-flow-icon{font-size:26px;line-height:1.2}.gd-flow-title{font-size:14px}.gd-flow-desc{font-size:12.5px;color:#475569;line-height:1.45}.gd-cards{display:grid;gap:10px}.gd-cards.c2{grid-template-columns:repeat(2,minmax(0,1fr))}.gd-cards.c3{grid-template-columns:repeat(3,minmax(0,1fr))}.gd-cards.c4{grid-template-columns:repeat(4,minmax(0,1fr))}@media (max-width: 760px){.gd-cards.c3,.gd-cards.c4{grid-template-columns:repeat(2,minmax(0,1fr))}}.gd-card{--gd-c: #2563eb;--gd-bg: #eff6ff;border:1px solid color-mix(in srgb,var(--gd-c) 30%,transparent);border-top:4px solid var(--gd-c);border-radius:10px;background:var(--gd-bg);padding:10px 12px}.gd-card.green{--gd-c: #059669;--gd-bg: #ecfdf5}.gd-card.amber{--gd-c: #d97706;--gd-bg: #fffbeb}.gd-card.red{--gd-c: #dc2626;--gd-bg: #fef2f2}.gd-card.violet{--gd-c: #7c3aed;--gd-bg: #f5f3ff}.gd-card-head{display:flex;align-items:center;gap:8px;font-size:14px}.gd-card-icon{font-size:22px;line-height:1}.gd-card-body{margin-top:6px;font-size:13px;color:#334155;line-height:1.55}.gd-legend{display:flex;flex-direction:column;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden}.gd-legend-row{display:grid;grid-template-columns:minmax(150px,34%) 24px 1fr;align-items:center;gap:8px;padding:9px 12px;font-size:13px}.gd-legend-row:nth-child(odd){background:#f8fafc}.gd-legend-see{display:flex;flex-wrap:wrap;align-items:center;gap:6px;justify-content:flex-end}.gd-legend-arrow{color:#94a3b8;font-weight:700;text-align:center}.gd-btn{display:inline-flex;align-items:center;gap:4px;padding:1px 9px;border-radius:6px;font-size:12.5px;font-weight:700;white-space:nowrap;border:1px solid #cbd5e1;background:#f1f5f9;color:#334155;vertical-align:1px}.gd-btn.green{background:#059669;border-color:#059669;color:#fff}.gd-btn.blue{background:#4f46e5;border-color:#4f46e5;color:#fff}.gd-btn.red{background:#fee2e2;border-color:#fca5a5;color:#b91c1c}.gd-btn.magenta{background:#a21caf;border-color:#a21caf;color:#fff;border-radius:999px}.gd-btn.amber{background:#fef3c7;border-color:#fcd34d;color:#92400e}.gd-ways{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}@media (max-width: 760px){.gd-ways{grid-template-columns:1fr}}.gd-way{display:flex;flex-direction:column;gap:10px;padding:12px;border:1px solid #c7d2fe;border-radius:12px;background:#fff}.gd-way-head{display:flex;align-items:center;gap:8px;font-size:15px}.gd-way-no{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:var(--hx-primary);color:#fff;font-size:13px;font-weight:800}.gd-way .gd-mini{flex:1}.gd-way ol{margin:0;padding-left:20px;font-size:13px;line-height:1.7}.gd-mini-card.picked{border:2px solid #4f46e5;background:#eef2ff;font-weight:700}.gd-mini-card.cand{position:relative;padding-left:18px}.gd-mini-card.cand .swap-spark{left:5px}.gd-mini-box.wide{min-width:190px}.gd-mini-card.cand{padding-right:84px}.gd-mini-card.cand .swap-btn{display:inline-block;cursor:default}.gd-step{display:inline-flex;align-items:center;gap:5px;padding:1px 9px 1px 3px;border-radius:12px;background:#1e293b;color:#fff;font-size:12.5px;font-weight:700;white-space:nowrap;vertical-align:1px}.gd-step-no{display:inline-flex;align-items:center;justify-content:center;width:17px;height:17px;border-radius:50%;border:1.5px solid #a5b4fc;color:#e0e7ff;font-size:11px}.gd-note{display:flex;gap:10px;align-items:flex-start;padding:10px 14px;border-radius:10px;font-size:13.5px;border-left:5px solid}.gd-note-icon{font-size:18px;line-height:1.3}.gd-note.tip{background:#fffbeb;border-color:#f59e0b}.gd-note.warn{background:#fef2f2;border-color:#ef4444}.gd-note.ok{background:#ecfdf5;border-color:#10b981}.gd-mini{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:14px;padding:14px;border:1px dashed #cbd5e1;border-radius:12px;background:#f8fafc}.gd-mini-box{min-width:130px;border:1px solid #cbd5e1;border-radius:8px;background:#fff;overflow:hidden;font-size:12.5px}.gd-mini-box>header{padding:4px 10px;background:#e0e7ff;font-weight:800;text-align:center}.gd-mini-box>div{padding:8px;display:flex;flex-direction:column;gap:5px}.gd-mini-card{padding:3px 8px;border:1px solid #cbd5e1;border-radius:5px;background:#fff}.gd-mini-card.moving{border:2px solid #4f46e5;background:#eef2ff;font-weight:700}.gd-mini-card.ghost{border-style:dashed;color:#94a3b8}.gd-mini-arrow{font-size:13px;font-weight:800;color:#4f46e5;text-align:center}.gd-cell{display:inline-block;padding:2px 10px;border:1px solid #cbd5e1;border-radius:4px;background:#fff;font-variant-numeric:tabular-nums}.gd-cell small{color:#64748b}.gd-cell.link{color:#4f46e5;text-decoration:underline}.destroy .card{max-width:720px;margin:10px}.destroy .facts{padding:8px 20px}.common{padding:6px 8px;gap:.75rem}.common .screen-head h1{font-size:1.1rem}.harmonix-wrap{min-height:100%;display:flex;align-items:center;justify-content:center;padding:24px;background:radial-gradient(1200px 800px at 10% 10%,rgba(99,102,241,.18),transparent 50%),radial-gradient(1000px 700px at 90% 90%,rgba(34,211,238,.14),transparent 50%),linear-gradient(135deg,#0f172a,#0b1226 35%,#0e1b3d);color:#e2e8f0}.harmonix-card{display:grid;grid-template-columns:1.15fr 1fr;width:min(960px,100%);min-height:460px;border-radius:18px;overflow:hidden;background:linear-gradient(180deg,#ffffff0f,#ffffff05);border:1px solid rgba(148,163,184,.25);box-shadow:0 30px 80px #02061799;backdrop-filter:blur(6px)}.harmonix-left{padding:40px 36px;background:linear-gradient(180deg,#1e3a8a4d,#0f172a33);display:flex;flex-direction:column;gap:18px}.brand-title{font-size:26px;font-weight:800;letter-spacing:-.01em;color:#fff}.brand-title span{background:linear-gradient(135deg,#6366f1,#22d3ee);-webkit-background-clip:text;background-clip:text;color:transparent}.harmonix-left .brand-sub{color:#94a3b8;font-size:13px;letter-spacing:.08em;text-transform:uppercase}.info-links{display:flex;flex-direction:column;gap:10px;margin-top:8px}.info-link{background:#ffffff08;border:1px solid rgba(148,163,184,.2);border-radius:10px;padding:10px 12px;font-size:12.5px;line-height:1.6;color:#cbd5e1}.contact{margin-top:auto;font-size:12.5px;color:#94a3b8;display:flex;flex-direction:column;gap:4px}.harmonix-right{padding:40px 36px;display:flex;flex-direction:column;justify-content:center}.form-title{font-size:20px;font-weight:700;color:#fff;margin-bottom:18px}.harmonix-right .form-group{display:flex;align-items:center;gap:10px;background:#02061759;border:1px solid rgba(148,163,184,.25);border-radius:10px;padding:4px 10px}.harmonix-right .form-group:focus-within{border-color:#6366f1;background:#0206178c}.input-icon{color:#94a3b8}.input-ctrl{flex:1;background:transparent;border:none;color:#fff;padding:10px 4px;font-size:14px;outline:none}.input-ctrl::placeholder{color:#64748b;letter-spacing:.08em}.toggle-pass{background:none;border:none;color:#94a3b8;font-size:14px}.hr-line{border:none;height:1px;margin:10px 0;background:linear-gradient(90deg,transparent,rgba(148,163,184,.35),transparent)}.error-message{margin-top:10px;background:#ef44441f;border:1px solid rgba(239,68,68,.4);color:#fca5a5;border-radius:8px;padding:8px 10px;font-size:12.5px}.action-row{display:flex;gap:10px;margin-top:16px}.btn-primaryx{flex:1;background:linear-gradient(135deg,#6366f1,#22d3ee);color:#fff;border:none;border-radius:10px;padding:11px 16px;font-weight:700;font-size:14px;box-shadow:0 8px 24px #6366f159}.btn-primaryx:hover:not(:disabled){filter:brightness(1.08)}.helper-links{margin-top:14px;display:flex;flex-direction:column;gap:4px}.link-muted{color:#94a3b8;font-size:12px}@media (max-width: 760px){.harmonix-card,.card-group,.valid-grid{grid-template-columns:1fr}}.btn-gradient.teal{background:linear-gradient(135deg,#0f766e,#14b8a6)}.class-progress{display:flex;flex-wrap:wrap;gap:8px;padding:8px 12px;background:var(--bg-card);border:1px solid var(--border);border-top:0}.class-progress-item{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;min-width:150px;padding:6px 10px;border:1px solid var(--border);border-radius:8px;background:#fff;font-size:.8rem;cursor:pointer;transition:border-color .15s,box-shadow .15s}.class-progress-item:hover{border-color:var(--hx-primary)}.class-progress-item.active{border-color:var(--hx-primary);box-shadow:0 0 0 2px #4f46e526}.class-progress-item .cp-name{font-weight:700;color:var(--text)}.class-progress-item .cp-bar{height:6px;border-radius:3px;background:#e2e8f0;overflow:hidden;min-width:56px}.class-progress-item .cp-bar>span{display:block;height:100%;background:linear-gradient(90deg,#f59e0b,#fbbf24);transition:width .3s}.class-progress-item.done .cp-bar>span{background:linear-gradient(90deg,#059669,#10b981)}.class-progress-item .cp-count{color:var(--muted);font-variant-numeric:tabular-nums}.class-progress-item.done .cp-count{color:#047857;font-weight:600}.tpl{display:grid;gap:14px}.tpl-group{border:1px solid var(--border);border-radius:10px;padding:12px 14px;background:#fff}.tpl-group header{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:8px}.tpl-group header h3{margin:0;font-size:.95rem}.tpl-group header p{margin:0;color:var(--muted);font-size:.8rem;flex:1 1 320px}.tpl-links{display:inline-flex;gap:8px;font-size:.8rem}.tpl-required{background:#fffbeb;border-color:#fde68a}.tpl-chips{list-style:none;margin:0;padding:0;display:flex;gap:6px;flex-wrap:wrap}.chip-required{background:#fef3c7;color:#92400e;border:1px solid #fcd34d}.tpl-radios{display:flex;gap:8px;flex-wrap:wrap}.tpl-radio{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid var(--border);border-radius:999px;font-size:.85rem;cursor:pointer}.tpl-radio.on{border-color:var(--hx-primary);background:var(--primary-soft);color:var(--hx-primary);font-weight:600}.tpl-options{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:6px}.tpl-option{display:grid;grid-template-columns:auto 1fr;gap:2px 8px;align-items:center;padding:6px 8px;border:1px solid var(--border);border-radius:8px;cursor:pointer;font-size:.85rem;transition:background .1s,border-color .1s}.tpl-option:hover{border-color:#c7d2fe}.tpl-option.on{background:#eef2ff;border-color:#c7d2fe}.tpl-option input{grid-row:span 2}.tpl-option-name{font-weight:600}.tpl-option-note{color:var(--muted);font-size:.74rem;line-height:1.3}.tpl-sample{display:inline-flex;gap:6px;align-items:center;font-size:.85rem;color:var(--muted)}.modal-foot-note{margin-right:auto;color:var(--muted);font-size:.8rem;align-self:center}.modal-foot-check{margin-right:auto;display:inline-flex;gap:6px;align-items:center;font-size:.85rem;align-self:center}.lead-note{margin:0;color:var(--text);font-size:.88rem;line-height:1.6}.class-pick{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px}.class-pick-item{display:grid;grid-template-columns:auto 1fr;gap:0 8px;align-items:center;padding:8px 10px;border:1px solid var(--border);border-radius:8px;cursor:pointer;background:#fff}.class-pick-item.on{border-color:#99f6e4;background:#f0fdfa}.class-pick-item input{grid-row:span 2}.class-pick-name{font-weight:700}.class-pick-meta{color:var(--muted);font-size:.78rem}.file-list{list-style:none;margin:0;padding:0;display:grid;gap:6px;font-size:.82rem}.file-list code{word-break:break-all;background:#f8fafc;padding:2px 6px;border-radius:4px}.alert-ok{background:#ecfdf5;border:1px solid #a7f3d0;color:#065f46;border-radius:6px;padding:10px 12px;font-size:.85rem;line-height:1.6}.alert-warn{background:#fffbeb;border:1px solid #fde68a;color:#78350f;border-radius:6px;padding:10px 12px;font-size:.85rem;line-height:1.6}.warn-list{margin:8px 0 0;padding:8px 12px 8px 28px;background:#fffbeb;border:1px solid #fde68a;border-radius:6px;color:#78350f;font-size:.8rem;line-height:1.5}.collect-table{font-size:.82rem}.collect-table th{white-space:nowrap}.collect-table .td-file{max-width:260px;word-break:break-all}.collect-table .td-num{text-align:right;font-variant-numeric:tabular-nums}.collect-table .td-status details summary{cursor:pointer}.collect-table .row-error td{background:#fef2f2}.c-err{color:var(--error)}:root{--hx-radius: 10px;--hx-shadow: 0 1px 2px rgba(15, 23, 42, .05), 0 4px 14px -6px rgba(15, 23, 42, .12);--hx-focus: 0 0 0 3px rgba(79, 70, 229, .18)}.content{padding:.75rem .9rem 1.25rem}.ssm-list{border-radius:var(--hx-radius);box-shadow:var(--hx-shadow);overflow:hidden}.ssm-list>.card-header{padding:10px 14px}.ssm-list>.card-header.search-bar{background:#f8fafc;gap:14px}.search-bar .search-item label{color:#64748b;font-weight:600}.toolbar{justify-content:space-between;row-gap:8px}.toolbar-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:13.5px;color:var(--hx-text);min-width:0}.toolbar-groups{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.btn-group{display:inline-flex;gap:4px;padding:3px;background:#f1f5f9;border-radius:10px}.btn-group+.btn-group{margin-left:2px}.count-pill{border-radius:999px;background:#eef2ff;color:#3730a3;padding:3px 12px;font-weight:600;font-size:12.5px}.count-pill b{font-weight:800}.btn-gradient{height:32px;padding:0 14px;border-radius:8px;font-size:12.5px;box-shadow:0 1px 2px #0f172a1f}.btn-gradient:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 10px #0f172a2e;filter:saturate(1.08)}.btn-gradient:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.btn-gradient.round{height:32px;padding:0 14px}.btn-outline{height:32px;padding:0 12px;border-radius:8px;border-width:1.5px;font-size:12.5px;display:inline-flex;align-items:center;gap:5px}.btn-primary,.btn-secondary,.btn-danger{border-radius:8px}.form-control-sm,.form-control{border-radius:6px;transition:border-color .12s,box-shadow .12s}.form-control-sm{height:30px;padding:2px 10px}.form-control-sm:focus,.form-control:focus{outline:none;border-color:var(--hx-primary);box-shadow:var(--hx-focus)}.ssm-table-wrap{margin:8px 12px 4px;border:1px solid var(--border);border-radius:8px}.ssm-table{font-size:12.5px}.ssm-table th.th-get,.ssm-table th.th-get-footer{background:#f8fafc;color:#475569;border:0;border-bottom:1px solid #e2e8f0;border-right:1px solid #f1f5f9;padding:7px 8px;font-size:11.5px;letter-spacing:-.01em;box-shadow:inset 0 -1px #e2e8f0}.ssm-table th.th-get:last-child{border-right:0}.ssm-table td{border:0;border-bottom:1px solid #f1f5f9;border-right:1px solid #f8fafc;padding:5px 8px}.ssm-table tbody tr:nth-child(2n) td{background:#fcfcfd}.ssm-table tbody tr:hover td{background:#f1f5f9}.ssm-table tr.selected-row td,.ssm-table tr.selected-row:hover td{background:#eef2ff}.ssm-table td.td-get-r{font-variant-numeric:tabular-nums}.badge{border-radius:999px;padding:2px 9px;font-size:11px;font-weight:700;margin-left:0}.badge-success{background:#dcfce7;color:#166534}.badge-secondary{background:#f1f5f9;color:#64748b}.badge-info{background:#e0f2fe;color:#075985}.banner{padding:.45rem .9rem;border-radius:8px;box-shadow:none;border:1px solid var(--border);border-left-width:4px;font-size:.82rem;gap:.5rem;margin-bottom:.6rem}.banner-detail{width:auto}.modal{border-radius:12px;box-shadow:0 24px 60px -12px #0f172a59}.modal-head{padding:.85rem 1.15rem}.modal-head h2{font-size:1rem}.modal-foot{background:#f8fafc;border-radius:0 0 12px 12px}.file-pick{border-radius:8px;transition:border-color .12s,background .12s}.file-pick:hover{border-color:var(--hx-primary);background:#eef2ff}.foot-note{padding:8px 14px 10px;color:var(--muted)}.ssm-table td.td-get-l{min-width:96px;word-break:keep-all}.inline-warn{display:inline-block;margin-left:6px;color:#92400e;background:#fffbeb;border:1px solid #fde68a;border-radius:6px;padding:2px 8px;font-size:.78rem}.upload-preview{display:grid;gap:8px}.diff-pills{list-style:none;margin:0;padding:0;display:flex;gap:6px;font-size:.8rem;font-weight:700}.diff-pills li{padding:2px 10px;border-radius:999px}.pill-new{background:#dcfce7;color:#166534}.pill-upd{background:#e0f2fe;color:#075985}.pill-zero{background:#f1f5f9;color:#64748b}.ack-delete{display:grid;grid-template-columns:auto 1fr;gap:8px;align-items:start;padding:8px 10px;border:1px solid #fecaca;background:#fef2f2;border-radius:6px;font-size:.82rem;color:#7f1d1d;cursor:pointer}#upload-near-names{display:block;border-color:#fde68a;background:#fffbeb;color:#78350f}#upload-near-names .near-name{display:block;margin:4px 0 0 4px;font-weight:600;cursor:pointer}#upload-renumbered summary{cursor:pointer}#upload-renumbered .near-name{display:block;margin:2px 0 0 4px;cursor:pointer}#upload-near-names .near-name-group{margin:6px 0 0 4px;padding:2px 0 2px 10px;border:0;border-left:2px solid #fcd34d}#upload-near-names .near-name-group legend{padding:0;font-weight:700}#upload-near-names .near-name-group .near-name{font-weight:500}.dashboard-card{min-height:0}.shell{grid-template-rows:minmax(0,1fr);min-height:0}.content-wrapper{min-height:0}.issue-list{margin:8px 0 0;padding:0;list-style:none;display:grid;gap:6px;font-size:.82rem}.issue-list .chip{margin-right:4px}.info-pick{display:grid;gap:6px}.info-pick-row{display:flex;gap:6px;flex-wrap:wrap}.flag-row{display:flex;gap:14px;align-items:center;flex-wrap:wrap;font-size:.85rem}.flag-row label{display:inline-flex;gap:5px;align-items:center;cursor:pointer}.flag-row .hint{color:var(--muted);font-size:.78rem}.form-control-sm.wide{width:100%}.btn-group-wrap{display:grid;gap:2px}.btn-group-cap{font-size:.68rem;font-weight:700;letter-spacing:.02em;color:var(--muted);padding-left:4px}:root{--hx-primary: #4338ca;--hx-secondary: #0e7490;--hx-accent: #a5b4fc;--primary: #4338ca;--primary-dark: #3730a3;--primary-soft: rgba(67, 56, 202, .1);--success: #047857;--error: #b91c1c;--warning: #b45309;--bg: #f4f6f9;--hx-teal: #0f766e;--hx-info: #0e7490;--hx-gray: #475569;--hx-purple: #5b21b6;--hx-danger: #b91c1c;--hx-btn-shadow: inset 0 1px 0 rgba(255, 255, 255, .14), 0 1px 1px rgba(15, 23, 42, .18)}.btn-gradient{background-image:none;box-shadow:var(--hx-btn-shadow);text-shadow:0 1px 0 rgba(0,0,0,.12)}.btn-gradient:hover:not(:disabled){filter:brightness(.94);transform:translateY(-1px);box-shadow:inset 0 1px #ffffff24,0 3px 8px #0f172a33}.btn-gradient.primary{background:var(--hx-primary)}.btn-gradient.success{background:var(--success)}.btn-gradient.info{background:var(--hx-info)}.btn-gradient.gray{background:var(--hx-gray)}.btn-gradient.cyan{background:var(--hx-secondary)}.btn-gradient.purple{background:var(--hx-purple)}.btn-gradient.danger{background:var(--hx-danger)}.btn-gradient.teal{background:var(--hx-teal)}.btn-outline{color:#3730a3;border-color:#a5b4fc}.btn-outline:hover:not(:disabled){background:#eef2ff}.btn-primary{background:var(--hx-primary)}.btn-primary:hover:not(:disabled){background:var(--primary-dark)}.btn-danger,.btn-destroy{background:var(--hx-danger)}.harmonix-topbar:after{background:linear-gradient(90deg,#4338ca,#0e7490);opacity:.85}.sidebar-toggle{background:var(--hx-primary)}.step-item.completed .step-number{background:var(--success)}.step-item.completed .step-label{color:#065f46}.step-item.current .step-number{background:var(--hx-primary)}.step-prepare .card-header .step-number{background:var(--hx-info)}.step-execute .card-header .step-number{background:var(--hx-primary)}.step-complete .card-header .step-number{background:var(--success)}.badge-complete{background:#d1fae5;color:#065f46}.badge-pending{background:#fee2e2;color:#991b1b}.c-ok{color:#047857}.c-warn{color:#b45309}.badge-success{background:#d1fae5;color:#065f46}.badge-danger{background:#fee2e2;color:#991b1b}.badge-info{background:#cffafe;color:#155e75}.chip-ok{background:#d1fae5;color:#065f46}.chip-warn{background:#fef3c7;color:#92400e}.chip-error{background:#fee2e2;color:#991b1b}.chip-primary{background:#e0e7ff;color:#3730a3}.class-progress-item .cp-bar>span{background:#d97706}.class-progress-item.done .cp-bar>span{background:var(--success)}.class-progress-item.done .cp-count{color:#065f46}.same-curban-tag{background:#0369a1}.same-ban-tag{background:#047857}.diff-ban-tag{background:#b91c1c}.samename-tag{background:#b45309}.badge-eq1{background:#c2410c}.badge-eq2{background:#5b21b6}.badge-eq3{background:#0f766e}.student.rel-same-ban{--rel-ring: #047857}.student.rel-diff-ban{--rel-ring: #b91c1c}.student.rel-twin{--rel-ring: #4338ca}.student.rel-samename{--rel-ring: #b45309}.student.rel-group{--rel-ring: #5b21b6}.alert-info{background:#eef4ff;border-color:#c7d2fe;color:#1e3a8a}.alert-ok{background:#ecfdf5;border-color:#a7f3d0;color:#065f46}.alert-warn{background:#fef8e7;border-color:#fcd9a0;color:#7c2d12}.upload-result .ok{color:#047857}.count-pill{background:#e0e7ff;color:#312e81}.pill-new{background:#d1fae5;color:#065f46}.pill-upd{background:#dbeafe;color:#1e3a8a}.pill-del{background:#fee2e2;color:#991b1b}.notice-footer-img{background:linear-gradient(180deg,#e0f2fe,#dbeafe)}.yellow-bg{background:#fef3c7}.btn-primaryx{background:var(--hx-primary)}.btn-primaryx:hover:not(:disabled){background:var(--primary-dark)}.brand-title span{background:linear-gradient(135deg,#a5b4fc,#67e8f9);-webkit-background-clip:text;background-clip:text}.ssm-table tr.selected-row td,.ssm-table tr.selected-row:hover td{background:#e0e7ff}.ssm-table tr.target-row{background:#fef3c7}.step1-panels{display:grid;grid-template-columns:1fr 1.4fr;gap:12px;padding:12px 14px 4px;background:#f8fafc;border-bottom:1px solid var(--border)}.step1-panel{background:#fff;border:1px solid var(--border);border-radius:10px;padding:14px 16px;display:flex;flex-direction:column;gap:10px;align-items:flex-start}.step1-panel>p{margin:0;color:var(--text-2, #475569);font-size:.85rem;line-height:1.55}.step1-panel-head{display:flex;align-items:center;gap:8px}.step1-panel-head h3{margin:0;font-size:1rem}.step-dot{width:24px;height:24px;border-radius:50%;background:var(--hx-primary);color:#fff;font-weight:800;font-size:.8rem;display:grid;place-items:center}.step1-upload.over{border-color:var(--hx-primary);background:#eef2ff}.step1-upload .file-pick,.step1-upload .upload-result{width:100%}.step1-actions{display:flex;gap:10px;align-items:center}.step1-upload>p.small{margin:0}@media (max-width: 1100px){.step1-panels{grid-template-columns:1fr}}.stale-banner{margin:8px 12px 0}.stale-banner ul{margin:6px 0;padding-left:20px}.step-item.optional .step-number{background:#e2e8f0;color:#64748b}.step-item{position:relative}.step-dot-warn{position:absolute;top:2px;right:14px;width:8px;height:8px;border-radius:50%;background:#dc2626;box-shadow:0 0 0 2px #fff}.pick-classes{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin:6px 0 8px}.pick-class{padding:3px 10px;border-radius:999px;border:1px solid var(--border);background:#fff;font-size:.8rem;cursor:pointer}.pick-class.on{background:var(--hx-primary);color:#fff;border-color:var(--hx-primary)}.incoming{color:var(--muted)}.login-note{color:#cbd5e1;font-size:12.5px;line-height:1.65;margin:-6px 0 14px}.login-note b{color:#fff}.login-links{display:flex;justify-content:space-between;gap:10px;margin-top:12px}.harmonix-right .link-btn{background:none;border:none;padding:0;color:var(--hx-accent);font-size:12.5px;cursor:pointer;text-decoration:underline;text-underline-offset:3px}.harmonix-right .link-btn.muted{color:#94a3b8;text-decoration:none}.harmonix-right .link-btn:hover{color:#fff}.btn-secondaryx{background:#94a3b824;color:#e2e8f0;border:1px solid rgba(148,163,184,.35);border-radius:10px;padding:11px 14px;font-weight:600;font-size:13px;cursor:pointer}.btn-secondaryx:hover{background:#94a3b83d}.recovery-box{background:#02061759;border:1px solid rgba(148,163,184,.25);border-radius:10px;padding:12px 14px;margin-bottom:12px}.recovery-label{color:#94a3b8;font-size:12px;margin-bottom:4px}.recovery-hint{color:#fff;font-size:16px;font-weight:600;word-break:break-all}.recovery-hint.muted{color:#94a3b8;font-weight:400;font-size:13px}.recovery-steps{margin:0 0 12px;padding-left:20px;color:#cbd5e1;font-size:12.5px;line-height:1.6;display:flex;flex-direction:column;gap:6px}.recovery-steps b{color:#fff}.install-id-row{display:flex;align-items:center;gap:10px;margin-top:4px}.install-id{font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:20px;font-weight:700;letter-spacing:.18em;color:#fff;background:#6366f138;border:1px solid rgba(165,180,252,.45);border-radius:8px;padding:4px 10px;user-select:all}.reset-code{width:100%;box-sizing:border-box;background:#02061759;border:1px solid rgba(148,163,184,.25);border-radius:10px;color:#fff;font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:12.5px;padding:8px 10px;margin-bottom:10px;resize:vertical}.reset-code:focus{outline:none;border-color:#6366f1}.demo-bar{display:flex;align-items:center;gap:12px;padding:6px 16px;background:#fff7ed;border-bottom:1px solid #fdba74;color:#7c2d12;font-size:.8rem;line-height:1.45}.demo-tag{flex:none;padding:2px 9px;border-radius:999px;background:#c2410c;color:#fff;font-weight:700;font-size:.72rem;letter-spacing:.04em}.demo-text{flex:1;min-width:0}.demo-text b{color:#9a3412}.demo-actions{flex:none;display:flex;gap:6px}.demo-btn{padding:4px 10px;border-radius:6px;border:1px solid #fdba74;background:#fff;color:#9a3412;font-size:.78rem;font-weight:600;text-decoration:none;cursor:pointer}.demo-btn:hover{background:#ffedd5}.demo-btn.primary{background:#c2410c;border-color:#c2410c;color:#fff}.demo-btn.primary:hover{background:#9a3412}@media (max-width: 900px){.demo-bar{flex-wrap:wrap}.demo-text{flex-basis:100%;order:3}}.topbar-title{flex:0 0 auto;max-width:320px}@media (max-width: 1480px){.harmonix-user-info span:last-child{display:none}.harmonix-user-info{padding:6px 10px}}@media (max-width: 1320px){.step-item .step-label{display:none}.step-item{padding:4px 5px}.topbar-title{max-width:240px}}@media (max-width: 1100px){.topbar-title{max-width:160px}}.tpl-options{display:block;columns:3;column-gap:6px}.tpl-options>li{break-inside:avoid;margin-bottom:6px}.tpl-option{align-items:start;padding:5px 8px 6px;gap:1px 8px}.tpl-option input{margin-top:3px}.tpl-option-name{line-height:1.3}@media (max-width: 980px){.tpl-options{columns:2}}@media (max-width: 620px){.tpl-options{columns:1}}.tpl-top{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);gap:10px;align-items:stretch}.tpl-top>.tpl-group{display:flex;flex-direction:column;justify-content:center}.tpl-top .tpl-group header{margin-bottom:6px}.tpl-top .tpl-group header p{flex:1 1 140px}.tpl-top .tpl-radios{flex-wrap:nowrap}.tpl-top .tpl-radio{padding:5px 10px;white-space:nowrap;font-size:.83rem}.tpl-top>.tpl-group{margin:0}.tpl,.tpl>.tpl-group,.tpl-top>.tpl-group{min-width:0}.tpl-preview .tpl-preview-scroll{overflow-x:auto;max-width:100%;border:1px solid var(--border);border-radius:8px;background:#fff}.tpl-sheet{border-collapse:collapse;font-size:.74rem;white-space:nowrap}.tpl-sheet th,.tpl-sheet td{border:1px solid #d9dee7;padding:3px 7px;text-align:center;max-width:130px;overflow:hidden;text-overflow:ellipsis}.tpl-sheet th{font-weight:700;line-height:1.2;white-space:pre;padding:3px 5px;min-width:38px;max-width:none;font-size:.71rem;vertical-align:top}.tpl-sheet td{padding:3px 5px;max-width:92px;white-space:nowrap}.tpl-sheet td{color:var(--muted)}.tpl-sheet .rowno{background:#f1f3f7;color:#94a3b8;font-weight:600;min-width:22px;padding:3px 4px;position:sticky;left:0}.tpl-sheet .g-required{background:#fff8e1}.tpl-sheet .g-student{background:#e8f1fb}.tpl-sheet .g-assign{background:#e9f5ea}.tpl-sheet tbody .g-required,.tpl-sheet tbody .g-student,.tpl-sheet tbody .g-assign{background:#fff}.tpl-preview .sw{display:inline-block;width:9px;height:9px;border:1px solid #cbd5e1;border-radius:2px;vertical-align:-1px;margin-left:4px}.tpl-preview .sw-req{background:#fff8e1}.tpl-preview .sw-stu{background:#e8f1fb}.tpl-preview .sw-asg{background:#e9f5ea}@media (max-width: 900px){.tpl-top{grid-template-columns:1fr}}.tpl-radios-lines{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:6px}.tpl-radios-lines .tpl-radio{align-items:flex-start;padding:7px 10px;border-radius:8px}.tpl-radios-lines .tpl-radio span{display:flex;flex-direction:column;gap:1px;text-align:left}.tpl-radios-lines .tpl-radio em{font-style:normal;font-size:.74rem;color:var(--muted);line-height:1.3}.tpl-advanced-off{background:#fbfcfe}.tpl-advanced-off header{margin-bottom:0}.tpl-advanced-note{margin:0 0 8px;font-size:.78rem;color:var(--muted)}.btn-outline.danger{color:#b91c1c;border-color:#fca5a5}.btn-outline.danger:hover:not(:disabled){background:#fef2f2;border-color:#b91c1c}.btn-outline:disabled{opacity:.45;cursor:not-allowed}.ack-check{display:flex;align-items:center;gap:8px;padding:10px 12px;border:1px solid #fca5a5;border-radius:8px;background:#fef2f2;font-size:.9rem;cursor:pointer}.ack-check input{width:16px;height:16px}.drop-zone{display:flex;flex-direction:column;gap:6px;padding:10px;border:1.5px dashed var(--border);border-radius:10px;background:#fbfcfe;transition:border-color .12s,background .12s}.drop-zone.over{border-color:var(--hx-primary);background:var(--primary-soft)}.drop-zone .drop-hint{font-size:.8rem;color:var(--muted);text-align:center}.step-item.current{background:#eef2ff;border:1.5px solid var(--hx-primary);box-shadow:0 1px 6px #4338ca2e}.step-item.current .step-label{font-weight:700}.step-item.current .step-number{position:relative;animation:step-ring 1.6s ease-out 2}@keyframes step-ring{0%{box-shadow:0 0 #4338ca8c}70%{box-shadow:0 0 0 9px #4338ca00}to{box-shadow:0 0 #4338ca00}}.step-item.current .step-arrow{color:var(--hx-primary)}@media (prefers-reduced-motion: reduce){.step-item.current .step-number{animation:none;box-shadow:0 0 0 3px #4338ca40}}.form-table td .level-row{display:flex;gap:8px;align-items:center}.form-table td .level-row select.form-control-sm.level{flex:0 0 128px;width:128px;min-width:0}.form-table td .level-row input.form-control-sm{flex:1 1 auto;width:auto;min-width:0}.form-table td>select.form-control-sm.level{width:160px}.cfg-wrap{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:12px;padding:10px 12px 16px;align-items:start}.cfg-main{display:flex;flex-direction:column;gap:12px;min-width:0}.cfg-card{border:1px solid var(--border);border-radius:10px;background:#fff;padding:12px 14px 14px}.cfg-card>header{border-bottom:1px solid var(--border-soft, #eef1f6);padding-bottom:8px;margin-bottom:10px}.cfg-card h3{margin:0;font-size:.98rem;color:var(--hx-primary)}.cfg-card>header p{margin:2px 0 0;font-size:.8rem;color:var(--muted)}.cfg-adv-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.cfg-field{display:grid;grid-template-columns:minmax(0,360px) minmax(0,1fr);gap:8px 18px;align-items:start;padding:9px 0;border-top:1px dashed #eef1f6}.cfg-field:first-of-type{border-top:0}.cfg-field>label{display:flex;flex-direction:column;gap:2px;font-size:.88rem}.cfg-help{font-size:.76rem;color:var(--muted);line-height:1.4}.cfg-input{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.cfg-input .form-control-sm{max-width:420px}.cfg-input .unit{font-size:.85rem;color:var(--muted)}.cfg-input.cfg-stack,.cfg-input.cfg-two{flex-direction:column;align-items:stretch}.cfg-mini{display:flex;align-items:center;gap:8px;font-size:.82rem;color:var(--muted)}.cfg-mini>span{flex:0 0 48px}.cfg-mini .form-control-sm{flex:1 1 auto}.cfg-input>.cfg-help{margin-top:1px;color:#4338ca;font-weight:600}.cfg-info{grid-column:1 / -1;margin:5px 0 2px;padding:7px 12px;border-left:3px solid #c7d2fe;background:#f7f8fc;border-radius:0 6px 6px 0;font-size:.79rem;line-height:1.7;color:#6b7280}.cfg-info:before{content:"설명";display:inline-block;margin-right:8px;padding:1px 6px;border-radius:3px;background:#eef2ff;color:var(--hx-primary);font-size:.71rem;font-weight:700;letter-spacing:.02em}.cfg-info b{color:#374151}.cfg-preview{position:sticky;top:8px;border:1px solid #c7d2fe;border-radius:10px;background:#f8faff;padding:12px 14px}.cfg-preview h3{margin:0 0 8px;font-size:.9rem;color:var(--hx-primary)}.cfg-preview-big{font-size:1.05rem;margin-bottom:8px}.cfg-preview-names{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:10px}.ban-chip{padding:2px 8px;border-radius:999px;background:#fff;border:1px solid #c7d2fe;font-size:.78rem;font-weight:600;color:var(--hx-primary)}.cfg-preview-list{list-style:none;margin:0 0 8px;padding:0;display:flex;flex-direction:column;gap:3px;font-size:.82rem;color:var(--muted)}@media (max-width: 1100px){.cfg-wrap{grid-template-columns:1fr}.cfg-preview{position:static}.cfg-field{grid-template-columns:1fr}}.form-control-sm.invalid{border-color:#dc2626;background:#fef2f2}.cfg-field-err{grid-column:2;margin:4px 0 0;font-size:.78rem;color:#b91c1c}.cfg-preview-warn{margin:0 0 6px;font-size:.78rem;color:#b91c1c}.cfg-help.c-err{color:#b91c1c}.locked-banner{margin:6px 10px;padding:9px 14px;border-radius:8px;border-left:4px solid #0d9488;background:#ecfdf5;color:#115e59;font-size:.85rem;font-weight:600}.locked-banner .btn-link{font-weight:700}.adjust .student[draggable=false]{cursor:default}.student-edit.locked input:not([readonly]),.student-edit.locked select,.student-edit.locked textarea,.student-edit.locked .clickable{pointer-events:none;background:#f1f5f9;color:#64748b}.student-edit.locked .clickable{opacity:.7}.student-edit .locked-banner{margin:0 0 10px}.valid-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.valid-extra{cursor:auto}.given-ban{display:inline-block;margin:2px 6px 2px 0;padding:2px 8px;border-radius:999px;background:#f1f5f9;font-size:11.5px;white-space:nowrap}.given-ban.clash{background:#fee2e2;color:#991b1b}.ssm-table tr.row-warn td{background:#fffbeb}.link-quiet{background:none;border:none;padding:0;font-size:11.5px;font-weight:500;color:var(--muted);text-decoration:underline dotted;text-underline-offset:3px;cursor:pointer;white-space:nowrap}.link-quiet:before{content:"ⓘ ";text-decoration:none}.link-quiet:hover{color:var(--hx-primary)}.row-end .grow{flex:1 1 auto;text-align:left}.ssm-table tr.clickable:hover td{background:#eef2ff}.ssm-table thead tr:first-child th.g1,.ssm-table thead tr:first-child th.g2,.ssm-table thead tr:first-child th.g3{background:#f8fafc;font-weight:800;letter-spacing:.01em}.ssm-table thead tr:first-child th.g1{border-bottom:3px solid #3b82f6;color:#1d4ed8}.ssm-table thead tr:first-child th.g2{border-bottom:3px solid #f59e0b;color:#b45309}.ssm-table thead tr:first-child th.g3{border-bottom:3px solid #10b981;color:#047857}.ssm-table th.blk,.ssm-table td.blk{border-left:2px solid #cbd5e1}.ssm-table.cross th.blk,.ssm-table.cross td.blk{border-left:2px solid #94a3b8}.ssm-table.cross th.ban-head{background:#e2e8f0;color:#0f172a;font-weight:800;letter-spacing:.06em}.ssm-table tbody tr:hover td{background:#f8fafc}.ssm-table tfoot th.th-get-footer{border-top:2px solid #cbd5e1}.ssm-table th.narrow,.ssm-table td.narrow{width:56px;min-width:56px;max-width:56px}.student.just-picked{animation:picked-flash .7s ease-out 3}@keyframes picked-flash{0%,to{box-shadow:inset 3px 0 0 var(--rel-bar),0 0 0 2px var(--rel-ring),0 0 #4f46e500}35%{box-shadow:inset 3px 0 0 var(--rel-bar),0 0 0 2px var(--rel-ring),0 0 0 6px #4f46e573}}@media (prefers-reduced-motion: reduce){.student.just-picked{animation:none}}.chip-info{background:#e0f2fe;color:#075985}.preflight-panel{margin:8px 0 12px}.preflight-block{margin-top:8px}.preflight-list{margin-top:4px}.preflight-ok{margin:4px 0 8px}.cfg-preflight{margin-top:12px;padding-top:10px;border-top:1px dashed var(--line, #e5e7eb)}.cfg-preflight h4{margin:0 0 4px;font-size:.85rem}.cfg-preflight .issue-list{font-size:.76rem}.e-num{position:relative}.e-sev{position:absolute;left:100%;top:50%;transform:translateY(-50%);margin-left:4px;font-size:.68rem;color:var(--muted, #6b7280);white-space:nowrap}.valid-main .table-wrap.full{max-height:none}.ssm-table th.no-col,.ssm-table td.no-col{width:36px;min-width:36px;max-width:36px;padding-left:2px;padding-right:2px}.student.spotted{background:#fef3c7!important;outline:2px solid #f59e0b;outline-offset:-2px}.student.just-spotted{animation:spot-flash .6s ease-out 2}@keyframes spot-flash{0%,to{outline-color:#f59e0b}50%{outline-color:#b45309;outline-width:3px}}@media (prefers-reduced-motion: reduce){.student.just-spotted{animation:none}}.custom-link.spot-on{background:#fde68a;border-radius:4px;padding:0 4px;font-weight:700;text-decoration:none}.spot-bar{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:8px;margin:4px 0;padding:4px 10px;background:#fffbeb;border:1px solid #fcd34d;border-radius:6px;font-size:.82rem}.spot-bar .btn-link{margin-left:auto}.spot-swatch{width:12px;height:12px;border-radius:3px;background:#fef3c7;outline:2px solid #f59e0b;display:inline-block}.ssm-list>.card-header.adjust-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;background:#f8fafc;padding:10px 14px 8px}.adj-group{display:flex;align-items:center;gap:8px}.adj-label{font-size:12px;font-weight:600;color:#64748b}.adj-find{flex:1 1 260px;min-width:180px;max-width:420px}.adj-problems{border:1px solid #fcd34d;border-radius:999px;background:#fffbeb;color:#92400e;font-size:12px;font-weight:700;padding:1px 10px;line-height:18px;cursor:pointer}.adj-problems.ok{border-color:#a7f3d0;background:#ecfdf5;color:#047857;cursor:default}.adj-problems.has:hover{background:#fef3c7}.adj-undo{padding-left:12px;padding-right:12px;font-size:16px}.adj-actions{margin-left:auto;flex-wrap:wrap;justify-content:flex-end}.adj-sep{width:1px;height:22px;background:#cbd5e1;margin:0 2px}.adj-badge{display:inline-block;min-width:18px;margin-left:6px;padding:0 5px;border-radius:9px;background:#fff;color:#047857;font-size:11px;font-weight:700;line-height:18px;text-align:center}.adj-hints{flex-basis:100%;display:flex;flex-wrap:wrap;gap:4px 16px;padding-top:6px;border-top:1px dashed #e2e8f0;font-size:12px;color:#64748b}.adj-hints kbd,.stu-find-kbd{display:inline-block;padding:0 6px;margin-right:4px;border:1px solid #cbd5e1;border-bottom-width:2px;border-radius:4px;background:#fff;color:#334155;font-family:inherit;font-size:11px;font-weight:600;line-height:18px}.stu-find{position:relative;flex:1;display:flex;align-items:center}.stu-find-ico{position:absolute;left:9px;font-size:13px;opacity:.6;pointer-events:none}.stu-find input{width:100%;height:32px;padding:0 64px 0 30px;border:1px solid #cbd5e1;border-radius:8px;background:#fff;font-size:13px}.stu-find input:focus{outline:none;border-color:#6366f1;box-shadow:0 0 0 3px #6366f12e}.stu-find-kbd{position:absolute;right:8px;margin:0;opacity:.7;pointer-events:none}.stu-find input:focus~.stu-find-kbd{display:none}.stu-find-list{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:30;margin:0;padding:4px;list-style:none;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 10px 24px #0f172a24;max-height:320px;overflow-y:auto}.stu-find-list button{display:flex;align-items:center;gap:8px;width:100%;padding:5px 8px;border:none;border-radius:6px;background:none;font-size:13px;text-align:left;cursor:pointer}.stu-find-list button.active{background:#eef2ff}.stu-find-name{font-weight:600}.stu-find-name.g-M{color:#1d4ed8}.stu-find-name.g-F{color:#be185d}.stu-find-ban{margin-left:auto;font-size:12px;color:#64748b}.stu-find-empty{padding:6px 8px;font-size:12px;color:#94a3b8}.adj-find{flex:0 0 176px;min-width:0;max-width:none}.stu-find input{padding-right:44px}.stu-find-list{right:auto;width:260px}.stu-find-clear{position:absolute;right:6px;border:none;background:none;color:#94a3b8;font-size:12px;cursor:pointer;padding:2px 4px}.stu-find-clear:hover{color:#475569}.adj-selected{margin-left:auto;max-width:min(640px,60%);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#475569}.adj-selected b{color:#1e293b}.adj-selected.adj-selected-none{color:#94a3b8}.adj-selected-label{display:inline-block;margin-right:6px;padding:0 6px;border-radius:4px;background:#eef2ff;color:#4338ca;font-size:11px;font-weight:600;line-height:18px}.student .student-name.found{background:#fde047;color:#1f2937;border-radius:3px;padding:0 2px;box-shadow:0 0 0 1px #eab308}.legend-bar{gap:10px 14px;margin:2px 0 6px;padding:8px 12px;background:#fff;border:1px solid #e2e8f0;border-radius:10px}.legend-sec{display:flex;align-items:center;flex-wrap:wrap;gap:6px 8px}.legend-title{font-size:11px;font-weight:700;color:#475569;letter-spacing:-.2px;white-space:nowrap}.legend-divider{align-self:stretch;width:1px;background:#e2e8f0}.student.legend-sample{width:168px;cursor:default;box-shadow:0 1px 3px #0f172a1f}.student.legend-sample:hover{filter:none}.legend-keys{display:inline-flex;flex-wrap:wrap;align-items:center;gap:2px 10px;font-size:11.5px;color:#64748b}.legend-keys b{color:#334155;font-weight:700}.legend-keys .badge-eq{margin-right:1px}.legend-sw{display:inline-block;width:10px;height:10px;border-radius:3px;vertical-align:-1px;margin-left:2px}.legend-sw-M{background:#e0f2fe;border:1px solid #7dd3fc}.legend-sw-F{background:#fce7f3;border:1px solid #f9a8d4}.class-container .student{box-shadow:inset 3px 0 0 var(--rel-bar),0 0 0 2px var(--rel-ring),var(--rel-lift),0 1px 1px #0f172a0f;transition:transform .08s ease,box-shadow .12s ease}.class-container .student:hover{filter:none;transform:translateY(-1px);box-shadow:inset 3px 0 0 var(--rel-bar),0 0 0 2px var(--rel-ring),var(--rel-lift),0 3px 8px #0f172a1f}.class-container .student .student-name{font-weight:600}.class-container .student .student-name:not(.samename):not(.found){color:#1e293b}@media (prefers-reduced-motion: reduce){.class-container .student{transition:none}.class-container .student:hover{transform:none}}.eq-count-display.eq-num-only{gap:2px;flex:0 0 auto}.eq-num-only .badge-eq{min-width:15px;padding:0 3px;text-align:center;font-size:10.5px;line-height:16px;font-variant-numeric:tabular-nums}.count-display.count-eq{padding:0 5px;gap:0}.count-display.count-eq>span{padding:0;border-left:none}.count-display.count-eq .count-op{color:#ffffff8c;margin:0 1px;font-weight:500}.count-display.count-eq .total-count{font-weight:800}.legend-count{padding:0 5px;border-radius:999px;background:#1e293b;font-weight:700;font-size:11px;color:#fff9}.confirm-warn{display:flex;gap:14px;align-items:flex-start;padding:2px 0}.confirm-warn-ico{flex:0 0 auto;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:#fef3c7;box-shadow:0 0 0 4px #fffbeb}.confirm-warn-body{flex:1;min-width:0;line-height:1.6}.move-lead{margin:0 0 6px}.move-issues{margin:0;padding:8px 12px 8px 26px;background:#fffbeb;border:1px solid #fde68a;border-radius:8px;color:#92400e}.move-issues li+li{margin-top:2px}.th-unit{font-weight:500;font-size:.85em;opacity:.75}.cross-title{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 10px;margin:14px 16px 8px;font-size:15px;font-weight:700;color:#1e3a8a;letter-spacing:-.2px}.cross-title-tag{padding:1px 8px;border-radius:999px;background:#d1fae5;color:#047857;font-size:11.5px;font-weight:700}.cross-title-sub{font-size:12.5px;font-weight:400;color:#64748b}.cross-head .cross-title{margin:6px 0}.ssm-table.cross th.blk,.ssm-table.cross td.blk{border-left:1px solid #cbd5e1}.ssm-table.cross th.ban-head{background:#eef2f7;color:#1e293b;font-weight:700;letter-spacing:.04em}.ssm-table.cross th.ban-head.grp-alt{background:#e5eaf1}.ssm-table.cross td.grp-alt{background:#fafbfd}.ssm-table.cross thead tr:nth-child(2) th.grp-alt{background:#f5f7fa}.ssm-table.cross td.grp-tot{font-weight:700}.ssm-table.cross thead th.grp-tot,.ssm-table.cross tfoot th.grp-tot{font-weight:800}.ssm-table.cross tbody td,.ssm-table.cross tfoot th{padding-top:3px;padding-bottom:3px;line-height:18px}.ssm-table.cross tbody tr:hover td{background:#fefce8}.swap-spark,.swap-spark-inline{color:#d946ef;font-weight:700;line-height:1;text-shadow:0 0 2px #f0abfc;animation:swap-pop .5s ease-out 1,swap-twinkle 1.4s ease-in-out .5s infinite}.swap-spark{position:absolute;top:50%;left:3px;margin-top:-6px;font-size:12px;pointer-events:none;z-index:1}.swap-spark-inline{display:inline-block;font-size:13px}@keyframes swap-pop{0%{transform:scale(.2) rotate(-45deg);opacity:0}to{transform:scale(1) rotate(0);opacity:1}}@keyframes swap-twinkle{0%,to{transform:scale(.9) rotate(0);opacity:.8;text-shadow:0 0 2px #f0abfc}50%{transform:scale(1.25) rotate(45deg);opacity:1;text-shadow:0 0 4px #f0abfc,0 0 9px #d946ef,0 0 14px #e879f9}}.swap-btn{position:absolute;right:3px;top:50%;transform:translateY(-50%);display:none;padding:0 7px;border:none;border-radius:999px;background:#a21caf;color:#fff;font-size:10.5px;font-weight:700;line-height:17px;cursor:pointer;box-shadow:0 1px 3px #a21caf59}.class-container .student.swap-cand:hover .swap-btn,.swap-btn:focus-visible{display:inline-block}.swap-btn:hover{background:#86198f}@media (prefers-reduced-motion: reduce){.swap-spark,.swap-spark-inline{animation:none}}.legend-swap.off{opacity:.5}.legend-swap.off .swap-spark-inline{animation:none}.swap-toggle{padding:0 8px;border:1px solid #cbd5e1;border-radius:999px;background:#fff;color:#64748b;font-size:11.5px;line-height:20px;cursor:pointer}.swap-toggle.on{border-color:#f0abfc;background:#fdf4ff;color:#a21caf;font-weight:600}.lic-apply{margin-top:18px;padding-top:16px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:12px}.lic-apply-head{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:8px}.lic-apply-head h3{margin:0;font-size:16px}.lic-price b{font-size:16px;color:var(--hx-primary)}.lic-apply-actions{display:flex;align-items:center;flex-wrap:wrap;gap:14px}.lic-mail{display:flex;flex-direction:column;gap:10px;min-width:min(520px,80vw)}.lic-mail p{margin:0;font-size:13px}.lic-mail-row{display:grid;grid-template-columns:72px 1fr auto;align-items:center;gap:10px}.lic-mail-row code{padding:7px 12px;border-radius:8px;background:#f1f5f9;font-family:inherit;font-size:14px;user-select:all}.lic-mail-label{font-size:13px;color:#475569}.lic-mail-bodyhead{display:flex;align-items:center;justify-content:space-between}.lic-mail-body{margin:0;padding:12px 14px;border-radius:8px;background:#f1f5f9;font-family:inherit;font-size:14px;line-height:1.7;white-space:pre-wrap;user-select:all}.lic-kakao{margin-left:8px;padding:1px 8px;border-radius:999px;background:#fee500;color:#3c1e1e;font-weight:600;white-space:nowrap}.support-info{width:100%;font-family:ui-monospace,Consolas,monospace;font-size:12px;line-height:1.5;padding:8px 10px;border:1px solid #cbd5e1;border-radius:6px;background:#f8fafc;resize:vertical}.sidebar-support{display:block;margin-top:4px;padding:0;border:none;background:none;color:#94a3b8;font-size:11px;cursor:pointer;text-decoration:underline dotted}.sidebar-support:hover{color:#e2e8f0}@supports (appearance: base-select){select,::picker(select){appearance:base-select}select{display:inline-flex;align-items:center;gap:8px;cursor:pointer}select::picker-icon{content:"";flex:none;width:7px;height:7px;margin-left:auto;border-right:2px solid currentColor;border-bottom:2px solid currentColor;opacity:.55;transform:translateY(-2px) rotate(45deg);transition:transform .15s ease}select:open::picker-icon{transform:translateY(2px) rotate(-135deg)}::picker(select){margin-top:6px;padding:5px;min-width:anchor-size(width);max-height:min(340px,60vh);overflow-y:auto;border:1px solid #e0e7ff;border-radius:12px;background:#fff;color:#1e293b;box-shadow:0 16px 36px #0f172a29,0 2px 6px #0f172a0f;font-family:Pretendard Variable,Pretendard,Malgun Gothic,맑은 고딕,Segoe UI,sans-serif}select option{display:flex;align-items:center;gap:10px;min-height:32px;padding:6px 12px;border-radius:8px;background:transparent;color:#1e293b;font-size:13.5px;font-weight:500;white-space:nowrap;cursor:pointer}select option:hover{background:#f1f5f9}select option:focus-visible{outline:none;background:#eef2ff;color:#3730a3}select option:checked{background:#eef2ff;color:#4338ca;font-weight:700}select option::checkmark{content:"✓";order:1;margin-left:auto;color:#4f46e5;font-weight:800}select option:disabled{color:#cbd5e1;cursor:default}.sidebar .scope-to select::picker-icon{opacity:.9}.sidebar .scope-to select::picker(select){margin-top:10px;min-width:150px}.sidebar .scope-to select option{min-height:36px;font-size:14.5px}}.count-pill .pill-btn{border:0;background:transparent;padding:1px 6px;border-radius:999px;font:inherit;color:inherit;cursor:pointer}.count-pill .pill-btn:hover{background:#ffffffb3}.count-pill .pill-btn.on{background:#fff;box-shadow:0 0 0 1px #312e8140}.ssm-table th .th-filter{border:0;background:transparent;font:inherit;color:inherit;cursor:pointer;padding:2px 6px;border-radius:6px;white-space:nowrap}.ssm-table th .th-filter:hover{background:#0000000f}.ssm-table th .th-filter.on{background:#fff4e5;color:#b45309}.next-step-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:0 0 10px;padding:8px 14px;border:1px solid #bbf7d0;border-left:4px solid #16a34a;border-radius:10px;background:#f0fdf4;color:#14532d;font-size:.92rem}.next-step-bar .nsb-check{font-weight:700;color:#16a34a}.next-step-bar .nsb-actions{display:flex;align-items:center;gap:12px}.next-step-bar .nsb-go{white-space:nowrap}.dashboard-card.clickable{cursor:pointer;transition:box-shadow .15s,transform .15s}.dashboard-card.clickable:hover{box-shadow:0 6px 18px #312e8124;transform:translateY(-1px)}.dashboard-card.is-next{outline:3px solid #6366f1;outline-offset:-1px}.dashboard-card .next-tag{margin-left:6px;padding:1px 8px;border-radius:999px;background:#6366f1;color:#fff;font-size:.72rem;font-weight:700;white-space:nowrap}.dashboard-card .go-hint{margin-left:auto;font-size:.78rem;color:#6366f1;font-weight:600;white-space:nowrap}.start-card{margin:12px;padding:22px 26px;border:1px solid #c7d2fe;border-radius:14px;background:#f5f7ff}.start-card h3{margin:0 0 10px;font-size:1.15rem}.start-card ol{margin:0 0 16px 1.2em;padding:0;line-height:1.9}.start-card .btn-gradient{font-size:1rem;padding:10px 18px}
