.capture-mode-active{
  position:relative;
  overflow:hidden;
}

.harbor-capture-layer{
  position:absolute;
  inset:0;
  z-index:1250;
  pointer-events:none;
}

.harbor-capture-shade{
  position:absolute;
  background:rgba(2,7,17,.52);
  backdrop-filter:blur(1px);
  -webkit-backdrop-filter:blur(1px);
}

.shade-top{
  top:0;
  left:0;
  right:0;
  height:9%;
}

.shade-bottom{
  left:0;
  right:0;
  bottom:0;
  height:30%;
}

.shade-left{
  top:9%;
  bottom:30%;
  left:0;
  width:9%;
}

.shade-right{
  top:9%;
  bottom:30%;
  right:0;
  width:9%;
}
.harbor-capture-frame{
  position:absolute;
top:9%;
left:9%;
width:82%;
height:61%;
  border:2px solid rgba(255,75,95,.9);
  background:rgba(255,45,70,.055);
  box-shadow:
    0 0 0 1px rgba(255,255,255,.06),
    0 0 42px rgba(255,45,70,.20),
    inset 0 0 40px rgba(255,45,70,.08);
  overflow:hidden;
  transition:
    border-color .25s ease,
    box-shadow .25s ease,
    background .25s ease;
}

.capture-corner{
  position:absolute;
  width:38px;
  height:38px;
  border-color:#ff5368;
  border-style:solid;
  filter:drop-shadow(0 0 10px rgba(255,75,95,.85));
}

.corner-tl{
  top:-2px;
  left:-2px;
  border-width:5px 0 0 5px;
}

.corner-tr{
  top:-2px;
  right:-2px;
  border-width:5px 5px 0 0;
}

.corner-bl{
  bottom:-2px;
  left:-2px;
  border-width:0 0 5px 5px;
}

.corner-br{
  bottom:-2px;
  right:-2px;
  border-width:0 5px 5px 0;
}

.capture-scan-line{
  position:absolute;
  left:0;
  right:0;
  top:-4px;
  height:4px;
  background:linear-gradient(
    90deg,
    transparent,
    rgba(255,95,115,.85),
    transparent
  );
  box-shadow:0 0 18px rgba(255,75,95,.75);
  animation:captureScan 3.4s linear infinite;
}

@keyframes captureScan{
  from{ transform:translateY(0); }
  to{ transform:translateY(66vh); }
}

.capture-label{
  position:absolute;
  top:14px;
  left:50%;
  transform:translateX(-50%);
  padding:8px 14px;
  border-radius:999px;
  background:rgba(2,7,17,.72);
  border:1px solid rgba(255,85,105,.38);
  color:#ff7b8e;
  font-size:11px;
  font-weight:900;
  letter-spacing:.18em;
  white-space:nowrap;
}

.harbor-capture-instruction{
  position:fixed;
    left:50%;
z-index:2600;
 

  width:min(680px,calc(100vw - 40px));

    transform:translateX(-50%);
pointer-events:auto;
    animation:capturePanelRise .6s cubic-bezier(.22,.8,.25,1) both;
  padding:18px 24px;
  border-radius:24px;
 background:rgba(3,13,24,.94);
   border:1px solid rgba(17,225,200,.28);
  box-shadow:
    0 30px 90px rgba(0,0,0,.65),
    0 0 34px rgba(17,225,200,.13);
  backdrop-filter:blur(16px);
  -webkit-backdrop-filter:blur(16px);
  text-align:center;
  pointer-events:auto;
}

.capture-instruction-kicker{
  margin-bottom:8px;
  color:var(--teal);
  font-size:11px;
  font-weight:900;
  letter-spacing:.16em;
}

.harbor-capture-instruction h2{
  color:white;
    margin:0 0 6px;
  font-size:23px;
}

.harbor-capture-instruction p{
  margin:0 0 14px;
  color:rgba(244,251,255,.68);
  line-height:1.5;
}

.capture-harbor-button{
  pointer-events:auto;
}

