/* Ocean conditions laboratory */
@layer components {
  .ocean-wave-hero{
    padding:clamp(3.2rem,7vh,4.6rem) 0;
    background:linear-gradient(140deg,
      color-mix(in srgb,var(--surface) 90%, #041622 10%) 0%,
      color-mix(in srgb,var(--surface) 78%, #031018 22%) 100%);
    border-bottom:1px solid color-mix(in srgb,var(--primary) 18%, transparent);
    box-shadow:0 22px 48px rgba(0,0,0,.32);
  }
  .ocean-wave-hero .wrapper{
    max-width:var(--container-max);
    display:grid;
    gap:clamp(1.2rem,2.4vw,1.8rem);
  }
  .ocean-wave-lead{
    margin:0;
    max-width:72ch;
    color:var(--text-muted);
    font-size:1.05rem;
    line-height:1.75;
  }

  .ocean-wave-steps{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(240px,1fr));
    gap:clamp(12px,2vw,16px);
  }
  .ocean-wave-step{
    display:flex;
    gap:12px;
    align-items:flex-start;
    padding:14px 16px;
    border-radius:14px;
    border:1px solid color-mix(in srgb,var(--primary) 18%, transparent);
    background:color-mix(in srgb,var(--surface) 92%, #000 8%);
    box-shadow:0 12px 28px rgba(0,0,0,.26);
  }
  .ocean-wave-step-number{
    width:36px;
    height:36px;
    border-radius:12px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    font-weight:700;
    color:color-mix(in srgb,#ffffff 94%, var(--bg) 6%);
    background:linear-gradient(135deg,
      color-mix(in srgb,var(--primary) 88%, #ffffff 12%) 0%,
      color-mix(in srgb,var(--primary) 62%, #071219 38%) 100%);
    box-shadow:0 10px 22px rgba(0,0,0,.26);
    flex-shrink:0;
  }
  .ocean-wave-step h3{
    margin:0 0 4px;
    font-size:1.05rem;
    letter-spacing:.01em;
  }
  .ocean-wave-step p{
    margin:0;
    color:var(--text-muted);
    font-size:.98rem;
    line-height:1.6;
  }

  .ocean-wave-section{
    padding:clamp(2.8rem,6vh,3.8rem) 0;
  }

  .ocean-wave-grid{
    display:grid;
    grid-template-columns:1fr;
    gap:clamp(18px,3vw,24px);
    align-items:start;
  }
  @media (min-width: 980px){
    .ocean-wave-grid{
      grid-template-columns:minmax(0, 1.35fr) minmax(0, 0.65fr);
    }
  }

  .ocean-wave-card{
    background:linear-gradient(150deg,
      color-mix(in srgb,var(--surface) 92%, #050b12 8%) 0%,
      color-mix(in srgb,var(--surface) 84%, #050b12 16%) 100%);
    border:1px solid color-mix(in srgb,var(--primary) 22%, transparent);
    border-radius:18px;
    padding:clamp(1.4rem,2.4vw,1.9rem);
    box-shadow:0 18px 36px rgba(0,0,0,.32);
    display:grid;
    gap:14px;
  }
  .ocean-wave-card h2{
    margin:0 0 6px;
  }

  .ocean-wave-stage{
    position:relative;
    width:100%;
    max-width:100%;
    min-width:0;
    border-radius:16px;
    border:1px solid color-mix(in srgb,var(--primary) 22%, transparent);
    overflow:hidden;
    box-shadow:0 16px 32px rgba(0,0,0,.28);
    aspect-ratio:16 / 9;
    min-height:260px;
    background:linear-gradient(180deg,
      color-mix(in srgb,#0b1c2a 88%, var(--bg) 12%) 0%,
      color-mix(in srgb,#08131d 88%, var(--bg) 12%) 100%);
    cursor:grab;
    touch-action:none;
    user-select:none;
  }
  .ocean-wave-stage.ocean-wave-dragging{
    cursor:grabbing;
  }
  .ocean-wave-stage:focus-visible{
    outline:3px solid color-mix(in srgb,var(--primary) 78%, #ffffff 22%);
    outline-offset:4px;
  }
  .ocean-wave-stage::before{
    content:"";
    position:absolute;
    inset:0;
    background:
      radial-gradient(ellipse at 50% 22%, rgba(255,255,255,.06), transparent 52%),
      linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.25) 100%);
    pointer-events:none;
    z-index:1;
    mix-blend-mode:soft-light;
  }
  .ocean-wave-stage canvas{
    width:100%;
    max-width:100%;
    height:100%;
    display:block;
    position:relative;
    z-index:0;
  }

  @media (max-width:640px){
    .ocean-wave-stage{
      min-height:clamp(170px,46vw,220px);
    }
  }

  .ocean-wave-hud{
    position:absolute;
    left:14px;
    bottom:14px;
    display:flex;
    align-items:center;
    gap:12px;
    z-index:2;
  }
  .ocean-wave-status{
    display:inline-flex;
    align-items:center;
    padding:10px 12px;
    border-radius:999px;
    border:1px solid color-mix(in srgb,var(--primary) 22%, transparent);
    background:color-mix(in srgb,var(--surface) 72%, transparent);
    backdrop-filter:blur(10px);
    color:color-mix(in srgb,var(--text-light) 92%, #ffffff 8%);
    font-family:'Inter';
    font-weight:600;
    letter-spacing:.01em;
    font-size:.92rem;
  }
  .ocean-wave-toggle{
    width:46px;
    height:46px;
    border-radius:999px;
  }
  .ocean-wave-note{
    margin:0;
    color:var(--text-muted);
    font-size:.98rem;
    line-height:1.6;
  }
  .ocean-wave-summary{
    margin:0;
    padding:12px 14px;
    border-left:3px solid color-mix(in srgb,var(--primary) 72%, #ffffff 28%);
    border-radius:0 12px 12px 0;
    background:color-mix(in srgb,var(--surface) 88%, #071722 12%);
    color:var(--text-light);
    font-size:.96rem;
    line-height:1.6;
  }

  .ocean-wave-controls{
    display:grid;
    gap:16px;
  }
  .ocean-wave-presets{
    display:grid;
    gap:10px;
    margin:0;
    padding:0;
    border:0;
    min-width:0;
  }
  .ocean-wave-presets legend{
    margin:0 0 10px;
    padding:0;
    font-family:'Inter';
    font-size:.95rem;
    font-weight:700;
    color:var(--text-light);
  }
  .ocean-wave-preset-grid{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:8px;
  }
  .ocean-wave-preset{
    min-height:42px;
    padding:9px 10px;
    border:1px solid color-mix(in srgb,var(--primary) 24%, transparent);
    border-radius:10px;
    background:color-mix(in srgb,var(--surface) 88%, #050b12 12%);
    color:var(--text-light);
    font-family:'Inter';
    font-size:.86rem;
    font-weight:650;
    line-height:1.25;
    cursor:pointer;
    transition:border-color .18s ease,background-color .18s ease,transform .18s ease;
  }
  .ocean-wave-preset:hover{
    border-color:color-mix(in srgb,var(--primary) 64%, transparent);
    transform:translateY(-1px);
  }
  .ocean-wave-preset.is-active{
    border-color:color-mix(in srgb,var(--primary) 80%, #ffffff 20%);
    background:color-mix(in srgb,var(--primary) 22%, var(--surface) 78%);
    box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--primary) 34%, transparent);
  }
  .ocean-wave-preset:focus-visible,
  .ocean-wave-select:focus-visible{
    outline:2px solid color-mix(in srgb,var(--primary) 76%, #ffffff 24%);
    outline-offset:2px;
  }
  .ocean-wave-control{
    display:grid;
    gap:8px;
  }
  .ocean-wave-label{
    display:flex;
    align-items:baseline;
    justify-content:space-between;
    gap:12px;
    font-family:'Inter';
    font-weight:600;
  }
  .ocean-wave-value{
    font-weight:700;
    color:color-mix(in srgb,var(--text-light) 90%, #ffffff 10%);
    background:color-mix(in srgb,var(--surface) 88%, #000 12%);
    border:1px solid color-mix(in srgb,var(--primary) 18%, transparent);
    border-radius:999px;
    padding:6px 10px;
    font-size:.88rem;
    letter-spacing:.01em;
    white-space:nowrap;
  }
  .ocean-wave-help{
    margin:0;
    color:var(--text-muted);
    font-size:.95rem;
    line-height:1.5;
  }

  .ocean-wave-controls input[type="range"]{
    width:100%;
    accent-color:var(--primary);
  }
  .ocean-wave-select{
    width:100%;
    min-height:44px;
    padding:10px 38px 10px 12px;
    border:1px solid color-mix(in srgb,var(--primary) 24%, transparent);
    border-radius:10px;
    background:color-mix(in srgb,var(--surface) 88%, #050b12 12%);
    color:var(--text-light);
    font-family:'Inter';
    font-size:.95rem;
    font-weight:600;
  }
  .ocean-wave-controls input[type="range"]::-webkit-slider-runnable-track{
    height:8px;
    border-radius:999px;
    background:linear-gradient(90deg,
      color-mix(in srgb,var(--primary) 62%, transparent),
      color-mix(in srgb,var(--primary) 18%, transparent));
    border:1px solid color-mix(in srgb,var(--primary) 18%, transparent);
  }
  .ocean-wave-controls input[type="range"]::-webkit-slider-thumb{
    -webkit-appearance:none;
    appearance:none;
    width:20px;
    height:20px;
    border-radius:999px;
    background:linear-gradient(135deg,
      color-mix(in srgb,var(--primary) 92%, #ffffff 8%) 0%,
      color-mix(in srgb,var(--primary) 62%, #071219 38%) 100%);
    border:2px solid color-mix(in srgb,var(--bg) 55%, transparent);
    box-shadow:0 10px 22px rgba(0,0,0,.28);
    margin-top:-7px;
  }
  .ocean-wave-controls input[type="range"]::-moz-range-track{
    height:8px;
    border-radius:999px;
    background:linear-gradient(90deg,
      color-mix(in srgb,var(--primary) 62%, transparent),
      color-mix(in srgb,var(--primary) 18%, transparent));
    border:1px solid color-mix(in srgb,var(--primary) 18%, transparent);
  }
  .ocean-wave-controls input[type="range"]::-moz-range-thumb{
    width:20px;
    height:20px;
    border-radius:999px;
    background:linear-gradient(135deg,
      color-mix(in srgb,var(--primary) 92%, #ffffff 8%) 0%,
      color-mix(in srgb,var(--primary) 62%, #071219 38%) 100%);
    border:2px solid color-mix(in srgb,var(--bg) 55%, transparent);
    box-shadow:0 10px 22px rgba(0,0,0,.28);
  }

  .ocean-wave-actions{
    display:flex;
    justify-content:flex-start;
    gap:10px;
    flex-wrap:wrap;
    margin-top:6px;
  }
  .ocean-wave-actions button{
    min-height:44px;
    font-family:'Inter';
  }

  @media (max-width:760px){
    .ocean-wave-page .ocean-wave-section{
      padding-bottom:calc(7.5rem + env(safe-area-inset-bottom));
    }
    .ocean-wave-card{
      padding:1.15rem;
    }
    .ocean-wave-hud{
      left:10px;
      bottom:calc(10px + env(safe-area-inset-bottom));
      gap:8px;
    }
    .ocean-wave-status{
      padding:8px 10px;
      font-size:.82rem;
    }
    .ocean-wave-actions{
      display:grid;
      grid-template-columns:repeat(2,minmax(0,1fr));
      width:100%;
    }
    .ocean-wave-actions button{
      width:100%;
      min-width:0;
      white-space:normal;
    }
  }

  @media (max-width:420px){
    .ocean-wave-preset-grid,
    .ocean-wave-actions{
      grid-template-columns:1fr;
    }
  }

  @media (prefers-reduced-motion:reduce){
    .ocean-wave-preset{
      transition:none;
    }
    .ocean-wave-preset:hover{
      transform:none;
    }
  }
}
