:root{
  --bg:#f6f2ec;
  --surface:#ffffff;
  --surface-2:#f9f5ee;
  --border:#e8dfd1;
  --text:#2a221a;
  --text-muted:#7a6f61;
  --primary:#d9770b;
  --primary-2:#f0a63e;
  --primary-soft:#fdf0dd;
  --success:#16a34a;
  --success-soft:#eafaf0;
  --danger:#dc2626;
  --warn:#b45309;
  --warn-soft:#fff8e8;
  --warn-border:#fbe4b8;
  --radius-lg:20px;
  --radius-md:14px;
  --radius-sm:9px;
  --shadow-sm:0 1px 2px rgba(18,20,40,.05),0 1px 3px rgba(18,20,40,.06);
  --shadow-md:0 10px 28px rgba(18,20,40,.08);
  --shadow-lg:0 22px 50px rgba(18,20,40,.16);
}

@media (prefers-color-scheme: dark){
  :root{
    --bg:#17130f;
    --surface:#201a14;
    --surface-2:#251f18;
    --border:#3c3226;
    --text:#f1e9dd;
    --text-muted:#a89a86;
    --primary:#f0a63e;
    --primary-2:#fbc978;
    --primary-soft:#3a2712;
    --success:#34d17c;
    --success-soft:#132a1e;
    --danger:#f56565;
    --warn:#f2b84b;
    --warn-soft:#2a2312;
    --warn-border:#4a3c17;
    --shadow-sm:0 1px 2px rgba(0,0,0,.35);
    --shadow-md:0 10px 28px rgba(0,0,0,.4);
    --shadow-lg:0 22px 50px rgba(0,0,0,.55);
  }
}

.content{
  font-family:'Inter',sans-serif;
  color:var(--text);
}

/* ===== HERO ===== */
.ccg-hero{
  text-align:center;
  margin-bottom:24px;
}

.ccg-hero-icon{
  width:56px;
  height:56px;
  margin:0 auto 16px;
  border-radius:16px;
  background:linear-gradient(135deg,var(--primary),var(--primary-2));
  display:flex;
  align-items:center;
  justify-content:center;
  color:#fff;
  font-size:22px;
  box-shadow:var(--shadow-md);
}

.ccg-badges{
  display:flex;
  justify-content:center;
  gap:10px;
  flex-wrap:wrap;
}

.ccg-badge{
  display:inline-flex;
  align-items:center;
  gap:6px;
  font-size:.76rem;
  font-weight:700;
  color:var(--text-muted);
  background:var(--surface);
  border:1px solid var(--border);
  padding:6px 12px;
  border-radius:30px;
  box-shadow:var(--shadow-sm);
}

.ccg-badge .ccg-icon{ color:var(--primary); }

.ccg-icon{ width:1em; height:1em; display:inline-block; vertical-align:-0.125em; flex-shrink:0; }

/* ===== LAYOUT ===== */
.ccg-layout{
  display:grid;
  grid-template-columns:360px 1fr;
  gap:22px;
  align-items:start;
}

@media (max-width:900px){
  .ccg-layout{ grid-template-columns:1fr; }
}

/* ===== PANEL ===== */
.ccg-panel{
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  box-shadow:var(--shadow-sm);
  padding:22px;
  position:sticky;
  top:20px;
}

.ccg-panel h2{
  margin:0 0 4px;
  font-size:1.02rem;
  font-weight:700;
}

.ccg-panel .ccg-panel-sub{
  margin:0 0 18px;
  font-size:.8rem;
  color:var(--text-muted);
}

.ccg-field{
  margin-bottom:16px;
}

.ccg-field label{
  display:block;
  font-size:.76rem;
  font-weight:700;
  color:var(--text-muted);
  text-transform:uppercase;
  letter-spacing:.04em;
  margin-bottom:7px;
}

.ccg-row2{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:12px;
}

.ccg-panel select,.ccg-panel input[type="text"],.ccg-panel input[type="number"]{
  width:100%;
  padding:11px 12px;
  border:1px solid var(--border);
  border-radius:var(--radius-sm);
  background:var(--surface-2);
  color:var(--text);
  font-family:inherit;
  font-size:.87rem;
  outline:none;
  box-sizing:border-box;
  transition:border-color .15s ease, box-shadow .15s ease;
}

.ccg-panel select:focus,.ccg-panel input:focus{
  border-color:var(--primary);
  box-shadow:0 0 0 3px var(--primary-soft);
  background:var(--surface);
}

.ccg-check-grid{
  display:flex;
  flex-direction:column;
  gap:9px;
}

.ccg-check-row{
  display:flex;
  align-items:center;
  gap:9px;
  font-size:.85rem;
  font-weight:500;
  color:var(--text);
  cursor:pointer;
}

