:root{
  --v3-sp-1:4px; --v3-sp-2:8px; --v3-sp-3:12px; --v3-sp-4:16px; --v3-sp-5:24px; --v3-sp-6:32px; --v3-sp-7:48px;
  --v3-gap-title:var(--v3-sp-2); --v3-gap-item:var(--v3-sp-2); --v3-gap-field:var(--v3-sp-4); --v3-gap-btns:var(--v3-sp-4);
  --v3-gap-card:var(--v3-sp-4); --v3-gap-block:var(--v3-sp-5); --v3-gap-sec:var(--v3-sp-7);
  --v3-pad-box:var(--v3-sp-4); --v3-pad-box-lg:var(--v3-sp-5); --v3-pad-row:var(--v3-sp-3);
}
:root{
  --zb-neutral-bg:#eef2f8; --zb-neutral-fg:#3a475e;
  --zb-info-bg:#e3ecfb;    --zb-info-fg:#17498f;
  --zb-success-bg:#dcf3e6; --zb-success-fg:#0b6b3a;
  --zb-warning-bg:#fdecd2; --zb-warning-fg:#8a4a00;
  --zb-danger-bg:#fde4e1;  --zb-danger-fg:#a8201a;
  --zb-accent-bg:#0a1a3a;  --zb-accent-fg:#ffffff;
  --zb-purple-bg:#ece6ff;  --zb-purple-fg:#4b2bb8;
  --zb-chip-bg:#ffffff; --zb-chip-fg:#2c3a52; --zb-chip-line:#cbd5e4; --zb-chip-hover:#eef2f8;
  --zb-chip-on-bg:#0c1628; --zb-chip-on-fg:#ffffff;
  --zb-btn-pri:#1f6ad0; --zb-btn-pri-h:#1a5bb5; --zb-btn-on-pri:#ffffff;
  --zb-btn-danger:#b42318; --zb-btn-danger-h:#912018;
  --zb-av-1:#1f6ad0; --zb-av-2:#0b7a4a; --zb-av-3:#6a4bff; --zb-av-4:#b4540a; --zb-av-5:#b4236b;
  --zb-f:"Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo",sans-serif;
}
:root[data-theme="dark"]{
  --zb-neutral-bg:#1f2c46; --zb-neutral-fg:#d0dbee;
  --zb-info-bg:#16294f;    --zb-info-fg:#b4cff7;
  --zb-success-bg:#0e3321; --zb-success-fg:#86e3ae;
  --zb-warning-bg:#3a2708; --zb-warning-fg:#ffc98a;
  --zb-danger-bg:#3d1512;  --zb-danger-fg:#ffaaa2;
  --zb-accent-bg:#cfe2ff;  --zb-accent-fg:#0a1a3a;
  --zb-purple-bg:#271c52;  --zb-purple-fg:#cdbdff;
  --zb-chip-bg:#0e1729; --zb-chip-fg:#d0dbee; --zb-chip-line:#2b3b5c; --zb-chip-hover:#16233d;
  --zb-chip-on-bg:#edf2fb; --zb-chip-on-fg:#07101f;
  --zb-btn-pri:#5b9cf0; --zb-btn-pri-h:#86b6f5; --zb-btn-on-pri:#07101f;
  --zb-btn-danger:#ff8f86; --zb-btn-danger-h:#ffb0a9;
}

