/* =========================================================
   한신대학교 디지털새싹 사업단 — 공통 스타일
   ※ 캐시 주의: 각 HTML의 <link href="css/style.css?v=NN">에
     버전 번호가 붙어 있습니다. 이 파일을 고칠 때는
     모든 HTML의 ?v= 값을 함께 올려야 브라우저가 새 파일을 받습니다.
     (현재 v=51)
========================================================= */
:root{
  --leaf:#1E7F4F;
  --sprout:#5FC97E;
  --sprout-soft:#DDF3E4;
  --navy:#1B3A5C;
  --navy-soft:#E4ECF5;
  --ink:#17221B;
  --paper:#F8FBF7;
  --line:#D7E4DA;
  --sun:#F5C542;
  --red:#C64B3C;
  --radius:14px;
  font-size:16px;
}
*{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  font-family:"Pretendard","Apple SD Gothic Neo","Malgun Gothic",sans-serif;
  color:var(--ink);background:var(--paper);line-height:1.65;word-break:keep-all;
}
a{color:inherit;text-decoration:none;}
button{font-family:inherit;cursor:pointer;}

/* ===== 설정 안내 배너 ===== */
.setup-banner{
  display:none;background:#FFF6E0;border-bottom:1.5px solid #EAD48F;
  color:#7A5C00;font-size:.88rem;
}
.setup-banner-inner{max-width:1100px;margin:0 auto;padding:11px 20px;}
.setup-banner b{color:#5C4500;}
.setup-banner code{background:#FBEBC2;border-radius:5px;padding:1px 7px;font-size:.82rem;}

/* ===== 헤더 ===== */
header{
  position:sticky;top:0;z-index:50;
  background:rgba(248,251,247,.92);backdrop-filter:blur(8px);
  border-bottom:1px solid var(--line);
}
.header-inner{
  max-width:1100px;margin:0 auto;padding:0 20px;
  height:64px;display:flex;align-items:center;gap:12px;
}
.brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:1.02rem;letter-spacing:-.01em;}
.brand small{display:block;font-weight:600;font-size:.72rem;color:var(--leaf);letter-spacing:.06em;}
.brand-mark{width:34px;height:34px;flex:none;}
nav{margin-left:auto;display:flex;align-items:center;gap:4px;}
nav a,nav button.navlink{padding:8px 12px;border-radius:8px;font-size:.92rem;font-weight:600;color:#3C4A41;background:none;border:none;}
nav a:hover,nav button.navlink:hover{background:var(--sprout-soft);color:var(--leaf);}
/* 햄버거 버튼 — 열리면 X로 모핑 */
.menu-btn{display:none;margin-left:auto;background:none;border:1px solid var(--line);border-radius:8px;
  width:42px;height:40px;padding:0;position:relative;cursor:pointer;}
.menu-btn span{position:absolute;left:12px;right:12px;height:2px;border-radius:2px;background:#3C4A41;
  transition:transform .28s ease, top .28s ease, opacity .18s ease;}
.menu-btn span:nth-child(1){top:13px;}
.menu-btn span:nth-child(2){top:19px;}
.menu-btn span:nth-child(3){top:25px;}
.menu-btn.open span:nth-child(1){top:19px;transform:rotate(45deg);}
.menu-btn.open span:nth-child(2){opacity:0;transform:scaleX(.3);}
.menu-btn.open span:nth-child(3){top:19px;transform:rotate(-45deg);}

/* ===== 관리자 바 ===== */
.admin-bar{display:none;background:var(--navy);color:#fff;font-size:.88rem;}
.admin-bar.on{display:block;}
.admin-bar-inner{max-width:1100px;margin:0 auto;padding:9px 20px;display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
.admin-bar strong{color:var(--sun);}
.admin-bar button{
  background:rgba(255,255,255,.14);color:#fff;border:none;border-radius:999px;
  padding:5px 14px;font-size:.82rem;font-weight:700;
}
.admin-bar button:hover{background:rgba(255,255,255,.26);}
.admin-bar .logout{margin-left:auto;}

/* ===== 컴팩트 히어로 ===== */
.hero{
  max-width:1100px;margin:0 auto;padding:36px 20px 8px;
  display:flex;align-items:center;gap:18px;flex-wrap:wrap;
}
.hero-mark{width:56px;height:62px;flex:none;}
.hero h1{font-size:clamp(1.4rem,3vw,1.9rem);font-weight:800;letter-spacing:-.02em;line-height:1.3;}
.hero h1 em{font-style:normal;color:var(--leaf);}
.hero p{width:100%;color:#4A5850;font-size:.96rem;margin-top:2px;}
@media (prefers-reduced-motion:no-preference){
  .px{opacity:0;animation:pop .5s forwards;}
  @keyframes pop{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:none;}}
}

/* ===== 공통 ===== */
section{scroll-margin-top:76px;}
.section{max-width:1100px;margin:0 auto;padding:44px 20px;}
.section-head{margin-bottom:26px;display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;}
.section-head .tag{color:var(--leaf);font-weight:800;font-size:.85rem;letter-spacing:.08em;}
.section-head h2{font-size:clamp(1.35rem,2.6vw,1.7rem);font-weight:800;letter-spacing:-.02em;}
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:12px 20px;border-radius:999px;font-weight:700;font-size:.95rem;
  border:1.5px solid transparent;transition:transform .15s,background .15s;
}
.btn:hover{transform:translateY(-2px);}
.btn-primary{background:var(--leaf);color:#fff;}
.btn-primary:hover{background:#166A40;}
.btn-navy{background:var(--navy);color:#fff;}
.btn-navy:hover{background:#142C46;}
.btn-outline{border-color:var(--leaf);color:var(--leaf);background:#fff;}
.btn-outline:hover{background:var(--sprout-soft);}
.btn-sm{padding:7px 14px;font-size:.84rem;}
.btn:disabled{background:#B9C6BD;cursor:not-allowed;transform:none;}

/* ===== 접수중 카드 ===== */
#open-now .section{padding-top:28px;}
.open-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;}
.open-empty{
  grid-column:1/-1;background:#fff;border:1.5px dashed var(--line);border-radius:var(--radius);
  padding:44px;text-align:center;color:#6A776F;font-size:.95rem;
}
.open-card{
  background:#fff;border:1.5px solid var(--line);border-radius:var(--radius);
  padding:26px;display:flex;flex-direction:column;gap:14px;
  transition:box-shadow .2s,border-color .2s;
}
.open-card:hover{border-color:var(--sprout);box-shadow:0 6px 24px rgba(30,127,79,.10);}
.open-card.workshop:hover{border-color:var(--navy);box-shadow:0 6px 24px rgba(27,58,92,.10);}
.open-card.closed{opacity:.72;}
.open-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.status{
  display:inline-flex;align-items:center;gap:6px;
  font-size:.78rem;font-weight:800;padding:5px 12px;border-radius:999px;
  background:var(--sprout-soft);color:var(--leaf);
}
.status::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--leaf);}
@media (prefers-reduced-motion:no-preference){
  .status.live::before{animation:blink 1.6s infinite;}
  @keyframes blink{0%,100%{opacity:1;}50%{opacity:.3;}}
}
.status.end{background:#EDEFEA;color:#6A776F;}
.status.end::before{background:#9AA79E;}
.status.soon{background:#FFF3DD;color:#8A5A12;}
.status.soon::before{background:#E0A93F;}
.dday{font-size:.78rem;font-weight:800;padding:5px 12px;border-radius:999px;background:#FBE9E4;color:var(--red);}
.dday.calm{background:var(--navy-soft);color:var(--navy);}
.kind-label{margin-left:auto;font-size:.78rem;font-weight:800;letter-spacing:.05em;color:var(--leaf);}
.open-card.workshop .kind-label{color:var(--navy);}
.open-card h3{font-size:1.28rem;font-weight:800;letter-spacing:-.01em;}
.open-card dl{display:grid;grid-template-columns:70px 1fr;row-gap:7px;font-size:.93rem;}
.open-card dt{font-weight:700;color:var(--leaf);}
.open-card.workshop dt{color:var(--navy);}
.open-card dd{color:#43514A;}
.seat-bar{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:10px 14px;font-size:.85rem;color:#4A5850;}
.seat-bar strong{color:var(--red);}
.seat-track{height:7px;background:#E9F1EA;border-radius:99px;margin-top:7px;overflow:hidden;}
.seat-fill{height:100%;border-radius:99px;background:var(--sprout);}
.open-card.workshop .seat-fill{background:var(--navy);}
.open-actions{display:flex;gap:10px;margin-top:auto;flex-wrap:wrap;}
.open-actions .btn{flex:1;min-width:130px;}

/* ===== 공지 게시판 ===== */
#notice{background:#fff;border-block:1px solid var(--line);}
.board-toolbar{display:flex;align-items:center;gap:12px;margin-bottom:12px;flex-wrap:wrap;}
.board-count{font-size:.88rem;color:#4A5850;}
.board-count b{color:var(--leaf);}
.board-search{margin-left:auto;display:flex;gap:6px;}
.board-search input{padding:8px 12px;border:1.5px solid var(--line);border-radius:8px;font-family:inherit;font-size:.88rem;background:var(--paper);width:210px;}
.board-search input:focus{outline:none;border-color:var(--sprout);background:#fff;}
.board-table{width:100%;border-collapse:collapse;font-size:.92rem;border-top:2px solid var(--leaf);}
.board-table th{background:var(--paper);border-bottom:1px solid var(--line);padding:11px 10px;font-size:.82rem;color:#4A5850;white-space:nowrap;}
.board-table td{border-bottom:1px solid var(--line);padding:13px 10px;text-align:center;color:#4A5850;white-space:nowrap;}
.board-table td.b-title{text-align:left;white-space:normal;}
.board-table td.b-title b{color:var(--ink);font-weight:700;}
.board-table tbody tr{cursor:pointer;}
.board-table tbody tr:hover{background:var(--sprout-soft);}
.board-table .empty-row td{cursor:default;padding:34px 10px;color:#6A776F;}
.c-no{width:56px;} .c-cat{width:88px;} .c-author{width:88px;} .c-date{width:106px;} .c-views{width:60px;}
.notice-cat{display:inline-block;font-size:.74rem;font-weight:800;padding:4px 10px;border-radius:999px;background:var(--sprout-soft);color:var(--leaf);}
.notice-cat.info{background:var(--navy-soft);color:var(--navy);}
.notice-cat.urgent{background:#FBE9E4;color:var(--red);}
.notice-new{display:inline-block;font-size:.66rem;font-weight:900;color:#fff;background:var(--red);border-radius:5px;padding:2px 5px;margin-left:6px;vertical-align:1px;}
.board-pagination{display:flex;justify-content:center;gap:6px;margin-top:18px;}
.board-pagination button{min-width:34px;height:34px;border:1px solid var(--line);background:#fff;border-radius:8px;font-size:.85rem;font-weight:700;color:#4A5850;}
.board-pagination button:hover{background:var(--sprout-soft);}
.board-pagination button.cur{background:var(--leaf);border-color:var(--leaf);color:#fff;}
.board-pagination button:disabled{opacity:.35;cursor:default;background:#fff;}
/* 공지 상세 */
.notice-detail{border-top:2px solid var(--leaf);}
.nd-head{padding:20px 6px 16px;border-bottom:1px solid var(--line);}
.nd-head h3{font-size:1.25rem;font-weight:800;margin:8px 0 10px;letter-spacing:-.01em;}
.nd-meta{display:flex;gap:14px;font-size:.85rem;color:#6A776F;flex-wrap:wrap;}
.nd-body{padding:26px 6px;font-size:.95rem;color:#43514A;min-height:120px;border-bottom:1px solid var(--line);}
.nd-body p{margin-bottom:10px;}
.nd-nav{font-size:.88rem;}
.nd-nav>div{display:flex;gap:12px;padding:11px 6px;border-bottom:1px solid var(--line);align-items:center;}
.nd-nav .lbl{flex:none;font-weight:800;color:var(--leaf);font-size:.8rem;}
.nd-nav a{color:#4A5850;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.nd-nav a:hover{text-decoration:underline;}
.nd-nav .none{color:#A5B1A9;}
.nd-actions{margin-top:20px;display:flex;justify-content:center;}

/* ===== 사업단 소개 ===== */
.about-lead{color:#4A5850;max-width:46em;margin-bottom:24px;font-size:.96rem;}
.about-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;}
.about-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:20px;}
.about-card h3{font-size:.98rem;font-weight:800;margin-bottom:8px;display:flex;align-items:center;gap:7px;}
.about-card h3::before{content:"";width:9px;height:9px;border-radius:3px;background:var(--sprout);flex:none;}
.about-card p{color:#4A5850;font-size:.88rem;}
.about-strip{
  margin-top:20px;background:var(--navy);color:#fff;border-radius:var(--radius);
  padding:20px 26px;display:flex;flex-wrap:wrap;gap:20px;justify-content:space-between;align-items:center;font-size:.9rem;
}
.about-strip strong{color:var(--sun);}

/* ===== 모달 ===== */
.modal-back{
  display:none;position:fixed;inset:0;z-index:100;
  background:rgba(23,34,27,.45);padding:24px;
  align-items:flex-start;justify-content:center;overflow-y:auto;
}
.modal-back.on{display:flex;}
.modal{
  background:#fff;border-radius:18px;max-width:560px;width:100%;
  padding:30px;margin:auto 0;box-shadow:0 20px 60px rgba(0,0,0,.2);
}
.modal-head{display:flex;align-items:center;gap:10px;margin-bottom:18px;}
.modal-head h3{font-size:1.2rem;font-weight:800;flex:1;}
.modal-head .kind-chip{font-size:.75rem;font-weight:800;padding:4px 11px;border-radius:999px;background:var(--sprout-soft);color:var(--leaf);}
.modal-close{background:none;border:none;font-size:1.3rem;color:#6A776F;line-height:1;}
.modal-close:hover{color:var(--ink);}
.form-row{margin-bottom:16px;}
.form-row label{display:block;font-weight:700;font-size:.9rem;margin-bottom:6px;}
.form-row label .req{color:var(--red);}
.form-row input,.form-row select,.form-row textarea{
  width:100%;padding:11px 14px;border:1.5px solid var(--line);border-radius:10px;
  font-family:inherit;font-size:.95rem;background:var(--paper);
}
.form-row input:focus,.form-row select:focus,.form-row textarea:focus{outline:none;border-color:var(--sprout);background:#fff;}
.form-row input[readonly]{background:#EFF3EF;color:#4A5850;}
.form-2col{display:grid;grid-template-columns:1fr 1fr;gap:0 14px;}
.form-check{display:flex;gap:8px;align-items:flex-start;font-size:.87rem;color:#4A5850;margin-bottom:20px;}
.form-check input{margin-top:4px;width:auto;}
.form-note{font-size:.8rem;color:#6A776F;margin-top:12px;}
.form-success{background:var(--sprout-soft);border:1.5px solid var(--sprout);border-radius:var(--radius);padding:24px;}
.form-success h3{color:var(--leaf);font-size:1.08rem;margin-bottom:8px;}
.form-error{display:none;background:#FBE9E4;border:1.5px solid #EDC9C2;border-radius:10px;color:var(--red);font-size:.86rem;padding:10px 14px;margin-bottom:14px;}

/* ===== 관리자 패널 ===== */
#admin-panel{display:none;background:var(--navy-soft);border-block:1px solid var(--line);}
#admin-panel.on{display:block;}
#admin-panel .section-head .tag{color:var(--navy);}
.admin-box{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:24px;margin-bottom:20px;}
.admin-box h3{font-size:1.05rem;font-weight:800;margin-bottom:16px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.admin-box h3 .btn{margin-left:auto;}
.admin-table{width:100%;border-collapse:collapse;font-size:.88rem;}
.admin-table th{background:var(--paper);border-bottom:1.5px solid var(--line);padding:10px 12px;text-align:left;font-size:.8rem;color:#4A5850;white-space:nowrap;}
.admin-table td{border-bottom:1px solid var(--line);padding:11px 12px;vertical-align:middle;}
.admin-table .t-actions{display:flex;gap:6px;flex-wrap:wrap;}
.chip{display:inline-block;font-size:.73rem;font-weight:800;padding:3px 10px;border-radius:999px;}
.chip.camp{background:var(--sprout-soft);color:var(--leaf);}
.chip.workshop{background:var(--navy-soft);color:var(--navy);}
.chip.open{background:var(--sprout-soft);color:var(--leaf);}
.chip.minik{background:#FDF3E7;color:#B4763C;margin-left:6px;}

/* ----- v21.1: 현장 접수 — 회원/이전 신청자 검색 ----- */
.wi-results{margin-top:6px;border:1.5px solid var(--line);border-radius:10px;background:#fff;
  max-height:220px;overflow:auto;}
.wi-hit{display:flex;align-items:center;gap:9px;padding:10px 12px;cursor:pointer;font-size:.87rem;}
.wi-hit:hover{background:var(--paper);}
.wi-hit + .wi-hit{border-top:1px solid var(--line);}
.wi-hit b{color:#28352E;flex:none;}
.wi-hit .cell-sub{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.chip.close{background:#EDEFEA;color:#6A776F;}
.table-scroll{overflow-x:auto;}
.mini-btn{
  border:1px solid var(--line);background:#fff;border-radius:8px;
  padding:5px 11px;font-size:.8rem;font-weight:700;color:#3C4A41;white-space:nowrap;
}
.mini-btn:hover{background:var(--paper);}
.mini-btn.danger{color:var(--red);border-color:#EDC9C2;}
.mini-btn.danger:hover{background:#FBE9E4;}

/* ===== 푸터 ===== */
footer{background:var(--navy);color:#C8D4E0;}
.footer-inner{max-width:1100px;margin:0 auto;padding:40px 20px;display:grid;grid-template-columns:1.2fr 1fr;gap:30px;}
footer h4{color:#fff;font-size:1rem;margin-bottom:10px;}
footer p{font-size:.88rem;line-height:1.8;}
.footer-admin{background:none;border:none;color:#8FA2B5;font-size:.8rem;text-decoration:underline;padding:0;}
.footer-bottom{border-top:1px solid rgba(255,255,255,.15);padding:16px 20px;text-align:center;font-size:.8rem;color:#8FA2B5;}

/* ===== 반응형 ===== */
@media (max-width:840px){
  nav{display:none;position:absolute;top:64px;left:0;right:0;background:var(--paper);
      flex-direction:column;align-items:stretch;padding:12px 16px;border-bottom:1px solid var(--line);}
  nav.open{display:flex;}
  nav a,nav button.navlink{padding:12px;text-align:left;}
  .menu-btn{display:block;}
  .open-grid{grid-template-columns:1fr;}
  .about-grid{grid-template-columns:1fr 1fr;}
  .footer-inner{grid-template-columns:1fr;}
  .form-2col{grid-template-columns:1fr;}
}
@media (max-width:640px){
  .c-author,.c-views,.b-author,.b-views{display:none;}
  .board-search{width:100%;margin-left:0;}
  .board-search input{flex:1;width:auto;}
}
@media (max-width:520px){
  .about-grid{grid-template-columns:1fr;}
  .modal{padding:22px;}
}

/* ===== 멀티페이지 추가 스타일 ===== */
/* 헤더 활성 메뉴 */
nav a.active{background:var(--sprout-soft);color:var(--leaf);}

/* 페이지 타이틀 (서브페이지 상단) */
.page-title{
  background:#fff;border-bottom:1px solid var(--line);
}
.page-title-inner{max-width:1100px;margin:0 auto;padding:34px 20px;}
.page-title-inner .tag{color:var(--leaf);font-weight:800;font-size:.85rem;letter-spacing:.08em;}
.page-title-inner h1{font-size:clamp(1.5rem,3vw,2rem);font-weight:800;letter-spacing:-.02em;margin-top:4px;}
.page-title-inner p{color:#4A5850;margin-top:8px;font-size:.95rem;}

/* 메인의 공지 미리보기 */
.notice-preview-more{margin-left:auto;font-size:.88rem;font-weight:700;color:var(--leaf);}
.notice-preview-more:hover{text-decoration:underline;}

/* 관리자 로그인 카드 (admin 페이지) */
.login-wrap{max-width:420px;margin:0 auto;}
.login-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:32px;}
.login-card h3{font-size:1.15rem;font-weight:800;margin-bottom:18px;}

/* ===== 1단계 고도화 스타일 ===== */
/* 공지 고정(📌) */
.board-table tr.pinned{background:#FDFAF0;}
.board-table tr.pinned:hover{background:#FBF3DC;}
.pin-mark{color:#B8860B;font-weight:900;margin-right:4px;}

/* 신청 확인(check) 페이지 */
.check-wrap{max-width:560px;margin:0 auto;}
.check-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:32px;}
.check-card h3{font-size:1.12rem;font-weight:800;margin-bottom:16px;}
.check-result{margin-top:22px;}
.check-result dl{display:grid;grid-template-columns:110px 1fr;row-gap:9px;font-size:.94rem;
  background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:18px 20px;}
.check-result dt{font-weight:700;color:var(--leaf);}
.check-result dd{color:#43514A;word-break:break-all;}
.app-code{
  font-family:ui-monospace,Consolas,monospace;font-size:1.02rem;font-weight:800;
  background:var(--sprout-soft);color:var(--leaf);border-radius:8px;padding:6px 12px;
  display:inline-block;letter-spacing:.03em;word-break:break-all;
}

/* 관리자 대시보드 */
.dash-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px;}
.dash-card{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:16px 18px;}
.dash-card .num{font-size:1.55rem;font-weight:800;color:var(--leaf);line-height:1.2;}
.dash-card .lbl{font-size:.8rem;color:#4A5850;font-weight:700;margin-top:2px;}
.dash-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
.dash-chart{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:16px;}
.dash-chart h4{font-size:.9rem;font-weight:800;margin-bottom:10px;color:#3C4A41;}
.dash-chart .chart-box{position:relative;height:220px;}
@media (max-width:840px){
  .dash-cards{grid-template-columns:1fr 1fr;}
  .dash-grid{grid-template-columns:1fr;}
}


/* ===== 기관 로고 ===== */
.brand-img{object-fit:contain;border-radius:6px;background:#fff;}
.partner-strip{background:#fff;border-top:1px solid var(--line);}
.partner-inner{
  max-width:1100px;margin:0 auto;padding:18px 20px;
  display:flex;align-items:center;gap:28px;flex-wrap:wrap;justify-content:center;
}
.partner-label{font-size:.78rem;font-weight:800;color:#8A968E;letter-spacing:.06em;}
.partner-inner img{height:34px;width:auto;max-width:170px;object-fit:contain;
  filter:grayscale(15%);opacity:.9;transition:opacity .15s,filter .15s;}
.partner-inner img:hover{filter:none;opacity:1;}
@media (max-width:640px){
  .partner-inner{gap:18px;}
  .partner-inner img{height:26px;max-width:120px;}
}


/* ===== 마이페이지 ===== */
.auth-tabs{display:flex;gap:8px;margin-bottom:20px;}
.auth-tabs button{padding:10px 18px;border-radius:999px;border:1.5px solid var(--line);
  background:#fff;font-weight:700;font-size:.93rem;color:#4A5850;}
.auth-tabs button.active{background:var(--leaf);border-color:var(--leaf);color:#fff;}
.my-info{display:grid;grid-template-columns:100px 1fr;row-gap:8px;font-size:.94rem;
  background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:18px 20px;margin-bottom:16px;}
.my-info dt{font-weight:700;color:var(--leaf);}
.my-info dd{color:#43514A;word-break:break-all;}
.status-chip{display:inline-block;font-size:.74rem;font-weight:800;padding:4px 11px;border-radius:999px;}
.status-chip.done{background:var(--sprout-soft);color:var(--leaf);}
.status-chip.wait{background:var(--navy-soft);color:var(--navy);}

/* ===== 이수증 ===== */
.cert-toolbar{max-width:820px;margin:24px auto 0;padding:0 20px;display:flex;gap:10px;justify-content:flex-end;}
.cert-sheet{
  max-width:820px;margin:16px auto 60px;background:#fff;
  border:1px solid var(--line);box-shadow:0 8px 32px rgba(0,0,0,.08);
  padding:22px;
}
.cert-frame{
  border:3px solid var(--leaf);padding:8px;height:100%;
}
.cert-frame-inner{
  border:1.5px solid var(--sprout);padding:52px 56px;text-align:center;
  display:flex;flex-direction:column;min-height:960px;
}
.cert-no{text-align:left;font-size:.92rem;color:#43514A;}
.cert-title{font-size:2.6rem;font-weight:800;letter-spacing:.42em;text-indent:.42em;margin:40px 0 44px;color:#17221B;}
.cert-fields{max-width:430px;margin:0 auto;text-align:left;display:grid;grid-template-columns:96px 1fr;row-gap:14px;font-size:1.05rem;}
.cert-fields dt{font-weight:700;color:var(--leaf);}
.cert-fields dd{color:#17221B;font-weight:600;}
.cert-body{font-size:1.08rem;line-height:2;margin:52px auto 0;max-width:520px;color:#17221B;word-break:keep-all;}
.cert-date{margin-top:auto;padding-top:48px;font-size:1.05rem;}
.cert-issuer{margin-top:26px;font-size:1.35rem;font-weight:800;position:relative;display:inline-block;align-self:center;}
.cert-stamp{position:absolute;right:-74px;top:50%;transform:translateY(-50%);width:64px;height:64px;object-fit:contain;opacity:.9;}
.cert-mark{width:44px;height:48px;margin:0 auto;}
@media print{
  header, footer, .cert-toolbar, .page-title{display:none !important;}
  body{background:#fff;}
  .cert-sheet{max-width:none;margin:0;border:none;box-shadow:none;padding:0;}
  .cert-frame-inner{min-height:auto;height:auto;}
  @page{size:A4 portrait;margin:12mm;}
}

/* =========================================================
   v5 추가 스타일
   (헤더 로그인칩 / 관리자 탭·필터·페이저 / 마이페이지 / 토스트)
========================================================= */

/* ----- 헤더 로그인 상태 칩 ----- */
.auth-chip{display:inline-flex;align-items:center;margin-left:6px;}
.auth-chip a{padding:6px 13px;border-radius:999px;font-size:.84rem;font-weight:800;line-height:1.4;}
.auth-chip .chip-off{background:var(--leaf);color:#fff;}
.auth-chip .chip-off:hover{background:#186A42;}
.auth-chip .chip-on{background:var(--sprout-soft);color:var(--leaf);border:1px solid #BFE6CC;}
.auth-chip .chip-on:hover{background:#CDEDD8;}

/* ----- 관리자 탭 ----- */
.admin-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:20px;
  border-bottom:1.5px solid var(--line);padding-bottom:12px;}
.atab{display:inline-flex;align-items:center;gap:7px;padding:10px 16px;border-radius:999px;
  border:1.5px solid var(--line);background:#fff;font-size:.9rem;font-weight:700;color:#4A5850;}
.atab:hover{border-color:var(--navy);color:var(--navy);}
.atab.active{background:var(--navy);border-color:var(--navy);color:#fff;}
.tab-badge{display:inline-block;min-width:20px;padding:1px 7px;border-radius:999px;
  background:var(--line);color:#3C4A41;font-size:.72rem;font-weight:800;text-align:center;}
.atab.active .tab-badge{background:rgba(255,255,255,.25);color:#fff;}
.tab-panel{display:none;}
.tab-panel.on{display:block;animation:tabIn .22s ease;}
@keyframes tabIn{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}

/* ----- 필터 바 ----- */
.filter-bar{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end;
  background:var(--paper);border:1px solid var(--line);border-radius:12px;
  padding:14px 16px;margin-bottom:14px;}
.filter-item{display:flex;flex-direction:column;gap:5px;min-width:140px;}
.filter-item.grow{flex:1;min-width:220px;}
.filter-item label{font-size:.76rem;font-weight:800;color:#4A5850;letter-spacing:.02em;}
.filter-item select,.filter-item input{
  border:1.5px solid var(--line);border-radius:9px;padding:8px 11px;font-size:.88rem;
  font-family:inherit;background:#fff;color:var(--ink);width:100%;}
.filter-item select:focus,.filter-item input:focus{outline:none;border-color:var(--leaf);}
.filter-bar > .btn{margin-bottom:1px;}

/* ----- 결과 요약 + 일괄 액션 ----- */
.result-bar{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin-bottom:12px;}
.result-count{font-size:.88rem;color:#4A5850;font-weight:600;}
.result-count b{color:var(--leaf);font-size:1rem;}
.sel-note{color:var(--navy);font-weight:800;}
.result-actions{margin-left:auto;display:flex;gap:7px;flex-wrap:wrap;align-items:center;}
.ra-divider{width:1px;height:20px;background:var(--line);margin:0 3px;}

/* ----- 표: 정렬·체크·보조 텍스트 ----- */
.admin-table th.sort{cursor:pointer;user-select:none;white-space:nowrap;}
.admin-table th.sort:hover{color:var(--leaf);}
.admin-table th.sort::after{content:'↕';opacity:.32;margin-left:5px;font-size:.72rem;}
.admin-table th.sort.asc::after{content:'▲';opacity:1;color:var(--leaf);}
.admin-table th.sort.desc::after{content:'▼';opacity:1;color:var(--leaf);}
.admin-table th.c-check,.admin-table td.c-check{width:38px;text-align:center;}
.admin-table td.c-check input,.admin-table th.c-check input{width:16px;height:16px;accent-color:var(--leaf);cursor:pointer;}
.admin-table tr.row-sel{background:#F1FAF3;}
.admin-table td.nowrap{white-space:nowrap;}
.cell-sub{font-size:.79rem;color:#6A776F;line-height:1.5;}
.code-cell{font-family:ui-monospace,Consolas,monospace;font-size:.78rem;color:#43514A;word-break:break-all;}
.chip.member{background:var(--sprout-soft);color:var(--leaf);margin-left:6px;font-size:.68rem;}
.chip.lock{background:#FFF6E0;color:#7A5C00;margin-left:5px;}
.chip.recruit{background:#FFF6E0;color:#7A5C00;}

/* ----- 페이지네이션 ----- */
.pager{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:16px;}
.pg{min-width:34px;height:34px;padding:0 10px;border-radius:8px;border:1.5px solid var(--line);
  background:#fff;font-size:.86rem;font-weight:700;color:#4A5850;}
.pg:hover{border-color:var(--leaf);color:var(--leaf);}
.pg.on{background:var(--leaf);border-color:var(--leaf);color:#fff;}
.pg.nav{font-size:1rem;}
.pg-gap{color:#A5B1A9;padding:0 2px;}
.pager-info{margin-left:auto;font-size:.82rem;color:#6A776F;}

/* ----- 토스트 ----- */
.toast-box{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);
  z-index:2000;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none;}
.toast{background:var(--ink);color:#fff;font-size:.88rem;font-weight:600;
  padding:11px 20px;border-radius:999px;box-shadow:0 6px 22px rgba(0,0,0,.18);
  animation:toastIn .26s ease;max-width:88vw;text-align:center;}
.toast.warn{background:#8A5A12;}
.toast.out{opacity:0;transform:translateY(8px);transition:.3s;}
@keyframes toastIn{from{opacity:0;transform:translateY(12px);}to{opacity:1;transform:none;}}

/* ----- 신청 모달: 로그인 안내 ----- */
.apply-auth{border-radius:11px;padding:12px 15px;font-size:.86rem;line-height:1.6;margin-bottom:14px;}
.apply-auth.on{background:var(--sprout-soft);border:1px solid #BFE6CC;color:#1B5C39;}
.apply-auth.off{background:var(--navy-soft);border:1px solid #C9DAEC;color:#254A70;}
.apply-auth a{text-decoration:underline;font-weight:700;}
.apply-auth .mini-btn{margin-left:6px;text-decoration:none;background:#fff;}
.apply-auth .aa-sub{display:block;margin-top:5px;font-size:.78rem;color:#5C7794;}
.kind-label.lock{margin-left:8px;color:#7A5C00;}

/* ----- 마이페이지: 로그인 화면 2단 ----- */
.auth-layout{display:grid;grid-template-columns:minmax(0,420px) minmax(0,1fr);
  gap:28px;align-items:start;max-width:900px;margin:0 auto;}
.auth-aside{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:28px;}
.auth-aside h3{font-size:1.05rem;font-weight:800;margin-bottom:16px;}
.auth-benefits{list-style:none;display:flex;flex-direction:column;gap:14px;}
.auth-benefits li{padding-left:26px;position:relative;}
.auth-benefits li::before{content:'🌱';position:absolute;left:0;top:1px;font-size:.95rem;}
.auth-benefits b{display:block;font-size:.94rem;font-weight:800;color:var(--leaf);}
.auth-benefits span{display:block;font-size:.85rem;color:#4A5850;margin-top:2px;}
.auth-aside-note{margin-top:18px;font-size:.8rem;color:#6A776F;
  border-top:1px dashed var(--line);padding-top:14px;}

/* ----- 마이페이지: 요약 카드 / 편집 / 프로필 ----- */
.my-cards{grid-template-columns:repeat(4,1fr);margin-bottom:20px;}
.admin-box h3 .box-actions{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap;}
.admin-box h3 .box-actions .btn{margin-left:0;}
.pf-state{margin-left:auto;}
.form-row label .hint{font-weight:600;color:#8A968E;font-size:.8rem;margin-left:4px;}
.chk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px;margin-top:4px;}
.chk{display:flex;align-items:center;gap:8px;border:1.5px solid var(--line);border-radius:9px;
  padding:9px 12px;font-size:.87rem;cursor:pointer;background:#fff;transition:.15s;}
.chk:hover{border-color:var(--sprout);}
.chk input{width:15px;height:15px;accent-color:var(--leaf);flex:none;cursor:pointer;}
.chk:has(input:checked){background:var(--sprout-soft);border-color:var(--sprout);font-weight:700;color:#1B5C39;}
.link-form{display:flex;gap:10px;flex-wrap:wrap;}
.link-form input{flex:1;min-width:230px;border:1.5px solid var(--line);border-radius:10px;
  padding:11px 14px;font-family:ui-monospace,Consolas,monospace;font-size:.9rem;background:#fff;}
.link-form input:focus{outline:none;border-color:var(--leaf);}
.link-tip{margin-top:14px;background:var(--navy-soft);border:1px solid #C9DAEC;border-radius:10px;
  padding:11px 14px;font-size:.85rem;color:#254A70;line-height:1.6;}
.form-error.as-ok{background:var(--sprout-soft);border-color:#BFE6CC;color:#1B5C39;}

/* ----- 반응형 ----- */
@media (max-width:900px){
  .auth-layout{grid-template-columns:1fr;max-width:480px;}
  .auth-aside{order:2;}
}
@media (max-width:840px){
  .my-cards{grid-template-columns:repeat(2,1fr);}
  .result-actions{margin-left:0;width:100%;}
}
@media (max-width:640px){
  .admin-tabs{gap:6px;}
  .atab{padding:8px 12px;font-size:.84rem;}
  .filter-item{min-width:calc(50% - 6px);}
  .filter-item.grow{min-width:100%;}
  .auth-chip{margin-left:0;}
  .pager-info{margin-left:0;width:100%;}
}

/* =========================================================
   v6 추가 스타일 — 지원·배정 상태 관리
========================================================= */

/* ----- 상태 칩 ----- */
.status-chip.review{background:#FFF6E0;color:#8A5A12;}
.status-chip.assigned{background:var(--navy-soft);color:var(--navy);}
.status-chip.rejected{background:#F0EFEC;color:#7A7A72;}

/* ----- 일괄 상태 변경 셀렉트 ----- */
.bulk-select{border:1.5px solid var(--line);border-radius:8px;padding:7px 11px;
  font-family:inherit;font-size:.82rem;font-weight:700;background:#fff;color:#4A5850;}
.bulk-select:focus{outline:none;border-color:var(--navy);}

/* ----- 배정 탭: 공고 요약 ----- */
.assign-summary{margin-top:4px;}
.assign-empty{background:var(--paper);border:1px dashed var(--line);border-radius:12px;
  padding:26px;text-align:center;color:#6A776F;font-size:.92rem;line-height:1.8;}
.assign-head{display:flex;gap:20px;flex-wrap:wrap;align-items:center;
  background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:18px 20px;}
.assign-head h4{font-size:1.08rem;font-weight:800;}
.assign-head p{font-size:.87rem;color:#4A5850;margin-top:4px;}
.assign-fill{margin-left:auto;min-width:190px;font-size:.85rem;color:#4A5850;font-weight:700;}
.assign-fill b{font-size:1.3rem;color:var(--leaf);}

/* ----- 단계 표시 바 ----- */
.stage-bar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:16px;}
.stage{flex:1;min-width:96px;background:var(--paper);border:1.5px solid var(--line);
  border-radius:11px;padding:12px 10px;text-align:center;}
.stage-n{display:block;font-size:1.45rem;font-weight:800;line-height:1.2;color:var(--ink);}
.stage-l{display:block;font-size:.79rem;font-weight:700;color:#6A776F;margin-top:2px;}
.stage.review{background:#FFFBF0;border-color:#EAD9A8;}
.stage.review .stage-n{color:#8A5A12;}
.stage.assigned{background:var(--navy-soft);border-color:#C9DAEC;}
.stage.assigned .stage-n{color:var(--navy);}
.stage.rejected{background:#F6F5F3;}
.stage.rejected .stage-n{color:#8A8A82;}
.stage-arrow{color:#C3CFC7;font-size:1.2rem;font-weight:800;}

/* ----- 마이페이지: 진행 현황 카드 ----- */
.status-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;}
.status-card{background:var(--paper);border:1.5px solid var(--line);border-radius:12px;padding:16px 18px;}
.status-card.assigned{background:#F5F9FD;border-color:#C9DAEC;}
.status-card.rejected{opacity:.72;}
.sc-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.sc-head b{font-size:.98rem;font-weight:800;}
.sc-head .status-chip{margin-left:auto;}
.sc-sub{font-size:.85rem;color:#6A776F;margin-top:2px;}
.step-track{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-top:12px;}
.step-track .step{font-size:.76rem;font-weight:800;padding:4px 10px;border-radius:999px;
  background:#fff;border:1.5px solid var(--line);color:#A5B1A9;}
.step-track .step.on{background:var(--leaf);border-color:var(--leaf);color:#fff;}
.step-track i{color:#C3CFC7;font-style:normal;font-weight:800;}
.step-track.rejected span{font-size:.78rem;font-weight:800;padding:4px 12px;border-radius:999px;
  background:#F0EFEC;color:#7A7A72;}
.sc-assign{margin-top:11px;font-size:.86rem;font-weight:700;color:var(--navy);}
.sc-memo{margin-top:6px;font-size:.82rem;color:#5A6862;line-height:1.6;}

/* ----- 신청 모달: 요일 체크 ----- */
.chk-grid.tight{grid-template-columns:repeat(auto-fill,minmax(72px,1fr));}
.chk-grid.tight .chk{justify-content:center;padding:8px 6px;}

@media (max-width:640px){
  .stage{min-width:calc(50% - 12px);}
  .stage-arrow{display:none;}
  .assign-fill{margin-left:0;}
}

/* =========================================================
   v7 — 로그인 동선 정리 + 관리자 패널 UI 개선
========================================================= */

/* ----- 헤더 칩 (역할별) ----- */
.auth-chip a{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:999px;
  font-size:.84rem;font-weight:800;line-height:1.4;white-space:nowrap;transition:.15s;}
.auth-chip a i{font-style:normal;font-size:.9rem;}
.auth-chip .chip-admin{background:var(--navy);color:#fff;}
.auth-chip .chip-admin:hover{background:#142C46;}
.auth-chip .chip-admin b{background:rgba(255,255,255,.2);color:#fff;font-size:.7rem;
  padding:2px 7px;border-radius:999px;font-weight:800;}
.chip-skel{display:inline-block;width:64px;height:29px;border-radius:999px;
  background:linear-gradient(90deg,#EDF2EE,#F7FAF8,#EDF2EE);background-size:200% 100%;
  animation:skel 1.1s linear infinite;}
@keyframes skel{from{background-position:200% 0;}to{background-position:-200% 0;}}
.login-hint{margin-top:14px;padding-top:13px;border-top:1px dashed var(--line);color:#6A776F;}

/* ----- 접근 게이트 카드 ----- */
.gate-card{max-width:480px;margin:0 auto;background:#fff;border:1px solid var(--line);
  border-radius:var(--radius);padding:44px 34px;text-align:center;
  box-shadow:0 6px 26px rgba(27,58,92,.06);}
.gate-icon{font-size:2.6rem;line-height:1;margin-bottom:16px;}
.gate-card h3{font-size:1.22rem;font-weight:800;margin-bottom:10px;}
.gate-card p{font-size:.93rem;color:#4A5850;line-height:1.75;}
.gate-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:24px;}
.gate-actions .btn{min-width:150px;}

/* ----- 관리자 상단바 ----- */
.admin-hero{background:linear-gradient(180deg,var(--navy-soft),transparent);}
.admin-section{padding-top:26px;}
.admin-top{display:flex;align-items:center;gap:15px;flex-wrap:wrap;
  background:linear-gradient(100deg,var(--navy),#2C5680);color:#fff;
  border-radius:14px;padding:18px 22px;margin-bottom:20px;
  box-shadow:0 6px 22px rgba(27,58,92,.18);}
.admin-ava{width:44px;height:44px;flex:none;border-radius:50%;
  background:rgba(255,255,255,.18);border:1.5px solid rgba(255,255,255,.3);
  display:grid;place-items:center;font-size:1.15rem;font-weight:800;}
.admin-who{display:flex;flex-direction:column;min-width:0;}
.admin-who b{font-size:1rem;font-weight:800;letter-spacing:-.01em;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.admin-who span{font-size:.8rem;color:#C6D8EA;margin-top:2px;}
.admin-top-actions{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap;}
.at-btn{background:rgba(255,255,255,.14);color:#fff;border:1px solid rgba(255,255,255,.22);
  border-radius:999px;padding:7px 15px;font-size:.82rem;font-weight:700;
  display:inline-flex;align-items:center;gap:5px;transition:.15s;}
.at-btn:hover{background:rgba(255,255,255,.26);}
.at-btn.danger:hover{background:rgba(220,120,105,.55);border-color:transparent;}

/* ----- 탭: 상단 고정 ----- */
.admin-tabs{position:sticky;top:64px;z-index:30;
  background:rgba(248,251,247,.94);backdrop-filter:blur(8px);
  margin:0 -8px 22px;padding:12px 8px;border-bottom:1.5px solid var(--line);}
.atab{box-shadow:0 1px 2px rgba(23,34,27,.04);}
.atab.active{box-shadow:0 3px 10px rgba(27,58,92,.22);}

/* ----- 박스 설명문 ----- */
.box-desc{font-size:.86rem;color:#6A776F;line-height:1.65;
  margin:-8px 0 18px;padding-bottom:14px;border-bottom:1px dashed var(--line);}
.admin-box{box-shadow:0 2px 10px rgba(23,34,27,.03);}
.admin-box h3{padding-bottom:2px;}

/* ----- 대시보드 카드 액센트 ----- */
.dash-cards{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));}
.dash-card{position:relative;overflow:hidden;transition:.18s;}
.dash-card:hover{transform:translateY(-2px);box-shadow:0 6px 18px rgba(23,34,27,.07);}
.dash-card::before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--sprout);}
.dash-card.a2::before{background:var(--leaf);}
.dash-card.a3::before{background:var(--navy);}
.dash-card.a4::before{background:var(--sun);}
.dash-card.a5::before{background:#7BB8E0;}
.dash-card.a6::before{background:#B78BD9;}
.dash-card.a3 .num{color:var(--navy);}
.dash-card.a4 .num{color:#B98B00;}

/* ----- 표 헤더 고정 ----- */
.table-scroll{max-height:none;}
.admin-table thead th{position:sticky;top:0;z-index:2;
  background:#F2F7F3;box-shadow:inset 0 -1.5px 0 var(--line);}
.admin-table tbody tr{transition:background .12s;}
.admin-table tbody tr:hover{background:#FAFCFA;}

@media (max-width:840px){
  .admin-tabs{top:60px;}
  .admin-top-actions{margin-left:0;width:100%;}
  .admin-who b{max-width:100%;}
}
@media (max-width:520px){
  .gate-card{padding:34px 22px;}
  .gate-actions .btn{width:100%;}
}

/* 관리자 패널 배경 정돈 (탭 sticky 배경과 일치) */
#admin-panel{background:var(--paper);}
#admin-panel .admin-tabs{background:rgba(248,251,247,.95);}

/* =========================================================
   v8 — 회원 유형(역할) + 강사 구인 공고 섹션
========================================================= */

/* ----- 역할 칩 ----- */
.role-chip{display:inline-flex;align-items:center;gap:4px;font-size:.74rem;font-weight:800;
  padding:3px 10px;border-radius:999px;white-space:nowrap;}
.role-chip.instructor{background:var(--sprout-soft);color:var(--leaf);}
.role-chip.parent{background:#FDEEE9;color:#B4553C;}
.role-chip.student{background:#FFF6E0;color:#8A5A12;}
.role-chip.staff{background:var(--navy-soft);color:var(--navy);}

/* ----- 회원 유형 선택 카드 ----- */
.role-picker{display:grid;grid-template-columns:repeat(2,1fr);gap:9px;margin-top:4px;}
.role-opt{display:flex;flex-direction:column;align-items:flex-start;gap:1px;
  border:1.5px solid var(--line);border-radius:11px;background:#fff;
  padding:12px 13px;text-align:left;transition:.15s;}
.role-opt i{font-style:normal;font-size:1.3rem;line-height:1.3;}
.role-opt b{font-size:.92rem;font-weight:800;color:var(--ink);}
.role-opt span{font-size:.75rem;color:#8A968E;line-height:1.4;}
.role-opt:hover{border-color:var(--sprout);}
.role-opt.on{border-color:var(--leaf);background:var(--sprout-soft);box-shadow:0 0 0 3px rgba(95,201,126,.16);}
.role-opt.on b{color:var(--leaf);}
.role-opt.on span{color:#3E7A57;}
.role-note{margin-top:9px;color:#4A5850;font-weight:600;}

/* ----- 회원 유형 안내 ----- */
.role-benefits{list-style:none;display:flex;flex-direction:column;gap:13px;}
.role-benefits li{border-left:3px solid var(--line);padding-left:13px;}
.role-benefits li:nth-child(1){border-color:var(--leaf);}
.role-benefits li:nth-child(2){border-color:#D98263;}
.role-benefits li:nth-child(3){border-color:var(--sun);}
.role-benefits li:nth-child(4){border-color:var(--navy);}
.role-benefits b{display:block;font-size:.94rem;font-weight:800;}
.role-benefits span{display:block;font-size:.84rem;color:#4A5850;margin-top:2px;line-height:1.55;}

/* ----- 상시 온라인 워크샵 배너 (홈) ----- */
.online-band{background:linear-gradient(180deg,#F1FAF4,transparent 75%);border-top:1px solid var(--line);}
.online-band .section{padding-top:34px;padding-bottom:34px;}
.ol-banner{display:flex;align-items:center;gap:28px;padding:30px 34px;
  background:#fff;border:1.5px solid var(--sprout,#8ECFA6);border-radius:var(--radius);
  box-shadow:0 6px 24px rgba(30,127,79,.08);}
.ol-txt{flex:1;}
.ol-txt .tag{display:inline-block;margin-bottom:10px;color:var(--leaf);font-weight:800;font-size:.85rem;letter-spacing:.08em;}
.ol-txt h2{font-size:1.45rem;font-weight:800;letter-spacing:-.02em;color:#17221B;line-height:1.45;word-break:keep-all;}
.ol-txt h2 em{font-style:normal;color:var(--leaf);}
.ol-txt p{margin-top:10px;font-size:.95rem;line-height:1.8;color:#4A5850;word-break:keep-all;}
.ol-actions{display:flex;flex-direction:column;gap:10px;flex:none;}
.ol-actions .btn{text-decoration:none;text-align:center;white-space:nowrap;}
@media (max-width:760px){
  .ol-banner{flex-direction:column;align-items:stretch;padding:24px 22px;gap:18px;}
  .ol-actions{flex-direction:row;flex-wrap:wrap;}
  .ol-actions .btn{flex:1;}
}

/* ----- 강사 구인 공고 섹션 ----- */
.section-sub{width:100%;font-size:.92rem;color:#4A5850;margin-top:6px;line-height:1.7;}
.section-sub a{color:var(--leaf);font-weight:700;text-decoration:underline;}
.recruit-band{background:linear-gradient(180deg,#FFFCF4,transparent 70%);
  border-top:1px solid var(--line);}
.recruit-tag{color:#B98B00 !important;}
.open-card.recruit{border-color:#EAD9A8;background:#FFFDF8;}
.open-card.recruit:hover{border-color:var(--sun);box-shadow:0 6px 24px rgba(185,139,0,.14);}
.open-card.recruit .kind-label{color:#B98B00;}
.open-card.recruit dt{color:#8A5A12;}
.open-card.recruit .seat-fill{background:var(--sun);}
.open-card.recruit .status.live{background:#FFF0C8;color:#8A5A12;}
.card-note{font-size:.82rem;line-height:1.6;color:#8A5A12;background:#FFF6E0;
  border:1px solid #EAD9A8;border-radius:9px;padding:10px 12px;}
.card-note a{text-decoration:underline;font-weight:700;}

@media (max-width:520px){
  .role-picker{grid-template-columns:1fr;}
}

/* =========================================================
   v9 — 사업단 소개: 교육과정 7종 · 오시는 길
========================================================= */

/* ----- 교육과정 ----- */
.prog-band{background:linear-gradient(180deg,var(--sprout-soft),transparent 60%);
  border-top:1px solid var(--line);}
.prog-legend{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:24px;}
.prog-goal{font-size:.86rem;color:#4A5850;font-weight:600;margin-left:auto;}
.prog-goal b{color:var(--leaf);font-size:1rem;font-weight:800;}
.prog-tag{display:inline-block;font-size:.74rem;font-weight:800;padding:4px 12px;border-radius:999px;}
.prog-tag.basic{background:var(--sprout-soft);color:var(--leaf);}
.prog-tag.special{background:#FDEEE9;color:#B4553C;}

.prog-group{font-size:1.12rem;font-weight:800;margin:6px 0 14px;
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.prog-group::before{content:'';width:4px;height:19px;border-radius:3px;background:var(--leaf);}
.prog-group.special{margin-top:38px;}
.prog-group.special::before{background:#D98263;}
.prog-group span{font-size:.82rem;font-weight:700;color:#8A968E;}
.prog-note{font-size:.9rem;color:#4A5850;line-height:1.75;margin-bottom:18px;
  background:#FDF6F3;border:1px solid #F0DAD1;border-radius:11px;padding:14px 17px;}

.prog-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(292px,1fr));gap:16px;}
.prog-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  padding:22px 22px 20px;display:flex;flex-direction:column;gap:10px;transition:.18s;}
.prog-card:hover{transform:translateY(-3px);box-shadow:0 8px 26px rgba(30,127,79,.10);
  border-color:var(--sprout);}
.prog-card.special:hover{border-color:#D98263;box-shadow:0 8px 26px rgba(180,85,60,.10);}
.prog-top{display:flex;align-items:center;gap:9px;}
.prog-no{font-size:1.5rem;font-weight:800;color:var(--line);line-height:1;letter-spacing:-.02em;}
.prog-card.basic .prog-no{color:#BFE6CC;}
.prog-card.special .prog-no{color:#F0C9BC;}
.prog-top .prog-tag{margin-left:auto;}
.prog-card h4{font-size:1.02rem;font-weight:800;line-height:1.45;letter-spacing:-.01em;}
.prog-card h4 em{font-style:normal;font-size:1.06rem;color:var(--leaf);}
.prog-card.special h4 em{color:#B4553C;}
.prog-card > p{font-size:.89rem;color:#4A5850;line-height:1.7;}
.prog-keys{list-style:none;display:flex;flex-direction:column;gap:5px;margin-top:auto;
  padding-top:13px;border-top:1px dashed var(--line);}
.prog-keys li{font-size:.83rem;color:#5A6862;padding-left:15px;position:relative;}
.prog-keys li::before{content:'';position:absolute;left:0;top:8px;width:5px;height:5px;
  border-radius:50%;background:var(--sprout);}
.prog-card.special .prog-keys li::before{background:#D98263;}

/* ----- 오시는 길 ----- */
.map-wrap{position:relative;width:100%;aspect-ratio:16/8;min-height:280px;
  border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--paper);}
.map-wrap iframe{position:absolute;inset:0;width:100%;height:100%;border:0;}
.map-links{display:flex;gap:9px;flex-wrap:wrap;margin:14px 0 26px;}

.dir-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px;}
.dir-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:24px;}
.dir-card.highlight{background:var(--navy-soft);border-color:#C9DAEC;}
.dir-card h3{font-size:1.03rem;font-weight:800;margin-bottom:13px;}
.dir-lead{font-size:.91rem;color:#3C4A41;line-height:1.7;}
.dir-steps{list-style:none;counter-reset:d;margin:13px 0 0;}
.dir-steps li{counter-increment:d;position:relative;padding-left:30px;margin-bottom:10px;
  font-size:.89rem;color:#4A5850;line-height:1.65;}
.dir-steps li::before{content:counter(d);position:absolute;left:0;top:0;width:21px;height:21px;
  border-radius:50%;background:var(--leaf);color:#fff;font-size:.74rem;font-weight:800;
  display:grid;place-items:center;}
.dir-bus{display:grid;grid-template-columns:auto 1fr;gap:7px 13px;margin-top:12px;font-size:.88rem;}
.dir-bus dt{font-weight:800;color:var(--navy);white-space:nowrap;}
.dir-bus dd{color:#4A5850;line-height:1.6;}
.dir-info{display:grid;grid-template-columns:72px 1fr;gap:10px 14px;font-size:.9rem;}
.dir-info dt{font-weight:800;color:var(--navy);}
.dir-info dd{color:#2E4256;line-height:1.65;}
.dir-info a{text-decoration:underline;font-weight:700;}
.dir-tip{margin-top:14px;padding-top:13px;border-top:1px dashed var(--line);
  font-size:.83rem;color:#6A776F;line-height:1.7;}
.dir-card.highlight .dir-tip{border-color:#C9DAEC;color:#5C7794;}

@media (max-width:640px){
  .prog-goal{margin-left:0;width:100%;}
  .map-wrap{aspect-ratio:4/3;}
}

/* v9.1 — 과정 카드 부가 정보 */
.prog-lv{font-size:.76rem;font-weight:800;color:#6A776F;background:var(--paper);
  border:1px solid var(--line);border-radius:999px;padding:3px 10px;}
.prog-meta{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px;}
.prog-meta span{font-size:.76rem;font-weight:700;color:#4A5850;
  background:var(--paper);border:1px solid var(--line);border-radius:7px;padding:4px 9px;}
.prog-card.special .prog-meta span{background:#FDF6F3;border-color:#F0DAD1;color:#8C4632;}
.prog-tool{margin-top:11px;font-size:.8rem;color:#6A776F;line-height:1.6;}
.prog-keys li b{color:var(--leaf);font-weight:800;margin-right:3px;}
.prog-card.special .prog-keys li b{color:#B4553C;}
.prog-group span{font-weight:700;}

/* ================= v10: 신청자 명단 '관리' 열 고정 =================
   열이 많아 가로 스크롤이 생겨도 관리 버튼이 잘리지 않도록
   오른쪽에 고정(sticky)합니다. */
.admin-table th.c-act,
.admin-table td.c-act{
  position:sticky; right:0; z-index:3;
  min-width:152px; width:152px; padding-left:10px; padding-right:12px;
  background:#fff;
  box-shadow:-7px 0 9px -7px rgba(24,40,32,.18);
}
.admin-table thead th.c-act{ z-index:5; background:var(--paper); }
.admin-table tbody tr:hover td.c-act{ background:#FAFCFA; }
.admin-table tbody tr.row-sel td.c-act{ background:#F1FAF3; }
.admin-table td.c-act .t-actions{ display:grid; grid-template-columns:1fr 1fr; gap:5px; }
.admin-table td.c-act .mini-btn{ width:100%; text-align:center; white-space:nowrap; }
@media (max-width:640px){
  .admin-table th.c-act,.admin-table td.c-act{ min-width:132px; width:132px; }
  .admin-table td.c-act .mini-btn{ padding:5px 6px; font-size:.74rem; }
}

/* v11: 신청자 명단 — 접수·프로그램 2행 셀 + 한 화면에 담기 */
.admin-table.compact{ font-size:.84rem; }
.admin-table.compact th{ padding:9px 9px; font-size:.77rem; }
.admin-table.compact td{ padding:9px 9px; }
.admin-table td.c-appinfo{ min-width:216px; }
.admin-table th.c-appinfo{ min-width:216px; }
.c-appinfo .ai-prog{ font-weight:700; color:#28352E; line-height:1.45; }
.c-appinfo .ai-sub{ display:flex; flex-wrap:wrap; gap:2px 10px; margin-top:3px;
  font-size:.76rem; line-height:1.5; color:#6A776F; }
.c-appinfo .ai-when{ font-weight:600; color:#4A5850; white-space:nowrap; }
.c-appinfo .ai-where{ color:#6A776F; }
.c-appinfo .ai-got{ white-space:nowrap; }
/* 프로그램 필터는 이름+기간+장소가 들어가 길어지므로 폭을 넓힙니다 */
.filter-item select#f-program{ min-width:260px; max-width:420px; }

/* ================= v11: 등록 폼 보조 UI ================= */
/* 물음표 도움말 툴팁 */
.help{display:inline-flex;align-items:center;justify-content:center;
  width:17px;height:17px;margin-left:5px;border-radius:50%;
  background:var(--navy-soft,#E7EDF5);color:var(--navy,#28405E);
  font-size:.7rem;font-weight:800;cursor:help;position:relative;vertical-align:middle;}
.help:hover,.help:focus{background:var(--navy,#28405E);color:#fff;outline:none;}
.help-pop{position:absolute;bottom:calc(100% + 9px);left:50%;transform:translateX(-50%);
  width:max(260px,20vw);max-width:330px;padding:11px 13px;
  background:#25332C;color:#F4F7F5;border-radius:9px;
  font-size:.78rem;font-weight:500;line-height:1.65;text-align:left;letter-spacing:-.01em;
  box-shadow:0 8px 22px rgba(20,32,26,.28);
  opacity:0;visibility:hidden;transition:opacity .15s,visibility .15s;z-index:60;cursor:auto;}
.help-pop::after{content:'';position:absolute;top:100%;left:50%;transform:translateX(-50%);
  border:6px solid transparent;border-top-color:#25332C;}
.help-pop b{color:#9FE3B8;font-weight:800;}
.help-pop em{display:block;font-style:normal;color:#C8D2CC;margin-top:7px;
  padding-top:7px;border-top:1px solid rgba(255,255,255,.16);font-size:.75rem;}
.help:hover .help-pop,.help:focus .help-pop{opacity:1;visibility:visible;}
@media (max-width:640px){ .help-pop{width:min(74vw,300px);} }

/* 강좌 체크박스 선택 */
.course-pick{display:grid;grid-template-columns:repeat(auto-fill,minmax(268px,1fr));gap:8px;}
.course-pick label{display:flex;align-items:flex-start;gap:9px;padding:10px 12px;
  border:1px solid var(--line);border-radius:10px;background:#fff;
  cursor:pointer;transition:border-color .12s,background .12s;}
.course-pick label:hover{border-color:#9FD3B2;background:#FAFDFB;}
.course-pick input{margin-top:2px;width:16px;height:16px;accent-color:var(--leaf);cursor:pointer;flex:none;}
.course-pick label:has(input:checked){border-color:var(--leaf);background:#F1FAF4;}
.course-pick .cp-name{font-size:.83rem;font-weight:700;color:#33413A;line-height:1.5;}
.course-pick .cp-meta{display:block;margin-top:3px;font-size:.74rem;font-weight:600;color:#7A867F;}
.course-pick .cp-meta .cp-sp{color:#B4553C;}
.course-tools{display:flex;align-items:center;gap:7px;margin-top:9px;}
.course-count{margin-left:auto;font-size:.78rem;font-weight:700;color:#6A776F;}
.course-count.on{color:var(--leaf);}
.course-extra{margin-top:9px;}

/* 학교급 등 칩형 다중 선택 */
.chip-pick{display:flex;flex-wrap:wrap;gap:8px;}
.chip-pick label{display:inline-flex;align-items:center;gap:7px;
  padding:7px 13px;border:1px solid var(--line);border-radius:999px;background:#fff;
  font-size:.8rem;font-weight:700;color:#4A5850;cursor:pointer;transition:all .12s;}
.chip-pick input{width:15px;height:15px;accent-color:var(--leaf);cursor:pointer;}
.chip-pick label:has(input:checked){border-color:var(--leaf);background:#F1FAF4;color:var(--leaf);}

/* v11: 워크샵 카드 '대상' 옆 지원 자격 툴팁 */
.open-card dd.target-dd{position:relative;}
.qual-help{position:static;}                 /* 팝업이 dd 폭에 맞춰 열리도록 */
.qual-help .help-pop{left:0;right:0;top:calc(100% + 9px);bottom:auto;
  transform:none;width:auto;max-width:none;}
.qual-help .help-pop::after{display:none;}
.help-pop .pop-title{display:block;margin-bottom:6px;padding-bottom:6px;
  border-bottom:1px solid rgba(255,255,255,.16);
  color:#fff;font-size:.76rem;font-weight:800;letter-spacing:.02em;}

/* ================= v11: 신청 상세 보기 ================= */
.admin-table tbody tr.row-click{ cursor:pointer; }
.detail-h{ margin:18px 0 9px; font-size:.78rem; font-weight:800; letter-spacing:.04em;
  color:var(--leaf); text-transform:uppercase; }
.detail-h:first-child{ margin-top:0; }
.detail-dl{ display:grid; grid-template-columns:96px 1fr; gap:8px 14px;
  padding:14px 16px; background:#F4F7F5; border:1px solid var(--line);
  border-radius:11px; font-size:.86rem; line-height:1.6; }
.detail-dl dt{ font-weight:700; color:#6A776F; }
.detail-dl dd{ color:#2E3B34; word-break:break-word; }
.detail-dl dd a{ color:var(--navy); text-decoration:underline; }
.detail-code{ font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
  font-size:.8rem; background:#fff; border:1px solid var(--line);
  border-radius:5px; padding:1px 6px; }
.detail-actions{ display:flex; flex-wrap:wrap; gap:9px; margin-top:20px; }
.detail-actions .btn{ flex:1 1 auto; text-align:center; text-decoration:none; }
@media (max-width:600px){ .detail-dl{ grid-template-columns:80px 1fr; font-size:.83rem; } }

/* v11: 현재 개설 강좌 목록에 없는 강좌 표시 */
.orphan-mark{ font-size:.76rem; color:#B4553C; font-weight:700; white-space:nowrap; }

/* ================= v11: 회원 관리 통계 · 상세 ================= */
.member-stats{ display:grid; grid-template-columns:repeat(auto-fit,minmax(126px,1fr));
  gap:10px; margin:4px 0 18px; }
.ms-card{ padding:13px 15px; background:#fff; border:1px solid var(--line);
  border-radius:11px; display:flex; flex-direction:column; gap:3px; }
.ms-card.main{ border-color:var(--leaf); background:#F1FAF4; }
.ms-k{ font-size:.76rem; font-weight:700; color:#6A776F; }
.ms-card.main .ms-k{ color:var(--leaf); }
.ms-v{ font-size:1.42rem; font-weight:800; letter-spacing:-.02em; color:#28352E; }
.ms-v em{ font-style:normal; font-size:.8rem; font-weight:700; color:#8A968E; margin-left:2px; }
.ms-card.main .ms-v{ color:var(--leaf); }
.ms-sub{ font-size:.74rem; font-weight:700; color:#8A968E; }

.member-sum{ display:grid; grid-template-columns:repeat(auto-fit,minmax(96px,1fr)); gap:10px;
  padding:14px 16px; background:#F4F7F5; border:1px solid var(--line); border-radius:11px; }
.member-sum div{ display:flex; flex-direction:column; gap:2px; font-size:.8rem; color:#6A776F; }
.member-sum b{ font-size:1.24rem; font-weight:800; color:#28352E; }
.member-sum b.ok{ color:var(--leaf); }
.member-sum b.navy{ color:var(--navy); }

.member-list{ display:flex; flex-direction:column; gap:8px; list-style:none; }
.member-list li{ padding:11px 14px; background:#fff; border:1px solid var(--line); border-radius:10px; }
.ml-top{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; font-size:.87rem; }
.ml-top b{ font-weight:700; color:#28352E; }
.ml-sub{ margin-top:4px; font-size:.78rem; color:#7A867F; line-height:1.55; }
.member-empty{ padding:14px 16px; background:#F4F7F5; border:1px dashed var(--line);
  border-radius:10px; font-size:.83rem; color:#8A968E; }

/* v11.1: 날짜 + 시각 한 줄 입력 */
.dt-pair{ display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.dt-pair input{ width:100%; }
@media (max-width:520px){ .dt-pair{ grid-template-columns:1fr; } }

/* v11.1: 모집 공고 지원 시 공고 조건 확인 박스 */
.apply-terms{display:grid;grid-template-columns:74px 1fr;gap:6px 12px;
  padding:13px 15px;background:var(--paper);border:1px solid var(--line);
  border-radius:10px;font-size:.85rem;line-height:1.6;}
.apply-terms dt{font-weight:700;color:var(--navy);}
.apply-terms dd{color:#3A4842;}

/* ================= v12: 온라인 강의실 ================= */
/* 관리자 — 차시 표 */
.lesson-mode{display:inline-block;font-size:.73rem;font-weight:800;padding:3px 9px;border-radius:6px;}
.lesson-mode.on{background:var(--navy-soft,#E7EDF5);color:var(--navy);}
.lesson-mode.off{background:#FDF3E8;color:#9A6420;}

/* 관리자 — 학습 현황 표 */
.admin-table th.prog-col,.admin-table td.prog-col{text-align:center;min-width:56px;padding:8px 5px;}
.pr-cell{display:inline-block;font-size:.78rem;font-weight:700;color:#8A968E;}
.pr-cell.done{color:var(--leaf);}
.att-btn{border:1px solid var(--line);background:#fff;border-radius:7px;
  width:30px;height:26px;cursor:pointer;font-size:.8rem;color:#A5B1A9;transition:all .12s;}
.att-btn:hover{border-color:var(--leaf);background:#F4FAF6;}
.att-btn.on{border-color:var(--leaf);background:#F1FAF4;color:var(--leaf);}
.task-mark{display:inline-block;margin-left:3px;font-size:.78rem;line-height:1;
  background:none;border:0;padding:0;}
.task-mark.ok{cursor:pointer;filter:none;}
.task-mark.none{opacity:.25;}
.rate-wrap{display:flex;align-items:center;gap:8px;}
.rate-bar{width:58px;height:7px;border-radius:99px;background:#E9EFEA;overflow:hidden;}
.rate-bar i{display:block;height:100%;background:var(--leaf);border-radius:99px;}
.rate-wrap b{font-size:.8rem;font-weight:800;color:#6A776F;}
.rate-wrap b.full{color:var(--leaf);}

/* 마이페이지 — 내 강의실 카드 */
.cr-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(268px,1fr));gap:14px;}
.cr-empty{grid-column:1/-1;padding:26px;text-align:center;background:var(--paper);
  border:1px dashed var(--line);border-radius:var(--radius);font-size:.9rem;line-height:1.9;color:#6A776F;}
.cr-card .cc-cancel{align-self:flex-end;}

/* ----- v20.1: 미니 워크샵 온라인 이수 안내 ----- */
.mng-row{display:flex;align-items:center;gap:14px;padding:13px 16px;
  border:1px solid var(--line);border-radius:11px;background:var(--paper);}
.mng-row + .mng-row{margin-top:8px;}
.mng-tx{flex:1;display:flex;flex-direction:column;gap:3px;font-size:.88rem;color:#3A4842;line-height:1.65;word-break:keep-all;}
.mng-app{font-size:.76rem;font-weight:700;color:#6A776F;}
.mng-row .btn{flex:none;text-decoration:none;}
@media (max-width:560px){ .mng-row{flex-direction:column;align-items:stretch;} }

/* ----- v15: 서명부 인쇄 (관리자 · 신청자 탭) ----- */
#attSheet{display:none;}
#attSheet.on{display:block;position:fixed;inset:0;z-index:1000;background:#E8EEE9;overflow:auto;padding:26px 18px;}
.att-toolbar{max-width:820px;margin:0 auto 14px;display:flex;gap:10px;justify-content:flex-end;}
.att-page{max-width:820px;margin:0 auto 26px;background:#fff;border:1px solid var(--line);
  border-radius:8px;padding:46px 50px;box-shadow:0 4px 18px rgba(23,34,27,.08);}
.att-head{display:flex;align-items:center;gap:18px;}
.att-logo{flex:none;object-fit:contain;}
.att-emblem{width:60px;height:60px;}
.att-word{height:34px;max-width:140px;}
.att-title{flex:1;text-align:center;}
.att-sub{display:block;font-size:.66rem;font-weight:800;letter-spacing:.18em;color:var(--leaf);margin-bottom:6px;}
.att-page h1{font-size:1.26rem;font-weight:800;letter-spacing:-.01em;line-height:1.4;color:#17221B;word-break:keep-all;}
.att-rule{border-top:3px solid var(--leaf);margin:10px 0 12px;}
.att-rule::after{content:'';display:block;border-top:1px solid var(--leaf);opacity:.35;margin-top:2px;}
.att-consent{margin:0 0 12px;padding:9px 14px;background:var(--paper);border:1px solid var(--line);
  border-radius:8px;font-size:.76rem;line-height:1.65;color:#4A5850;
  print-color-adjust:exact;-webkit-print-color-adjust:exact;}
.att-info{width:100%;border-collapse:collapse;margin-bottom:12px;font-size:.88rem;}
.att-info th{width:76px;background:var(--sprout-soft);border:1px solid #A9BFAF;padding:6px 10px;
  font-weight:800;color:#1E5C3C;print-color-adjust:exact;-webkit-print-color-adjust:exact;}
.att-info td{border:1px solid #A9BFAF;padding:6px 12px;color:#17221B;}
.att-pn{font-size:.8rem;color:#6A776F;font-weight:700;}
.att-table{width:100%;border-collapse:collapse;font-size:.9rem;}
.att-table th,.att-table td{border:1px solid #8CA192;padding:0 10px;height:32px;text-align:center;color:#17221B;}
.att-table th{background:var(--sprout-soft);font-weight:800;height:30px;color:#1E5C3C;
  print-color-adjust:exact;-webkit-print-color-adjust:exact;}
.att-table td:nth-child(2){text-align:left;}
.att-no{width:48px;}.att-role{width:132px;}.att-name{width:96px;}.att-sign{width:176px;}
.att-role-td{font-size:.82rem;color:#3A4842;white-space:nowrap;padding:0 6px !important;}
.att-count{margin-top:8px;text-align:right;font-size:.78rem;color:#6A776F;}
.att-foot{margin-top:12px;padding-top:10px;border-top:1px solid var(--line);
  text-align:center;font-size:.76rem;color:#6A776F;letter-spacing:.02em;}
.att-foot b{color:#28352E;font-weight:800;}
@media print{
  body.att-print > :not(#attSheet){display:none !important;}
  #attSheet.on{position:static;background:#fff;overflow:visible;padding:0;}
  .att-toolbar{display:none !important;}
  .att-page{max-width:none;margin:0;border:none;border-radius:0;box-shadow:none;padding:0;
    page-break-after:always;}
  .att-page:last-child{page-break-after:auto;}
}
.my-tabs{margin-top:8px;}
.cr-card{padding:20px 22px;background:#fff;border:1.5px solid var(--line);
  border-radius:14px;display:flex;flex-direction:column;gap:10px;}
.cr-card h4{font-size:1.02rem;font-weight:800;color:#28352E;letter-spacing:-.01em;line-height:1.45;}
.cr-card .cc-course{font-size:.83rem;font-weight:600;color:#6A776F;}
.cr-card .cc-bar{height:8px;border-radius:99px;background:#E9EFEA;overflow:hidden;}
.cr-card .cc-bar i{display:block;height:100%;background:var(--leaf);border-radius:99px;transition:width .35s;}
.cr-card .cc-tx{display:flex;justify-content:space-between;font-size:.79rem;font-weight:700;color:#6A776F;}
.cr-card .cc-tx b{color:var(--leaf);}
.cr-card .btn{margin-top:2px;text-align:center;text-decoration:none;}
.cr-card .cc-done{padding:8px 12px;border-radius:8px;background:#F1FAF4;
  border:1px solid #B9E2C8;font-size:.79rem;font-weight:700;color:var(--leaf);text-align:center;}

/* ================= v12: 관리자 권한 관리 ================= */
.chip.admin{background:var(--navy-soft,#E7EDF5);color:var(--navy);
  font-weight:800;margin-left:5px;}
.admin-grant{display:flex;align-items:center;gap:16px;flex-wrap:wrap;
  justify-content:space-between;padding:16px 18px;border-radius:11px;
  background:var(--paper);border:1px solid var(--line);}
.admin-grant.on{background:#F5F8FC;border-color:var(--navy);}
.admin-grant b{display:block;font-size:.9rem;font-weight:800;color:#28352E;}
.admin-grant.on b{color:var(--navy);}
.admin-grant span{display:block;margin-top:4px;font-size:.8rem;line-height:1.6;color:#6A776F;}
.admin-grant .btn{flex:none;}
.admin-grant .btn[disabled]{opacity:.5;cursor:not-allowed;}

/* 마이페이지 관리자 안내 배너 */
.admin-banner{display:flex;align-items:center;gap:15px;flex-wrap:wrap;
  padding:16px 20px;border-radius:13px;background:#F5F8FC;
  border:1.5px solid var(--navy);}
.admin-banner .ab-ic{font-size:1.3rem;flex:none;}
.admin-banner .ab-tx{flex:1;min-width:210px;}
.admin-banner .ab-tx b{display:block;font-size:.92rem;font-weight:800;color:var(--navy);}
.admin-banner .ab-tx span{display:block;margin-top:3px;font-size:.82rem;line-height:1.6;color:#5A6862;}
.admin-banner .btn{flex:none;text-decoration:none;}

/* v12: 강의실 진입 전 계정 연결 안내 */
.cr-card.need-link{border-color:#F0D9BC;background:#FFFCF8;}
.cr-card .cc-warn{padding:10px 12px;border-radius:9px;background:#FDF3E8;
  border:1px solid #F0D9BC;font-size:.8rem;line-height:1.6;color:#8C5A1E;font-weight:600;}
.admin-box.flash{animation:boxflash 1.6s ease;}
@keyframes boxflash{0%,100%{box-shadow:none;}25%,60%{box-shadow:0 0 0 3px rgba(30,127,79,.28);}}

/* ================= v13: 상시 온라인 워크샵 ================= */
/* 관리자 과목 탭 */
.course-tabs{display:grid;grid-template-columns:repeat(auto-fit,minmax(132px,1fr));
  gap:8px;margin:4px 0 18px;}
.ctab{display:flex;flex-direction:column;align-items:flex-start;gap:2px;
  padding:12px 13px;background:#fff;border:1.5px solid var(--line);border-radius:11px;
  cursor:pointer;text-align:left;transition:all .12s;}
.ctab:hover{border-color:#9FD3B2;background:#FAFDFB;}
.ctab.on{border-color:var(--leaf);background:#F1FAF4;}
.ctab.sp.on{border-color:#D89B84;background:#FDF6F3;}
.ctab .ci{font-size:1.05rem;}
.ctab .cn{font-size:.83rem;font-weight:800;color:#28352E;line-height:1.4;}
.ctab .cl{font-size:.72rem;font-weight:700;color:#8A968E;}
.ctab.on .cn{color:var(--leaf);}
.ctab.sp.on .cn{color:#B4553C;}
.assign-summary b.ok{color:var(--leaf);}

/* 공개 페이지 — 온라인 과목 카드 */
.on-band{background:linear-gradient(180deg,#F4F8FB 0%,#FFFFFF 100%);}
.on-lead{max-width:720px;margin:0 auto 30px;padding:20px 24px;text-align:center;
  background:#fff;border:1.5px solid var(--navy);border-radius:var(--radius);}
.on-lead b{display:block;font-size:1.04rem;font-weight:800;color:var(--navy);letter-spacing:-.01em;}
.on-lead span{display:block;margin-top:8px;font-size:.9rem;line-height:1.75;color:#5A6862;}
.on-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(268px,1fr));gap:16px;}
.on-card{padding:22px 24px;background:#fff;border:1.5px solid var(--line);
  border-radius:var(--radius);display:flex;flex-direction:column;gap:11px;}
.on-card.sp{border-color:#F0DAD1;}
.on-card .oc-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.on-card .oc-ic{font-size:1.2rem;}
.on-card .oc-lv{font-size:.73rem;font-weight:800;padding:3px 9px;border-radius:6px;
  background:#F4F7F5;color:#5A6862;}
.on-card.sp .oc-lv{background:#FDF6F3;color:#B4553C;}
.on-card h4{font-size:1.02rem;font-weight:800;color:#28352E;letter-spacing:-.01em;line-height:1.45;}
.on-card p{font-size:.86rem;line-height:1.7;color:#5A6862;}
.on-card .oc-meta{display:flex;gap:8px;flex-wrap:wrap;font-size:.78rem;
  font-weight:700;color:#6A776F;}
.on-card .oc-meta span{background:#F4F7F5;border:1px solid var(--line);
  border-radius:6px;padding:3px 9px;}
.on-card .btn{margin-top:3px;text-align:center;text-decoration:none;}
.on-card .oc-state{padding:9px 12px;border-radius:9px;text-align:center;
  font-size:.81rem;font-weight:700;}
.on-card .oc-state.done{background:#F1FAF4;border:1px solid #B9E2C8;color:var(--leaf);}
.on-card .oc-state.wait{background:var(--paper);border:1px solid var(--line);color:#8A968E;}

/* v13: 기존 신청 데이터 이관 */
.mg-summary{padding:12px 16px;margin-bottom:12px;border-radius:10px;
  background:var(--paper);border:1px solid var(--line);
  font-size:.86rem;font-weight:600;color:#5A6862;}
.mg-summary b{font-weight:800;color:#28352E;}
.mg-summary b.ok{color:var(--leaf);}
.admin-table tr.mg-skip{opacity:.62;}
.admin-table tr.mg-skip td{background:#FCFCFB;}

/* =========================================================
   v25: 글래스모피즘(리퀴드 글래스) 디자인 레이어
   주요 표면(헤더·카드·배너·모달)에 반투명 유리 효과를 입히고,
   유리가 비쳐 보이도록 은은한 브랜드 그라데이션 배경을 깝니다.
   이 섹션만 제거하면 이전 디자인으로 되돌아갑니다.
========================================================= */
:root{
  --glass-bg: rgba(255,255,255,.44);
  --glass-bg-strong: rgba(255,255,255,.62);
  --glass-blur: blur(19px) saturate(144%);
  --glass-border: 1px solid rgba(255,255,255,.65);
  --glass-shadow: 0 8px 32px rgba(0,0,0,.12);
}

/* 배경 그라데이션 (고정, 스크롤과 무관) */
body::before{
  content:'';position:fixed;inset:-8%;z-index:-1;pointer-events:none;
  background:
    radial-gradient(640px 480px at 10% -4%, rgba(95,201,126,.24), transparent 62%),
    radial-gradient(700px 520px at 92% 6%, rgba(245,197,66,.17), transparent 62%),
    radial-gradient(800px 620px at 46% 108%, rgba(27,58,92,.13), transparent 60%);
}

/* 헤더 — 양끝이 완전히 둥근 플로팅 캡슐 바.
   스크롤하면 페이지 내용이 유리 뒤로 비치며 떠 있는 느낌을 줍니다 */
header{
  position:sticky;top:12px;z-index:50;
  max-width:1100px;
  margin:14px auto 6px;
  padding:0 4px;
  background:rgba(255,255,255,.46);
  backdrop-filter:var(--glass-blur);
  -webkit-backdrop-filter:var(--glass-blur);
  border:1px solid rgba(255,255,255,.7);
  border-bottom:1px solid rgba(255,255,255,.7);
  border-radius:999px;
  box-shadow:0 10px 30px rgba(23,34,27,.14), inset 0 1px 0 rgba(255,255,255,.6);
}
@media (max-width:1140px){ header{margin-left:16px;margin-right:16px;} }
.header-inner{padding:0 14px 0 18px;}

/* 메뉴 항목 — 호버 시 배경 없이 글자가 살짝 커지며 초록으로 강조
   아이콘·텍스트는 플렉스 수직 중앙 정렬 */
nav a, nav button.navlink{
  display:inline-flex;align-items:center;
  background:none;border-radius:999px;
  transition:color .16s ease, transform .16s ease;
}
nav a:hover, nav button.navlink:hover{background:none;color:var(--leaf);transform:scale(1.08);}
/* 현재 페이지 표시는 아이콘 컬러 팝 + 초록 글자로 충분하므로 밑줄 없음 */
nav a.active{color:var(--leaf);background:none;position:relative;}
.menu-btn{border-radius:999px;}

/* ----- v28: 글래스 모션 아이콘 (사이트 공용) -----
   프로스트 유리 타일(gtile) 뒤에서 컬러 레이어(gbg)가
   바운스로 튀어나오는 아이콘 컴포넌트 */
.gic{position:relative;display:inline-flex;align-items:center;justify-content:center;
  width:27px;height:27px;flex:none;margin-right:7px;vertical-align:middle;}
.gic .gbg{position:absolute;inset:3px;border-radius:8px;
  background:radial-gradient(circle at 30% 30%, var(--gc,#5FC97E), var(--gc2,#1E7F4F));
  opacity:0;transform:none;transform-origin:100% 100%;
  transition:transform .35s cubic-bezier(0.38,-0.12,0.15,1.65), opacity .22s ease;}
.gic .gtile{position:absolute;inset:0;border-radius:9px;z-index:1;
  background:rgba(255,255,255,.42);
  backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);
  border:1px solid rgba(255,255,255,.6);
  box-shadow:0 3px 8px rgba(23,34,27,.09);
  transition:background .2s ease;}
.gic svg{position:relative;z-index:2;width:15px;height:15px;
  stroke:#5A6862;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;
  transition:stroke .2s ease, filter .2s ease;}
/* 호버·현재 페이지: 컬러 레이어가 뒤로 튀어나오고 글리프가 흰색으로 */
a:hover > .gic .gbg, a.active > .gic .gbg,
.nav-sub a:hover .gic .gbg, .nav-sub a.active .gic .gbg{
  opacity:1;transform:translate(4px,-4px) rotate(14deg);}
a:hover > .gic .gtile, a.active > .gic .gtile,
.nav-sub a:hover .gic .gtile, .nav-sub a.active .gic .gtile{
  background:color-mix(in srgb, var(--gc) 42%, rgba(255,255,255,.5));}
a:hover > .gic svg, a.active > .gic svg,
.nav-sub a:hover .gic svg, .nav-sub a.active .gic svg{
  stroke:#fff;filter:drop-shadow(0 1px 2px rgba(0,0,0,.25));}
/* 탭 버튼(.atab) 안에서도 동일한 호버·활성 팝 */
.atab:hover .gic .gbg, .atab.active .gic .gbg{opacity:1;transform:translate(4px,-4px) rotate(14deg);}
.atab:hover .gic .gtile, .atab.active .gic .gtile{background:color-mix(in srgb, var(--gc) 42%, rgba(255,255,255,.5));}
.atab:hover .gic svg, .atab.active .gic svg{stroke:#fff;filter:drop-shadow(0 1px 2px rgba(0,0,0,.25));}
/* 항상 컬러가 켜진 변형 (대시보드 등) */
.gic.on .gbg{opacity:1;transform:translate(4px,-4px) rotate(14deg);}
.gic.on .gtile{background:color-mix(in srgb, var(--gc) 45%, rgba(255,255,255,.45));}
.gic.on svg{stroke:#fff;filter:drop-shadow(0 1px 2px rgba(0,0,0,.25));}
/* 큰 사이즈 변형 */
.gic.lg{width:44px;height:44px;margin-right:0;}
.gic.lg .gbg{inset:5px;border-radius:13px;}
.gic.lg .gtile{border-radius:14px;}
.gic.lg svg{width:23px;height:23px;}
/* 색상 팔레트 */
.gc-green{--gc:#5FC97E;--gc2:#1E7F4F;}
.gc-amber{--gc:#F5C542;--gc2:#D98E1B;}
.gc-blue{--gc:#6FA8DC;--gc2:#35608D;}
.gc-purple{--gc:#AE7BFB;--gc2:#7B4FD8;}
.gc-pink{--gc:#F9599F;--gc2:#D63C7F;}
.gc-teal{--gc:#57C7C0;--gc2:#2A8F88;}
@supports not (background: color-mix(in srgb, red 50%, blue)){
  a:hover > .gic .gtile, a.active > .gic .gtile, .gic.on .gtile{background:rgba(255,255,255,.35);}
}
/* 대시보드 수치 아이콘 — 마우스가 지나가면 팝 + 흔들림 모션 */
.vd-stat{cursor:default;}
.vd-stat:hover .gic .gbg{transform:translate(5px,-5px) rotate(24deg) scale(1.07);}
.vd-stat:hover .gic svg{animation:gicWiggle .55s ease;}
@keyframes gicWiggle{
  0%{transform:rotate(0);}
  30%{transform:rotate(-11deg) scale(1.14);}
  65%{transform:rotate(8deg);}
  100%{transform:rotate(0);}
}

/* 목록 카드 — 호버 시 살짝 커지며 반응 */
.open-card,.on-card,.ws-oc{
  transition:transform .22s ease, box-shadow .22s ease, border-color .2s ease;}
.open-card:hover,.on-card:hover,.ws-oc:hover{
  transform:translateY(-4px) scale(1.015);
  box-shadow:0 16px 42px rgba(23,34,27,.16);}

@media (prefers-reduced-motion:reduce){
  .gic .gbg{transition:opacity .22s ease;}
  .vd-stat:hover .gic svg{animation:none;}
  .open-card:hover,.on-card:hover,.ws-oc:hover{transform:none;}
}

/* 하위 메뉴 — 부모에 마우스를 올리면 아래로 플로팅되는 유리 카드 */
.nav-item{position:relative;display:inline-flex;}
/* 겹침 방지: 열린 항목을 형제 메뉴·다른 하위 메뉴 위로 올립니다 */
.nav-item:hover, .nav-item:focus-within{z-index:6;}
.nav-caret{font-style:normal;font-size:.68rem;margin-left:4px;opacity:.55;transition:transform .18s;}
.nav-item:hover .nav-caret{transform:translateY(1px);}
.nav-sub{
  position:absolute;top:calc(100% + 24px);left:50%;
  transform:translateX(-50%) translateY(6px);
  min-width:158px;display:flex;flex-direction:column;gap:2px;padding:8px;
  background:rgba(255,255,255,.92);
  backdrop-filter:var(--glass-blur);
  -webkit-backdrop-filter:var(--glass-blur);
  border:1px solid rgba(255,255,255,.75);
  border-radius:16px;
  box-shadow:0 14px 34px rgba(23,34,27,.16);
  opacity:0;visibility:hidden;pointer-events:none;
  z-index:5;
  transition:opacity .14s ease, transform .14s ease, visibility .14s;
}
/* 부모와 하위 메뉴 사이 간격을 지나도 호버가 끊기지 않게 하는 다리 */
.nav-sub::before{content:'';position:absolute;left:0;right:0;top:-26px;height:26px;}
.nav-item:hover .nav-sub, .nav-item:focus-within .nav-sub{
  opacity:1;visibility:visible;pointer-events:auto;transform:translateX(-50%) translateY(0);
}

/* 로그인 칩 메뉴 — 오른쪽 끝에 붙으므로 하위 메뉴를 우측 정렬 */
.chip-menu .nav-sub{left:auto;right:0;transform:translateY(6px);}
.chip-menu:hover .nav-sub, .chip-menu:focus-within .nav-sub{transform:translateY(0);}
.nav-sub a{padding:10px 14px;border-radius:10px;font-size:.9rem;white-space:nowrap;text-align:left;}
.nav-sub a:hover{transform:none;background:rgba(95,201,126,.14);color:var(--leaf);}

/* 모바일 — 하위 메뉴를 평평하게 펼쳐 기존처럼 세로 나열 */
@media (max-width:840px){
  .nav-item{display:contents;}
  .nav-item > a.nav-parent{display:none;}
  .nav-sub{display:contents;visibility:visible;}
}

/* 모바일 드롭다운 — 캡슐 아래에 뜨는 유리 카드 */
@media (max-width:840px){
  nav{
    /* 캡슐 바로 아래에서 8px 간격을 두고 펼쳐져 바와 겹치지 않습니다 */
    top:calc(100% + 8px);left:8px;right:8px;
    background:rgba(255,255,255,.97);
    backdrop-filter:var(--glass-blur);
    -webkit-backdrop-filter:var(--glass-blur);
    border:1px solid rgba(255,255,255,.8);
    border-radius:22px;
    box-shadow:0 14px 36px rgba(23,34,27,.18);
    overflow:hidden;
  }
}

/* 카드·박스류 공통 유리 처리 */
.open-card,.open-empty,.ol-banner,.on-card,.ol-step,
.ws-oc,.ws-tri article,.ws-topic,.ws-q,.ws-faq details,
.login-card,.auth-aside,.admin-box,.dash-card,.dash-chart,
.cr-card,.status-card,.mng-row,.wi-results{
  background:var(--glass-bg-strong);
  backdrop-filter:var(--glass-blur);
  -webkit-backdrop-filter:var(--glass-blur);
  border:var(--glass-border);
  box-shadow:var(--glass-shadow);
}
/* 큰 표면은 모서리를 더 둥글게 */
.open-card,.ol-banner,.on-card,.admin-box,.login-card,.auth-aside{border-radius:20px;}
.ol-banner{background:var(--glass-bg);}

/* 모달 — 가장 진한 유리 + 배경 블러 */
.modal-back{
  backdrop-filter:blur(7px);
  -webkit-backdrop-filter:blur(7px);
  background:rgba(23,34,27,.35);
}
.modal{
  background:rgba(255,255,255,.78);
  backdrop-filter:var(--glass-blur);
  -webkit-backdrop-filter:var(--glass-blur);
  border:var(--glass-border);
  border-radius:24px;
  box-shadow:0 20px 60px rgba(0,0,0,.22);
}

/* 유리 위 요소들의 투명 배경 보정 */
.dash-card{background:var(--glass-bg);}
.seat-bar,.att-consent{background:rgba(255,255,255,.5);}

/* backdrop-filter 미지원 브라우저 — 불투명 흰색으로 대체 */
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){
  .open-card,.open-empty,.ol-banner,.on-card,.ol-step,
  .ws-oc,.ws-tri article,.ws-topic,.ws-q,.ws-faq details,
  .login-card,.auth-aside,.admin-box,.dash-card,.dash-chart,
  .cr-card,.status-card,.mng-row,.wi-results,.modal{
    background:rgba(255,255,255,.94);
  }
  header{background:rgba(248,251,247,.96);}
}

/* ----- v27.1: 방문객 대시보드 (홈) — 콤팩트 단일 패널 ----- */
.vdash .section{padding-top:30px;padding-bottom:26px;}
.vdash-head{text-align:center;margin:0 auto 16px;}
.vdash-head h1{font-size:clamp(1.35rem,3vw,1.85rem);font-weight:800;letter-spacing:-.02em;word-break:keep-all;}
.vdash-head h1 em{font-style:normal;color:var(--leaf);}

.vd-panel{max-width:980px;margin:0 auto;padding:22px 30px 20px;
  background:var(--glass-bg-strong);
  backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);
  border:var(--glass-border);border-radius:24px;box-shadow:var(--glass-shadow);
  opacity:0;transform:translateY(14px);animation:vdIn .6s ease .1s forwards;}
@keyframes vdIn{to{opacity:1;transform:none;}}

.vd-stats{display:flex;align-items:center;}
.vd-stat{flex:1;display:flex;align-items:center;justify-content:center;gap:11px;min-width:0;}
.vd-stat + .vd-stat{border-left:1px solid rgba(23,34,27,.09);}
.vd-ic{font-size:1.45rem;flex:none;filter:drop-shadow(0 2px 4px rgba(23,34,27,.12));}
.vd-num{display:block;font-size:1.5rem;font-weight:800;letter-spacing:-.02em;line-height:1.15;
  background:linear-gradient(120deg,#1E7F4F,#2E9B62 55%,#5FC97E);
  -webkit-background-clip:text;background-clip:text;color:transparent;}
.vd-lbl{display:block;font-size:.73rem;font-weight:700;color:#6A776F;margin-top:1px;letter-spacing:-.01em;}

.vd-goal-row{display:flex;align-items:center;gap:16px;margin-top:16px;padding-top:15px;
  border-top:1px dashed rgba(23,34,27,.13);}
.vd-goal-label{flex:none;font-size:.85rem;font-weight:700;color:#3A4842;word-break:keep-all;}
.vd-goal-label b{color:var(--leaf);}
.vd-goal-label #vd-goalSub{color:#6A776F;font-weight:600;}
.vd-track{flex:1;height:9px;border-radius:99px;background:rgba(23,34,27,.08);overflow:hidden;}
.vd-track i{display:block;height:100%;width:0;border-radius:99px;position:relative;overflow:hidden;
  background:linear-gradient(90deg,var(--sprout),var(--leaf));
  transition:width 1.6s cubic-bezier(.22,.8,.3,1);}
.vd-track i::after{content:'';position:absolute;inset:0;
  background:linear-gradient(110deg,transparent 25%,rgba(255,255,255,.55) 50%,transparent 75%);
  animation:vdShimmer 2.6s infinite;}
@keyframes vdShimmer{from{transform:translateX(-100%);}to{transform:translateX(100%);}}
.vd-pct{flex:none;font-size:1.15rem;font-weight:800;color:var(--leaf);letter-spacing:-.02em;}

@media (max-width:760px){
  .vd-panel{padding:18px 20px 16px;}
  .vd-stats{display:grid;grid-template-columns:repeat(3,1fr);row-gap:14px;}
  .vd-stat{justify-content:flex-start;gap:9px;}
  .vd-stat + .vd-stat{border-left:none;}
  .vd-num{font-size:1.3rem;}
  .vd-goal-row{flex-wrap:wrap;gap:10px;}
  .vd-goal-label{width:100%;}
}
@media (prefers-reduced-motion:reduce){
  .vd-panel{animation:none;opacity:1;transform:none;}
  .vd-track i::after{animation:none;}
}

/* ----- v29: 탭(관리자·마이페이지 공용) — 글래스 필 스타일 ----- */
.admin-tabs{border-bottom:none;padding-bottom:4px;}
.admin-tabs .atab{
  display:inline-flex;align-items:center;
  background:rgba(255,255,255,.5);
  backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);
  border:1px solid rgba(255,255,255,.65);
  box-shadow:0 4px 14px rgba(23,34,27,.07);
  transition:transform .18s ease, box-shadow .18s ease, color .18s ease, background .18s ease;
}
.admin-tabs .atab:hover{border-color:rgba(255,255,255,.85);
  transform:translateY(-2px);box-shadow:0 8px 20px rgba(23,34,27,.12);}
/* 관리자 탭 — 네이비 계열 활성 */
.admin-tabs .atab:hover{color:var(--navy);}
.admin-tabs .atab.active{
  background:linear-gradient(135deg, rgba(42,84,128,.94), rgba(27,58,92,.94));
  border-color:rgba(255,255,255,.5);color:#fff;
  box-shadow:0 8px 22px rgba(27,58,92,.28);
}
.admin-tabs .atab.active .tab-badge{background:rgba(255,255,255,.28);color:#fff;}
/* 마이페이지 탭 — 새싹 그린 활성 */
.my-tabs .atab:hover{color:var(--leaf);box-shadow:0 8px 20px rgba(30,127,79,.14);}
.my-tabs .atab.active{
  background:linear-gradient(135deg, rgba(46,155,98,.92), rgba(30,127,79,.92));
  box-shadow:0 8px 22px rgba(30,127,79,.28);
}
/* 탭 안 아이콘 크기 */
.admin-tabs .gic{width:24px;height:24px;margin-right:6px;}
.admin-tabs .gic svg{width:13px;height:13px;}
.admin-tabs .gic .gbg{inset:2px;border-radius:7px;}

/* ----- v31: 관리자 좌측 사이드 탭 레이아웃 ----- */
.admin-shell{display:grid;grid-template-columns:210px 1fr;gap:20px;align-items:start;}
.admin-main{min-width:0;}
.admin-tabs.side{
  display:flex;flex-direction:column;gap:6px;flex-wrap:nowrap;
  position:sticky;top:88px;padding:10px;border-bottom:none;
  background:var(--glass-bg-strong);
  backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);
  border:var(--glass-border);border-radius:20px;box-shadow:var(--glass-shadow);
}
.admin-tabs.side .atab{
  width:100%;justify-content:flex-start;padding:11px 13px;border-radius:13px;
  background:transparent;border:1px solid transparent;box-shadow:none;font-size:.89rem;}
.admin-tabs.side .atab:hover{transform:none;background:rgba(255,255,255,.62);
  border-color:rgba(255,255,255,.7);box-shadow:0 4px 12px rgba(23,34,27,.08);}
.admin-tabs.side .atab.active{
  background:linear-gradient(135deg, rgba(42,84,128,.94), rgba(27,58,92,.94));
  border-color:rgba(255,255,255,.5);color:#fff;
  box-shadow:0 6px 18px rgba(27,58,92,.26);}
.admin-tabs.side .at-label{flex:1;text-align:left;}
.admin-tabs.side .tab-badge{margin-left:auto;}
/* 마이페이지 사이드 탭 — 활성 색만 새싹 그린으로 */
.my-shell .atab.active{
  background:linear-gradient(135deg, rgba(46,155,98,.92), rgba(30,127,79,.92));
  box-shadow:0 6px 18px rgba(30,127,79,.26);}
.my-shell .atab:hover{box-shadow:0 4px 12px rgba(30,127,79,.14);}
@media (max-width:1000px){
  .admin-shell{grid-template-columns:1fr;gap:14px;}
  .admin-tabs.side{position:static;flex-direction:row;flex-wrap:wrap;border-radius:16px;}
  .admin-tabs.side .atab{width:auto;}
  .admin-tabs.side .at-label{flex:none;}
  .admin-tabs.side .tab-badge{margin-left:6px;}
}

/* ----- v30: 관리자 신청 현황 대시보드 ----- */
#tab-dash .dash-cards{grid-template-columns:repeat(4,1fr);gap:12px;}
#tab-dash .dash-card{
  display:flex;align-items:center;gap:12px;padding:15px 16px;border-radius:16px;
  transition:transform .18s ease, box-shadow .18s ease;}
#tab-dash .dash-card::before{display:none;}
#tab-dash .dash-card:hover{transform:translateY(-3px);box-shadow:0 12px 30px rgba(23,34,27,.13);}
#tab-dash .dash-card:hover .gic .gbg{transform:translate(5px,-5px) rotate(24deg) scale(1.07);}
#tab-dash .dash-card:hover .gic svg{animation:gicWiggle .55s ease;}
#tab-dash .dc-tx{min-width:0;}
#tab-dash .dash-card .num{font-size:1.42rem;letter-spacing:-.02em;}
#tab-dash .dash-card .lbl{font-size:.78rem;margin-top:0;}
#tab-dash .dash-card .sub{font-size:.71rem;font-weight:700;color:#8A968E;margin-top:3px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
#tab-dash .dash-card .sub b{font-weight:800;}
#tab-dash .dash-card .sub .up{color:var(--leaf);}
#tab-dash .dash-card .sub .warn{color:#B98B00;}

.dash-chart{border-radius:18px;padding:18px 20px;}
.dash-chart h4{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px;}
.dash-chart.wide{grid-column:1/-1;}
.dash-chart.wide .chart-box{height:250px;}
.dc-chips{display:flex;gap:5px;margin-left:auto;flex-wrap:wrap;}
.dc-chip{padding:5px 12px;border-radius:999px;font-size:.75rem;font-weight:700;color:#6A776F;
  background:rgba(255,255,255,.55);border:1px solid rgba(255,255,255,.7);cursor:pointer;
  transition:color .16s ease, background .16s ease, transform .16s ease;}
.dc-chip:hover{color:var(--navy);transform:translateY(-1px);}
.dc-chip.on{background:linear-gradient(135deg, rgba(42,84,128,.94), rgba(27,58,92,.94));color:#fff;
  border-color:rgba(255,255,255,.5);box-shadow:0 4px 12px rgba(27,58,92,.24);}
@media (max-width:900px){
  #tab-dash .dash-cards{grid-template-columns:1fr 1fr;}
}
@media (prefers-reduced-motion:reduce){
  #tab-dash .dash-card:hover{transform:none;}
  #tab-dash .dash-card:hover .gic svg{animation:none;}
}

/* ----- v32: 마크다운 본문 (수강 안내·과제 안내·과목 소개) ----- */
.md > *:first-child{margin-top:0;}
.md > *:last-child{margin-bottom:0;}
.md p{margin:.5em 0;line-height:1.75;}
.md h3,.md h4,.md h5,.md h6{margin:.9em 0 .4em;font-weight:800;color:#28352E;letter-spacing:-.01em;}
.md h3{font-size:1.02rem;} .md h4{font-size:.95rem;} .md h5,.md h6{font-size:.9rem;}
.md ul,.md ol{margin:.5em 0 .5em 1.15em;display:flex;flex-direction:column;gap:4px;}
.md ul{list-style:disc;} .md ol{list-style:decimal;}
.md li{line-height:1.7;}
.md a{color:var(--leaf);font-weight:700;text-decoration:underline;word-break:break-all;}
.md strong{font-weight:800;color:#28352E;}
.md code{background:rgba(23,34,27,.06);border-radius:5px;padding:1px 6px;font-size:.92em;
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;}
.md blockquote{margin:.6em 0;padding:.5em .9em;border-left:3px solid var(--sprout);
  background:rgba(255,255,255,.45);border-radius:0 8px 8px 0;color:#4A5850;}
.md hr{border:none;border-top:1px solid var(--line);margin:.9em 0;}
.md.sm{font-size:.86rem;line-height:1.7;color:#5A6862;}
.md.sm p{margin:.35em 0;}
.md.sm.note{font-size:.82rem;color:#6A776F;}

/* 인쇄물(이수증·서명부)은 유리 효과 없이 종이 그대로 */
@media print{
  body::before{display:none !important;}
  *{backdrop-filter:none !important;-webkit-backdrop-filter:none !important;}
  .att-page,.cert-sheet,.att-consent{background:#fff !important;box-shadow:none !important;}
}

/* ==========================================================
   v33 — 종료된 워크샵 접기/펼치기
   운영 기간이 지난 프로그램은 홈 목록에서 내리고,
   '종료된 워크샵 보기' 버튼으로만 펼쳐 볼 수 있게 합니다.
   ========================================================== */
.status.done{background:#E7EAF3;color:#3B4763;}
.status.done::before{background:#7C89A8;}

.ended-wrap{margin-top:26px;}
.ended-toggle{
  display:flex;align-items:center;gap:10px;margin:0 auto;
  padding:11px 20px;border-radius:999px;cursor:pointer;
  font-family:inherit;font-size:.94rem;font-weight:700;color:#4A5850;
  background:var(--glass-bg,rgba(255,255,255,.55));
  border:1px solid var(--glass-border,rgba(255,255,255,.6));
  box-shadow:var(--glass-shadow,0 6px 18px rgba(31,45,38,.08));
  -webkit-backdrop-filter:blur(19px) saturate(144%);backdrop-filter:blur(19px) saturate(144%);
  transition:transform .18s ease,box-shadow .18s ease,color .18s ease;
}
.ended-toggle:hover{transform:translateY(-2px);color:var(--leaf,#2E7D48);
  box-shadow:0 10px 24px rgba(31,45,38,.13);}
.ended-toggle .et-count{
  min-width:22px;padding:1px 7px;border-radius:999px;
  background:rgba(60,80,68,.1);color:#3B4A41;font-size:.8rem;font-weight:800;
}
.ended-toggle .et-arrow{transition:transform .22s ease;font-size:.8rem;opacity:.65;}
.ended-toggle.open .et-arrow{transform:rotate(180deg);}

.ended-note{
  max-width:640px;margin:12px auto 0;text-align:center;
  font-size:.85rem;color:#6A776F;line-height:1.6;
}
.ended-grid{margin-top:18px;}
.ended-grid[hidden]{display:none;}

/* 종료 카드는 한 단계 눌러서 표시 — 마우스를 올리면 또렷해집니다 */
.open-card.ended{opacity:.72;filter:saturate(.75);transition:opacity .2s ease,filter .2s ease,transform .2s ease;}
.open-card.ended:hover{opacity:1;filter:none;}

/* ==========================================================
   v35 — 관리자 사이드바 하위 메뉴
   기능이 많은 탭(강사 워크샵·온라인 워크샵·강사 배정)을
   하위 메뉴로 나눠 한 번에 한 화면만 보여줍니다.
   ========================================================== */
.atab-group{display:contents;}   /* 버튼과 하위 메뉴가 사이드바 흐름에 그대로 놓이도록 */
.atab-subs{display:none;}
.atab-group.on .atab-subs{
  display:flex;flex-direction:column;gap:2px;margin:4px 0 6px 12px;
  padding-left:10px;border-left:2px solid rgba(42,84,128,.16);
}
.asub{
  display:flex;align-items:center;gap:6px;width:100%;
  padding:8px 10px;border:1px solid transparent;border-radius:10px;
  background:transparent;cursor:pointer;font-family:inherit;
  font-size:.83rem;font-weight:700;color:#5A6862;text-align:left;
  transition:background .16s ease,color .16s ease;
}
.asub:hover{background:rgba(255,255,255,.7);color:var(--navy);}
.asub.active{
  background:rgba(42,84,128,.1);color:var(--navy);
  box-shadow:inset 2px 0 0 var(--navy);
}
.asub .tab-badge{margin-left:auto;}
/* 마이페이지 쪽에서 같은 구조를 쓸 때의 활성 색 */
.my-shell .asub.active{background:rgba(30,127,79,.1);color:var(--leaf);
  box-shadow:inset 2px 0 0 var(--leaf);}

/* 현재 하위 메뉴에 속하지 않는 블록은 감춥니다
   (박스별 display 제어 로직과 충돌하지 않도록 클래스로 덮어씁니다) */
.tab-panel .admin-box.sub-off{display:none !important;}

@media (max-width:1000px){
  /* 사이드바가 가로로 바뀌어도 하위 메뉴는 한 줄에 하나씩 세로로 유지합니다 */
  .atab-group.on .atab-subs{
    flex-basis:100%;flex-direction:column;margin:6px 0 4px;
    padding:6px 0 0;border-left:none;border-top:1px dashed rgba(42,84,128,.18);
  }
}

/* ==========================================================
   v36 — 워크샵/공고 목록 표: 구분 칸 정리 + 스와이프 관리 버튼
   ========================================================== */
/* 구분 — 정규 / 미니 한 가지만 표시 */
.wskind{
  display:inline-flex;align-items:center;gap:5px;
  padding:4px 11px;border-radius:999px;
  font-size:.74rem;font-weight:800;letter-spacing:-.01em;white-space:nowrap;
}
.wskind::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.75;}
.wskind.reg{background:var(--navy-soft);color:var(--navy);}
.wskind.mini{background:#FDF3E7;color:#B4763C;}
.lock-i{font-size:.8rem;vertical-align:1px;opacity:.85;cursor:help;}

/* 관리 — 색으로 구분되는 액션 버튼 (넓은 화면) */
.sw-btns{display:flex;gap:6px;}
.sw-btn{
  display:inline-flex;align-items:center;gap:4px;
  padding:6px 12px;border-radius:9px;border:1px solid transparent;
  font-family:inherit;font-size:.78rem;font-weight:800;white-space:nowrap;cursor:pointer;
  transition:filter .15s ease, transform .12s ease;
}
.sw-btn i{font-style:normal;font-size:.82rem;line-height:1;}
.sw-btn:hover{filter:brightness(.94);}
.sw-btn:active{transform:scale(.97);}
.sw-btn.edit{background:var(--navy-soft);color:var(--navy);border-color:#C9DAEC;}
.sw-btn.warn{background:#FFF3DD;color:#8A5A12;border-color:#F0DFB8;}
.sw-btn.ok{background:var(--sprout-soft);color:var(--leaf);border-color:#BFE6CC;}
.sw-btn.danger{background:#FBE9E4;color:var(--red);border-color:#EDC9C2;}

/* ----- 목록 스와이프 관리 -----
   넓은 화면: 기존 표 그대로 두고, 행을 끌면 [관리] 칸 자리로
   색깔 버튼 패널이 들어옵니다 (다른 칸을 가리지 않습니다).
   좁은 화면: 표가 들어가지 않으므로 카드로 쌓고 같은 방식으로 동작합니다.
   드래그 처리는 js/admin.js의 initDragSwipe()가 담당합니다. */
/* 관리 열을 따로 두지 않습니다 — 필요할 때만 끌어서 꺼내므로
   나머지 정보가 넓게 표시됩니다. */
.swipe-table tr{position:relative;touch-action:pan-y;cursor:grab;}
.swipe-table tr.dragging{cursor:grabbing;}
body.sw-nosel, body.sw-nosel *{user-select:none;-webkit-user-select:none;}
.swipe-table tbody td:nth-last-child(2){padding-right:26px;}
.swipe-table tr::after{
  content:'‹';position:absolute;right:9px;top:50%;
  transform:translateY(-50%);pointer-events:none;
  font-size:1.15rem;font-weight:800;color:#C3CCC6;
  transition:opacity .18s ease;
}
.swipe-table tr:hover::after{color:var(--navy);opacity:.55;}
.swipe-table tr[data-open="1"]::after{opacity:0;}
.swipe-table td.c-swipe{
  position:absolute;top:0;bottom:0;right:0;padding:0;margin:0;
  display:flex;overflow:hidden;z-index:2;
  transform:translateX(calc(100% - var(--sw,0px)));
}
.swipe-table tr:not(.dragging) td.c-swipe{
  transition:transform .26s cubic-bezier(.2,.8,.2,1);
}
.swipe-table td.c-swipe .sw-btns{height:100%;gap:0;}
.swipe-table td.c-swipe .sw-btn{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  width:74px;height:100%;padding:0;border:none;border-radius:0;
  color:#fff;font-size:.75rem;font-weight:800;cursor:pointer;
}
.swipe-table td.c-swipe .sw-btn i{font-size:1.05rem;}
.swipe-table td.c-swipe .sw-btn.edit{background:#2F5C8C;}
.swipe-table td.c-swipe .sw-btn.warn{background:#B98526;}
.swipe-table td.c-swipe .sw-btn.ok{background:var(--leaf);}
.swipe-table td.c-swipe .sw-btn.danger{background:#E24B3F;}
.swipe-table td.c-swipe .sw-btn:hover{filter:brightness(1.08);}
.swipe-table td.c-swipe .sw-btn:active{filter:brightness(.9);}
/* 넓은 화면에서는 카드 전용 라벨을 쓰지 않습니다 */
.swipe-table td[data-l]::before{content:none;}

@media (max-width:820px){
  /* 좁은 화면 — 표를 카드로 쌓고, 카드를 끌면 버튼이 나옵니다 */
  .swipe-table, .swipe-table tbody{display:block;width:auto;}
  .swipe-table thead{display:none;}
  .swipe-table tr{
    display:block;margin-bottom:10px;padding:0;overflow:hidden;
    border:1px solid var(--line);border-radius:14px;background:#fff;
    box-shadow:0 2px 8px rgba(23,34,27,.05);
  }
  .swipe-table tr::after{right:10px;top:18px;transform:none;}
  .swipe-table tbody td:nth-last-child(2){padding-right:16px;}
  .swipe-table td{display:block;border:none;padding:3px 14px;}
  /* 카드는 내용도 함께 밀려 iOS 목록처럼 움직입니다 */
  .swipe-table td:not(.c-swipe){transform:translateX(calc(-1 * var(--sw,0px)));}
  .swipe-table tr:not(.dragging) td:not(.c-swipe){
    transition:transform .26s cubic-bezier(.2,.8,.2,1);
  }
  .swipe-table td.c-name{padding:14px 66px 4px 16px;font-size:.95rem;}
  .swipe-table td.c-name b{font-size:.96rem;}
  .swipe-table td.c-kind{position:absolute;top:14px;right:27px;padding:0;z-index:1;}
  .swipe-table td[data-l]{
    display:flex;align-items:flex-start;gap:8px;
    font-size:.84rem;color:#3E4B44;padding:4px 16px;
  }
  .swipe-table td[data-l]::before{
    content:attr(data-l);flex:0 0 62px;
    font-size:.74rem;font-weight:800;color:#8A968E;line-height:1.6;
  }
  .swipe-table td[data-l] .v{min-width:0;line-height:1.6;}
  .swipe-table td:last-of-type[data-l]{padding-bottom:12px;}
}

/* ==========================================================
   v41 — 공지사항 마크다운 작성 (표기 안내 + 미리보기)
   ========================================================== */
.md-help{
  display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px;
  font-size:.76rem;color:#7A867F;
}
.md-help b{font-weight:800;color:#5A6862;margin-right:2px;}
.md-help span{
  padding:3px 8px;border-radius:6px;
  background:var(--paper);border:1px solid var(--line);white-space:nowrap;
}
.md-help code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.74rem;color:#3E4B44;}
.md-help .mini-btn{margin-left:auto;}
.np-wrap{
  position:relative;margin-top:12px;padding:16px 16px 14px;
  border:1px dashed var(--line);border-radius:12px;background:var(--paper);
}
.np-wrap[hidden]{display:none;}
.np-label{
  position:absolute;top:-9px;left:14px;padding:0 7px;
  background:var(--paper);font-size:.72rem;font-weight:800;color:#8A968E;
}
.np-empty{color:#A8B2AC;font-size:.86rem;}
/* 공지 상세 본문 — 마크다운 서식 적용 */
.nd-body.md{font-size:.94rem;color:#3E4B44;}

/* ==========================================================
   v42 — 과목별 운영 시간 · 정원
   ========================================================== */
/* 관리자 입력란 */
.cmeta{display:flex;flex-direction:column;gap:7px;}
.cm-row{
  display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:10px;
  padding:9px 12px;border:1px solid var(--line);border-radius:11px;background:var(--paper);
}
.cm-name{
  font-size:.87rem;font-weight:700;color:#28352E;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.cm-time{display:inline-flex;align-items:center;gap:5px;}
.cm-time input{width:112px;padding:6px 8px;font-size:.83rem;}
.cm-time em, .cm-capbox em{font-style:normal;font-size:.8rem;color:#8A968E;}
.cm-capbox{display:inline-flex;align-items:center;gap:5px;}
.cm-capbox input{width:76px;padding:6px 8px;font-size:.83rem;text-align:right;}
@media (max-width:700px){
  .cm-row{grid-template-columns:1fr;gap:7px;}
  .cm-name{white-space:normal;}
  .cm-time input{flex:1;width:auto;}
  .cm-capbox input{flex:1;width:auto;text-align:left;}
}

/* 홈 카드의 과목별 잔여 현황 — v50: '신청 현황' 줄을 눌러 펼칩니다 */
.seat-bar.seat-toggle{
  display:block;width:100%;text-align:left;cursor:pointer;
  font-family:inherit;font-size:.85rem;color:#4A5850;
  transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;
  -webkit-backdrop-filter:blur(19px) saturate(144%);backdrop-filter:blur(19px) saturate(144%);
}
.seat-bar.seat-toggle:hover{
  transform:translateY(-1px);border-color:rgba(143,207,166,.8);
  box-shadow:0 8px 20px rgba(31,45,38,.11);
}
.seat-bar.seat-toggle:focus-visible{outline:2px solid var(--leaf);outline-offset:2px;}
.seat-bar .sb-more{
  float:right;margin-left:8px;padding:1px 9px;border-radius:999px;
  background:rgba(60,80,68,.09);color:#3B4A41;
  font-size:.72rem;font-weight:800;white-space:nowrap;
}
.seat-bar .sb-more i{
  font-style:normal;font-size:.68rem;margin-left:2px;
  display:inline-block;transition:transform .22s ease;
}
.seat-bar.seat-toggle:hover .sb-more{background:var(--sprout-soft);color:var(--leaf);}
.seat-bar.seat-toggle.open .sb-more{background:var(--sprout-soft);color:var(--leaf);}
.seat-bar.seat-toggle.open .sb-more i{transform:rotate(180deg);}
.seat-bar.seat-toggle.open{border-color:rgba(143,207,166,.7);}

.cseat{
  display:flex;flex-direction:column;gap:5px;margin-top:7px;padding:9px;
  border-radius:12px;
  background:var(--glass-bg,rgba(255,255,255,.5));
  border:1px solid var(--glass-border,rgba(255,255,255,.55));
  -webkit-backdrop-filter:blur(19px) saturate(144%);backdrop-filter:blur(19px) saturate(144%);
  animation:cseatIn .24s cubic-bezier(.2,.8,.2,1);
}
.cseat[hidden]{display:none;}
@keyframes cseatIn{
  from{opacity:0;transform:translateY(-6px);}
  to{opacity:1;transform:none;}
}
@media (prefers-reduced-motion:reduce){
  .cseat{animation:none;}
  .seat-bar.seat-toggle:hover{transform:none;}
}
.cseat li{
  display:flex;align-items:center;gap:8px;
  padding:7px 11px;border-radius:9px;
  background:rgba(255,255,255,.62);border:1px solid rgba(255,255,255,.7);
  font-size:.8rem;color:#4A5850;
}
.cseat .cs-name{font-weight:700;color:#28352E;min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cseat .cs-time{flex:none;font-size:.75rem;color:#7A867F;}
.cseat .cs-num{margin-left:auto;flex:none;font-weight:800;color:var(--leaf);white-space:nowrap;}
.cseat .cs-num em{font-style:normal;font-weight:700;color:#9AA79E;margin-left:5px;font-size:.74rem;}
.cseat li.soon{background:#FFF8E8;border-color:#F0DFB8;}
.cseat li.soon .cs-num{color:#8A5A12;}
.cseat li.full{background:#F4F5F3;border-color:#E2E6E0;color:#8A968E;}
.cseat li.full .cs-name{color:#8A968E;}
.cseat li.full .cs-num{color:#9AA79E;}

/* 신청 모달의 과목 선택 */
.chk.cchk{
  display:flex;align-items:center;gap:10px;
  padding:10px 12px;border:1.5px solid var(--line);border-radius:11px;background:#fff;
}
.chk.cchk:hover{border-color:var(--sprout,#8ECFA6);}
.chk.cchk .cc-main{display:flex;flex-direction:column;gap:2px;min-width:0;}
.chk.cchk .cc-main b{font-size:.88rem;font-weight:700;color:#28352E;}
.chk.cchk .cc-time{font-style:normal;font-size:.76rem;color:#6A776F;}
.chk.cchk .cc-seat{
  margin-left:auto;flex:none;text-align:right;
  font-size:.78rem;font-weight:800;color:var(--leaf);white-space:nowrap;
}
.chk.cchk .cc-seat i{display:block;font-style:normal;font-weight:700;
  font-size:.72rem;color:#9AA79E;margin-top:1px;}
.chk.cchk.soon{border-color:#F0DFB8;background:#FFFCF5;}
.chk.cchk.soon .cc-seat{color:#8A5A12;}
.chk.cchk.full{background:#F4F5F3;border-color:#E2E6E0;opacity:.7;cursor:not-allowed;}
.chk.cchk.full .cc-seat{color:#9AA79E;}
.chk.cchk:has(input:checked){border-color:var(--leaf);background:#F1FAF4;}

/* 관리자 목록의 과목별 현황 */
.pc-seats{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px;}
.pc-seats span{
  padding:2px 7px;border-radius:6px;font-size:.71rem;font-weight:700;
  background:var(--sprout-soft);color:var(--leaf);white-space:nowrap;
}
.pc-seats span.full{background:#F4F5F3;color:#8A968E;}
.pc-seats span.soon{background:#FFF3DD;color:#8A5A12;}

/* ==========================================================
   v43 — 서명부: 여러 과목 함께 신청한 분 표시
   ========================================================== */
.att-multi{
  display:inline-block;margin-left:2px;
  font-weight:900;color:#C0392B;
}
.att-note{
  margin-top:5px;text-align:left;font-size:.72rem;line-height:1.6;color:#6A776F;
}
.att-note b{color:#28352E;font-weight:800;}
.att-plain{font-weight:400;color:#8A968E;}
.att-walk{
  display:inline-block;margin-left:6px;padding:2px 8px;border-radius:6px;
  background:#FFF3DD;color:#8A5A12;border:1px solid #F0DFB8;
  font-size:.72rem;font-weight:800;
}
@media print{ .att-walk{background:#fff !important;color:#000 !important;border-color:#999 !important;} }
.att-kind{font-size:.72em;font-weight:800;color:var(--leaf);letter-spacing:0;}
@media print{ .att-kind{color:#000 !important;} }
@media print{
  .att-multi{color:#000 !important;}
  .att-note{color:#444 !important;}
}

/* ==========================================================
   v47 — 강사 모집 지원자 검토표 (인쇄)
   ========================================================== */
.ap-card{
  margin-top:12px;padding:12px 14px;
  border:1px solid var(--line);border-radius:10px;background:#fff;
  break-inside:avoid;page-break-inside:avoid;
}
.ap-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  padding-bottom:8px;border-bottom:1px solid var(--line);}
.ap-no{
  display:inline-flex;align-items:center;justify-content:center;
  width:22px;height:22px;border-radius:50%;
  background:var(--navy);color:#fff;font-size:.74rem;font-weight:800;
}
.ap-name{font-size:1rem;font-weight:800;color:#17221B;}
.ap-tag{
  padding:2px 8px;border-radius:6px;background:var(--paper);
  border:1px solid var(--line);font-size:.71rem;font-weight:700;color:#5A6862;
}
.ap-date{margin-left:auto;font-size:.72rem;color:#8A968E;}
.ap-grid{
  display:grid;grid-template-columns:1fr 1fr;gap:3px 18px;margin-top:8px;
}
.ap-f{display:flex;gap:8px;font-size:.79rem;line-height:1.7;}
.ap-l{flex:0 0 68px;font-size:.72rem;font-weight:800;color:#8A968E;}
.ap-v{color:#28352E;min-width:0;}
.ap-long{margin-top:7px;font-size:.79rem;}
.ap-long .ap-l{display:block;margin-bottom:2px;}
.ap-long p{line-height:1.7;color:#3E4B44;word-break:keep-all;}
.ap-sign{
  display:flex;align-items:flex-end;gap:8px;margin-top:10px;
  font-size:.72rem;font-weight:800;color:#8A968E;
}
.ap-sign i{flex:1;border-bottom:1px dotted #B8C3BC;height:20px;}
@media print{
  .ap-card{border-color:#999 !important;}
  .ap-no{background:#333 !important;}
}

/* ==========================================================
   v48 — 신청 모달: 과목 복수 선택 안내 · 시간 충돌 표시
   ========================================================== */
.pick-bar{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  margin-bottom:8px;
}
.pick-count{
  padding:4px 11px;border-radius:999px;
  background:var(--paper);border:1px solid var(--line);
  font-size:.78rem;font-weight:800;color:#8A968E;white-space:nowrap;
}
.pick-count.on{background:var(--sprout-soft);border-color:#BFE6CC;color:var(--leaf);}
.pick-count.bad{background:#FBE9E4;border-color:#EDC9C2;color:var(--red);}
.pick-tip{font-size:.78rem;color:#7A867F;}
.pick-tip b{color:var(--leaf);font-weight:800;}
.form-error.sm{
  margin-top:8px;padding:9px 12px;font-size:.8rem;line-height:1.6;
}
.chk.cchk.clash{border-color:#EDC9C2;background:#FDF3F1;}

/* ==========================================================
   v53 — 공지사항: 페이지 내 작성·수정 + 첨부 파일
   ========================================================== */
.nt-editor{margin-top:22px;}
.nt-editor[hidden]{display:none;}
.board-foot{display:flex;justify-content:flex-end;margin-top:14px;}
.board-foot .nt-new[hidden]{display:none;}
.btn.danger-btn{color:var(--red);border-color:#EDC9C2;}
.btn.danger-btn:hover{background:#FBE9E4;}

/* 편집기 안의 첨부 목록 */
.nt-filelist{display:flex;flex-direction:column;gap:6px;margin-top:9px;}
.nt-filelist li{
  display:flex;align-items:center;gap:9px;
  padding:8px 12px;border-radius:10px;
  background:var(--paper);border:1px solid var(--line);
  font-size:.83rem;color:#3E4B44;
}
.nt-filelist li.del{opacity:.5;text-decoration:line-through;}
.nt-filelist .nfl-ic{flex:none;}
.nt-filelist .nfl-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.nt-filelist .nfl-size{flex:none;font-size:.75rem;color:#8A968E;}
.nt-filelist .mini-btn{margin-left:auto;flex:none;}

/* 공지 상세의 첨부 영역 */
.nd-files{margin-top:22px;padding-top:18px;border-top:1px dashed var(--line);}
.nf-media{display:flex;flex-direction:column;gap:16px;}
.nf-media figure{margin:0;}
.nf-media img,.nf-media video{
  display:block;width:100%;max-width:720px;height:auto;
  border-radius:12px;border:1px solid var(--line);background:#fff;
}
.nf-media figcaption{
  margin-top:6px;font-size:.78rem;color:#8A968E;word-break:break-all;
}
.nf-docs{display:flex;flex-direction:column;gap:6px;margin-top:16px;}
.nf-docs .nf-head{
  font-size:.8rem;font-weight:800;color:#5A6862;margin-bottom:2px;list-style:none;
}
.nf-docs li a{
  display:flex;align-items:center;gap:10px;
  padding:10px 14px;border-radius:10px;text-decoration:none;
  background:var(--paper);border:1px solid var(--line);
  font-size:.85rem;color:#28352E;
  transition:border-color .16s ease,background .16s ease;
}
.nf-docs li a:hover{border-color:var(--leaf);background:#F1FAF4;color:var(--leaf);}
.nf-docs .nf-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.nf-docs .nf-size{margin-left:auto;flex:none;font-size:.76rem;color:#8A968E;}
