:root{
  --red:#B01218; --red-deep:#7E0D12; --red-soft:#C8323A;
  --gold:#E3A72C; --gold-deep:#B9821A;
  --paper:#FBF6EE; --card:#FFFFFF;
  --ink:#241A17; --muted:#8A7B72; --line:#EADFCF;
  --ok:#1F9D57; --shadow:0 18px 50px rgba(80,20,10,.14);
  --r:22px;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%}
body{
  font-family:'Be Vietnam Pro',-apple-system,'Segoe UI',Roboto,sans-serif;
  color:var(--ink); background:
    radial-gradient(120% 60% at 50% -10%, #fff6e9 0%, transparent 60%),
    radial-gradient(120% 80% at 50% 120%, #fbe9d6 0%, transparent 55%),
    var(--paper);
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
  overscroll-behavior:none; user-select:none; -webkit-user-select:none;
}
#app{min-height:100dvh;display:flex;flex-direction:column}
.hidden{display:none!important}
.screen{flex:1;display:flex;flex-direction:column;min-height:100dvh}
button{font-family:inherit;cursor:pointer;border:none}
input,textarea{font-family:inherit}

/* ---------- TOP BAR ---------- */
.topbar{display:flex;align-items:center;gap:14px;padding:16px 20px;position:relative}
.topbar.red{background:linear-gradient(120deg,var(--red-deep),var(--red));color:#fff;box-shadow:0 8px 24px rgba(120,13,18,.28)}
.tb-logo{width:52px;height:52px;object-fit:contain;flex:none;
  background:#fff;border-radius:50%;padding:3px;box-shadow:0 3px 10px rgba(0,0,0,.18)}
.tb-text{line-height:1.15;min-width:0}
.tb-org{font-weight:800;font-size:clamp(14px,2.3vw,18px);letter-spacing:.2px}
.tb-sub{font-size:clamp(11px,1.7vw,13px);opacity:.85;font-weight:500;margin-top:2px}
.tb-gear{margin-left:auto;width:38px;height:38px;border-radius:50%;background:rgba(255,255,255,.16);
  color:#fff;font-size:19px;display:grid;place-items:center;flex:none}

/* ---------- COUNTER BADGE + DUTY ---------- */
.counter-badge{margin:22px auto 6px;display:flex;align-items:baseline;gap:12px;
  padding:8px 26px;border-radius:999px;background:#fff;box-shadow:var(--shadow);border:1px solid var(--line)}
.cb-label{font-weight:700;color:var(--gold-deep);letter-spacing:3px;font-size:13px}
.cb-name{font-weight:900;font-size:clamp(26px,6vw,40px);color:var(--red-deep);letter-spacing:.5px}

.duty-wrap{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;padding:6px 16px 2px}
.duty{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line);
  border-radius:18px;padding:8px 16px 8px 8px;box-shadow:0 6px 18px rgba(80,20,10,.08)}
.duty img,.duty .noav{width:52px;height:52px;border-radius:14px;object-fit:cover;flex:none;
  border:2px solid var(--gold)}
.duty .noav{display:grid;place-items:center;background:linear-gradient(135deg,#f6e3c4,#eecb95);
  color:var(--red-deep);font-weight:800;font-size:20px}
.duty .dtxt{line-height:1.2}
.duty .dtag{font-size:10.5px;color:var(--muted);font-weight:600;letter-spacing:.4px;text-transform:uppercase}
.duty .dname{font-weight:800;font-size:16px}
.duty .dtitle{font-size:12px;color:var(--muted)}

/* ---------- PROMPT + FACES ---------- */
.prompt{text-align:center;font-weight:700;font-size:clamp(17px,3.2vw,23px);
  color:var(--ink);margin:20px 24px 8px;line-height:1.35}
.faces{flex:1;display:flex;flex-direction:column;justify-content:center;gap:14px;
  padding:6px 18px 26px;max-width:640px;width:100%;margin:0 auto}
.face{display:flex;align-items:center;gap:20px;width:100%;
  background:var(--card);border:2px solid var(--line);border-radius:var(--r);
  padding:14px 22px;box-shadow:0 8px 22px rgba(80,20,10,.07);
  transition:transform .12s ease, box-shadow .2s, border-color .2s}
.face:active{transform:scale(.97)}
.face .emo{font-size:clamp(44px,10vw,62px);line-height:1;filter:drop-shadow(0 4px 8px rgba(0,0,0,.12))}
.face .lbl{font-weight:800;font-size:clamp(18px,3.6vw,24px)}
.face .bar{margin-left:auto;width:12px;height:44px;border-radius:8px;opacity:.85}
.face[data-l="1"]{--c:#E14B4B} .face[data-l="2"]{--c:#EE8B2E}
.face[data-l="3"]{--c:#D9B121} .face[data-l="4"]{--c:#43A96B} .face[data-l="5"]{--c:#1F9D57}
.face .bar{background:var(--c)}
.face.pick{border-color:var(--c);box-shadow:0 12px 30px color-mix(in srgb,var(--c) 35%, transparent);transform:scale(1.02)}
@keyframes pop{0%{transform:scale(1)}40%{transform:scale(1.12)}100%{transform:scale(1.02)}}
.face.pop .emo{animation:pop .35s ease}

/* ---------- CHOSEN (form screen) ---------- */
.chosen{display:flex;align-items:center;justify-content:center;gap:16px;padding:22px 16px 6px}
.chosen .emo{font-size:64px;filter:drop-shadow(0 6px 10px rgba(0,0,0,.15))}
.chosen .lbl{font-weight:900;font-size:24px;color:var(--red-deep)}

/* ---------- FORM ---------- */
.rf{max-width:560px;width:100%;margin:0 auto;padding:14px 22px 30px;display:flex;flex-direction:column;gap:14px}
.fld{display:flex;flex-direction:column;gap:7px}
.fl{font-weight:700;font-size:15px;color:var(--ink)}
.fl .req{color:var(--red);display:none}
.fld.required .req{display:inline}
.fld input,.fld textarea{
  border:2px solid var(--line);border-radius:16px;padding:15px 16px;font-size:18px;background:#fff;
  transition:border-color .18s, box-shadow .18s;width:100%}
.fld input:focus,.fld textarea:focus{outline:none;border-color:var(--gold);
  box-shadow:0 0 0 4px rgba(227,167,44,.18)}
.fld textarea{resize:none;font-size:16px}
.form-err,.gate-err{color:#C42; font-weight:600;font-size:14px;min-height:18px;text-align:center}
.rf-actions{display:flex;gap:12px;margin-top:6px}

.btn-primary{background:linear-gradient(120deg,var(--red),var(--red-soft));color:#fff;
  font-weight:800;font-size:19px;padding:17px 26px;border-radius:16px;
  box-shadow:0 10px 26px rgba(176,18,24,.32);transition:transform .12s, filter .2s}
.btn-primary:active{transform:scale(.97);filter:brightness(1.05)}
.btn-primary.grow{flex:1}
.btn-ghost{background:#fff;border:2px solid var(--line);color:var(--muted);font-weight:700;
  font-size:16px;padding:16px 20px;border-radius:16px}
.btn-ghost:active{transform:scale(.97)}

/* ---------- PICKER ---------- */
.picker-head{text-align:center;font-weight:800;font-size:clamp(19px,3.6vw,26px);
  color:var(--red-deep);margin:26px 16px 10px}
.counter-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:16px;
  padding:8px 22px 30px;max-width:720px;width:100%;margin:0 auto}
.cg-item{background:#fff;border:2px solid var(--line);border-radius:var(--r);padding:22px 16px;
  text-align:center;box-shadow:0 8px 22px rgba(80,20,10,.07);transition:transform .12s,border-color .2s}
.cg-item:active{transform:scale(.96)}
.cg-item .cg-name{font-weight:900;font-size:22px;color:var(--red-deep)}
.cg-item .cg-duty{margin-top:12px;display:flex;align-items:center;gap:8px;justify-content:center}
.cg-item .cg-duty img,.cg-item .cg-duty .noav{width:34px;height:34px;border-radius:10px;object-fit:cover;border:2px solid var(--gold)}
.cg-item .cg-duty .noav{display:grid;place-items:center;background:#f6e3c4;color:var(--red-deep);font-weight:800;font-size:14px}
.cg-item .cg-duty span{font-size:13px;font-weight:700;color:var(--muted)}

/* ---------- GATE ---------- */
#gate{align-items:center;justify-content:center;background:
  radial-gradient(120% 60% at 50% 0%, #fff2e0 0%, transparent 60%), var(--paper)}
.gate-card{background:#fff;border-radius:28px;box-shadow:var(--shadow);border:1px solid var(--line);
  padding:34px 30px;width:min(400px,88vw);text-align:center;display:flex;flex-direction:column;gap:14px}
.gate-logo{width:76px;height:76px;object-fit:contain;margin:0 auto;background:#fff;border-radius:50%;
  padding:4px;box-shadow:0 4px 14px rgba(0,0,0,.12)}
.gate-org{font-weight:800;font-size:16px;color:var(--red-deep);line-height:1.3}
.gate-lock{font-size:34px}
.gate-title{font-weight:700;color:var(--ink);font-size:15px}
.gate-input{border:2px solid var(--line);border-radius:16px;padding:16px;font-size:26px;text-align:center;
  letter-spacing:8px;font-weight:800}
.gate-input:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 4px rgba(227,167,44,.18)}

/* ---------- THANKS ---------- */
#thanks{align-items:center;justify-content:center;background:linear-gradient(160deg,#118a4a,#1F9D57)}
.thanks-inner{text-align:center;color:#fff;padding:30px;animation:rise .5s ease}
@keyframes rise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
.thanks-emoji{font-size:96px;animation:pop .5s ease}
.check{width:96px;height:96px;border-radius:50%;background:rgba(255,255,255,.18);
  display:grid;place-items:center;font-size:56px;margin:14px auto 20px;
  animation:pop .55s ease .1s both}
.thanks-msg{font-weight:900;font-size:30px}
.thanks-sub{margin-top:10px;font-size:16px;opacity:.92;max-width:340px}

/* ---------- LOADING ---------- */
#loading{align-items:center;justify-content:center}
.spin{width:46px;height:46px;border-radius:50%;border:5px solid var(--line);border-top-color:var(--red);
  animation:sp 1s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}

/* ---------- iPad dọc & màn lớn ---------- */
@media (min-height:900px){
  .face{padding:20px 26px}
  .prompt{margin-top:34px}
  .counter-badge{margin-top:34px}
}
