/*
 * BackgroundShade — app styles (chrome uses /brand/brand.css)
 */

@import "../brand/tokens.css";

#app {
  position: relative;
  z-index: 1;
  max-width: var(--maxw);
  margin: 0 auto;
  padding: 0 var(--gut) clamp(48px, 6vw, 80px);
}

/* demo-header, buttons, modal shell: /brand/brand.css */

.result-container {
 width: 100%;
 margin: 0 auto;
 background-color: var(--bg2);
 border: 1px solid var(--line);
 border-radius: 22px;
 padding: clamp(20px, 3vw, 2rem);
 box-shadow: 0 20px 50px rgba(0,0,0,0.22);
 transition: background-color 0.3s ease, box-shadow 0.3s ease;
 position: relative;
 z-index: 1;
}

.result-container > .refresh-btn {
 position: absolute;
 top: clamp(20px, 3vw, 2rem);
 right: clamp(20px, 3vw, 2rem);
 z-index: 2;
}

.subtitle {
 margin-bottom: 2rem;
 color: var(--ink-soft);
 font-size: 16px;
 font-weight: 400;
 transition: color 0.3s ease;
}

/* Main content 50/50 split */
.main-content {
 display: flex;
 gap: 2rem;
 min-height: 400px;
}

/* Left side: Image section */
.image-section {
 flex: 1;
 display: flex;
 flex-direction: column;
 align-items: center;
 justify-content: center;
 padding: 2.5rem 1rem 1rem 1rem;
 position: relative;
}

/* Book Card Styles */
.book {
 width: 280px;
 height: 400px;
 position: relative;
 text-align: center;
 margin-bottom: 2rem;
 transform-style: preserve-3d;
 perspective: 2000px;
 transition: all 0.3s ease;
 will-change: transform, filter;
 
 /* Modern dynamic shadow using color-mix directly - increased visibility by reducing transparency */
 filter: drop-shadow(0 10px 16px color-mix(in srgb, var(--color-dynamic-30), transparent 80%));
}

.book-cover {
 position: absolute;
 z-index: 1;
 width: 100%;
 height: 100%;
 transform-origin: left center;
 background: #111;
 background-size: cover;
 border-radius: 3px;
 transition: transform 0.4s ease-out;
 transform-style: preserve-3d;
 will-change: transform;
}

.book-inside {
 width: calc(100% - 2px);
 height: 96%;
 position: absolute;
 top: 2%;
 left: 1px;
 border: 1px solid #ccc;
 border-radius: 3px;
 background: white;
 transform: translateZ(-1px);
}

.current-image {
 width: 100%;
 height: 100%;
 object-fit: cover;
 display: block;
 border-radius: 3px;
 pointer-events: none;
}

.effect {
 width: 20px;
 height: 100%;
 margin-left: 10px;
 border-left: 2px solid rgba(0, 0, 0, 0.1);
 background-image: linear-gradient(90deg, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0) 100%);
 transition: all 0.5s ease;
 position: absolute;
 top: 0;
 left: 0;
 pointer-events: none;
}

.light {
 width: 90%;
 height: 100%;
 position: absolute;
 border-radius: 3px;
 background-image: linear-gradient(90deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0.2) 100%);
 top: 0;
 right: 0;
 opacity: 0.1;
 transition: all 0.5s ease;
 pointer-events: none;
}

.book.is-open .book-cover {
 transform: rotateY(-20deg);
}

.book.is-open .effect {
 width: 40px;
}

.book.is-open .light {
 opacity: 1;
 width: 70%;
}

.book.is-open .tooltip {
 opacity: 1;
 transform: translateX(-50%) translateY(-100px);
}

.book:hover .book-cover {
 transform: rotateY(-20deg);
}

.book:hover .effect {
 width: 40px;
}

.book:hover .light,
.book.is-open .light {
 opacity: 1;
 width: 70%;
}

.tooltip {
 position: absolute;
 top: 0;
 left: 50%;
 transform: translateX(-50%) translateY(-70px);
 width: 260px;
 height: auto;
 background: #FFFFFF;
 border: 1px solid color-mix(in srgb, var(--color-dynamic-40), transparent 80%);
 border-radius: 12px;
 padding: 14px;
 opacity: 0;
 transition: all 0.3s ease-in-out, border-color 0.3s ease;
 z-index: 10;
 box-sizing: border-box;
 box-shadow: 0 4px 12px color-mix(in srgb, var(--color-dynamic-30), transparent 90%);
 pointer-events: none;
}

