/* v2 subscribe: category tabs and subscription periods. */
#v2Subscribe .v2-period-control {display:flex;flex-direction:column;gap:8px;margin-bottom:20px;}
#v2Subscribe .v2-period-control label {font-size:14px;font-weight:600;color:var(--text-muted);}
#v2Subscribe .v2-period-control select {width:100%;min-height:48px;padding:12px 16px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--text-main);font:inherit;}
#v2Subscribe .v2-period-plans .n04-plan:focus-visible {outline:2px solid var(--brand);outline-offset:4px;}
#v2Subscribe .n04-plan-new .v2-period-amount {font:inherit;letter-spacing:inherit;}
#v2Subscribe .v2-period-plans .n04-plan {padding:8px;border-width:1px;border-radius:18px;}
#v2Subscribe .v2-period-plans .n04-plan.selected {box-shadow:0 4px 18px var(--line);}
#v2Subscribe .v2-period-plans .n04-plan.best-pro::before {display:none;}
#v2Subscribe .v2-plan-header {position:relative;min-height:90px;padding:16px;border-radius:11px;background:var(--brand-dark);color:var(--surface);}
#v2Subscribe .n04-plan-pro .v2-plan-header {background:linear-gradient(100deg,var(--n09-chip,var(--brand)) 0%,var(--n09-hot-b,var(--brand)) 50%,var(--n09-hot-a,var(--brand)) 100%);}
#v2Subscribe .v2-plan-header .n04-plan-name {margin:0 0 4px;color:var(--surface);font-size:20px;font-weight:700;line-height:1.3;}
#v2Subscribe .v2-plan-caption {margin:0;padding-right:24px;color:var(--surface);font-size:13px;font-weight:500;line-height:1.6;}
#v2Subscribe .v2-plan-selected {position:absolute;right:14px;bottom:14px;visibility:hidden;color:var(--surface);font-size:18px;}
#v2Subscribe .n04-plan.selected .v2-plan-selected {visibility:visible;}
#v2Subscribe .v2-period-plans .n04-plan-body {margin:0;padding:22px 16px 8px;}
#v2Subscribe .v2-period-plans .n04-plan-discount {display:flex;align-items:center;flex-wrap:wrap;gap:7px;}
#v2Subscribe .v2-period-compare, #v2Subscribe .v2-class-compare {display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin-bottom:4px;color:rgba(55,55,55,.8);font-size:14px;font-weight:400;line-height:18px;} /* class101 가격 비교 줄과 같은 값 */
#v2Subscribe .v2-period-compare del, #v2Subscribe .v2-class-compare del {color:inherit;font-size:14px;font-weight:400;}
#v2Subscribe .v2-period-compare .v2-arrow, #v2Subscribe .v2-class-compare .v2-arrow {flex:none;width:14px;height:14px;}
#v2Subscribe .v2-period-compare .v2-coupon-regular, #v2Subscribe .v2-class-compare .v2-coupon-regular {color:inherit;} /* 쿠폰 전 할인가 취소선도 줄과 같은 회색 */
#v2Subscribe .v2-period-compare .v2-period-total-label, #v2Subscribe .v2-period-compare .v2-coupon-total-label {display:none;}
#v2Subscribe .v2-coupon-steps {display:inline-flex;flex-wrap:wrap;align-items:center;gap:4px;}
#v2Subscribe .v2-coupon-steps[hidden] {display:none;}
#v2Subscribe .v2-coupon-regular {color:var(--text-muted);}
#v2Subscribe .v2-coupon-final {color:inherit;font-size:14px;font-weight:400;}
#v2Subscribe .v2-period-total {display:inline-flex;flex-wrap:wrap;align-items:center;gap:4px;}
#v2Subscribe .v2-period-total[hidden] {display:none;}
#v2Subscribe .v2-period-total-amount {color:inherit;font-size:14px;font-weight:400;}
#v2Subscribe .v2-period-compare[hidden],#v2Subscribe .v2-period-unit[hidden] {display:none;}
#v2Subscribe .v2-period-plans .n04-plan-yearline {margin-bottom:16px;}
#v2Subscribe .v2-plan-benefits {padding:0;border:0;}
#v2Subscribe .v2-plan-benefits li {display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:15px 0;border-top:1px solid var(--line);font-size:16px;line-height:1.5;}
#v2Subscribe .v2-benefit-label {color:var(--text-muted);font-size:13px;font-weight:400;line-height:1.5;}
#v2Subscribe .v2-plan-benefits b {color:var(--brand-dark);font-weight:500;}
#v2Subscribe .v2-plan-benefits .v2-benefit-primary b {font-size:18px;font-weight:600;}
#v2Subscribe .v2-benefit-value {font:inherit;letter-spacing:inherit;white-space:nowrap;}
#v2Subscribe .n04-plan-pro .v2-plan-benefits .v2-benefit-value {color:var(--brand);font-weight:700;}
#v2Subscribe .v2-benefit-detail {font-size:12px;line-height:1.6;color:var(--text-muted);word-break:keep-all;}
#v2Subscribe .v2-plan-quotas {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px;margin-top:4px;padding-top:15px;border-top:1px solid var(--line);}
#v2Subscribe .v2-plan-quotas li {min-width:0;gap:4px;padding:0;border:0;background:transparent;}
#v2Subscribe .v2-plan-quotas b {font-size:18px;font-weight:600;}
#v2Subscribe .v2-plan-quotas .v2-benefit-label {white-space:nowrap;}
#v2Subscribe .v2-feature-compare {margin:32px 0 0;}
#v2Subscribe .v2-feature-compare h3 {margin:0 0 14px;font-size:18px;font-weight:700;line-height:1.4;color:var(--brand-dark);}
#v2Subscribe .v2-feature-table {width:100%;table-layout:fixed;border-collapse:collapse;font-size:16px;line-height:1.5;color:var(--text-main);}
#v2Subscribe .v2-feature-table th,#v2Subscribe .v2-feature-table td {box-sizing:border-box;padding:12px 10px;border-bottom:1px solid var(--line);text-align:center;vertical-align:middle;font-size:16px;font-weight:400;word-break:keep-all;overflow-wrap:break-word;}
#v2Subscribe .v2-feature-table tbody tr {height:76px;}
#v2Subscribe .v2-feature-table th[scope="row"] {text-align:left;font-weight:600;color:var(--text-main);}
#v2Subscribe .v2-feature-table thead th {height:52px;font-size:14px;font-weight:600;letter-spacing:0;color:var(--text-sub);border-bottom:2px solid var(--line);}
#v2Subscribe .v2-feature-table thead th:first-child {width:32%;text-align:left;}
#v2Subscribe .v2-feature-table thead th.is-pro {color:var(--brand);}
#v2Subscribe .v2-feature-unit {display:block;margin-top:3px;font-size:14px;font-weight:400;line-height:1.4;color:var(--text-sub);}
#v2Subscribe .v2-feature-table td.is-diff {font-weight:400;color:var(--brand-dark);}
body.v2-subscribe-class #v2Subscribe .v2-feature-table .is-sub {display:none;} /* 클래스권·NCLEX관 탭에서는 구독 등급 열을 뺀다(2026-09-29 사용자 요청) */
body.v2-subscribe-class #v2Subscribe .v2-feature-table thead th.is-class {color:var(--brand);} /* 클래스권 탭에서는 PRO 대신 클래스권 열을 PRO와 같은 방식으로 강조 */
body.v2-subscribe-class #v2Subscribe .v2-feature-table td.is-diff.is-class {font-weight:600;color:var(--brand);}
body.v2-subscribe-class #v2Subscribe .v2-feature-compare {box-sizing:border-box;max-width:1180px;margin-left:auto;margin-right:auto;padding:0 48px;} /* 표 너비를 클래스 카드 목록(.v2-class-carousel)·NCLEX 블록과 같게 */
@media (max-width:600px) {body.v2-subscribe-class #v2Subscribe .v2-feature-compare {padding:0;}}
#v2Subscribe .v2-feature-table td.is-diff.is-pro {font-weight:600;color:var(--brand);}
@media (max-width:600px) {#v2Subscribe .v2-feature-compare {margin-top:24px;} #v2Subscribe .v2-feature-compare h3 {font-size:16px;margin-bottom:10px;} #v2Subscribe .v2-feature-table {font-size:12px;line-height:1.35;} #v2Subscribe .v2-feature-table th,#v2Subscribe .v2-feature-table td {padding:8px 3px;font-size:12px;} #v2Subscribe .v2-feature-table tbody tr {height:auto;} #v2Subscribe .v2-feature-table thead th {height:40px;font-size:11px;} #v2Subscribe .v2-feature-table thead th:first-child {width:28%;} #v2Subscribe .v2-feature-unit {margin-top:2px;font-size:11px;}}
#v2Subscribe .v2-period-renewal {margin:16px 12px;font-size:13px;line-height:1.6;color:var(--text-muted);}
/* 구구독 이용 중 결제 안내 모달 — subscribe-periods.js 가 body 직속으로 만든다(transform 조상 회피). 기존 #iap-notice-modal-overlay 와 같은 규격 */
#v2-legacy-modal {position:fixed;inset:0;z-index:var(--z-modal, 1200);display:flex;align-items:center;justify-content:center;padding:16px;background:rgba(0,0,0,.5);}
#v2-legacy-modal[hidden] {display:none;}
#v2-legacy-modal .v2-legacy-modal-box {width:min(380px,100%);box-sizing:border-box;padding:28px;border-radius:14px;background:#fff;box-shadow:0 10px 30px rgba(0,0,0,.2);text-align:center;}
#v2-legacy-modal h3 {margin:0 0 12px;font-size:18px;color:var(--text-primary);}
#v2-legacy-modal .v2-legacy-modal-body {margin:0 0 20px;font-size:14px;line-height:1.6;color:var(--text-muted);text-align:left;white-space:pre-line;}
#v2-legacy-modal .v2-legacy-modal-actions {display:flex;flex-direction:column;gap:8px;}
#v2-legacy-modal .v2-legacy-modal-primary {padding:12px 16px;border:0;border-radius:8px;background:var(--color-primary-500);color:#fff;font-size:14px;font-weight:700;cursor:pointer;}
#v2-legacy-modal .v2-legacy-modal-close {padding:12px 16px;border:0;border-radius:8px;background:#f2f4f6;color:var(--text-primary);font-size:14px;font-weight:600;cursor:pointer;}
#v2Subscribe .pricing-wrap-full {display:none;}
#v2Subscribe #btn-mou-open {display:none;} /* 할인 코드 입력(#btn-promo-open)·이력 지우기(#btn-mou-reset)는 2026-09-17 쿠폰 연결 복구로 다시 노출. 간대협 버튼만 숨김 유지 */
#v2Subscribe #n04-pricing {padding-top:0;background:var(--surface);scroll-margin-top:20px;}
#v2Subscribe .v2-pass-tabs {display:flex;width:100%;border-bottom:1px solid var(--line);margin:0 0 44px;}
#v2Subscribe .v2-pass-tab {position:relative;flex:1;display:flex;align-items:center;justify-content:center;min-height:64px;padding:18px 12px;border:0;border-radius:0;background:transparent;font:inherit;font-size:17px;font-weight:600;line-height:1.4;color:var(--text-muted);cursor:pointer;}
#v2Subscribe .v2-pass-tab[hidden] {display:none;}
#v2Subscribe .v2-pass-tab::after {content:'';position:absolute;bottom:-1px;left:0;right:0;height:3px;background:transparent;}
#v2Subscribe .v2-pass-tab[aria-selected="true"] {color:var(--brand-dark);font-weight:700;}
#v2Subscribe .v2-pass-tab[aria-selected="true"]::after {background:var(--brand);}
#v2Subscribe .v2-pass-tab:focus-visible,#v2Subscribe .v2-class-link:focus-visible {outline:2px solid var(--brand);outline-offset:-4px;}
#v2Subscribe [role="tabpanel"][hidden] {display:none !important;}
#v2Subscribe .v2-class-carousel {position:relative;max-width:1180px;margin:auto;padding:0 48px;scroll-margin-top:84px;} /* 링크 진입 스크롤 목표(subscribe-tabs.js) — 고정 알약(.v2-coupon-ticker) 아래 + 카드 위로 튀어나온 뱃지 여유 */
#v2Subscribe #n04-pricing > .sub-container {max-width:1280px;}
#v2Subscribe .v2-class-list {display:grid;grid-auto-flow:column;grid-auto-columns:calc((100% - 54px)/4);gap:18px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:none;padding:20px 0 4px;}
#v2Subscribe .v2-class-list::-webkit-scrollbar {display:none;}
#v2Subscribe .v2-class-list:focus-visible {outline:2px solid var(--brand);outline-offset:2px;}
#v2Subscribe .v2-class-list > .v2-class-card {scroll-snap-align:start;}
#v2Subscribe .v2-class-list .v2-class-description {flex:1;}
#v2Subscribe .v2-class-nav {position:absolute;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:1px solid var(--line);border-radius:50%;background:var(--surface);color:var(--brand-dark);box-shadow:0 1px 4px color-mix(in srgb,var(--line) 35%,transparent);font-size:17px;cursor:pointer;}
#v2Subscribe .v2-class-prev {left:0;}
#v2Subscribe .v2-class-next {right:0;}
#v2Subscribe .v2-class-nav:disabled {color:var(--text-muted);opacity:.35;cursor:default;}
#v2Subscribe .v2-class-nav:focus-visible {outline:2px solid var(--brand);outline-offset:3px;}
@media (max-width:1100px) {#v2Subscribe .v2-class-list {grid-auto-columns:calc((100% - 18px)/2);}}
#v2Subscribe .v2-class-card {position:relative;display:flex;flex-direction:column;min-width:0;padding:26px;border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--text-main);word-break:keep-all;overflow-wrap:break-word;}
#v2Subscribe .v2-class-badges {position:absolute;top:0;left:20px;right:20px;transform:translateY(-50%);display:flex;align-items:center;justify-content:flex-start;gap:8px;}
#v2Subscribe .v2-class-list .v2-class-badges {position:relative;top:auto;left:auto;right:auto;transform:none;margin:-40px -6px 12px;}
#v2Subscribe .v2-class-badges .v2-class-badge {flex:none;padding:5px 8px;font-size:13px;white-space:nowrap;} /* 연간 구독·48% → 53% 추가 할인을 한 줄에 */
#v2Subscribe .v2-class-badges {flex-wrap:nowrap;gap:6px;}
#v2Subscribe .v2-class-badge {display:inline-flex;align-items:center;justify-content:center;min-width:0;max-width:100%;min-height:28px;padding:5px 10px;border-radius:6px;font-size:14px;font-weight:600;line-height:1.4;white-space:normal;overflow-wrap:anywhere;}
#v2Subscribe .v2-class-badge-period {background:var(--brand-dark);color:var(--surface);}
#v2Subscribe .v2-class-badge-discount {background:linear-gradient(100deg,var(--n09-chip,var(--brand)) 0%,var(--n09-hot-b,var(--brand)) 50%,var(--n09-hot-a,var(--brand)) 100%);color:var(--brand-dark);}
#v2Subscribe .v2-class-intro {display:flex;flex-direction:column;flex:1;}
#v2Subscribe .v2-class-purchase {margin-top:24px;padding-top:20px;border-top:1px solid var(--line);}
#v2Subscribe .v2-class-card h3 {margin:0 0 18px;font-size:23px;line-height:1.3;font-weight:700;letter-spacing:-.6px;color:var(--brand-dark);}
#v2Subscribe .v2-class-tagline {margin:0 0 5px;font-size:16px;font-weight:600;line-height:1.5;color:var(--brand);}
#v2Subscribe .v2-class-description {min-height:3.3em;margin:0;font-size:14px;line-height:1.65;color:var(--text-sub);}
#v2Subscribe .v2-class-price {margin:0;color:var(--text-main);font-size:30px;font-weight:800;line-height:1.4;}
#v2Subscribe .v2-class-price span {margin-left:3px;font-size:17px;font-weight:600;}
#v2Subscribe .v2-class-original {min-height:1.4em;margin:0 0 2px;color:var(--text-muted);font-size:15px;font-weight:500;line-height:1.4;}
#v2Subscribe .v2-class-coupon-until {display:block;margin:0 0 4px;color:var(--color-error-hover,#DC2626);font-size:12px;font-weight:600;letter-spacing:-.5px;line-height:1.6;} /* 구독 카드 '.v2-period-label.is-discount' 과 같은 '쿠폰 적용가 (N% 할인)' */
#v2Subscribe .v2-period-label.is-discount {color:var(--color-error-hover,#DC2626);} /* 구독 카드 할인 문구('N% 할인'·'쿠폰 적용가 (N% 할인)') = CTA 위 말풍선 시간(.v2-sub-deadline b)과 같은 빨강 */
#v2Subscribe .v2-class-original {white-space:nowrap;} /* 쿠폰 적용 시 두 취소선을 한 줄로 */
#v2Subscribe .v2-class-compare {margin-bottom:0;flex-wrap:nowrap;}
#v2Subscribe .v2-class-period {margin:4px 0 0;color:var(--text-sub);font-size:13px;}
#v2Subscribe .v2-class-buy {display:block;align-self:start;box-sizing:border-box;width:100%;margin:20px 0 0;padding:14px;border:0;border-radius:10px;background:var(--brand-dark) url('/resources/img/subscribe/subscribe_summer02.webp') center center / cover no-repeat;color:var(--surface);font:inherit;font-weight:600;text-align:center;text-decoration:none;cursor:pointer;} /* 배경 = 구독 페이지 promo(.s02-promo)와 같은 이미지 — 가을엔 subscribe_season.php 가 fall02 로 바꾼다 */
#v2Subscribe .v2-class-buy.is-owned {background:var(--brand-dark);} /* 이용 중 = 구매 버튼(브랜드 앰버)과 구분되는 딥브라운. 선택자를 한 단계 높여 계절 파일(subscribe_season.php)의 .v2-class-buy 배경보다 우선 */
#v2Subscribe .v2-class-buy:disabled {background:var(--surface-soft);color:var(--text-muted);cursor:default;}
#v2Subscribe .v2-class-buy:focus-visible {outline:2px solid var(--brand-dark);outline-offset:3px;}
#v2Subscribe .v2-buy-deadline {margin:10px 0 0;font-size:13px;font-weight:400;line-height:1.4;text-align:center;color:var(--color-error-hover,#DC2626);font-variant-numeric:tabular-nums;}
#v2Subscribe .v2-buy-deadline[hidden] {display:none;}
@supports (grid-template-rows:subgrid) {#v2Subscribe .v2-class-list {grid-template-rows:auto auto auto auto auto auto;row-gap:0;} #v2Subscribe .v2-class-list > .v2-class-card {display:grid;grid-row:1 / span 6;grid-template-columns:minmax(0,1fr);grid-template-rows:subgrid;} #v2Subscribe .v2-class-purchase {display:grid;grid-row:span 4;grid-template-columns:minmax(0,1fr);grid-template-rows:subgrid;row-gap:0;}}
#need_popup.v2-class-payment {position:fixed;inset:0;z-index:10000;align-items:center;justify-content:center;padding:20px;background:var(--overlay-heavy, rgba(0,0,0,.6));backdrop-filter:blur(4px);}
#need_popup.v2-class-payment[hidden] {display:none !important;}
#need_popup.v2-class-payment:not([hidden]) {display:flex;}
#need_popup.v2-class-payment .vm-modal {max-height:90vh;overflow-y:auto;}
#v2Subscribe .v2-class-link {display:inline-flex;align-items:center;align-self:flex-start;gap:10px;margin-top:16px;color:var(--brand);font-size:14px;font-weight:700;text-decoration:none;}
#v2Subscribe .v2-class-card.is-browsing {border-color:var(--brand);}
#v2Subscribe .v2-class-list > .v2-class-card:not([data-class="nclex"]) {cursor:pointer;} /* 카드를 누르면 선택(주소 ?class=<코드>) — subscribe-tabs.js */
#v2Subscribe .v2-class-card.is-selected {border-color:var(--brand);box-shadow:0 4px 18px var(--line);} /* 구독 카드 .n04-plan.selected 와 같은 선택 표시 */
#v2Subscribe .v2-class-link[aria-expanded="true"] i {transform:rotate(90deg);}
#v2Subscribe .v2-class-contents {max-width:1180px;margin:24px auto 0;padding:0 48px;}
#v2Subscribe .v2-class-contents[hidden],#v2Subscribe .v2-class-content[hidden] {display:none;}
#v2Subscribe .v2-class-content {padding:22px 24px;border:1px solid var(--line);border-radius:14px;background:var(--surface-soft);scroll-margin-top:24px;}
#v2Subscribe .v2-class-content-head {display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px 16px;margin-bottom:16px;}
#v2Subscribe .v2-class-content-head h3 {margin:0;font-size:17px;font-weight:700;line-height:1.4;color:var(--brand-dark);}
#v2Subscribe .v2-class-content-count {margin-left:6px;color:var(--brand);}
#v2Subscribe .v2-class-content-close {padding:6px 12px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--text-sub);font:inherit;font-size:13px;line-height:1.4;cursor:pointer;}
#v2Subscribe .v2-class-content-grid {display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px 16px;}
#v2Subscribe .v2-class-item {display:flex;flex-direction:column;gap:7px;min-width:0;color:var(--text-main);text-decoration:none;}
#v2Subscribe .v2-class-item-thumb {position:relative;display:block;max-width:100%;aspect-ratio:16/9;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--surface);}
#v2Subscribe .v2-class-item-thumb img {position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
#v2Subscribe .v2-class-item-fallback {position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--text-muted);}
#v2Subscribe .v2-class-item-title {font-size:14px;font-weight:600;line-height:1.45;color:var(--text-main);word-break:keep-all;overflow-wrap:anywhere;}
#v2Subscribe .v2-class-item-meta {font-size:12px;line-height:1.4;color:var(--text-muted);}
#v2Subscribe .v2-class-item-price {display:flex;align-items:baseline;gap:5px;font-size:14px;line-height:1.4;}
#v2Subscribe .v2-class-item-price b {color:var(--brand);font-weight:600;}
#v2Subscribe .v2-class-item-price strong {font-weight:600;color:var(--text-main);}
#v2Subscribe .v2-class-item-price small {font-size:12px;color:var(--text-muted);}
#v2Subscribe .v2-class-content-empty {margin:0;font-size:14px;line-height:1.6;color:var(--text-sub);}
@media (max-width:1100px) {#v2Subscribe .v2-class-content-grid {grid-template-columns:repeat(3,minmax(0,1fr));}}
/* 클래스권 카드 선택 시 N08 콘텐츠 섹션 — 원래 구독 블록은 가리고 그 클래스 포함 콘텐츠(.n08-class-pane)만 보인다(subscribe-tabs.js updateClassContent) */
#v2Subscribe .n08-content:not(.is-class-mode) .n08-class-pane {display:none;}
#v2Subscribe .n08-content .n-h2 .n08-hl {color:var(--point, rgb(255, 93, 0));} /* 제목 속 클래스 이름 강조 (2026-09-30 사용자 요청) */
/* 구독 탭 N08 수강권 카드 — 홈 선반 .showcase-card처럼 썸네일+제목만. 흰 박스·그림자·확대 효과·가격 줄 없음. 제목은 홈과 달리 말줄임 없이 전체 줄바꿈(class101 목록처럼, 2026-09-30 사용자 요청, 전 전공) */
#v2Subscribe .n08-content .voucher-card {background:transparent;border:0;border-radius:0;box-shadow:none;}
#v2Subscribe .n08-content .voucher-card:hover, #v2Subscribe .n08-content .voucher-card.is-open {transform:none;border-color:transparent;}
#v2Subscribe .n08-content .voucher-thumb {border:1px solid var(--line);border-radius:10px;background:var(--surface);} /* 클래스 콘텐츠 썸네일(.v2-class-item-thumb)과 같은 16:9·테두리·둥글기 */
#v2Subscribe .n08-content .voucher-thumb img {position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:0;transform:none;}
#v2Subscribe .n08-content .voucher-info {padding:8px 1px 0;}
#v2Subscribe .n08-content .voucher-title {margin:0;font-size:14px;line-height:1.5;font-weight:500;color:var(--text-main);white-space:normal;overflow:visible;text-overflow:clip;word-break:keep-all;overflow-wrap:anywhere;}
#v2Subscribe .n08-content .voucher-price-row {display:none;}
/* N08 목록 격자 — 구독(.voucher-grid)·클래스(.n08-class-pane .v2-class-content-grid) 공통: 클래스 기준 열 수(4 → 1100px 이하 3 → 600px 이하 2),
   폭은 본문(992px)보다 살짝 넓은 최대 1080px(화면 좌우 24px 여백 유지), 간격 행·열 1024px 이상 24·16px / 미만 20·12px (2026-09-30 사용자 요청) */
#v2Subscribe .n08-content .voucher-grid, #v2Subscribe .n08-class-pane .v2-class-content-grid {grid-template-columns:repeat(4,minmax(0,1fr));gap:20px 12px;margin-left:calc(50% - min(540px, 50vw - 24px));margin-right:calc(50% - min(540px, 50vw - 24px));}
@media (min-width:1024px) {#v2Subscribe .n08-content .voucher-grid, #v2Subscribe .n08-class-pane .v2-class-content-grid {gap:24px 16px;}}
@media (max-width:1100px) {#v2Subscribe .n08-content .voucher-grid, #v2Subscribe .n08-class-pane .v2-class-content-grid {grid-template-columns:repeat(3,minmax(0,1fr));}}
@media (max-width:600px) {#v2Subscribe .n08-content .voucher-grid, #v2Subscribe .n08-class-pane .v2-class-content-grid {grid-template-columns:repeat(2,minmax(0,1fr));}}
/* N08 목록 미리보기 + 시작하기 유도 블록(.n08-gate, class101 svod 블록 치수 참고) — subscribe-tabs.js addN08Gate. 3줄(4열 12개·3열 9개)·모바일 10개만 보이고 나머지는 펼치지 않는다(구독·구매 후 이용, 2026-09-30 사용자 결정).
   구독 목록의 기존 더보기(.n08-more-btn·subscribe_common.css 800px 이하 4개 제한)는 이 블록이 대신한다. 더 볼 게 없으면(.has-more 없음) 그라데이션 없이 버튼만 목록 아래에 둔다. */
#v2Subscribe .n08-gated .voucher-grid > .voucher-card {display:block;}
#v2Subscribe .n08-gated .n08-more-btn {display:none;}
#v2Subscribe .n08-gated :is(.voucher-grid, .v2-class-content-grid) > :nth-child(n+13) {display:none !important;}
@media (min-width:601px) and (max-width:1100px) {#v2Subscribe .n08-gated :is(.voucher-grid, .v2-class-content-grid) > :nth-child(n+10) {display:none !important;}}
@media (max-width:600px) {#v2Subscribe .n08-gated :is(.voucher-grid, .v2-class-content-grid) > :nth-child(n+11) {display:none !important;}}
#v2Subscribe .n08-gate {position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;margin-top:48px;text-align:center;}
#v2Subscribe .n08-gated.has-more .n08-gate {margin-top:-60px;} /* 마지막(3번째) 줄 썸네일이 절반쯤 보이게 — 덮개는 그 줄에만 걸친다 (2026-09-30 사용자 요청) */
#v2Subscribe .n08-gated.has-more .n08-gate::before {content:"";position:absolute;top:-170px;left:50%;z-index:-1;width:100vw;transform:translateX(-50%);height:250px;background:linear-gradient(0deg, var(--surface-soft) 0, var(--surface-soft) 110px, transparent 100%);pointer-events:none;} /* 아래 110px(목록 끝 +20px까지)는 불투명 — 마지막 줄 제목이 문구와 겹치지 않게 */
#v2Subscribe .n08-gate-title {margin:0 0 16px;font-size:32px;font-weight:700;line-height:40px;color:var(--text-main);word-break:keep-all;}
#v2Subscribe .n08-gate-hl {color:var(--point, rgb(255, 93, 0));} /* --point: 가을 글자 강조색(subscribe_season.php), 없으면 같은 값 */
#v2Subscribe .n08-gate-sub {margin:0 0 32px;font-size:18px;font-weight:600;line-height:26px;color:var(--text-main);word-break:keep-all;}
#v2Subscribe .n08-gate-cta {width:280px;max-width:100%;height:56px;margin:0;padding:0 16px;border:0;border-radius:12px;background:var(--cta-grad);color:#fff;font:inherit;font-size:16px;font-weight:700;line-height:20px;letter-spacing:-0.3px;cursor:pointer;transition:all 0.25s ease;} /* 결제로 가는 버튼 공통 그라데이션(--cta-grad, subscribe_season.php) — 같은 화면 가격표 「선택한 구독 시작하기」와 같은 색·둥글기·글자, 그림자 없음 */
#v2Subscribe .n08-gate-cta:hover {background:var(--cta-grad-hover);transform:translateY(-1px);}
@media (max-width:600px) {#v2Subscribe .n08-gate-title {font-size:24px;line-height:32px;} #v2Subscribe .n08-gate-sub {font-size:15px;line-height:22px;} #v2Subscribe .n08-gated.has-more .n08-gate {margin-top:-40px;} #v2Subscribe .n08-gated.has-more .n08-gate::before {top:-110px;height:190px;background:linear-gradient(0deg, var(--surface-soft) 0, var(--surface-soft) 90px, transparent 100%);}} /* 모바일은 썸네일이 작아 덮개를 줄여야 3번째 줄이 절반쯤 보인다 */
#v2Subscribe .n08-content.is-class-mode .sub-container > :not(.n-section-head):not(.n08-class-pane) {display:none !important;}
#v2Subscribe .v2-mobile-break {display:none;}
body.v2-subscribe-class .n-bottom-ticker {display:none !important;}
body.v2-subscribe-class .n06-compare {display:none !important;} /* 월 1만원대 비교 섹션은 구독 탭에서만(2026-09-29 사용자 요청) */
@media (max-width:600px) {#v2Subscribe .v2-class-contents {padding:0;} #v2Subscribe .v2-class-content {padding:18px 16px;} #v2Subscribe .v2-class-content-grid {grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 12px;} #v2Subscribe .v2-pass-tabs {margin-bottom:32px;} #v2Subscribe .v2-pass-tab {min-height:58px;font-size:15px;} #v2Subscribe .v2-class-carousel {padding:0 0 56px;} #v2Subscribe .v2-class-list {grid-auto-columns:90%;column-gap:14px;} #v2Subscribe .v2-class-nav {top:auto;bottom:0;transform:none;} #v2Subscribe .v2-class-prev {left:calc(50% - 46px);} #v2Subscribe .v2-class-next {right:calc(50% - 46px);} #v2Subscribe .v2-class-card {padding:22px;} #v2Subscribe .v2-mobile-break {display:inline;}}

#v2Subscribe .v2-nclex-standalone {max-width:1180px;margin:64px auto 32px;padding:0 48px;scroll-margin-top:32px;}
#v2Subscribe .v2-nclex-card-wrap {width:100%;}
/* NCLEX관 탭(2026-09-29) — 클래스권 탭에선 NCLEX 블록을 빼고, NCLEX관 탭에선 NCLEX 블록만 보인다 */
body.v2-subscribe-class:not(.v2-subscribe-nclex) #v2Subscribe #v2-nclex-class {display:none;}
body.v2-subscribe-nclex #v2Subscribe #v2-class-panel > :not(#v2-nclex-class) {display:none !important;}
body.v2-subscribe-nclex #v2Subscribe .v2-nclex-standalone {margin-top:0;}
#v2Subscribe .v2-nclex-standalone .v2-class-card {display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,1fr);grid-template-rows:auto;gap:0 48px;grid-row:auto;padding:0;border:0;border-radius:0;background:transparent;isolation:isolate;}
#v2Subscribe .v2-nclex-standalone .v2-class-intro {grid-column:1;grid-row:1;margin-top:-10px;padding:0 0 24px;} /* 본문 첫 줄 글자 윗선을 오른쪽 가격 박스 테두리 윗선에 맞춘다 — 본문 위 여백 4px·줄간격 포함, 헤드리스 픽셀 측정값(2026-09-29) */
#v2Subscribe .v2-nclex-standalone .v2-class-intro > h3, #v2Subscribe .v2-nclex-standalone .v2-class-intro > .v2-class-tagline {display:none;} /* 왼쪽 「NCLEX」 제목·소개는 오른쪽 가격 박스와 겹쳐 PC에서도 뺀다 — 모바일은 원래 숨김(2026-09-29 사용자 요청) */
#v2Subscribe .v2-nclex-standalone .v2-class-badges {position:absolute;top:0;left:20px;right:20px;margin:0;padding:0;transform:translateY(-50%);z-index:1;}
#v2Subscribe .v2-nclex-standalone .v2-class-purchase {display:flex;flex-direction:column;grid-column:2;grid-row:2;border-top:0;margin:24px 0 0;padding:0 32px 32px;z-index:1;}
#v2Subscribe .v2-nclex-standalone .v2-class-intro h3 {font-size:28px;line-height:1.4;}
#v2Subscribe .v2-nclex-standalone .v2-class-price {font-size:38px;}
#v2Subscribe .v2-nclex-standalone .v2-class-link {margin-top:18px;}
#v2Subscribe .v2-nclex-description {margin:4px 0 18px;color:var(--text-main);font-size:15px;line-height:1.7;word-break:keep-all;}
/* 카드 위·설명 아래 쌓기는 태블릿(1024px 이하)부터 — 768px에서 2단이 좁아 표가 무너졌다(2026-09-29 사용자 요청) */
@media (max-width:1024px) {#v2Subscribe .v2-nclex-standalone .v2-class-card {grid-template-columns:minmax(0,1fr);gap:0;padding:0;} #v2Subscribe .v2-nclex-standalone .v2-class-intro {grid-column:1;grid-row:1;padding:0 0 28px;} #v2Subscribe .v2-nclex-standalone .v2-class-badges {grid-column:1;grid-row:2;margin:0;} #v2Subscribe .v2-nclex-standalone .v2-class-purchase {grid-column:1;grid-row:3;} #v2Subscribe .v2-nclex-standalone .v2-class-intro h3 {font-size:24px;}}

@media (max-width:600px) {#v2Subscribe .v2-nclex-standalone {padding:0;}}
#v2Subscribe .v2-nclex-price-box {position:relative;grid-column:2;grid-row:1;align-self:start;border:1px solid var(--line);border-radius:14px;background:var(--surface);}
/* NCLEX 결제 카드 상단: 일반 클래스권 카드와 같은 제목·부제·설명 블록 (2026-09-17) */
#v2Subscribe .v2-nclex-price-head {padding:32px 32px 0;}
#v2Subscribe .v2-nclex-price-name {margin:0 0 18px;font-size:23px;line-height:1.3;font-weight:700;letter-spacing:-.6px;color:var(--brand-dark);}
#v2Subscribe .v2-nclex-feature-box {margin-top:4px;padding:16px 18px;border-radius:10px;background:color-mix(in srgb,var(--surface-soft) 55%,var(--surface));}
#v2Subscribe .v2-nclex-feature-box h4 {margin:0 0 12px;font-size:14px;font-weight:700;color:var(--brand-dark);}
/* 핵심 기능 탭: 데스크톱 마우스 드래그 스크롤 (v2/js/subscribe-tabs.js). 터치 기기는 기본 스크롤이라 커서 규칙만 마우스 환경에 준다. (2026-09-17) */
@media (hover:hover) and (pointer:fine) {#v2Subscribe .n07b-tabs {cursor:grab;user-select:none;} #v2Subscribe .n07b-tabs .n07b-tab {cursor:inherit;}}
#v2Subscribe .n07b-tabs.is-dragging {cursor:grabbing;scroll-behavior:auto;}
#v2Subscribe .v2-nclex-steps {display:grid;grid-template-columns:repeat(4,minmax(0,1fr));column-gap:28px;row-gap:18px;}
#v2Subscribe .v2-nclex-step {position:relative;min-width:0;}
#v2Subscribe .v2-nclex-step + .v2-nclex-step::before {content:"";position:absolute;top:0;bottom:0;left:-14px;border-left:1px solid var(--line);}
#v2Subscribe .v2-nclex-step-label {display:block;color:var(--brand);font-size:12px;letter-spacing:.4px;}
#v2Subscribe .v2-nclex-step-title {display:block;margin:4px 0 12px;font-size:13px;font-weight:600;color:var(--brand-dark);}
#v2Subscribe .v2-nclex-preparing {margin:14px 0 0;padding-top:12px;border-top:1px solid var(--line);font-size:12px;color:var(--text-main);}
/* 모바일: 소개 블록을 풀어 가격 박스 → 설명 → 문항 유형 박스 순으로 두고, 가격 박스와 겹치는 소개 제목·부제는 숨긴다. (2026-09-28) */
@media (max-width:1024px) {#v2Subscribe .v2-nclex-standalone .v2-class-intro {display:contents;} #v2Subscribe .v2-nclex-standalone .v2-class-intro > h3, #v2Subscribe .v2-nclex-standalone .v2-class-intro > .v2-class-tagline {display:none;}#v2Subscribe .v2-nclex-price-box {grid-column:1;grid-row:auto;margin:14px 0 20px;} #v2Subscribe .v2-nclex-description {order:1;text-align:center;}#v2Subscribe .v2-nclex-feature-box {order:2;}}
@media (max-width:740px) {#v2Subscribe .v2-nclex-steps {grid-template-columns:repeat(2,minmax(0,1fr));} #v2Subscribe .v2-nclex-step:nth-child(odd)::before {display:none;}}
#v2Subscribe .v2-nclex-type-list {display:flex;flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;}
#v2Subscribe .v2-nclex-type-list li {font-size:12px;line-height:1.5;color:var(--text-main);word-break:keep-all;}

#v2Subscribe .v2-nclex-continuation {display:flex;flex-direction:column;align-items:center;gap:5px;margin:14px 0 0;}
#v2Subscribe .v2-nclex-continuation span {display:block;width:3px;height:3px;border-radius:50%;background:var(--text-muted);}

#v2Subscribe .v2-nclex-description strong {font-weight:700;}
#v2Subscribe .v2-nclex-description > strong:first-child {color:var(--brand);} /* 첫 줄 헤드라인 — 가을 패스 주조색(2026-09-29 사용자 요청) */
#v2Subscribe .v2-nclex-description mark,#v2Subscribe .v2-nclex-preparing mark {padding:0 1px;background:linear-gradient(transparent 45%,color-mix(in srgb,var(--brand) 23%,var(--surface)) 45%);color:inherit;font-weight:700;box-decoration-break:clone;-webkit-box-decoration-break:clone;}

#v2Subscribe .v2-nclex-title {display:inline-block;background:linear-gradient(100deg,var(--n09-chip,var(--brand)) 0%,var(--n09-hot-b,var(--brand)) 50%,var(--n09-hot-a,var(--brand)) 100%);background-clip:text;-webkit-background-clip:text;color:transparent;-webkit-text-fill-color:transparent;}

#v2Subscribe .v2-nclex-price-head .v2-class-description {min-height:0;}

#v2Subscribe .v2-class-period .v2-class-scope {display:inline-block;max-width:100%;white-space:normal;overflow-wrap:anywhere;}

#v2Subscribe .v2-class-preview-note {display:block;margin:2px 0 6px;color:var(--brand);font-size:11px;line-height:1.5;font-weight:600;}

#v2Subscribe #v2-class-app-dialog {position:fixed;inset:0;margin:auto;box-sizing:border-box;width:min(420px,calc(100% - 32px));max-height:90vh;overflow:auto;border:0;border-radius:20px;padding:32px;text-align:center;color:var(--text-primary);}
#v2Subscribe #v2-class-app-dialog::backdrop {background:rgba(0,0,0,.5);}
#v2Subscribe #v2-class-app-dialog .v2-class-app-close {position:absolute;top:8px;right:12px;border:0;background:transparent;font-size:28px;cursor:pointer;}
#v2Subscribe #v2-class-app-dialog p {margin:12px 0;overflow-wrap:anywhere;}
#v2Subscribe #v2-class-app-dialog [data-class-app-price] {font-size:26px;font-weight:800;}
#v2Subscribe #v2-class-app-dialog [data-class-app-qr] {max-width:100%;height:auto;}
/* 클래스권 쿠폰 상단 알약 — class101 top-ticker 방식(떠 있는 반투명 알약 + 1/100초 카운트다운). _subscribe_classes.inc.php 가 #v2Subscribe 맨 앞으로 옮긴다 */
#v2Subscribe .v2-coupon-ticker {position:fixed;top:12px;left:50%;z-index:9999;transform:translateX(-50%);display:flex;align-items:center;justify-content:center;gap:10px;width:340px;max-width:calc(100vw - 24px);padding:10px 18px;box-sizing:border-box;border:0;border-radius:100px;background:rgba(255,255,255,.92);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:background .3s ease;color:#1A1A1A;font-family:inherit;white-space:nowrap;}
#v2Subscribe .v2-coupon-ticker-label {flex:1 1 auto;min-width:0;text-align:center;overflow:hidden;text-overflow:ellipsis;font-size:clamp(12px,2vw,13px);font-weight:500;letter-spacing:-.2px;animation:v2FomoFlashDark 1.2s ease-in-out infinite;} /* 문구는 항상 반짝인다 — class101 원본 색 */
#v2Subscribe .v2-coupon-ticker.is-scrolled {background:rgba(26,26,26,.7);color:#F6FF00;} /* class101 원본 — 스크롤 20px 넘으면 검정 반투명 + 형광 노랑 */
#v2Subscribe .v2-coupon-ticker-div {flex:none;color:rgba(26,26,26,.25);font-size:12px;}
#v2Subscribe .v2-coupon-ticker.is-scrolled .v2-coupon-ticker-div {color:rgba(246,255,0,.25);}
#v2Subscribe .v2-coupon-ticker-time {flex:none;display:flex;align-items:baseline;gap:2px;font-variant-numeric:tabular-nums;line-height:1;}
#v2Subscribe .v2-coupon-ticker-time b {display:inline-block;width:2ch;text-align:center;font-size:clamp(15px,2.5vw,18px);font-weight:700;} /* 숫자 칸 폭 고정 — 1·0처럼 폭이 다른 숫자가 바뀌어도 알약 폭이 흔들리지 않게(글꼴 tabular-nums 에 기대지 않는다) */
#v2Subscribe .v2-coupon-ticker-day b {text-align:right;}
#v2Subscribe .v2-coupon-ticker-time i {padding:0 1px;font-size:15px;font-style:normal;font-weight:700;}
#v2Subscribe .v2-coupon-ticker-time .v2-coupon-ticker-dot {color:rgba(26,26,26,.4);}
#v2Subscribe .v2-coupon-ticker.is-scrolled .v2-coupon-ticker-dot {color:rgba(246,255,0,.5);}
#v2Subscribe .v2-coupon-ticker.is-scrolled .v2-coupon-ticker-label {animation-name:v2FomoFlash;}
@keyframes v2FomoFlash {0%,100% {color:#F6FF00;} 50% {color:#FF3B30;}}
@keyframes v2FomoFlashDark {0%,100% {color:#1A1A1A;} 50% {color:#CC0000;}}
/* 하단 CTA 바 — 상단 알약과 같은 둥근 모서리, 카운트다운은 상단 알약이 맡으므로 CTA 위 타이머 말풍선은 숨긴다(공통 subscribe.css 는 그대로) */
#v2Subscribe ~ .n-bottom-ticker .n-bottom-ticker-btn {border-radius:100px;}
#v2Subscribe ~ .n-bottom-ticker .n-bottom-timer:not(.v2-sub-deadline) {display:none;} /* 쿠폰이 적용된 구독 탭만 같은 자리에 '쿠폰 마감 임박' 말풍선(.v2-sub-deadline) */
#v2Subscribe ~ .n-bottom-ticker .v2-sub-deadline b {color:var(--color-error-hover,#DC2626);} /* 시간 숫자 = 클래스권 버튼 아래 .v2-buy-deadline 과 같은 빨강 */
#v2Subscribe .v2-coupon-ticker-day {margin-right:6px;font-size:13px;font-weight:700;}
#v2Subscribe .v2-coupon-ticker-day[hidden] {display:none;}
@media (max-width:600px) {#v2Subscribe .v2-coupon-ticker {width:300px;gap:8px;padding:9px 14px;}} /* 알약 너비 고정(PC 340·모바일 300 — 가장 긴 문구가 잘리지 않는 최소값) — 탭·쿠폰에 따라 문구가 바뀌어도 너비가 흔들리지 않게, 문구는 가운데 */
