:root {
    --black: #000000;
    --white: #FFFFFF;
    --grey-background: #D9D9D9;
    --grey: #A2A2A2;

    --border-radius: 5px;

    --columns: 12;
    --gutter: 20px;
    --margin: 50px;


    --font-size-sm: 14px;
    --font-size-md: 16px;

    --control-height: 22px;
    
    --thumb-size: 10px;
    
    --toggle-width: 40px;
    --toggle-height: 16px;
}

/*font*/
@font-face {
    font-family: "NeueHaasDisplayMedium";
    src: url("../fonts/NeueHaasDisplayMedium.ttf") format("opentype");
}

@font-face {
  font-family: 'ExposureTrial';
  src: url('../fonts/ExposureTrial[-100].otf') format('opentype');
  font-weight: normal;
  font-style: normal;
}

/*general*/
* {
    margin: 0;
    padding: 0;
    text-wrap: pretty;
}

body {
    background-color: var(--black);
    color: var(--white);
    font-family: 'NeueHaasDisplayMedium';
}


.grid {
    display: grid;
    grid-template-columns: repeat(var(--columns), 1fr);
    column-gap: var(--gutter);
    margin: 0;
}

.span-1 {
    grid-column: span 1;
}

.span-2 {
    grid-column: span 2;
}

.span-3 {
    grid-column: span 3;
}

.span-4 {
    grid-column: span 4;
}

.span-5 {
    grid-column: span 5;
}

.span-6 {
    grid-column: span 6;
}

.span-7 {
    grid-column: span 7;
}

.span-8 {
    grid-column: span 8;
}

.span-9 {
    grid-column: span 9;
}

.span-10 {
    grid-column: span 10;
}

.span-11 {
    grid-column: span 11;
}

.span-12 {
    grid-column: span 12;
}

video{
    display: none;
}





/*interation*/
.cam-container {
    line-height: 0;
    width: 80% !important;
    opacity: 0;
}

.cam-container canvas {
    border-radius: var(--border-radius);
    width: 100% !important;
    height: auto !important;
    display: block;
}

.cam-container video {
    border-radius: var(--border-radius);
    width: 100% !important;
    height: auto !important;
    display: block;
    transform: scaleX(-1); /* mirror so it feels like looking in a mirror */
}

span{
    font-family: 'Exposure[-100]';
    font-size: 50px;
    color: var(--white);
}

.interaction-text{
    padding: calc(var(--margin) / 2);
}


.interaction-container {
    width: 100%;
    height: calc(100vh);
    background-color: var(--black);
    border-radius: var(--border-radius);
    overflow: hidden;
    position: relative;
}

#points-container {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.points-canvas {
  width: 100% !important;
  height: 100% !important;
}

/* status line (camera / hand-tracking messages) */
.lsc-status {
  position: absolute;
  top: 20px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 50;
  padding: 6px 12px;
  border-radius: var(--border-radius);
  background-color: rgba(255,255,255,0.8);
  color: var(--black);
  font-size: 13px;
  pointer-events: none;
  display: none;
}






/* Controls */
.side{
    display: flex;
    flex-direction: column;
    justify-content: space-between;
}

.control-container{
    width:10%;
    min-width: 190px;
    box-sizing: border-box;
    background-color: rgba(255,255,255,0.8);
    color: var(--black);
    padding: 20px;
    border-radius: var(--border-radius);

    position: absolute;
    bottom: var(--margin);
    left: var(--margin);
z-index: 100;
}

.control-flex{
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    padding: 10px 0;
    border-bottom: 1px solid var(--grey);
    align-items: center;
}

.control-container p{
    font-size: 15px;
    white-space: nowrap;
}

.control-flex{
    gap: 10px;
}


input[type="color"] {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  width: 30px;
  height: 15px;
  background-color: transparent;
  border: none;
  cursor: pointer;
}

input[type="color"]::-webkit-color-swatch {
  border: none;
}

input[type="color"]::-moz-color-swatch {
  border: none;
}

