:root { --fg:#16191f; --muted:#4a5260; --bg:#f5f7fb; --card:#fff; --pri:#3F5FE0; --pri-d:#2f49b8; --pri2:#eef2ff; --line:#e3e7ef; --danger:#c62828; --ok:#1b7a3a; --warn:#a15c00; }
* { box-sizing: border-box; }
html { font-size: 19px; }
body { margin:0; font-family: "Pretendard Variable","Pretendard","Noto Sans KR","Gothic A1","Apple SD Gothic Neo",system-ui,sans-serif; background:var(--bg); color:var(--fg); line-height:1.5; }
.top { display:flex; justify-content:space-between; align-items:center; gap:12px; padding:12px max(18px, calc((100% - 1180px)/2)); background:#fff; color:var(--fg); border-bottom:1px solid var(--line); position:sticky; top:0; z-index:20; }
.brand { font-weight:800; font-size:1.15rem; color:var(--pri); text-decoration:none; display:flex; align-items:center; gap:6px; white-space:nowrap; }
.badge { background:var(--pri2); color:var(--pri); border-radius:999px; padding:4px 12px; font-size:.8rem; font-weight:700; }
.badge.demo { color:var(--warn); }
.banner { background:#fff6e0; color:#5a4100; padding:8px 18px; font-size:.85rem; border-bottom:1px solid #f0dca8; }
.screen { max-width:720px; margin:0 auto; padding:14px; }
.card { background:var(--card); border-radius:14px; padding:16px 18px; margin:12px 0; box-shadow:0 1px 3px rgba(0,0,0,.08); }
h2 { margin:0 0 6px; font-size:1.15rem; }
.hint { color:var(--muted); font-size:.85rem; margin:4px 0 10px; }
.center { text-align:center; }
label { display:block; font-weight:700; margin-top:10px; }
input, select { width:100%; font-size:1.05rem; padding:12px; border:2px solid #c9d1da; border-radius:10px; margin-top:4px; background:#fff; }
input:focus, select:focus { outline:3px solid #9cc3ee; border-color:var(--pri); }
.err { color:var(--danger); font-size:.85rem; min-height:1em; }
.ok { color:var(--ok); font-weight:700; margin-top:8px; }
.btn { font-size:1rem; padding:10px 16px; border-radius:12px; border:2px solid var(--pri); background:#fff; color:var(--pri); font-weight:700; cursor:pointer; }
.btn.big { width:100%; padding:16px; font-size:1.1rem; margin-top:14px; }
.btn.huge { width:100%; padding:22px; font-size:1.35rem; margin-top:14px; }
.btn.primary { background:var(--pri); color:#fff; }
.btn.secondary { background:var(--pri2); }
.btn.danger { background:var(--danger); border-color:var(--danger); color:#fff; }
.btn:disabled { opacity:.45; cursor:not-allowed; }
.programs { display:grid; gap:10px; }
.prog { border:2px solid #d5dce4; border-radius:12px; padding:12px 14px; cursor:pointer; background:#fff; text-align:left; font:inherit; color:inherit; }
.prog[aria-checked="true"] { border-color:var(--pri); background:var(--pri2); box-shadow:0 0 0 2px var(--pri) inset; }
.prog .inst { font-weight:800; }
.prog .meta { font-size:.8rem; color:var(--muted); }
.tag { display:inline-block; font-size:.72rem; padding:1px 8px; border-radius:999px; margin-right:4px; font-weight:700; }
.tag.sample { background:#fff0d6; color:var(--warn); }
.tag.ok { background:#e2f4e8; color:var(--ok); margin-top:0; }
.tag.target { background:#eef; color:#334; }
.prog a { font-size:.78rem; color:var(--pri); word-break:break-all; }
.consent { font-weight:600; display:flex; gap:10px; align-items:flex-start; }
.consent input { width:28px; height:28px; margin:0; flex:none; }
.call-head { display:flex; justify-content:space-between; align-items:center; }
.call-target { font-size:1.2rem; font-weight:800; }
.muted { color:var(--muted); font-size:.85rem; }
.timer { white-space:nowrap; font-size:2rem; font-weight:800; font-variant-numeric:tabular-nums; }
.timer small { font-size:.9rem; color:var(--muted); margin-left:4px; }
.status { text-align:center; font-weight:700; padding:8px; color:var(--pri); }
.status.error { color:var(--danger); }
.transcript { list-style:none; padding:0; margin:0; display:flex; flex-direction:column; gap:8px; max-height:46vh; overflow:auto; }
.transcript.small { max-height:none; font-size:.9rem; }
.transcript li { padding:10px 12px; border-radius:12px; max-width:88%; }
.transcript li .who { display:block; font-size:.72rem; font-weight:800; opacity:.75; }
.transcript li.ai { background:var(--pri2); align-self:flex-start; }
.transcript li.staff { background:#eee; align-self:flex-end; }
.transcript li.sys { background:none; color:var(--muted); font-size:.8rem; align-self:center; }
.transcript li.partial { opacity:.6; }
.row { display:flex; gap:8px; margin-top:10px; }
.row input { margin:0; }
.chips { display:flex; flex-wrap:wrap; gap:6px; margin-top:10px; }
.chips button { font:inherit; font-size:.8rem; border:1px solid #c9d1da; background:#fff; border-radius:999px; padding:6px 10px; cursor:pointer; }
.disclaimer { background:#fff0d6; color:#6b3d00; font-weight:800; padding:10px 12px; border-radius:10px; margin-bottom:10px; }
.summary dl { margin:0; }
.summary dt { font-weight:800; margin-top:10px; color:var(--muted); font-size:.85rem; }
.summary dd { margin:2px 0 0; font-size:1.05rem; }
.st { font-size:1.4rem; font-weight:900; }
.st.완료 { color:var(--ok); } .st.대기 { color:var(--warn); } .st.실패 { color:var(--danger); } .st.확인필요 { color:#6a1b9a; }
.summary ul { margin:4px 0; padding-left:1.2em; }
.quote { font-size:.8rem; color:var(--muted); }
.foot { text-align:center; color:var(--muted); font-size:.75rem; padding:20px; }
/* v2 */
.screen.wide { max-width:1100px; }
.grid2 { display:grid; grid-template-columns:1fr 1fr; gap:4px 14px; }
@media (max-width:700px){ .grid2, .cols { grid-template-columns:1fr !important; } }
textarea { width:100%; font:inherit; font-size:1.1rem; padding:12px; border:2px solid #c9d1da; border-radius:10px; margin-top:4px; resize:vertical; }
.sr { font-weight:400; }
.row-between { display:flex; justify-content:space-between; align-items:center; }
.link { background:none; border:none; color:var(--pri); font:inherit; font-weight:700; cursor:pointer; }
.profile-summary { font-size:1.05rem; margin:4px 0; }
.pills { display:flex; flex-wrap:wrap; gap:6px; margin-top:6px; }
.pills span { background:var(--pri2); border-radius:999px; padding:4px 10px; font-size:.85rem; font-weight:600; }
.pills button { border:none; background:none; cursor:pointer; color:var(--muted); }
.check { display:flex; gap:10px; align-items:center; font-weight:600; margin-top:12px; }
.check input { width:24px; height:24px; margin:0; flex:none; }
.checks { padding-top:14px; }
.cols { display:grid; grid-template-columns:2fr 3fr; gap:14px; }
.cols .card { margin:12px 0 0; }
.timeline { list-style:none; padding:0; margin:8px 0; }
.timeline li { position:relative; padding:6px 0 10px 30px; border-left:3px solid #d5dce4; margin-left:10px; }
.timeline li::before { content:''; position:absolute; left:-11px; top:8px; width:18px; height:18px; border-radius:50%; background:#d5dce4; border:2px solid #fff; }
.timeline li.active::before { background:var(--pri); animation:pulse 1s infinite alternate; }
.timeline li.done::before { background:var(--ok); } .timeline li.fail::before { background:var(--danger); }
.timeline li.warn::before, .timeline li.wait::before { background:var(--warn); } .timeline li.skip::before { background:#999; }
.timeline .lab { font-weight:800; } .timeline .det { font-size:.8rem; color:var(--muted); white-space:pre-line; }
@keyframes pulse { to { opacity:.35; } }
.cands ol { padding-left:1.2em; font-size:.85rem; } .cands li { margin:4px 0; }
.role { background:#fff8e6; border:2px dashed #e0b24a; border-radius:12px; padding:10px 12px; margin:10px 0; }
.role-hint { margin:0 0 4px; font-weight:700; color:#6b4a00; }
.role .row { flex-wrap:wrap; }
.guard { font-size:.78rem; align-self:center; padding:4px 10px; border-radius:999px; }
.guard.ok { background:#e2f4e8; color:var(--ok); } .guard.reject { background:#fde7e7; color:var(--danger); } .guard.ask { background:#eef; color:#334; }
.report .st { margin:0 0 6px; }
.report table { width:100%; border-collapse:collapse; font-size:.9rem; margin-top:6px; }
.report td, .report th { border-bottom:1px solid #e3e7ec; padding:6px 4px; text-align:left; vertical-align:top; }
.listening { background:var(--danger) !important; border-color:var(--danger) !important; }
/* 데이터 출처 */
.src { display: inline-block; font-size: .78rem; padding: 1px 6px; border-radius: 6px; margin-top: 2px; }
.src.off { background: #e6f4ea; color: #1e6b34; }
.src.fb { background: #fff4e0; color: #8a5a00; }
.sources summary { font-weight: 700; cursor: pointer; }
.sources ul { padding-left: 1rem; margin: .4rem 0; }
.sources li { margin: .4rem 0; font-size: .9rem; }
.picked { background:var(--pri2); border-radius:10px; padding:8px 12px; font-size:.9rem; }
.picked .muted, .muted { color:var(--muted); }
.sources a { color:var(--pri); }
/* ── 공통 상단 메뉴 ── */
.topnav { display:flex; gap:4px; align-items:center; flex-wrap:wrap; justify-content:flex-end; }
.topnav a { color:var(--muted); font-weight:700; font-size:.82rem; text-decoration:none; padding:8px 12px; border-radius:999px; }
.topnav a:hover { background:var(--pri2); color:var(--pri); }
.topnav a[aria-current="page"] { background:var(--pri); color:#fff; }
.btn.primary:hover { background:var(--pri-d); border-color:var(--pri-d); }

/* ── 교육 프로그램 목록(/programs) : 단일 파랑 강조 + 상태색만 ── */
.pg { --ok:#14804a; --soon:#d9480f; --always:#56708f; --closed:#8a929b; font-size:16px; }
.pg .wrap { max-width:1180px; margin:0 auto; padding:0 18px; }
.sr { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); }
.hero { background:linear-gradient(180deg, var(--pri2), var(--bg)); padding:28px 0 18px; }
.hero h1 { font-size:1.6rem; margin:0 0 4px; letter-spacing:-.02em; }
.hero p { margin:0 0 16px; color:var(--muted); font-size:1rem; }
.searchbar { display:flex; align-items:center; gap:8px; background:#fff; border:2px solid var(--pri); border-radius:999px; padding:6px 6px 6px 20px; max-width:760px; box-shadow:0 6px 20px rgba(63,95,224,.12); }
.searchbar input { border:0; outline:0; margin:0; padding:10px 0; font-size:1.08rem; flex:1; min-width:0; background:transparent; }
.searchbar input:focus { outline:0; }
.searchbar .go { border:0; background:var(--pri); color:#fff; font:inherit; font-weight:800; border-radius:999px; padding:11px 22px; cursor:pointer; }
.qchips { display:flex; gap:8px; flex-wrap:wrap; margin-top:14px; }
.qchip { font:inherit; font-size:.95rem; font-weight:700; border:1.5px solid var(--line); background:#fff; color:var(--fg); border-radius:999px; padding:8px 14px; cursor:pointer; display:inline-flex; gap:6px; align-items:center; }
.qchip small { color:var(--muted); font-weight:600; font-size:.85rem; }
.qchip[aria-pressed="true"] { border-color:var(--pri); background:var(--pri); color:#fff; }
.qchip[aria-pressed="true"] small { color:#dfe6ff; }

/* 추천 줄 */
.shelf { margin:26px 0 6px; }
.shelf-h { display:flex; justify-content:space-between; align-items:center; margin-bottom:10px; }
.shelf-h h2 { font-size:1.2rem; margin:0; }
.shelf-h h2 small { font-size:.9rem; color:var(--muted); font-weight:600; margin-left:6px; }
.shelf-nav { display:flex; gap:6px; }
.shelf-nav button, .shelf-h .all { font:inherit; font-size:.9rem; border:1.5px solid var(--line); background:#fff; border-radius:999px; min-width:38px; height:38px; padding:0 12px; cursor:pointer; color:var(--fg); font-weight:700; }
.rail { display:grid; grid-auto-flow:column; grid-auto-columns:minmax(250px, 23%); gap:14px; overflow-x:auto; scroll-snap-type:x mandatory; padding:2px 2px 10px; scrollbar-width:thin; }
.rail > * { scroll-snap-align:start; }
.mini { background:#fff; border-radius:16px; border:1px solid var(--line); overflow:hidden; text-decoration:none; color:inherit; display:flex; flex-direction:column; transition:transform .15s, box-shadow .15s; }
.mini:hover { transform:translateY(-2px); box-shadow:0 8px 22px rgba(22,25,31,.09); }
.mini .thumb { height:108px; }
.mini .body { padding:10px 12px 12px; }
.mini h3 { font-size:.98rem; margin:6px 0 4px; line-height:1.35; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.mini .m { font-size:.875rem; color:var(--muted); margin:0; }

/* 썸네일: 분야별 그라데이션 + 아이콘 (자체 생성) */
.thumb { position:relative; display:flex; align-items:flex-end; justify-content:space-between; padding:10px 12px; color:#fff; background:var(--g, linear-gradient(135deg,#6b7fa8,#9fb0cf)); overflow:hidden; }
.thumb::after { content:""; position:absolute; right:-28px; top:-28px; width:120px; height:120px; border-radius:50%; background:rgba(255,255,255,.14); }
.thumb .ico { font-size:2.4rem; line-height:1; filter:drop-shadow(0 2px 4px rgba(0,0,0,.18)); position:relative; z-index:1; }
.thumb .fld { position:relative; z-index:1; font-weight:800; font-size:.85rem; background:rgba(255,255,255,.22); padding:3px 10px; border-radius:999px; backdrop-filter:blur(2px); }
.thumb .dday { position:absolute; left:10px; top:10px; z-index:1; background:#fff; color:var(--soon); font-weight:900; font-size:.8rem; padding:2px 9px; border-radius:999px; }
.f-디지털 { --g:linear-gradient(135deg,#3F5FE0,#6f8cff); } .f-운동 { --g:linear-gradient(135deg,#0f9d7a,#4cc9a0); }
.f-문화 { --g:linear-gradient(135deg,#d6457a,#f08a6c); } .f-인문 { --g:linear-gradient(135deg,#5a48c9,#8c7ef0); }
.f-요리 { --g:linear-gradient(135deg,#e0711f,#f5b041); } .f-체험 { --g:linear-gradient(135deg,#4f9a2f,#9ccc4f); }
.f-마음 { --g:linear-gradient(135deg,#c2477f,#ee8fb8); } .f-취업 { --g:linear-gradient(135deg,#2e5b86,#5a8cc0); }
.f-커피 { --g:linear-gradient(135deg,#7a4a2a,#b67c4f); } .f-기타 { --g:linear-gradient(135deg,#56708f,#8ea4c1); }

/* 본문: 필터 패널 + 결과 */
.layout { display:grid; grid-template-columns:270px 1fr; gap:22px; margin:26px 0 40px; align-items:start; }
.fpanel { background:#fff; border:1px solid var(--line); border-radius:16px; padding:16px; position:sticky; top:76px; max-height:calc(100vh - 92px); overflow:auto; }
.fpanel h2 { font-size:1.05rem; margin:0 0 6px; display:flex; justify-content:space-between; align-items:center; }
.fpanel h2 button { font:inherit; font-size:.85rem; border:0; background:none; color:var(--pri); font-weight:700; cursor:pointer; }
.fgroup { border-top:1px solid var(--line); padding:12px 0 4px; margin-top:8px; }
.fgroup > b { display:block; font-size:.92rem; margin-bottom:8px; }
.fgroup label { font-size:.92rem; margin-top:0; font-weight:600; }
.fgroup select, .fgroup input[type=date] { font-size:.95rem; padding:9px 10px; border:1.5px solid var(--line); border-radius:10px; }
.fchips { display:flex; flex-wrap:wrap; gap:6px; }
.chip { font:inherit; font-size:.9rem; font-weight:700; padding:6px 12px; border-radius:999px; border:1.5px solid var(--line); background:#fff; color:var(--fg); cursor:pointer; }
.chip span { font-weight:500; color:var(--muted); font-size:.82rem; }
.chip[aria-pressed="true"] { border-color:var(--pri); background:var(--pri2); color:var(--pri); }
.chip[aria-pressed="true"] span { color:var(--pri); }
.flist { list-style:none; margin:0; padding:0; }
.flist button { width:100%; display:flex; justify-content:space-between; font:inherit; font-size:.95rem; background:none; border:0; padding:7px 8px; border-radius:8px; cursor:pointer; color:var(--fg); text-align:left; }
.flist button span { color:var(--muted); font-size:.85rem; }
.flist button[aria-pressed="true"] { background:var(--pri2); color:var(--pri); font-weight:800; }
.check { display:flex !important; gap:8px; align-items:center; font-weight:600; padding:4px 0; }
.check input { width:22px; height:22px; margin:0; accent-color:var(--pri); }
.fclose, .fopen { display:none; }

.resbar { display:flex; justify-content:space-between; align-items:center; gap:10px; flex-wrap:wrap; padding:0 2px 12px; border-bottom:2px solid var(--fg); margin-bottom:14px; }
.resbar .total { font-size:1.05rem; margin:0; }
.resbar .total b { color:var(--pri); font-size:1.2rem; }
#summary { margin:2px 0 0; font-size:.9rem; color:var(--muted); }
.resbar .tools { display:flex; gap:8px; align-items:center; }
.resbar select { width:auto; margin:0; font-size:.95rem; padding:8px 10px; border:1.5px solid var(--line); border-radius:10px; }
.vtoggle { display:flex; border:1.5px solid var(--line); border-radius:10px; overflow:hidden; }
.vtoggle button { font:inherit; font-size:.9rem; font-weight:700; border:0; background:#fff; padding:8px 12px; cursor:pointer; color:var(--muted); }
.vtoggle button[aria-pressed="true"] { background:var(--pri); color:#fff; }
.active-filters { display:flex; gap:6px; flex-wrap:wrap; margin:-4px 0 12px; }
.active-filters button { font:inherit; font-size:.85rem; border:0; background:var(--pri2); color:var(--pri); border-radius:999px; padding:5px 10px; cursor:pointer; font-weight:700; }

/* 카드 */
.plist { display:grid; grid-template-columns:repeat(auto-fill, minmax(300px, 1fr)); gap:16px; }
.pcard { background:#fff; border-radius:18px; border:1px solid var(--line); overflow:hidden; display:flex; flex-direction:column; transition:box-shadow .15s; }
.pcard:hover { box-shadow:0 10px 26px rgba(22,25,31,.08); }
.pcard .thumb { height:96px; }
.pcard .pbody { padding:14px 16px 16px; display:flex; flex-direction:column; gap:8px; flex:1; }
.pbadges { display:flex; flex-wrap:wrap; gap:6px; align-items:center; }
.st, .src, .loc { font-size:.82rem; font-weight:800; padding:3px 10px; border-radius:999px; line-height:1.4; }
.st-접수중 { background:#e3f5ea; color:var(--ok); } .st-마감임박 { background:#fff0e6; color:var(--soon); }
.st-예정 { background:var(--pri2); color:var(--pri); } .st-상시 { background:#e9eef4; color:var(--always); } .st-마감 { background:#eef0f2; color:#6b737c; }
.src.portal { background:#fff; color:var(--pri); border:1.5px solid #b8c6f6; } .src.outside { background:#fff; color:#7a4b00; border:1.5px solid #f0c57a; }
.loc { background:#fff; color:var(--muted); border:1.5px solid var(--line); font-weight:700; }
.phead { display:flex; gap:12px; align-items:flex-start; justify-content:space-between; }
.pcard h3 { font-size:1.1rem; margin:0; line-height:1.4; letter-spacing:-.01em; word-break:keep-all; overflow-wrap:anywhere; }
.pcard .inst { font-size:.92rem; color:var(--muted); margin:2px 0 0; font-weight:600; }
.gauge { --p:0; flex:none; width:64px; height:64px; border-radius:50%; background:conic-gradient(var(--gc, var(--ok)) calc(var(--p)*1%), #e8ecf2 0); display:grid; place-items:center; }
.gauge > div { width:52px; height:52px; border-radius:50%; background:#fff; display:flex; flex-direction:column; align-items:center; justify-content:center; line-height:1.1; }
.gauge b { font-size:.95rem; } .gauge small { font-size:.75rem; color:var(--muted); font-weight:700; }
.gauge.low { --gc:var(--soon); } .gauge.none { --p:0; } .gauge.none b { font-size:.75rem; color:var(--muted); }
.pmeta { display:grid; grid-template-columns:4.2em 1fr; gap:4px 10px; margin:2px 0 0; font-size:.94rem; }
.pmeta dt { color:var(--muted); font-weight:700; } .pmeta dd { margin:0; word-break:keep-all; overflow-wrap:anywhere; color:var(--fg); }
.pmeta a { color:var(--pri); font-weight:700; }
.pactions { display:flex; flex-wrap:wrap; gap:8px; margin-top:auto; padding-top:6px; }
.pactions .btn { font-size:.95rem; padding:11px 14px; text-decoration:none; border-radius:12px; text-align:center; }
.pactions .btn.primary { flex:1 1 auto; }
.pactions .btn.ghost { flex:none; }
#all { scroll-margin-top:80px; }
.short { display:none; }
.pactions .btn.ghost { border-color:var(--line); color:var(--fg); }
.psrc { font-size:.8rem; color:var(--muted); margin:0; }
/* 목록 보기 */
.plist.as-list { grid-template-columns:1fr; gap:10px; }
.plist.as-list .pcard { flex-direction:row; }
.plist.as-list .thumb { width:120px; height:auto; flex:none; flex-direction:column; align-items:flex-start; justify-content:flex-end; gap:6px; }
.plist.as-list .pmeta { grid-template-columns:4.2em 1fr 4.2em 1fr; }
.plist.as-list .pactions { flex-wrap:nowrap; }
.pager { display:flex; justify-content:center; gap:6px; margin:22px 0 4px; flex-wrap:wrap; }
.pager button { font:inherit; font-size:.95rem; font-weight:700; min-width:42px; height:42px; border-radius:12px; border:1.5px solid var(--line); background:#fff; cursor:pointer; color:var(--fg); }
.pager button[aria-current="page"] { background:var(--pri); border-color:var(--pri); color:#fff; }
.pager button:disabled { opacity:.4; cursor:default; }
.empty { background:#fff; border:1px dashed var(--line); border-radius:16px; padding:30px; text-align:center; color:var(--muted); }
.pg .sources { font-size:.85rem; color:var(--muted); margin:8px 0 30px; }

@media (max-width:900px) {
  .layout { grid-template-columns:1fr; }
  .fpanel { display:none; position:fixed; inset:auto 0 0 0; top:auto; max-height:82vh; border-radius:20px 20px 0 0; z-index:40; box-shadow:0 -10px 40px rgba(0,0,0,.2); padding-bottom:80px; }
  .pg.sheet-open .fpanel { display:block; }
  .pg.sheet-open::before { content:""; position:fixed; inset:0; background:rgba(15,20,35,.45); z-index:30; }
  .fopen { display:inline-flex; gap:6px; align-items:center; font:inherit; font-size:.95rem; font-weight:800; border:1.5px solid var(--pri); color:var(--pri); background:#fff; border-radius:10px; padding:8px 12px; cursor:pointer; }
  .fclose { display:block; position:fixed; left:16px; right:16px; bottom:16px; z-index:41; }
  .rail { grid-auto-columns:minmax(230px, 70%); }
}
@media (max-width:600px) {
  .top { padding:10px 14px; }
  .topnav { flex-wrap:nowrap; gap:2px; } .topnav a { padding:7px 9px; font-size:.75rem; white-space:nowrap; }
  .brand { font-size:.95rem; } .long { display:none; } .short { display:inline; }
  .topnav .badge { display:none; }
  .hero h1 { font-size:1.35rem; }
  .searchbar { padding-left:14px; } .searchbar .go { padding:10px 14px; }
  .plist, .plist.as-list { grid-template-columns:1fr; }
  .plist.as-list .pcard { flex-direction:column; } .plist.as-list .thumb { width:auto; height:80px; flex-direction:row; }
  .plist.as-list .pmeta { grid-template-columns:4.2em 1fr; }
  .vtoggle { display:none; }
}

/* 실제 강좌 사진 */
.thumb.photo { background:#eef1f6; padding:0; }
.thumb.photo::after { display:none; }
.thumb.photo img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:50% 50%; image-rendering:auto; }
/* 작은 원본: 확대하지 않고 원래 크기 이하로만, 같은 사진의 흐린 배경 위 가운데 */
.thumb.photo.fit-contain::before { content:""; position:absolute; inset:-16px; background:var(--bg) center/cover no-repeat, #e9edf3; filter:blur(14px) saturate(1.1) brightness(.92); transform:scale(1.08); }
.thumb.photo.fit-contain img { inset:0; margin:auto; width:auto; height:auto; max-width:100%; max-height:100%; object-fit:contain; box-shadow:0 1px 6px rgba(0,0,0,.18); }
.thumb.photo.inst img { object-fit:contain; background:#fff; }
.thumb.photo .ico, .thumb.photo .fld { display:none; }
.thumb .ptag, .thumb .gtag { position:absolute; right:8px; bottom:8px; z-index:1; font-size:.68rem; font-weight:700; padding:2px 7px; border-radius:999px; }
.thumb .ptag { background:rgba(17,24,39,.62); color:#fff; }
.thumb .gtag { right:auto; left:auto; top:8px; right:8px; bottom:auto; background:rgba(255,255,255,.28); color:#fff; }
.pcard .thumb.photo { height:auto; aspect-ratio:16/10; }
.mini .thumb.photo { height:auto; aspect-ratio:16/10; }
.plist.as-list .thumb.photo { width:150px; min-height:110px; }
@media (max-width:600px) { .plist.as-list .thumb.photo { width:auto; height:150px; } }
/* ── 브라우저 신청 에이전트 (/apply) ── */
.ba { padding-bottom:48px; } .ba-back { margin:16px 0 4px; } .ba-back a { color:var(--muted); text-decoration:none; }
.ba-head h1 { font-size:1.45rem; margin:6px 0 2px; } .ba-head .m { color:var(--muted); margin:0 0 10px; }
.ba-channel { background:#fff; border:1px solid #e3e7f0; border-radius:14px; padding:14px 18px; margin:8px 0 12px; }
.ba-channel .m { color:var(--muted); margin:4px 0; }
.ba-pill { display:inline-block; font-weight:800; padding:5px 12px; border-radius:999px; margin:0; }
.ba-pill.web { background:#e8eeff; color:#2747c7; } .ba-pill.call { background:#e9f7ef; color:#14804a; }
.ba-note { font-size:.9rem; color:#5b4a00; background:#fff8e1; border-radius:10px; padding:8px 12px; margin:8px 0 0; }
.ba-actions { display:flex; gap:10px; flex-wrap:wrap; margin:6px 0 14px; }
.ba-actions[hidden] { display:none; }
.ba-grid { display:grid; grid-template-columns:minmax(0,1.6fr) minmax(280px,1fr); gap:16px; align-items:start; }
@media (max-width:860px) { .ba-grid { grid-template-columns:1fr; } }
.ba-view { margin:0; background:#fff; border:1px solid #e3e7f0; border-radius:14px; padding:10px; }
.ba-screen { aspect-ratio:1024/704; background:#0f172a; border-radius:10px; overflow:hidden; display:flex; align-items:center; justify-content:center; }
.ba-screen img { width:100%; height:100%; object-fit:contain; } .ba-screen p { color:#94a3b8; }
.ba-view figcaption { font-weight:700; margin:8px 4px 4px; }
.ba-strip { display:flex; gap:6px; overflow-x:auto; } .ba-strip img { height:56px; border-radius:6px; border:1px solid #d6dbe6; cursor:pointer; }
.ba-side { display:flex; flex-direction:column; gap:12px; }
.ba-card { background:#fff; border-radius:14px; padding:14px 16px; border:2px solid #e3e7f0; } .ba-card h2 { font-size:1.15rem; margin:0 0 6px; }
.ba-card.confirm { border-color:#c92a2a; box-shadow:0 4px 18px rgba(201,42,42,.12); } .ba-card.login { border-color:#f0b429; }
.ba-card table { width:100%; border-collapse:collapse; font-size:.93rem; } .ba-card td { border-bottom:1px solid #eef0f5; padding:6px 4px; } .ba-card td:first-child { color:var(--muted); width:38%; }
.ba-cbtn { display:flex; gap:8px; margin-top:10px; flex-wrap:wrap; }
.btn.danger { background:#c92a2a; color:#fff; border-color:#c92a2a; } .btn[disabled] { opacity:.5; cursor:not-allowed; }
.ba-steps { list-style:none; margin:0; padding:10px 12px; background:#fff; border:1px solid #e3e7f0; border-radius:14px; max-height:360px; overflow:auto; font-size:.92rem; }
.ba-steps li { padding:5px 0; border-bottom:1px dashed #eef0f5; } .ba-steps li.msg { color:var(--muted); }
.ba-steps .tag { display:inline-block; min-width:62px; font-size:.75rem; font-weight:800; padding:1px 7px; border-radius:999px; background:#eef1f6; color:#334; margin-right:4px; text-align:center; }
.ba-steps .st-done .tag { background:#e3f6ea; color:#14804a; } .ba-steps .st-blocked .tag, .ba-steps .st-login_required .tag { background:#fdecec; color:#b42318; }
.ba-steps .st-awaiting_confirmation .tag, .ba-steps .st-review .tag { background:#fff1e0; color:#a14d00; }
.ba-cost { color:var(--muted); font-size:.85rem; margin:0 4px; }

.chanpick { margin:10px 0 4px; }
.chanpick .cp-q { margin:0 0 8px; font-weight:700; } .chanpick .cp-q .muted { font-weight:400; display:block; font-size:.88rem; margin-top:2px; }
.chanpick .cp-row { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.chanpick .cp { position:relative; display:flex; flex-direction:column; gap:4px; text-align:left; padding:12px 14px; border:1.5px solid var(--line); border-radius:12px; background:#fff; color:var(--fg); text-decoration:none; font:inherit; cursor:pointer; }
.chanpick .cp.rec { border-color:var(--pri); background:var(--pri2); }
.chanpick .cp.off { opacity:.55; cursor:not-allowed; }
.chanpick .cp small { color:var(--muted); font-size:.82rem; }
.chanpick .cp em { position:absolute; top:8px; right:10px; font-style:normal; font-size:.72rem; font-weight:800; color:#fff; background:var(--pri); border-radius:999px; padding:2px 8px; }
@media (max-width:600px){ .chanpick .cp-row { grid-template-columns:1fr; } }
.ba-pick { list-style:none; padding:0; margin:12px 0; display:grid; gap:8px; }
.ba-pick a { display:block; padding:10px 14px; border:1px solid var(--line); border-radius:10px; background:#fff; color:var(--fg); text-decoration:none; }
.ba-pick a:hover { border-color:var(--pri); } .ba-pick small { color:var(--muted); }
.ba-q { width:100%; box-sizing:border-box; padding:11px 14px; border:1px solid var(--line); border-radius:10px; font:inherit; margin-top:10px; }

.ba-remain{align-self:center;font-size:.9rem;color:#5b6470;background:#f1f4f8;border-radius:999px;padding:.25rem .7rem}

.ba-me{margin:.6rem 0;padding:.6rem .8rem;border:1px solid #e3e6ea;border-radius:10px;background:#fafbfc}
.ba-me summary{cursor:pointer;font-weight:600}
.ba-me label{display:inline-block;margin:.3rem .6rem .3rem 0;font-size:.95rem}
.ba-me input{padding:.35rem .5rem;border:1px solid #cfd4da;border-radius:6px;width:11rem;max-width:100%}
.ba-saved{font-size:.92rem;color:#334;margin:.4rem 0}
.ba-saved button{margin-left:.5rem}
.ba-live{display:inline-block;background:#e53935;color:#fff;border-radius:4px;padding:0 .35rem;font-size:.8rem;margin-right:.3rem}
/* ── /apply 모바일 우선 ── */
.ba-screen.mobile { aspect-ratio:390/844; max-height:72vh; margin:0 auto; }
.ba-mine { margin-top:10px; border:1px solid #dbe3f5; border-radius:12px; padding:10px 12px; background:#f6f8ff; }
.ba-mine summary { cursor:pointer; font-weight:800; min-height:44px; display:flex; align-items:center; }
.ba-check { padding-left:1.3rem; margin:6px 0; } .ba-check li { margin:6px 0; }
.ba-copy { display:flex; flex-direction:column; gap:6px; } .ba-copy .btn { text-align:left; }
.ba-sheet { position:fixed; inset:0; z-index:1000; background:#0f172a; display:flex; flex-direction:column; }
.ba-sheet[hidden] { display:none; }
.ba-sheetbar { display:flex; gap:8px; padding:8px calc(8px + env(safe-area-inset-right)) 8px calc(8px + env(safe-area-inset-left)); padding-top:calc(8px + env(safe-area-inset-top)); background:#fff; }
.ba-sheetbar .btn { min-height:44px; } .ba-sheetbar #sheetDone { margin-left:auto; }
.ba-sheet iframe { flex:1; width:100%; border:0; background:#fff; }
.ba-sheethint { margin:0; padding:6px 12px calc(6px + env(safe-area-inset-bottom)); font-size:.8rem; color:#cbd5e1; }
body.ba-sheet-open { overflow:hidden; }
@media (max-width:700px) {
  .ba .btn, .ba-saved button { min-height:44px; padding:10px 16px; font-size:1rem; }
  .ba-head h1 { font-size:1.25rem; }
  .ba-actions { position:sticky; bottom:0; z-index:20; background:rgba(255,255,255,.96); margin:6px -16px 14px; padding:10px 16px calc(10px + env(safe-area-inset-bottom)); box-shadow:0 -4px 14px rgba(15,23,42,.08); }
  .ba-actions .btn.primary { flex:1 1 100%; }
  .ba-me input { width:100%; min-height:44px; font-size:16px; box-sizing:border-box; } .ba-me label { display:block; }
  .ba-grid { display:flex; flex-direction:column; gap:12px; }
  .ba-side { display:contents; }
  .ba-card { order:0; } .ba-view { order:1; padding:6px; } .ba-steps { order:2; max-height:none; } .ba-cost { order:3; }
  .ba-cbtn { flex-direction:column; } .ba-cbtn .btn { width:100%; }
  #loginBtns:not([hidden]) { position:sticky; bottom:0; z-index:25; background:#fff; padding:8px 0 calc(8px + env(safe-area-inset-bottom)); }
  .ba-strip img { height:64px; }
}
@media (max-width:700px) { .top { flex-wrap:wrap; } .topnav { max-width:100%; overflow-x:auto; flex-wrap:nowrap; -webkit-overflow-scrolling:touch; } .topnav a { min-height:44px; display:inline-flex; align-items:center; white-space:nowrap; } }
@media (max-width:700px) {
  #login { scroll-margin-top:8px; }
  body.ba-wait #loginBtns:not([hidden]) { position:fixed; left:0; right:0; bottom:0; z-index:900; margin:0; padding:10px 12px calc(10px + env(safe-area-inset-bottom)); background:#fff; border-top:2px solid #f0b429; box-shadow:0 -6px 18px rgba(15,23,42,.15); }
  body.ba-wait .ba { padding-bottom:230px; }
  body.ba-wait .ba-actions { position:static; box-shadow:none; }
}
.ba-kb { background:#fff; padding:8px 10px; border-top:2px solid #3b5bdb; display:flex; flex-direction:column; gap:6px; }
.ba-kbtarget { margin:0; font-size:.85rem; color:#1e293b; font-weight:600; }
.ba-kbrow { display:flex; gap:6px; } .ba-kbrow .btn { min-height:44px; padding:8px 10px; white-space:nowrap; }
.ba-kb input { flex:1; min-width:0; min-height:44px; font-size:16px; padding:8px 10px; border:1px solid #94a3b8; border-radius:8px; }
.ba-kbrow:last-child .btn { flex:1; font-size:.9rem; }
.ba-kbrow:last-child { gap:4px; } .ba-kbrow:last-child .btn { padding:6px 4px; font-size:.85rem; min-width:0; }
/* 회원가입 정보 시트 · 본인인증 막힘 안내 */
.ba-signup { z-index: 1001; background: rgba(0,0,0,.45); display: flex; flex-direction: column; justify-content: flex-end; }
.ba-signup[hidden] { display: none; }
.ba-signup form { background: #fff; width: 100%; max-height: 92vh; overflow-y: auto; padding: 16px 16px calc(16px + env(safe-area-inset-bottom)); border-radius: 16px 16px 0 0; display: flex; flex-direction: column; gap: 10px; }
.ba-signup h2 { margin: 0; font-size: 18px; }
.ba-signup label { display: flex; flex-direction: column; gap: 4px; font-size: 14px; font-weight: 600; }
.ba-signup label[hidden] { display: none; }
.ba-signup input { font-size: 16px; padding: 10px 12px; border: 1px solid #ccd; border-radius: 10px; min-height: 44px; }
.ba-stuck { border: 2px solid #e0457b; background: #fff3f7; border-radius: 12px; padding: 12px; margin: 10px 0; }
.ba-stuck[hidden] { display: none; }
.ba-stuck p { margin: 0 0 8px; }
.ba-stuck .btn { width: 100%; min-height: 48px; }
#openSignup { width: 100%; min-height: 48px; margin: 8px 0; }
#openSignup[hidden] { display: none; }
.ba-sheetwarn { margin: 0; padding: 8px 10px; background: #fff3f7; border-bottom: 2px solid #e0457b; font-size: 14px; }
.ba-sheetwarn[hidden] { display: none; }
.ba-sheetwarn .btn { margin-left: 6px; min-height: 36px; }
.ba-sheethint summary { cursor:pointer; padding:2px 0; }

.ba-conn { position:fixed; left:8px; right:8px; top:calc(8px + env(safe-area-inset-top)); z-index:1100; display:flex; gap:8px; align-items:center; justify-content:space-between; background:#1e293b; color:#fff; padding:8px 10px; border-radius:12px; box-shadow:0 6px 20px rgba(0,0,0,.3); font-weight:700; font-size:.92rem; }
.ba-conn .btn { min-height:40px; white-space:nowrap; }
.ba-awayhint { margin:0 0 6px; font-size:.85rem; }

.ba-imehint{margin:0 0 4px;padding:6px 10px;background:#fef3c7;color:#7c2d12;border-radius:6px;font-weight:600;font-size:.95rem}
@media (max-width:700px),(pointer:coarse){.ba-imehint{font-size:.85rem;padding:4px 8px}}
.ba-imehint.ba-flash{outline:3px solid #f59e0b}

.ba-modal{position:fixed;inset:0;z-index:1200;background:rgba(15,23,42,.55);display:flex;align-items:center;justify-content:center;padding:16px}
.ba-modal[hidden]{display:none}
.ba-lg{background:#fff;border-radius:14px;box-shadow:0 18px 50px rgba(0,0,0,.35);width:100%;max-width:400px;padding:20px 20px 14px;display:flex;flex-direction:column;gap:12px}
.ba-lghead{display:flex;gap:10px;align-items:center}.ba-lghead h2{margin:0;font-size:1.1rem}.ba-lghead .m{margin:2px 0 0;font-size:.85rem;color:#64748b}
.ba-lghead img{border-radius:4px;flex:none}
.ba-lgf{display:flex;flex-direction:column;gap:4px;font-size:.9rem;font-weight:600;color:#334155}
.ba-lgf input{font-size:16px;padding:10px 12px;border:1px solid #cbd5e1;border-radius:8px;width:100%;box-sizing:border-box}
.ba-pwrow{display:flex;gap:6px}.ba-pwrow input{flex:1}.ba-pwrow .btn{min-width:44px}
.ba-lgerr{margin:0;padding:8px 10px;background:#fef2f2;color:#b91c1c;border-radius:8px;font-size:.92rem}
.ba-lgrem{display:flex;gap:6px;align-items:center;font-size:.92rem;margin:2px 0}.ba-lgrem input{width:18px;height:18px}.ba-lgrem .m{font-size:.8rem;color:#64748b}
.ba-lgbtn{display:flex;justify-content:flex-end;gap:8px}.ba-lgbtn .btn{min-height:44px;min-width:88px}
.ba-lglinks{display:flex;flex-wrap:wrap;gap:4px 14px;margin:0;font-size:.85rem}
.ba-link{background:none;border:0;padding:4px 0;color:#2563eb;text-decoration:underline;cursor:pointer;font-size:inherit}
.ba-link[hidden]{display:none}
.ba-lg .ba-note{margin:0;font-size:.78rem;color:#64748b}
#openLive.ba-small{background:none;border:1px solid #cbd5e1;color:#334155;font-size:.85rem;font-weight:500}
.ba-conn[hidden] { display:none; }

.ba-ct{max-height:calc(100dvh - 32px);overflow-y:auto}
.ba-ctico{font-size:1.5rem}
.ba-ctmsg{margin:0;font-size:.92rem;color:#334155}
.ba-ctst{display:flex;flex-direction:column;gap:8px}.ba-ctst[hidden]{display:none}
.ba-ctlab{margin:4px 0 0;font-size:.9rem;font-weight:600;color:#334155}.ba-ctlab small{font-weight:400;color:#64748b}
.ba-chips{display:flex;flex-wrap:wrap;gap:6px}
.ba-chips label,.ba-chips button{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 14px;border:1px solid #cbd5e1;border-radius:10px;background:#fff;font-size:.95rem;cursor:pointer}
.ba-chips label:has(input:checked){border-color:#2563eb;background:#eff6ff;font-weight:600}
.ba-chips label[hidden]{display:none}
.ba-ctterm summary{cursor:pointer;font-size:.88rem;color:#1e3a8a;padding:6px 0}
.ba-ctpre,.ba-ctterm pre{white-space:pre-wrap;font:inherit;font-size:.8rem;line-height:1.5;color:#334155;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:10px;max-height:180px;overflow-y:auto;margin:0}
.ba-ctterms{display:flex;flex-direction:column}
.ba-ctchk{display:flex;gap:8px;align-items:flex-start;font-size:.92rem;padding:10px;border:1px solid #fde68a;background:#fffbeb;border-radius:10px;cursor:pointer}
.ba-ctchk input{width:22px;height:22px;flex:none;margin:0}
.ba-ctcap{display:flex;align-items:center;gap:10px}.ba-ctcap img{height:50px;border:1px solid #e2e8f0;border-radius:6px;background:#fff}
.ba-chips label{white-space:nowrap}
/* 약관 자동 넘김 막대(직접 조작 창 위에도 보이게) */
.ba-cnbar{position:fixed;left:50%;transform:translateX(-50%);top:calc(8px + env(safe-area-inset-top));z-index:1300;max-width:min(560px,calc(100% - 16px));width:100%;display:flex;gap:8px;align-items:center;justify-content:space-between;background:#ecfdf5;border:2px solid #10b981;color:#064e3b;border-radius:12px;padding:8px 10px;box-shadow:0 8px 24px rgba(0,0,0,.18);font-weight:700}
.ba-cnbar[hidden]{display:none}.ba-cnbtns{display:flex;gap:6px;flex-shrink:0}.ba-cnbar .btn{min-height:40px;padding:6px 10px;white-space:nowrap}

/* 원격 선택 칸(년도 등)을 우리 화면에서 고르기 */
.ba-kbpick{align-items:center;gap:8px;background:#fff7e0;border:1px solid #f0c040;border-radius:10px;padding:6px 8px}
.ba-kbpicklab{font-weight:700;white-space:nowrap}
.ba-kbpick select{flex:1;min-width:0;font-size:16px;padding:8px;border-radius:8px;border:1px solid #c9c9c9;background:#fff}
.ba-kbpick.ba-flash{box-shadow:0 0 0 3px #f0c040}

/* 이 화면의 선택 칸(원격 select·라디오를 여기서 고름) */
.ba-fpanel{margin:4px 0 6px;border:1px solid #f2c14e;border-radius:10px;background:#fffbea;padding:4px 8px;max-height:38vh;overflow:auto}
.ba-fpanel summary{cursor:pointer;font-weight:700;font-size:.95rem;padding:4px 0}
.ba-fpanel summary small{font-weight:400;color:#6b5b1e}
.ba-frow{display:flex;align-items:center;gap:8px;padding:4px 0;border-top:1px dashed #ead79a;flex-wrap:wrap}
.ba-frow label{min-width:6.5em;font-weight:600;font-size:.92rem}
.ba-frow select{flex:1;min-width:8em;font-size:1rem;padding:6px;border-radius:8px;border:1px solid #c9b46a;background:#fff}
.ba-frow .st{min-width:1.6em;font-size:.9rem}

/* 이 단계 입력 양식(가입·신청 단계를 화면 조작 없이) */
.ba-step form{max-width:640px}
.ba-st-row{display:flex;flex-direction:column;gap:4px;padding:8px 0;border-top:1px solid #e5e7eb}
.ba-st-row>span.l{font-weight:700}
.ba-st-row .req{color:#dc2626}
.ba-st-row input,.ba-st-row select,.ba-st-row textarea{font-size:1.05rem;padding:8px;border:1px solid #cbd5e1;border-radius:8px}
.ba-st-row .h{font-size:.85rem;color:#475569}
.ba-st-row .e{font-size:.88rem;color:#b91c1c}
.ba-st-row .ops{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.ba-st-row.bad{background:#fef2f2}
.ba-st-radio{display:flex;flex-wrap:wrap;gap:10px}
.ba-st-c{display:flex;flex-direction:column;padding:6px 0;border-top:1px dashed #e5e7eb}
.ba-st-c label{display:flex;gap:8px;align-items:flex-start;font-weight:600}
.ba-st-c details pre{white-space:pre-wrap;max-height:200px;overflow:auto;font-size:.82rem;background:#f8fafc;padding:8px;border-radius:6px}
.ba-st-alert{background:#fff7ed;border:1px solid #fdba74;border-radius:8px;padding:8px;margin:6px 0}
.ba-st-post{border:1px solid #93c5fd;background:#eff6ff;border-radius:10px;padding:8px;margin:8px 0}
.ba-st-post button.res{display:block;width:100%;text-align:left;margin:4px 0}
.ba-step .ba-st-c label,.ba-step .ba-st-radio label,.ba-step .ba-st-row>label{display:flex;flex-direction:row;align-items:center;gap:8px;font-size:1rem}
.ba-step .ba-st-c input[type=checkbox],.ba-step .ba-st-row input[type=checkbox],.ba-step .ba-st-radio input{width:22px;height:22px;flex:none;margin:0;padding:0}
.ba-st-confirm{position:fixed;inset:0;background:rgba(15,23,42,.55);display:flex;align-items:center;justify-content:center;z-index:9999}
.ba-st-confirm[hidden]{display:none}
.ba-st-confirm .box{background:#fff;border-radius:14px;padding:20px;max-width:420px;width:92%;box-shadow:0 10px 40px rgba(0,0,0,.3)}
.ba-st-confirm h3{margin:0 0 8px;font-size:1.25rem}
.ba-st-confirm ul{margin:8px 0;padding-left:18px}
.ba-st-auto{display:inline-block;font-size:.74rem;font-weight:500;color:#7c3aed;background:#f3e8ff;border-radius:6px;padding:1px 6px;margin-left:4px}
.ba-st-row.auto .st-in{border-color:#c4b5fd;background:#faf5ff}
.ba-st-row.ask{outline:2px solid #f59e0b;outline-offset:2px;border-radius:8px}
.ba-st-go{background:#7c3aed;color:#fff;border-color:#7c3aed;font-weight:700}
.ba-st-checks{display:flex;flex-wrap:wrap;gap:6px 12px}
.ba-st-log{margin:8px 0;font-size:.85rem}.ba-st-log ul{margin:6px 0 0;padding-left:18px;max-height:160px;overflow:auto}
#stAllGo{margin-right:8px}
.ba-st-msg{position:sticky;top:0;z-index:2;margin:6px 0;padding:8px 10px;border-radius:10px;background:#eef2ff;color:#1e1b4b;font-size:.92rem;font-weight:600}
.ba-st-msg:empty{display:none}
/* 내 신청내역 */
.ba-mine h1{font-size:1.4rem;margin:18px 0 6px}
.ba-mine-list{list-style:none;padding:0;margin:14px 0;display:grid;gap:10px}
.ba-mine-it{display:grid;grid-template-columns:1fr auto;gap:6px 10px;align-items:start;background:#fff;border:1px solid #e5e7eb;border-radius:14px;padding:12px 14px}
.ba-mine-it .t{display:flex;flex-direction:column;gap:2px;min-width:0}.ba-mine-it .t b{word-break:keep-all}
.ba-mine-it small{color:#6b7280}
.ba-mine-it .ops{grid-column:1/-1;display:flex;gap:8px;flex-wrap:wrap}
.ba-st-badge{font-size:.8rem;font-weight:700;padding:3px 9px;border-radius:999px;background:#f3f4f6;color:#374151;white-space:nowrap}
.ba-st-badge.ok{background:#dcfce7;color:#166534}.ba-st-badge.wait{background:#fef3c7;color:#92400e}.ba-st-badge.cx{background:#fee2e2;color:#991b1b}
.btn.ba-cx{border-color:#fca5a5;color:#b91c1c;background:#fff5f5;font-weight:700}
.btn.ghost{background:transparent;border-color:transparent;color:#9ca3af}
.ba-mine-load{margin:18px 0 40px}.ba-mine-load h2{font-size:1.05rem}
.ba-intent{background:#eff6ff;border:1px solid #bfdbfe;border-radius:12px;padding:10px 12px;margin:8px 0;font-weight:600}
.ba-mine-load a.btn{text-decoration:none}
.ba-choice{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}.ba-entry{background:#fff7ed;border:1px solid #fed7aa;border-radius:12px;padding:10px 12px;margin:8px 0}.ba-entry .ops{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}.ba-entry .badge{display:inline-block;background:#fee2e2;color:#991b1b;border-radius:8px;padding:1px 8px;font-weight:700;margin-right:6px}

/* 한 번에 신청(날짜 고르고 버튼 하나) */
.ba-one{margin:8px 0 14px;padding:14px;border:2px solid #3b5bdb;border-radius:14px;background:#f5f7ff}
.ba-one h2{margin:0 0 8px;font-size:1.15rem}
.ba-otdates{display:flex;flex-direction:column;gap:8px;margin:6px 0 10px}
.ba-otdates label{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid #c5cee8;border-radius:10px;background:#fff;font-size:1rem;cursor:pointer}
.ba-otdates label:has(input:checked){border-color:#3b5bdb;box-shadow:0 0 0 2px #3b5bdb33}
.ba-otdates input{margin-top:3px;width:20px;height:20px}
.ba-otdates small{display:block;color:#5c6577}
.ba-otgo{width:100%;font-size:1.15rem;padding:14px;margin:8px 0 6px}
.ba-ot-warn{color:#b42318;font-weight:600;margin:6px 0}
.ba-otterms a{white-space:nowrap}
.ba-one .ba-me{background:#fff}
.ba-noview .ba-view{display:none}
.ba-viewtg{justify-self:start;grid-column:1/-1;margin-bottom:-6px}
.ba-grid.ba-noview{grid-template-columns:1fr}
.ba-small{font-size:.85rem;padding:4px 10px}
.ba-st-back{background:#fff;color:#334}
.ba-st-open{background:#e7f0ff;color:#1c3d8f;border:1px solid #9db4f0}

/* 한 번 신청 모드: 시작 버튼은 「이 날짜로 신청」 하나만 */
.ba-ot #startReal, .ba-ot #start, .ba-ot #replay { display: none !important; }
/* 한 번 탭 진행 중: 사이트 칸·주소 검색·단계 버튼은 숨김(에이전트가 채움) → 진행 문구 + 「자동으로 넣은 내용」만 */
#stepSheet.ot-quiet{display:none!important}
#stepSheet.ot-quiet #stFields, #stepSheet.ot-quiet #stConsents, #stepSheet.ot-quiet #stPost, #stepSheet.ot-quiet #stBtns, #stepSheet.ot-quiet #stCx, #stepSheet.ot-quiet #stAlerts { display: none !important; }

/* Hidden consent must override the flex layout of check labels. */
.check[hidden] { display: none !important; }

/* Certification fields with flex styles must still obey hidden. */
#ctForm [hidden]{display:none!important}

/* Signup has its own dialog; application fields stay in the page. */
#signup.ba-sheet { position:fixed; inset:0; width:100%; height:100dvh; max-width:none; z-index:1001; border:0; border-radius:0; margin:0!important; padding:16px; box-sizing:border-box; align-items:center; justify-content:center; background:rgba(15,23,42,.5); }
#signup > form { width:100%; max-width:640px; max-height:calc(100dvh - 32px); box-sizing:border-box; border-radius:20px; padding:24px; overscroll-behavior:contain; box-shadow:0 24px 80px #0003; }
#stepSheet #stMsg { flex-shrink:0; }
@media(max-width:600px) { #signup.ba-sheet { padding:10px; } #signup > form { max-height:calc(100dvh - 20px); padding:18px; border-radius:16px; } }

.ba-step-help { font-size:12px; color:#777; margin-top:8px; }
.ba-step-help summary { cursor:pointer; width:fit-content; }
.ba-step-help p { margin:8px 0 0; line-height:1.6; }
/* Institution login: one compact form, password-manager friendly. */
#lgModal .ba-lg{width:min(440px,calc(100vw - 32px));max-height:calc(100dvh - 32px);overflow:auto;padding:26px;border-radius:20px;box-shadow:0 20px 70px #14204425}#lgModal .ba-lghead h2{font-size:23px;line-height:1.35}#lgModal .ba-lghead .m{font-size:13px;overflow-wrap:anywhere}#lgModal .ba-lgf{margin:18px 0;font-size:15px}#lgModal input:not([type=checkbox]){font-size:16px;min-height:48px;border-radius:12px}#lgModal .ba-pwrow{gap:6px}#lgEye{font-size:14px;min-width:60px;min-height:48px;padding:8px}#lgModal .ba-lgrem{font-size:14px;line-height:1.5;align-items:flex-start}#lgModal .ba-lgrem .m{font-size:12px}#lgModal .ba-lgbtn{display:grid;grid-template-columns:1fr 2fr;gap:10px}#lgModal .ba-lgbtn .btn{font-size:16px;min-height:48px}#lgModal .ba-lglinks{display:flex;flex-wrap:wrap;justify-content:center;gap:12px}#lgModal .ba-link{font-size:14px}#lgPrivacy{font-size:12px;line-height:1.6;background:transparent;padding:0;color:#667085}@media(max-width:520px){#lgModal .ba-lg{padding:22px 18px}#lgModal .ba-lghead h2{font-size:21px}}

/* Cancellation feedback stays on the progress panel until confirmed. */
#cancelFeedback{padding:14px 18px;border-radius:14px;background:#f4f1e9;line-height:1.65}
#cancelSuccess>div{width:min(440px,calc(100vw - 32px));padding:28px;border-radius:22px;background:white;box-sizing:border-box}
#agentPanel:has(sb-agent[state="thinking"]) #agentNote::before{content:"";display:inline-block;width:12px;height:12px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;margin-right:8px;animation:jp-wait-spin .9s linear infinite}
@keyframes jp-wait-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){#agentPanel #agentNote::before{animation:none!important}}

/* 신청 정보는 진행 화면 안에, 확인된 결과만 팝업에 보여요. */
#stepSheet.ba-sheet{position:static;inset:auto;z-index:auto;width:100%;height:auto;max-width:none;margin:18px 0!important;padding:0;background:#fff;border:2px solid #e3e7f0;border-radius:14px;box-sizing:border-box}
#stepSheet>form{width:100%;max-width:none;max-height:none;overflow:visible;padding:20px;box-sizing:border-box;border-radius:16px;box-shadow:none}
#stepSheet[hidden]{display:none!important}
#applySuccess{align-items:center;justify-content:center;padding:16px;box-sizing:border-box}
#applySuccess>div{width:min(420px,100%);padding:28px 24px;background:#fffdf7;border-radius:22px;box-sizing:border-box;box-shadow:0 24px 80px #0003;text-align:center}
#applySuccess sb-agent{--sb-agent-size:88px;--sb-agent-indicator-display:none;margin:auto}
#applySuccess h2{font-size:24px;margin:8px 0;color:#5e472e}
#applySuccessNote{font-size:14px;line-height:1.6;color:#86775e;margin:8px 0 22px}
.jp-result-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.jp-result-actions .btn{min-height:46px;display:flex;align-items:center;justify-content:center;padding:10px;font-size:15px}
@media(max-width:600px){#stepSheet>form{padding:16px}#applySuccess>div{padding:24px 18px}}

#applySuccess [hidden]{display:none!important}

/* 좁은 신청 카드에서도 비밀번호 칸이 화면 밖으로 밀리지 않아요. */
#lgModal .ba-lg{min-width:0;gap:14px;box-sizing:border-box}
#lgModal .ba-lghead{align-items:flex-start;min-width:0}#lgModal .ba-lghead>div{min-width:0}#lgModal .ba-lghead h2{font-size:20px;overflow-wrap:anywhere}
#lgModal .ba-lgf{margin:0;gap:6px}#lgModal .ba-pwrow{min-width:0}#lgModal .ba-pwrow input{min-width:0;width:0}#lgEye{flex:0 0 58px;min-width:58px}
#lgModal .ba-lgrem{gap:8px;font-size:13px}#lgModal .ba-lgrem input{flex:0 0 18px;margin-top:2px}#lgModal .ba-lgrem>span{min-width:0}#lgModal .ba-lgrem small{display:block;font-weight:400;margin-top:3px}
#lgModal .ba-lglinks{gap:4px 14px;margin-top:0}#lgModal .ba-link{font-size:12px;min-height:36px;color:#79623b}
.ba-lg-saved{display:flex;align-items:center;gap:8px;padding:10px;background:#f8f3e8;border-radius:10px;font-size:13px}.ba-lg-saved span{flex:1;min-width:0;overflow-wrap:anywhere}#lgModal .ba-lg-saved .btn{flex:none;font-size:12px;padding:6px 9px;min-height:36px}
/* 짹팟 모바일은 화면 아래 72px 에 탐색 메뉴가 고정 → 아래에 붙는 실행 막대(「중단」)·로그인 버튼 막대가 그 뒤에 가려지지 않게 위로 올림 */
@media (max-width:640px) {
  .jp-app .ba-actions { bottom:calc(72px + env(safe-area-inset-bottom)); }
  .jp-app.ba-wait #loginBtns:not([hidden]) { bottom:calc(72px + env(safe-area-inset-bottom)); }
}

/* v3: 진행 중 표시(신청 시작·진행 중 버튼, 채팅 상태 줄)와 간결한 입력·작업 화면 */
#chatApply.is-loading,#otGo[aria-busy=true]{display:inline-flex;align-items:center;justify-content:center;gap:8px}
#chatApply.is-loading::before,#otGo[aria-busy=true]::before,.jp-chat-progress:has(sb-agent[state="thinking"]) #taskStatus::before{content:"";flex:none;display:inline-block;width:14px;height:14px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;box-sizing:border-box;animation:jp-wait-spin .9s linear infinite}
.jp-chat-progress:has(sb-agent[state="thinking"]) #taskStatus::before{width:12px;height:12px;margin-right:8px;vertical-align:-1px}
@media(prefers-reduced-motion:reduce){#chatApply.is-loading::before,#otGo[aria-busy=true]::before,.jp-chat-progress #taskStatus::before{animation:none!important;border-right-color:currentColor;opacity:.55}}
#stepSheet .ba-st-alert{background:transparent;border:0;padding:0;margin:4px 0;font-size:.85rem;color:#6b7280}
#stepSheet .ba-st-alert summary{cursor:pointer;width:fit-content}
#stepSheet .ba-st-alert p{margin:6px 0 0;line-height:1.55}
#stepSheet .ba-st-auto{font-weight:500;color:#6b7280;background:#f3f4f6}
#stepSheet .ba-kbrow:last-child{flex-wrap:nowrap}
#stepSheet .ba-kbrow:last-child .btn{flex:1 1 0;min-width:0;overflow:hidden;text-overflow:ellipsis}
#stBtns{flex-wrap:wrap}
#stBtns .btn{flex:1 1 auto}
/* 채팅 안 입력·작업 화면: 남은 횟수·중단 줄이 입력 칸을 덮지 않게(채팅에 「작업 중단」이 따로 있어요) */
.jp-embedded .ba-actions{position:static!important;bottom:auto!important;margin:6px 0 14px!important;padding:0!important;background:transparent!important;box-shadow:none!important}
/* 짹팟: 평소에는 작업 화면 버튼·작업 기록을 숨기고, 멈춤·확인이 필요할 때(body.ba-trouble)만 보여 줌 */
.jp-app:not(.ba-trouble) #viewToggle, .jp-app:not(.ba-trouble) #workLog { display:none !important; }
/* 대기 접수 강좌: 동의·신청 전에 대기 신청임을 알려요(공용 규칙 course-status.js) */
#chatReviewData .jp-chat-wait{display:block;background:var(--pri2,#eaf1fe);border:1px solid var(--ex-blue-m,#c9d9fa);border-radius:12px;padding:8px 10px;margin:4px 0}
#chatReviewData .jp-chat-wait dt{font-weight:700;color:var(--pri-d,#2f6be0)}#chatReviewData .jp-chat-wait dd{margin:2px 0 0;text-align:left;color:var(--fg,#1f2433);line-height:1.5}
/* 신청 화면 대기 안내: 빨간 경고 대신 테마의 안내 카드(약관 안내와 같은 톤) */
.ba-ot-warn.ba-ot-wait{color:var(--fg,#1f2433);background:var(--pri2,#eaf1fe);border:1px solid var(--ex-blue-m,#c9d9fa);border-radius:16px;padding:10px 12px;font-size:14px;font-weight:600;line-height:1.55;margin:8px 0}

/* Action labels stay centered and readable at narrow widths and larger text sizes. */
.jp-app button.btn,.jp-app a.btn,.jp-app .searchbar button.go{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  box-sizing:border-box;min-width:0;max-width:100%;height:auto;
  padding:10px 16px;line-height:1.4;text-align:center;
  white-space:normal;word-break:keep-all;overflow-wrap:anywhere;
}
.jp-app button.btn>svg,.jp-app a.btn>svg{flex-shrink:0}
.jp-app .ba-kbrow{flex-wrap:wrap}
.jp-app #stepSheet .ba-kbrow:last-child .btn{flex:1 1 100px;overflow:visible;text-overflow:clip}
.jp-app #stBtns .btn{flex:1 1 140px}
.jp-app .ba-st-post button.res{display:block;text-align:left}
.jp-app .ba-pwrow .btn{flex-shrink:0;min-width:60px}
.jp-app .connection-actions{flex-wrap:wrap;justify-content:flex-end}
.jp-app .fchips button,.jp-app .qchips button,.jp-app .jp-chat-prompts button,.jp-app .jp-suggestions button{
  line-height:1.4;word-break:keep-all;overflow-wrap:anywhere;white-space:normal;
}
@media(max-width:600px){
  .jp-app:not(.jp-embedded) .jp-agent-top{display:grid;grid-template-columns:56px minmax(0,1fr);gap:6px 12px;align-items:center}
  .jp-app:not(.jp-embedded) .jp-agent-top sb-agent{--sb-agent-size:56px;grid-column:1;grid-row:1 / 3}
  .jp-app:not(.jp-embedded) .jp-agent-top .jp-run-mode{grid-column:2;grid-row:1;justify-self:start;margin:0;white-space:normal}
  .jp-app:not(.jp-embedded) .jp-agent-copy{grid-column:2;grid-row:2;min-width:0}
  .jp-app:not(.jp-embedded) .jp-agent-copy h2{font-size:18px;line-height:1.5;word-break:keep-all}
}

/* Profile disclosure belongs to the date-card heading. */
.jp-app .ba-othead{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
.jp-app .ba-othead #otH{margin:0;min-width:0}
.jp-app .ba-othead #otMeToggle{flex:none;width:auto;min-height:40px;padding:8px 12px;font-size:14px;white-space:nowrap;background:transparent;color:var(--pri)}
.ba-metoggle-arrow{width:7px;height:7px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg);margin:0 2px 4px 4px}
#otMeToggle[aria-expanded=true] .ba-metoggle-arrow{transform:rotate(225deg);margin-top:5px;margin-bottom:0}
#otMeBox #me>summary{display:none}
#otMeBox #me:not([open]){display:none}
#otMeBox #me[open]{margin:12px 0;padding:16px;border:1px solid var(--line);border-radius:12px;background:#f8faff}
