/* 큐시트 백오피스 — 디자인 캔버스(숏폼 백오피스) 토큰 그대로 */
:root{
  --ink:#0F1216; --ink-2:#1A1E25; --ink-3:#232830; --ink-4:#2B3038; --slate:#3D434C; --gray:#5E6672; --gray-2:#8A93A0; --gray-3:#9AA2AD;
  --line:#D5D9DF; --line-2:#E2E5EA; --line-3:#E6E9ED; --bg:#ECEEF1; --bg-2:#EEF0F3; --bg-3:#F2F4F6; --white:#FFFFFF;
  --orange:#E8541C; --orange-bg:#FCE7DD; --orange-ink:#9A300A; --orange-soft:#F6C9B6; --orange-light:#FFB08A;
  --blue:#2747F5; --blue-ink:#1A33B8; --blue-bg:#E3E8FE; --blue-soft:#C9D1FB; --blue-dot:#5B7BFF; --blue-light:#9DB1FF;
  --yellow:#FFD84D; --sky:#8FD3FF;
  --font:'Gothic A1','Apple SD Gothic Neo','Malgun Gothic',sans-serif; --display:'Black Han Sans',sans-serif; --mono:'JetBrains Mono',monospace;
}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font-family:var(--font);font-size:15px;line-height:1.55}
a{color:inherit}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.wrap{max-width:1360px;margin:0 auto;padding:0 40px}
@media (max-width:720px){.wrap{padding:0 16px}}
.main{padding:40px 40px 72px;display:flex;flex-direction:column;gap:28px}
@media (max-width:720px){.main{padding:24px 16px 56px}}
.mono{font-family:var(--mono)}
.display{font-family:var(--display);font-weight:400}
.inline{display:inline}
.linkbtn{background:none;border:0;padding:0;font:inherit;color:inherit;cursor:pointer;text-decoration:underline}
.muted{color:var(--gray)}
.small{font-size:12px}
.hidden{display:none !important}

