:root{--sidebar-width:260px;--sidebar-collapsed-width:84px;--header-height:56px;--primary:#0d6efd;--dark:#212529}body{background-color:#f8f9fa;font-family:Segoe UI,system-ui,-apple-system,sans-serif}:root{--btn-primary:#fff;--btn-primary-text:#0f172a;--btn-secondary:#fff;--btn-secondary-text:#0f172a;--btn-danger:#e11d48;--btn-danger-text:#fff;--btn-success:#fff;--btn-success-text:#0f172a;--btn-border:#e2e8f0}.app-btn,.btn{align-items:center;border:1px solid transparent;border-radius:14px;cursor:pointer;display:inline-flex;font-size:14px;font-weight:600;gap:8px;height:40px;justify-content:center;line-height:1;overflow:hidden;padding:0 16px;position:relative;text-decoration:none;transform-origin:left center;transition:transform .18s ease,box-shadow .18s ease,background .18s ease,border-color .18s ease;-webkit-user-select:none;-moz-user-select:none;user-select:none}.app-btn:focus-visible,.btn:focus-visible{box-shadow:0 0 0 3px #1118272e;outline:none}.app-btn:disabled,.app-btn[aria-disabled=true],.btn:disabled,.btn[aria-disabled=true]{cursor:not-allowed;opacity:.6;pointer-events:none}.app-btn.is-loading,.btn.is-loading{pointer-events:none}.app-btn--sm,.btn-sm{border-radius:12px;font-size:12px;height:32px;padding:0 12px}.app-btn--md{height:40px;padding:0 16px}.app-btn--lg,.btn-lg{font-size:15px;height:46px;padding:0 18px}.app-btn--icon,.app-btn.is-icon{border-radius:12px;height:34px;padding:0;width:34px}.app-btn--primary,.btn-primary{background:var(--btn-primary);color:var(--btn-primary-text)}.app-btn--primary,.app-btn--secondary,.btn-primary,.btn-secondary{border-color:var(--btn-border);box-shadow:0 10px 20px #0f172a14}.app-btn--secondary,.btn-secondary{background:var(--btn-secondary);color:var(--btn-secondary-text)}.app-btn--danger,.btn-danger{background:var(--btn-danger);box-shadow:0 10px 20px #e11d4833;color:var(--btn-danger-text)}.app-btn--outline-danger,.app-btn--outline-primary,.app-btn--outline-secondary,.app-btn--outline-success,.btn-outline-danger,.btn-outline-primary,.btn-outline-secondary,.btn-outline-success{background:#fff;border-color:var(--btn-border);box-shadow:none}.app-btn--outline-primary,.app-btn--outline-secondary,.btn-outline-primary,.btn-outline-secondary{border-color:var(--btn-border);color:#0f172a}.app-btn--outline-danger,.btn-outline-danger{background:var(--btn-danger);border-color:var(--btn-danger);box-shadow:0 8px 16px #e11d4833;color:var(--btn-danger-text)}.app-btn--outline-success,.btn-outline-success{border-color:var(--btn-border);color:#0f172a}.btn-success{background:var(--btn-success);border-color:var(--btn-border);box-shadow:0 10px 20px #0f172a14;color:var(--btn-success-text)}.app-btn--ghost,.app-btn--ghost-light{background:#fff;border-color:var(--btn-border);box-shadow:none;color:#0f172a}.app-btn:not(:disabled):not([aria-disabled=true]):hover,.btn:not(:disabled):not([aria-disabled=true]):hover{box-shadow:0 12px 24px #0f172a1f;transform:scaleX(1.04)}.btn-spinner{animation:btnspin .75s linear infinite;border:2px solid;border-radius:999px;border-right:2px solid transparent;height:14px;width:14px}@keyframes btnspin{to{transform:rotate(1turn)}}.pagination .app-btn{min-width:34px}.pagination .app-btn.is-active{background:#fff;border-color:#0f172a;box-shadow:0 8px 16px #0f172a1f;color:#0f172a}.app-select-wrapper{position:relative;width:100%;z-index:5}.app-select-trigger{align-items:center;background:#fff;border:1px solid #1f2937;border-radius:12px;color:#0f172a;display:inline-flex;font-size:14px;font-weight:600;gap:10px;height:38px;justify-content:space-between;padding:0 38px 0 14px;transition:box-shadow .18s ease,border-color .18s ease,transform .18s ease;width:100%}.app-select-trigger:focus{border-color:#0f172a;box-shadow:0 0 0 4px #0f172a14;outline:none}.app-select-wrapper.is-disabled .app-select-trigger{cursor:not-allowed;opacity:.6}.app-select--sm .app-select-trigger{border-radius:10px;font-size:12px;height:34px}.app-select--lg .app-select-trigger{border-radius:14px;font-size:15px;height:46px}.select-icon{color:#0f172a;font-size:14px;pointer-events:none;position:absolute;right:12px;top:50%;transform:translateY(-50%);transition:transform .18s ease}.select-icon.open{transform:translateY(-50%) rotate(180deg)}.app-select-pop{background:#fff;border:1px solid #e2e8f0;border-radius:16px;box-shadow:0 18px 36px #0f172a1f;left:0;max-height:260px;overflow-y:auto;padding:8px;position:absolute;right:0;top:calc(100% + 8px);z-index:10}.app-select-option{align-items:center;background:transparent;border:none;border-radius:12px;color:#0f172a;cursor:pointer;display:flex;font-weight:600;padding:10px 12px;text-align:left;width:100%}.app-select-option:hover:not(.is-disabled){background:#f8fafc}.app-select-option.is-selected{background:#eef2ff}.app-select-option.is-disabled{color:#94a3b8;cursor:not-allowed}.select-pop-enter-active,.select-pop-leave-active{transition:opacity .16s ease,transform .16s ease}.select-pop-enter-from,.select-pop-leave-to{opacity:0;transform:translateY(-6px) scale(.98)}.admin-sidebar{background:var(--dark);bottom:0;color:#fff;display:flex;flex-direction:column;left:0;overflow:hidden;position:fixed;top:0;transition:transform .3s;width:var(--sidebar-width);z-index:1030}.admin-sidebar .brand{align-items:center;border-bottom:1px solid hsla(0,0%,100%,.1);display:flex;font-size:1.25rem;font-weight:700;gap:.65rem;padding:1rem 1.25rem;position:relative}.admin-sidebar .brand .brand-text{white-space:nowrap}.admin-sidebar .sidebar-toggle{border-radius:8px;display:grid;height:28px;margin-left:auto;padding:0;place-items:center;width:28px}.admin-sidebar .brand .brand-logo{border-radius:6px;height:42px;-o-object-fit:contain;object-fit:contain;width:220px}.admin-sidebar .nav-link{align-items:center;color:#ffffffb3;display:flex;font-size:.9rem;gap:.5rem;padding:.6rem 1.25rem;transition:background .15s,color .15s}.admin-sidebar .nav-link.router-link-active,.admin-sidebar .nav-link:hover{background:#ffffff14;color:#fff}.admin-sidebar .nav-link i{font-size:1.1rem;text-align:center;width:24px}.admin-sidebar .nav-section{color:#ffffff59;font-size:.7rem;letter-spacing:.1em;padding:.75rem 1.25rem .25rem;text-transform:uppercase}.admin-sidebar .sidebar-footer{border-top:1px solid hsla(0,0%,100%,.08);margin-top:auto;padding:1rem 1.25rem}.admin-sidebar .profile-toggle{align-items:center;border-radius:14px;display:flex;gap:.75rem;height:auto;padding:.65rem .75rem;text-align:left;width:100%}.admin-sidebar .profile-avatar{background:#ffffff26;border-radius:12px;color:#fff;display:grid;font-weight:700;height:40px;place-items:center;width:40px}.admin-sidebar .profile-meta{flex:1;min-width:0}.admin-sidebar .profile-name{font-size:.9rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-sidebar .profile-email{color:#ffffffa6;font-size:.75rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-sidebar .profile-menu{background:#0f172ae6;border-radius:12px;display:grid;gap:.25rem;margin-top:.5rem;padding:.25rem}.admin-sidebar .profile-item{align-items:center;border-radius:10px;display:flex;font-size:.8rem;gap:.45rem;height:32px;padding:0 10px;width:100%}.admin-sidebar.collapsed{width:var(--sidebar-collapsed-width)}.admin-sidebar.collapsed .brand-text,.admin-sidebar.collapsed .nav-label,.admin-sidebar.collapsed .nav-section,.admin-sidebar.collapsed .profile-meta,.admin-sidebar.collapsed .profile-toggle i{display:none}.admin-sidebar.collapsed .brand{gap:0;justify-content:center}.admin-sidebar.collapsed .sidebar-toggle{position:absolute;right:12px;top:18px}.admin-sidebar.collapsed .nav-link{justify-content:center;padding:.75rem}.admin-sidebar.collapsed .sidebar-footer{padding:1rem .75rem}.admin-sidebar.collapsed .profile-toggle{justify-content:center}.admin-sidebar.collapsed .profile-menu{bottom:18px;box-shadow:0 12px 24px #00000059;left:calc(var(--sidebar-collapsed-width) + 8px);position:fixed;width:180px;z-index:1040}.admin-main{margin-left:var(--sidebar-width);min-height:100vh}.admin-main.collapsed{margin-left:var(--sidebar-collapsed-width)}.admin-header{align-items:center;background:#fff;border-bottom:1px solid #dee2e6;display:flex;height:var(--header-height);justify-content:space-between;padding:0 1.5rem}.admin-header .header-brand{align-items:center;display:inline-flex;gap:.6rem}.admin-header .header-logo{border-radius:6px;height:34px;-o-object-fit:contain;object-fit:contain;width:34px}.admin-content{padding:1.5rem}.tiptap-editor{border:1px solid #dee2e6;border-radius:.375rem;overflow:hidden}.tiptap-toolbar{background:#f8f9fa;border-bottom:1px solid #dee2e6;display:flex;flex-wrap:wrap;gap:2px;padding:.5rem}.tiptap-toolbar .app-btn{background:none;border:none;border-radius:.5rem;box-shadow:none;font-size:.85rem;height:32px;padding:.25rem .5rem}.tiptap-toolbar .app-btn:hover{background:#dee2e6}.tiptap-toolbar .app-btn.is-active{background:var(--primary);color:#fff}.tiptap-content .ProseMirror{min-height:200px;outline:none;padding:1rem}.tiptap-content .ProseMirror p{margin-bottom:.5rem}.lang-tabs{border-bottom:2px solid #dee2e6;display:flex;gap:0;margin-bottom:1rem}.lang-tabs .app-btn{background:none;border:none;border-bottom:2px solid transparent;border-radius:0;box-shadow:none;color:#6c757d;font-weight:500;height:auto;margin-bottom:-2px;padding:.5rem 1.25rem}.lang-tabs .app-btn.is-active{border-bottom-color:var(--primary);color:var(--primary)}.image-upload-zone{border:2px dashed #dee2e6;border-radius:.5rem;cursor:pointer;padding:2rem;text-align:center;transition:border-color .2s}.image-upload-zone:hover{border-color:var(--primary)}.image-preview{border:1px solid #dee2e6;border-radius:.375rem;max-height:100px;max-width:150px;-o-object-fit:cover;object-fit:cover}.admin-table th{color:#6c757d;font-size:.85rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase}.login-wrapper{align-items:center;background:linear-gradient(135deg,#0d6efd,#6610f2);display:flex;justify-content:center;min-height:100vh}.login-card{background:#fff;border-radius:.75rem;box-shadow:0 10px 40px #00000026;max-width:400px;padding:2.5rem;width:100%}@media(max-width:991.98px){.admin-sidebar{transform:translate(-100%)}.admin-sidebar.open{transform:translate(0)}.admin-main{margin-left:0}}.admin-sidebar nav{flex:1;overflow-y:auto;overscroll-behavior:contain}