.capture-harbor-button.processing{
  background:linear-gradient(135deg,#ff5368,#a51635) !important;
  box-shadow:0 0 28px rgba(255,70,90,.38) !important;
}

.capture-harbor-button.success{
  background:linear-gradient(135deg,#12d9bb,#087d70) !important;
}

.harbor-capture-frame.processing{
  border-color:#ffb43c;
  background:rgba(255,180,60,.06);
  box-shadow:
    0 0 44px rgba(255,180,60,.24),
    inset 0 0 42px rgba(255,180,60,.08);
}

.harbor-capture-frame.success{
  border-color:var(--teal);
  background:rgba(17,225,200,.055);
  box-shadow:
    0 0 52px rgba(17,225,200,.30),
    inset 0 0 46px rgba(17,225,200,.10);
}

.harbor-capture-frame.error{
  animation:captureErrorShake .34s ease;
}

@keyframes captureErrorShake{
  0%,100%{ transform:translateX(0); }
  25%{ transform:translateX(-8px); }
  75%{ transform:translateX(8px); }
}

@media(max-width:760px){
  .shade-left,
  .shade-right{
    width:7%;
  }

  .harbor-capture-frame{
    left:7%;
    width:86%;
  }

  .harbor-capture-instruction{
    bottom:16px;
    padding:18px;
  }

  .harbor-capture-instruction h2{
    font-size:21px;
  }
}
.floating-search-card{
  transition:
    opacity .38s ease,
    transform .38s cubic-bezier(.22,.8,.25,1);
}

.floating-search-card.capture-hidden{
  opacity:0;
  transform:translateX(-90px);
  pointer-events:none;
}
@keyframes capturePanelRise{
  from{
    opacity:0;
    transform:translate(-50%,45px);
  }

  to{
    opacity:1;
    transform:translate(-50%,0);
  }
}
.register-modal.setup-mode.capture-modal-active{
  overflow:hidden;
}
.harbor-capture-preview{
  position:fixed;
  inset:0;
  z-index:4000;

  display:flex;
  align-items:center;
  justify-content:center;

  padding:30px;

  background:rgba(2,7,17,.76);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
}

.harbor-capture-preview-panel{
  width:min(920px,94vw);
  overflow:hidden;

  border-radius:24px;
  background:#031018;
  border:1px solid rgba(17,225,200,.35);

  box-shadow:
    0 40px 120px rgba(0,0,0,.72),
    0 0 44px rgba(17,225,200,.14);
}

.harbor-capture-preview-head{
  display:flex;
  align-items:center;
  justify-content:space-between;

  padding:14px 18px;

  color:white;
  border-bottom:1px solid rgba(255,255,255,.10);
}

.harbor-capture-preview-head button{
  width:34px;
  height:34px;

  border-radius:10px;
  border:1px solid rgba(255,255,255,.14);

  background:rgba(255,255,255,.07);
  color:white;

  font-size:22px;
  cursor:pointer;
}

.harbor-capture-preview img{
  display:block;
  width:100%;
  height:auto;
}
.btn[disabled]{
  opacity:.45;
  cursor:not-allowed;
}
.harbor-capture-feedback{
  margin:0 auto 14px;
  padding:10px 14px;
  border-radius:12px;

  font-size:13px;
  font-weight:800;
  line-height:1.4;

  width:min(520px,100%);
}

.harbor-capture-feedback.warning{
  color:#ffd28a;
  background:rgba(255,180,60,.10);
  border:1px solid rgba(255,180,60,.30);
}

.harbor-capture-feedback.success{
  color:var(--teal);
  background:rgba(17,225,200,.10);
  border:1px solid rgba(17,225,200,.28);
}
.capture-scan-line.finished{

    animation:none;

    opacity:0;

    transition:opacity .45s ease;

}
.harbor-boundary-handle{
  width:26px;
  height:26px;

  padding:0;
  border-radius:50%;

  border:4px solid white;
  background:#ff5368;

  box-shadow:
    0 0 0 3px rgba(255,83,104,.38),
    0 0 22px rgba(255,83,104,.82);

  cursor:grab;

  transition:
    transform .16s ease,
    background .16s ease,
    box-shadow .16s ease,
    border-color .16s ease;
}

.harbor-boundary-handle:hover{
  transform:scale(1.18);

  box-shadow:
    0 0 0 4px rgba(255,83,104,.42),
    0 0 30px rgba(255,83,104,.95);
}

.harbor-boundary-handle:active,
.harbor-boundary-handle.active{
  transform:scale(1.22);
  cursor:grabbing;

  background:#11e1c8;
  border-color:#ffffff;

  box-shadow:
    0 0 0 4px rgba(17,225,200,.38),
    0 0 32px rgba(17,225,200,.92);
}


.harbor-boundary-controls{
  position:fixed;
  z-index:2700;

  width:min(720px,calc(100vw - 40px));
  transform:translateX(-50%);

  padding:18px 24px;
  border-radius:24px;

  background:rgba(3,13,24,.94);
  border:1px solid rgba(255,83,104,.34);

  box-shadow:
    0 30px 90px rgba(0,0,0,.65),
    0 0 38px rgba(255,83,104,.14);

  backdrop-filter:blur(16px);
  -webkit-backdrop-filter:blur(16px);

  text-align:center;
  pointer-events:auto;

  animation:
    capturePanelRise .6s
    cubic-bezier(.22,.8,.25,1)
    both;
}

.harbor-boundary-controls h2{
  margin:0 0 7px;
  font-size:24px;
  color:white;
}

.harbor-boundary-controls p{
  margin:0 0 14px;
  color:rgba(244,251,255,.68);
  line-height:1.5;
}
.harbor-boundary-point-tools{

    position:absolute;

    top:155px;

    right:12px;

    display:flex;
    flex-direction:column;

    gap:10px;

    z-index:2800;

    pointer-events:auto;

}
.harbor-boundary-point-tools button{

    width:82px;

    height:72px;

    border:none;

    border-radius:16px;

    background:rgba(5,18,30,.94);

    color:white;

    cursor:pointer;

    display:flex;

    flex-direction:column;

    justify-content:center;

    align-items:center;

    gap:3px;

    box-shadow:
        0 10px 35px rgba(0,0,0,.45);

    transition:.18s;

}
.harbor-boundary-point-tools button:hover{

    transform:translateY(-2px);

    background:rgba(17,225,200,.12);

    border:1px solid rgba(17,225,200,.45);

}
.harbor-boundary-point-tools span{

    font-size:30px;

    line-height:1;

}
.harbor-boundary-point-tools small{

    font-size:11px;

    font-weight:700;

    color:rgba(255,255,255,.72);

}