:root{--primary:#4a90e2;--primary-dark:#2980b9;--accent:#f39c12;--bg:#f0f2f5;--card:#fff;--text:#2c3e50;--muted:#7f8c8d;--success:#27ae60;--danger:#e74c3c;--warning:#f39c12;--line:#e9edf1;--shadow:0 2px 12px #0000000f;--nav-h:62px}*{-webkit-tap-highlight-color:transparent}body{background-color:var(--bg);color:var(--text);padding-bottom:calc(var(--nav-h) + env(safe-area-inset-bottom) + 12px);-webkit-text-size-adjust:100%;margin:0;font-family:Noto Sans Lao,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif}h1,h2,h3,h4{line-height:1.45}.app-header{background:linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);color:#fff;padding:calc(20px + env(safe-area-inset-top)) 16px 20px;text-align:center;border-bottom-right-radius:24px;border-bottom-left-radius:24px;box-shadow:0 4px 20px #4a90e24d}.app-header h1{margin:0;font-size:1.3rem;font-weight:700}.app-header .sub{opacity:.92;margin:6px 0 0;font-size:.9rem}.app-header .event-date{opacity:.85;margin:4px 0 0;font-size:.8rem}.app-main{max-width:720px;margin-top:16px}.section-title{margin-bottom:14px;font-size:1.05rem;font-weight:700}.req{color:var(--danger)}.card-c{background:var(--card);box-shadow:var(--shadow);border:none;border-radius:16px;margin-bottom:16px}.banner-icon{width:42px;height:42px;color:var(--primary);background:#e8f2fd;border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;font-size:1.2rem;display:flex}.form-label{margin-bottom:6px;font-size:.9rem;font-weight:600}.form-control,.form-select{background-color:#fafbfc;border:1.5px solid #e0e4e8;border-radius:12px;padding:12px 14px;font-size:16px}.form-control:focus,.form-select:focus{border-color:var(--primary);background-color:#fff;box-shadow:0 0 0 3px #4a90e226}.form-control.is-invalid,.form-select.is-invalid{border-color:var(--danger)}.field-error{color:var(--danger);min-height:0;margin-top:4px;font-size:.8rem}.field-error:empty{display:none}.pin-input{letter-spacing:.4em}.form-check-input{width:1.35em;height:1.35em;margin-top:.2em}.form-check-label{padding-left:4px}.btn{border-radius:12px}.btn-main{background:linear-gradient(135deg, var(--primary), var(--primary-dark));color:#fff;border:none;border-radius:12px;width:100%;padding:14px;font-size:1.05rem;font-weight:600;box-shadow:0 4px 12px #4a90e259}.btn-main:hover,.btn-main:focus{color:#fff}.btn-main:active{transform:translateY(1px)}.btn-main:disabled{opacity:.65}.btn-green{background:linear-gradient(135deg,#27ae60,#16a085);box-shadow:0 4px 12px #27ae604d}.btn-tall{min-height:48px;padding:12px}.btn-sm{min-height:40px}.btn-main,.btn-tall,.nav-item-c{min-height:48px}.price-summary{background:var(--primary);color:#fff;text-align:center;border-radius:12px;margin-top:12px;padding:14px;font-weight:600}.price-summary .amount{font-size:1.6rem;font-weight:700}.file-preview{border:1.5px solid #e0e4e8;border-radius:12px;margin-top:10px;position:relative;overflow:hidden}.file-preview img{object-fit:cover;width:100%;max-height:220px;display:block}.file-preview .remove-btn{color:#fff;background:#e74c3ceb;border:none;border-radius:50%;width:34px;height:34px;position:absolute;top:8px;right:8px}.success-mark{color:var(--success);margin-bottom:8px;font-size:3rem;line-height:1}.qr-box{background:#fff;border:1px solid #eee;border-radius:12px;padding:12px;display:inline-block}.qr-box img,.qr-box canvas{display:block}.bottom-nav{padding:6px 0 calc(6px + env(safe-area-inset-bottom));z-index:1030;background:#fff;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -2px 16px #00000014}.nav-item-c{color:var(--muted);background:0 0;border:none;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;padding:4px 2px;font-size:.68rem;line-height:1.3;display:flex}.nav-item-c i{font-size:1.15rem}.nav-item-c.active{color:var(--primary);font-weight:600}.list-head{color:var(--muted);border-bottom:1px solid var(--line);z-index:2;background:#f7f9fb;align-items:center;gap:12px;padding:10px 14px;font-size:.78rem;font-weight:700;display:flex;position:sticky;top:0}.col-no{text-align:center;flex-shrink:0;width:34px}.list-item{border-bottom:1px solid #f2f4f7;align-items:center;gap:12px;padding:12px 14px;display:flex}.list-item:last-child{border-bottom:none}.seq-badge{width:34px;height:34px;color:var(--primary);background:#eef3f9;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;font-size:.85rem;font-weight:700;display:flex}.list-item .name{font-weight:600}.list-item .sub{color:var(--muted);font-size:.78rem}.badge-s{white-space:nowrap;border-radius:20px;padding:4px 10px;font-size:.72rem;font-weight:600}.badge-approved{color:#155724;background:#d4edda}.badge-pending{color:#856404;background:#fff3cd}.badge-rejected{color:#721c24;background:#f8d7da}.badge-checkin{color:#0c5460;background:#d1ecf1}.stat-card{text-align:center;color:#fff;border-radius:14px;padding:14px 10px}.stat-card .num{font-size:1.5rem;font-weight:700;line-height:1.1}.stat-card .lbl{opacity:.92;margin-top:2px;font-size:.72rem}.stat-blue{background:linear-gradient(135deg,#4a90e2,#2980b9)}.stat-green{background:linear-gradient(135deg,#27ae60,#16a085)}.stat-orange{background:linear-gradient(135deg,#f39c12,#e67e22)}.stat-purple{background:linear-gradient(135deg,#9b59b6,#8e44ad)}.stat-teal{background:linear-gradient(135deg,#1abc9c,#16a085)}.stat-grey{background:linear-gradient(135deg,#95a5a6,#7f8c8d)}.money-bar{color:#fff;border-radius:14px;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;padding:12px 16px;display:flex}.money-green{background:linear-gradient(135deg,#27ae60,#16a085)}.money-blue{background:linear-gradient(135deg,#2980b9,#3498db)}.total-counter{background:var(--primary);color:#fff;border-radius:12px;justify-content:space-between;align-items:center;margin-bottom:14px;padding:12px 16px;display:flex}.admin-row{cursor:pointer;background:#fff;border-left:4px solid #ccc;border-radius:12px;align-items:flex-start;gap:10px;margin-bottom:10px;padding:12px;display:flex;box-shadow:0 1px 4px #0000000d}.admin-row.status-Approved{border-left-color:var(--success)}.admin-row.status-Pending{border-left-color:var(--warning)}.admin-row.status-Rejected{border-left-color:var(--danger)}.admin-row .body{flex-grow:1;min-width:0}.admin-row .row-head{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.admin-row .name{word-break:break-word;font-size:.98rem;font-weight:700}.admin-row .meta{color:var(--muted);margin-top:3px;font-size:.78rem}.amount-warn{color:var(--danger);font-weight:700}.admin-subnav{background:#fff;border-radius:12px;gap:2px;margin-bottom:16px;padding:4px;display:flex;box-shadow:0 2px 8px #0000000d}.admin-subnav button{color:var(--muted);background:0 0;border:none;border-radius:8px;flex-direction:column;flex:1;align-items:center;gap:3px;min-height:48px;padding:8px 4px;font-size:.78rem;font-weight:600;display:flex}.admin-subnav button.active{background:var(--primary);color:#fff}.admin-subview{display:none}.admin-subview.active{display:block}.tab-chip{color:var(--muted);background:#f0f2f5;border:none;border-radius:20px;min-height:40px;padding:8px 14px;font-size:.82rem;font-weight:600}.tab-chip.active{background:var(--primary);color:#fff}.table-wrap{-webkit-overflow-scrolling:touch;max-height:60vh;overflow:auto}.table{margin-bottom:0;font-size:.85rem}.table thead th{white-space:nowrap;z-index:1;color:var(--muted);background:#f7f9fb;font-size:.78rem;position:sticky;top:0}.table td{vertical-align:middle}.section-view{display:none}.section-view.active{animation:.2s fadeIn;display:block}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.empty-state{text-align:center;color:var(--muted);padding:36px 20px}.empty-state i{opacity:.35;margin-bottom:10px;font-size:2.4rem;display:block}.skeleton-row{align-items:center;gap:12px;padding:12px 14px;display:flex}.sk{background:linear-gradient(90deg,#eef1f4 25%,#f7f9fb 50%,#eef1f4 75%) 0 0/200% 100%;border-radius:8px;animation:1.2s infinite shimmer}.sk-box{flex-shrink:0;width:34px;height:34px}.sk-line{flex-grow:1;height:12px}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.toast-host{left:50%;bottom:calc(var(--nav-h) + env(safe-area-inset-bottom) + 12px);z-index:1080;pointer-events:none;flex-direction:column;gap:8px;width:min(92vw,420px);display:flex;position:fixed;transform:translate(-50%)}.toast-c{color:#fff;background:#2c3e50;border-radius:12px;align-items:center;gap:10px;padding:12px 16px;font-size:.9rem;animation:.2s toastIn;display:flex;box-shadow:0 6px 20px #0003}.toast-c.ok{background:#1e8449}.toast-c.err{background:#c0392b}.toast-c.warn{background:#b9770e}@keyframes toastIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}#loader{z-index:2000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#ffffffe0;flex-direction:column;justify-content:center;align-items:center;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}#loader[hidden]{display:none}#loader .spinner-border{width:3rem;height:3rem;color:var(--primary)}#qrReader{width:100%}#qrReader video{object-fit:cover;border-radius:12px;max-height:46vh;width:100%!important}.checkin-name{font-size:1.3rem;font-weight:700}.checkin-big{font-size:3rem;line-height:1}.shirt-check{border:1.5px solid var(--line);border-radius:12px;margin-bottom:8px;padding:10px 12px}.shirt-check.checked{border-color:var(--success);background:#eafaf1}.modal-content{border:none;border-radius:16px;box-shadow:0 10px 30px #0003}.modal-dialog{max-width:92vw;margin:10px auto}@media (min-width:576px){.modal-dialog{max-width:500px}}.detail-actions{gap:8px;display:flex}.detail-actions .btn{flex:1}.detail-tools{border-top:1px solid var(--line);gap:8px;margin-top:10px;padding-top:10px;display:flex}.detail-tools .btn{flex:1}.swal2-popup{border-radius:16px!important;width:auto!important;max-width:92vw!important;font-size:.95rem!important}.swal2-popup .form-control,.swal2-popup .form-select{padding:10px 12px;font-size:16px!important}@media (min-width:768px){.app-header h1{font-size:1.6rem}.nav-item-c{font-size:.78rem}.app-main{margin-top:24px}}@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important}}@media print{.bottom-nav,.app-header,#loader,.toast-host,.btn{display:none!important}.table-wrap{max-height:none;overflow:visible}body{background:#fff;padding:0}}
