*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:#f1f5f9;color:#0f172a;-webkit-font-smoothing:antialiased}button{cursor:pointer;font-family:inherit}input,textarea{font-family:inherit;font-size:16px;padding:10px 12px;border:1px solid #cbd5e1;border-radius:8px;width:100%;margin-bottom:10px}label{display:block;font-size:.9rem;font-weight:600;margin-bottom:4px;color:#475569}.page.center{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.card{background:#fff;border-radius:12px;padding:20px;box-shadow:0 1px 3px #00000014;margin-bottom:16px}.login-card{max-width:400px;width:100%}.login-card h1{font-size:1.4rem;margin-bottom:16px;color:#1e40af}.password-field{position:relative;display:flex;align-items:center}.password-field input{width:100%;padding-right:42px}.password-toggle{position:absolute;right:6px;top:50%;transform:translateY(-50%);border:none;background:transparent;cursor:pointer;font-size:1.1rem;line-height:1;padding:6px 8px;border-radius:6px;color:#64748b}.password-toggle:hover{background:#f1f5f9;color:#0f172a}.muted{color:#64748b;font-size:.9rem}.hint{margin-top:20px;padding:12px;background:#f8fafc;border-radius:8px;font-size:.85rem}.hint ul{margin:8px 0 0 18px}.error{background:#fef2f2;color:#dc2626;padding:10px 14px;border-radius:8px;margin:10px 0;font-size:.9rem}.error.banner{display:flex;justify-content:space-between;align-items:center;margin:0;border-radius:0}.error.toast{position:fixed;bottom:20px;left:50%;transform:translate(-50%);z-index:100}button,.primary{background:#1e40af;color:#fff;border:none;border-radius:8px;padding:12px 18px;font-size:15px;font-weight:600}button:disabled{opacity:.5;cursor:not-allowed}.btn-sm{padding:6px 12px;font-size:13px;background:#e2e8f0;color:#0f172a;border:none;border-radius:6px}.btn-sm.primary{background:#1e40af;color:#fff}.btn-sm.danger{background:#dc2626;color:#fff}.topbar{background:#1e40af;color:#fff;padding:12px 16px;display:flex;align-items:center;gap:16px;flex-wrap:wrap}.brand{font-weight:700;cursor:pointer}.topbar nav{display:flex;gap:4px;flex:1}.topbar nav button{background:transparent;color:#ffffffd9;border:none;padding:6px 12px;border-radius:6px;font-weight:500}.topbar nav button.active,.topbar nav button:hover{background:#ffffff26;color:#fff}.user-menu{display:flex;align-items:center;gap:10px;font-size:.9rem}.user-menu .roles{opacity:.7;font-size:.8rem}.main{max-width:800px;margin:0 auto;padding:20px 16px 60px}.main h2{margin-bottom:16px}.form-row{display:flex;flex-direction:column;gap:0}.meeting-card .mc-top{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}.meeting-card .mc-actions{display:flex;gap:10px;margin-top:12px}.badge{display:inline-block;padding:2px 10px;border-radius:999px;font-size:.75rem;font-weight:600;background:#e2e8f0;color:#475569}.status-LIVE,.status-OPEN{background:#dcfce7;color:#166534}.status-LOCKED,.status-ENDED{background:#f1f5f9;color:#64748b}.status-SCHEDULED{background:#dbeafe;color:#1e40af}.table{width:100%;border-collapse:collapse;background:#fff;border-radius:12px;overflow:hidden}.table th,.table td{padding:10px 12px;text-align:left;border-bottom:1px solid #e2e8f0;font-size:.9rem}.table th{background:#f8fafc;font-weight:600}.room{display:flex;flex-direction:column;height:100vh;position:relative}.room-header-hit{position:absolute;top:0;left:0;right:0;height:10px;z-index:49;background:transparent;pointer-events:auto}.room-header{background:#1e40af;color:#fff;padding:8px 14px;display:flex;align-items:center;gap:10px;position:absolute;top:0;left:0;right:0;z-index:50;transition:transform .22s ease,opacity .22s ease;box-shadow:0 2px 12px #00000040}.room-header.hidden{transform:translateY(-100%);opacity:0;pointer-events:none;visibility:hidden}.room-header.visible{transform:translateY(0);opacity:1;pointer-events:auto;visibility:visible}.room-header.visible~.room-header-hit{pointer-events:none}.room-header h2{font-size:1rem;flex:1;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.room-body{flex:1;display:flex;overflow:hidden}.jitsi-wrap{flex:1;background:#0f172a}.side-panel{width:320px;background:#fff;overflow-y:auto;padding:16px;border-left:1px solid #e2e8f0}.side-panel h3{margin-bottom:12px}.poll-card{background:#f8fafc;border-radius:10px;padding:12px;margin-bottom:12px;border:1px solid #e2e8f0}.poll-title{font-weight:600;margin-bottom:4px}.poll-status{font-size:.8rem;color:#64748b;margin-bottom:8px}.vote-btns{display:flex;flex-direction:column;gap:6px}.vote{padding:10px;border:none;border-radius:8px;font-weight:600;font-size:14px;background:#fff;border:1px solid #e2e8f0}.vote.yes:hover{background:#dcfce7}.vote.no:hover{background:#fee2e2}.vote.other:hover{background:#fef9c3}.my-vote{font-size:.9rem;margin:6px 0}.result{font-size:.85rem;color:#475569;margin:6px 0}.other-form{margin-top:12px}.other-form textarea{margin-bottom:8px}@media (max-width: 768px){.room-body{flex-direction:column}.jitsi-wrap{height:50vh}.side-panel{width:100%;height:50vh;border-left:none;border-top:1px solid #e2e8f0}.topbar{flex-direction:column;align-items:flex-start}}.main{max-width:880px}.card{border:1px solid #e2e8f0;transition:box-shadow .15s ease}.card:hover{box-shadow:0 4px 14px #0f172a0f}.create-meeting-card h3{color:#1e40af}.btn-create{width:100%;margin-top:8px;padding:14px;font-size:16px}.success-card{border-color:#86efac;background:linear-gradient(180deg,#f0fdf4,#fff 40%)}.success-banner{background:#dcfce7;color:#166534;padding:10px 14px;border-radius:8px;margin-bottom:12px;font-size:.95rem}.share-panel-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}.share-panel-head h3{margin:0;font-size:1.05rem;color:#0f172a}.share-row{display:flex;gap:8px;margin-bottom:10px;align-items:stretch}.share-row input{flex:1;margin-bottom:0;font-size:13px;background:#f8fafc}.share-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}.btn-share{border:none;border-radius:8px;padding:10px 14px;font-weight:600;font-size:13px;color:#fff}.btn-share.email{background:#475569}.btn-share.zalo{background:#0068ff}.btn-share.fb{background:#1877f2}.btn-share:hover{filter:brightness(1.08)}.jitsi-mode-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px}@media (max-width: 560px){.jitsi-mode-row{grid-template-columns:1fr}}.jitsi-option{display:flex;gap:10px;align-items:flex-start;border:2px solid #e2e8f0;border-radius:10px;padding:12px;cursor:pointer;background:#fff;font-weight:500}.jitsi-option input{width:auto;margin:2px 0 0;flex-shrink:0}.jitsi-option span{display:flex;flex-direction:column;gap:2px}.jitsi-option small{font-weight:400;color:#64748b;font-size:12px}.jitsi-option.active{border-color:#1e40af;background:#eff6ff}.self-host-box{background:#f8fafc;border:1px dashed #cbd5e1;border-radius:8px;padding:12px;margin-bottom:10px}.chip-group{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}.chip{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;border:1px solid #e2e8f0;font-size:13px;background:#fff;cursor:pointer}.chip input{width:auto;margin:0}.chip.selected{background:#dbeafe;border-color:#93c5fd;color:#1e40af}.member-pick{max-height:160px;overflow:auto;border:1px solid #e2e8f0;border-radius:10px;padding:8px;margin-bottom:8px;background:#fff}.member-row{display:flex;align-items:center;gap:8px;font-size:13px;padding:6px 8px;border-radius:6px;margin-bottom:2px;cursor:pointer}.member-row input{width:auto;margin:0}.member-row.selected{background:#eff6ff}.member-row:hover{background:#f1f5f9}.mc-desc{margin:4px 0 6px;color:#334155;font-size:.92rem}.meeting-card h3{font-size:1.05rem;color:#0f172a}.topbar{background:linear-gradient(90deg,#1e3a8a,#1e40af 60%,#2563eb);box-shadow:0 2px 8px #1e40af40}.brand{letter-spacing:.02em}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85em;background:#f1f5f9;padding:1px 6px;border-radius:4px}.share-card{margin-bottom:16px}.panel-block{border:1px solid #e2e8f0;border-radius:10px;background:#fff;margin-bottom:10px;overflow:hidden}.panel-block.open{box-shadow:0 1px 3px #0f172a0f}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;cursor:pointer;-webkit-user-select:none;user-select:none;background:#f8fafc;border:none;width:100%;text-align:left;font-family:inherit}.panel-head:hover{background:#f1f5f9}.panel-head-title{font-weight:700;font-size:14px;color:#0f172a;display:flex;align-items:center;gap:6px;flex:1}.panel-head-actions{display:flex;gap:4px;flex-shrink:0}.panel-body{padding:10px 12px 12px;border-top:1px solid #e2e8f0}.panel-block.live{border-color:#86efac;background:#f0fdf4}.panel-block.live .panel-head{background:#ecfdf5}.panel-block.minutes{border-color:#93c5fd}.panel-block.minutes .panel-head{background:#eff6ff}.minutes-fs-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2000;background:#0f172a73;display:flex;flex-direction:column;padding:12px}.minutes-fs-panel{flex:1;background:#fff;border-radius:12px;display:flex;flex-direction:column;max-width:960px;width:100%;margin:0 auto;box-shadow:0 20px 50px #00000040;overflow:hidden}.minutes-fs-bar{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#1e40af;color:#fff;flex-wrap:wrap}.minutes-fs-bar h3{margin:0;font-size:1.05rem;flex:1}.minutes-fs-body{flex:1;overflow:auto;padding:16px}.minutes-fs-body textarea{width:100%;font-size:15px;line-height:1.5;margin-bottom:10px;min-height:80px}.minutes-fs-hint{font-size:12px;opacity:.9}.jitsi-wrap .watermark,.jitsi-wrap .leftwatermark,.jitsi-wrap .rightwatermark,.jitsi-wrap .jitsi-watermark,.jitsi-wrap .brand-watermark,.jitsi-wrap .welcome .watermark,.jitsi-wrap .welcome-page-button,.jitsi-wrap [class*=watermark],.jitsi-wrap [class*=Watermark],.jitsi-wrap img[src*=watermark],.jitsi-wrap img[src*=jitsi],.jitsi-wrap a[href*="jitsi.org"],#jitsi-container .watermark,#jitsi-container .leftwatermark,#jitsi-container .rightwatermark,#jitsi-container .jitsi-watermark,#jitsi-container .brand-watermark,#jitsi-container [class*=watermark],#jitsi-container [class*=Watermark]{display:none!important;visibility:hidden!important;opacity:0!important;width:0!important;height:0!important;max-width:0!important;max-height:0!important;overflow:hidden!important;pointer-events:none!important;position:absolute!important;left:-9999px!important;z-index:-1!important}.login-page{min-height:100dvh;min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;padding-left:max(20px,env(safe-area-inset-left));padding-right:max(20px,env(safe-area-inset-right));padding-bottom:max(20px,env(safe-area-inset-bottom));background:linear-gradient(160deg,#eff6ff,#f1f5f9,#e2e8f0)}.login-card{max-width:400px;width:100%;text-align:center;box-shadow:0 10px 40px #1e40af1f}.login-brand{margin-bottom:8px}.login-brand-icon{font-size:2.5rem;line-height:1}.login-card h1{font-size:1.35rem;margin-bottom:4px;color:#1e40af}.login-sub{font-size:.9rem;color:#64748b;margin-bottom:18px}.login-card form{text-align:left}.login-card .btn-login{width:100%;margin-top:8px;padding:14px;font-size:1rem}.login-hint{margin-top:16px;font-size:.8rem;text-align:center}.login-hint code{background:#f1f5f9;padding:1px 6px;border-radius:4px;font-size:.85em}.main--wide{max-width:1280px;margin:0 auto;padding:20px 16px 80px}@media (min-width: 1400px){.main--wide{max-width:1400px}}.audit-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:12px;background:#fff;box-shadow:0 1px 3px #0000000f}.audit-table-wrap .table{min-width:720px;margin:0}.audit-table-wrap .table thead th{position:sticky;top:0;z-index:2;background:#f8fafc;box-shadow:0 1px #e2e8f0}.audit-table-wrap .btn-undo{white-space:nowrap;background:#fef3c7;color:#92400e;border:1px solid #fcd34d}.audit-table-wrap .btn-undo:hover{background:#fde68a}.scroll-nav{position:fixed;right:max(12px,env(safe-area-inset-right));bottom:max(20px,env(safe-area-inset-bottom));z-index:90;display:flex;flex-direction:column;gap:6px}.scroll-nav-btn{width:42px;height:42px;min-width:42px;min-height:42px;border-radius:50%;border:none;background:#1e40af;color:#fff;font-size:1.2rem;font-weight:700;box-shadow:0 4px 14px #1e40af59;display:flex;align-items:center;justify-content:center;padding:0;transition:opacity .2s,transform .15s}.scroll-nav-btn:hover:not(:disabled){transform:scale(1.08);background:#1d4ed8}.scroll-nav-btn:disabled{opacity:.35;cursor:default;box-shadow:none}.topbar{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:12px;padding:10px 16px;padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right));background:#1e40af;color:#fff;flex-wrap:wrap}.topbar nav{display:flex;gap:4px;flex:1;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.topbar nav::-webkit-scrollbar{display:none}.topbar nav button{white-space:nowrap;min-height:36px;min-width:36px;padding:8px 12px;border:none;background:transparent;color:#ffffffd9;border-radius:8px;font-size:.9rem}button,.btn-sm,.password-toggle,a.btn{min-height:36px}.btn-sm{min-height:36px;padding:8px 14px}@media (max-width: 640px){.main,.main--wide{padding-left:12px;padding-right:12px}.meeting-card .mc-top{flex-direction:column}.meeting-card .mc-actions{flex-wrap:wrap}.form-row-inline{flex-direction:column!important}.share-actions{flex-direction:column}.share-actions button{width:100%}.topbar .brand{font-size:.95rem}.user-menu{width:100%;justify-content:space-between}}body{padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}:root{--bg: #f1f5f9;--card: #ffffff;--text: #0f172a;--muted: #64748b;--border: #e2e8f0;--primary: #2563eb;--danger: #dc2626}html[data-theme=dark]{--bg: #0f172a;--card: #1e293b;--text: #e2e8f0;--muted: #94a3b8;--border: #334155;--primary: #3b82f6;--danger: #f87171}html[data-theme=dark] body,html[data-theme=dark] .app{background:var(--bg);color:var(--text)}html[data-theme=dark] .card,html[data-theme=dark] .room,html[data-theme=dark] header,html[data-theme=dark] .topbar{background:var(--card);color:var(--text);border-color:var(--border)}html[data-theme=dark] input,html[data-theme=dark] textarea,html[data-theme=dark] select{background:#0f172a;color:var(--text);border-color:var(--border)}html[data-theme=dark] .muted{color:var(--muted)}.theme-toggle{background:transparent;border:1px solid var(--border, #e2e8f0);border-radius:8px;padding:4px 10px;cursor:pointer;font-size:14px}
