*{margin:0;padding:0;box-sizing:border-box;}
body{overflow:hidden;background:#9ED6DD;font-family:Arial,sans-serif;}
#game{width:100vw;height:100vh;position:relative;}
canvas{position:absolute;inset:0;width:100%;height:100%;cursor:crosshair;z-index:1;}

/* top bar */
.topbar{position:absolute;top:0;left:0;right:0;z-index:10;
  display:flex;justify-content:space-between;align-items:center;
  padding:16px 24px;pointer-events:none;}
.brand{display:flex;align-items:center;gap:8px;}
.brand-icon{font-size:22px;}
.brand-name{font-size:18px;letter-spacing:4px;color:#315B70;font-weight:bold;}
.counter{background:rgba(255,255,255,.7);border:2px solid #315B70;
  border-radius:20px;padding:6px 16px;font-size:12px;font-weight:700;color:#315B70;}
.counter-label{color:#6A9CB8;margin-right:6px;}

/* task message */
.task-wrap{position:absolute;top:64px;left:50%;transform:translateX(-50%);
  z-index:10;display:flex;align-items:center;gap:8px;pointer-events:none;}
.task-dot{width:8px;height:8px;border-radius:50%;background:#FFB347;
  animation:pulse 1.5s infinite;}
@keyframes pulse{0%,100%{opacity:1;transform:scale(1);}50%{opacity:.4;transform:scale(1.4);}}
#message{color:#fff;font-size:13px;font-weight:600;
  background:rgba(49,91,112,.4);padding:7px 20px;border-radius:20px;backdrop-filter:blur(4px);}

/* right panel */
.panel{position:absolute;right:24px;top:64px;z-index:10;
  display:flex;flex-direction:column;gap:10px;}
.btn{border:none;cursor:pointer;font-family:inherit;
  font-size:13px;font-weight:700;color:#fff;
  padding:10px 18px;border-radius:24px;transition:all .15s;
  display:flex;align-items:center;gap:6px;justify-content:center;}
.btn-icon{font-size:15px;}
.btn-bubble{background:#5BC0DE;box-shadow:0 3px 0 #3A9AC8;}
.btn-bubble:hover{transform:translateY(-2px);box-shadow:0 5px 0 #3A9AC8;}
.btn-bubble:active{transform:translateY(1px);box-shadow:0 1px 0 #3A9AC8;}
.btn-restart{background:#315B70;box-shadow:0 3px 0 #1F3D4E;}
.btn-restart:hover{transform:translateY(-2px);box-shadow:0 5px 0 #1F3D4E;}
.btn-restart:active{transform:translateY(1px);box-shadow:0 1px 0 #1F3D4E;}

/* bottom hint */
.hint-bar{display:flex;justify-content:center;gap:20px;position:absolute;bottom:16px;left:50%;transform:translateX(-50%);z-index:10;}
.hint-card{background:none;border:none;padding:4px 6px;text-align:center;transition:all .2s;opacity:.85;}
.hint-card.active{opacity:1;transform:translateY(-3px);}
.hint-card.active .hint-label{color:#315B70;}
.hint-svg{width:26px;height:26px;display:block;margin:0 auto;}
.hint-img{width:26px;height:auto;display:block;margin:0 auto;}
.hint-label{font-size:9px;color:#6A9CB8;margin-top:4px;font-weight:700;letter-spacing:1px;}

/* start overlay */
#startOverlay{position:absolute;inset:0;z-index:20;
  display:flex;align-items:center;justify-content:center;
  background:linear-gradient(180deg,#6BB8E8,#9ED6DD);
  transition:opacity .4s;}
#startOverlay.hide{opacity:0;pointer-events:none;}
.start-card{text-align:center;padding:30px;max-width:340px;}
.start-whale-img{margin:0 auto 10px;animation:bounce 2s infinite;}
@keyframes bounce{0%,100%{transform:translateY(0);}50%{transform:translateY(-8px);}}
.start-card h1{font-size:28px;color:#315B70;letter-spacing:5px;margin-bottom:6px;font-weight:800;}
.start-sub{color:#315B70;font-size:12px;margin-bottom:20px;font-weight:500;opacity:.7;}
.start-rules{background:rgba(255,255,255,.7);border-radius:14px;padding:12px 18px;
  margin-bottom:20px;font-size:11px;color:#315B70;line-height:2;text-align:left;}
.start-rules div{display:flex;align-items:center;gap:8px;}
.btn-start{background:#315B70;font-size:13px;padding:11px 32px;border-radius:22px;
  box-shadow:0 3px 0 #1F3D4E;letter-spacing:1px;width:100%;}
.btn-start:hover{transform:translateY(-2px);box-shadow:0 6px 0 #1F3D4E;}
.btn-start:active{transform:translateY(2px);box-shadow:0 2px 0 #1F3D4E;}

/* capture card */
#card{display:none;position:absolute;left:50%;top:50%;
  transform:translate(-50%,-50%);z-index:15;
  background:#fff;padding:36px 44px;border-radius:24px;text-align:center;
  color:#315B70;border:3px solid #315B70;
  box-shadow:0 8px 0 rgba(31,61,78,.2);animation:pop .35s ease;}
@keyframes pop{0%{transform:translate(-50%,-50%) scale(.4);opacity:0;}100%{transform:translate(-50%,-50%) scale(1);opacity:1;}}
.card-emoji{margin:0 auto 12px;}
#card h2{font-size:22px;margin-bottom:4px;}
.card-rarity{color:#FFB347;font-size:11px;font-weight:800;letter-spacing:3px;margin-bottom:10px;}
#card p{font-size:12px;color:#6A9CB8;margin-bottom:18px;}
.card-stats{display:flex;justify-content:center;gap:20px;margin-bottom:20px;}
.stat{text-align:center;}
.stat-label{display:block;font-size:9px;color:#9AB8C8;text-transform:uppercase;letter-spacing:1px;margin-bottom:2px;}
.stat-val{font-size:13px;font-weight:700;color:#315B70;}


/* face cam panel */
#facePanel{position:absolute;bottom:16px;left:16px;z-index:10;width:248px;}
.face-label{display:none;}
.face-video-wrap{width:248px;height:186px;border-radius:10px;overflow:hidden;
  border:2px solid #315B70;background:#000;}
#faceCanvas{width:248px;height:186px;display:block;transform:scaleX(-1);}
.face-status{display:flex;justify-content:space-between;padding:6px 8px 0;}
.face-row{display:flex;align-items:center;gap:4px;font-size:10px;color:#315B70;}
.face-dot{width:7px;height:7px;border-radius:50%;background:#ccc;}
.face-dot.on{background:#5BC0DE;}
.face-dot.hot{background:#FFB347;animation:pulse 0.5s infinite;}
#handPanel{position:absolute;bottom:16px;right:16px;z-index:10;
  background:rgba(255,255,255,.85);border:2px solid #315B70;border-radius:14px;
  padding:8px 12px;min-width:110px;}
.hand-label{font-size:9px;font-weight:800;letter-spacing:2px;color:#315B70;
  text-align:center;margin-bottom:6px;}
.hand-row{display:flex;align-items:center;gap:6px;font-size:10px;color:#9AB8C8;
  padding:2px 0;transition:all .15s;}
.hand-row.active{color:#315B70;font-weight:700;}
.hand-row.active .hand-icon{transform:scale(1.2);}
.hand-icon{font-size:14px;}

@media(max-width:600px){
  .brand-name{font-size:14px;}
  .hint-bar{gap:12px;bottom:12px;}
  .hint-svg{width:22px;height:22px;}
  .hint-img{width:22px;height:auto;}
  .panel{right:12px;top:60px;}
  #card{padding:24px 28px;}
}