.tooltip-arrow {
 position: absolute;
 bottom: -8px;
 left: 50%;
 transform: translateX(-50%) rotate(45deg);
 width: 16px;
 height: 16px;
 background: white;
 border-right: 1px solid color-mix(in srgb, var(--color-dynamic-40), transparent 80%);
 border-bottom: 1px solid color-mix(in srgb, var(--color-dynamic-40), transparent 80%);
 z-index: -1;
}

.book:hover .tooltip {
 opacity: 1;
 transform: translateX(-50%) translateY(-100px);
}

.tooltip-content {
 display: flex;
 flex-direction: column;
 align-items: flex-start;
 gap: 8px;
 width: 100%;
}

.tooltip-title {
 font-family: 'Inter', sans-serif;
 font-style: normal;
 font-weight: 700;
 font-size: 16px;
 line-height: 19px;
 letter-spacing: -0.01em;
 color: var(--color-dynamic-20);
 margin-bottom: 4px;
 transition: color 0.3s ease;
}

.tooltip-subtitle {
 font-family: 'Inter', sans-serif;
 font-style: normal;
 font-weight: 500;
 font-size: 12px;
 text-align: left;
 line-height: 16px;
 letter-spacing: -0.01em;
 color: var(--color-dynamic-40);
 transition: color 0.3s ease;
}

.image-section .btn-primary {
 margin-top: 1.5rem;
}

.cover-toolbar {
 display: flex;
 flex-direction: column;
 align-items: center;
 width: 100%;
}

.refresh-btn {
 display: inline-flex;
 align-items: center;
 justify-content: center;
 gap: 8px;
}

.refresh-icon {
 display: none;
}

/* Right side: Color info section */
.color-info-section {
 display: flex;
 gap: 2rem;
 width: 400px;
 margin-bottom: 2rem;
}

.color-info {
 background: var(--bg);
 border-radius: 14px;
 padding: 1.5rem;
 flex: 1;
 border: 1px solid var(--line);
 transition: background-color 0.3s ease, border-color 0.3s ease;
}

.dynamic-surface {
 --dynamic-heading: var(--color-dynamic-60);
 --dynamic-label: var(--color-dynamic-50);
 --dynamic-meta: var(--color-dynamic-40);
}

.color-info h3,
.color-scale h3,
.dynamic-surface h3 {
 margin-bottom: 1rem;
 font-family: var(--sans);
 font-size: 18px;
 font-weight: 600;
 color: var(--dynamic-heading);
 transition: color 0.3s ease;
}

.color-info h3 {
 margin-bottom: 1.5rem;
}

.extracted-color-swatch {
 width: 100%;
 height: 120px;
 border-radius: 4px;
 margin-bottom: 1rem;
 border: 1px solid color-mix(in srgb, var(--color-dynamic-40), transparent 80%);
 transition: border-color 0.3s ease;
 background-color: var(--extracted-color);
}

.color-info-text {
 font-family: 'SF Mono', 'Menlo', monospace;
 font-size: 14px;
 line-height: 1.6;
 color: var(--dynamic-meta, var(--color-dynamic-40));
}

/* Color Scale Section */
.color-scale {
 margin-top: 2rem;
 width: 100%;
 background: var(--bg);
 border-radius: 14px;
 padding: 1.5rem;
 border: 1px solid var(--line);
 transition: background-color 0.3s ease, border-color 0.3s ease;
 min-height: 160px;
}

.color-scale h3 {
 margin-bottom: 1rem;
}

.scale-steps-container {
 display: flex;
 flex-wrap: wrap;
 gap: 10px;
 justify-content: space-between;
 min-height: 90px; /* Prevent collapse during reloading */
}

.scale-step {
 width: calc(12.5% - 10px);
 min-width: 120px;
 flex-grow: 1;
 display: flex;
 flex-direction: column;
 margin-bottom: 10px;
}

/* Base swatch styles */
.swatch {
  width: 100%;
  height: 60px;
  border-radius: 6px;
  margin-bottom: 8px;
  position: relative;
  overflow: hidden;
  border: 1px solid color-mix(in srgb, var(--color-dynamic-40), transparent 85%);
  transition: border-color 0.3s ease;
}

/* Dynamic color steps */
.scale-step[data-step="10"] .swatch { background-color: var(--color-dynamic-10); }
.scale-step[data-step="20"] .swatch { background-color: var(--color-dynamic-20); }
.scale-step[data-step="30"] .swatch { background-color: var(--color-dynamic-30); }
.scale-step[data-step="40"] .swatch { background-color: var(--color-dynamic-40); }
.scale-step[data-step="50"] .swatch { background-color: var(--color-dynamic-50); }
.scale-step[data-step="60"] .swatch { background-color: var(--color-dynamic-60); }
.scale-step[data-step="70"] .swatch { background-color: var(--color-dynamic-70); }
.scale-step[data-step="80"] .swatch { background-color: var(--color-dynamic-80); }

