:root{
  --bg:#0b1f16; --panel:#122a1e; --accent:#ffd400; --accent2:#2fae5a; --text:#eafff0; --muted:#9fc9ae; --border:#1e4430;
  --primary: var(--accent2);
  --btn-radius: 12px;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{height:100%}
body{
  margin:0;font-family:'Inter',system-ui,Segoe UI,Arial,sans-serif;
  background:radial-gradient(circle at 50% 0%,#173322,#0b1f16 60%);
  background-size:cover;background-position:center;
  color:var(--text);overscroll-behavior:none;user-select:none
}
body.has-bg-image{background-blend-mode:overlay}
#app{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px}
.wrap{width:100%;max-width:440px}
.logo{text-align:center;margin-bottom:18px}
.logo img.brand-logo{max-height:56px;max-width:220px;margin-bottom:10px}
.logo h1{font-size:1.35rem;margin:6px 0 2px;font-weight:800}
.logo p{color:var(--muted);margin:0;font-size:.85rem}
.card{background:rgba(18,42,30,.88);backdrop-filter:blur(10px);border:1px solid var(--border);border-radius:20px;padding:26px 22px;box-shadow:0 20px 60px rgba(0,0,0,.4)}
.field{margin-bottom:15px}
.field label{display:block;font-size:.82rem;color:var(--muted);margin-bottom:6px;font-weight:600}
.field input,.field select{width:100%;padding:13px 14px;border-radius:10px;border:1px solid var(--border);background:#0e2318;color:var(--text);font-size:1rem;font-family:inherit}
.field input:focus,.field select:focus{outline:2px solid var(--primary)}
.doc-type-tabs{display:flex;gap:8px;margin-bottom:15px}
.doc-type-tabs button{flex:1;padding:11px;border-radius:10px;border:1px solid var(--border);background:#0e2318;color:var(--muted);font-weight:700;cursor:pointer;font-family:inherit;font-size:.88rem}
.doc-type-tabs button.active{background:var(--primary);color:#04170c;border-color:transparent}
.btn{cursor:pointer;border:none;border-radius:var(--btn-radius);padding:15px;font-weight:800;font-size:1rem;width:100%;letter-spacing:.3px;font-family:inherit}
.btn-primary{background:linear-gradient(135deg,var(--primary),var(--accent2));color:#04170c}
.btn-primary:active{transform:scale(.98)}
.btn-primary:disabled{opacity:.6}
.error-msg{background:#3a1620;border:1px solid #7a2b3a;color:#ffb4c0;padding:10px 12px;border-radius:8px;font-size:.85rem;margin-bottom:14px}
.ok-msg{background:#123a26;border:1px solid #2b7a4f;color:#b4ffd0;padding:10px 12px;border-radius:8px;font-size:.85rem;margin-bottom:14px;text-align:center}
.field-hint{color:var(--muted);font-size:.72rem;margin-top:5px}

/* Controller screen */
.court-bg{position:fixed;inset:0;background:linear-gradient(160deg,#0b1f16,#173a26 60%,#0b1f16)}
.controller-wrap{position:relative;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:24px 16px;text-align:center}
.controller-banner{width:100%;max-width:420px;border-radius:16px;margin-bottom:12px;overflow:hidden}
.controller-banner img{width:100%;display:block}
.controller-logo{max-height:36px;margin-bottom:8px}
.status-pill{background:#123a26;border:1px solid #2b7a4f;color:#b4ffd0;padding:8px 16px;border-radius:30px;font-size:.85rem;font-weight:600}
.timer{font-size:2.2rem;font-weight:800;color:var(--primary);margin:6px 0}
.pad-area{width:100%;max-width:420px;aspect-ratio:1/1;background:rgba(255,255,255,.04);border:2px dashed var(--border);border-radius:20px;position:relative;touch-action:none;overflow:hidden}
.paddle{position:absolute;width:56px;height:56px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#ffe98a,var(--primary) 55%,#c99a00);box-shadow:0 6px 18px rgba(0,0,0,.4);left:50%;top:50%;transform:translate(-50%,-50%);background-size:cover;background-position:center}
.hint{color:var(--muted);font-size:.82rem;margin-top:10px}
.swing-btn{margin-top:20px;width:100%;max-width:420px;padding:22px;border-radius:var(--btn-radius);background:linear-gradient(135deg,var(--accent2),var(--primary));color:#231400;font-weight:900;font-size:1.3rem;border:none;box-shadow:0 12px 30px rgba(255,150,20,.2)}
.swing-btn:active{transform:scale(.97)}

/* Queue screen */
.queue-wrap{position:relative;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;text-align:center}
.queue-card{background:rgba(18,42,30,.9);border:1px solid var(--border);border-radius:22px;padding:40px 30px;max-width:420px}
.queue-number{font-size:4rem;font-weight:900;color:var(--primary);line-height:1}
.queue-sub{color:var(--muted);margin-top:10px}
.spinner{width:34px;height:34px;border-radius:50%;border:3px solid rgba(255,255,255,.15);border-top-color:var(--primary);animation:spin 1s linear infinite;margin:18px auto 0}
@keyframes spin{to{transform:rotate(360deg)}}

/* Result screen */
.result-wrap{position:relative;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;text-align:center}
.prize-box{background:var(--panel);border:2px solid var(--primary);border-radius:22px;padding:34px 26px;max-width:420px;box-shadow:0 0 60px rgba(255,212,0,.18)}
.prize-box .emoji{font-size:3.4rem}
.prize-box img.prize-photo{width:140px;height:140px;object-fit:cover;border-radius:16px;margin:6px auto 14px;display:block;border:2px solid var(--primary)}
.prize-box h2{margin:8px 0 4px;font-size:1.5rem;color:var(--primary)}
.prize-box p{color:var(--muted);margin:0}
