/* HYCU AI Studio — 시각 품질 레이어 (버튼·카드·입력·태그·내비) */
:root{--sh-1:0 1px 2px rgba(14,17,22,.05),0 1px 1px rgba(14,17,22,.03);--sh-2:0 1px 2px rgba(14,17,22,.04),0 4px 12px -2px rgba(14,17,22,.06);--sh-3:0 2px 4px rgba(14,17,22,.04),0 12px 28px -6px rgba(14,17,22,.12);--sh-blue:0 1px 2px rgba(26,58,156,.25),0 6px 16px -4px rgba(36,89,216,.45);--ease:cubic-bezier(.2,.8,.2,1);--v-bg:#F3F5F7;--v-line:#E4E7EB}
.v-app{background:radial-gradient(1200px 500px at 100% -10%,rgba(0,157,232,.05),transparent 60%),var(--v-bg)}

/* 버튼 */
.v-btn{position:relative;font-weight:600;letter-spacing:-.01em;border-radius:10px;border-color:#DCE0E5;box-shadow:var(--sh-1);transition:background .15s,border-color .15s,box-shadow .2s var(--ease),transform .12s var(--ease),color .15s}
.v-btn:hover:not(:disabled){background:#fff;border-color:#C5CCD4;box-shadow:var(--sh-2);transform:translateY(-1px)}
.v-btn:active:not(:disabled){transform:translateY(0) scale(.98);box-shadow:var(--sh-1)}
.v-btn:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(36,89,216,.28),var(--sh-1)}
.v-btn.pri{background:linear-gradient(180deg,#2E66E6 0%,#2350CC 100%);border-color:#1F48BC;box-shadow:var(--sh-blue),inset 0 1px 0 rgba(255,255,255,.22)}
.v-btn.pri:hover:not(:disabled){background:linear-gradient(180deg,#2459D8 0%,#1D45B5 100%);border-color:#1A3A9C;box-shadow:0 2px 4px rgba(26,58,156,.25),0 10px 22px -6px rgba(36,89,216,.55),inset 0 1px 0 rgba(255,255,255,.22)}
.v-btn.ink{background:linear-gradient(180deg,#232932,#0E1116);border-color:#0E1116;box-shadow:0 1px 2px rgba(0,0,0,.2),0 6px 14px -4px rgba(14,17,22,.4),inset 0 1px 0 rgba(255,255,255,.08)}
.v-btn.ink:hover:not(:disabled){background:linear-gradient(180deg,#2B323C,#14181E)}
.v-btn.txt{box-shadow:none;border-color:transparent}.v-btn.txt:hover:not(:disabled){box-shadow:none;transform:none;background:var(--v-blue-ss)}
.v-btn.sm{border-radius:8px}.v-btn.lg{border-radius:12px;font-size:15px}
.v-btn:disabled{opacity:1;color:#A3AAB3;background:#F4F5F7;border-color:#E6E8EB;box-shadow:none}
.v-btn.pri:disabled{background:#EEF2FD;border-color:#D9E2F8;color:#5A6FA8}
.v-btn>svg{transition:transform .2s var(--ease)}.v-btn:hover:not(:disabled)>svg{transform:translateX(0) scale(1.06)}

/* 카드 */
.v-card{border-color:var(--v-line);border-radius:16px;box-shadow:var(--sh-2)}
section.v-card{transition:box-shadow .25s var(--ease)}
.v-sec-t h2{font-size:17px;letter-spacing:-.02em}
.v-sec-t .n{width:26px;height:26px;font-size:12px;background:linear-gradient(180deg,#232932,#0E1116);box-shadow:0 2px 6px -1px rgba(14,17,22,.35)}

/* 주차 카드 · 템플릿 카드 · 과제 카드 */
.v-week{border-radius:14px;border-color:var(--v-line);box-shadow:var(--sh-1);transition:transform .18s var(--ease),box-shadow .2s var(--ease),border-color .15s}
.v-week-click:hover{transform:translateY(-2px);border-color:#B9CCF6;box-shadow:0 0 0 3px rgba(36,89,216,.08),var(--sh-3)}
.v-week .h b{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:6px;background:var(--v-blue-ss);color:var(--v-blue-dd);font-size:12px}
.v-tpl{border-radius:16px;border-width:1px;box-shadow:var(--sh-1);transition:transform .2s var(--ease),box-shadow .2s var(--ease),border-color .15s}
.v-tpl:hover{transform:translateY(-3px);border-color:#B9CCF6;box-shadow:var(--sh-3)}
.v-tpl.on{border-color:var(--v-blue);box-shadow:0 0 0 3px rgba(36,89,216,.18),var(--sh-3)}
/* 선택 표시는 TplCard의 .pick 하나만 씀(v2.css) — 여기서 ::after로 또 그리면 원이 겹쳐 보임 */
.v-task{border-radius:16px;transition:transform .2s var(--ease),box-shadow .2s var(--ease),border-color .15s}
.v-task:hover{transform:translateY(-2px);box-shadow:var(--sh-3);border-color:#C9DCEA}

/* 입력 */
.v-input{border-radius:10px;border-color:#DCE0E5;box-shadow:inset 0 1px 1px rgba(14,17,22,.03);transition:border-color .15s,box-shadow .15s}
.v-input:hover{border-color:#C5CCD4}
.v-input:focus{border-color:var(--v-blue);box-shadow:0 0 0 4px rgba(36,89,216,.14)}
select.v-input{appearance:none;padding-right:34px;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236B7280' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") right 10px center/16px no-repeat}

/* 태그 */
.v-tag{border-radius:999px;padding:0 10px;font-weight:600;box-shadow:inset 0 0 0 1px rgba(14,17,22,.04)}
.v-tag.blue{box-shadow:inset 0 0 0 1px rgba(36,89,216,.12)}.v-tag.green{box-shadow:inset 0 0 0 1px rgba(22,107,74,.12)}.v-tag.orange{box-shadow:inset 0 0 0 1px rgba(138,74,12,.12)}

/* 세그먼트 · 필터 · 토글 */
.v-seg{border-radius:12px;padding:4px;background:#E9ECEF;box-shadow:inset 0 1px 2px rgba(14,17,22,.06)}
.v-seg button{height:32px;border-radius:9px;padding:0 14px;transition:color .15s,background .15s,box-shadow .2s}
.v-seg button:hover:not(.on){color:var(--v-ink)}
.v-seg button.on{box-shadow:0 1px 2px rgba(14,17,22,.08),0 2px 6px -1px rgba(14,17,22,.08)}
.v-filter button{transition:all .15s var(--ease)}.v-filter button:hover:not(.on){border-color:#B8BEC6;color:var(--v-ink)}
.v-filter button.on{background:linear-gradient(180deg,#232932,#0E1116);box-shadow:0 2px 6px -1px rgba(14,17,22,.35)}
.v-toggle{width:44px;height:26px;border-radius:13px;box-shadow:inset 0 1px 2px rgba(14,17,22,.12);transition:background .2s var(--ease)}
.v-toggle::after{width:20px;height:20px;box-shadow:0 1px 3px rgba(14,17,22,.25);transition:left .22s var(--ease)}
.v-toggle.on{background:linear-gradient(180deg,#2E66E6,#2350CC)}.v-toggle.on::after{left:21px}
.v-chk{border-radius:6px;transition:all .15s}

/* 사이드 내비 */
.v-nav button{border-radius:10px;transition:background .15s,color .15s}
.v-nav button.on{background:#fff;color:var(--v-blue-dd);box-shadow:var(--sh-2);position:relative}
.v-nav button.on::before{content:'';position:absolute;left:-12px;top:10px;bottom:10px;width:3px;border-radius:0 3px 3px 0;background:var(--v-blue)}
.v-nav button.on svg{color:var(--v-blue)}
.v-nav .cnt{box-shadow:0 2px 6px -2px rgba(240,140,40,.6)}

/* 표 */
.v-table th{background:#F8F9FB;letter-spacing:.01em}
.v-table tbody tr{transition:background .12s}.v-table tbody tr:hover{background:#FAFCFE}

/* 모달 · 토스트 */
.v-modal{border-radius:20px;box-shadow:0 30px 80px -20px rgba(14,17,22,.4),0 0 0 1px rgba(14,17,22,.04);animation:mdIn .28s var(--ease)}@keyframes mdIn{from{transform:translateY(10px) scale(.98);opacity:0}}
.v-scrim{backdrop-filter:blur(3px);animation:sgIn .2s ease}

/* 검수 항목 · 파일 · 드롭존 */
.v-issue{transition:background .15s}.v-issue:hover{background:#FAFCFE}
.v-drop{border-radius:14px;transition:border-color .15s,background .15s}.v-drop:hover{border-color:var(--v-blue);background:var(--v-blue-ss)}
.v-file{border-radius:12px}

/* 홈 질문창 */
.v-ask{border-radius:20px;box-shadow:0 2px 4px rgba(14,17,22,.03),0 16px 40px -12px rgba(26,58,156,.18);transition:box-shadow .25s var(--ease),border-color .2s}
.v-ask:focus-within{border-color:#B9CCF6;box-shadow:0 0 0 4px rgba(36,89,216,.1),0 20px 48px -12px rgba(26,58,156,.25)}

/* 동작 줄이기(REQ-MO-015): 정보는 지우지 않고 움직임만 없앰 — 반복은 한 번, 시간·지연은 0에 가깝게(끝 상태로 바로: forwards·both면 마지막 모양, 채움 없음이면 기본 모양), 진행 막대·숫자는 전환 없이 바로, 스크롤은 바로 이동 */
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0s!important;transition-duration:.01ms!important;transition-delay:0s!important;scroll-behavior:auto!important}}
/* 화면 읽기 프로그램에만 들리는 글(진행 알림 영역 LiveSay) */
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

.v-sec-t{flex-wrap:wrap;row-gap:6px}.v-sec-t>span{white-space:nowrap}
.v-filter{flex-wrap:nowrap}

.v-stage.has-fx{padding-top:0}
.fx-bar{position:sticky;top:0;z-index:20;margin:0 0 14px;width:100%;background:#fff;border:1px solid #B9CCF6;border-radius:14px;box-shadow:0 0 0 4px rgba(36,89,216,.1),0 14px 30px -14px rgba(0,60,110,.35);padding:12px 14px 10px;display:grid;gap:8px;animation:fxIn .22s cubic-bezier(.2,.8,.2,1)}@keyframes fxIn{from{opacity:0;transform:translateY(-6px)}}
.fx-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.fx-h b{font-size:14px}.fx-dot{width:8px;height:8px;border-radius:50%;background:var(--v-blue);box-shadow:0 0 0 3px rgba(36,89,216,.2)}.fx-meta{font-size:12px;color:var(--v-mute);font-variant-numeric:tabular-nums}
.fx-ai{display:inline-flex;align-items:center;gap:4px;height:28px;padding:0 10px;border-radius:8px;border:1px solid #CDE8F8;background:var(--v-blue-ss);color:var(--v-blue-dd);font-size:12px;font-weight:600}.fx-ai:hover:not(:disabled){background:#DDF0FB}.fx-ai:disabled{opacity:.5}
.fx-close{width:28px;height:28px;border-radius:8px;border:0;background:#F1F3F5;color:var(--v-ink2);display:grid;place-items:center}.fx-close:hover{background:#E6E8EB}
.fx-ta{width:100%;resize:vertical;border:1px solid var(--v-line2);border-radius:10px;padding:10px 12px;font:inherit;font-size:15px;line-height:1.6;word-break:keep-all;color:var(--v-ink);background:#FAFCFE}.fx-ta:focus{outline:none;border-color:var(--v-blue);box-shadow:0 0 0 3px rgba(36,89,216,.14);background:#fff}
.fx-foot{font-size:11px;color:var(--v-faint)}
.pp-slide [data-field].fx-on{outline:3px solid #2FB4F5;outline-offset:2px;border-radius:4px;background:rgba(47,180,245,.06)}
.pp-slide [data-field][contenteditable]:hover{outline:2px dashed rgba(47,180,245,.6);outline-offset:2px;border-radius:4px;cursor:text}

/* 디자인 시스템 관리(관리자 전용) */
.ds-pal{display:flex;height:44px;border-radius:8px;overflow:hidden;border:1px solid var(--v-line)}
.ds-pal i{flex:1}
.ds-card .at-nm{font-weight:700}
.ds-err{font-size:12px;color:var(--v-red);line-height:1.5;word-break:keep-all}
.ds-empty{display:grid;justify-items:center;gap:6px;text-align:center;padding:48px 16px;border:1px dashed var(--v-line);border-radius:12px;color:var(--v-mute);margin-bottom:16px}
.ds-empty b{color:var(--v-ink2);font-size:15px}
.ds-tabs{display:flex;gap:4px;padding:4px;border-radius:10px;background:var(--v-bg2,#F3F4F6);margin-bottom:14px}
.ds-tabs button{flex:1;border:0;background:transparent;padding:8px 10px;border-radius:8px;font:inherit;font-size:13px;font-weight:600;color:var(--v-mute);cursor:pointer}
.ds-tabs button.on{background:#fff;color:var(--v-ink);box-shadow:0 1px 2px rgba(0,0,0,.08)}
.ds-help{font-size:13px;color:var(--v-ink2);line-height:1.6;margin:0 0 10px;word-break:keep-all}
.ds-note{font-size:12px;color:var(--v-mute);line-height:1.6;margin:10px 0 0;word-break:keep-all}
/* 템플릿 일치도 표 */
.ds-fid-wrap{overflow-x:auto}
.ds-fid{width:100%;border-collapse:collapse;font-size:13px;margin:6px 0 4px}
.ds-fid th,.ds-fid td{padding:7px 10px;border-bottom:1px solid var(--v-line);text-align:left;vertical-align:top;word-break:keep-all}
.ds-fid th{font-weight:600;color:var(--v-ink2);background:var(--v-bg2,#F6F7F9);white-space:nowrap}
.ds-fid small{color:var(--v-mute)}
.ds-fid td.ok{color:#15803D;font-weight:700}.ds-fid td.mid{color:#B45309;font-weight:700}.ds-fid td.low{color:#B91C1C;font-weight:700}
.ds-fid details summary{cursor:pointer;font-weight:600}
.ds-fid details .ds-fid{margin-top:8px;min-width:420px}
.ds-lb{display:block;font-size:13px;font-weight:600;margin:12px 0 6px}
.ds-modal{width:min(1080px,calc(100vw - 32px))}
.ds-concept{font-size:14px;line-height:1.7;color:var(--v-ink2);margin:0 0 6px;word-break:keep-all}
.ds-h{font-size:14px;margin:22px 0 10px}
.ds-refs{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.ds-refs img{width:100%;aspect-ratio:16/9;object-fit:cover;border-radius:6px;border:1px solid var(--v-line)}
.ds-sw{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px}
.ds-sw div{border:1px solid var(--v-line);border-radius:8px;overflow:hidden;font-size:12px}
.ds-sw i{display:block;height:36px}
.ds-sw b,.ds-sw span{display:block;padding:0 8px}.ds-sw b{padding-top:6px}.ds-sw span{padding-bottom:6px;color:var(--v-mute)}
.ds-type div{display:flex;align-items:baseline;gap:14px;padding:6px 0;border-bottom:1px solid var(--v-line)}
.ds-type code{width:120px;flex:none;font-size:12px;color:var(--v-mute)}
.ds-pages{display:grid;gap:6px}
.ds-pages div{display:grid;grid-template-columns:110px minmax(0,1fr);gap:10px;font-size:13px;line-height:1.6;padding:8px 10px;border:1px solid var(--v-line);border-radius:8px}
.ds-pages span{color:var(--v-ink2);word-break:keep-all}
.ds-comps{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px}
.ds-comp{border:1px solid var(--v-line);border-radius:10px;overflow:hidden}
.ds-comp-t{padding:10px 12px;font-size:13px;display:grid;gap:2px}.ds-comp-t span{font-size:12px;color:var(--v-mute);line-height:1.5;word-break:keep-all}
.ds-stage{padding:12px;overflow:hidden;max-height:240px}
.ds-zoom{position:relative;word-break:keep-all;width:max-content;max-width:none}
.at-ds{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:2px 0 6px}
.at-mkds{display:flex;gap:10px;align-items:flex-start;font-size:12px;line-height:1.5;color:var(--v-mute);padding:10px 12px;border:1px solid var(--v-line);border-radius:8px;cursor:pointer}
.at-mkds b{font-size:13px;color:var(--v-ink)}
.at-mkds input{margin-top:3px}

/* 편집 화면: AI 디자인 슬라이드 안내 */
.ed-ai{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 10px;padding:10px 14px;border:1px solid #CFE3F5;background:#F2F8FE;border-radius:10px;font-size:13px;line-height:1.5;color:var(--v-ink2);word-break:keep-all}
.ed-ai span{flex:1;min-width:220px}
/* AI 디자인 슬라이드 편집(3단계) */
.pp-design-edit [data-ed]{outline:none;cursor:text;border-radius:4px}
.pp-design-edit [data-ed]:hover{box-shadow:0 0 0 3px rgba(43,108,176,.35)}
.pp-design-edit [data-ed]:focus{box-shadow:0 0 0 4px rgba(43,108,176,.8);background-color:rgba(255,255,255,.35)}
.pp-design-edit [data-warn]{outline:4px dashed #D93025;outline-offset:4px}
.pp-design-edit [data-img]{cursor:pointer}
.pp-design-edit [data-img]:empty{visibility:visible!important;display:grid;place-items:center;border:3px dashed #B9B4CC}
.pp-design-edit [data-img]:empty::after{content:'사진 자리 · 눌러서 사진 넣기';font:600 26px Pretendard,sans-serif;color:#6B6585}
.dz-sel{position:absolute;outline:3px solid #2B6CB0;outline-offset:3px;pointer-events:none;z-index:5}
.dz-bar{position:absolute;right:8px;top:8px;display:flex;gap:6px;pointer-events:auto;opacity:.92}
.dz-bar:hover{opacity:1}
.dz-bar button{height:40px;padding:0 14px;border:0;border-radius:10px;background:#2B6CB0;color:#fff;font:700 20px Pretendard,sans-serif;cursor:pointer;box-shadow:0 4px 12px rgba(0,0,0,.18)}
.dz-bar button:first-child{cursor:move;touch-action:none}
.dz-size{position:absolute;right:-14px;bottom:-14px;width:26px;height:26px;border-radius:6px;background:#fff;border:4px solid #2B6CB0;cursor:nwse-resize;pointer-events:auto;touch-action:none}
.dz-warn{position:absolute;left:24px;bottom:20px;padding:10px 18px;border-radius:10px;background:#D93025;color:#fff;font:700 24px Pretendard,sans-serif;z-index:6;display:flex;align-items:center;gap:6px}
.dz-warn .dz-fix{margin-left:6px;padding:6px 16px;border:0;border-radius:8px;background:#fff;color:#B3261E;font:800 24px Pretendard,sans-serif;cursor:pointer}
.dz-warn .dz-fix:hover{background:#FFE9E7}
.ed-aim{display:flex;align-items:center;gap:6px;margin:0 0 8px;padding:5px 6px 5px 10px;border-radius:8px;background:var(--v-blue-ss,#EAF0FD);font-size:13px;min-width:0}
.ed-aim span{flex:none;font-weight:700;color:var(--v-blue,#2459D8)}.ed-aim b{flex:1;min-width:0;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ed-aim button{flex:none;display:grid;place-items:center;width:22px;height:22px;border:0;border-radius:6px;background:transparent;color:var(--v-mute,#6B7280);cursor:pointer}.ed-aim button:hover{background:rgba(0,0,0,.06)}
.tb-cm .tb-cm-t{font-style:normal;font-size:12px;color:var(--v-blue,#2459D8);margin-right:2px}
.v-btn.ed-fix{border-color:#F3B4AE;color:#B3261E;background:#FFF5F4;gap:5px}.v-btn.ed-fix:hover:not(:disabled){background:#FFE9E7}
.ed-ai.stale{border-color:#F5C88A;background:#FFF7EC}
.pp-design-edit [data-root]{pointer-events:none}
.pp-design-edit [data-root] > *{pointer-events:auto}
.pp-design-edit [data-head]{z-index:3}
.dz-bar.out{top:-50px;right:auto;left:0}
.dz-bar.below{top:auto;bottom:-50px;right:auto;left:0}
.tb .tb-redesign{flex-shrink:0;height:30px;margin:0 6px;padding:0 12px;border:1px solid #BFD8F2;border-radius:16px;background:#fff;color:#0B5CAD;font-weight:600;white-space:nowrap}
.tb .tb-redesign:hover:not(:disabled){background:#EAF3FD}
.tb .tb-redesign.stale{background:#FFF1E0;border-color:#F0B86E;color:#8A4A0C}
.tb-badge{font-style:normal;font-size:11px;font-weight:700;padding:1px 6px;border-radius:8px;background:#E8862E;color:#fff}
/* 이전 판(편집기) */
.ver-n{display:inline-grid;place-items:center;min-width:18px;height:18px;line-height:1;padding:0 5px;margin-left:2px;border-radius:9px;background:var(--v-blue-s,#E8EFFD);color:var(--v-blue,#2459D8);font-size:11px;font-weight:700;font-variant-numeric:tabular-nums}
.ver-empty{padding:28px 8px;text-align:center;color:var(--v-mute);font-size:14px;line-height:1.6;word-break:keep-all}
.ver-list{display:grid;gap:6px;max-height:min(46vh,420px);overflow:auto}
.ver-row{display:grid;gap:2px;text-align:left;padding:10px 12px;border:1px solid var(--v-line);border-radius:10px;background:#fff;cursor:pointer;transition:border-color .15s,background .15s}
.ver-row b{font-size:14px;color:var(--v-ink)}.ver-row span{font-size:12px;color:var(--v-mute)}
.ver-row:hover{border-color:var(--v-line2)}.ver-row.on{border-color:var(--v-blue,#2459D8);background:var(--v-blue-s,#F3F7FF)}
.ver-info{margin-top:12px;padding:10px 12px;border-radius:10px;background:var(--v-bg2,#F6F8FB);font-size:13px;line-height:1.6;word-break:keep-all}
.v-modal-f{border-top:1px solid var(--v-line)}
@media (prefers-reduced-motion:reduce){.ver-row{transition:none}}
/* 편집기 썸네일 이름표(문제가 있는 장에만) + 검토할 장 요약 */
.v-thumb .th-marks{position:absolute;top:3px;right:3px;display:flex;flex-direction:column;align-items:flex-end;gap:2px;pointer-events:none}
.th-m{font-style:normal;font-size:10.5px;font-weight:700;line-height:1;padding:3px 5px;border-radius:4px;color:#fff;box-shadow:0 0 0 1.5px #fff;white-space:nowrap}
.th-m.issue{background:#C2410C}.th-m.over{background:#B91C1C}.th-m.fact{background:#475569}
.ed-todo{display:flex;align-items:center;gap:6px;margin:12px 0 -4px;font-size:13px;color:var(--v-ink2)}
.ed-todo b{color:#C2410C;font-variant-numeric:tabular-nums}.ed-todo .v-btn{gap:2px;padding:0 6px;height:26px}
/* 편집기 근거 칸(교수 검수용) */
.th-m.src{background:#7C5E10}
.src-none{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 4px;font-size:12.5px;color:var(--v-mute);word-break:keep-all}
.src-none .v-btn{height:26px;padding:0 6px;flex-shrink:0}
.src-card{padding:12px 14px;font-size:13px;display:grid;gap:6px}
.src-h{display:flex;align-items:baseline;gap:8px}.src-h b{font-size:14px}.src-h span{color:var(--v-mute);font-size:12.5px}
.src-l{display:flex;align-items:center;gap:8px;width:100%;text-align:left;padding:8px 10px;border:1px solid var(--v-line);border-radius:8px;background:#fff;cursor:pointer;transition:border-color .15s}
.src-l b{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.src-l span{color:var(--v-mute);font-size:12px;white-space:nowrap}.src-l:hover{border-color:var(--v-line2)}
.src-card p{margin:0;color:var(--v-ink2);line-height:1.55;word-break:keep-all}.src-card .src-miss{color:#8A4A0C}
.src-text{margin:0;font-size:15px;line-height:1.75;word-break:keep-all;white-space:pre-wrap}.src-text mark{background:#FFF1B8;color:inherit;border-radius:3px;padding:0 1px}
@media (prefers-reduced-motion:reduce){.src-l{transition:none}}
/* 편집 화면: 이 장 분량(간결/표준/자세히) */
.ed-lv{padding:14px 16px}
.ed-lv-h{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:10px;font-size:14px}
.ed-lv-h span{font-size:12px;color:var(--v-mute);text-align:right}
.ed-lv .v-seg{display:flex}.ed-lv .v-seg button{flex:1;padding:0 6px;font-size:13px}
.ed-lv .v-seg button:disabled{cursor:default;opacity:.6}.ed-lv .v-seg button.on:disabled{opacity:1}
/* 검수 화면: 장별 분량 창 */
.amt-lead{margin:0 0 12px;font-size:13px;color:var(--v-mute);line-height:1.55}
.amt-list{display:grid;gap:8px;max-height:60vh;overflow:auto}
.amt-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:8px;border:1px solid var(--v-line,#E5E7EB);border-radius:10px}
.amt-row.run{border-color:var(--v-blue,#2563EB);background:rgba(37,99,235,.04)}
.amt-th{width:116px;height:65px;overflow:hidden;border-radius:6px;background:#F3F4F6;flex-shrink:0}
.amt-t{min-width:0;display:grid;gap:2px;font-size:13px}.amt-t span{color:var(--v-mute);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.amt-row .v-seg{display:flex}.amt-row .v-seg button{padding:0 10px;font-size:13px;height:30px}
.amt-row .v-seg button:disabled{cursor:default;opacity:.6}.amt-row .v-seg button.on:disabled{opacity:1}
@media (max-width:640px){.amt-row{grid-template-columns:1fr}.amt-th{display:none}}

/* 템플릿 관리: 분류 안내 줄 */
.at-majors{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:6px;font-size:13px;color:var(--v-mute)}

/* 템플릿 화면: 분류 버튼 줄 안의 "전공분야" 묶음 이름 */
.tp-ty .tp-sub{margin-left:10px}

/* 템플릿 등록 도우미 */
.tr-modal{width:min(1280px,96vw);max-width:none}
.tr-file{font-size:12px;color:var(--v-mute);margin-left:10px}
.tr-run{display:grid;gap:14px;padding:30px 4px;justify-items:start}.tr-run p{color:var(--v-mute);font-size:13px;margin:0}
.tr-steps{display:flex;gap:8px;flex-wrap:wrap}.tr-steps span{padding:6px 12px;border-radius:999px;border:1px solid var(--v-line);font-size:13px;color:var(--v-mute)}
.tr-steps span.on{border-color:#2F6FDE;color:#1A3A9C;background:var(--v-blue-ss)}.tr-steps span.done{color:#15803D;border-color:#BBE5C8}
.tr-err{color:#B42318;padding:20px 4px}
.tr-body{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:24px}
.tr-sum{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px;font-size:14px}.tr-hint{font-size:12px;color:var(--v-mute);flex-basis:100%}
.tr-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.tr-card{border:1px solid var(--v-line);border-radius:10px;padding:8px;display:grid;gap:6px;background:var(--v-bg,#fff)}.tr-card.off{opacity:.45}
.tr-th{position:relative;border-radius:6px;overflow:hidden;aspect-ratio:16/9;background:#EEF0F2}.tr-th img{width:100%;height:100%;object-fit:cover;display:block}
.tr-th .tr-orig{position:absolute;right:4px;bottom:4px;width:38%;height:auto;border:2px solid #fff;border-radius:4px;box-shadow:0 1px 4px rgba(0,0,0,.25)}
.tr-no{position:absolute;left:4px;top:4px;background:rgba(0,0,0,.6);color:#fff;font-size:11px;border-radius:4px;padding:1px 6px}
.tr-row{display:flex;gap:6px;align-items:center}.tr-keep{display:flex;gap:4px;align-items:center;font-size:12px;white-space:nowrap}.tr-role{flex:1;min-width:0;font-size:12px;padding:4px 6px}
.tr-meta{display:flex;gap:6px;flex-wrap:wrap;align-items:center;font-size:11px;color:var(--v-mute)}
.tr-iss{margin:0;padding-left:16px;font-size:11px;color:#B54708}
.tr-side{display:grid;gap:12px;align-content:start}.tr-side>label,.tr-lb{display:grid;gap:6px;font-size:13px;font-weight:600}
.tr-note{font-weight:400;font-size:12px;color:var(--v-mute)}
.tr-types{display:flex;flex-wrap:wrap;gap:4px}.tr-types button{font-size:12px;padding:4px 8px;border:1px solid var(--v-line);border-radius:999px;background:none;cursor:pointer}.tr-types button.on{background:var(--v-blue-ss);border-color:#C9D8FA;color:#1A3A9C}
.tr-cmp{display:grid;gap:6px;justify-items:start;padding:10px;border:1px dashed var(--v-line);border-radius:8px;font-size:13px}
.tr-chk{font-size:13px}.tr-chk summary{cursor:pointer;font-weight:600}.tr-ck{display:flex;gap:8px;margin-top:6px;font-size:12px}.tr-ck .v-tag{flex-shrink:0}
@media (max-width:900px){.tr-body{grid-template-columns:1fr}}
/* 교수님 교안 초안 목록(과목 화면) — 좁은 화면에서는 주차·교시 고르기가 아래 줄로 */
.dr-row{flex-wrap:wrap}
.v-file .dr-warn{display:block;color:var(--v-orange-d);margin-top:2px;white-space:normal}
.dr-sel{width:auto;min-width:92px;max-width:220px;height:34px;padding:4px 8px;font-size:13px}
.dr-make{white-space:nowrap;flex-shrink:0}
/* 주차 전체 초안 — 교시별 나누기(경계 = 교시 시작 장) */
.dr-parts{flex-basis:100%;display:grid;gap:6px;margin-top:6px;padding-top:10px;border-top:1px solid var(--v-line)}
.v-file .dr-by{display:block;font-size:12px;color:var(--v-mute)}
.dr-part{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:13px}
.dr-part>b{flex-shrink:0;min-width:40px}
.v-file .dr-part .t{flex:1 1 140px;min-width:0;color:var(--v-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.v-file .dr-pg{flex-shrink:0;color:var(--v-mute);white-space:nowrap}
.dr-start{max-width:240px}
.v-file .dr-part .dr-warn{flex-basis:100%;margin-top:0}
#drafts-card.dr-focus{box-shadow:0 0 0 3px var(--v-blue);transition:box-shadow .3s}
.ht-tt .ht-hint{display:flex;align-items:center;gap:4px;flex-wrap:wrap;color:var(--v-ink2)}
