:root {
  --color-bg: #0f0f1a;
  --color-surface: #1a1a2e;
  --color-surface-elevated: #252542;
  --color-border: rgba(255,255,255,0.08);
  --color-text-primary: #f0f0f5;
  --color-text-secondary: #a0a0b8;
  --color-text-muted: #6b6b80;
  --color-amazon: #ff9900;
  --color-sakura: #e91e8c;
  --color-price: #ff6b6b;
  --color-accent-gradient: linear-gradient(135deg, #ff9900, #ff6b35);
  --color-sakura-gradient: linear-gradient(135deg, #e91e8c, #c471ed);
  --color-header-gradient: linear-gradient(135deg, #1a1a2e, #16213e, #0f3460);
  --color-glass: rgba(255,255,255,0.04);
  --color-glass-border: rgba(255,255,255,0.08);
  --color-success-bg: rgba(46,213,115,0.12);
  --color-success-border: rgba(46,213,115,0.3);
  --color-success-text: #2ed573;
  --color-error-bg: rgba(255,71,87,0.12);
  --color-error-border: rgba(255,71,87,0.3);
  --color-error-text: #ff4757;
  --font-family: "Inter","Noto Sans JP",-apple-system,BlinkMacSystemFont,sans-serif;
  --radius-sm: 8px;
  --radius-md: 12px;
  --radius-lg: 16px;
  --radius-xl: 24px;
  --radius-full: 9999px;
  --shadow-md: 0 4px 16px rgba(0,0,0,0.4);
  --shadow-lg: 0 8px 32px rgba(0,0,0,0.5);
  --shadow-glow-amazon: 0 0 20px rgba(255,153,0,0.3);
  --shadow-glow-sakura: 0 0 20px rgba(233,30,140,0.3);
  --transition-fast: 150ms ease;
  --transition-base: 250ms ease;
  --transition-slow: 400ms cubic-bezier(0.4,0,0.2,1);
}

*,*::before,*::after { margin:0; padding:0; box-sizing:border-box; }
html { scroll-behavior:smooth; }
body {
  font-family: var(--font-family);
  background: var(--color-bg);
  color: var(--color-text-primary);
  line-height: 1.6;
  min-height: 100vh;
  -webkit-font-smoothing: antialiased;
}

::-webkit-scrollbar { width:8px; }
::-webkit-scrollbar-track { background:var(--color-bg); }
::-webkit-scrollbar-thumb { background:var(--color-surface-elevated); border-radius:var(--radius-full); }

/* Header */
.header {
  background: var(--color-header-gradient);
  border-bottom: 1px solid var(--color-border);
  padding: 2rem 1.5rem;
  text-align: center;
  position: relative;
  overflow: hidden;
}
.header::before {
  content:"";
  position:absolute; top:-50%; left:-50%; width:200%; height:200%;
  background: radial-gradient(ellipse at 30% 50%, rgba(255,153,0,0.06) 0%, transparent 60%),
              radial-gradient(ellipse at 70% 50%, rgba(233,30,140,0.04) 0%, transparent 60%);
  pointer-events:none;
}
.header-inner { position:relative; z-index:1; max-width:800px; margin:0 auto; }
.header-title {
  font-size: 2rem; font-weight: 800; letter-spacing:-0.02em;
  background: linear-gradient(135deg, #fff, #ff9900);
  -webkit-background-clip: text; -webkit-text-fill-color: transparent;
  background-clip: text;
}
.header-subtitle { font-size:0.85rem; color:var(--color-text-secondary); margin-top:0.25rem; letter-spacing:0.05em; }

/* Search */
.search-section { max-width:700px; margin:2rem auto 1.5rem; padding:0 1.5rem; }
.search-input-wrapper {
  display:flex; align-items:center;
  background:var(--color-surface);
  border:1px solid var(--color-glass-border);
  border-radius:var(--radius-xl);
  padding:0.25rem 0.25rem 0.25rem 1.5rem;
  transition: border-color var(--transition-base), box-shadow var(--transition-base);
}
.search-input-wrapper:focus-within {
  border-color: rgba(255,153,0,0.4);
  box-shadow: 0 0 0 3px rgba(255,153,0,0.1), var(--shadow-md);
}
.search-icon { color:var(--color-text-muted); flex-shrink:0; margin-right:0.5rem; }
.search-input {
  flex:1; background:none; border:none; outline:none;
  font-family:var(--font-family); font-size:1rem;
  color:var(--color-text-primary); padding:0.5rem 0; min-width:0;
}
.search-input::placeholder { color:var(--color-text-muted); }
.search-btn {
  display:flex; align-items:center; gap:0.5rem;
  background:var(--color-accent-gradient); color:#fff; border:none;
  border-radius:var(--radius-full); padding:0.5rem 1.5rem;
  font-family:var(--font-family); font-size:0.85rem; font-weight:700;
  cursor:pointer; white-space:nowrap;
  transition: transform var(--transition-fast), box-shadow var(--transition-base);
}
.search-btn:hover { transform:scale(1.03); box-shadow:var(--shadow-glow-amazon); }
.search-btn:active { transform:scale(0.97); }
.search-btn.loading { opacity:0.7; pointer-events:none; animation:pulse 1.5s infinite; }
@keyframes pulse { 0%,100%{opacity:0.7} 50%{opacity:0.4} }

/* Loading */
.loading-overlay { text-align:center; padding:3rem; }
.loading-content { display:inline-flex; flex-direction:column; align-items:center; gap:1.5rem; }
.loading-spinner {
  width:48px; height:48px;
  border:3px solid var(--color-surface-elevated);
  border-top-color:var(--color-amazon);
  border-radius:50%; animation:spin 0.8s linear infinite;
}
@keyframes spin { to{transform:rotate(360deg)} }
.loading-text { color:var(--color-text-secondary); font-size:0.85rem; }

/* Results Header */
.results-header { max-width:1400px; margin:0 auto 1.5rem; padding:0 1.5rem; }
.results-header-inner { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:1rem; }
.results-count {
  font-size:0.85rem; color:var(--color-success-text);
  background:var(--color-success-bg); border:1px solid var(--color-success-border);
  padding:0.5rem 1.5rem; border-radius:var(--radius-full); font-weight:600;
}
.sort-wrapper { display:flex; align-items:center; gap:0.5rem; }
.sort-label { font-size:0.85rem; color:var(--color-text-secondary); }
.sort-select {
  background:var(--color-surface); color:var(--color-text-primary);
  border:1px solid var(--color-border); border-radius:var(--radius-sm);
  padding:0.5rem 1rem; font-family:var(--font-family); font-size:0.85rem;
  cursor:pointer; outline:none;
}
.sort-select:focus { border-color:rgba(255,153,0,0.4); }

/* Product Grid */
.products-grid {
  display:grid; grid-template-columns:repeat(4,1fr); gap:1.5rem;
  max-width:1400px; margin:0 auto; padding:0 1.5rem 3rem;
}

/* Product Card */
.product-card {
  background:var(--color-surface); border:1px solid var(--color-border);
  border-radius:var(--radius-lg); overflow:hidden;
  display:flex; flex-direction:column;
  transition: transform var(--transition-slow), box-shadow var(--transition-slow), border-color var(--transition-base);
  animation: fadeInUp 0.5s ease both;
}
.product-card:hover {
  transform:translateY(-6px); box-shadow:var(--shadow-lg);
  border-color:rgba(255,153,0,0.2);
}
@keyframes fadeInUp { from{opacity:0;transform:translateY(20px)} to{opacity:1;transform:translateY(0)} }

.product-image-wrapper {
  background:#fff; padding:1rem;
  display:flex; align-items:center; justify-content:center; min-height:200px;
}
.product-image {
  max-width:100%; max-height:180px; object-fit:contain;
  transition:transform var(--transition-base);
}
.product-card:hover .product-image { transform:scale(1.05); }

.product-info { padding:1rem 1.5rem 1.5rem; flex:1; display:flex; flex-direction:column; }
.product-title {
  font-size:0.85rem; font-weight:500; line-height:1.5; color:var(--color-text-primary);
  display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical;
  overflow:hidden; margin-bottom:0.5rem; min-height:3.6em;
}
.product-price { font-size:1.5rem; font-weight:800; color:var(--color-price); margin-bottom:1rem; }
.product-actions { display:flex; flex-direction:column; gap:0.5rem; margin-top:auto; }

.btn {
  display:flex; align-items:center; justify-content:center; gap:0.5rem;
  padding:10px 1rem; border-radius:var(--radius-sm);
  font-family:var(--font-family); font-size:0.85rem; font-weight:700;
  text-decoration:none; text-align:center; border:none; cursor:pointer;
  transition: transform var(--transition-fast), box-shadow var(--transition-base);
}
.btn:hover { transform:translateY(-1px); }
.btn:active { transform:translateY(0); }
.btn-amazon { background:var(--color-accent-gradient); color:#fff; }
.btn-amazon:hover { box-shadow:var(--shadow-glow-amazon); }
.btn-sakura { background:var(--color-sakura-gradient); color:#fff; }
.btn-sakura:hover { box-shadow:var(--shadow-glow-sakura); }

/* Empty State */
.empty-state { text-align:center; padding:3rem 1.5rem; }
.empty-state-inner { max-width:500px; margin:0 auto; }
.empty-icon { font-size:4rem; margin-bottom:1.5rem; animation:float 3s ease-in-out infinite; }
@keyframes float { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-10px)} }
.empty-state h2 { font-size:1.5rem; font-weight:700; margin-bottom:0.5rem; }
.empty-state p { font-size:0.85rem; color:var(--color-text-secondary); margin-bottom:2rem; line-height:1.8; }
.features { display:flex; justify-content:center; gap:1rem; flex-wrap:wrap; }
.feature-card {
  display:flex; align-items:center; gap:0.5rem;
  background:var(--color-glass); border:1px solid var(--color-glass-border);
  border-radius:var(--radius-full); padding:0.5rem 1.5rem;
  font-size:0.85rem; color:var(--color-text-secondary);
}

/* Error */
.error-message {
  max-width:600px; margin:2rem auto; padding:1.5rem 2rem;
  background:var(--color-error-bg); border:1px solid var(--color-error-border);
  border-radius:var(--radius-md); text-align:center;
  color:var(--color-error-text); font-size:0.85rem;
}

/* Footer */
.footer { text-align:center; padding:2rem 1.5rem; border-top:1px solid var(--color-border); }
.footer-affiliate { font-size:0.75rem; color:var(--color-text-muted); line-height:1.8; }

/* Responsive */
@media(max-width:1200px) { .products-grid{grid-template-columns:repeat(3,1fr)} }
@media(max-width:900px) { .products-grid{grid-template-columns:repeat(2,1fr)} }
@media(max-width:600px) {
  .header-title{font-size:1.5rem}
  .header-subtitle{font-size:0.75rem}
  .search-section{padding:0 1rem}
  .search-input-wrapper{padding-left:1rem}
  .search-input{font-size:0.85rem}
  .search-btn-text{display:none}
  .products-grid{grid-template-columns:1fr;padding:0 1rem 2rem;gap:1rem}
  .results-header{padding:0 1rem}
  .features{flex-direction:column;align-items:center}
}
