/* Hiscan BMW Online — 다크 첨단(네온 시안) 테마 */
:root {
  --bg1: #070b14;
  --bg2: #0a1122;
  --panel: rgba(18, 28, 48, 0.55);
  --panel-solid: #0d1524;
  --field: #0a1120;
  --border: rgba(56, 214, 255, 0.16);
  --border-hover: rgba(56, 214, 255, 0.55);
  --accent: #38d6ff;
  --accent2: #6ea8ff;
  --text: #e9f1fc;
  --muted: #8ba0c0;
  --glow: 0 0 18px rgba(56, 214, 255, 0.45);
}
* { box-sizing: border-box; }
body {
  margin: 0;
  color: var(--text);
  font-family: 'Noto Sans KR', 'Segoe UI', system-ui, -apple-system, sans-serif;
  background:
    radial-gradient(1200px 600px at 50% -12%, rgba(56, 214, 255, 0.13), transparent 60%),
    radial-gradient(900px 500px at 92% 4%, rgba(110, 168, 255, 0.10), transparent 55%),
    linear-gradient(180deg, var(--bg1) 0%, var(--bg2) 100%);
  background-attachment: fixed;
  min-height: 100vh;
}
a { color: var(--accent); }

/* ── 헤더 ── */
.bmw-header {
  display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 12px;
  padding: 11px 22px;
  background: rgba(8, 13, 24, 0.72);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--border);
  position: sticky; top: 0; z-index: 20;
}
.bmw-header .bmw-brand { justify-self: start; }
.bmw-topbar { justify-self: center; display: flex; align-items: center; gap: 8px; }
.bmw-header .bmw-nav { justify-self: end; display: flex; align-items: center; }
@media (max-width: 940px) {
  .bmw-header { grid-template-columns: 1fr; justify-items: center; gap: 9px; }
  .bmw-header .bmw-brand, .bmw-topbar, .bmw-header .bmw-nav { justify-self: center; }
  .bmw-header .bmw-nav { flex-wrap: wrap; justify-content: center; }
  .bmw-nav a:first-child { margin-left: 0; }
}
.bmw-brand { display: inline-flex; align-items: center; gap: 11px; text-decoration: none; white-space: nowrap; }
.bmw-logo-svg { width: 58px; height: 30px; flex: none; filter: drop-shadow(0 0 4px rgba(90,180,255,0.5)) drop-shadow(0 0 11px rgba(90,150,255,0.28)); }
.bmw-brand:hover .bmw-logo-svg { filter: drop-shadow(0 0 6px rgba(90,180,255,0.75)) drop-shadow(0 0 15px rgba(120,120,255,0.4)); }
.bmw-brand-txt { font-size: 1.14rem; font-weight: 800; color: var(--text); letter-spacing: .4px; text-shadow: 0 0 10px rgba(56,214,255,0.22); }
.bmw-brand-txt b { color: var(--accent); text-shadow: 0 0 12px rgba(56,214,255,0.85); }
.bmw-headright { display: flex; align-items: center; gap: 14px; }
/* 헤더 우상단 서비스 상태 아이콘 */
.bmw-hstatus { display: inline-flex; align-items: center; gap: 7px; padding: 4px 11px; border-radius: 999px; font-size: .78rem; font-weight: 700; border: 1px solid var(--border); background: rgba(255,255,255,0.03); color: var(--muted); white-space: nowrap; }
.bmw-hstatus .bmw-hdot { width: 9px; height: 9px; min-width: 9px; border-radius: 50%; background: currentColor; box-shadow: 0 0 8px currentColor; flex: none; display: inline-block; animation: bmw-blink 1.4s ease-in-out infinite; }
@keyframes bmw-blink { 0%, 100% { opacity: 1; } 50% { opacity: .25; } }
.bmw-hstatus.online { color: #2ee6a6; border-color: rgba(46,230,166,0.32); background: rgba(46,230,166,0.09); }
.bmw-hstatus.maint { color: #ffb020; border-color: rgba(255,176,32,0.32); background: rgba(255,176,32,0.10); }
.bmw-hstatus.offline { color: #ff6b74; border-color: rgba(255,107,116,0.32); background: rgba(255,107,116,0.09); }
.bmw-nav a { margin-left: 16px; color: var(--muted); text-decoration: none; font-weight: 500; font-size: .9rem; transition: color .15s; }
.bmw-nav a:hover { color: var(--accent); }
.bmw-badges2 { display: flex; gap: 8px; }
.bmw-badge2 { background: rgba(56, 214, 255, 0.08); border: 1px solid var(--border); color: var(--accent); padding: 5px 11px; border-radius: 8px; font-size: .78rem; font-weight: 600; white-space: nowrap; }

.bmw-main { max-width: 1120px; margin: 0 auto; padding: 40px 20px 72px; }
.bmw-footer { text-align: center; padding: 26px; color: #45566f; font-size: .82rem; }

/* ── 히어로 ── */
.bmw-hero { text-align: center; padding: 30px 0 6px; }
.bmw-hero h1 { font-size: 2.5rem; font-weight: 800; margin: 0 0 14px; color: #eaf4ff; letter-spacing: -.5px; animation: bmw-hero-glow 2.8s ease-in-out infinite; }
/* 'Hiscan'만 파란 네온 */
.bmw-hero h1 .bmw-hi { color: var(--accent); animation: bmw-hi-glow 2.8s ease-in-out infinite; }
.bmw-hero p { color: var(--muted); margin: 0; font-size: 1rem; }
@keyframes bmw-hero-glow {
  0%,100% { text-shadow: 0 0 18px rgba(56,214,255,0.32); }
  50%     { text-shadow: 0 0 30px rgba(56,214,255,0.6), 0 0 54px rgba(56,214,255,0.28); }
}
@keyframes bmw-hi-glow {
  0%,100% { text-shadow: 0 0 12px rgba(56,214,255,0.6), 0 0 26px rgba(56,214,255,0.35); }
  50%     { text-shadow: 0 0 20px rgba(56,214,255,0.95), 0 0 46px rgba(56,214,255,0.6); }
}
@media (prefers-reduced-motion: reduce) {
  .bmw-hero h1, .bmw-hero h1 .bmw-hi { animation: none; }
}
.bmw-badges { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; margin-top: 18px; }
.bmw-badge { background: rgba(56, 214, 255, 0.07); border: 1px solid var(--border); color: var(--accent); padding: 7px 15px; border-radius: 999px; font-size: .85rem; }

/* 서비스 상태 */
.bmw-status { display: inline-flex; align-items: center; gap: 9px; margin-top: 18px; color: var(--muted); font-weight: 500; }
.bmw-dot { width: 10px; height: 10px; border-radius: 50%; background: #3a4a63; }
.bmw-dot.online { background: #22e39a; box-shadow: 0 0 10px #22e39a; }
.bmw-dot.offline { background: #ff5a6a; box-shadow: 0 0 10px #ff5a6a; }

/* ── 도구 카드 그리드 ── */
.bmw-tools { display: grid; grid-template-columns: repeat(auto-fill, minmax(232px, 1fr)); gap: 18px; margin-top: 34px; }
.bmw-tool {
  background: var(--panel); backdrop-filter: blur(6px);
  border: 1px solid var(--border); border-radius: 16px;
  padding: 30px 20px; text-align: center; text-decoration: none; color: inherit;
  display: flex; flex-direction: column; align-items: center;
  transition: transform .18s ease, border-color .18s, box-shadow .18s;
  position: relative; overflow: hidden; perspective: 760px;
}
.bmw-tool::before { content: ''; position: absolute; inset: 0; background: radial-gradient(300px 120px at 50% 0%, rgba(56,214,255,0.10), transparent 70%); opacity: 0; transition: opacity .2s; }
.bmw-tool:hover { transform: translateY(-4px); border-color: var(--border-hover); box-shadow: 0 12px 44px rgba(56, 214, 255, 0.18); }
.bmw-tool:hover::before { opacity: 1; }

/* 툴 아이콘: 유휴엔 잔잔한 3D 부유+네온 맥동, 호버엔 3D 한 바퀴 회전+팝 */
.bmw-tool-icon {
  font-size: 2rem; color: var(--accent); margin-bottom: 14px; text-shadow: var(--glow);
  transform-style: preserve-3d; will-change: transform;
  animation: bmw-ico-float 4s ease-in-out infinite, bmw-ico-neon 2.8s ease-in-out infinite;
  transition: color .3s, text-shadow .3s;
}
/* 카드별 시차 → 물결처럼 순차적으로 움직임 */
.bmw-tool:nth-child(2) .bmw-tool-icon { animation-delay: -.6s, -.5s; }
.bmw-tool:nth-child(3) .bmw-tool-icon { animation-delay: -1.2s, -.9s; }
.bmw-tool:nth-child(4) .bmw-tool-icon { animation-delay: -1.8s, -1.3s; }
.bmw-tool:nth-child(5) .bmw-tool-icon { animation-delay: -2.4s, -1.7s; }
.bmw-tool:nth-child(6) .bmw-tool-icon { animation-delay: -3s, -2.1s; }
.bmw-tool:nth-child(7) .bmw-tool-icon { animation-delay: -3.6s, -2.5s; }
.bmw-tool:nth-child(8) .bmw-tool-icon { animation-delay: -4.2s, -2.9s; }
/* 호버: 3D 한 바퀴 회전 + 팝 + 네온 강화 */
.bmw-tool:hover .bmw-tool-icon {
  animation: bmw-ico-spin .9s cubic-bezier(.2,.7,.2,1) forwards;
  color: #8ce4ff;
  text-shadow: 0 0 12px rgba(56,214,255,.95), 0 0 30px rgba(56,214,255,.6);
}
@keyframes bmw-ico-float {
  0%,100% { transform: translateY(0) rotateY(-15deg) rotateX(6deg); }
  50%     { transform: translateY(-8px) rotateY(15deg) rotateX(-6deg); }
}
@keyframes bmw-ico-neon {
  0%,100% { text-shadow: 0 0 6px rgba(56,214,255,.5), 0 0 14px rgba(56,214,255,.3); }
  50%     { text-shadow: 0 0 12px rgba(56,214,255,.85), 0 0 30px rgba(56,214,255,.5); }
}
@keyframes bmw-ico-spin {
  0%   { transform: rotateY(0) scale(1); }
  70%  { transform: rotateY(360deg) scale(1.28); }
  100% { transform: rotateY(360deg) scale(1.14); }
}
/* SFA Token: 방패 안에 열쇠(합성 아이콘). 방패는 시안 네온, 열쇠는 안쪽에 박힌 듯 어둡게 */
.bmw-shieldkey { position: relative; display: inline-block; line-height: 1; }
.bmw-shieldkey .fa-shield { display: block; }
.bmw-shieldkey .fa-key {
  position: absolute; left: 50%; top: 45%;
  transform: translate(-50%, -50%);
  font-size: .44em; color: #0a1826; text-shadow: none;
}
@media (prefers-reduced-motion: reduce) {
  .bmw-tool-icon, .bmw-tool:hover .bmw-tool-icon { animation: none; transform: none; }
}
.bmw-tool h3 { margin: 0 0 9px; color: #eaf4ff; font-size: 1.02rem; }
.bmw-tool p { margin: 0; color: var(--muted); font-size: .84rem; line-height: 1.55; }

/* ── 폼 카드 ── */
.bmw-card { background: var(--panel-solid); border: 1px solid var(--border); border-radius: 16px; padding: 30px; box-shadow: 0 10px 40px rgba(0,0,0,0.35); }
.bmw-card h1 { margin: 0 0 6px; color: #eaf4ff; text-shadow: 0 0 18px rgba(56, 214, 255, 0.25); }
.bmw-desc { color: var(--muted); margin: 2px 0 14px; }

/* 입력 */
.bmw-field { margin: 14px 0; }
.bmw-field strong, .bmw-drop strong, .bmw-paste strong, .bmw-feat-head strong, .bmw-mode strong { color: #cfe0ff; font-weight: 600; }
.bmw-field input[type=text] { display: block; width: 100%; margin-top: 7px; padding: 11px 13px; border: 1px solid var(--border); border-radius: 9px; font-size: 1rem; letter-spacing: 1px; background: var(--field); color: var(--text); }
.bmw-field input[type=text]:focus, .bmw-paste textarea:focus, .bmw-feat-head input[type=text]:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px rgba(56,214,255,0.15); }
.bmw-choices, .bmw-mode { display: flex; gap: 18px; margin-top: 8px; align-items: center; }
.bmw-radio, .bmw-mode label { cursor: pointer; color: var(--text); }
.bmw-radio input, .bmw-mode input { accent-color: var(--accent); }

/* 드롭존 */
.bmw-drop { border: 2px dashed rgba(56, 214, 255, 0.32); background: rgba(56, 214, 255, 0.035); border-radius: 12px; padding: 24px; text-align: center; color: var(--muted); margin: 12px 0; }
.bmw-drop input { display: block; margin: 10px auto 0; color: var(--muted); }
/* 통짜 클릭 + 드래그앤드롭 파일 영역 */
.bmw-dropzone { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; margin: 14px 0; padding: 30px 20px; border: 2px dashed rgba(56, 214, 255, 0.35); border-radius: 14px; background: rgba(56, 214, 255, 0.035); cursor: pointer; text-align: center; transition: border-color .15s, background .15s, box-shadow .15s; }
.bmw-dropzone:hover { border-color: var(--accent); background: rgba(56, 214, 255, 0.07); }
.bmw-dropzone.dragover { border-color: var(--accent); background: rgba(56, 214, 255, 0.14); box-shadow: 0 0 0 3px rgba(56,214,255,0.18) inset; }
.bmw-dropzone.has-file { border-style: solid; border-color: rgba(34,227,154,0.6); background: rgba(34,227,154,0.06); }
.bmw-file-hidden { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.bmw-dz-icon { font-size: 1.9rem; color: var(--accent); text-shadow: var(--glow); }
.bmw-dropzone.has-file .bmw-dz-icon { color: #22e39a; text-shadow: 0 0 14px rgba(34,227,154,0.6); }
.bmw-dz-title { font-weight: 700; color: #eaf4ff; font-size: 1rem; }
.bmw-dz-hint { color: var(--muted); font-size: .85rem; }
.bmw-dropzone.has-file .bmw-dz-hint { color: #7fe9bf; }

/* 붙여넣기 */
.bmw-paste { margin: 14px 0; }
.bmw-paste textarea { width: 100%; margin-top: 7px; padding: 11px; border: 1px solid var(--border); border-radius: 9px; font-family: 'Consolas', monospace; font-size: .85rem; resize: vertical; background: var(--field); color: var(--text); }

/* 버튼 */
.bmw-btn { display: inline-block; background: linear-gradient(135deg, #22d3ee, #4b7bff); color: #041220; border: none; padding: 12px 28px; border-radius: 10px; font-weight: 700; font-size: 1rem; text-decoration: none; cursor: pointer; box-shadow: 0 6px 22px rgba(56, 214, 255, 0.32); transition: box-shadow .18s, transform .1s; }
.bmw-btn:hover { box-shadow: 0 8px 30px rgba(56, 214, 255, 0.5); }
.bmw-btn:active { transform: translateY(1px); }
.bmw-btn[disabled] { opacity: .45; cursor: not-allowed; box-shadow: none; }
.bmw-btn-sub { display: inline-block; background: rgba(56, 214, 255, 0.09); color: var(--accent); border: 1px solid var(--border); padding: 9px 15px; border-radius: 9px; font-weight: 600; cursor: pointer; }
.bmw-btn-xs { background: rgba(56, 214, 255, 0.06); border: 1px solid var(--border); color: var(--accent); padding: 5px 11px; border-radius: 7px; font-size: .82rem; cursor: pointer; margin-right: 6px; }

/* 모드/모듈 선택 */
.bmw-mode { margin: 14px 0 6px; font-weight: 500; }
#ncd-modules-actions { margin: 10px 0 6px; }
.bmw-modules { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 6px 12px; max-height: 300px; overflow-y: auto; padding: 8px; border: 1px solid var(--border); border-radius: 10px; background: var(--field); }
.bmw-mod { display: flex; align-items: center; gap: 6px; font-size: .9rem; padding: 3px 4px; color: var(--text); }
.bmw-mod input, .bmw-feat input { accent-color: var(--accent); }

/* SFA Token 기능 목록 */
.bmw-feat-head { display: flex; gap: 12px; align-items: center; margin: 14px 0 6px; flex-wrap: wrap; }
.bmw-feat-head input[type=text] { flex: 1; min-width: 160px; padding: 8px 11px; border: 1px solid var(--border); border-radius: 9px; background: var(--field); color: var(--text); }
.bmw-features { max-height: 320px; overflow-y: auto; border: 1px solid var(--border); border-radius: 10px; padding: 8px; background: var(--field); }
.bmw-feat { display: block; font-size: .86rem; padding: 3px 4px; color: var(--text); }
.bmw-feat code { color: var(--accent); font-size: .82rem; }

.bmw-sub { color: var(--muted); margin: 4px 0 18px; font-size: .94rem; line-height: 1.5; }

/* ── SFA Token 3단계(ECU/Feature 표) ── */
.sfat-step { font-weight: 700; color: #cfe0ff; margin: 18px 0 8px; }
.sfat-fileinfo { margin: 8px 0 4px; font-size: .9rem; color: #7fe9bf; min-height: 1.1em; }
.sfat-fileinfo.bad { color: #ff8a94; }
.sfat-step-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin: 20px 0 8px; flex-wrap: wrap; }
.sfat-step-head > span:first-child { font-weight: 700; color: #cfe0ff; }
.sfat-step-head input[type=text] { flex: 0 1 260px; padding: 7px 11px; border: 1px solid var(--border); border-radius: 8px; background: var(--field); color: var(--text); }
.sfat-actions { display: flex; gap: 6px; }
.sfat-tablewrap { max-height: 360px; overflow: auto; border: 1px solid var(--border); border-radius: 10px; background: var(--field); }
.sfat-table { width: 100%; border-collapse: collapse; font-size: .86rem; }
.sfat-table thead th { position: sticky; top: 0; background: #0f1a2e; color: var(--muted); text-align: left; padding: 9px 12px; border-bottom: 1px solid var(--border); font-weight: 600; z-index: 1; }
.sfat-table td { padding: 8px 12px; border-bottom: 1px solid rgba(56,214,255,0.08); color: var(--text); vertical-align: middle; }
.sfat-table tbody tr:hover, .sfat-table tr:hover { background: rgba(56,214,255,0.04); }
.sfat-table code { color: var(--accent); font-size: .82rem; }
.sfat-table input[type=checkbox] { accent-color: var(--accent); width: 15px; height: 15px; }
.sfat-qa { display: flex; gap: 6px; white-space: nowrap; }
.sfat-mode-btn { background: rgba(56,214,255,0.06); border: 1px solid var(--border); color: var(--muted); padding: 3px 10px; border-radius: 6px; font-size: .78rem; cursor: pointer; font-weight: 600; }
.sfat-mode-btn.active { background: linear-gradient(135deg,#22d3ee,#4b7bff); color: #041220; border-color: transparent; }
.sfat-edit-btn { background: rgba(110,168,255,0.12); border: 1px solid rgba(110,168,255,0.4); color: var(--accent2); padding: 3px 10px; border-radius: 6px; font-size: .78rem; cursor: pointer; }
.sfat-uid { font-family: 'Consolas', monospace; }
.sfat-submit-wrap { display: flex; justify-content: center; align-items: center; gap: 12px; flex-wrap: wrap; margin: 24px 0 6px; }
.sfat-submit-wrap .bmw-btn { min-width: 280px; }
.sfat-submit-wrap .bmw-btn-sub { padding: 12px 20px; font-size: .95rem; }
#sfat-result { text-align: center; }
#sfat-result a { color: var(--accent); }

/* 결과 박스 */
.bmw-result { margin-top: 18px; padding: 16px; border-radius: 10px; background: rgba(56, 214, 255, 0.06); border: 1px solid var(--border); display: none; color: var(--text); }
.bmw-result.show { display: block; }

/* 처리 중 게이지 바(계속 흐르는 진행 애니메이션 — 처리중이 멈춘 것처럼 안 보이게) */
.bmw-gauge { display: block; }
.bmw-gauge-top { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 11px; font-size: .95rem; font-weight: 700; color: var(--text); }
.bmw-gauge-top .bmw-gauge-sub { color: var(--muted); font-weight: 500; font-size: .82rem; white-space: nowrap; }
.bmw-gauge-track { position: relative; height: 10px; border-radius: 999px; background: rgba(56, 214, 255, 0.10); border: 1px solid var(--border); overflow: hidden; }
.bmw-gauge-fill { position: absolute; top: 0; bottom: 0; left: -42%; width: 42%; border-radius: 999px;
  background: linear-gradient(90deg, rgba(56, 214, 255, 0) 0%, var(--accent) 55%, var(--accent2) 100%);
  box-shadow: 0 0 16px rgba(56, 214, 255, 0.6);
  animation: bmw-gauge-slide 1.25s cubic-bezier(.5, .15, .4, .9) infinite; }
@keyframes bmw-gauge-slide { 0% { left: -42%; } 100% { left: 100%; } }
@media (prefers-reduced-motion: reduce) { .bmw-gauge-fill, .bmw-stat .bmw-mini::after { animation-duration: 2.2s; } }

/* 주문내역 등 목록의 상태 배지(진행중이면 미니 게이지로 살아있게 표시) */
.bmw-stat { display: inline-flex; align-items: center; gap: 8px; padding: 4px 11px; border-radius: 999px; font-size: .8rem; font-weight: 700; white-space: nowrap; }
.bmw-stat.done { background: rgba(46, 230, 166, 0.14); color: #2ee6a6; }
.bmw-stat.error { background: rgba(255, 107, 116, 0.14); color: #ff6b74; }
.bmw-stat.work { background: rgba(56, 214, 255, 0.12); color: var(--accent); }
.bmw-stat .bmw-mini { position: relative; width: 48px; height: 6px; border-radius: 999px; background: rgba(56, 214, 255, 0.16); overflow: hidden; }
.bmw-stat .bmw-mini::after { content: ""; position: absolute; top: 0; bottom: 0; left: -45%; width: 45%; border-radius: 999px; background: var(--accent); box-shadow: 0 0 8px var(--accent); animation: bmw-gauge-slide 1.25s cubic-bezier(.5, .15, .4, .9) infinite; }

/* 모듈 카드 토큰 배지 */
.bmw-tool-cost { margin-top: 12px; font-size: .78rem; font-weight: 800; color: var(--accent); display: inline-flex; align-items: center; gap: 6px; background: rgba(56, 214, 255, 0.08); border: 1px solid var(--border); padding: 3px 11px; border-radius: 999px; }

/* BMW 관리자: 토큰 지급/조정 버튼 + 비용표 */
.bmw-btn-sm { display: inline-flex; align-items: center; gap: 5px; padding: 6px 11px; margin: 2px; border-radius: 8px; border: 1px solid var(--border); background: rgba(56, 214, 255, 0.10); color: var(--accent); font-size: .82rem; font-weight: 700; cursor: pointer; transition: .15s; }
.bmw-btn-sm:hover { background: rgba(56, 214, 255, 0.2); }
.bmw-btn-sm.alt { color: var(--muted); background: rgba(255, 255, 255, 0.04); }
.bmw-costs { margin-top: 28px; }
.bmw-costs h2 { font-size: 1rem; color: var(--muted); margin-bottom: 12px; }
.bmw-cost-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; }
.bmw-cost-item { display: flex; align-items: center; justify-content: space-between; padding: 10px 14px; border-radius: 10px; background: rgba(56, 214, 255, 0.05); border: 1px solid var(--border); font-size: .88rem; }
.bmw-cost-item b { color: var(--accent); }

/* 고객 토큰 장부(관리자) */
.bmw-ledger-bar { display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap; margin-bottom: 14px; }
.bmw-search { display: inline-flex; align-items: center; gap: 8px; background: var(--card, rgba(255,255,255,.03)); border: 1px solid var(--border); border-radius: 10px; padding: 8px 12px; flex: 1; min-width: 240px; max-width: 460px; }
.bmw-search i { color: var(--muted); }
.bmw-search input { flex: 1; background: transparent; border: none; outline: none; color: var(--text); font-size: .92rem; }
.bmw-search input::placeholder { color: var(--muted); }
.bmw-search button { border: 1px solid var(--border); background: rgba(56,214,255,.10); color: var(--accent); border-radius: 8px; padding: 6px 12px; font-weight: 700; font-size: .82rem; cursor: pointer; }
.bmw-search button:hover { background: rgba(56,214,255,.2); }
.bmw-count { color: var(--muted); font-size: .88rem; white-space: nowrap; }
.bmw-count b { color: var(--accent); }
.bmw-ledger-wrap { overflow-x: auto; border: 1px solid var(--border); border-radius: 12px; }
.bmw-ledger { width: 100%; border-collapse: collapse; font-size: .9rem; min-width: 760px; }
.bmw-ledger thead th { position: sticky; top: 0; background: rgba(56,214,255,.06); color: var(--muted); font-weight: 700; text-align: left; padding: 12px 14px; border-bottom: 1px solid var(--border); white-space: nowrap; }
.bmw-ledger td { padding: 12px 14px; border-bottom: 1px solid rgba(255,255,255,.05); }
.bmw-ledger tbody tr:nth-child(even) { background: rgba(255,255,255,.015); }
.bmw-ledger tbody tr:hover { background: rgba(56,214,255,.05); }
.bmw-ledger .mono { font-family: Consolas, monospace; color: var(--muted); font-size: .85rem; }
.bmw-ledger .bmw-email { color: var(--muted); font-size: .82rem; max-width: 200px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bmw-actions { display: flex; gap: 6px; flex-wrap: wrap; }
.bmw-stat.unl { background: linear-gradient(90deg, rgba(110,168,255,.16), rgba(180,120,255,.16)); color: #c9b3ff; border: 1px solid rgba(180,120,255,.3); }
.bmw-btn-sm.unl { color: #c9b3ff; background: rgba(180,120,255,.10); border-color: rgba(180,120,255,.28); }
.bmw-btn-sm.unl:hover { background: rgba(180,120,255,.2); }
.bmw-btn-sm.danger { color: var(--bad, #ff6b74); background: rgba(255,107,116,.08); border-color: rgba(255,107,116,.3); }
.bmw-btn-sm.danger:hover { background: rgba(255,107,116,.16); }
.bmw-empty { padding: 26px; text-align: center; color: var(--muted); }

/* FA·SVT 등 드롭존 가로 2열 배치 */
.bmw-dropgrid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.bmw-dropgrid .bmw-dropzone { margin: 0; height: 100%; }
@media (max-width: 560px) { .bmw-dropgrid { grid-template-columns: 1fr; } }

/* 토큰 충전 신청 페이지 */
.charge-label { display: block; color: #cfe0ff; font-weight: 600; margin-bottom: 8px; font-size: .95rem; }
.bmw-qty { display: flex; align-items: center; gap: 10px; }
.bmw-qty input { flex: 1; min-width: 0; padding: 13px 15px; font-size: 1.15rem; font-weight: 700; border-radius: 10px; border: 1px solid var(--border); background: rgba(255,255,255,0.03); color: var(--text); }
.bmw-qty input::placeholder { color: var(--muted); font-weight: 500; }
.bmw-qty input:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px rgba(56,214,255,0.15); }
.bmw-qty span { color: var(--muted); font-weight: 700; flex: none; }
.bmw-total { margin-top: 10px; color: var(--accent); font-weight: 800; font-size: 1.02rem; min-height: 1.1em; text-shadow: 0 0 10px rgba(56,214,255,0.3); }
.charge-submit { width: 100%; display: block; margin-top: 18px; text-align: center; padding: 14px; }

/* 공용/CBB 모듈: 제출·다운로드 버튼 가운데 정렬 */
.bmw-btn-center { text-align: center; margin-top: 8px; }
.bmw-btn-center .bmw-btn { min-width: 200px; }
.bmw-notice { margin-top: 22px; padding: 18px 20px; border-radius: 12px; background: rgba(56,214,255,0.05); border: 1px solid var(--border); color: var(--text); line-height: 1.7; font-size: .92rem; }
.bmw-notice p { margin: 0 0 8px; color: var(--muted); }
.bmw-notice p:last-child { margin-bottom: 0; }
.bmw-notice b { color: var(--text); }
.bmw-bank { margin: 12px 0; padding: 12px 16px; border-radius: 10px; background: rgba(56,214,255,0.09); border: 1px solid rgba(56,214,255,0.25); color: var(--accent); font-weight: 800; font-size: 1.02rem; letter-spacing: .3px; }
.bmw-bank b { color: #fff; }

/* 관리자 페이지 탭(소분류) */
.bmw-tabs { display: flex; gap: 4px; border-bottom: 1px solid var(--border); margin-bottom: 20px; flex-wrap: wrap; }
.bmw-tab { display: inline-flex; align-items: center; gap: 7px; padding: 11px 18px; background: none; border: none; border-bottom: 2px solid transparent; color: var(--muted); font-weight: 700; font-size: .92rem; cursor: pointer; transition: .15s; font-family: inherit; margin-bottom: -1px; }
.bmw-tab:hover { color: var(--text); background: rgba(56,214,255,0.05); }
.bmw-tab.active { color: var(--accent); border-bottom-color: var(--accent); text-shadow: 0 0 10px rgba(56,214,255,0.4); }
.bmw-tab-badge { display: inline-flex; align-items: center; justify-content: center; min-width: 18px; height: 18px; padding: 0 5px; margin-left: 4px; border-radius: 999px; background: #f5233f; color: #fff; font-size: .7rem; font-weight: 800; }
.bmw-tabpanel .bmw-costs { margin-top: 0; }

/* 게이트 */
.bmw-gate { display: flex; justify-content: center; padding: 44px 0; }
.bmw-gate-card { background: var(--panel-solid); border: 1px solid var(--border); border-radius: 16px; padding: 42px; text-align: center; max-width: 430px; box-shadow: 0 12px 44px rgba(0,0,0,0.4); }
.bmw-gate-icon { font-size: 3rem; }
.bmw-gate-card h1 { color: #eaf4ff; }
.bmw-gate-card p { color: var(--muted); line-height: 1.7; }

/* 주문내역 표 */
table.bmw-list { width: 100%; border-collapse: collapse; background: var(--panel-solid); border: 1px solid var(--border); border-radius: 12px; overflow: hidden; }
table.bmw-list th, table.bmw-list td { padding: 12px 14px; text-align: left; border-bottom: 1px solid var(--border); font-size: .92rem; color: var(--text); }
table.bmw-list th { color: var(--muted); font-weight: 600; background: rgba(56,214,255,0.04); }

/* 모바일: 헤더 토큰/ID 뱃지 줄바꿈(가로 넘침 방지) */
body { overflow-x: hidden; }
@media (max-width: 520px) {
  .bmw-header { padding: 11px 12px; }
  .bmw-topbar { flex-wrap: wrap; justify-content: center; max-width: 100%; }
  .bmw-badges2 { flex-wrap: wrap; justify-content: center; }
  .bmw-badge2, .bmw-hstatus { font-size: .72rem; padding: 4px 9px; }
  .bmw-brand-txt { font-size: 1rem; }
}