/* 상단 바 */
.topbar{background:var(--ink);color:var(--white)}
.topbar-in{min-height:64px;display:flex;flex-wrap:wrap;align-items:center;gap:12px 32px}
.brand{display:flex;align-items:baseline;gap:10px;text-decoration:none}
.brand-ko{font-family:var(--display);font-size:26px;letter-spacing:-0.01em}
.brand-en{font-family:var(--mono);font-size:11px;letter-spacing:.14em;color:var(--gray-3)}
.nav{display:flex;flex-wrap:wrap;gap:4px;flex:1 1 520px}
.nav a{padding:20px 12px 18px;text-decoration:none;font-weight:500;font-size:14px;color:#C3C9D2;border-bottom:3px solid transparent;display:flex;gap:6px;align-items:center}
.nav a[aria-current=page]{font-weight:700;color:var(--white);border-bottom-color:var(--white)}
.nav-badge{font-family:var(--mono);font-size:11px;font-weight:700;background:var(--orange);color:var(--ink);border-radius:4px;padding:1px 6px}
.topbar-right{display:flex;align-items:center;gap:16px;font-size:12px;color:#C3C9D2}
.dot-line{display:flex;align-items:center;gap:8px}
.dot{width:8px;height:8px;border-radius:50%;display:inline-block}
.dot-blue{background:var(--blue-dot)} .dot-orange{background:var(--orange)}
.pulse{animation:tally 1.6s ease-in-out infinite}
@keyframes tally{0%,100%{opacity:1}50%{opacity:.3}}
@media (prefers-reduced-motion:reduce){.pulse{animation:none}}

/* 메시지 */
.messages{list-style:none;margin:16px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}
.msg{background:var(--white);border-radius:10px;padding:10px 14px;font-weight:700;border-left:0}
.msg-success{background:var(--blue-bg);color:var(--blue-ink)} .msg-error{background:var(--orange-bg);color:var(--orange-ink)} .msg-warning{background:var(--orange-bg);color:var(--orange-ink)}

/* 카드, 섹션 */
.card{background:var(--white);border-radius:16px;padding:22px;display:flex;flex-direction:column;gap:16px;min-width:0}
.card-sm{padding:16px 18px;border-radius:14px}
.card-dark{background:var(--ink);color:#E6E9ED}
.card-warn{border:2px solid var(--orange)}
.card-h{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px}
.card-h h2{margin:0;font-size:18px;font-weight:800}
.row{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-start}
.col{flex:1 1 520px;min-width:0;display:flex;flex-direction:column;gap:16px}
.grid{display:grid;gap:12px}
.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid-auto{grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}
.grid-cards{grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:16px}
.grid-accounts{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}
@media (max-width:720px){.grid-2{grid-template-columns:1fr}}

/* 제목 */
.h1{margin:0;font-family:var(--display);font-weight:400;font-size:60px;line-height:1}
.h1-xl{font-size:96px;line-height:.95;letter-spacing:-0.02em}
.h2-display{margin:0;font-family:var(--display);font-weight:400;font-size:34px}
.page-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:20px}
.page-head p{margin:0;color:var(--slate);max-width:64ch}
.eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:.1em;color:var(--gray)}
@media (max-width:720px){.h1{font-size:44px}.h1-xl{font-size:56px}}

/* 숫자 */
.stat{background:var(--white);border-radius:14px;padding:22px 24px;display:flex;flex-direction:column;gap:10px;text-decoration:none}
.stat-label{font-size:13px;font-weight:600;color:var(--gray)}
.stat-num{font-family:var(--display);font-size:48px;line-height:1}
.stat-num small{font-size:22px;color:var(--gray)}
.stat-note{font-size:13px;color:var(--gray)}
.stat-warn{background:var(--orange-bg)} .stat-warn .stat-label{color:var(--orange-ink);font-weight:700}
.bar{height:6px;background:var(--line-2);border-radius:3px;overflow:hidden}
.bar>span{display:block;height:100%;background:var(--ink)}
.bar>span.orange{background:var(--orange)}
.big{font-family:var(--display);font-size:24px}

/* 버튼 */
.btn{min-height:48px;padding:0 22px;display:inline-flex;align-items:center;justify-content:center;gap:10px;background:var(--ink);color:var(--white);border:1.5px solid var(--ink);border-radius:10px;text-decoration:none;font:inherit;font-weight:800;font-size:15px;cursor:pointer}
.btn-outline{background:var(--white);color:var(--ink)}
.btn-ghost{background:var(--white);color:var(--ink);border-color:var(--line);font-weight:700}
.btn-orange{background:var(--orange);color:var(--ink);border-color:var(--orange)}
.btn-sm{min-height:44px;padding:0 14px;font-size:14px;border-radius:8px}
.btn-xs{min-height:40px;padding:0 14px;font-size:13px;border-radius:8px;font-weight:700}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn-link{font-size:13px;font-weight:700;color:var(--blue);text-decoration:none}
.actions{display:flex;flex-wrap:wrap;gap:10px}

/* 필, 배지 */
.pill{font-size:12px;font-weight:700;border-radius:6px;padding:3px 8px;white-space:nowrap;display:inline-block}
.pill-run{background:var(--blue-bg);color:var(--blue-ink)}
.pill-wait{background:var(--orange-bg);color:var(--orange-ink)}
.pill-retry{background:var(--blue-bg);color:var(--blue-ink)}
.pill-fail{background:var(--ink);color:var(--white)}
.pill-done{background:var(--bg-2);color:var(--slate)}
.pill-drop{background:var(--bg-2);color:var(--gray)}
.pill-ink{background:var(--ink);color:var(--white)}
.pill-gray{background:var(--bg-2);color:var(--slate)}
.pill-orange{background:var(--orange);color:var(--ink);font-weight:800}
.pill-blue{background:var(--blue-bg);color:var(--blue-ink)}
.pill-yellow{background:var(--yellow);color:var(--ink)}
.pill-outline{background:var(--white);color:var(--slate);border:1px solid var(--gray-3)}
.pill-round{border-radius:999px;padding:3px 10px}
.tag{font-family:var(--mono);font-size:11px;font-weight:700;border:1.5px solid var(--ink);border-radius:6px;padding:3px 7px;text-align:center;display:inline-block}
.kw{font-family:var(--mono);font-size:13px;font-weight:700;background:var(--blue-bg);color:var(--blue-ink);border-radius:6px;padding:3px 8px}
.zh{font-weight:700;background:var(--blue-bg);color:var(--blue-ink);border-radius:6px;padding:4px 10px}
.mark{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;font-family:var(--display);font-size:14px;background:var(--white);color:var(--ink);border:1.5px solid var(--ink);flex:0 0 auto}
.mark-ink{background:var(--ink);color:var(--white);border-color:var(--ink)}
.mark-lg{width:40px;height:40px;font-size:19px;border-width:2px}

/* 표 */
.table-wrap{background:var(--white);border-radius:16px;overflow-x:auto}
table.tbl{width:100%;border-collapse:collapse;font-size:14px}
table.tbl caption{text-align:left;padding:20px 20px 4px;font-size:18px;font-weight:800}
table.tbl th{text-align:left;font-size:12px;color:var(--gray);font-weight:600;padding:16px 12px}
table.tbl th:first-child,table.tbl td:first-child{padding-left:20px}
table.tbl th:last-child,table.tbl td:last-child{padding-right:20px}
table.tbl td{padding:14px 12px;border-top:1px solid var(--line-3);vertical-align:middle}
table.tbl .r{text-align:right}
.segs{display:flex;gap:3px}
.segs span{flex:1 1 0;height:12px;border-radius:2px;background:var(--line-2)}
.segs .done{background:var(--slate)} .segs .run{background:var(--blue)} .segs .wait{background:var(--orange)}
.segs .retry{background:repeating-linear-gradient(135deg,#2747F5 0 3px,#DCE2FD 3px 6px)}
.segs .fail{background:repeating-linear-gradient(135deg,#E8541C 0 3px,#FCE7DD 3px 6px)}
.legend{display:flex;flex-wrap:wrap;gap:20px;font-size:13px;color:var(--slate)}
.legend span{display:flex;align-items:center;gap:8px}
.legend i{width:18px;height:10px;border-radius:2px;display:inline-block}

/* 폼 */
.field{display:flex;flex-direction:column;gap:6px}
.label{font-size:12px;font-weight:700;color:var(--gray)}
.input,.select,.textarea{min-height:44px;border:1.5px solid var(--line);border-radius:8px;padding:0 12px;font:inherit;font-size:14px;background:var(--white);width:100%}
.textarea{padding:10px 12px;line-height:1.55;resize:vertical;min-height:0}
.input-mono{font-family:var(--mono);font-size:13px}
.input-num{font-family:var(--display);font-size:18px;width:64px;min-height:40px}
.input-ink{border-color:var(--ink)}
.check{display:flex;gap:10px;align-items:center;min-height:44px;font-size:13.5px;font-weight:700}
.check input{width:18px;height:18px;accent-color:var(--ink)}
.daybtn{width:40px;height:40px;border-radius:8px;font:inherit;font-size:13px;font-weight:800;cursor:pointer;background:var(--white);color:var(--gray);border:1.5px solid var(--line)}
.daybtn[aria-pressed=true]{background:var(--ink);color:var(--white);border-color:var(--ink)}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{min-height:44px;padding:0 16px;border-radius:999px;font:inherit;font-size:14px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;gap:8px;background:var(--white);color:var(--ink);border:1.5px solid var(--line);text-decoration:none}
.chip[aria-pressed=true],.chip.on{background:var(--ink);color:var(--white);border-color:var(--ink)}
.chip .n{font-family:var(--mono);font-size:12px;opacity:.75}
.radio-card{flex:1 1 180px;min-height:44px;display:flex;gap:10px;align-items:center;border:1.5px solid var(--line);border-radius:10px;padding:0 12px;font-weight:700;cursor:pointer}
.radio-card:has(input:checked){border:2px solid var(--ink)}
.radio-card input{width:18px;height:18px;accent-color:var(--ink)}
input[type=range]{accent-color:var(--ink);width:100%}
dl.kv{margin:0;display:grid;grid-template-columns:auto 1fr;gap:4px 12px;font-size:13px}
dl.kv dt{color:var(--gray)} dl.kv dd{margin:0}
dl.facts{margin:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:12px}
dl.facts dt{font-size:12px;color:var(--gray)} dl.facts dd{margin:0;font-weight:700}

/* 로그 */
.log{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.log li{display:grid;grid-template-columns:62px minmax(0,1fr) auto;gap:12px;padding:8px 0;border-top:1px solid var(--bg-2);font-size:13.5px}
.log .t{font-family:var(--mono);font-size:12px;color:var(--gray)} .log .c{font-family:var(--mono);font-size:12px;color:var(--slate)}
.wlog{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px;font-family:var(--mono);font-size:12.5px;line-height:1.5}
.wlog li{display:grid;grid-template-columns:64px minmax(0,1fr);gap:12px}
.wlog .t{color:var(--gray-2)} .wlog .warn{color:var(--orange-light)} .wlog .ok{color:var(--blue-light)} .wlog .info{color:#E6E9ED}

/* 단계 띠 (상품 상세) */
.stages{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:4px;overflow-x:auto}
.stages li{display:flex;flex-direction:column;gap:2px;padding:10px;border-radius:8px;min-width:76px;background:var(--white);color:var(--gray)}
.stages li.done{background:var(--slate);color:var(--white)}
.stages li.now{background:var(--orange);color:var(--ink)}
.stages li.run{background:var(--blue);color:var(--white)}
.stages li.pend{background:repeating-linear-gradient(135deg,#FCE7DD 0 6px,#FFFFFF 6px 12px);color:var(--orange-ink);border:1.5px solid var(--orange)}
.stages .n,.stages .tm{font-family:var(--mono);font-size:11px;opacity:.8}
.stages .lb{font-size:12.5px;font-weight:700;line-height:1.3}

/* 썸네일 */
.frames{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:6px}
.frame{aspect-ratio:9/16;border-radius:6px;background:var(--ink-4);overflow:hidden;position:relative;display:flex;align-items:flex-end;padding:5px;font-family:var(--mono);font-size:10px;color:#C3C9D2}
.frame img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.frame span{position:relative;background:rgba(0,0,0,.55);border-radius:3px;padding:1px 4px}
.cands{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}
.cand{margin:0;display:flex;flex-direction:column;gap:6px}
.cand .tile{aspect-ratio:9/16;border-radius:8px;position:relative;display:flex;flex-direction:column;justify-content:space-between;padding:6px;background:var(--gray-3);overflow:hidden}
.cand .tile img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.cand.pick .tile{background:var(--ink-2);outline:3px solid var(--ink);outline-offset:2px}
.cand.drop .tile{background:repeating-linear-gradient(135deg,#C3C9D2 0 6px,#E2E5EA 6px 12px)}
.cand .score{position:relative;align-self:flex-end;font-family:var(--mono);font-size:11px;font-weight:700;border-radius:4px;padding:1px 5px;background:rgba(15,18,22,.75);color:var(--white)}
.cand.pick .score{background:var(--white);color:var(--ink)}
.cand .k{position:relative;align-self:flex-start;font-family:var(--display);font-size:20px;color:var(--white);text-shadow:0 0 4px #000}
.cand figcaption{font-size:11.5px;line-height:1.35;color:var(--slate)}
.poster{flex:0 0 132px;height:234px;border-radius:10px;background:var(--ink-2);position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between;padding:10px;color:var(--white)}
.poster img,.poster video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.poster>*{position:relative}

/* 슬롯 */
.slot-row{display:grid;grid-template-columns:76px minmax(0,1fr) auto;gap:12px;align-items:center}
.slot-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.slot-days span{min-height:32px;display:flex;align-items:center;justify-content:center;border-radius:6px;font-size:12.5px;font-weight:700}
.slot-days .off{background:var(--bg-3);color:var(--gray-2)} .slot-days .filled{background:var(--ink);color:var(--white)}
.slot-days .missed{background:var(--orange-bg);color:var(--orange-ink)} .slot-days .empty{background:var(--white);color:var(--ink);border:1.5px dashed var(--ink)}
.gap-pill{font-size:12.5px;font-weight:800;border-radius:6px;padding:3px 9px;white-space:nowrap;background:var(--bg-2);color:var(--slate)}
.gap-pill.short{background:var(--orange-bg);color:var(--orange-ink)}

/* 로그인 */
.login{max-width:400px;margin:80px auto;background:var(--white);border-radius:16px;padding:32px;display:flex;flex-direction:column;gap:16px}

/* 탭 */
.tabs{display:flex;gap:4px;background:var(--bg-2);border-radius:10px;padding:4px;flex-wrap:wrap}
.tabs button{flex:1 1 auto;min-height:40px;padding:0 12px;border-radius:7px;border:0;font:inherit;font-size:14px;font-weight:700;cursor:pointer;background:transparent;color:var(--slate)}
.tabs button[aria-selected=true]{background:var(--white);color:var(--ink);box-shadow:0 1px 2px rgba(15,18,22,.15)}
.hx-indicator{display:none}.htmx-request .hx-indicator,.htmx-request.hx-indicator{display:inline}
