@import "https://fonts.googleapis.com/css2?family=Noto+Sans+Thai:wght@300;400;500;600;700&family=Inter:wght@400;500;600;700&display=swap";
:root{--bg-color:#f8fafc;--panel-bg:#fffffff2;--panel-border:#00000014;--text-primary:#0f172a;--text-secondary:#64748b;--accent-color:#3b82f6;--accent-hover:#2563eb;--success-color:#10b981;--danger-color:#ef4444;--warning-color:#f59e0b;--gradient-start:#2563eb;--gradient-end:#7c3aed;--line-green:#06c755;--line-green-hover:#05a847}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-color);color:var(--text-primary);-webkit-font-smoothing:antialiased;background-image:radial-gradient(circle at 15%,#3b82f60f,#0000 25%),radial-gradient(circle at 85% 30%,#8b5cf60f,#0000 25%);background-attachment:fixed;min-height:100vh;font-family:Noto Sans Thai,Inter,-apple-system,sans-serif}a{text-decoration:none}.container{max-width:1200px;margin:0 auto;padding:2rem}.header{border-bottom:1px solid var(--panel-border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:2.5rem;padding-bottom:1rem;display:flex}.title{background:linear-gradient(135deg, var(--gradient-start), var(--gradient-end));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:2rem;font-weight:700}.btn-primary{background:linear-gradient(135deg, var(--gradient-start), var(--gradient-end));color:#fff;cursor:pointer;border:none;border-radius:.75rem;align-items:center;gap:.5rem;padding:.75rem 1.5rem;font-family:inherit;font-size:.95rem;font-weight:600;transition:all .2s;display:inline-flex}.btn-primary:hover{opacity:.9;transform:translateY(-1px)}.btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-secondary{background:var(--panel-bg);color:var(--accent-color);border:1px solid var(--panel-border);cursor:pointer;border-radius:.75rem;align-items:center;gap:.5rem;padding:.75rem 1.5rem;font-family:inherit;font-size:.95rem;font-weight:600;transition:all .2s;display:inline-flex}.btn-secondary:hover{background:#f1f5f9;transform:translateY(-1px)}.btn-sm{border-radius:.5rem;padding:.5rem 1rem;font-size:.85rem}.full-width{justify-content:center;width:100%}.admin-link-btn{color:var(--text-secondary);border-radius:.5rem;padding:.5rem 1rem;font-size:.875rem;font-weight:500;transition:all .2s}.admin-link-btn:hover{color:var(--accent-color);background:#3b82f60d}.login-container{background:var(--bg-color);justify-content:center;align-items:center;min-height:100vh;padding:2rem;display:flex}.login-card{background:var(--panel-bg);border:1px solid var(--panel-border);text-align:center;border-radius:1.25rem;width:100%;max-width:420px;padding:2.5rem;box-shadow:0 10px 40px #0000000f}.line-logo{margin-bottom:1rem}.login-title{color:var(--text-primary);margin-bottom:.25rem;font-size:1.5rem;font-weight:700}.login-subtitle{color:var(--text-secondary);margin-bottom:1.5rem;font-size:.875rem}.login-form{text-align:left;flex-direction:column;gap:1rem;display:flex}.form-group{flex-direction:column;flex:1;gap:.375rem;display:flex}.form-group label{color:var(--text-secondary);font-size:.875rem;font-weight:600}.form-group input,.form-group textarea,.form-group select{border:1.5px solid var(--panel-border);background:#fff;border-radius:.625rem;outline:none;padding:.75rem 1rem;font-family:inherit;font-size:1rem;transition:border-color .2s}.form-group input:focus,.form-group textarea:focus{border-color:var(--accent-color);box-shadow:0 0 0 3px #3b82f61a}.form-row{gap:1rem;display:flex}.form-error{color:var(--danger-color);background:#ef444414;border-radius:.5rem;padding:.5rem .75rem;font-size:.875rem}.line-login-btn{background:var(--line-green);color:#fff;cursor:pointer;border:none;border-radius:.75rem;margin-top:.5rem;padding:.875rem;font-family:inherit;font-size:1rem;font-weight:700;transition:all .2s}.line-login-btn:hover{background:var(--line-green-hover)}.line-login-btn:disabled{opacity:.6;cursor:not-allowed}.admin-link{color:var(--text-secondary);margin-top:1.5rem;font-size:.85rem;text-decoration:underline;display:inline-block}.admin-link:hover{color:var(--accent-color)}.seminar-grid{grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:1.5rem;display:grid}.seminar-card{background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:1rem;flex-direction:column;padding:1.5rem;transition:all .25s;display:flex}.seminar-card:hover{transform:translateY(-4px);box-shadow:0 12px 30px #00000014}.seminar-card-header{justify-content:space-between;align-items:center;margin-bottom:.75rem;display:flex}.seminar-date-badge{color:var(--accent-hover);background:linear-gradient(135deg,#3b82f61a,#8b5cf61a);border-radius:.5rem;padding:.375rem .75rem;font-size:.85rem;font-weight:600}.seminar-seats{color:var(--text-secondary);font-size:.85rem;font-weight:500}.seminar-card-title{margin-bottom:.5rem;font-size:1.15rem;font-weight:700;line-height:1.4}.seminar-card-desc{color:var(--text-secondary);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-bottom:1rem;font-size:.9rem;line-height:1.5;display:-webkit-box;overflow:hidden}.seminar-card-meta{color:var(--text-secondary);flex-direction:column;gap:.375rem;margin-bottom:1rem;font-size:.875rem;display:flex}.register-btn{background:var(--line-green);color:#fff;cursor:pointer;border:none;border-radius:.75rem;justify-content:center;align-items:center;margin-top:auto;padding:.75rem;font-family:inherit;font-size:1rem;font-weight:700;transition:all .2s;display:inline-flex}.register-btn:hover{background:var(--line-green-hover);transform:translateY(-1px)}.seminar-detail-card{background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:1rem;margin-bottom:1.5rem;padding:1.5rem}.success-box{text-align:center;background:#10b9810d;border:2px solid #10b98133;border-radius:1rem;padding:2.5rem}.registration-section{background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:1rem;padding:1.5rem}.user-info-card{background:#f8fafc;border-radius:.75rem;align-items:center;gap:1rem;margin-bottom:1.5rem;padding:1rem;display:flex}.user-avatar{background:linear-gradient(135deg, var(--gradient-start), var(--gradient-end));color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:48px;height:48px;font-size:1.25rem;font-weight:700;display:flex}.qr-page{background:#0f172a;justify-content:center;align-items:center;min-height:100vh;display:flex}.qr-display-container{text-align:center;padding:2rem}.qr-seminar-title{color:#fff;margin-bottom:.5rem;font-size:1.75rem;font-weight:700}.qr-instruction{color:#ffffffb3;margin-bottom:2rem;font-size:1.25rem}.qr-code-wrapper{background:#fff;border-radius:1.5rem;margin-bottom:2rem;padding:1.5rem;display:inline-block;box-shadow:0 20px 60px #0000004d}.qr-loading,.qr-error{color:#fff9;padding:4rem;font-size:1.1rem}.qr-error{color:var(--danger-color)}.countdown-bar-container{background:#ffffff26;border-radius:3px;width:320px;height:6px;margin:0 auto .75rem;overflow:hidden}.countdown-bar{background:linear-gradient(90deg, var(--line-green), #34d399);border-radius:3px;height:100%;transition:width 1s linear}.countdown-text{color:#ffffff80;margin-bottom:2rem;font-size:.9rem}.attendance-counter{background:#ffffff14;border:1px solid #ffffff1f;border-radius:1rem;align-items:center;gap:1rem;padding:1rem 2rem;display:inline-flex}.counter-number{color:var(--line-green);font-size:2.5rem;font-weight:700}.counter-label{color:#ffffffb3;font-size:1rem}.checkin-page{justify-content:center;align-items:center;min-height:100vh;padding:2rem;display:flex}.checkin-status-container{text-align:center;max-width:400px}.spinner-large{border:5px solid #3b82f626;border-left-color:var(--accent-color);border-radius:50%;width:60px;height:60px;margin:0 auto 1.5rem;animation:1s linear infinite spin}.checkin-status-text{color:var(--text-secondary);font-size:1.1rem}.checkin-success-icon{background:var(--success-color);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:100px;height:100px;margin:0 auto 1.5rem;font-size:3rem;animation:.5s cubic-bezier(.34,1.56,.64,1) popIn;display:flex;box-shadow:0 10px 30px #10b9814d}.checkin-success-text{color:var(--success-color);font-size:1.75rem;font-weight:700}.checkin-error-icon{background:var(--danger-color);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:100px;height:100px;margin:0 auto 1.5rem;font-size:3rem;animation:.5s cubic-bezier(.34,1.56,.64,1) popIn;display:flex;box-shadow:0 10px 30px #ef44444d}.checkin-error-text{color:var(--danger-color);font-size:1.25rem;font-weight:600}.checkin-geo-warning{color:var(--warning-color);background:#f59e0b14;border-radius:.5rem;margin-top:.75rem;padding:.5rem 1rem;font-size:.9rem}.admin-seminar-grid{grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:1.5rem;display:grid}.admin-seminar-card{background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:1rem;flex-direction:column;padding:1.5rem;transition:all .25s;display:flex}.admin-seminar-card:hover{transform:translateY(-2px);box-shadow:0 8px 25px #0000000f}.status-badge{border-radius:9999px;padding:.25rem .75rem;font-size:.8rem;font-weight:600}.status-badge.active{color:var(--success-color);background:#10b9811a}.status-badge.inactive{color:var(--text-secondary);background:#64748b1a}.admin-stats{flex-wrap:wrap;gap:1rem;display:flex}.stat-box{border:1px solid var(--panel-border);text-align:center;background:#f8fafccc;border-radius:.75rem;flex:1;min-width:80px;padding:.75rem 1rem}.stat-box.large{padding:1.25rem 1.5rem}.stat-number{color:var(--accent-hover);font-size:1.5rem;font-weight:700}.stat-box.large .stat-number{font-size:2rem}.stat-label{color:var(--text-secondary);margin-top:.125rem;font-size:.8rem;font-weight:500}.admin-card-actions{gap:.5rem;margin-top:1rem;display:flex}.admin-form{flex-direction:column;gap:1rem;display:flex}.table-panel{background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:1rem;overflow:hidden;box-shadow:0 4px 15px #00000008}.panel-header{border-bottom:1px solid var(--panel-border);background:#f8fafccc;justify-content:space-between;align-items:center;padding:1rem 1.5rem;display:flex}.panel-title{align-items:center;gap:.5rem;font-size:1.1rem;font-weight:600;display:flex}.badge{background:var(--accent-color);color:#fff;border-radius:9999px;padding:.2rem .6rem;font-size:.8rem;font-weight:600}.table-wrapper{overflow-x:auto}table{border-collapse:collapse;width:100%}th,td{text-align:left;padding:.875rem 1.25rem}th{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--panel-border);background:#f8fafc80;font-size:.8rem;font-weight:600}tr{border-bottom:1px solid #00000008;transition:background .2s}tr:hover{background-color:#f1f5f980}td{font-size:.9rem}.status{align-items:center;gap:.5rem;font-size:.85rem;display:inline-flex}.dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.dot.success{background:var(--success-color);box-shadow:0 0 6px #10b98166}.dot.danger{background:var(--danger-color);box-shadow:0 0 6px #ef444466}.share-link-box{background:#f1f5f9;border-radius:.5rem;flex-direction:column;gap:.375rem;margin-top:1rem;padding:.75rem 1rem;display:flex}.share-link{color:var(--accent-color);word-break:break-all;border:1px solid var(--panel-border);background:#fff;border-radius:.375rem;padding:.5rem;font-size:.85rem}.empty-state{text-align:center;color:var(--text-secondary);padding:4rem 2rem}@keyframes spin{to{transform:rotate(360deg)}}@keyframes popIn{0%{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@media (max-width:768px){.container{padding:1rem}.title{font-size:1.5rem}.header{margin-bottom:1.5rem}.seminar-grid,.admin-seminar-grid{grid-template-columns:1fr}.form-row{flex-direction:column}th,td{padding:.625rem .75rem;font-size:.8rem}.qr-seminar-title{font-size:1.25rem}.admin-stats{flex-direction:row}.stat-box{min-width:60px}}
