/*
 * 테슬라 운영 CSS — 시안 docs/design/ui-v0.1 의 <helmet><style> 을 옮겼다(같은 모양이 정본).
 *   토큰·버튼·배지·입력·토스트·배너 = DesignSystem · 화면 틀(사이드·헤더·푸터) = Main·AdminDash·DevSystem
 *   로그인 = Login · 내 계정 메뉴·모달 = MyPassword · 오류 화면 = NotFound
 * CSP default-src 'self' — 외부 폰트·인라인 style 을 쓰지 않는다. 글꼴은 이 사이트가 직접 내준다(아래 @font-face).
 */

/* ── 글꼴 — IBM Plex Sans KR 1.1.0 · IBM Plex Mono 2.5.0 (SIL OFL 1.1, 라이선스 = /assets/fonts/OFL.txt)
 *    받은 곳: github.com/IBM/plex 릴리스(@ibm/plex-sans-kr@1.1.0 · @ibm/plex-mono@2.5.0)의 fonts/complete/woff2.
 *    Sans KR 은 서브셋이 아니라 완성형 한글 11,172자 전부가 든 파일이다(2026-10-21 fontTools 로 확인). Mono 에는 한글이 없다 —
 *    .mono 칸의 한글은 아래 글꼴 목록의 다음 글꼴로 그려진다. 해시 없는 경로라 운영 캐시는 짧다(nginx /assets/ 300초). */
@font-face{font-family:'IBM Plex Sans KR';font-style:normal;font-weight:400;font-display:swap;src:url('/assets/fonts/IBMPlexSansKR-Regular.woff2') format('woff2')}
@font-face{font-family:'IBM Plex Sans KR';font-style:normal;font-weight:500;font-display:swap;src:url('/assets/fonts/IBMPlexSansKR-Medium.woff2') format('woff2')}
@font-face{font-family:'IBM Plex Sans KR';font-style:normal;font-weight:600;font-display:swap;src:url('/assets/fonts/IBMPlexSansKR-SemiBold.woff2') format('woff2')}
@font-face{font-family:'IBM Plex Sans KR';font-style:normal;font-weight:700;font-display:swap;src:url('/assets/fonts/IBMPlexSansKR-Bold.woff2') format('woff2')}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url('/assets/fonts/IBMPlexMono-Regular.woff2') format('woff2')}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url('/assets/fonts/IBMPlexMono-Medium.woff2') format('woff2')}
:root{
  --nav:#0F1B2D; --nav-hover:#17263C; --nav-on:#1C2E48; --nav-text:#C9D3E1; --nav-muted:#9AA8BC; --nav-line:#22344F;
  --brand-ink:#050607; --brand-red:#E5484D;
  --primary:#C2410C; --primary-hover:#9A3412; --current:#F59E0B;
  --text:#1A2230; --muted:#5B6576; --ground:#F5F6F8; --line:#E3E6EB; --line-soft:#EEF0F3; --field:#CBD2DB; --field-soft:#D5DAE1;
  --danger:#B42318; --ok:#15803D; --ok-ink:#14532D; --focus:#2F6FED; --link:#1D4ED8; --link-hover:#1E3A8A;
  --font:'IBM Plex Sans KR',system-ui,-apple-system,'Apple SD Gothic Neo','Malgun Gothic',sans-serif;
  --mono:'IBM Plex Mono',ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}
