:root {
      --color-primary: #b073f0; /* 밍글 대표 퍼플 */
      --color-primary-light: #e8d1ff;
      --color-secondary: #215E80;
      --color-white: #FFFFFF;
      --color-black: #222222;
      --color-gray: #666666;
      --color-light-gray: #F5F5F5;

      /* [신규] 콘텐츠 영역 최대 폭. 기존에는 1100px로 고정되어 있어
         데스크탑 큰 화면에서는 양옆 여백이 과도하게 비어 보이는 문제가
         있었습니다. 여러 곳(.s, .admin-stats, .admin-section)에 흩어져
         있던 동일한 값을 변수 하나로 통일하여, 이후 폭을 조정할 때
         한 곳만 고치면 전체에 일관되게 반영되도록 하였습니다. */
      --content-max-width: 1400px;

      /* 밍글 상태 배지용 컬러 */
      --status-new-bg: #ffe0e8;
      --status-new-color: #b073f0;
      --status-read-bg: #e0f0ff;
      --status-read-color: #0066cc;
      --status-active-bg: #e0ffe0;
      --status-active-color: #00aa00;
      
      --font-primary: 'Noto Sans KR', sans-serif;
      --font-mono: 'Outfit', sans-serif;
    }

    * {
      box-sizing: border-box;
    }

    body {
      font-family: var(--font-primary);
      color: var(--color-black);
      background-color: #FFFFFF; /* 흰색 바탕 */
      margin: 0;
      padding: 0;
      line-height: 1.6;
      display: flex;
      min-height: 100vh;
    }

    /* 레이아웃 구조 (탑 네비게이션) */
    .admin-header {
      position: fixed;
      top: 0;
      left: 0;
      right: 0;
      height: 70px;
      background: #FFFFFF;
      border-bottom: 2px solid #222222;
      display: flex;
      align-items: center;
      justify-content: space-between;
      padding: 0 30px;
      z-index: 1000;
    }

    .admin-header__left {
      display: flex;
      align-items: center;
      gap: 12px;
    }

    .admin-header__logo {
      font-family: 'Outfit', sans-serif;
      font-size: 24px;
      font-weight: 800;
      color: var(--color-primary);
      text-decoration: none;
    }

    .admin-header__badge {
      background: #222222;
      color: #FFFFFF;
      padding: 4px 10px;
      border-radius: 4px;
      font-size: 11px;
      font-weight: 700;
      font-family: var(--font-mono);
      text-transform: uppercase;
    }

    .admin-header__nav {
      display: flex;
      gap: 5px;
    }

    .admin-header__nav-item {
      padding: 6px 12px;
      color: #666666;
      text-decoration: none;
      font-weight: 700;
      font-size: 12.5px;
      border-radius: 6px;
      transition: all 0.3s;
      cursor: pointer;
    }

    .admin-header__nav-item:hover {
      background: #f5f5f5;
      color: #222222;
    }

    .admin-header__nav-item--active {
      background: var(--color-primary);
      color: #FFFFFF !important;
    }

    .admin-header__nav-item--active:hover {
      background: #782ac9;
      color: #FFFFFF !important;
    }

    .admin-header__logout {
      padding: 10px 20px;
      background: none;
      border: 2px solid #dddddd;
      border-radius: 8px;
      font-size: 13px;
      font-weight: 700;
      color: #666666;
      cursor: pointer;
      transition: all 0.3s;
    }

    .admin-header__logout:hover {
      border-color: var(--color-primary);
      color: var(--color-primary);
    }

    .admin-main {
      margin-top: 70px;
      min-height: calc(100vh - 70px);
      width: 100%;
      padding: 40px 0;
    }

    .admin-container {
      max-width: 1200px;
      margin: 0 auto;
      padding: 0 30px;
    }

    /* 메인 콘텐츠 바디 */
    .content-body {
      padding: 0;
    }

    /* 통계 카드 (탑 네비게이션용) */
    .admin-stats {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
      gap: 20px;
      margin-bottom: 30px;
      max-width: var(--content-max-width);
      margin-left: auto;
      margin-right: auto;
    }

    .admin-stat-card {
      background: #FFFFFF;
      border: 2px solid #222222;
      border-radius: 12px;
      padding: 20px 24px;
      display: flex;
      align-items: center;
      gap: 20px;
      box-shadow: 4px 4px 0 rgba(0,0,0,0.12);
      transition: transform 0.2s, box-shadow 0.2s;
    }

    .admin-stat-card:hover {
      transform: translateY(-2px);
      box-shadow: 6px 6px 0 rgba(0,0,0,0.15);
    }

    .admin-stat-card__icon {
      width: 54px;
      height: 54px;
      border-radius: 12px;
      display: flex;
      align-items: center;
      justify-content: center;
      color: #FFFFFF;
      font-size: 22px;
      border: 2px solid #222222;
    }

    .admin-stat-card__label {
      font-size: 12.5px;
      font-weight: 700;
      color: #666666;
      margin-bottom: 4px;
    }

    .admin-stat-card__value {
      font-size: 28px;
      font-weight: 800;
      color: #222222;
      font-family: var(--font-mono);
      line-height: 1.1;
    }

    /* 관리자 섹션 */
    .admin-section {
      max-width: var(--content-max-width);
      margin-left: auto;
      margin-right: auto;
      margin-bottom: 30px;
    }

    .admin-section__header {
      display: flex;
      justify-content: space-between;
      align-items: center;
      margin-bottom: 12px;
    }

    .admin-section__link {
      font-size: 13px;
      color: var(--color-primary);
      text-decoration: none;
      font-weight: 700;
      transition: color 0.2s;
    }

    .admin-section__link:hover {
      color: #782ac9;
      text-decoration: underline;
    }

    /* 페이지 전환 뷰 */
    .page-view {
      display: none;
    }

    .page-view.active {
      display: block;
    }

    /* 밍글 손그림풍 대단위 박스 */
    .s {
      background: var(--color-white);
      border: 2px solid #222222;
      border-radius: 12px;
      position: relative;
      box-shadow: 4px 4px 0 rgba(0,0,0,0.12);
      padding: 24px 30px;
      margin-bottom: 30px;
      max-width: var(--content-max-width);
      margin-left: auto;
      margin-right: auto;
      transition: transform 0.2s, box-shadow 0.2s;
    }

    .s:hover {
      transform: translateY(-2px);
      box-shadow: 6px 6px 0 rgba(0,0,0,0.15);
    }

    /* 밍글 관리자 뱃지 스타일의 스토리보드 ID */
    .h {
      display: inline-block;
      background: #222222;
      color: #FFFFFF;
      padding: 4px 12px;
      border-radius: 4px;
      font-size: 11px;
      font-weight: 600;
      font-family: var(--font-mono);
      text-transform: uppercase;
      letter-spacing: 0.04em;
      margin: 0 0 10px;
    }

    .t {
      font-size: 20px;
      font-weight: 700;
      margin: 0 0 6px;
      color: #222;
    }

    .st {
      font-size: 13px;
      color: var(--color-gray);
      margin: 0 0 20px;
    }

    .sl {
      font-size: 13px;
      color: #222222;
      margin: 24px 0 10px;
      font-weight: 700;
      display: flex;
      align-items: center;
      gap: 6px;
      letter-spacing: 0.02em;
    }

    /* 통계 KPI 카드 그리드 */
    .k, .kpi {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
      gap: 16px;
      margin-bottom: 20px;
    }

    /* 입체형 스탯 카드 */
    .kc {
      background: var(--color-white);
      border: 2px solid #222222;
      border-radius: 12px;
      padding: 16px 20px;
      box-shadow: 3px 3px 0 rgba(0,0,0,0.08);
      display: flex;
      flex-direction: column;
      justify-content: center;
      transition: all 0.2s;
    }

    .kc:nth-child(1) { background: #ffe0e8; } /* 핑크 틴트 */
    .kc:nth-child(2) { background: #e0f0ff; } /* 블루 틴트 */
    .kc:nth-child(3) { background: #e0ffe0; } /* 그린 틴트 */
    .kc:nth-child(4) { background: #fffbe8; } /* 옐로우 틴트 */
    .kc:nth-child(5) { background: #FCEBEB; } /* 레드 틴트 */

    .kl {
      font-size: 12px;
      color: #555555;
      margin: 0 0 6px;
      font-weight: 600;
    }

    .kv {
      font-size: 26px;
      font-weight: 700;
      margin: 0;
      color: #222222;
      line-height: 1.1;
      display: flex;
      align-items: baseline;
    }

    .kvu {
      font-size: 14px;
      color: #555555;
      margin-left: 3px;
      font-weight: 500;
    }

    /* 밍글 관리자 테이블 */
    .tb {
      width: 100%;
      border-collapse: collapse;
      font-size: 12.5px;
      margin: 10px 0;
      background: #FFFFFF;
      border: 2px solid #222222;
      border-radius: 8px;
      overflow: hidden;
      box-shadow: 2px 2px 0 rgba(0,0,0,0.05);
      table-layout: fixed;
    }

    .tb th, .tb td {
      padding: 12px 14px;
      text-align: left;
      border-bottom: 1px solid #EEEEEE;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
    }

    .tb th {
      background: #F9F9F9;
      font-weight: 600;
      color: #555555;
      border-bottom: 2px solid #222222;
      font-size: 12px;
    }

    .tb tbody tr {
      cursor: pointer;
    }

    .tb tbody tr:hover {
      background: #FAF9F3;
    }

    /* 진행률 바 */
    .br {
      height: 12px;
      background: #EEEEEE;
      border: 2px solid #222222;
      border-radius: 6px;
      overflow: hidden;
      margin-bottom: 4px;
    }

    .br > i {
      display: block;
      height: 100%;
      background: var(--color-primary);
      border-radius: 4px;
    }

    .brw > i { background: #EF9F27; }
    .brd > i { background: #FF4444; }
    .brg > i { background: #10B981; }

    /* 밍글 서브 인포 카드 (DB 명세) */
    .db {
      margin-top: 24px;
      background: #FAF8ED;
      border: 2px solid #222222;
      border-radius: 8px;
      padding: 12px 16px;
      border-left: 6px solid var(--color-primary);
      box-shadow: 2px 2px 0 rgba(0,0,0,0.06);
    }

    .dbl {
      font-size: 11px;
      font-weight: 700;
      color: #222222;
      margin: 0 0 6px;
      letter-spacing: 0.04em;
    }

    .dbc {
      font-size: 12px;
      color: #555555;
      line-height: 1.6;
      margin: 0;
    }

    /* 밍글 프리미엄 배지 스타일 */
    .tag {
      display: inline-block;
      padding: 2px 10px;
      border-radius: 20px;
      font-size: 11px;
      font-weight: 600;
      background: #EEEEEE;
      color: #444444;
      border: 1px solid #222222;
    }

    .tg-ok { background: var(--status-active-bg); color: var(--status-active-color); }
    .tg-w { background: #fffbe8; color: #b7791f; }
    .tg-d { background: #FCEBEB; color: #FF4444; }
    .tg-i { background: var(--status-read-bg); color: var(--status-read-color); }
    .tg-g { background: #F1EFE8; color: #444441; }
    .tg-p { background: var(--color-primary-light); color: var(--color-primary); }

    /* 하위 위젯 3열 그리드 */
    .wd3 {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
      gap: 16px;
      margin-bottom: 16px;
    }

    .wc {
      background: #FFFFFF;
      border: 2px solid #222222;
      border-radius: 12px;
      padding: 16px 18px;
      box-shadow: 3px 3px 0 rgba(0,0,0,0.08);
      cursor: pointer;
      transition: transform 0.2s, box-shadow 0.2s, background-color 0.2s;
    }

    .wc:hover {
      transform: translateY(-2px);
      box-shadow: 4px 4px 0 rgba(0,0,0,0.12);
      background-color: #FAF9F3;
    }

    .wct {
      font-size: 12.5px;
      color: var(--color-primary);
      margin: 0 0 6px;
      font-weight: 700;
      display: flex;
      align-items: center;
      gap: 6px;
    }

    .wcv {
      font-size: 14px;
      margin: 0;
      color: #222222;
      font-weight: 600;
    }

    /* 기타 2열 및 리스트 요소 */
    .cl {
      display: grid;
      grid-template-columns: 60px 1fr 100px;
      gap: 8px;
      font-size: 12.5px;
      align-items: center;
      padding: 10px 0;
      border-bottom: 1px dashed #DDDDDD;
    }

    .cl:last-child {
      border-bottom: none;
    }

    .clt { font-weight: 700; color: var(--color-primary); }
    .cls { color: #666666; font-size: 11px; }
    .cla { text-align: right; font-weight: 600; color: #222222; }

    .bar2 {
      display: flex;
      height: 12px;
      border-radius: 6px;
      overflow: hidden;
      background: #EEEEEE;
      margin: 8px 0;
      border: 1.5px solid #222222;
    }

    .bar2 i { display: block; height: 100%; }

    .lg {
      display: flex;
      gap: 12px;
      font-size: 11.5px;
      color: #666666;
      margin-bottom: 8px;
    }

    .lg b {
      display: inline-block;
      width: 10px;
      height: 10px;
      border-radius: 50%;
      margin-right: 4px;
      border: 1px solid #222222;
      vertical-align: middle;
    }

    .tc {
      display: grid;
      grid-template-columns: 80px 1fr;
      gap: 12px;
      padding: 12px;
      background: #FFFFFF;
      border: 2px solid #222222;
      border-radius: 12px;
      margin-bottom: 8px;
      box-shadow: 2px 2px 0 rgba(0,0,0,0.06);
      align-items: center;
    }

    .tct {
      font-size: 14px;
      font-weight: 700;
      color: var(--color-primary);
      text-align: center;
      line-height: 1.3;
    }

    .tcb {
      font-size: 12px;
      color: #666666;
      margin: 4px 0 0;
      line-height: 1.5;
    }

    .tcb b { color: #222222; font-weight: 600; }

    .row3 {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
      gap: 16px;
    }

    .sec {
      padding: 16px;
      background: #FFFFFF;
      border: 2px solid #222222;
      border-radius: 12px;
      box-shadow: 3px 3px 0 rgba(0,0,0,0.08);
    }

    .sect {
      font-size: 13.5px;
      font-weight: 700;
      margin: 0 0 12px;
      color: #222222;
      display: flex;
      align-items: center;
      gap: 6px;
      border-bottom: 2px solid #222222;
      padding-bottom: 6px;
    }

    .secl {
      font-size: 12px;
      color: #555555;
      display: flex;
      justify-content: space-between;
      padding: 6px 0;
      border-bottom: 1px solid #EEEEEE;
    }

    .secl:last-child {
      border-bottom: none;
    }

    .secl b { font-weight: 700; color: #222222; }

    .star { color: #EF9F27; font-size: 13px; letter-spacing: -1px; }
    .starm { color: #D3D1C7; font-size: 13px; letter-spacing: -1px; }

    /* 필터 박스 */
    .fil {
      display: flex;
      gap: 8px;
      flex-wrap: wrap;
      margin-bottom: 12px;
      align-items: center;
    }

    .fil input[type=text], .fil select {
      padding: 8px 12px;
      font-size: 12.5px;
      border: 2px solid #222222;
      background: var(--color-white);
      border-radius: 8px;
      color: var(--color-black);
      outline: none;
      transition: all 0.2s;
    }

    .fil select {
      background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23222' stroke-width='3'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
      background-repeat: no-repeat;
      background-position: right 10px center;
      background-size: 10px;
      padding-right: 28px;
      appearance: none;
      cursor: pointer;
    }

    .fil input[type=text]:focus, .fil select:focus {
      border-color: var(--color-primary);
      box-shadow: 2px 2px 0 rgba(176, 115, 240, 0.2);
    }

    .fil input[type=text] {
      flex: 1;
      min-width: 160px;
    }

    /* 버튼 스타일 */
    .btn {
      padding: 8px 16px;
      font-size: 12.5px;
      border: 2px solid #222222;
      background: var(--color-white);
      border-radius: 20px; /* 둥글둥글한 알약 형태 */
      cursor: pointer;
      color: var(--color-black);
      font-weight: 600;
      transition: all 0.2s;
      box-shadow: 2px 2px 0 rgba(0,0,0,0.1);
      display: inline-flex;
      align-items: center;
      justify-content: center;
      gap: 6px;
    }

    .btn:hover {
      transform: translateY(-1px);
      box-shadow: 3px 3px 0 rgba(0,0,0,0.15);
      background-color: #FAF9F3;
    }

    .btn-p {
      background: #FFD25F; /* 크레용스쿨 시그니처 옐로우 */
      border-color: #222222;
      color: #222222;
    }

    .btn-p:hover {
      background: #FFCA3A;
    }

    /* 탭 메뉴 */
    .tabs {
      display: flex;
      gap: 6px;
      margin-bottom: 20px;
      border-bottom: 2px solid #222222;
      overflow-x: auto;
      padding-bottom: 2px;
    }

    .tab {
      padding: 10px 18px;
      font-size: 13px;
      color: #555555;
      font-weight: 600;
      border: 2px solid #222222;
      border-bottom: none;
      border-radius: 8px 8px 0 0;
      background: #FAF8ED;
      cursor: pointer;
      margin-bottom: -2px;
      white-space: nowrap;
      transition: all 0.2s;
    }

    .tab:hover {
      background: #FFFFFF;
      color: #222222;
    }

    .tab.act {
      color: #FFFFFF;
      background: var(--color-primary); /* 퍼플 대표 */
      border-bottom: 2px solid var(--color-primary);
    }

    /* 폼 영역 */
    .fr {
      margin-bottom: 16px;
    }

    .fl {
      font-size: 12px;
      color: #222222;
      margin: 0 0 6px;
      display: block;
      font-weight: 700;
      letter-spacing: 0.02em;
    }

    .fl b {
      color: #FF4444;
      font-weight: 700;
      margin-left: 2px;
    }

    .fi {
      width: 100%;
      padding: 10px 14px;
      font-size: 13px;
      border: 2px solid #222222;
      background: #FFFFFF;
      border-radius: 8px;
      color: #222222;
      box-sizing: border-box;
      display: block;
      min-height: 42px;
      box-shadow: 2px 2px 0 rgba(0,0,0,0.05);
    }

    /* 실제 입력 폼 필드 */
    .fi-input {
      width: 100%;
      padding: 10px 14px;
      font-size: 13px;
      border: 2px solid #222222;
      background: #FFFFFF;
      border-radius: 8px;
      color: #222222;
      outline: none;
      box-shadow: 2px 2px 0 rgba(0,0,0,0.05);
      transition: border-color 0.2s;
    }

    .fi-input:focus {
      border-color: var(--color-primary);
    }

    .ft {
      min-height: 80px;
      line-height: 1.6;
      white-space: pre-wrap;
    }

    .fg {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
      gap: 16px;
    }

    .fg3 {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
      gap: 16px;
    }

    .req {
      color: #FF4444;
      font-weight: 700;
    }

    /* 칩 */
    .chips {
      display: flex;
      flex-wrap: wrap;
      gap: 8px;
    }

    .chip {
      padding: 6px 14px;
      font-size: 12px;
      background: #FFFFFF;
      color: #555555;
      font-weight: 600;
      border-radius: 20px;
      border: 2px solid #222222;
      box-shadow: 2px 2px 0 rgba(0,0,0,0.06);
      cursor: pointer;
      transition: all 0.2s;
    }

    .chip:hover {
      background: #FAF9F3;
      color: #222222;
    }

    .chip.on {
      background: #e0f0ff;
      color: #0066cc;
      border-color: #222222;
      box-shadow: 2px 2px 0 rgba(0,102,204,0.15);
    }

    .chip.cod {
      background: #e8d1ff;
      color: #782ac9;
      border-color: #222222;
      box-shadow: 2px 2px 0 rgba(120, 42, 201, 0.15);
    }

    /* 강사 전용 컴포넌트 */
    .av {
      width: 80px;
      height: 80px;
      border-radius: 50%;
      background: #FAF8ED;
      border: 2px solid #222222;
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 28px;
      font-weight: 700;
      color: var(--color-primary);
      flex-shrink: 0;
      box-shadow: 2px 2px 0 rgba(0,0,0,0.08);
    }

    .prof {
      display: flex;
      gap: 20px;
      align-items: center;
      margin-bottom: 20px;
      padding: 20px;
      background: #FFFFFF;
      border: 2px solid #222222;
      border-radius: 12px;
      box-shadow: 3px 3px 0 rgba(0,0,0,0.06);
    }

    .profi {
      flex: 1;
      font-size: 13px;
    }

    .profi h3 {
      font-size: 18px;
      font-weight: 700;
      margin: 0 0 6px;
      color: #222222;
    }

    .profi p {
      margin: 4px 0;
      color: #555555;
    }

    .profi p b {
      color: #222222;
      font-weight: 700;
      margin-right: 4px;
    }

    .up-doc {
      display: flex;
      align-items: center;
      gap: 14px;
      padding: 16px 20px;
      border: 2px solid #222222;
      border-radius: 10px;
      margin-bottom: 12px;
      background: #FFFFFF;
      box-shadow: 2px 2px 0 rgba(0,0,0,0.05);
      transition: all 0.2s;
    }

    .up-doc:hover {
      transform: translateY(-1px);
      box-shadow: 3px 3px 0 rgba(0,0,0,0.08);
    }

    .up-doc i.di {
      font-size: 26px;
      color: var(--color-primary);
    }

    .up-doc .info {
      flex: 1;
      font-size: 13px;
    }

    .up-doc .info b {
      font-weight: 700;
      display: block;
      margin-bottom: 4px;
      color: #222222;
    }

    .up-doc .info span {
      color: #666666;
      font-size: 11.5px;
    }

    .up-doc.miss {
      border-color: #FF4444;
      background: #FCEBEB;
      box-shadow: 2px 2px 0 rgba(255, 68, 68, 0.1);
    }

    .up-doc.miss i.di {
      color: #FF4444;
    }

    .up-doc.miss .info b {
      color: #C02C2C;
    }

    .sec-note {
      background: #FFF9E6;
      border: 2px solid #222222;
      border-left: 6px solid #FFC107;
      border-radius: 8px;
      padding: 12px 18px;
      font-size: 12px;
      color: #664D03;
      margin-bottom: 16px;
      line-height: 1.6;
      display: flex;
      align-items: center;
      gap: 8px;
      box-shadow: 2px 2px 0 rgba(0,0,0,0.05);
    }

    /* 타임라인 */
    .tl {
      position: relative;
      padding-left: 24px;
      margin-bottom: 16px;
    }

    .tl::before {
      content: "";
      position: absolute;
      left: 6px;
      top: 6px;
      bottom: -22px;
      width: 2px;
      background: #222222;
    }

    .tl:last-of-type::before {
      display: none;
    }

    .tl::after {
      content: "";
      position: absolute;
      left: 2px;
      top: 5px;
      width: 10px;
      height: 10px;
      border-radius: 50%;
      background: var(--color-primary);
      border: 2px solid #222222;
      box-shadow: 1px 1px 0 rgba(0,0,0,0.1);
    }

    .tl-y {
      font-size: 11.5px;
      color: #666666;
      font-weight: 700;
      font-family: var(--font-mono);
      margin: 0 0 4px;
    }

    .tl-t {
      font-size: 14px;
      font-weight: 700;
      color: #222222;
      margin: 0 0 4px;
    }

    .tl-d {
      font-size: 12.5px;
      color: #555555;
      margin: 0;
      line-height: 1.5;
    }

    /* 스케줄 매트릭스 (파스텔 톤) */
    .mat {
      display: grid;
      grid-template-columns: 60px repeat(7, minmax(0, 1fr));
      gap: 4px;
      font-size: 11px;
      text-align: center;
      margin: 12px 0;
      background: #E8E4F3;
      border: 2px solid #C9BFE8;
      border-radius: 8px;
      padding: 4px;
      box-shadow: 2px 2px 0 rgba(0,0,0,0.04);
      overflow: hidden;
      width: 100%;
      box-sizing: border-box;
      max-width: 100%;
    }

    .mat .h {
      padding: 8px 4px;
      background: #FAF8ED;
      font-weight: 700;
      color: #7A6FA3;
      margin: 0;
      border-radius: 4px;
      font-size: 11px;
      font-family: inherit;
      min-width: 0;
      overflow: hidden;
      white-space: nowrap;
    }

    .mat .lab {
      padding: 8px 4px;
      background: #FAF8ED;
      font-weight: 700;
      color: #8B86A8;
      border-radius: 4px;
      font-size: 11px;
      display: flex;
      align-items: center;
      justify-content: center;
      min-width: 0;
      overflow: hidden;
      white-space: nowrap;
    }

    .mat .cell {
      padding: 8px 4px;
      background: #F4F1FA;
      border-radius: 4px;
      color: #B7B0CC;
      display: flex;
      align-items: center;
      justify-content: center;
      cursor: pointer;
      transition: all 0.2s;
      user-select: none;
      min-width: 0;
      white-space: nowrap;
      overflow: hidden;
    }

    .mat .cell:hover {
      background: #ECE8F6;
      color: #7A6FA3;
    }

    .mat .cell.on {
      background: #D7F3E3;
      color: #2F9163;
      font-weight: 700;
    }

    .mat .cell.maybe {
      background: #FDF1D6;
      color: #B8862E;
      font-weight: 700;
    }

    /* [신규] 강의 개설 화면의 강좌/교육장/강사/교구재 검색창 */
    .search-box {
      display: flex;
      align-items: center;
      gap: 8px;
      background: #FFFFFF;
      border: 1.5px solid #E2DCF0;
      border-radius: 8px;
      padding: 8px 12px;
      margin-bottom: 8px;
    }

    .search-box i {
      color: #B7B0CC;
      font-size: 14px;
    }

    .search-input {
      flex: 1;
      border: none;
      outline: none;
      font-size: 13px;
      font-family: inherit;
      color: #333333;
      background: transparent;
    }

    .search-input::placeholder {
      color: #B7B0CC;
    }

    /* [신규] 강좌/교육장/강사/교구재 선택 카드 그리드.
       기존에는 카드가 세로로 한 줄씩 쌓이는 구조라, 데이터가 많아질수록
       스크롤이 끝없이 길어지고 짧은 텍스트도 가로 전체를 차지해 비효율
       적으로 보였습니다. 데이터 양 증가를 고려하여 여러 칸으로 나눠
       배치하는 그리드 구조로 변경합니다. 카드 폭이 220px보다 좁아지면
       자동으로 줄바꿈되어, 화면 크기에 따라 한 줄에 보이는 카드 수가
       자연스럽게 달라집니다. */
    .card-grid {
      display: grid;
      grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
      gap: 8px;
    }

    .card-grid > div {
      margin-bottom: 0 !important;
    }

    .card-grid .no-result {
      grid-column: 1 / -1;
    }

    .lgnd {
      display: flex;
      gap: 16px;
      font-size: 12px;
      color: #555555;
      margin: 12px 0 0;
      justify-content: center;
      font-weight: 600;
    }

    .lgnd b {
      display: inline-block;
      width: 12px;
      height: 12px;
      border-radius: 3px;
      vertical-align: middle;
      margin-right: 6px;
      border: 1px solid #222222;
    }

    /* 업로드 */
    .up {
      padding: 24px;
      border: 2px dashed #222222;
      border-radius: 8px;
      text-align: center;
      color: #555555;
      font-size: 13px;
      background: #FAF8ED;
      cursor: pointer;
      font-weight: 600;
      transition: all 0.2s;
    }

    .up:hover {
      background: #FFFFFF;
      border-color: var(--color-primary);
      color: var(--color-primary);
    }

    .up i {
      font-size: 28px;
      display: block;
      margin-bottom: 8px;
      color: var(--color-primary);
    }

    /* 리스트 로우 */
    .row {
      display: flex;
      justify-content: space-between;
      align-items: center;
      padding: 14px 20px;
      background: #FFFFFF;
      border: 2px solid #222222;
      border-radius: 8px;
      margin-bottom: 10px;
      box-shadow: 2px 2px 0 rgba(0,0,0,0.06);
      transition: all 0.2s;
    }

    .row:hover {
      transform: translateY(-1px);
      box-shadow: 3px 3px 0 rgba(0,0,0,0.1);
      background-color: #FAF9F3;
    }

    .rowm {
      font-size: 13px;
      line-height: 1.5;
    }

    .rowm b {
      font-weight: 700;
      color: #222222;
      font-size: 14px;
    }

    .rowm span {
      color: #666666;
      font-size: 11.5px;
      margin-right: 8px;
    }

    .ses {
      display: flex;
      justify-content: flex-end;
      gap: 10px;
      margin-top: 24px;
      padding-top: 16px;
      border-top: 2px dashed #EEEEEE;
    }

    /* 커스텀 알림 토스트 */
    .toast-container {
      position: fixed;
      bottom: 24px;
      right: 24px;
      z-index: 10000;
      display: flex;
      flex-direction: column;
      gap: 10px;
    }

    .toast {
      background: #FFFFFF;
      border: 2px solid #222222;
      border-radius: 8px;
      padding: 12px 20px;
      box-shadow: 4px 4px 0 rgba(0,0,0,0.15);
      font-size: 13px;
      font-weight: 600;
      display: flex;
      align-items: center;
      gap: 8px;
      transform: translateY(100px);
      opacity: 0;
      transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
    }

    .toast.show {
      transform: translateY(0);
      opacity: 1;
    }

    .toast-success { border-left: 6px solid #10B981; }
    .toast-info { border-left: 6px solid var(--color-primary); }
    .toast-warn { border-left: 6px solid #FFC107; }

    /* 백 버튼 */
    .back-btn {
      display: inline-flex;
      align-items: center;
      gap: 6px;
      font-size: 13px;
      font-weight: 700;
      color: #555555;
      cursor: pointer;
      margin-bottom: 16px;
      transition: color 0.2s;
    }

    .back-btn:hover {
      color: var(--color-primary);
    }

    /* --- 교구재 관리 전용 추가 스타일 (Mingle Style) --- */
    .rad {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 15px;
      margin-bottom: 20px;
    }
    .rc {
      padding: 16px;
      border: 2px solid #222222;
      border-radius: 12px;
      cursor: pointer;
      background: var(--color-white);
      transition: all 0.2s;
      box-shadow: 2px 2px 0 rgba(0,0,0,0.1);
    }
    .rc.on {
      border: 2px solid var(--color-primary);
      background: var(--color-primary-light);
      box-shadow: 4px 4px 0 rgba(176,115,240,0.2);
    }
    .rc:hover:not(.on) {
      transform: translateY(-1px);
      box-shadow: 3px 3px 0 rgba(0,0,0,0.15);
    }
    .rci {
      font-size: 26px;
      color: #222222;
      margin-bottom: 8px;
    }
    .rc.on .rci {
      color: var(--color-primary);
    }
    .rcl {
      font-size: 14px;
      font-weight: 700;
      margin: 0 0 6px;
    }
    .rcd {
      font-size: 11.5px;
      color: var(--color-gray);
      margin: 0;
      line-height: 1.5;
    }
    .rc.on .rcd {
      color: #782ac9;
    }
    .opt {
      display: flex;
      justify-content: space-between;
      align-items: center;
      padding: 12px 18px;
      background: var(--color-light-gray);
      border: 2px solid #222222;
      border-radius: 10px;
      margin-bottom: 12px;
    }
    .opt.act {
      background: var(--color-primary-light);
      border-color: var(--color-primary);
    }
    .optl {
      font-size: 13px;
      color: #222222;
    }
    .optl b {
      font-weight: 700;
    }
    .optl span {
      color: var(--color-gray);
      font-size: 11.5px;
      margin-left: 8px;
    }
    .tgl {
      position: relative;
      display: inline-block;
      width: 44px;
      height: 24px;
      background: var(--color-primary);
      border: 2px solid #222222;
      border-radius: 12px;
      cursor: pointer;
      transition: background-color 0.2s;
    }
    .tgl.off {
      background: #B4B2A9;
    }
    .tgl::after {
      content: "";
      position: absolute;
      top: 2px;
      left: 22px;
      width: 16px;
      height: 16px;
      background: #fff;
      border: 2px solid #222222;
      border-radius: 50%;
      transition: left 0.2s;
    }
    .tgl.off::after {
      left: 2px;
    }
    .dtbl {
      background: var(--color-light-gray);
      border: 2px solid #222222;
      padding: 14px 18px;
      border-radius: 10px;
      margin-bottom: 15px;
    }
    .dtbl-h {
      display: flex;
      justify-content: space-between;
      align-items: center;
      margin-bottom: 8px;
      font-size: 13px;
    }
    .dtbl-h b {
      font-weight: 700;
      font-size: 14px;
    }