/* Improve step info styling for better hierarchy */
.step-info {
 font-size: 12px;
 color: var(--dynamic-meta, var(--color-dynamic-40));
 text-align: left;
 width: 100%;
 font-weight: 400;
 opacity: 0.95;
 padding: 0 4px;
 transition: color 0.3s ease;
}

.step-info .step-name {
 font-size: 14px;
 font-weight: 600;
 color: var(--dynamic-label, var(--color-dynamic-50));
 margin-bottom: 2px;
 transition: color 0.3s ease;
}

.step-info .css-var {
 font-family: monospace;
 font-size: 11px;
 margin-bottom: 2px;
 color: var(--dynamic-meta, var(--color-dynamic-40));
 transition: color 0.3s ease;
}

.step-info .oklch-value {
 font-size: 11px;
 color: var(--dynamic-meta, var(--color-dynamic-40));
 opacity: 0.85;
 transition: color 0.3s ease;
}

/* Dynamic text colors — demo panels only (inherits --dynamic-* from .dynamic-surface) */

/* Remove scrollbar styles since we don't need them anymore */
.scale-steps-container::-webkit-scrollbar,
.scale-steps-container::-webkit-scrollbar-track,
.scale-steps-container::-webkit-scrollbar-thumb {
 display: none;
}

/* Responsive adjustments */
@media (max-width: 768px) {
 #app {
  display: flex;
  flex-direction: column;
  padding-bottom: 0;
 }

 .result-container {
  display: grid;
  grid-template-rows: minmax(0, 1fr) auto auto;
  flex: 1;
  min-height: calc(100svh - 210px);
  max-height: calc(100svh - 190px);
  padding: 0.75rem;
  gap: 0.625rem;
  overflow: hidden;
 }

 .main-content {
  display: contents;
  min-height: 0;
  gap: 0;
 }

 .color-info-section {
  grid-row: 2;
  width: 100%;
  margin-bottom: 0;
 }

 .color-info {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 0;
  border: 0;
  background: transparent;
  border-radius: 0;
 }

 .color-info h3 {
  margin: 0;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  white-space: nowrap;
  flex-shrink: 0;
 }

 .extracted-color-swatch {
  width: 24px;
  height: 24px;
  min-width: 24px;
  aspect-ratio: 1;
  margin: 0;
  margin-left: auto;
  border-radius: 4px;
 }

 .color-info-text {
  display: none;
 }

 #color-scale {
  grid-row: 3;
  margin-top: 0;
  padding: 0;
  border: 0;
  background: transparent;
  border-radius: 0;
  min-height: 0;
 }

 #color-scale h3 {
  margin-bottom: 6px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
 }

 .scale-steps-container {
  display: grid;
  grid-template-columns: repeat(8, minmax(0, 1fr));
  gap: 3px;
  width: 100%;
  overflow: visible;
  min-height: 0;
 }

 .scale-step {
  width: auto;
  min-width: 0;
  margin-bottom: 0;
 }

 .scale-step .swatch {
  width: 100%;
  height: auto;
  aspect-ratio: 1;
  margin-bottom: 0;
  border-radius: 4px;
 }

 .scale-step .step-info {
  display: none;
 }

 .image-section {
  grid-row: 1;
  width: 100%;
  min-height: 0;
  max-height: 100%;
  padding: 0;
  overflow: hidden;
  container-type: size;
  container-name: cover-stage;
  display: flex;
  align-items: center;
  justify-content: center;
 }

 .cover-toolbar {
  width: 100%;
  height: 100%;
  max-height: 100%;
  min-height: 0;
  display: flex;
  align-items: center;
  justify-content: center;
 }

 .book {
  position: relative;
  flex: 0 1 auto;
  height: 100%;
  width: auto;
  max-height: 100%;
  max-width: 100%;
  aspect-ratio: 2 / 3;
  margin: 0;
  filter: none;
  perspective: none;
  transform-style: flat;
  overflow: hidden;
 }

 .book-cover {
  position: absolute !important;
  inset: 0 !important;
  z-index: 1;
  width: 100% !important;
  height: 100% !important;
  transform: none !important;
  border-radius: 10px;
  box-shadow: 0 8px 22px rgba(0, 0, 0, 0.24);
 }

 .book-inside,
 .book .effect,
 .book .light,
 .book .tooltip {
  display: none;
 }

 .current-image {
  border-radius: 10px;
 }

 .result-container > .refresh-btn {
  top: 0.75rem;
  right: 0.75rem;
  width: 39px;
  height: 39px;
  min-width: 39px;
  padding: 0;
  border-radius: 50%;
  font-size: 18px;
  line-height: 1;
 }

 .refresh-label {
  display: none;
 }

 .refresh-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
 }

 .tooltip {
  display: none;
 }
}

