/* app.css - Redesign for Nongbokwa Neo */
:root {
  --color-primary: #FF6B35; /* Vibrant Orange */
  --color-primary-dark: #E85D2C;
  --color-primary-light: rgba(255, 107, 53, 0.15);
  --color-bg: #151517; /* Very dark background */
  --color-surface: #222225; /* Dark surface for cards */
  --color-text-main: #FFFFFF; /* White text */
  --color-text-muted: #A0A0A5; /* Light grey text */
  --color-border: #333338; /* Dark borders */
  --color-success: #4CAF50;
  --color-success-bg: rgba(76, 175, 80, 0.15);
  --color-danger: #F44336;
  --color-danger-bg: rgba(244, 67, 54, 0.15);
  --color-info: #4FC3F7;
  --color-info-bg: rgba(79, 195, 247, 0.15);
  --color-warning-bg: rgba(255, 152, 0, 0.15);
  
  --shadow-sm: 0 4px 12px rgba(0, 0, 0, 0.2);
  --shadow-md: 0 8px 24px rgba(0, 0, 0, 0.3);
  --shadow-lg: 0 16px 32px rgba(0, 0, 0, 0.4);
  
  --radius-sm: 10px;
  --radius-md: 16px;
  --radius-lg: 24px;
  --radius-pill: 99px;
  
  --font-sans: 'Noto Sans Thai', -apple-system, BlinkMacSystemFont, sans-serif;
  --safe-bottom: env(safe-area-inset-bottom, 12px);
}

* { box-sizing: border-box; }
body {
  margin: 0;
  font-family: var(--font-sans);
  background: var(--color-bg);
  color: var(--color-text-main);
  padding-bottom: calc(72px + var(--safe-bottom));
  -webkit-font-smoothing: antialiased;
}
.page { padding: 16px; max-width: 500px; margin: 0 auto; }
.map-page { padding: 0; max-width: 100%; }

/* ---- Bottom Nav ---- */
.bottom-nav {
  position: fixed; left: 0; right: 0; bottom: 0;
  display: flex; justify-content: space-around;
  background: var(--color-surface);
  border-top: 1px solid var(--color-border);
  padding: 10px 0 var(--safe-bottom);
  z-index: 100;
  box-shadow: var(--shadow-lg);
}
.bottom-nav a {
  display: flex; flex-direction: column; align-items: center;
  font-size: 11px; color: var(--color-text-muted); text-decoration: none; gap: 4px;
  font-weight: 600; transition: all 0.25s ease;
  flex: 1; padding: 4px 0;
}
.bottom-nav a svg {
  width: 24px; height: 24px; fill: none; stroke: currentColor;
  stroke-width: 2; stroke-linecap: round; stroke-linejoin: round;
  transition: transform 0.25s ease, stroke-width 0.25s ease;
}
.bottom-nav a.active { color: var(--color-primary); }
.bottom-nav a.active svg { transform: translateY(-3px) scale(1.1); stroke-width: 2.5; }
.bottom-nav a span { display: block; font-size: 11px; }

/* ---- map controls ---- */
#controls { margin-bottom: 0; position: relative; z-index: 10; padding: 16px 16px 0; background: var(--color-bg); }
#search {
  width: 100%; padding: 14px 16px 14px 44px; border: 1px solid var(--color-border); border-radius: var(--radius-pill);
  font-size: 15px; margin-bottom: 12px; box-shadow: var(--shadow-sm);
  background: var(--color-surface) url('data:image/svg+xml;utf8,<svg viewBox="0 0 24 24" fill="none" stroke="%23A0A0A5" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line></svg>') no-repeat 16px center;
  background-size: 18px; outline: none; transition: all 0.2s; font-family: var(--font-sans); color: var(--color-text-main);
}
#search:focus { border-color: var(--color-primary); box-shadow: 0 0 0 3px rgba(255,107,53,0.15); }
#chips {
  display: flex; gap: 8px; overflow-x: auto; padding: 4px 16px 12px;
  margin: 0 -16px; scrollbar-width: none; -webkit-overflow-scrolling: touch;
}
#chips::-webkit-scrollbar { display: none; }
.chip {
  flex: 0 0 auto; padding: 8px 16px; border-radius: var(--radius-pill); border: 1px solid var(--color-border);
  background: var(--color-surface); color: var(--color-text-main); font-size: 14px; white-space: nowrap;
  font-weight: 600; cursor: pointer; transition: all 0.2s ease; box-shadow: var(--shadow-sm); display: flex; align-items: center; gap: 4px;
}
.chip.active { background: var(--color-primary-light); border-color: var(--color-primary); color: var(--color-primary); transform: scale(1.02); }