.ccg-check-row input{
  width:16px;
  height:16px;
  accent-color:var(--primary);
  cursor:pointer;
}

.ccg-adv-toggle{
  display:flex;
  align-items:center;
  gap:7px;
  width:100%;
  background:var(--surface-2);
  border:1px solid var(--border);
  color:var(--text);
  font-size:.82rem;
  font-weight:700;
  cursor:pointer;
  padding:10px 12px;
  border-radius:var(--radius-sm);
  margin-bottom:2px;
  font-family:inherit;
}

.ccg-adv-toggle .ccg-chev{
  margin-left:auto;
  transition:transform .2s ease;
  color:var(--text-muted);
  font-size:.75rem;
}

.ccg-adv-toggle.ccg-open .ccg-chev{ transform:rotate(180deg); }

.ccg-adv-panel{
  display:none;
  padding-top:14px;
}

.ccg-adv-panel.ccg-open{ display:block; }

.ccg-hint{
  font-size:.72rem;
  color:var(--text-muted);
  margin-top:6px;
  line-height:1.5;
}

.ccg-btn{
  width:100%;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  border:none;
  border-radius:var(--radius-sm);
  padding:12px 16px;
  font-size:.9rem;
  font-weight:700;
  cursor:pointer;
  font-family:inherit;
}

.ccg-btn-primary{
  background:linear-gradient(135deg,var(--primary),var(--primary-2));
  color:#fff;
  box-shadow:var(--shadow-sm);
  margin-top:6px;
}

.ccg-btn-primary:hover{ filter:brightness(1.05); }

.ccg-btn-ghost{
  background:var(--surface);
  color:var(--text-muted);
  border:1px solid var(--border);
  margin-top:9px;
}

.ccg-disclaimer{
  display:flex;
  gap:9px;
  font-size:.74rem;
  color:var(--warn);
  background:var(--warn-soft);
  border:1px solid var(--warn-border);
  border-radius:var(--radius-sm);
  padding:11px 12px;
  margin-top:16px;
  line-height:1.55;
}

.ccg-disclaimer .ccg-icon{ flex-shrink:0; margin-top:1px; }

/* ===== RESULTS ===== */
.ccg-results-header{
  display:flex;
  align-items:center;
  justify-content:space-between;
  margin-bottom:14px;
  padding:0 2px;
}

.ccg-results-header h2{
  margin:0;
  font-size:1.02rem;
  font-weight:700;
}

.ccg-count-badge{
  font-size:.76rem;
  font-weight:700;
  color:var(--text-muted);
  background:var(--surface);
  border:1px solid var(--border);
  padding:4px 11px;
  border-radius:20px;
}

.ccg-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(307px,1fr));
  gap:18px;
}

.ccg-empty-state{
  grid-column:1/-1;
  text-align:center;
  color:var(--text-muted);
  font-size:.88rem;
  padding:70px 20px;
  background:var(--surface);
  border:1px dashed var(--border);
  border-radius:var(--radius-lg);
}

.ccg-empty-state .ccg-icon{
  width:1.8rem;
  height:1.8rem;
  color:var(--border);
  display:block;
  margin:0 auto 12px;
}

.ccg-result-card{
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  box-shadow:var(--shadow-sm);
  padding:16px;
  transition:box-shadow .2s ease, transform .2s ease;
}

.ccg-result-card:hover{
  box-shadow:var(--shadow-md);
  transform:translateY(-2px);
}

.ccg-flip-hint{
  text-align:center;
  font-size:.72rem;
  color:var(--text-muted);
  margin-bottom:10px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:5px;
}

/* CARD VISUAL */
.ccg-card-wrapper{
  perspective:1200px;
  display:flex;
  justify-content:center;
  margin-bottom:14px;
}

.ccg-card{
  width:100%;
  max-width:320px;
  aspect-ratio:1.586/1;
  border-radius:16px;
  position:relative;
  transform-style:preserve-3d;
  transition:.6s;
  cursor:pointer;
}

.ccg-card.ccg-flipped{ transform:rotateY(180deg); }

.ccg-face{
  position:absolute;
  inset:0;
  border-radius:16px;
  backface-visibility:hidden;
  color:#fff;
  padding:18px;
  box-sizing:border-box;
  box-shadow:0 14px 30px rgba(0,0,0,.22);
  overflow:hidden;
}

.ccg-face.ccg-back{
  transform:rotateY(180deg);
}

.ccg-face::before{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(160deg,rgba(255,255,255,.16),transparent 55%);
  pointer-events:none;
}

