/* =========================================
   GIAO BOOTH — giaobooth.css
   Polaroid camera print animation + vibrant palette
========================================= */
:root {
  --cream:#F5EDD4; --yellow:#F9C900; --blue:#2B5CB8;
  --pink:#E8347C;  --orange:#E86428; --red:#DC3040;
  --dark:#1A1A1A;  --navy:#0d1226;   --white:#FFFFFF;
  --fh:'Playfair Display',Georgia,serif;
  --fb:'Be Vietnam Pro',sans-serif;
  --t:.26s cubic-bezier(.4,0,.2,1);
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;}
body{font-family:var(--fb);background:var(--cream);color:var(--dark);overflow-x:hidden;-webkit-font-smoothing:antialiased;}
a{text-decoration:none;color:inherit;} ul{list-style:none;}
.star{color:var(--yellow);}

/* ── BUTTONS ── */
.cta-btn{display:inline-flex;align-items:center;justify-content:center;font-family:var(--fb);font-weight:700;font-size:1rem;padding:.9rem 2rem;background:var(--dark);color:var(--white);border:none;border-radius:50px;cursor:pointer;transition:var(--t);}
.cta-btn:hover:not(:disabled){background:var(--red);transform:translateY(-2px);}
.cta-btn:disabled{opacity:.5;cursor:not-allowed;}
.ghost{background:none;border:1.5px solid rgba(0,0,0,.18);color:rgba(0,0,0,.55);font-family:var(--fb);font-size:.82rem;font-weight:600;padding:.42rem .9rem;border-radius:50px;cursor:pointer;transition:var(--t);}
.ghost:hover{border-color:var(--dark);color:var(--dark);}
.ghost.light{border-color:rgba(255,255,255,.25);color:rgba(255,255,255,.6);}
.ghost.light:hover{border-color:var(--yellow);color:var(--yellow);}
.retry-btn{background:var(--yellow);border:none;font-weight:700;font-size:.82rem;padding:.5rem 1.1rem;border-radius:50px;cursor:pointer;color:var(--dark);}
.eyebrow{display:inline-block;font-size:.7rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--blue);margin-bottom:1.25rem;}