/* 배지: 높이 24 · 아이콘 14 · 12px/600 · 반경 6 */
.zb-badge{display:inline-flex;align-items:center;gap:4px;height:24px;padding:0 8px;font:600 12px/1 var(--zb-f);letter-spacing:0;border-radius:6px;border:0;white-space:nowrap;vertical-align:middle;box-sizing:border-box;flex:none;background:var(--zb-neutral-bg);color:var(--zb-neutral-fg);text-decoration:none}
.zb-badge svg{width:14px;height:14px;flex:none;stroke:currentColor;fill:none;stroke-width:2}
.zb-badge.zb-neutral{background:var(--zb-neutral-bg);color:var(--zb-neutral-fg)}
.zb-badge.zb-info{background:var(--zb-info-bg);color:var(--zb-info-fg)}
.zb-badge.zb-success{background:var(--zb-success-bg);color:var(--zb-success-fg)}
.zb-badge.zb-warning{background:var(--zb-warning-bg);color:var(--zb-warning-fg)}
.zb-badge.zb-danger{background:var(--zb-danger-bg);color:var(--zb-danger-fg)}
.zb-badge.zb-accent{background:var(--zb-accent-bg);color:var(--zb-accent-fg)}
.zb-badge.zb-purple{background:var(--zb-purple-bg);color:var(--zb-purple-fg)}
.zb-badge.zb-dot:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.zb-badge.zb-on-img{background:#0a1a3a;color:#fff}
/* 배지 줄: 간격 6 · 제목까지 12 */
.zb-brow{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.zb-brow+h1,.zb-brow+h2,.zb-brow+h3,.zb-brow+.zb-title{margin-top:12px}

/* 칩(필터): 높이 36 · 14px/600 · 알약형 */
.zb-chips{display:flex;gap:8px;flex-wrap:wrap}
.zb-chip{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 14px;font:600 14px/1 var(--zb-f);border-radius:999px;border:1px solid var(--zb-chip-line);background:var(--zb-chip-bg);color:var(--zb-chip-fg);cursor:pointer;white-space:nowrap;text-decoration:none;box-sizing:border-box}
.zb-chip:hover{background:var(--zb-chip-hover);color:var(--zb-chip-fg)}
.zb-chip.is-on,.zb-chip[aria-pressed="true"],.zb-chip[aria-current]{background:var(--zb-chip-on-bg);border-color:var(--zb-chip-on-bg);color:var(--zb-chip-on-fg)}
.zb-chip em{font-style:normal;font-weight:700;opacity:.75}

/* 버튼: sm 40 · md 50 · lg 58 */
.zb-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:50px;padding:0 24px;border-radius:12px;font:700 15px/1 var(--zb-f);border:1px solid transparent;cursor:pointer;white-space:nowrap;text-decoration:none;box-sizing:border-box;transition:background .15s,color .15s,border-color .15s;background:var(--zb-chip-bg);color:var(--zb-chip-fg);border-color:var(--zb-chip-line)}
.zb-btn:hover{background:var(--zb-chip-hover);color:var(--zb-chip-fg)}
.zb-btn:active{transform:translateY(1px)}
.zb-btn:disabled,.zb-btn[aria-disabled="true"]{opacity:.5;cursor:not-allowed}
.zb-btn svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2}
.zb-btn-sm{height:40px;padding:0 16px;font-size:14px;border-radius:10px}
.zb-btn-lg{height:58px;padding:0 30px;font-size:16px}
.zb-btn-block{display:flex;width:100%}
.zb-btn.zb-btn-pri{background:var(--zb-btn-pri);border-color:var(--zb-btn-pri);color:var(--zb-btn-on-pri)}
.zb-btn.zb-btn-pri:hover{background:var(--zb-btn-pri-h);border-color:var(--zb-btn-pri-h);color:var(--zb-btn-on-pri)}
.zb-btn.zb-btn-line{background:transparent;border-color:var(--zb-chip-line);color:var(--zb-chip-fg)}
.zb-btn.zb-btn-line:hover{background:var(--zb-chip-hover);color:var(--zb-chip-fg)}
.zb-btn.zb-btn-ghost{background:transparent;border-color:transparent;color:var(--zb-chip-fg)}
.zb-btn.zb-btn-ghost:hover{background:var(--zb-chip-hover);color:var(--zb-chip-fg)}
.zb-btn.zb-btn-danger{background:var(--zb-btn-danger);border-color:var(--zb-btn-danger);color:#fff}
.zb-btn.zb-btn-danger:hover{background:var(--zb-btn-danger-h);border-color:var(--zb-btn-danger-h);color:#fff}
:root[data-theme="dark"] .zb-btn.zb-btn-danger,:root[data-theme="dark"] .zb-btn.zb-btn-danger:hover{color:#1d0806}
.zb-btn.zb-btn-w{background:#fff;border-color:#fff;color:#0a1a3a}
.zb-btn.zb-btn-w:hover{background:#dbe7f8;border-color:#dbe7f8;color:#0a1a3a}
.zb-btn.zb-btn-wl{background:rgba(255,255,255,.04);border-color:rgba(255,255,255,.35);color:#fff}
.zb-btn.zb-btn-wl:hover{background:rgba(255,255,255,.16);color:#fff}
.zb-btns{display:flex;gap:10px;flex-wrap:wrap;align-items:center}

/* 아바타: xs 24 · sm 32 · md 40 · xl 120 (모바일 96) */
.zb-av{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:var(--zb-av-1);color:#fff;font:700 15px/1 var(--zb-f);overflow:hidden;flex:none;vertical-align:middle}
.zb-av img{width:100%;height:100%;object-fit:cover;display:block}
.zb-av-xs{width:24px;height:24px;font-size:11px}
.zb-av-sm{width:32px;height:32px;font-size:13px}
.zb-av-xl{width:120px;height:120px;font-size:44px}
@media (max-width:860px){.zb-av-xl{width:96px;height:96px;font-size:36px}}
.zb-av.g2{background:var(--zb-av-2)}.zb-av.g3{background:var(--zb-av-3)}.zb-av.g4{background:var(--zb-av-4)}.zb-av.g5{background:var(--zb-av-5)}

/* 아이콘 버튼 */
.zb-ib{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:10px;border:1px solid var(--zb-chip-line);background:var(--zb-chip-bg);color:var(--zb-chip-fg);cursor:pointer;padding:0;text-decoration:none;box-sizing:border-box}
.zb-ib:hover{background:var(--zb-chip-hover);color:var(--zb-chip-fg)}
.zb-ib svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.8}

/* 카드 · 패널 */
.zb-card{background:var(--v3-surf,#fff);border:1px solid var(--v3-line,#dfe5ef);border-radius:16px;box-shadow:var(--v3-sh-1);color:var(--v3-tx,#0c1628)}
.zb-panel{background:var(--v3-surf,#fff);border:1px solid var(--v3-line,#dfe5ef);border-radius:16px;padding:clamp(20px,3vw,32px);color:var(--v3-tx,#0c1628);box-sizing:border-box}
.zb-title{margin:0;font-size:clamp(26px,3vw,36px);font-weight:800;letter-spacing:-.035em;line-height:1.2;color:var(--v3-tx,#0c1628)}
.zb-sub{margin:var(--v3-gap-title) 0 0;color:var(--v3-tx-2,#435069);font-size:15px}
.zb-muted{color:var(--v3-tx-3,#56627a)}

/* 폼 */
.zb-field{display:flex;flex-direction:column;gap:var(--v3-gap-title)}
.zb-label{font-size:14px;font-weight:700;color:var(--v3-tx,#0c1628)}
.zb-req{font-style:normal;color:var(--v3-err,#a8201a);margin-left:2px}
.zb-input{width:100%;height:50px;padding:0 14px;border:1px solid var(--v3-line-2,#cbd5e4);border-radius:10px;background:var(--v3-surf,#fff);color:var(--v3-tx,#0c1628);font:500 15px/1.4 var(--zb-f);box-sizing:border-box;outline:0}
textarea.zb-input{height:auto;min-height:130px;padding:12px 14px;line-height:1.6;resize:vertical}
select.zb-input{appearance:auto}
input[type="file"].zb-input{height:auto;padding:10px}
.zb-input::placeholder{color:var(--v3-tx-3,#56627a)}
.zb-input:focus{border-color:var(--v3-pri,#1f6ad0);box-shadow:0 0 0 3px rgba(31,106,208,.18)}
.zb-help{margin:0;font-size:13px;color:var(--v3-tx-3,#56627a)}
.zb-err{margin:0;font-size:13px;color:var(--v3-err,#a8201a)}
.zb-check{display:inline-flex;align-items:flex-start;gap:8px;font-size:14px;color:var(--v3-tx-2,#435069);cursor:pointer;line-height:1.5}
.zb-check input{width:18px;height:18px;margin:1px 0 0;accent-color:var(--v3-pri,#1f6ad0);flex:none}
.zb-choices{display:flex;flex-wrap:wrap;gap:8px 16px}

/* 탭 · 표 · 빈 상태 · 알림 · 쪽번호 */
.zb-tabs{display:flex;gap:4px;border-bottom:1px solid var(--v3-line,#dfe5ef);overflow-x:auto;scrollbar-width:none}
.zb-tabs a,.zb-tabs button{display:inline-flex;align-items:center;gap:6px;height:46px;padding:0 14px;border:0;border-bottom:2px solid transparent;margin-bottom:-1px;background:none;color:var(--v3-tx-2,#435069);font:600 15px var(--zb-f);text-decoration:none;white-space:nowrap;cursor:pointer}
.zb-tabs a:hover,.zb-tabs button:hover{color:var(--v3-tx,#0c1628)}
.zb-tabs .is-on,.zb-tabs [aria-current]{color:var(--v3-tx,#0c1628);border-color:var(--v3-pri,#1f6ad0)}
.zb-table{width:100%;border-collapse:collapse;font-size:14px}
.zb-table th,.zb-table td{padding:12px 14px;border-bottom:1px solid var(--v3-line,#dfe5ef);text-align:left;vertical-align:middle}
.zb-table th{font-weight:700;color:var(--v3-tx-2,#435069);background:var(--v3-surf-2,#eef2f8)}
.zb-empty{padding:56px 20px;text-align:center;color:var(--v3-tx-3,#56627a);font-size:15px}
.zb-alert{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:10px;font-size:14px;background:var(--zb-info-bg);color:var(--zb-info-fg)}
.zb-alert.zb-success{background:var(--zb-success-bg);color:var(--zb-success-fg)}
.zb-alert.zb-warning{background:var(--zb-warning-bg);color:var(--zb-warning-fg)}
.zb-alert.zb-danger{background:var(--zb-danger-bg);color:var(--zb-danger-fg)}
.zb-pager{display:flex;justify-content:center;gap:6px;flex-wrap:wrap;margin:28px 0 0}
.zb-pager a,.zb-pager strong,.zb-pager span{display:inline-flex;align-items:center;justify-content:center;min-width:40px;height:40px;padding:0 10px;border-radius:10px;border:1px solid var(--zb-chip-line);background:var(--zb-chip-bg);color:var(--zb-chip-fg);font:600 14px var(--zb-f);text-decoration:none;box-sizing:border-box}
.zb-pager a:hover{background:var(--zb-chip-hover);color:var(--zb-chip-fg)}
.zb-pager strong,.zb-pager .is-on{background:var(--zb-chip-on-bg);border-color:var(--zb-chip-on-bg);color:var(--zb-chip-on-fg)}

.zb-err{display:flex;align-items:flex-start;gap:6px;font-weight:600}
.zb-err:before{content:"!";display:inline-flex;align-items:center;justify-content:center;flex:none;width:16px;height:16px;margin-top:1px;border-radius:50%;background:var(--zb-danger-fg);color:var(--v3-surf,#fff);font:800 11px/1 var(--zb-f)}
.zb-input[aria-invalid="true"],.zb-field.is-bad .zb-input{border-color:var(--zb-danger-fg);box-shadow:0 0 0 3px rgba(168,32,26,.12)}
.zb-toasts{position:fixed;left:50%;bottom:24px;z-index:10000;display:flex;flex-direction:column;align-items:center;gap:8px;transform:translateX(-50%);width:min(520px,calc(100vw - 32px));pointer-events:none}
.zb-toast{display:flex;align-items:flex-start;gap:10px;width:100%;padding:14px 16px;border-radius:14px;background:#0c1628;color:#fff;font:500 14.5px/1.55 var(--zb-f);box-shadow:0 18px 40px -10px rgba(0,0,0,.45);pointer-events:auto;animation:zbT .22s ease-out;white-space:pre-line}
:root[data-theme="dark"] .zb-toast{background:#edf2fb;color:#07101f}
.zb-toast:before{content:"";flex:none;width:8px;height:8px;margin-top:7px;border-radius:50%;background:#5b9cf0}
.zb-toast button{margin-left:auto;flex:none;border:0;background:none;color:inherit;opacity:.75;font:700 13px var(--zb-f);cursor:pointer;padding:2px 4px}
.zb-toast button:hover{opacity:1}
@keyframes zbT{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.zb-toast{animation:none}}
#zittme-adminbar{left:auto!important;right:16px!important;bottom:16px!important;z-index:60!important;padding:4px!important;gap:2px!important;opacity:.82;transition:opacity .15s}
#zittme-adminbar:hover,#zittme-adminbar:focus-within,#zittme-adminbar.is-open{opacity:1}
#zittme-adminbar .zab-gear{width:32px!important;height:32px!important}
#zittme-adminbar .zab-btn{display:none!important}
#zittme-adminbar:hover .zab-btn,#zittme-adminbar:focus-within .zab-btn,#zittme-adminbar.is-open .zab-btn{display:inline-flex!important}
@media (max-width:720px){#zittme-adminbar{right:10px!important;bottom:10px!important}}