#controls-row { display: flex; align-items: center; gap: 8px; margin-top: 0; padding-bottom: 12px; }
#radius, #area { padding: 8px 12px; border-radius: var(--radius-pill); border: 1px solid var(--color-border); background: var(--color-surface); font-family: var(--font-sans); font-size: 13px; font-weight: 600; color: var(--color-text-main); outline: none; }
.open-toggle { font-size: 14px; display: flex; align-items: center; gap: 6px; font-weight: 600; color: var(--color-text-main); }
.open-toggle input[type=checkbox] { accent-color: var(--color-primary); width: 18px; height: 18px; }

/* Use my location button styling */
#use-my-location {
  padding: 12px 20px; border-radius: var(--radius-pill); border: none;
  background: var(--color-primary-light); color: var(--color-primary-dark); font-size: 14px; font-weight: 700;
  cursor: pointer; display: inline-flex; align-items: center; gap: 6px; font-family: var(--font-sans); transition: transform 0.2s;
}
#use-my-location:active { transform: scale(0.95); }

/* In map page, it's floating */
.map-page #use-my-location {
  position: absolute; bottom: 20px; right: 16px; z-index: 10;
  width: 50px; height: 50px; border-radius: 50%; padding: 0;
  background: var(--color-surface); color: var(--color-primary);
  box-shadow: var(--shadow-lg); border: none; font-size: 0;
  justify-content: center;
}
.map-page #use-my-location::after {
  content: ''; display: block; width: 22px; height: 22px;
  background-image: url('data:image/svg+xml;utf8,<svg viewBox="0 0 24 24" fill="none" stroke="%23FF7A59" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><polygon points="3 11 22 2 13 21 11 13 3 11"></polygon></svg>');
  background-size: contain; background-repeat: no-repeat;
}