@media (max-width: 768px) and (hover: none) and (pointer: coarse) {
 .book .book-cover {
  transform: none !important;
 }

 .book .effect,
 .book .light,
 .book .tooltip {
  display: none;
 }
}

@media (hover: none) and (pointer: coarse) {
 .book .book-cover {
  transform: rotateY(-14deg);
 }

 .book .effect {
  width: 34px;
 }

 .book .light {
  opacity: 0.85;
  width: 62%;
 }

 .book .tooltip {
  opacity: 1;
  transform: translateX(-50%) translateY(-72px);
 }
}

/* Modal content sections (shell in /brand/brand.css) */
.explanation-section {
 margin-bottom: 32px;
}

.explanation-section:last-child {
 margin-bottom: 0;
}

.explanation-section h3 {
 font-family: var(--sans);
 font-size: 18px;
 font-weight: 600;
 color: var(--ink);
 margin-bottom: 12px;
}

.explanation-section p {
 color: var(--ink-soft);
 line-height: 1.6;
 margin-bottom: 12px;
 font-size: 15px;
}

.explanation-section ul {
 list-style-type: none;
 padding-left: 0;
}

.explanation-section li {
 color: var(--ink-soft);
 margin-bottom: 10px;
 padding-left: 20px;
 position: relative;
 line-height: 1.5;
 font-size: 15px;
}

.explanation-section li:before {
 content: "";
 position: absolute;
 left: 0;
 top: 9px;
 width: 6px;
 height: 6px;
 border-radius: 50%;
 background-color: var(--accent);
}

/* Status toast — below lab nav */
.status {
 position: fixed;
 top: max(10px, env(safe-area-inset-top));
 left: 50%;
 transform: translateX(-50%);
 padding: 8px 16px;
 border-radius: 999px;
 font-size: 13px;
 font-weight: 600;
 font-family: var(--sans);
 color: var(--bg);
 z-index: 99;
 border: 1px solid transparent;
 box-shadow: 0 8px 24px rgba(0, 0, 0, 0.25);
 transition: opacity 0.3s ease, transform 0.3s ease;
}

.status[hidden] {
 display: none !important;
}

.status.info {
 background-color: var(--accent);
 border-color: color-mix(in srgb, var(--accent) 70%, var(--ink));
}

.status.success {
 background-color: oklch(60% 0.17 140); /* Green shade */
}

.status.warning {
 background-color: oklch(65% 0.17 80); /* Amber shade */
}

.status.error {
 background-color: oklch(60% 0.17 20); /* Red shade */
}

/* For elements that use CSS variables */
.uses-css-variables {
 transform: translateZ(0);
 will-change: background-color;
 transition: background-color 0.3s ease;
}

/* Shadow and color utilities */
:root {
 /* Shadow opacity variables for consistent shadows */
 --shadow-opacity-light: 0.25;
 --shadow-opacity-medium: 0.4;
 --shadow-opacity-heavy: 0.6;
 
 /* Color combination utility using modern color-mix */
 --color-dynamic-10-alpha: color-mix(in srgb, var(--color-dynamic-10), transparent var(--shadow-opacity-medium));
 --color-dynamic-20-alpha: color-mix(in srgb, var(--color-dynamic-20), transparent var(--shadow-opacity-medium));
 --color-dynamic-30-alpha: color-mix(in srgb, var(--color-dynamic-30), transparent var(--shadow-opacity-medium));
 --color-dynamic-40-alpha: color-mix(in srgb, var(--color-dynamic-40), transparent var(--shadow-opacity-medium));
}