*{box-sizing:border-box}
body{margin:0;font-family:var(--font);color:var(--text);background:var(--ground)}
a{color:var(--link)}a:hover{color:var(--link-hover)}
[hidden]{display:none!important}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
/* --focus: 시안 #93B4F5 는 흰 바탕 대비 2.1:1 — 포커스 표시는 3:1 이상(WCAG 1.4.11). #2F6FED = 흰 4.5 · 바탕 #F5F6F8 4.2 · 사이드 #0F1B2D 3.8 (US-010 실측) */
.mono{font-family:var(--mono);font-size:12.5px}
.muted{color:var(--muted)}
.skip{position:absolute;left:-9999px;top:8px;z-index:20;background:#FFFFFF;color:var(--text);padding:8px 12px;border-radius:8px}
.skip:focus{left:8px}

/* ── 버튼 · 배지 · 입력 (DesignSystem) ─────────────────── */
.btn{display:inline-flex;align-items:center;gap:6px;height:40px;padding:0 14px;border-radius:8px;font:inherit;font-size:13px;font-weight:600;cursor:pointer;border:1px solid transparent;white-space:nowrap;text-decoration:none}
.btn-primary{background:var(--primary);color:#FFFFFF}
.btn-primary:hover{background:var(--primary-hover);color:#FFFFFF}
.btn-ghost{background:#FFFFFF;color:var(--text);border-color:var(--field)}
.btn-ghost:hover{color:var(--text);background:#F8F9FB}
.btn-dark{background:var(--text);color:#FFFFFF}
.btn-danger{background:var(--danger);color:#FFFFFF}
.btn-off,.btn:disabled{background:#F1F3F6;color:#7A8494;border-color:var(--line);cursor:not-allowed}
.btn[aria-busy="true"]{cursor:progress}
.chip{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:600;border-radius:999px;padding:3px 9px}
.c-run{background:#E3F4E8;color:var(--ok-ink)}
.c-wait{background:#EEF1F5;color:#334155}
.c-soon{background:#FEF0DC;color:#8A3A00}
.c-done{background:#E8EBF0;color:#3B4656}
.c-refund{background:#FDE8E8;color:#991B1B}
.c-test{background:#EFE8FD;color:#5B21B6}
.role{display:inline-flex;font-size:12px;font-weight:600;border-radius:6px;padding:2px 8px}
.r-dist{background:#E6ECF5;color:var(--nav-on)}
.r-agency{background:#FFF0E0;color:#7C3A12}
.r-seller{background:#EEF1F5;color:#334155}
.field{display:flex;flex-direction:column;gap:6px}
.lbl{font-size:13px;font-weight:600;color:#334155}
.input{height:42px;border:1px solid var(--field);border-radius:8px;padding:0 12px;font:inherit;font-size:14px;background:#FFFFFF;color:var(--text);width:100%}
.input[aria-invalid="true"]{border-color:var(--danger);background:#FFFBFB}
.input:disabled{background:#F1F3F6;color:#7A8494}
.errt{font-size:12px;color:var(--danger)}
.hint{font-size:12px;color:var(--muted)}
.ok{font-size:12px;color:var(--ok-ink)}
.pw{position:relative}
.pw .input{padding-right:50px}
.eye{position:absolute;right:2px;top:1px;width:40px;height:40px;border:0;background:transparent;color:#334155;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:8px}

/* ── 화면 틀 (Main · AdminDash · DevSystem) ─────────────── */
.shell{display:flex;flex-wrap:wrap;background:var(--ground);min-height:100vh}
.side{flex:1 1 236px;background:var(--nav);color:var(--nav-text);padding:20px 12px calc(96px + env(safe-area-inset-bottom));display:flex;flex-direction:column}
.side .brand{display:flex;align-items:center;gap:10px;padding:4px 8px 18px;text-decoration:none}
.side .brand b{display:block;color:#FFFFFF;font-size:18px;letter-spacing:-0.2px}
.side .brand small{display:block;color:var(--nav-muted);font-size:11px}
.grp{font-size:11px;color:var(--nav-muted);letter-spacing:0.6px;padding:14px 10px 6px;margin:0;font-weight:400}
.nav{display:flex;flex-direction:column;gap:2px}
.nav a{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:8px;color:var(--nav-text);text-decoration:none;font-size:14px;font-weight:500}
.nav a:hover{background:var(--nav-hover);color:#FFFFFF}
.nav a.on{background:var(--nav-on);color:#FFFFFF;box-shadow:inset 3px 0 0 var(--current)}
.badge{margin-left:auto;font-size:11px;font-weight:600;background:var(--current);color:var(--nav);border-radius:999px;padding:1px 7px}
.devtag{margin-left:auto;font-size:10.5px;font-weight:600;color:var(--nav);background:#9AD1FF;border-radius:4px;padding:1px 5px}
.sidefoot{margin-top:24px;padding:12px;border-top:1px solid var(--nav-line);font-size:12px;color:var(--nav-muted);line-height:1.6}
.main{flex:999 1 560px;min-width:0;display:flex;flex-direction:column}
.top{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:12px 28px;background:#FFFFFF;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}
.crumb{font-size:13px;color:var(--muted);flex:1 1 200px}
.crumb b{color:var(--text)}
.search{display:flex;align-items:center;gap:8px;border:1px solid var(--field-soft);border-radius:8px;padding:0 10px;height:38px;background:#FFFFFF;min-width:220px;color:var(--muted);margin:0}
.search input{border:0;outline:0;font:inherit;font-size:13px;width:100%;background:transparent;color:var(--text)}
.search:focus-within{outline:3px solid var(--focus);outline-offset:2px}
.env{font-size:12px;font-weight:600;border-radius:999px;padding:4px 10px;border:1px solid}
.env-prod{color:var(--ok-ink);background:#E3F4E8;border-color:#B9E2C6}
.env-dev{color:#8A3A00;background:#FEF0DC;border-color:#F6D8B4}
.env-other{color:#334155;background:#EEF1F5;border-color:var(--field)}
.iconbtn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:8px;border:1px solid var(--line);background:#FFFFFF;color:#334155;cursor:pointer}
.pop-wrap{position:relative}
.acct{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:999px;padding:4px 12px 4px 4px;background:#FFFFFF;font:inherit;font-size:13px;color:var(--text);cursor:pointer;min-height:40px}
.acct[aria-expanded="true"]{border-color:var(--field)}
.avatar{width:30px;height:30px;border-radius:50%;background:var(--nav-on);color:#FFFFFF;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}
.av-ADMIN{background:var(--primary)}
.av-DEV{background:var(--link)}
.menu{position:absolute;right:0;top:calc(100% + 10px);width:260px;background:#FFFFFF;border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 32px rgba(15,27,45,0.16);padding:8px;z-index:6}
.menu .me{padding:10px 12px 12px;border-bottom:1px solid var(--line-soft);margin-bottom:6px}
.menu .me b{display:block;font-size:14px}
.menu .me span{font-size:12px;color:var(--muted)}
.menu form{margin:0}
.menu [role="menuitem"]{display:flex;width:100%;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;color:var(--text);text-decoration:none;font:inherit;font-size:14px;background:transparent;border:0;cursor:pointer;text-align:left}
.menu [role="menuitem"]:hover,.menu [role="menuitem"]:focus-visible{background:#F1F3F6}
.pop{position:absolute;right:0;top:calc(100% + 10px);width:280px;background:#FFFFFF;border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 32px rgba(15,27,45,0.16);padding:14px 16px;z-index:6;font-size:13px;color:#334155;line-height:1.6}
.pop b{display:block;color:var(--text);font-size:14px;margin-bottom:4px}
.content{padding:24px 28px 32px;display:flex;flex-direction:column;gap:18px;flex:1 1 auto}
.ph h1{margin:0;font-size:24px;letter-spacing:-0.4px}
.ph p{margin:4px 0 0;color:var(--muted);font-size:13px}
.card{background:#FFFFFF;border:1px solid var(--line);border-radius:12px}
.foot{display:flex;flex-wrap:wrap;gap:8px 18px;justify-content:space-between;padding:14px 28px;border-top:1px solid var(--line);background:#FFFFFF;font-size:12px;color:var(--muted)}
.foot nav{display:flex;gap:14px;flex-wrap:wrap}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
.kpi{padding:16px 18px;display:flex;flex-direction:column;gap:6px}
.kpi span{font-size:13px;color:var(--muted)}
.kpi b{font-size:28px;font-family:var(--mono);font-weight:500;letter-spacing:-0.5px}
.kpi small{font-size:12px;color:var(--muted)}
.sorts{color:var(--muted);font-size:13px;margin:0}
.tblbox{overflow-x:auto}
table{width:100%;border-collapse:collapse}
th{font-size:12px;font-weight:600;color:#475569;text-align:left;background:#F8F9FB;padding:11px 12px;border-bottom:1px solid var(--line);white-space:nowrap}
td{font-size:13px;padding:11px 12px;border-bottom:1px solid var(--line-soft);white-space:nowrap}
@media (max-width:640px){.top,.content,.foot{padding-left:16px;padding-right:16px}.search{min-width:0;flex:1 1 100%}}

/* ── 알림: 토스트(방금 한 일) · 배너(이 화면 상태) · 전면 배너(시스템 멈춤) ── */
.toasts{position:fixed;top:84px;right:28px;z-index:30;display:flex;flex-direction:column;gap:10px;max-width:calc(100vw - 32px)}
.toast{display:flex;align-items:flex-start;gap:10px;width:340px;max-width:100%;padding:12px 14px;border-radius:10px;box-shadow:0 8px 24px rgba(15,27,45,0.14);font-size:13.5px;background:#FFFFFF;border:1px solid var(--line)}
.toast b{display:block}
.toast .tx{flex:1 1 auto;min-width:0;overflow-wrap:anywhere}
.toast .x{margin-left:auto;height:28px;width:28px;padding:0;border-radius:6px;border:1px solid var(--field);background:#FFFFFF;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#334155}
.t-ok{border-left:4px solid var(--ok)}.t-ok>svg{color:var(--ok)}
.t-err{border-left:4px solid var(--danger)}.t-err>svg{color:var(--danger)}
@media (max-width:640px){.toasts{right:16px;left:16px;top:16px}.toast{width:auto}}
.banner{display:flex;gap:10px;align-items:center;padding:12px 16px;border-radius:10px;background:#FEF6EC;border:1px solid #F6D8B4;color:#6B2E05;font-size:13px}
.banner-full{display:flex;gap:10px;align-items:center;padding:12px 16px;border-radius:10px;background:#7F1D1D;color:#FFFFFF;font-size:13.5px;font-weight:600}
.banners{display:flex;flex-direction:column;gap:10px}
.banners:empty{display:none}

/* ── 모달 (MyPassword) ─────────────────────────────────── */
.scrim{position:fixed;inset:0;background:rgba(15,27,45,0.5);display:flex;justify-content:center;align-items:flex-start;padding:12vh 16px 16px;z-index:20;overflow-y:auto}
.modal{width:100%;max-width:440px;background:#FFFFFF;border-radius:16px;box-shadow:0 24px 64px rgba(15,27,45,0.35);display:flex;flex-direction:column}
.modal form{margin:0;display:flex;flex-direction:column}
.mh{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--line)}
.mh h2{margin:0;font-size:19px}
.mb{padding:20px 24px;display:flex;flex-direction:column;gap:14px}
.mb .input{height:44px;font-size:15px}
.mf{display:flex;justify-content:flex-end;gap:8px;padding:16px 24px;border-top:1px solid var(--line)}
.mf .btn{height:42px;padding:0 16px;font-size:14px}
.x{width:40px;height:40px;border-radius:8px;border:0;background:transparent;color:#334155;cursor:pointer;display:flex;align-items:center;justify-content:center}
body.modal-open{overflow:hidden}

/* ── 오류 화면 (NotFound) ─────────────────────────────── */
.errwrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:48px 16px;background:var(--ground)}
.errbox{width:100%;max-width:520px;background:#FFFFFF;border:1px solid var(--line);border-radius:16px;padding:40px 36px;display:flex;flex-direction:column;gap:18px;align-items:flex-start}
.errbox .code{font-family:var(--mono);font-size:13px;color:var(--muted);letter-spacing:1px}
.errbox h1{margin:0;font-size:26px;letter-spacing:-0.4px}
.errbox p{margin:0;font-size:14.5px;color:#334155;line-height:1.7}
.errbox .path{font-family:var(--mono);font-size:13px;background:#F1F3F6;border-radius:6px;padding:2px 8px;overflow-wrap:anywhere}
.errbox .acts{display:flex;flex-wrap:wrap;gap:8px}
.errbox .btn{height:42px;padding:0 16px;font-size:14px}
.errbox .rid{font-size:12.5px;color:var(--muted);border-top:1px solid var(--line-soft);padding-top:14px;width:100%}
@media (max-width:480px){.errbox{padding:28px 20px}}

/* ── 로그인 (Login) — 배경 영상 + 포스터 ─────────────────── */
.login-body{background:var(--brand-ink);color:#F4F5F7}
.login-body a{color:#C9D3E1}.login-body a:hover{color:#FFFFFF}
.login-stage{position:relative;min-height:100vh;min-height:100dvh;overflow:hidden;background:var(--brand-ink);display:flex;align-items:center;justify-content:center;padding:48px 16px}
.login-poster,.login-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.login-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(5,6,7,0.55) 0%,rgba(5,6,7,0.35) 45%,rgba(5,6,7,0.8) 100%)}
@media (prefers-reduced-motion: reduce){.login-bg{display:none}}
.login-panel{position:relative;width:100%;max-width:380px;display:flex;flex-direction:column;gap:28px;align-items:stretch}
.login-brand{display:flex;flex-direction:column;align-items:center;gap:14px}
.login-brand h1{margin:0;font-size:30px;letter-spacing:6px;font-weight:600;color:#FFFFFF}
.login-form{background:rgba(12,14,17,0.72);border:1px solid rgba(255,255,255,0.14);border-radius:16px;padding:28px 26px;display:flex;flex-direction:column;gap:16px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.login-form .field label{font-size:13px;font-weight:600;color:#D7DCE3}
.login-form .input{height:46px;border:1px solid rgba(255,255,255,0.22);border-radius:8px;padding:0 12px;font-size:15px;background:rgba(255,255,255,0.06);color:#FFFFFF}
.login-form .input[aria-invalid="true"]{border-color:#F97066;background:rgba(240,68,56,0.08)}
.login-form .pw .input{padding-right:50px}
.login-form .eye{right:3px;top:3px;color:#D7DCE3}
.login-form .check{display:flex;align-items:center;gap:8px;font-size:14px;color:#E6E9EE;min-height:44px}
.login-form .check input{width:18px;height:18px;margin:0}
.login-submit{height:48px;border-radius:8px;border:0;background:#FFFFFF;color:#0B0C0E;font:inherit;font-size:15px;font-weight:700;letter-spacing:1px;cursor:pointer}
.login-submit:disabled{opacity:.7;cursor:progress}
.form-msg{margin:0;padding:10px 12px;border-radius:8px;font-size:13.5px;line-height:1.5}
.form-msg.err{background:rgba(180,35,24,0.22);border:1px solid rgba(249,112,102,0.55);color:#FFE4E1}
.form-msg.info{background:rgba(255,255,255,0.08);border:1px solid rgba(255,255,255,0.22);color:#E6E9EE}
.eye .i-hide{display:none}
.eye[aria-pressed="true"] .i-show{display:none}
.eye[aria-pressed="true"] .i-hide{display:block}

/* ── 사용자 관리 (AdminUsers · Users · AgencyUsers · UserAdd · DeleteConfirm) ── */
.phrow{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px}
.ulive{display:flex;flex-direction:column;gap:18px}
.split{display:flex;flex-wrap:wrap;gap:18px;align-items:flex-start}
.tree{flex:1 1 260px;max-width:300px;padding:16px}
.tree h2{margin:0 0 10px;font-size:14px}
.node{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:8px;font-size:13px;color:var(--text);text-decoration:none}
a.node:hover{background:#F8F9FB;color:var(--text)}
.node.sel{background:#FFF4E8}
.node.l1{padding-left:24px}
.node.l2{padding-left:46px}
.node .st-off{font-size:12px}
.cnt{margin-left:auto;font-size:12px;color:var(--muted);font-family:var(--mono)}
.tnote{font-size:12px;margin:10px 0 0}
.list{flex:999 1 560px;min-width:0}
.ulist{display:flex;flex-direction:column}
.ulist .list{flex:none}   /* 세로 flex 에서 flex-basis 560px 이 «높이»가 되지 않게(대행사 화면 — 트리 없음) */
.tabs{display:flex;gap:6px;padding:14px 16px;flex-wrap:wrap;align-items:center}
.tab{display:inline-flex;align-items:center;height:36px;padding:0 14px;border-radius:999px;border:1px solid var(--field-soft);background:#FFFFFF;font:inherit;font-size:13px;cursor:pointer;color:var(--text);text-decoration:none}
a.tab:hover{color:var(--text);background:#F8F9FB}
.tab.on,a.tab.on:hover{background:var(--nav);color:#FFFFFF;border-color:var(--nav)}
.grow{flex:1 1 auto}
.tfil{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0}
.lsearch{display:flex;align-items:center;gap:6px;height:36px;border:1px solid var(--field-soft);border-radius:999px;padding:0 12px;background:#FFFFFF;color:var(--muted)}
.lsearch input{border:0;outline:0;font:inherit;font-size:13px;width:140px;background:transparent;color:var(--text)}
.lsearch:focus-within{outline:3px solid var(--focus);outline-offset:2px}
.utbl{min-width:860px}
.utbl-wide{min-width:860px}
.utbl td{padding:9px 8px}
.utbl th{padding:11px 8px}
/* 1440 에서 «마지막 로그인»·«생성일»이 고정된 관리 칸에 덮이지 않게(D-2) — 버튼이 많으면 칸 안에서 두 줄로 */
.utbl .acts{flex-wrap:wrap}
/* 관리 칸은 오른쪽에 붙는다 — 좁은 화면에서 표가 가로로 밀려도 버튼은 늘 보인다 */
.utbl td:last-child,.utbl th:last-child{position:sticky;right:0;background:#FFFFFF;box-shadow:-10px 0 10px -10px rgba(15,27,45,0.22)}
.utbl th:last-child{background:#F8F9FB}
td.empty{text-align:center;color:var(--muted);padding:28px 12px;white-space:normal}
.st-on{color:var(--ok-ink);font-weight:600}
.st-off{color:#991B1B;font-weight:600}
.acts{display:flex;gap:5px}
.btn-sm{height:30px;padding:0 9px;font-size:12px}
.btn-line-danger{background:#FFFFFF;color:#991B1B;border-color:#F1C4C4}
.btn-line-danger:hover{background:#FFF5F5;color:#991B1B}
.pager{display:flex;align-items:center;justify-content:center;gap:12px;padding:12px 16px;font-size:13px;color:var(--muted)}
.unote{font-size:12px;margin:0;padding:12px 16px}
.modal-md{max-width:520px}
.req{color:var(--danger)}
.seg{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.seg-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.segb{position:relative;display:flex;align-items:center;justify-content:center;height:44px;border-radius:8px;border:1px solid var(--field);background:#FFFFFF;font-size:14px;font-weight:600;color:var(--text);cursor:pointer}
.segb input{position:absolute;opacity:0;width:1px;height:1px;margin:0;pointer-events:none}
.segb:has(input:checked){background:var(--nav);color:#FFFFFF;border-color:var(--nav)}
.segb:has(input:disabled){background:#F1F3F6;color:#7A8494;border-color:var(--line);cursor:not-allowed}
.segb:has(input:focus-visible){outline:3px solid var(--focus);outline-offset:2px}
.input-fixed{display:flex;align-items:center;background:#F1F3F6;color:#334155}
select.input{appearance:auto}
.rule{display:flex;gap:8px;background:#F3F7FB;border:1px solid #DCE5EF;border-radius:8px;padding:10px 12px;font-size:12.5px;color:var(--nav-on);line-height:1.55}
.rule>svg{flex:0 0 auto;margin-top:2px}
.mh-ic{display:flex;flex:0 0 auto}
.ic-warn{color:#B45309}
.ic-danger{color:var(--danger)}
.mh{gap:10px}
.mh h2{flex:1 1 auto}
.dlist .cnt{font-family:var(--font)}
.mb-text{font-size:14px;line-height:1.6}
.dlist{border:1px solid var(--line);border-radius:10px;overflow:hidden}
.dlist .item{display:flex;align-items:center;gap:8px;padding:9px 12px;border-top:1px solid var(--line-soft);font-size:13px}
.dlist .item:first-child{border-top:0}
.block{display:flex;gap:8px;background:#FEF0DC;border:1px solid #F6D2A4;border-radius:8px;padding:10px 12px;font-size:13px;color:#6B2E05}
.warn{display:flex;gap:8px;background:#FDECEC;border:1px solid #F5C2C2;border-radius:8px;padding:10px 12px;font-size:13px;color:#7F1D1D}
.todo{margin:0;padding-left:20px}
@media (max-width:640px){.tree{max-width:none}.lsearch input{width:100%}.tfil,.lsearch{flex:1 1 100%}}

/* ── 광고 관리 (AdminSlots · Main · AgencySlots · Seller) ── */
.hacts{display:flex;gap:8px;flex-wrap:wrap}
.hacts [data-pick-count]:not(:empty){margin-left:2px}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px}
.stat{display:flex;flex-direction:column;gap:4px;padding:14px 16px;border-radius:10px;border:1px solid var(--line);background:#FFFFFF;text-align:left;font:inherit;cursor:pointer;color:var(--text);text-decoration:none}
a.stat:hover{color:var(--text);background:#F8F9FB}
.stat span{font-size:13px;color:var(--muted)}
.stat b{font-size:22px;font-family:var(--mono);font-weight:500}
.stat small{font-size:11.5px;color:var(--muted)}
.stat.on,a.stat.on:hover{background:var(--nav);border-color:var(--nav);color:#FFFFFF}
.stat.on span,.stat.on small{color:var(--nav-text)}
.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:14px 16px;margin:0}
.tsearch{flex:1 1 220px;max-width:300px;min-width:0}
.sel{height:40px;border:1px solid var(--field-soft);border-radius:8px;padding:0 10px;font:inherit;font-size:13px;background:#FFFFFF;color:var(--text)}
.tcheck{display:flex;align-items:center;gap:6px;font-size:13px;color:#334155;min-height:40px}
.tcheck input{width:16px;height:16px;margin:0}
.stbl{min-width:1080px}
.stbl-admin{min-width:1360px}
.stbl-dist,.stbl-agency{min-width:1080px}
.stbl td{padding:10px 8px}
.stbl th{padding:11px 8px}
/* 1440 에서 칸이 다 보이게(D-2): 상태·키워드·메모·대행사/사용자는 줄바꿈, URL 은 말줄임(전체 주소는 title) — 고정된 «수정» 칸이 앞 칸을 덮지 않는다 */
.stbl td.wrap{white-space:normal;word-break:keep-all}
.stbl td.url a{display:inline-block;max-width:140px;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}
.stbl input[type="checkbox"]{width:16px;height:16px;margin:0}
.ag{color:var(--muted);font-size:12px}
.spager{justify-content:space-between;flex-wrap:wrap;gap:10px}
.pages{display:flex;gap:4px;flex-wrap:wrap}
.pg{display:inline-flex;align-items:center;justify-content:center;min-width:36px;height:36px;padding:0 6px;border-radius:8px;border:1px solid var(--line);background:#FFFFFF;font-size:13px;color:var(--text);text-decoration:none}
a.pg:hover{color:var(--text);background:#F8F9FB}
.pg.on,a.pg.on:hover{background:var(--nav-on);color:#FFFFFF;border-color:var(--nav-on)}
.pg.off{color:#9AA3B1;border-color:var(--line-soft)}
@media (max-width:640px){.tsearch{max-width:none;flex:1 1 100%}.toolbar .sel{flex:1 1 140px}}

/* ── 업무 모달 (SlotAdd · SlotEdit · Extend · Refund · BulkEdit) ── */
.modal-slot{max-width:560px}
.modal-ext{max-width:640px}
.modal-wide{max-width:720px}
.tag{font-size:12px;font-weight:600;color:var(--nav-on);background:#E6ECF5;border-radius:6px;padding:2px 6px;margin-right:6px}
.panel{background:#F3F7FB;border:1px solid #DCE5EF;border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:14px}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
@media (max-width:520px){.grid2{grid-template-columns:minmax(0,1fr)}}
.toggle{position:relative;display:flex;align-items:center;gap:10px;height:42px;cursor:pointer}
.toggle input{position:absolute;opacity:0;width:44px;height:26px;margin:0;cursor:pointer}
.sw{width:44px;height:26px;border-radius:999px;background:#CBD2DB;position:relative;flex:0 0 auto;transition:background .15s}
.sw::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#FFFFFF;transition:left .15s}
.toggle input:checked+.sw{background:var(--primary)}
.toggle input:checked+.sw::after{left:21px}
.toggle input:focus-visible+.sw{outline:3px solid var(--focus);outline-offset:2px}
.toggle input:disabled+.sw{background:#E3E6EB}
.toggle input:disabled~.swt{color:#7A8494}
.toggle:has(input:disabled){cursor:not-allowed}
.swt{font-size:14px;font-weight:600;color:var(--muted)}
.toggle input:checked~.swt{color:#5B21B6}
@media (prefers-reduced-motion: reduce){.sw,.sw::after{transition:none}}
.help{display:flex;gap:8px;background:#F5F0FE;border:1px solid #E1D5FB;border-radius:8px;padding:10px 12px;font-size:12.5px;color:#3B2470;line-height:1.55}
.help>svg{flex:0 0 auto;margin-top:2px}
.sum{font-size:13px;color:var(--text);background:#FFFFFF;border:1px dashed var(--field);border-radius:8px;padding:10px 12px;line-height:1.55}
.ro{background:#F1F3F6;color:#334155}
.info{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;background:#F8F9FB;border:1px solid var(--line);border-radius:10px;padding:12px 14px}
.info div{display:flex;flex-direction:column;gap:2px;font-size:13px;min-width:0}
.info>div>span:first-child{font-size:11.5px;color:var(--muted)}
@media (max-width:640px){.info{grid-template-columns:repeat(2,minmax(0,1fr))}}
.who{font-size:11px;font-weight:600;color:var(--nav-on);background:#E6ECF5;border-radius:4px;padding:1px 6px;margin-left:6px}
textarea.ta{height:76px;padding:10px 12px;resize:vertical;line-height:1.5}
.thumb{display:flex;gap:12px;align-items:center}
.thph{width:72px;height:72px;border-radius:8px;background:#EEF1F5;border:1px dashed var(--field);display:flex;align-items:center;justify-content:center;color:#5B6576;font-size:11px;flex:0 0 auto;text-align:center}
.extrow{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-end}
.w140{width:140px}
.quick{display:flex;gap:6px;flex-wrap:wrap}
.qd{height:36px;padding:0 12px;border-radius:999px;border:1px solid var(--field);background:#FFFFFF;font:inherit;font-size:13px;cursor:pointer;color:var(--text)}
.qd.on{background:var(--nav);color:#FFFFFF;border-color:var(--nav)}
.qd:disabled{cursor:not-allowed;opacity:.6}
.tbox{border:1px solid var(--line);border-radius:10px}
.mtbl th{padding:10px 12px}
.mtbl td{padding:10px 12px}
.mtbl tr:last-child td{border-bottom:0}
td.new,.new{font-family:var(--mono);font-size:12.5px;color:var(--ok-ink);font-weight:600}
tr.off td{color:#5B6576;background:#FAFAFB}
.note{display:flex;gap:8px;background:#F3F7FB;border:1px solid #DCE5EF;border-radius:8px;padding:10px 12px;font-size:12.5px;color:var(--nav-on);line-height:1.55}
.note>svg,.warn>svg{flex:0 0 auto;margin-top:2px}
.convert{display:flex;flex-direction:column;gap:10px;align-items:flex-end;padding:0 24px 20px;margin:0}
.who2{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:13px;color:#334155;align-items:center}
.who2 b{color:var(--text)}
.calc{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.cell{border:1px solid var(--line);border-radius:10px;padding:12px 14px;display:flex;flex-direction:column;gap:4px}
.cell span{font-size:12px;color:var(--muted)}
.cell b{font-family:var(--mono);font-size:20px;font-weight:500}
.cell.hl{background:#FDF0F0;border-color:#F5C9C9}
.cell.hl b{color:#991B1B}
.rbar{display:block;width:100%;height:10px;border:0;border-radius:999px;background:#F1D4D4;overflow:hidden;appearance:none;-webkit-appearance:none}
.rbar::-webkit-progress-bar{background:#F1D4D4;border-radius:999px}
.rbar::-webkit-progress-value{background:#94A3B8;border-radius:999px}
.rbar::-moz-progress-bar{background:#94A3B8;border-radius:999px}
.legend{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);margin-top:4px}
.check{display:flex;align-items:center;gap:8px;font-size:14px;min-height:40px}
.check input{width:18px;height:18px;margin:0;flex:0 0 auto}
.selbox{font-size:13px;color:#334155;background:#F8F9FB;border:1px solid var(--line);border-radius:10px;padding:10px 12px;line-height:1.6}
.brow{display:grid;grid-template-columns:150px minmax(0,1fr);gap:12px;align-items:center;padding:12px;border:1px solid var(--line);border-radius:10px}
.brow:has(input[data-bulk-toggle]:checked){border-color:var(--primary);background:#FFF8F2}
.brow label.t{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;min-height:40px}
.brow label.t input{width:18px;height:18px;margin:0}
@media (max-width:520px){.brow{grid-template-columns:minmax(0,1fr)}}

/* ── 엑셀 업로드 수정 — 전체 화면 대화상자 (ExcelUpload) ── */
.scrim:has(.xl-full){padding:0}
.modal.xl-full{max-width:none;min-height:100vh;min-height:100dvh;border-radius:0}
.fh{display:flex;flex-wrap:wrap;align-items:center;gap:16px;padding:18px 28px;border-bottom:1px solid var(--line)}
.fh h2{margin:0;font-size:20px;letter-spacing:-0.3px;flex:1 1 auto}
.steps{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:0;padding:0}
.steps li{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--muted);padding:6px 12px;border-radius:999px;background:#F1F3F6}
.steps li.done{background:#E3F4E8;color:var(--ok-ink)}
.steps li.on{background:var(--nav);color:#FFFFFF}
.xlbody{display:flex;flex-direction:column;flex:1 1 auto;margin:0}
.fb{padding:22px 28px;display:flex;flex-direction:column;gap:16px;flex:1 1 auto}
.xlstep{display:flex;flex-direction:column;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:12px;padding:18px 20px;max-width:760px}
.xlstep h3{margin:0;font-size:16px}
.xlstep p{margin:0;font-size:13px;line-height:1.6}
.input.file{height:auto;padding:9px 12px}
.fb .file{display:flex;flex-wrap:wrap;align-items:center;gap:10px;font-size:13px;color:#334155}
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}
.tile{border:1px solid var(--line);border-radius:10px;padding:12px 16px;display:flex;flex-direction:column;gap:4px}
.tile span{font-size:12.5px;color:var(--muted)}
.tile b{font-family:var(--mono);font-size:24px;font-weight:500}
.tile b.tword{font-size:14px;font-family:var(--font);font-weight:600}
.tile-ok b{color:var(--ok-ink)}
.tile-err{border-color:#F5C2C2;background:#FDF5F5}
.tile-err b{color:#991B1B}
.xltabs{padding:0}
.xltbl{min-width:980px}
.xltbl td{vertical-align:top;white-space:normal}
.xltbl td.old{color:#5B6576;text-decoration:line-through}
tr.err td{background:#FDF5F5}
td.reason{color:#991B1B;font-weight:600}
.xlnote{font-size:12.5px;margin:0}
.ff{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:16px 28px;border-top:1px solid var(--line);background:#FFFFFF}
@media (max-width:640px){.fh,.fb,.ff{padding-left:16px;padding-right:16px}}
/* 수정 칸은 오른쪽에 붙는다 — 넓은 표가 가로로 밀려도 버튼은 늘 보인다(사용자 관리 표와 같은 방식) */
.stbl td:last-child,.stbl th:last-child{position:sticky;right:0;background:#FFFFFF;box-shadow:-10px 0 10px -10px rgba(15,27,45,0.22)}
.stbl th:last-child{background:#F8F9FB}

/* ── 히스토리(US-006 · 시안 AdminHistory · History · AgencyHistory · SellerHistory) ── */
.hform{display:flex;flex-direction:column;gap:18px;margin:0}
.hfilters{display:flex;flex-wrap:wrap;gap:16px 20px;padding:16px}
.hfg{display:flex;flex-direction:column;gap:6px;margin:0;padding:0;border:0;min-width:0}
.hfg>span,.hfg>legend{font-size:12px;font-weight:600;color:#475569;padding:0}
.hdates{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.hdates .input{width:auto;height:40px;font-size:13px}
.hfilters .sel{min-width:160px}
.hseg{display:flex;border:1px solid var(--field);border-radius:8px;overflow:hidden;flex-wrap:wrap}
.hseg a{display:inline-flex;align-items:center;height:40px;padding:0 12px;border-left:1px solid var(--field);background:#FFFFFF;font-size:13px;color:var(--text);text-decoration:none}
.hseg a:first-child{border-left:0}
.hseg a:hover{background:#F8F9FB;color:var(--text)}
.hseg a.on,.hseg a.on:hover{background:var(--nav);color:#FFFFFF}
.hbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--line-soft)}
.hbar b{font-size:15px}
.hbar small{font-size:12px}
.hbar .search{min-width:200px}
.htbl{min-width:1080px}
.htbl-admin{min-width:1360px}
.htbl td,.htbl th{padding-left:10px;padding-right:10px}
.ev{display:inline-flex;font-size:12px;font-weight:600;border-radius:999px;padding:3px 9px}
.e-new{background:#E3EEFD;color:#1E3A8A}
.e-ext{background:#E3F4E8;color:#14532D}
.e-ref{background:#FDE8E8;color:#991B1B}
.e-upd{background:#EEF1F5;color:#334155}
.e-conv{background:#EFE8FD;color:#5B21B6}
.ev+.chip{margin-left:4px}
@media (max-width:640px){.hfilters .sel{min-width:0;flex:1 1 140px}.hfg{flex:1 1 100%}.hbar .search{flex:1 1 100%;min-width:0}}

/* ── 관리자·개발자 화면(US-007 · 시안 AdminDash · AdminSettings · AuditLog · RequestLog · AdminAccounts · DevSystem · Jobs · DesignSystem) ── */
.two{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(420px,100%),1fr));gap:18px}
.ch{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;padding:14px 16px;border-bottom:1px solid var(--line-soft)}
.ch h2{margin:0;font-size:15px}
.ch p{margin:4px 0 0;font-size:12.5px;color:var(--muted);line-height:1.5}
.ch>span{font-size:12px;color:var(--muted)}
.ch a{font-size:13px}
.row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:11px 16px;border-bottom:1px solid var(--line-soft);font-size:13px;margin:0}
.row:last-child{border-bottom:0}
.dtbl{min-width:760px}
.settbl{min-width:720px}
.set{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,340px);gap:12px 24px;padding:16px;border-bottom:1px solid var(--line-soft)}
.set:last-child{border-bottom:0}
.set h3{margin:0 0 4px;font-size:14px}
.set p{margin:0;font-size:13px;color:#334155;line-height:1.6}
.set details{margin-top:8px;font-size:12.5px;color:var(--muted)}
.set details p{margin-top:6px;font-size:12.5px}
.meta{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:8px;font-size:12px;color:var(--muted)}
.ctrl{display:flex;flex-direction:column;gap:6px}
.now{font-size:12px;color:var(--ok-ink)}
.now.warn-t{color:#8A3A00}
.hint.warn-t{color:#8A3A00;font-weight:600}
.checks{display:flex;flex-wrap:wrap;gap:8px 16px;min-height:42px;align-items:center}
.checks label{display:flex;align-items:center;gap:6px;font-size:14px}
.checks input{width:18px;height:18px;margin:0}
.set-note{margin:0 16px 16px}
@media (max-width:760px){.set{grid-template-columns:minmax(0,1fr)}}
.act{display:inline-flex;font-size:12px;font-weight:600;border-radius:999px;padding:3px 9px}
.a-create{background:#E3EEFD;color:#1E3A8A}
.a-update{background:#EEF1F5;color:#334155}
.a-danger{background:#FDE8E8;color:#991B1B}
.a-sec{background:#EFE8FD;color:#5B21B6}
.atbl{min-width:1080px}
.atbl td.what{white-space:normal;min-width:260px;max-width:420px}
.rtbl{min-width:1040px}
.s2{color:var(--ok-ink)}.s3{color:#334155}.s4{color:#8A3A00;font-weight:600}.s5{color:#991B1B;font-weight:600}
.bot{display:inline-flex;font-size:12px;font-weight:600;border-radius:6px;padding:2px 8px;background:#EEF1F5;color:#334155}
.verify-tag{display:inline-flex;font-size:12px;font-weight:600;border-radius:6px;padding:2px 8px;background:#E6ECF5;color:var(--nav-on)}
.r-dev{background:#E3EEFD;color:#1E3A8A}
.r-admin{background:#FFF0E0;color:#7C3A12}
.ktbl{min-width:900px}
.ktbl td:not(:first-child){white-space:normal;overflow-wrap:anywhere}.ktbl td:last-child{min-width:220px}   /* 상태 설명·인프라 값 문장이 한 줄로 카드 밖까지 뻗지 않게(US-010) */
.unk{display:inline-flex;font-size:12px;font-weight:600;border-radius:6px;padding:2px 8px;background:#EEF1F5;color:#334155}
.jst{display:inline-flex;font-size:12px;font-weight:600;border-radius:999px;padding:3px 9px}
.jst-ok{background:#E3F4E8;color:var(--ok-ink)}
.jst-fail{background:#FDE8E8;color:#991B1B}
.jst-idle{background:#EEF1F5;color:#334155}
.jst-run{background:#FEF0DC;color:#8A3A00}
.jtbl{min-width:980px}
.jtbl td.err{white-space:normal;min-width:240px;max-width:460px;overflow-wrap:anywhere}
.jtbl td.jname{white-space:normal;min-width:260px;max-width:420px;overflow-wrap:anywhere}   /* 작업 설명이 한 줄로 뻗어 주기·결과 칸이 화면 밖으로 밀리지 않게(US-010) */
.runsteps{margin:0;padding:14px 16px 16px 36px;display:flex;flex-direction:column;gap:8px;font-size:13.5px;line-height:1.6}
.relbox{padding:12px 16px 16px}
/* RelScope 토큰 연결(그 README §4) — 이 사이트는 라이트만 있다. 연결하지 않으면 RelScope 가 OS 다크를 따라 밝은 화면 안에
   검은 상자로 그려진다(US-010 실측 — OS 다크에서 배경 rgb(15,20,32)). 색은 전부 사이트 토큰·상태 배지 색으로 고정한다. */
.relscope{
  --rm-bg:#FFFFFF; --rm-surface:#FFFFFF; --rm-surface-2:var(--ground);
  --rm-border:var(--line); --rm-border-strong:var(--field);
  --rm-text:var(--text); --rm-text-muted:var(--muted);
  --rm-accent:var(--link); --rm-on-accent:#FFFFFF;
  --rm-ok:var(--ok); --rm-ok-soft:#E3F4E8; --rm-warn:#8A3A00; --rm-warn-soft:#FEF0DC;
  --rm-fail:var(--danger); --rm-fail-soft:#FDE8E8; --rm-idle:var(--muted); --rm-idle-soft:#EEF1F5;
  --rm-up:var(--primary-hover); --rm-up-soft:#FDE7D6; --rm-down:var(--link); --rm-down-soft:#DBE6FB;
  --rm-font:var(--font); --rm-font-mono:var(--mono);
  --rm-focus-ring:0 0 0 3px var(--focus);
}
.cmd{display:block;font-family:var(--mono);font-size:12.5px;background:#F1F3F6;border:1px solid var(--line);border-radius:8px;padding:10px 12px;overflow-x:auto;white-space:pre}
/* 디자인 시스템 — 색 토큰 견본(인라인 style 금지라 토큰마다 클래스 — tests 가 :root 토큰 전부에 견본 클래스가 있는지 잰다) */
.dsbody{padding:16px;display:flex;flex-direction:column;gap:14px}
.dsrow{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.toks{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px}
.tok{display:flex;flex-direction:column;gap:6px;font-size:12px;margin:0}
.tok i{display:block;height:44px;border-radius:8px;border:1px solid var(--line)}
.tok b{font-size:12.5px}
.tok-nav{background:var(--nav)}.tok-nav-hover{background:var(--nav-hover)}.tok-nav-on{background:var(--nav-on)}.tok-nav-text{background:var(--nav-text)}
.tok-nav-muted{background:var(--nav-muted)}.tok-nav-line{background:var(--nav-line)}.tok-brand-ink{background:var(--brand-ink)}.tok-brand-red{background:var(--brand-red)}
.tok-primary{background:var(--primary)}.tok-primary-hover{background:var(--primary-hover)}.tok-current{background:var(--current)}.tok-text{background:var(--text)}
.tok-muted{background:var(--muted)}.tok-ground{background:var(--ground)}.tok-line{background:var(--line)}.tok-line-soft{background:var(--line-soft)}
.tok-field{background:var(--field)}.tok-field-soft{background:var(--field-soft)}.tok-danger{background:var(--danger)}.tok-ok{background:var(--ok)}
.tok-ok-ink{background:var(--ok-ink)}.tok-focus{background:var(--focus)}.tok-link{background:var(--link)}.tok-link-hover{background:var(--link-hover)}
.type{display:flex;flex-direction:column;gap:10px}
.type div{display:grid;grid-template-columns:110px minmax(0,1fr);gap:12px;align-items:baseline}
.ty-24{font-size:24px;font-weight:700;letter-spacing:-0.4px}.ty-20{font-size:20px;font-weight:600}.ty-15{font-size:15px;font-weight:600}.ty-13{font-size:13px}
.btn-primary.is-hover{background:var(--primary-hover)}
.btn.is-focus{outline:3px solid var(--focus);outline-offset:2px}
.dsforms{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}
.dstoasts{display:flex;flex-wrap:wrap;gap:10px}
.dstoasts .toast{position:static}

/* ── 화면 틀 보강 · 도움말 · 개인정보 처리방침 · 오류 상태(US-009) ── */
.mbadge{margin-left:auto;font-size:11px;font-weight:600;color:#8A3A00;background:#FEF0DC;border-radius:10px;padding:1px 7px;white-space:nowrap}
.docbody{padding:4px 16px 14px;font-size:13.5px;line-height:1.75}
.docbody h3{margin:14px 0 2px;font-size:14px}
.docbody p{margin:0 0 6px}
.ptbl{min-width:860px}
.ptbl td{white-space:normal;vertical-align:top;min-width:120px;line-height:1.6}
.eacts{display:flex;gap:6px}
.eacts form{margin:0}