input[type="color"]::-webkit-color-swatch-wrapper {
  padding: 0;
  border: none;
}

.button{
    width:10px;
    height:10px;
    background-color: var(--grey);
    border-radius: 100%;
}

.button-container:hover{
    cursor: pointer;
}

.button-container:hover .button{
    background-color: var(--black);
}

.button.active{
    background-color: var(--black);
}

/*switch*/
.switch {
  position: relative;
  display: inline-block;
  width: 30px;
  height: 15px;
  cursor: pointer;
}

.switch input {
  opacity: 0;
  width: 0;
  height: 0;
}

.switch-track {
  position: absolute;
  inset: 0;
  background-color: var(--black);
  border-radius: 1px;
  transition: background-color 0.2s ease;
}

.switch-thumb {
  position: absolute;
  top: 2.5px;
  left: 2.5px;
  width: var(--thumb-size);
  height: var(--thumb-size);
  background-color: var(--white);
  border-radius: 1px;
  transition: transform 0.2s ease, background-color 0.2s ease;
}

.switch input:checked + .switch-track {
  background-color: var(--white);
}

.switch input:checked + .switch-track .switch-thumb {
  background-color: var(--black);
  transform: translateX(15px);
}

/*slider*/
.control-flex.has-slider {
  position: relative;
  border-bottom: none; 
}

.slider-track {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 1px;
  background-color: var(--grey);
}

.slider-fill {
  height: 100%;
  width: 0%; 
  background-color: var(--black);
}

.slim-slider {
  -webkit-appearance: none;
  appearance: none;
  position: absolute;
  left: 0;
  bottom: -6px;
  width: 100%;
  height: 13px; 
  margin: 0;
  background: transparent;
  cursor: pointer;
}

.slim-slider::-webkit-slider-runnable-track,
.slim-slider::-moz-range-track {
  height: 13px;
  background: transparent;
}

.slim-slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 2px;
  height: 12px;
  background-color: var(--black, #000);
  border-radius: 0;
  cursor: pointer;
  opacity: 0;
  transition: opacity 0.15s ease;
}

.slim-slider::-moz-range-thumb {
  width: 2px;
  height: 12px;
  background-color: var(--black, #000);
  border: none;
  border-radius: 0;
  cursor: pointer;
  opacity: 0;
  transition: opacity 0.15s ease;
}

.slim-slider:hover::-webkit-slider-thumb {
  opacity: 1;
}

.slim-slider:hover::-moz-range-thumb {
  opacity: 1;
}









/* ==========================================
   Mobile Responsive Adjustments (@media)
   ========================================== */
@media screen and (max-width: 768px) {
  :root {
    --margin: 16px;
    --gutter: 10px;
    --control-height: 36px;
    --thumb-size: 16px;
    --toggle-width: 50px;
    --toggle-height: 24px;
    --font-size-sm: 14px;
    --font-size-md: 16px;
  }

  .grid {
    position: relative;
    display: flex;
    flex-direction: column-reverse;
    gap: 16px;
  }

  .span-1, .span-2, .span-3, .span-4, .span-5, 
  .span-6, .span-7, .span-8, .span-9, .span-10, .span-11, .span-12 {
    grid-column: span 12;
    width: 100%;
  }

  .interaction-container {
    position: relative;
    height: 50vh;
    min-height: 320px;
    width: 100%;
    z-index: 1;
  }

  .side {
    position: static;
    display: flex;
    flex-direction: column;
    gap: 20px;
  }

  .cam-container {
    position: absolute;
    top: var(--margin);
    left: var(--margin);
    z-index: 10;
    width: auto;
    display: none;
  }

  .cam-container canvas,
  .cam-container video {
    width: 80px;
    height: auto;
    border-radius: var(--border-radius);
    display: block;
  }

  /* 5. Controls retain their normal location below */
  .control-panel {
    width: 100%;
    gap: 16px;
  }

  .btn-save {
    width: 100%;
    margin-top: 10px;
  }
}