.geo-feedback { font-size: 13px; padding: 10px 14px; border-radius: var(--radius-md); margin-top: 8px; text-align: center; font-weight: 600; }
.geo-feedback.ok, .geo-status.ok { background: var(--color-success-bg); color: var(--color-success); border: 1px solid #C8E6C9; }
.geo-feedback.warn, .geo-status.warn { background: var(--color-warning-bg); color: #F57F17; border: 1px solid #FFECB3; }

#list-banner { background: var(--color-warning-bg); color: #F57F17; padding: 10px 14px; border-radius: var(--radius-md); font-size: 13px; margin: 0 16px 12px; font-weight: 600; border: 1px solid #FFECB3; }

.map-container { position: relative; }
#map { width: 100%; height: 45vh; min-height: 250px; background: #E0E0E0; position: relative; z-index: 1; }

/* ---- place list (Bottom Sheet style) ---- */
.place-list {
  display: flex; flex-direction: column; gap: 12px;
  background: var(--color-bg); position: relative; z-index: 2;
  border-radius: 24px 24px 0 0; padding: 24px 16px 16px;
  margin-top: -24px; box-shadow: 0 -8px 24px rgba(0, 0, 0, 0.4);
  min-height: 50vh;
}
.place-list::before {
  content: ''; display: block; width: 40px; height: 5px;
  background: var(--color-border); border-radius: 4px; position: absolute;
  top: 10px; left: 50%; transform: translateX(-50%);
}
.place-card {
  background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: 16px;
  box-shadow: var(--shadow-sm); transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s; cursor: pointer;
}
.place-card:active { transform: scale(0.98); background: #28282B; }
.place-card-title { font-weight: 700; font-size: 16px; margin-bottom: 6px; display: flex; align-items: center; gap: 6px; }
.place-card-meta { font-size: 13.5px; color: var(--color-text-muted); display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.place-card-meta .status { padding: 4px 10px; border-radius: var(--radius-pill); font-size: 12px; font-weight: 700; }
.place-card-meta .status.open { background: var(--color-success-bg); color: var(--color-success); }
.place-card-meta .status.closed { background: var(--color-danger-bg); color: var(--color-danger); }
.place-card-meta .confirm { color: var(--color-info); font-weight: 600; font-size: 12.5px; display: inline-flex; align-items: center; gap: 4px; background: var(--color-info-bg); padding: 4px 10px; border-radius: var(--radius-pill); }
.empty-state { padding: 40px 16px; text-align: center; color: var(--color-text-muted); font-size: 15px; font-weight: 500; }
.empty-state a { color: var(--color-primary); font-weight: 700; text-decoration: none; }

/* ---- place detail ---- */
.place-detail { max-width: 500px; margin: 0 auto; padding: 16px; background: var(--color-bg); }
.place-detail h1 { font-size: 26px; margin: 0 0 8px; font-weight: 800; }
.place-detail .category { color: var(--color-primary-dark); font-weight: 700; font-size: 14px; margin: 0 0 16px; background: var(--color-primary-light); display: inline-block; padding: 6px 12px; border-radius: var(--radius-pill); }
.place-detail .address { color: var(--color-text-main); font-size: 15px; line-height: 1.6; margin-bottom: 16px; }
.place-detail a { color: var(--color-primary); text-decoration: none; font-weight: 600; }
.banner-closed { background: var(--color-danger-bg); color: var(--color-danger); padding: 12px 16px; border-radius: var(--radius-md); margin-bottom: 16px; font-weight: 700; font-size: 14px; text-align: center; border: 1px solid #FFCDD2; }
.confirm-badge { color: var(--color-info); font-weight: 700; font-size: 14px; background: var(--color-info-bg); display: inline-block; padding: 8px 16px; border-radius: var(--radius-pill); margin-bottom: 16px; border: 1px solid #BBDEFB; }
.place-note { background: #FFF8E1; padding: 16px; border-radius: var(--radius-md); font-size: 14px; font-weight: 600; color: #F57F17; border: 1px solid #FFECB3; margin-bottom: 16px; line-height: 1.5; }
.photo-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin: 16px 0; }
.photo-grid img { width: 100%; aspect-ratio: 1; object-fit: cover; border-radius: var(--radius-md); box-shadow: var(--shadow-sm); }
.btn-nav {
  display: flex; justify-content: center; align-items: center; gap: 8px;
  background: var(--color-primary); color: #fff; text-decoration: none;
  padding: 16px; border-radius: var(--radius-pill); font-weight: 800; font-size: 16px; margin: 24px 0;
  box-shadow: 0 6px 16px rgba(255,122,89,0.3); transition: transform 0.2s;
}
.btn-nav:active { transform: scale(0.97); }
.place-actions { display: flex; flex-direction: column; gap: 12px; }
.place-actions details { background: var(--color-surface); padding: 16px; border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); border: 1px solid var(--color-border); }
.place-actions details summary { font-weight: 700; font-size: 15px; cursor: pointer; color: var(--color-text-main); outline: none; }
.place-actions form { margin: 12px 0 0; display: flex; flex-direction: column; gap: 10px; }
.place-actions select, .place-actions input[type=text], .place-actions input[type=file] { width: 100%; padding: 12px; border-radius: var(--radius-md); border: 1px solid var(--color-border); font-family: var(--font-sans); font-size: 14px; background: var(--color-bg); }
.place-actions button { padding: 12px; border-radius: var(--radius-pill); border: none; background: #EEEEEE; font-weight: 700; font-family: var(--font-sans); font-size: 14px; cursor: pointer; transition: background 0.2s; color: var(--color-text-main); }
.place-actions button:active { background: #E0E0E0; }
.not-found { text-align: center; padding: 80px 16px; }
.not-found h1 { font-size: 24px; font-weight: 800; margin-bottom: 8px; }
.not-found p { color: var(--color-text-muted); margin-bottom: 24px; }
.not-found a { display: inline-block; background: var(--color-primary); color: white; padding: 12px 24px; border-radius: var(--radius-pill); text-decoration: none; font-weight: 700; }

/* ---- อ่านใจน้อง / จ่ายเงิน / admin ---- */
.hero { text-align: center; padding: 16px 16px 24px; }
.hero h1 { font-size: 28px; margin: 0 0 8px; color: var(--color-primary-dark); font-weight: 800; letter-spacing: -0.5px; }
.card { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: 24px; margin-bottom: 16px; box-shadow: var(--shadow-md); }
.card.center, .center { text-align: center; }
.small { font-size: 13.5px; color: var(--color-text-muted); line-height: 1.6; }
.msg { background: var(--color-info-bg); border-radius: var(--radius-md); padding: 12px 16px; margin: 12px 0; font-size: 14px; font-weight: 600; border: 1px solid #BBDEFB; color: #1565C0; }
.msg.warn { background: var(--color-warning-bg); color: #F57F17; border-color: #FFECB3; }
.species { display: flex; gap: 12px; margin-bottom: 16px; }
.species label { display: flex; align-items: center; gap: 8px; font-size: 15px; font-weight: 700; background: var(--color-bg); padding: 14px; border-radius: var(--radius-md); border: 1px solid var(--color-border); flex: 1; justify-content: center; cursor: pointer; transition: all 0.2s; }
.species label:has(input:checked) { background: var(--color-primary-light); border-color: var(--color-primary); color: var(--color-primary-dark); }
.species input[type=radio] { accent-color: var(--color-primary); transform: scale(1.2); }
.result-mode-pick { margin-top: 24px; background: var(--color-bg); padding: 16px; border-radius: var(--radius-md); border: 1px solid var(--color-border); }
.result-mode-pick .mode-choice { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; margin-right: 16px; font-weight: 600; }
.result-mode-pick input[type=radio] { accent-color: var(--color-primary); transform: scale(1.2); }
.fld { display: block; font-weight: 800; font-size: 15px; margin: 0 0 10px; color: var(--color-text-main); }
input[type=text], input[type=password], input[type=file], textarea, input[type=number], input[type=tel] {
  width: 100%; padding: 14px 16px; border: 1px solid var(--color-border); border-radius: var(--radius-md); font-size: 15px; font-family: var(--font-sans); background: var(--color-bg); transition: all 0.2s; color: var(--color-text-main);
}
input:focus, textarea:focus { outline: none; border-color: var(--color-primary); box-shadow: 0 0 0 3px rgba(255,122,89,0.15); background: var(--color-surface); }
textarea { min-height: 120px; resize: vertical; line-height: 1.5; }
.btn {
  display: inline-block; text-align: center; background: linear-gradient(135deg, #FF7B49 0%, #FF5011 100%); color: #fff; text-decoration: none;
  padding: 16px 20px; border-radius: var(--radius-pill); font-weight: 800; border: none; font-size: 16px; cursor: pointer; width: 100%;
  box-shadow: 0 8px 24px rgba(255,107,53,0.3); transition: transform 0.2s, box-shadow 0.2s; font-family: var(--font-sans);
}
.btn:active { transform: scale(0.97); box-shadow: 0 4px 12px rgba(255,107,53,0.3); }
.btn.alt { background: var(--color-surface); color: var(--color-primary); border: 2px solid var(--color-primary); box-shadow: none; }
.quota-line { font-size: 13.5px; color: var(--color-text-muted); margin-top: 16px; text-align: center; font-weight: 500; }
.quota-line a { color: var(--color-primary); font-weight: 700; text-decoration: none; }

/* Add Place page */
.add-place { padding: 16px; max-width: 500px; margin: 0 auto; }
.add-place h1 { font-size: 24px; font-weight: 800; margin: 0 0 6px; }
.add-place .hint { color: var(--color-text-muted); font-size: 14px; margin-bottom: 24px; line-height: 1.5; }
.add-place form { background: var(--color-surface); padding: 24px; border-radius: var(--radius-lg); box-shadow: var(--shadow-md); }
.add-place label { display: block; font-weight: 700; font-size: 14px; margin-bottom: 20px; }
.add-place label input, .add-place label select { margin-top: 8px; }
.add-place select { width: 100%; padding: 14px 16px; border: 1px solid var(--color-border); border-radius: var(--radius-md); font-size: 15px; font-family: var(--font-sans); background: var(--color-bg); font-weight: 500; }
.add-place .manual-geo { margin: 24px 0 0; font-size: 14px; color: var(--color-text-muted); background: var(--color-bg); padding: 16px; border-radius: var(--radius-md); }
.add-place .manual-geo summary { cursor: pointer; font-weight: 700; outline: none; }
.add-place .manual-geo label { margin-top: 12px; margin-bottom: 0; }
.add-place .geo-primary { margin: 24px 0 16px; }

/* Upload Zone (Read) */
input[type=file] {
  padding: 32px 20px; border: 2px dashed #D7CCC8; text-align: center; background: #FAFAFA; color: var(--color-text-muted); border-radius: var(--radius-md); cursor: pointer; transition: all 0.2s;
}
input[type=file]:hover, input[type=file]:focus { border-color: var(--color-primary); background: var(--color-primary-light); color: var(--color-primary-dark); }

/* Pokemon Card Logic (Unchanged classes, just refined styling slightly within boundaries) */
.pkmn-card { position:relative; width: 100%; max-width: 380px; margin: 16px auto; border-radius: 20px; padding: 13px; color: #000; background: linear-gradient(135deg, #fff3b0 0%, #e8bd3a 18%, #b8860b 50%, #e8bd3a 82%, #fff3b0 100%); box-shadow: 0 14px 34px rgba(0,0,0,0.55), inset 0 0 0 1px rgba(255,255,255,0.55), inset 0 0 0 3px rgba(150,110,10,0.55); overflow: hidden; font-family: "Noto Sans Thai", sans-serif; }
.pkmn-card::after { content:''; position:absolute; inset:0; border-radius:20px; background: linear-gradient(115deg, rgba(255,255,255,0) 40%, rgba(255,255,255,0.16) 47%, rgba(255,255,255,0) 54%); pointer-events:none; z-index:3; }
.pkmn-inner { background: linear-gradient(180deg, #fbfbfb, #dcdcdc); border-radius: 8px; box-shadow: 0 0 0 2px rgba(255,255,255,0.7), 0 0 0 3px #9a7b17, inset 0 0 10px rgba(0,0,0,0.12); padding: 9px 12px 14px; position: relative; z-index: 1; }
.pkmn-card.type-happy .pkmn-inner { background: linear-gradient(160deg, #FF9EBB 0%, #FFB3C6 40%, #FF729F 100%); }
.pkmn-card.type-calm .pkmn-inner, .pkmn-card.type-sad .pkmn-inner { background: linear-gradient(160deg, #80DEEA 0%, #B2EBF2 40%, #0097A7 100%); }
.pkmn-card.type-curious .pkmn-inner { background: linear-gradient(160deg, #FFF59D 0%, #FFF9C4 40%, #FBC02D 100%); }
.pkmn-card.type-playful .pkmn-inner { background: linear-gradient(160deg, #FFAB91 0%, #FFCCBC 40%, #E64A19 100%); }
.pkmn-card.type-anxious .pkmn-inner, .pkmn-card.type-scared .pkmn-inner { background: linear-gradient(160deg, #CE93D8 0%, #E1BEE7 40%, #8E24AA 100%); }
.pkmn-card.type-annoyed .pkmn-inner { background: linear-gradient(160deg, #EF9A9A 0%, #FFCDD2 40%, #C62828 100%); }
.pkmn-card.type-pain .pkmn-inner { background: linear-gradient(160deg, #B0BEC5 0%, #CFD8DC 40%, #546E7A 100%); }
.pkmn-header { display: flex; justify-content: space-between; align-items: flex-start; gap: 8px; margin-bottom: 3px; }
.pkmn-titlecol { display:flex; flex-direction:column; align-items:flex-start; min-width:0; flex:1; }
.pkmn-stage { display:inline-block; font-size: 0.6rem; font-weight: 800; color: #5a4a12; letter-spacing: 0.2px; background: linear-gradient(180deg,#fff,#f0e6c4); border:1px solid #c9b56a; border-radius: 999px; padding: 2px 9px; box-shadow: 0 1px 1px rgba(0,0,0,0.12); white-space:nowrap; }
.pkmn-name { font-size: clamp(1.15rem, 6vw, 1.5rem); font-weight: 800; letter-spacing: -0.3px; line-height: 1.08; color: #14110a; text-shadow: 0 1px 0 rgba(255,255,255,0.55); margin-top: 3px; max-width:100%; overflow-wrap:anywhere; word-break:break-word; }
.pkmn-hp { flex-shrink:0; display: flex; align-items: center; gap: 4px; line-height:1; white-space:nowrap; }
.pkmn-hp .hp-lbl { font-size: 0.62rem; color: #333; font-weight: 900; align-self:flex-end; margin-bottom:2px; }
.pkmn-hp .hp-num { font-size: 1.5rem; font-weight: 900; color: #c40000; text-shadow: 0 1px 0 rgba(255,255,255,0.5); }
.pkmn-type-icon { width: 26px; height: 26px; background: radial-gradient(circle at 32% 28%, #fff, #d6d6d6 70%, #b7b7b7); border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; box-shadow: 0 1px 3px rgba(0,0,0,0.45), inset 0 -2px 4px rgba(0,0,0,0.22), inset 0 2px 3px rgba(255,255,255,0.9); font-size: 0.95rem; margin-left: 2px; }
.pkmn-img-box { background: #ccc; height: 200px; border-radius: 4px; position: relative; box-shadow: 0 0 0 3px #e9d89a, 0 0 0 4px #9a7b17, 1px 2px 6px rgba(0,0,0,0.45); display: flex; align-items: center; justify-content: center; margin-top: 4px; overflow: hidden; }
.pkmn-img-box img { width: 100%; height: 100%; object-fit: cover; }
.pkmn-holo { position: absolute; inset: 0; background: linear-gradient(125deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0.06) 34%, rgba(255,255,255,0.22) 46%, rgba(255,255,255,0.06) 52%, rgba(255,255,255,0) 100%); mix-blend-mode: screen; opacity: 0.4; pointer-events: none; z-index: 2; }
.pkmn-holo::after { content: ''; position: absolute; inset: 0; background-image: radial-gradient(circle, rgba(255,255,255,0.35) 10%, transparent 20%), radial-gradient(circle, rgba(255,255,255,0.35) 10%, transparent 20%); background-size: 22px 22px; background-position: 0 0, 11px 11px; mix-blend-mode: overlay; opacity: 0.22; }
.pkmn-stats-bar { background: linear-gradient(180deg, #f0d878, #cca23a 45%, #b8860b); padding: 4px 8px; font-size: 0.7rem; line-height: 1.35; font-weight: 700; text-align: center; color: #2a2205; margin: 8px auto 0; border-radius: 4px; border: 1px solid #8B6508; box-shadow: inset 0 1px 1px rgba(255,255,255,0.55), 0 1px 2px rgba(0,0,0,0.22); width: 100%; letter-spacing: 0; }
.pkmn-moves { padding: 8px 4px; margin-top: 4px; text-align: left; }
.pkmn-move { margin-bottom: 8px; border-bottom: 1px solid rgba(0,0,0,0.15); padding-bottom: 6px; }
.pkmn-move:last-child { margin-bottom: 0; border-bottom: none; padding-bottom: 0; }
.pkmn-move-head { display: flex; align-items: center; gap: 8px; margin-bottom: 2px; }
.pkmn-energy { display: inline-flex; width: 18px; height: 18px; background: radial-gradient(circle at 30% 30%, #fff, #ddd); border-radius: 50%; justify-content: center; align-items: center; font-size: 0.65rem; box-shadow: 0 1px 2px rgba(0,0,0,0.4), inset 0 -1px 2px rgba(0,0,0,0.1); }
.pkmn-move-name { font-weight: 800; font-size: 1.15rem; color: #000; letter-spacing:-0.2px; text-shadow: 1px 1px 0 rgba(255,255,255,0.3); }
.pkmn-move-dmg { margin-left: auto; font-weight: 800; font-size: 1.25rem; color:#000; text-shadow: 1px 1px 0 rgba(255,255,255,0.3); }
.pkmn-move-desc { font-size: 0.8rem; line-height: 1.3; color: #111; font-weight: 500; padding-left: 26px; }
.pkmn-footer { display: flex; justify-content: space-around; margin-top: 4px; padding: 4px 0; font-size: 0.65rem; text-align: center; font-weight: 700; color:#333; border-bottom: 1px solid rgba(0,0,0,0.15); }
.pkmn-footer span { display:block; font-size: 0.85rem; font-weight:800; color:#000; margin-top:1px;}
.pkmn-weakness span { color: #d32f2f; }
.pkmn-flavor { font-size: 0.65rem; color: #111; font-style: italic; margin-top: 6px; padding: 4px 6px; line-height: 1.25; font-weight: 500; text-align:left; border: 1px solid #b5a371; border-radius: 2px; background: rgba(255,255,255,0.4); }
.pkmn-credit { position: absolute; bottom: 8px; right: 14px; font-size: 0.55rem; font-weight: 700; color: #333; z-index:2;}
.pkmn-id-badge { position: absolute; bottom: 8px; left: 14px; font-size: 0.55rem; font-weight: 700; color: #333; z-index:2;}

/* ---- ผลลัพธ์แบบเรียบ (mode=plain) ---- */
.plain-result { margin: 16px auto; max-width: 380px; }
.plain-section { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: 20px; margin-bottom: 16px; box-shadow: var(--shadow-md); }
.plain-section h3 { margin: 0 0 12px; font-size: 18px; color: var(--color-primary-dark); font-weight: 800; }
.plain-emotion { font-size: 1.3rem; font-weight: 800; margin: 0 0 4px; color: var(--color-text-main); }
.plain-emotion .confidence { font-size: 14px; color: var(--color-text-muted); font-weight: 600; display: block; margin-top: 4px; }
.plain-quote { font-style: italic; margin: 0 0 12px; font-size: 16px; line-height: 1.6; color: var(--color-text-main); }
.plain-tips { margin: 0; padding-left: 20px; font-size: 15px; line-height: 1.6; color: var(--color-text-muted); }
.plain-tips li { margin-bottom: 8px; }

/* Buy */
.pack { border: 2px solid var(--color-border); border-radius: var(--radius-lg); padding: 20px; margin-bottom: 16px; position: relative; background: var(--color-surface); transition: all 0.2s; box-shadow: var(--shadow-sm); }
.pack.hot { border-color: var(--color-primary); box-shadow: 0 6px 16px rgba(255,122,89,0.15); background: #FFFDF9; }
.pack h3 { margin: 0 0 12px; font-size: 18px; font-weight: 800; display: flex; align-items: center; justify-content: space-between; }
.price { font-size: 1.8rem; font-weight: 800; color: var(--color-primary-dark); display: block; margin-bottom: 8px; }
.badge { background: #FFD54F; color: #7A5A10; border-radius: var(--radius-pill); padding: 4px 12px; font-size: 12px; font-weight: 800; display: inline-block; }
.qr { text-align: center; margin: 20px 0; }
.qr img { width: 200px; border-radius: 16px; border: 1px solid var(--color-border); background: #fff; padding: 12px; box-shadow: var(--shadow-sm); }
.steps { font-size: 14px; margin: 16px 0; color: var(--color-text-muted); line-height: 1.6; }
.code { font-size: 2rem; font-weight: 800; letter-spacing: 4px; text-align: center; color: var(--color-primary-dark);
  background: var(--color-primary-light); border-radius: var(--radius-md); padding: 20px; margin: 20px 0; box-shadow: inset 0 2px 4px rgba(0,0,0,0.05); }
.cite { font-size: 14px; margin: 16px 0; padding-bottom: 16px; border-bottom: 1px solid var(--color-border); line-height: 1.6; }
.cite:last-child { border-bottom: none; padding-bottom: 0; }
.cite b { color: var(--color-text-main); font-weight: 700; }
.cite a { color: var(--color-info); text-decoration: none; word-break: break-all; font-weight: 500; }
.upsell-head { font-weight: 800; margin-bottom: 16px; font-size: 18px; }
.upsell-grid { display: flex; flex-direction: column; gap: 12px; }
.offer { border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: 16px; display: flex; justify-content: space-between; align-items: center; background: var(--color-bg); transition: transform 0.2s, box-shadow 0.2s; box-shadow: var(--shadow-sm); }
.offer:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); }
.offer-name { font-weight: 700; font-size: 16px; }
.offer-price { color: var(--color-primary-dark); font-weight: 800; margin-top: 6px; font-size: 15px; }
.offer-btn { color: var(--color-primary); font-weight: 800; text-decoration: none; font-size: 20px; background: var(--color-primary-light); width: 36px; height: 36px; display: inline-flex; justify-content: center; align-items: center; border-radius: 50%; }
.admin-stats { display: flex; flex-wrap: wrap; gap: 16px; margin-bottom: 24px; }
.admin-stats .stat { flex: 1 1 120px; background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: 20px; text-align: center; box-shadow: var(--shadow-md); }
.admin-stats .stat b { display: block; font-size: 2rem; color: var(--color-primary-dark); font-weight: 800; margin-bottom: 4px; }
.admin-stats .stat span { font-size: 14px; color: var(--color-text-muted); font-weight: 600; }

/* Micro-interactions loader */
.loading-overlay { display: none; text-align: center; padding: 40px 20px; }
.loading-overlay .dog-loader { font-size: 40px; animation: bounce 1s infinite; display: inline-block; margin-bottom: 16px; }
@keyframes bounce { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-15px); } }
