:root{
  --bg:#0a0a0f;
  --bg-elevated:#12121a;
  --card:#1a1a24;
  --surface:#252530;
  --accent:#8b5cf6;
  --accent-hover:#7c3aed;
  --accent-glow:#a78bfa;
  --success:#10b981;
  --success-glow:#34d399;
  --danger:#ef4444;
  --danger-glow:#f87171;
  --warning:#f59e0b;
  --text:#e8e8f0;
  --text-secondary:#b0b0c0;
  --text-tertiary:#808090;
  --border:#2a2a35;
  --border-light:#35354a;
  --shadow: 0 4px 16px rgba(0,0,0,.4);
  --shadow-lg: 0 8px 32px rgba(0,0,0,.6);
  --radius: 12px;
  --radius-lg: 16px;
  --radius-xl: 24px;
  /* Layout sizing */
  --app-header-h: 56px;
  --scanner-header-h: 49px;
  --scanner-footer-h: 120px;
  
  /* Gradients */
  --gradient-primary: linear-gradient(135deg, #8b5cf6 0%, #6d28d9 100%);
  --gradient-success: linear-gradient(135deg, #10b981 0%, #059669 100%);
  --gradient-accent: linear-gradient(135deg, #a78bfa 0%, #8b5cf6 50%, #7c3aed 100%);
}

/* Light mode */
body.light-mode {
  --bg:#f5f5f9;
  --bg-elevated:#ffffff;
  --card:#ffffff;
  --surface:#fafafc;
  --accent:#7c3aed;
  --accent-hover:#6d28d9;
  --accent-glow:#8b5cf6;
  --success:#059669;
  --success-glow:#10b981;
  --danger:#dc2626;
  --danger-glow:#ef4444;
  --warning:#d97706;
  --text:#1a1a2e;
  --text-secondary:#5a5a6e;
  --text-tertiary:#8a8a9e;
  --border:#e0e0e8;
  --border-light:#cacad5;
  --shadow: 0 4px 16px rgba(0,0,0,.06);
  --shadow-lg: 0 8px 32px rgba(0,0,0,.1);
  --app-header-h: 56px;
  --scanner-header-h: 52px;
  --scanner-footer-h: 140px;
  
  /* Gradients for light mode */
  --gradient-primary: linear-gradient(135deg, #7c3aed 0%, #6d28d9 100%);
  --gradient-success: linear-gradient(135deg, #059669 0%, #047857 100%);
  --gradient-accent: linear-gradient(135deg, #8b5cf6 0%, #7c3aed 50%, #6d28d9 100%);
}

/* Remove auto light mode detection */
@media (prefers-color-scheme: light) {
  /* Don't auto-switch - let user control with toggle */
}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0;height:100%;overflow-x:hidden}
body{
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  color:var(--text);
  background: var(--bg);
  width:100%;
  max-width:100vw;
  overflow-x:hidden;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* Subtle texture for light mode to prevent flat look */
body.light-mode{
  background:
    radial-gradient(1200px 600px at 20% -10%, rgba(124,58,237,0.06), transparent 40%),
    radial-gradient(900px 500px at 120% 0%, rgba(16,185,129,0.05), transparent 45%),
    linear-gradient(180deg, #f9f9ff 0%, #f5f5f9 40%, #f2f2f7 100%);
}

/* Decorative background - vibrant in dark mode */
.bg-ornaments{position:fixed;inset:0;pointer-events:none;z-index:-1;overflow:hidden}
.blob{position:absolute;filter: blur(100px);opacity:.2;mix-blend-mode:screen;transition:opacity 0.3s}
.blob.b1{
  width:500px;
  height:500px;
  left:-100px;
  top:-100px;
  background:radial-gradient(circle, #a78bfa 0%, #8b5cf6 40%, transparent 70%);
  animation:float1 20s ease-in-out infinite;
}
.blob.b2{
  width:500px;
  height:500px;
  right:-100px;
  bottom:-100px;
  background:radial-gradient(circle, #34d399 0%, #10b981 40%, transparent 70%);
  animation:float2 18s ease-in-out infinite;
}

/* Light mode - subtle background */
body.light-mode .blob{
  opacity:.06;
  filter:blur(120px);
}

body.light-mode .blob.b1{
  background:radial-gradient(circle, #c4b5fd 0%, #a78bfa 40%, transparent 70%);
}

body.light-mode .blob.b2{
  background:radial-gradient(circle, #6ee7b7 0%, #34d399 40%, transparent 70%);
}

/* Light mode - header styling */
body.light-mode .app-header{
  background:rgba(245,245,249,0.92);
  border-bottom:1px solid var(--border);
  box-shadow: 0 2px 12px rgba(0,0,0,0.06);
}

@keyframes float1{
  0%, 100%{transform:translate(0,0) scale(1)}
  33%{transform:translate(30px,-40px) scale(1.1)}
  66%{transform:translate(-20px,20px) scale(0.9)}
}

@keyframes float2{
  0%, 100%{transform:translate(0,0) scale(1)}
  33%{transform:translate(-30px,40px) scale(0.9)}
  66%{transform:translate(20px,-20px) scale(1.1)}
}

.grid-bg{display:none} /* Remove grid on mobile */
.glow{display:none} /* Remove glow on mobile */

@media(min-width:768px){
  .blob{opacity:.25;filter:blur(120px)}
  .blob.b1{width:700px;height:700px}
  .blob.b2{width:800px;height:800px}
  .grid-bg{display:block;position:absolute;inset:-20% -20% auto -20%;height:60%;background-image: linear-gradient(transparent 95%, rgba(255,255,255,.03) 95%), linear-gradient(90deg, transparent 95%, rgba(255,255,255,.03) 95%);background-size:32px 32px;mask-image: radial-gradient(ellipse at top, black 30%, transparent 70%)}
}

/* Light mode desktop */
body.light-mode .blob{
  opacity:.08;
}

@media(min-width:768px){
  body.light-mode .blob{
    opacity:.1;
  }
}

/* Modern Mobile Header */
.app-header{
  position: fixed;
  top:0;
  left:0;
  right:0;
  background:rgba(10,10,15,0.9);
  backdrop-filter:blur(20px) saturate(180%);
  -webkit-backdrop-filter:blur(20px) saturate(180%);
  z-index:1000;
  border-bottom:1px solid var(--border);
  padding:0 16px;
  min-height:var(--app-header-h);
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  flex-wrap:wrap;
}

.brand{
  display:flex;
  align-items:center;
  gap:10px;
  color:var(--text);
  flex-shrink:1;
  min-width:0;
}

.brand svg{
  width:32px;
  height:32px;
  flex-shrink:0;
  color:var(--accent);
}

.brand h1{
  font-size:17px;
  font-weight:600;
  margin:0;
  letter-spacing:-0.02em;
}

.beta{
  font-size:10px;
  font-weight:700;
  background:var(--accent);
  color:#fff;
  padding:2px 6px;
  border-radius:6px;
  text-transform:uppercase;
  letter-spacing:0.05em;
  display:flex;
  align-items:center;
  justify-content:center;
  min-width:32px;
}

.actions{
  display:flex;
  gap:6px;
  align-items:center;
  flex-wrap:wrap;
}

.actions button{
  padding:8px 12px;
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:10px;
  display:flex;
  align-items:center;
  justify-content:center;
  color:var(--text);
  font-size:13px;
  font-weight:500;
  transition:all 0.2s;
  white-space:nowrap;
}

.actions button:active{
  background:var(--border);
  transform:scale(0.96);
}

/* Mobile header optimization */
@media(max-width:768px){
  .app-header{
    padding:0 12px;
    min-height:56px;
    height:auto;
  }
  
  .brand h1{
    font-size:16px;
  }
  
  .brand svg{
    width:28px;
    height:28px;
  }
  
  .beta{
    display:none; /* Hide PWA badge on small screens */
  }
  
  .actions{
    gap:4px;
  }
  
  .actions button{
    padding:6px 10px;
    font-size:12px;
  }
  
  /* Use icons/abbreviations on very small screens */
  @media(max-width:400px){
    .actions button#open-settings::before{
      content:"⚙️";
      margin-right:4px;
    }
    
    .actions button#restart-onboarding::before{
      content:"ℹ️";
      margin-right:4px;
    }
    
    .actions button#install-btn::before{
      content:"📥";
      margin-right:4px;
    }
  }
  
  /* Even more compact on tiny screens */
  @media(max-width:360px){
    .app-header{
      padding:0 8px;
    }
    
    .brand{
      gap:6px;
    }
    
    .brand h1{
      font-size:15px;
    }
    
    .actions button{
      padding:6px 8px;
      font-size:11px;
    }
  }
}

/* Container with safe area */
.container{
  max-width:1200px;
  margin:0 auto;
  padding-top:calc(var(--app-header-h) + 32px); /* header + spacing */
  padding-bottom:calc(24px + env(safe-area-inset-bottom));
  overflow-x:hidden;
  width:100%;
}

@media(min-width:769px){
  .container{
    padding-top:calc(var(--app-header-h) + 24px); /* header + spacing */
  }
}

.hero-actions{display:flex;gap:12px;flex-wrap:wrap}

/* Mobile-first cards */
.card{
  background:var(--card);
  border:1px solid var(--border);
  border-radius:var(--radius);
  overflow:hidden;
  width:100%;
  max-width:100%;
}

/* Hide hero on mobile */
@media(max-width:768px){
  .hero{display:none !important}
}

/* Desktop cards */
@media(min-width:769px){
  .container{
    padding:calc(56px + 24px) 24px 48px;
    gap:24px;
  }
  .card{
    padding:24px;
    border-radius:var(--radius-lg);
    box-shadow:var(--shadow);
  }
}

/* Hero Section */
.hero{
  padding:24px;
  display:grid;
  gap:16px;
}

@media(min-width:769px){
  .hero{
    margin:0 auto;
    max-width:900px;
  }
}

.hero h2{
  margin:0;
  font-size:28px;
  font-weight:700;
  letter-spacing:-0.02em;
}

.hero p{
  margin:0 0 16px;
  color:var(--text-secondary);
  line-height:1.5;
}

/* Form Fields */
.quick-setup{
  display:grid;
  grid-template-columns:1fr;
  gap:12px;
}

@media(min-width:880px){
  .quick-setup{
    grid-template-columns:auto 1fr auto auto;
    align-items:end;
  }
}

.field{
  display:flex;
  flex-direction:column;
  gap:8px;
}

.field label{
  font-size:14px;
  font-weight:600;
  color:var(--text);
}

.field input,
.field select{
  background:var(--surface);
  border:1px solid var(--border);
  color:var(--text);
  padding:12px 16px;
  border-radius:12px;
  outline:none;
  width:100%;
  font-size:15px;
  font-family:inherit;
  transition:border-color 0.2s;
}

.field input:focus,
.field select:focus{
  border-color:var(--accent);
}

.field input::placeholder{
  color:var(--text-tertiary);
}

/* Pill Selection */
.native-multi{
  position:absolute !important;
  opacity:0 !important;
  pointer-events:none !important;
  width:0;
  height:0;
}

.pill-group{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
}

.pill{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:8px 14px;
  border-radius:20px;
  border:1.5px solid var(--border);
  background:var(--surface);
  color:var(--text);
  cursor:pointer;
  user-select:none;
  transition:all 0.2s;
  font-size:14px;
  font-weight:500;
}

.pill::before{
  content:"";
  width:16px;
  height:16px;
  border-radius:50%;
  border:2px solid var(--border);
  background:transparent;
  display:inline-block;
  transition:all 0.2s;
}

input[type="checkbox"]:checked + .pill{
  background:rgba(139,92,246,0.15);
  border-color:var(--accent);
  color:var(--accent);
}

input[type="checkbox"]:checked + .pill::before{
  background:var(--accent);
  border-color:var(--accent);
  box-shadow:inset 0 0 0 3px var(--card);
}

.field.compact span{
  font-size:13px;
  color:var(--text-secondary);
}

.field.grow{
  width:100%;
}

.checkbox{
  display:flex;
  gap:10px;
  align-items:center;
  color:var(--text);
}

.checkbox.compact{
  align-items:end;
}

/* Modern Button System */
button{
  border:none;
  background:var(--surface);
  color:var(--text);
  padding:12px 20px;
  border-radius:12px;
  cursor:pointer;
  font-weight:600;
  font-size:15px;
  font-family:inherit;
  transition:all 0.2s ease;
  border:1px solid var(--border);
}

button:active{
  transform:scale(0.98);
}

button.primary{
  background:var(--gradient-primary);
  border-color:var(--accent);
  color:#fff;
  box-shadow:0 4px 16px rgba(139,92,246,0.4), 0 0 20px rgba(139,92,246,0.2);
  position:relative;
  overflow:hidden;
}

button.primary::before{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(135deg, rgba(255,255,255,0.1) 0%, transparent 50%);
  opacity:0;
  transition:opacity 0.3s;
}

button.primary:hover::before{
  opacity:1;
}

button.primary:active{
  background:var(--accent-hover);
  box-shadow:0 2px 8px rgba(139,92,246,0.5);
}

button.secondary{
  background:var(--surface);
  border-color:var(--border-light);
  color:var(--text);
}

button.secondary:active{
  background:var(--border);
}

button.ghost{
  background:transparent;
  border:none;
  color:var(--text-secondary);
  padding:8px 12px;
}

button.danger{
  background:rgba(239,68,68,0.1);
  border-color:rgba(239,68,68,0.3);
  color:var(--danger);
}

button.success{
  background:rgba(16,185,129,0.1);
  border-color:rgba(16,185,129,0.3);
  color:var(--success);
}

button:disabled{
  opacity:0.4;
  cursor:not-allowed;
  transform:none !important;
}

/* Full width buttons on mobile */
@media(max-width:768px){
  .hero-actions button,
  .result-actions button{
    width:100%;
  }
}

a{
  color:var(--accent);
  text-decoration:none;
  transition:opacity 0.2s;
}

a:active{
  opacity:0.7;
}

/* DB Import */
.db-grid{
  display:grid;
  grid-template-columns:1fr;
  gap:16px;
}

@media(min-width:900px){
  .db-grid{
    grid-template-columns:1.2fr .8fr;
  }
}

.db-actions .row{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  align-items:center;
}

.db-actions input[type="url"]{
  flex:1;
  min-width:0;
  background:var(--surface);
  border:1px solid var(--border);
  color:var(--text);
  padding:12px 16px;
  border-radius:12px;
  max-width:100%;
  font-size:15px;
}

.db-status .kv > div{
  padding:12px 0;
}

/* Progress Bar */
.progress{
  height:8px;
  background:var(--surface);
  border-radius:99px;
  overflow:hidden;
  position:relative;
  box-shadow:inset 0 2px 4px rgba(0,0,0,0.1);
  border:2px solid var(--border);
}

.progress .bar{
  height:100%;
  background:var(--gradient-accent);
  width:0%;
  transition:width 0.3s ease;
  border-radius:99px;
  position:relative;
  overflow:hidden;
}

.progress .bar::after{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(90deg, transparent, rgba(255,255,255,0.3), transparent);
  animation:shimmer 2s infinite;
}

@keyframes shimmer{
  0%{transform:translateX(-100%)}
  100%{transform:translateX(100%)}
}

.muted{
  color:var(--text-secondary);
  font-size:14px;
}

/* Onboarding */
#onboarding .db-status{
  border:1px solid var(--border);
  border-radius:12px;
  padding:16px;
  background:var(--surface);
}

#onboarding .db-status .progress{
  margin-top:12px;
}

/* Scanner Section */
.scanner{
  background:var(--card);
  border:1px solid var(--border);
  border-radius:var(--radius);
  overflow:hidden;
  margin-top:16px;
  box-shadow:0 0 0 1px rgba(139,92,246,0.1), var(--shadow);
  transition:all 0.3s ease;
}
/* Light mode: slightly elevated card */
body.light-mode .scanner{
  box-shadow: 0 8px 32px rgba(0,0,0,0.06), 0 0 0 1px rgba(124,58,237,0.06);
}

.scanner:hover{
  box-shadow:0 0 0 1px rgba(139,92,246,0.2), 0 8px 24px rgba(0,0,0,.5);
}

@media(min-width:769px){
  .scanner{
    margin:24px auto 0;
    max-width:900px;
    border-radius:var(--radius-lg);
    box-shadow:0 0 0 1px rgba(139,92,246,0.15), var(--shadow-lg);
  }
  
  .scanner:hover{
    box-shadow:0 0 0 1px rgba(139,92,246,0.3), 0 12px 40px rgba(0,0,0,.6);
  }
}
@media(min-width:769px){
  body.light-mode .scanner{
    box-shadow: 0 16px 48px rgba(0,0,0,0.08), 0 0 0 1px rgba(124,58,237,0.08);
  }
}

.scanner-header{
  position:relative;
  z-index:0;
  display:flex;
  justify-content:space-between;
  align-items:center;
  padding:12px 16px;
  min-height: var(--scanner-header-h);
  background:var(--card);
  border-bottom:1px solid var(--border);
  border-radius:var(--radius) var(--radius) 0 0;
}

.scanner-header::after{
  content:"";
  position:absolute;
  inset:-1px;
  border-radius:inherit;
  border:1px solid rgba(139,92,246,0.45);
  box-shadow:0 0 20px rgba(139,92,246,0.25);
  pointer-events:none;
  z-index:-1;
}

body.light-mode .scanner-header::after{
  border-color:rgba(124,58,237,0.35);
  box-shadow:0 10px 24px rgba(124,58,237,0.12);
}

@media(min-width:769px){
  .scanner-header{
    border-radius:var(--radius-lg) var(--radius-lg) 0 0;
    padding:16px 20px;
  }
}

.scanner-header h3{
  font-size:16px;
  font-weight:700;
  letter-spacing:-0.01em;
  line-height:1.1;
  margin:0;
  color:var(--text);
  display:flex;
  align-items:center;
  gap:8px;
  flex:1 1 auto;
  min-width:0;
}

.scanner-header h3::before{
  content:"📷";
  font-size:18px;
  line-height:1;
  display:inline-flex;
  align-items:center;
  justify-content:center;
}

.cam-controls{
  position:relative;
  z-index:1001;
  display:flex;
  gap:10px;
  align-items:center;
}

.indicator{
  font-size:12px;
  padding:4px 10px;
  border-radius:12px;
  font-weight:600;
}

.indicator.off{
  background:var(--surface);
  color:var(--text-tertiary);
}

.indicator.on{
  background:var(--gradient-success);
  color:#fff;
  animation:pulse 2s infinite;
  box-shadow:0 0 16px rgba(16,185,129,0.5);
}

@keyframes pulse{
  0%, 100%{opacity:1}
  50%{opacity:0.7}
}

#camera-select{
  position:relative;
  z-index:1001;
  padding:6px 12px;
  border-radius:8px;
  background:var(--surface);
  border:1px solid var(--border);
  color:var(--text);
  font-size:13px;
  cursor:pointer;
}

/* Video Container - Full Screen on Mobile */
.video-wrap{
  position:relative;
  background:#000;
  overflow:hidden;
  width:100%;
  height:calc(100vh - var(--app-header-h, 56px) - var(--scanner-header-h, 49px) - var(--scanner-footer-h, 120px)); /* viewport - header - scanner-header - footer */
  min-height:400px;
  max-height:600px;
  display:flex;
  align-items:center;
  justify-content:center;
  border-radius:0;
  box-shadow:inset 0 0 40px rgba(0,0,0,0.8);
}

@media(max-width:768px){
  .video-wrap{
    height:calc(100vh - var(--app-header-h, 56px) - var(--scanner-header-h, 49px) - var(--scanner-footer-h, 140px));
    max-height:none;
  }
}

#video{width:100%;height:100%;object-fit:cover;background:#000}
.hidden{display:none !important}

/* Modern Scan Overlay */
.scan-overlay{
  position:absolute;
  inset:0;
  display:flex;
  align-items:center;
  justify-content:center;
  pointer-events:none;
  z-index:10;
}

.frame{
  position:relative;
  width:min(85%, 340px);
  aspect-ratio:1.6;
  border:2px solid rgba(139,92,246,0.6);
  border-radius:20px;
  background:rgba(139,92,246,0.08);
  box-shadow:0 0 0 99999px rgba(0,0,0,0.65),
             0 0 30px rgba(139,92,246,0.3),
             inset 0 0 20px rgba(139,92,246,0.1);
  backdrop-filter:blur(4px);
}
/* Light mode: softer vignette and clearer edge */
body.light-mode .frame{
  border-color: rgba(124,58,237,0.35);
  background: rgba(124,58,237,0.06);
  box-shadow: 0 0 0 99999px rgba(255,255,255,0.35),
              0 0 22px rgba(124,58,237,0.18),
              inset 0 0 14px rgba(124,58,237,0.08);
}

.corner{
  position:absolute;
  width:24px;
  height:24px;
  border:3px solid var(--accent);
  filter:drop-shadow(0 0 8px rgba(139,92,246,0.6));
  animation:cornerPulse 2s ease-in-out infinite;
}

@keyframes cornerPulse{
  0%, 100%{opacity:1; filter:drop-shadow(0 0 8px rgba(139,92,246,0.6))}
  50%{opacity:0.7; filter:drop-shadow(0 0 12px rgba(139,92,246,0.8))}
}

.corner.tl{top:-3px;left:-3px;border-right:none;border-bottom:none;border-radius:20px 0 0 0}
.corner.tr{top:-3px;right:-3px;border-left:none;border-bottom:none;border-radius:0 20px 0 0}
.corner.bl{bottom:-3px;left:-3px;border-right:none;border-top:none;border-radius:0 0 0 20px}
.corner.br{bottom:-3px;right:-3px;border-left:none;border-top:none;border-radius:0 0 20px 0}

.scanline{
  position:absolute;
  left:0;
  right:0;
  height:3px;
  background:linear-gradient(90deg, transparent, var(--accent-glow), var(--accent), var(--accent-glow), transparent);
  animation:scan 2s ease-in-out infinite;
  box-shadow:0 0 12px var(--accent), 0 0 24px rgba(139,92,246,0.5);
  filter:blur(1px);
}

@keyframes scan{
  0%, 100%{top:10%;opacity:0}
  10%{opacity:1}
  90%{opacity:1}
  100%{top:90%;opacity:0}
}

.hint{
  position:absolute;
  bottom:-50px;
  left:50%;
  transform:translateX(-50%);
  background:rgba(10,10,20,0.95);
  backdrop-filter:blur(12px);
  padding:12px 24px;
  border-radius:24px;
  color:rgba(255,255,255,0.95);
  font-size:13px;
  font-weight:600;
  white-space:nowrap;
  border:1px solid rgba(139,92,246,0.3);
  box-shadow:0 4px 16px rgba(0,0,0,0.5), 0 0 20px rgba(139,92,246,0.2);
  animation:hintFloat 3s ease-in-out infinite;
}
body.light-mode .hint{
  background: rgba(255,255,255,0.9);
  color: #3a3a4a;
  border:1px solid rgba(124,58,237,0.25);
  box-shadow: 0 6px 18px rgba(0,0,0,0.08), 0 0 0 1px rgba(124,58,237,0.08) inset;
}

@keyframes hintFloat{
  0%, 100%{transform:translateX(-50%) translateY(0)}
  50%{transform:translateX(-50%) translateY(-4px)}
}

/* Quagga video/canvas positioning */
.video-wrap video, 
.video-wrap canvas{
  position:absolute;
  inset:0;
  width:100% !important;
  height:100% !important;
  max-height:none !important;
  object-fit:cover;
  display:block;
}

.video-wrap video{z-index:1}
.video-wrap canvas{z-index:2}

/* Scanner Footer - Mobile Bottom Bar */
.scanner-footer{
  position:relative;
  background:var(--card);
  border-top:1px solid var(--border);
  padding:12px 16px 16px;
  min-height: var(--scanner-footer-h);
  display:flex;
  flex-direction:column;
  gap:16px;
  border-radius:0 0 var(--radius) var(--radius);
  box-shadow:0 0 0 1px rgba(139,92,246,0.45), 0 0 20px rgba(139,92,246,0.2);
}

body.light-mode .scanner-footer{
  box-shadow:0 0 0 1px rgba(124,58,237,0.35), 0 10px 24px rgba(124,58,237,0.12);
}

@media(min-width:769px){
  .scanner-footer{
    border-radius:0 0 var(--radius-lg) var(--radius-lg);
    padding:16px 20px 20px;
  }
}

.status-wrap{
  text-align:center;
  padding-bottom:14px;
  position:relative;
}

.status-wrap::after{
  content:"";
  position:absolute;
  left:calc(-16px - 3px);
  right:calc(-16px - 3px);
  bottom:-1px;
  height:2px;
  background:rgba(139,92,246,0.35);
  box-shadow:0 0 12px rgba(139,92,246,0.25);
  border-bottom-left-radius:var(--radius);
  border-bottom-right-radius:var(--radius);
}

body.light-mode .status-wrap::after{
  background:rgba(124,58,237,0.25);
  box-shadow:0 0 10px rgba(124,58,237,0.18);
}

.status{
  font-size:13px;
  color:var(--text-secondary);
  font-weight:500;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:8px;
}

.status::before{
  content:"";
  width:6px;
  height:6px;
  border-radius:50%;
  background:var(--accent);
  box-shadow:0 0 8px var(--accent);
  animation:statusPulse 2s ease-in-out infinite;
}

@keyframes statusPulse{
  0%, 100%{opacity:1; transform:scale(1)}
  50%{opacity:0.5; transform:scale(1.2)}
}

.alt-inputs{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8px;
  margin-top:14px;
}

.manual{
  grid-column:1 / -1;
  display:flex;
  gap:8px;
}

.manual input{
  flex:1;
  background:var(--surface);
  border:1px solid var(--border);
  color:var(--text);
  padding:12px 16px;
  border-radius:12px;
  font-size:15px;
  min-width:0;
}

.manual input::placeholder{
  color:var(--text-tertiary);
}

.manual button{
  padding:12px 20px;
  white-space:nowrap;
}

/* Upload button */
.upload-btn{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  border:1px solid var(--border);
  background:var(--surface);
  color:var(--text);
  padding:12px 16px;
  border-radius:12px;
  cursor:pointer;
  user-select:none;
  font-size:14px;
  font-weight:500;
  transition:background 0.2s, transform 0.1s;
}

.upload-btn:active{
  background:var(--border);
  transform:scale(0.98);
}

.upload-btn span{pointer-events:none}

@media(min-width:769px){
  .alt-inputs{
    grid-template-columns:repeat(3, 1fr);
  }
  .manual{
    grid-column:auto;
  }
}

/* Product Result Card */
.result{
  margin:24px 0 0;
  border-radius:0;
}

@media(min-width:769px){
  .result{
    margin:32px auto;
    max-width:900px;
    border-radius:var(--radius-lg);
  }
}

.result-header{
  padding:16px;
  background:var(--card);
  border-bottom:1px solid var(--border);
  display:flex;
  flex-direction:column;
  gap:12px;
}

.result-header .title h3{
  margin:0 0 8px;
  font-size:20px;
  font-weight:700;
  letter-spacing:-0.02em;
}

.badge{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:8px 14px;
  border-radius:20px;
  font-size:13px;
  font-weight:600;
  width:fit-content;
  position:relative;
  overflow:hidden;
}

.badge.ok{
  background:linear-gradient(135deg, rgba(16,185,129,0.2) 0%, rgba(52,211,153,0.15) 100%);
  color:var(--success-glow);
  border:1px solid rgba(16,185,129,0.4);
  box-shadow:0 4px 12px rgba(16,185,129,0.15);
}

.badge.bad{
  background:linear-gradient(135deg, rgba(239,68,68,0.2) 0%, rgba(248,113,113,0.15) 100%);
  color:var(--danger-glow);
  border:1px solid rgba(239,68,68,0.4);
  box-shadow:0 4px 12px rgba(239,68,68,0.15);
  animation:badgePulse 2s ease-in-out infinite;
}

@keyframes badgePulse{
  0%, 100%{box-shadow:0 4px 12px rgba(239,68,68,0.15)}
  50%{box-shadow:0 4px 16px rgba(239,68,68,0.25), 0 0 20px rgba(239,68,68,0.1)}
}

.result-actions{
  display:flex;
  gap:8px;
}

/* Product Head - Modern Card Style */
.product-head{
  padding:16px;
  display:flex;
  flex-direction:column;
  gap:16px;
  background:var(--card);
  border-bottom:1px solid var(--border);
}

.prod-img{
  width:100%;
  aspect-ratio:1;
  object-fit:cover;
  border-radius:12px;
  background:var(--surface);
  border:1px solid var(--border);
}

@media(min-width:500px){
  .product-head{
    display:grid;
    grid-template-columns:140px 1fr;
    align-items:start;
  }
  .prod-img{
    width:140px;
    height:140px;
  }
}

@media(min-width:769px){
  .product-head{
    grid-template-columns:180px 1fr;
    padding:24px;
  }
  .prod-img{
    width:180px;
    height:180px;
  }
}
/* Key-Value Pairs - iOS Settings Style */
.kv{
  display:flex;
  flex-direction:column;
  gap:0;
}

.kv > div{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:16px;
  padding:12px 0;
  border-bottom:1px solid var(--border);
}

.kv > div:last-child{
  border-bottom:none;
}

.k{
  color:var(--text);
  font-size:15px;
  flex-shrink:0;
}

.v{
  color:var(--text-secondary);
  font-size:15px;
  text-align:right;
  word-break:break-word;
  font-weight:400;
}

.desc-block{
  padding:16px;
  background:var(--card);
  border-bottom:1px solid var(--border);
}

.desc-block h4{
  margin:0 0 8px;
  font-size:15px;
  font-weight:600;
  color:var(--text);
}

.desc{
  color:var(--text-secondary);
  line-height:1.5;
  font-size:14px;
  word-wrap:break-word;
}

/* Columns for Details */
.cols{
  display:grid;
  grid-template-columns:1fr;
  gap:0;
}

.col{
  padding:16px;
  background:var(--card);
  border-bottom:1px solid var(--border);
}

.col h4{
  margin:0 0 12px;
  font-size:15px;
  font-weight:600;
  color:var(--text);
}

.col:last-child{
  border-bottom:none;
}

@media(min-width:769px){
  .cols{
    grid-template-columns:1fr 1fr;
    gap:1px;
    background:var(--border);
  }
  .col{
    border-bottom:none;
  }
}

#zutaten{
  line-height:1.6;
  font-size:14px;
  color:var(--text-secondary);
  word-wrap:break-word;
}

#zutaten mark{
  background:rgba(239,68,68,0.3);
  color:#ff0000;
  border-radius:4px;
  padding:2px 4px;
  font-weight:700;
  border: 1px solid rgba(239,68,68,0.5);
}

/* Skeleton Loading */
.skeleton:empty::before{
  content:"";
  display:block;
  min-height:100px;
  border-radius:8px;
  background:linear-gradient(90deg, var(--surface) 0%, var(--border-light) 50%, var(--surface) 100%);
  animation:sheen 1.5s ease-in-out infinite;
  background-size:200% 100%;
}

@keyframes sheen{
  0%{background-position:200% 0}
  100%{background-position:-200% 0}
}

/* Footer */
.footer{
  max-width:1200px;
  margin:0 auto;
  padding:24px 16px;
  padding-bottom:calc(24px + env(safe-area-inset-bottom));
  color:var(--text-secondary);
  text-align:center;
  font-size:15px;
  line-height:1.6;
}

.footer-text{
  margin:0;
}

.footer-link{
  color:var(--accent);
  text-decoration:none;
  font-weight:700;
  display:inline-flex;
  align-items:center;
  gap:6px;
}

.footer-link::after{
  content:"↗";
  font-size:0.8em;
  opacity:0.6;
  transition:transform 0.2s ease, opacity 0.2s ease;
}

.footer-link:hover::after{
  transform:translateY(-2px);
  opacity:1;
}

.footer-link:focus-visible{
  outline:2px solid var(--accent);
  outline-offset:4px;
}

.footer-subline{
  display:inline-block;
  margin-top:6px;
  color:var(--text-secondary);
}

/* Mobile footer with safe area */
@media(max-width:768px){
  .footer{
    padding:16px 12px;
    padding-bottom:max(16px, env(safe-area-inset-bottom));
    font-size:14px;
  }
}

/* Onboarding Modal */
.onboard-backdrop{
  position:fixed;
  inset:0;
  background:rgba(0,0,0,0.85);
  backdrop-filter:blur(10px);
  display:flex;
  align-items:center;
  justify-content:center;
  z-index:9999;
  padding:16px;
}

.onboard{
  max-width:500px;
  width:100%;
  background:var(--card);
  border:1px solid var(--border);
  border-radius:var(--radius-xl);
  padding:24px;
  box-shadow:var(--shadow-lg);
}

.ob-progress{
  color:var(--text-secondary);
  margin-bottom:12px;
  font-size:13px;
  font-weight:600;
  text-transform:uppercase;
  letter-spacing:0.05em;
}

.ob-slide h3{
  margin:0 0 12px;
  font-size:24px;
  font-weight:700;
}

.ob-slide p{
  margin:0 0 16px;
  color:var(--text-secondary);
  line-height:1.5;
}

.ob-list{
  margin:16px 0 0 20px;
  color:var(--text-secondary);
  line-height:1.6;
}

.ob-list li{
  margin-bottom:8px;
}

.ob-actions{
  display:flex;
  justify-content:space-between;
  gap:12px;
  margin-top:24px;
}

.ob-actions button{
  flex:1;
}

/* Toasts */
.toast-wrap{
  position:fixed;
  right:16px;
  bottom:calc(16px + env(safe-area-inset-bottom));
  display:grid;
  gap:8px;
  z-index:50;
  max-width:calc(100vw - 32px);
}

.toast{
  background:var(--card);
  border:1px solid var(--border);
  padding:12px 16px;
  border-radius:12px;
  box-shadow:var(--shadow-lg);
  font-size:14px;
  animation:slideIn 0.3s ease;
}

@keyframes slideIn{
  from{
    transform:translateX(400px);
    opacity:0;
  }
  to{
    transform:translateX(0);
    opacity:1;
  }
}

.toast.ok{
  border-color:var(--success);
  background:rgba(16,185,129,0.1);
  color:var(--success);
}

.toast.err{
  border-color:var(--danger);
  background:rgba(239,68,68,0.1);
  color:var(--danger);
}

/* Scanner Active State */
section.scanner.active .video-wrap{
  box-shadow:0 0 0 2px var(--accent);
}

section.scanner.active .frame{
  border-color:var(--accent);
}

section.scanner:not(.active) .scanline{
  opacity:0.2;
  animation-play-state:paused;
}

section.scanner.active .scanline{
  opacity:1;
  animation-play-state:running;
}

/* Source Links */
.source{
  padding:16px;
  background:var(--card);
  border-top:1px solid var(--border);
  font-size:13px;
  color:var(--text-secondary);
  text-align:center;
}

/* Warning/Error Messages */
.warn{
  background:rgba(245,158,11,0.1);
  border:1px solid rgba(245,158,11,0.3);
  color:var(--warning);
  padding:12px 16px;
  border-radius:12px;
  font-size:14px;
  display:flex;
  align-items:center;
  gap:8px;
}

.warn::before{
  content:"⚠️";
  font-size:18px;
}