.ccg-face::after{
  content:"SPECIMEN";
  position:absolute;
  bottom:38px;
  right:-26px;
  font-size:13px;
  font-weight:800;
  letter-spacing:3px;
  color:rgba(255,255,255,.25);
  transform:rotate(-18deg);
  pointer-events:none;
}

.ccg-face-top{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
}

.ccg-chip{
  width:36px;
  height:27px;
  border-radius:5px;
  background:linear-gradient(135deg,#f4dd8a,#c8a13b);
  position:relative;
}

.ccg-chip::before,.ccg-chip::after{
  content:"";
  position:absolute;
  background:rgba(0,0,0,.25);
}

.ccg-chip::before{ top:50%; left:4px; right:4px; height:1px; }
.ccg-chip::after{ left:50%; top:4px; bottom:4px; width:1px; }

.ccg-network-mark{
  font-size:.92rem;
  font-weight:800;
  font-style:italic;
  letter-spacing:.4px;
  line-height:1;
}

.ccg-card-number{
  font-size:1.12rem;
  margin-top:18px;
  letter-spacing:2px;
  font-family:'Courier New',monospace;
  font-weight:600;
}

.ccg-bottom{
  position:absolute;
  bottom:16px;
  left:18px;
  right:18px;
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
}

.ccg-label-mini{
  display:block;
  font-size:8px;
  opacity:.75;
  letter-spacing:1px;
  margin-bottom:3px;
}

.ccg-value{ font-size:12px; letter-spacing:.5px; font-weight:600; }

.ccg-back .ccg-stripe{
  background:#111;
  height:38px;
  margin:16px -18px 0;
}

.ccg-back .ccg-signature{
  margin-top:18px;
  background:repeating-linear-gradient(45deg,rgba(255,255,255,.85),rgba(255,255,255,.85) 4px,#fff 4px,#fff 8px);
  border-radius:4px;
  height:32px;
  display:flex;
  align-items:center;
  justify-content:flex-end;
  padding-right:10px;
}

.ccg-cvv-box{
  background:#fff;
  color:#111;
  font-weight:700;
  font-size:13px;
  padding:6px 10px;
  border-radius:3px;
  font-family:'Courier New',monospace;
}

.ccg-small-note{
  margin-top:14px;
  font-size:9px;
  opacity:.8;
  line-height:1.6;
}

/* DETAILS */
.ccg-detail-list{
  border-top:1px solid var(--border);
  padding-top:12px;
}

.ccg-detail-row{
  display:flex;
  align-items:center;
  gap:8px;
  padding:5px 0;
}

.ccg-detail-row .ccg-dr-label{
  font-size:.7rem;
  font-weight:700;
  color:var(--text-muted);
  text-transform:uppercase;
  letter-spacing:.03em;
  width:56px;
  flex-shrink:0;
}

.ccg-detail-row .ccg-val{
  font-family:'Courier New',monospace;
  font-weight:600;
  font-size:.83rem;
  flex:1;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}

.ccg-icon-btn{
  background:var(--primary-soft);
  border:1px solid transparent;
  color:var(--primary);
  width:26px;
  height:26px;
  border-radius:7px;
  cursor:pointer;
  font-size:.72rem;
  flex-shrink:0;
  display:flex;
  align-items:center;
  justify-content:center;
}

.ccg-icon-btn:hover{ filter:brightness(0.97); }

.ccg-copy-all{
  margin-top:12px;
  width:100%;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:7px;
  background:var(--surface-2);
  color:var(--text);
  border:1px solid var(--border);
  padding:9px;
  border-radius:var(--radius-sm);
  font-size:.8rem;
  font-weight:700;
  cursor:pointer;
  font-family:inherit;
}

.ccg-copy-all:hover{ border-color:var(--primary); color:var(--primary); }

.ccg-note{ margin-top: 20px; font-size: 12px; color: var(--text-muted); line-height: 1.6; background: var(--surface-2); border: 1px solid var(--border); border-radius: 8px; padding: 10px 14px; }
.ccg-note code{ background: var(--primary-soft); border-radius: 4px; padding: 1px 5px; font-family: 'Courier New', monospace; }

/* TOAST */
.ccg-toast{
  position:fixed;
  bottom:26px;
  left:50%;
  transform:translateX(-50%) translateY(16px);
  background:var(--text);
  color:var(--bg);
  padding:11px 20px;
  border-radius:10px;
  font-size:.85rem;
  font-weight:600;
  opacity:0;
  pointer-events:none;
  transition:opacity .25s ease, transform .25s ease;
  z-index:99;
  box-shadow:var(--shadow-lg);
}

.ccg-toast.ccg-show{
  opacity:1;
  transform:translateX(-50%) translateY(0);
}