/* Dynamic color utility classes */
.dynamic-color-10 { 
 background-color: var(--color-dynamic-10);
 will-change: background-color;
 transition: background-color 0.3s ease;
 contain: paint;
}
.dynamic-color-20 { 
 background-color: var(--color-dynamic-20);
 will-change: background-color;
 transition: background-color 0.3s ease;
 contain: paint;
}
.dynamic-color-30 { 
 background-color: var(--color-dynamic-30);
 will-change: background-color;
 transition: background-color 0.3s ease;
 contain: paint;
}
.dynamic-color-40 { 
 background-color: var(--color-dynamic-40);
 will-change: background-color;
 transition: background-color 0.3s ease;
 contain: paint;
}
.dynamic-color-50 { 
 background-color: var(--color-dynamic-50);
 will-change: background-color;
 transition: background-color 0.3s ease;
 contain: paint;
}
.dynamic-color-60 { 
 background-color: var(--color-dynamic-60);
 will-change: background-color;
 transition: background-color 0.3s ease;
 contain: paint;
}
.dynamic-color-70 { 
 background-color: var(--color-dynamic-70);
 will-change: background-color;
 transition: background-color 0.3s ease;
 contain: paint;
}
.dynamic-color-80 { 
 background-color: var(--color-dynamic-80);
 will-change: background-color;
 transition: background-color 0.3s ease;
 contain: paint;
}

/* Text color utilities */
[class^="dynamic-color-"].text {
  background-color: transparent;
  color: var(--color-dynamic-10);
}
.dynamic-color-20.text {
  color: var(--color-dynamic-20);
}
.dynamic-color-30.text {
  color: var(--color-dynamic-30);
}
.dynamic-color-40.text {
  color: var(--color-dynamic-40);
}
.dynamic-color-50.text {
  color: var(--color-dynamic-50);
}
.dynamic-color-60.text {
  color: var(--color-dynamic-60);
}
.dynamic-color-70.text {
  color: var(--color-dynamic-70);
}
.dynamic-color-80.text {
  color: var(--color-dynamic-80);
}

/* Loading state — matches dark panel chrome if ever shown */
.loading-placeholder {
 min-height: 90px;
 width: 100%;
 background: linear-gradient(
   90deg,
   var(--bg) 25%,
   color-mix(in srgb, var(--line) 60%, var(--bg)) 50%,
   var(--bg) 75%
 );
 background-size: 200% 100%;
 animation: loading-pulse 1.5s infinite ease-in-out;
 border-radius: 6px;
}

@keyframes loading-pulse {
 0% {
  background-position: 200% 0;
 }
 100% {
  background-position: -200% 0;
 }
}

/* Utility classes for dynamic colors */
.color-hue-dynamic-step-10 {
  background-color: var(--color-dynamic-10);
}

.color-hue-dynamic-step-20 {
  background-color: var(--color-dynamic-20);
}

.color-hue-dynamic-step-30 {
  background-color: var(--color-dynamic-30);
}

.color-hue-dynamic-step-40 {
  background-color: var(--color-dynamic-40);
}

.color-hue-dynamic-step-50 {
  background-color: var(--color-dynamic-50);
}

.color-hue-dynamic-step-60 {
  background-color: var(--color-dynamic-60);
}

.color-hue-dynamic-step-70 {
  background-color: var(--color-dynamic-70);
}

.color-hue-dynamic-step-80 {
  background-color: var(--color-dynamic-80);
}

/* Text color utilities */
.text-color-hue-dynamic-step-10 {
  color: var(--color-dynamic-10);
}

.text-color-hue-dynamic-step-20 {
  color: var(--color-dynamic-20);
}

.text-color-hue-dynamic-step-30 {
  color: var(--color-dynamic-30);
}

.text-color-hue-dynamic-step-40 {
  color: var(--color-dynamic-40);
}

.text-color-hue-dynamic-step-50 {
  color: var(--color-dynamic-50);
}

.text-color-hue-dynamic-step-60 {
  color: var(--color-dynamic-60);
}

.text-color-hue-dynamic-step-70 {
  color: var(--color-dynamic-70);
}

.text-color-hue-dynamic-step-80 {
  color: var(--color-dynamic-80);
}

/* Shadow opacity variables */
:root {
  --shadow-opacity-light: 0.25;
  --shadow-opacity-medium: 0.4;
  --shadow-opacity-heavy: 0.6;
}

/* Alpha color variables for shadows */
:root {
  --color-dynamic-10-alpha: color-mix(in srgb, var(--color-dynamic-10), transparent var(--shadow-opacity-medium, 40%));
  --color-dynamic-20-alpha: color-mix(in srgb, var(--color-dynamic-20), transparent var(--shadow-opacity-medium, 40%));
  --color-dynamic-30-alpha: color-mix(in srgb, var(--color-dynamic-30), transparent var(--shadow-opacity-medium, 40%));
  --color-dynamic-40-alpha: color-mix(in srgb, var(--color-dynamic-40), transparent var(--shadow-opacity-medium, 40%));
} 