/* ── NAV ── */
.nav{position:fixed;top:0;left:0;right:0;z-index:200;background:rgba(245,237,212,.95);backdrop-filter:blur(12px);border-bottom:2px solid rgba(200,180,80,.25);transition:border-color var(--t),box-shadow var(--t);}
.nav.scrolled{border-bottom-color:var(--yellow);box-shadow:0 4px 20px rgba(0,0,0,.07);}
.nav-inner{max-width:1100px;margin:0 auto;padding:0 1.5rem;height:60px;display:flex;align-items:center;gap:.75rem;}
.nav-logo{font-family:var(--fh);font-size:1.3rem;font-weight:900;color:var(--blue);flex-shrink:0;}
.nav-center{flex:1;display:flex;align-items:center;gap:.4rem;}
.nav-sep{color:#c8b880;} .nav-sub{font-size:.7rem;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:#7a6a55;}
.nav-links{display:flex;gap:.2rem;align-items:center;list-style:none;}
.nav-links a{font-size:.8rem;font-weight:600;padding:.38rem .75rem;border-radius:50px;color:var(--dark);transition:var(--t);white-space:nowrap;}
.nav-links a:hover{background:var(--yellow);}
.npill.yellow{background:var(--yellow)!important;color:var(--dark)!important;}
.npill.yellow:hover{background:var(--orange)!important;}
.npill.pink{background:var(--pink)!important;color:var(--white)!important;}
.npill.pink:hover{background:var(--red)!important;}
.nav-burger{display:none;flex-direction:column;gap:5px;background:none;border:none;padding:8px;cursor:pointer;flex-shrink:0;}
.nav-burger span{display:block;width:22px;height:2px;background:var(--dark);border-radius:2px;}
.nav-mobile{display:none;flex-direction:column;padding:.75rem 1.5rem 1rem;gap:.35rem;border-top:1px solid rgba(0,0,0,.08);}
.nav-mobile a{font-size:.9rem;font-weight:600;padding:.55rem 1rem;border-radius:6px;display:block;}
.nav-mobile a:hover{background:var(--yellow);}
.nav-mobile.open{display:flex;}

/* ── SCREENS ── */
.screen{display:none;min-height:100vh;padding-top:60px;}
.screen.active{display:block;}

/* ════════
   LANDING
════════ */
.landing-bg{min-height:calc(100vh - 60px);background:var(--yellow);display:grid;grid-template-columns:1fr 1fr;align-items:center;padding:2rem 4rem;gap:2rem;}
.landing-h{font-family:var(--fh);font-size:clamp(3rem,7vw,5.5rem);font-weight:900;line-height:.95;letter-spacing:-.03em;color:var(--blue);margin-bottom:1.25rem;}
.landing-h em{font-style:italic;color:var(--dark);}
.landing-meta{font-size:.88rem;color:rgba(0,0,0,.55);letter-spacing:.06em;margin-bottom:2.5rem;line-height:1.6;}
.landing-strips{display:flex;gap:1rem;align-items:center;justify-content:center;flex-wrap:wrap;}
.ls-item{border-radius:8px;overflow:hidden;cursor:pointer;transition:transform var(--t);flex-shrink:0;box-shadow:5px 5px 0 rgba(43,92,184,.2);}
.ls-item:hover{transform:scale(1.04) rotate(-1deg);}
.ls-item canvas{display:block;width:100px;height:auto;}

/* ═══════════
   FRAMES
═══════════ */
#s-frames{background:var(--cream);}
.frames-page{padding:2rem 2rem 3rem;}
.frames-head{margin-bottom:2rem;}
.frames-head h2{font-family:var(--fh);font-size:2.2rem;font-weight:900;color:var(--dark);margin:.5rem 0 .4rem;}
.frames-head h2 em{font-style:italic;color:var(--red);}
.frames-head p{font-size:.88rem;color:rgba(0,0,0,.45);}
.frames-scroll{overflow-x:auto;padding-bottom:1rem;}
.frames-row{display:flex;gap:1rem;min-width:max-content;}
.frame-card{background:var(--white);border:2px solid rgba(0,0,0,.07);border-radius:14px;overflow:hidden;cursor:pointer;transition:transform var(--t),border-color var(--t),box-shadow var(--t);width:185px;flex-shrink:0;}
.frame-card:hover{transform:translateY(-4px);box-shadow:0 12px 28px rgba(0,0,0,.09);}
.frame-card.picked{border-color:var(--red);box-shadow:0 0 0 3px rgba(220,48,64,.15);}
.fc-canvas-wrap{width:100%;aspect-ratio:9/16;overflow:hidden;}
.fc-canvas-wrap canvas{width:100%;height:100%;object-fit:cover;display:block;}
.fc-info{padding:.65rem;}
.fc-name{font-family:var(--fh);font-style:italic;font-size:.88rem;font-weight:700;color:var(--dark);margin-bottom:.12rem;}
.fc-sub{font-size:.62rem;color:rgba(0,0,0,.35);letter-spacing:.06em;margin-bottom:.5rem;}
.fc-pick{width:100%;padding:.45rem;background:var(--dark);border:none;color:var(--white);font-size:.72rem;font-weight:700;border-radius:50px;cursor:pointer;transition:var(--t);}
.fc-pick:hover,.frame-card.picked .fc-pick{background:var(--red);}

/* ═══════════
   CAMERA
═══════════ */
#s-camera{background:var(--navy);}
.cam-page{display:flex;flex-direction:column;align-items:center;height:calc(100vh - 60px);}
.cam-header{width:100%;max-width:460px;height:50px;display:flex;align-items:center;justify-content:space-between;padding:0 1rem;flex-shrink:0;}
.cam-title{font-family:var(--fh);font-style:italic;font-size:.9rem;flex:1;text-align:center;color:var(--yellow);}
.cam-header.cy .cam-title{color:var(--yellow);}
.cam-header.cp .cam-title{color:var(--pink);}
.cam-header.cb .cam-title{color:#80b0ff;}
.cam-header.co .cam-title{color:var(--orange);}
.cam-header.cd .cam-title{color:#e0a0ff;}
.flip-cam{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.15);color:rgba(255,255,255,.7);width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:var(--t);}
.flip-cam:hover{background:rgba(255,255,255,.2);}
.cam-viewport-wrap{width:100%;max-width:460px;padding:0 1rem;flex:1;min-height:0;display:flex;align-items:center;}
.cam-viewport{position:relative;width:100%;aspect-ratio:3/2;background:#090c16;border-radius:12px;overflow:hidden;max-height:100%;}
#videoEl{width:100%;height:100%;object-fit:cover;transform:scaleX(-1);}
.cam-gridlines{position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(rgba(255,255,255,.04)1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.04)1px,transparent 1px);background-size:33.33% 33.33%;}
.cam-countdown{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:var(--fh);font-size:8rem;font-weight:900;color:var(--white);text-shadow:0 4px 20px rgba(0,0,0,.8);pointer-events:none;opacity:0;transform:scale(.8);transition:opacity .15s,transform .15s;}
.cam-countdown.show{opacity:1;transform:scale(1);}
.cam-flash{position:absolute;inset:0;background:var(--white);opacity:0;pointer-events:none;}
.cam-err{position:absolute;inset:0;background:rgba(9,12,22,.88);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;color:rgba(255,255,255,.7);font-size:.88rem;}
.cam-processing{position:absolute;inset:0;background:rgba(0,0,0,.78);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;color:var(--white);font-size:.82rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;}
.proc-ring{width:44px;height:44px;border:3px solid rgba(249,201,0,.15);border-top-color:var(--yellow);border-radius:50%;animation:spin 1s linear infinite;}
.shots-row{display:flex;gap:.65rem;padding:.55rem 1rem;width:100%;max-width:460px;flex-shrink:0;}
.shot-slot{flex:1;aspect-ratio:3/2;border-radius:7px;border:1.5px dashed rgba(255,255,255,.15);background:rgba(255,255,255,.04);display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative;transition:border-color var(--t);}
.shot-slot.filled{border-color:rgba(249,201,0,.5);border-style:solid;}
.slot-num{font-family:var(--fh);font-style:italic;font-size:1.3rem;color:rgba(255,255,255,.18);}
.shot-slot.filled .slot-num{display:none;}
.shot-slot img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.retake-lbl{position:absolute;inset:0;background:rgba(220,48,64,.8);color:#fff;font-size:.6rem;font-weight:700;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity var(--t);}
.shot-slot.filled .retake-lbl{opacity:.35;}
.shot-slot.filled:hover .retake-lbl{opacity:1;}
.shot-slot.filled:active .retake-lbl{opacity:1;}
.shutter-area{position:relative;display:flex;align-items:center;justify-content:center;width:100%;max-width:460px;padding:.2rem 1rem .7rem;flex-shrink:0;height:88px;}
.shutter-hint{position:absolute;right:calc(50% + 52px);font-size:.68rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.38);text-align:right;white-space:nowrap;}
.shutter-spacer{position:absolute;left:calc(50% + 52px);display:flex;align-items:center;padding-left:.5rem;}
.remote-btn{width:34px;height:34px;border-radius:50%;background:rgba(255,255,255,.08);border:1.5px solid rgba(255,255,255,.18);color:rgba(255,255,255,.38);font-size:.85rem;cursor:pointer;transition:var(--t);display:flex;align-items:center;justify-content:center;flex-shrink:0;position:relative;}
.remote-btn:hover{border-color:rgba(255,255,255,.35);color:rgba(255,255,255,.65);}
.remote-btn.on{background:rgba(249,201,0,.18);border-color:var(--yellow);color:var(--yellow);box-shadow:0 0 8px rgba(249,201,0,.3);}
.remote-btn.on::after{content:'';position:absolute;top:2px;right:2px;width:7px;height:7px;border-radius:50%;background:var(--yellow);animation:remPulse 1.5s ease-in-out infinite;}
@keyframes remPulse{0%,100%{opacity:1;transform:scale(1);}50%{opacity:.4;transform:scale(.7);}}
.shutter-btn{position:relative;width:68px;height:68px;border-radius:50%;border:3px solid rgba(255,255,255,.75);background:transparent;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:border-color .2s;flex-shrink:0;}
.shutter-btn:hover{border-color:var(--yellow);}
.shutter-btn:disabled{opacity:.3;cursor:not-allowed;}
.shutter-core{width:50px;height:50px;border-radius:50%;background:var(--white);transition:background .2s;}
.shutter-btn:hover .shutter-core{background:var(--yellow);}
.burst{position:absolute;inset:-4px;border-radius:50%;border:3px solid rgba(255,255,255,.7);animation:burstOut .6s ease-out forwards;pointer-events:none;}
@keyframes burstOut{to{transform:scale(2.8);opacity:0;}}

/* ══════════════════════════════
   POLAROID PRINT SCREEN
══════════════════════════════ */
.pscreen {
  position:fixed; inset:0; z-index:900;
  background:rgba(6,8,18,.97);
  display:none; flex-direction:column; align-items:center;
  justify-content:flex-start; padding:44px 20px 24px;
  overflow-y:auto;
}
.pscreen.show{display:flex;}
.pscreen-inner{display:flex;flex-direction:column;align-items:center;gap:0;width:100%;max-width:900px;}
.pscreen-left{display:flex;flex-direction:column;align-items:center;}
.pscreen-right{display:none;flex-direction:column;gap:1rem;min-width:240px;max-width:300px;}

/* Desktop: side-by-side, both centered */
@media(min-width:680px){
  .pscreen{justify-content:center;padding-top:40px;align-items:center;}
  .pscreen-inner{flex-direction:row;align-items:center;gap:2.5rem;padding:0 1rem;justify-content:center;}
  .pscreen-right{padding-top:0;align-items:flex-start;}
  /* QR 150% larger on desktop */
  .pqr-area{min-height:250px;}
  #pqrDiv canvas,#pqrDiv img{width:200px!important;height:200px!important;}
}

/* Camera body */
.pcam-wrap{display:flex;flex-direction:column;align-items:center;flex-shrink:0;}
.pcam {
  width:260px;
  background:linear-gradient(180deg,#f8f5ee,#ede9df);
  border-radius:16px 16px 4px 4px;
  padding:14px 16px 10px;
  box-shadow:0 12px 40px rgba(0,0,0,.6),0 0 0 1px rgba(255,255,255,.05);
  opacity:0; /* animated in */
}
.pcam.appear{animation:camIn .7s cubic-bezier(.34,1.4,.64,1) .2s forwards;}
@keyframes camIn{to{opacity:1;}}
.pcam-rainbow{height:7px;background:linear-gradient(90deg,#DC3040 0%,#E86428 20%,#F9C900 40%,#2B5CB8 60%,#E8347C 80%,#9B59B6 100%);border-radius:3px;margin-bottom:12px;}
.pcam-top{display:flex;align-items:center;gap:10px;margin-bottom:10px;}
.pcam-flash-unit{display:flex;flex-direction:column;align-items:center;gap:4px;flex-shrink:0;}
.pcam-flash-bulb{width:26px;height:18px;background:linear-gradient(135deg,#fffad0,#f0e060);border-radius:4px;border:1px solid rgba(0,0,0,.12);box-shadow:inset 0 1px 0 rgba(255,255,255,.8);}
.pcam-center{flex:1;display:flex;justify-content:center;}
.pcam-lens{width:72px;height:72px;border-radius:50%;background:linear-gradient(145deg,#2a2a2a,#111);border:4px solid #555;box-shadow:inset 0 3px 10px rgba(0,0,0,.7),0 2px 6px rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;}
.pcam-lens-outer{width:52px;height:52px;border-radius:50%;background:radial-gradient(circle at 40% 35%,#1a2a4a,#0a0e18);border:2px solid rgba(255,255,255,.12);display:flex;align-items:center;justify-content:center;}
.pcam-lens-inner{width:30px;height:30px;border-radius:50%;background:radial-gradient(circle at 35% 30%,rgba(100,160,255,.6),rgba(20,40,90,.9));border:1px solid rgba(255,255,255,.1);display:flex;align-items:center;justify-content:center;}
.pcam-lens-core{width:10px;height:10px;border-radius:50%;background:rgba(255,255,255,.25);}
.pcam-side{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex-shrink:0;}
.pcam-vf{width:44px;height:28px;background:rgba(0,0,0,.15);border-radius:4px;border:1px solid rgba(0,0,0,.2);}
.pcam-shutter-btn{width:16px;height:16px;border-radius:50%;background:var(--red);box-shadow:0 2px 5px rgba(0,0,0,.4);cursor:default;}
.pcam-brand{font-family:var(--fh);font-size:11px;font-weight:700;letter-spacing:.15em;color:#555;text-align:center;padding-top:4px;}
.pcam-brand span{color:var(--yellow);}
/* Slot */
.pcam-slot{width:260px;height:14px;background:linear-gradient(180deg,#ccc8c0,#b8b4ac);border-radius:0 0 3px 3px;box-shadow:0 6px 16px rgba(0,0,0,.5);}

/* Strip printing out */
.pstrip-outer{width:260px;overflow:hidden;height:0;}
.pstrip-canvas{display:block;width:100%;height:auto;}

/* Status + actions */
.pstatus{font-size:.78rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.35);margin-top:1rem;text-align:center;min-height:1.2em;}
.pactions{display:none;flex-direction:column;align-items:center;gap:.75rem;margin-top:1rem;width:260px;}
.pactions .cta-btn{width:100%;justify-content:center;}
.pactions .ghost{width:100%;justify-content:center;}
.pright-btns{display:flex;flex-direction:column;gap:.6rem;width:100%;}
.pright-btns .cta-btn{width:100%;justify-content:center;}
.ghost.fill{width:100%;justify-content:center;display:flex;}

/* QR Panel in print screen */
.pqr-panel{background:rgba(255,255,255,.06);border-radius:12px;padding:1rem;width:100%;text-align:center;border:1px solid rgba(255,255,255,.08);}
.pqr-label{font-size:.65rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--yellow);margin-bottom:.65rem;}
.pqr-area{min-height:130px;background:rgba(0,0,0,.2);border-radius:8px;padding:.65rem;display:flex;align-items:center;justify-content:center;margin-bottom:.5rem;}
.pqr-spinner{display:flex;flex-direction:column;align-items:center;gap:.45rem;}
.pqr-ring{width:28px;height:28px;border:2.5px solid rgba(249,201,0,.15);border-top-color:var(--yellow);border-radius:50%;animation:spin 1s linear infinite;}
#pqrDiv canvas,#pqrDiv img{border-radius:6px;display:block;}
.pqr-note{font-size:.62rem;color:rgba(255,255,255,.28);line-height:1.5;}

@keyframes spin{to{transform:rotate(360deg);}}

/* ════════════
   FOOTER
════════════ */
.site-footer{background:var(--dark);border-top:2px solid rgba(249,201,0,.25);padding:1.25rem 1.5rem;}
.fi{max-width:1100px;margin:0 auto;display:flex;align-items:center;gap:1rem;flex-wrap:wrap;}
.fl{font-family:var(--fh);font-size:1.1rem;font-weight:700;color:var(--yellow);}
.fn{font-size:.7rem;letter-spacing:.1em;color:rgba(255,255,255,.2);}

/* ════════
   RESPONSIVE
════════ */
@media(max-width:900px){
  .nav-links{display:none;} .nav-burger{display:flex;}
  .landing-bg{grid-template-columns:1fr;padding:2rem 1.25rem;}
  .landing-strips{display:none;}
}
@media(max-width:480px){
  .landing-h{font-size:2.8rem;}
  .shutter-hint{display:none;}
  .frames-row .frame-card{width:155px;}
}
.npill.game{background:#2ecc71!important;color:#0a2010!important;}
.npill.game:hover{background:#27ae60!important;}
