:root{--bg:#0b0f16;--card:#0e141b;--ring:#1f2937;--text:#e5e7eb;--muted:#94a3b8;--primary:#8ab4f8;--chip:#111827;--shadow:0 8px 28px rgba(0,0,0,.35)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial;background:var(--bg);color:var(--text)}a{color:inherit;text-decoration:none}.auth-wrap{min-height:100%;display:grid;place-items:center;padding:24px}.auth-card{width:min(420px,92vw);background:var(--card);border:1px solid var(--ring);border-radius:16px;box-shadow:var(--shadow);padding:18px}.title{margin:0 0 8px;font-weight:800}.muted{color:var(--muted)}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--ring);background:var(--card);color:var(--text);padding:10px 12px;border-radius:12px;cursor:pointer;font-weight:700}.btn.primary{background:var(--primary);color:#0b0f16;border-color:transparent}.btn:disabled{opacity:.6;cursor:not-allowed}.btn.primary:disabled{background:#3b475a;color:#9aa4b2;border-color:transparent}.input{width:100%;padding:12px;border:1px solid var(--ring);border-radius:12px;background:var(--bg);color:var(--text)}.app{display:grid;grid-template-columns:240px 1fr;min-height:100%}@media (max-width:900px){.app{grid-template-columns:1fr}}.side{border-right:1px solid var(--ring);padding:14px;position:sticky;top:0;height:100vh}@media (max-width:900px){.side{position:static;height:auto}}.brand{display:flex;align-items:center;gap:10px;font-weight:800;margin-bottom:10px}.nav{display:flex;flex-direction:column;gap:6px}.nav a{padding:10px 12px;border-radius:10px;border:1px solid transparent}.nav a.active{background:var(--chip);border-color:var(--ring)}.content{padding:18px}.card{background:var(--card);border:1px solid var(--ring);border-radius:16px;box-shadow:var(--shadow);padding:16px}.grid{display:grid;gap:16px}.grid.cols-3{grid-template-columns:repeat(3,1fr)}@media (max-width:1000px){.grid.cols-3{grid-template-columns:repeat(2,1fr)}}@media (max-width:640px){.grid.cols-3{grid-template-columns:1fr}}.kpi{display:grid;gap:4px}.kpi .k{font-weight:800;font-size:20px}.chart{height:160px;border:1px dashed var(--ring);border-radius:12px;display:grid;align-items:end;gap:6px;padding:8px}.bar{height:40%;background:linear-gradient(180deg,var(--primary),#4f83d6);width:100%;border-radius:8px}.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;gap:10px;flex-wrap:wrap}.form>.toolbar~.toolbar{display:none}.table{width:100%;border-collapse:separate;border-spacing:0 8px}.tr{display:grid;grid-template-columns:1fr 140px 120px 90px 120px;gap:8px;align-items:center}@media (max-width:760px){.tr{grid-template-columns:1fr 100px 80px}}.th,.td{padding:10px 12px;border:1px solid var(--ring);background:var(--bg);border-radius:10px}.fab{position:fixed;right:18px;bottom:18px;border-radius:999px;padding:12px 16px}.form{display:grid;gap:16px;max-width:1120px}.form label{display:block;margin:0 0 6px;font-weight:600;color:var(--text)}.row{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media (max-width:900px){.row{grid-template-columns:1fr}}.chips{display:flex;gap:8px;flex-wrap:wrap}.chip{border:1px solid var(--ring);background:var(--chip);padding:6px 10px;border-radius:999px;font-weight:700}.status{padding:4px 8px;border-radius:999px;border:1px solid var(--ring);background:var(--chip);font-weight:700}.switch{display:inline-flex;align-items:center;gap:8px}.switch input{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:40px;height:24px;border-radius:999px;background:var(--ring);position:relative;outline:none;cursor:pointer;transition:background .15s}.switch input:checked{background:var(--primary)}.switch input:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;transition:transform .15s}.switch input:checked:after{transform:translate(16px)}.media-list{display:grid;gap:8px}.media-row{display:grid;grid-template-columns:160px 1fr minmax(220px,1fr) 90px;gap:12px;align-items:center}@media (max-width:900px){.media-row{grid-template-columns:1fr;align-items:stretch}}.media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}.media-card{border:1px solid var(--ring);background:var(--bg);border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:8px}.media-card .preview{width:100%;aspect-ratio:16/9;border-radius:10px;overflow:hidden;background:#000;border:1px solid var(--ring)}.media-card .preview img,.media-card .preview video{width:100%;height:100%;object-fit:cover;display:block}.help{color:var(--muted);font-size:12px}.center{max-width:1200px;margin:0 auto}.sticky{position:sticky;top:0;z-index:50;background:var(--bg);border:1px solid var(--ring);border-radius:16px;box-shadow:var(--shadow)}@media (max-width:900px){.btn{padding:8px 10px}.editor-toolbar .btn{padding:6px 8px}}.req:after{content:" *";color:#f59e0b;font-weight:800}.subcard{border:1px solid var(--ring);border-radius:16px;background:var(--bg);padding:16px}.icon-preview{width:72px;height:72px;border-radius:12px;border:1px solid var(--ring);object-fit:cover;background:var(--chip)}.media-preview{width:100%;height:120px;border:1px solid var(--ring);border-radius:8px;object-fit:cover;background:var(--chip)}.media-preview.video{object-fit:contain;background:#000}.thumb-preview{width:160px;height:90px;border:1px solid var(--ring);border-radius:12px;object-fit:cover;background:var(--chip)}.cards-grid{display:grid;gap:16px;grid-template-columns:repeat(3,1fr)}@media (max-width:1100px){.cards-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:640px){.cards-grid{grid-template-columns:1fr}}.admin-card{background:var(--card);border:1px solid var(--ring);border-radius:16px;box-shadow:var(--shadow);padding:14px;display:flex;flex-direction:column;gap:8px}.admin-card .head{display:flex;gap:10px;align-items:center;justify-content:space-between}.admin-card .meta{display:flex;gap:8px;flex-wrap:wrap;color:var(--muted);font-weight:600}.admin-card .actions{display:flex;gap:8px;margin-top:auto}.tag{border:1px solid var(--ring);background:var(--chip);padding:2px 8px;border-radius:999px;font-weight:700;font-size:12px}.editor-wrap{display:grid;gap:8px}.editor-toolbar{display:flex;flex-wrap:wrap;gap:6px}.editor-toolbar .btn{padding:8px 10px}.editor-area{min-height:240px;border:1px solid var(--ring);border-radius:12px;background:var(--bg);padding:12px;line-height:1.55}.editor-area:focus{outline:2px solid color-mix(in oklab,var(--primary) 50%,transparent)}.editor-preview{border:1px solid var(--ring);border-radius:12px;background:var(--bg);padding:12px}.editor-area:empty:before{content:attr(data-placeholder);color:var(--muted)}.editor-quill-wrap .ql-toolbar.ql-snow{background:var(--card);border:1px solid var(--ring);border-radius:12px;margin-bottom:8px}.editor-quill-wrap .ql-container.ql-snow{border:1px solid var(--ring);border-radius:12px}.editor-quill-wrap .ql-editor{min-height:140px;color:var(--text)}.editor-quill-wrap .ql-syntax{background:var(--chip);color:#e5e7eb;border-radius:10px;padding:12px;overflow:auto}pre,code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace}.editor-quill-wrap .editor-media-grid{display:grid;gap:10px;margin:8px 0}.editor-quill-wrap .editor-media-grid.cols-2{grid-template-columns:repeat(2,1fr)}.editor-quill-wrap .editor-media-grid.cols-3{grid-template-columns:repeat(3,1fr)}.editor-media-grid{display:grid;gap:10px;margin:8px 0}.editor-media-grid.cols-2{grid-template-columns:repeat(2,1fr)}.editor-media-grid.cols-3{grid-template-columns:repeat(3,1fr)}@media (max-width: 700px){.editor-quill-wrap .editor-media-grid.cols-3,.editor-media-grid.cols-3{grid-template-columns:repeat(2,1fr)}}@media (max-width: 520px){.editor-quill-wrap .editor-media-grid,.editor-media-grid{grid-template-columns:1fr}}.drag-handle{cursor:grab;-webkit-user-select:none;user-select:none;display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border:1px solid var(--ring);border-radius:8px;background:var(--chip);color:var(--muted);font-weight:800}.drag-handle:active{cursor:grabbing}.drop-indicator{height:6px;border:2px dashed var(--ring);border-radius:8px;margin:6px 0}.drop-indicator.active{border-color:var(--primary)}.sheet-wrap{border:1px solid var(--ring);border-radius:12px;overflow:auto;background:var(--card)}.sheet{width:100%;border-collapse:collapse;min-width:860px}.sheet thead th{position:sticky;top:0;background:var(--card);z-index:2;text-align:left}.sheet th,.sheet td{border:1px solid var(--ring);padding:8px 10px;font-variant-numeric:tabular-nums}.sheet td{vertical-align:top}.sheet tbody tr:hover td{background:var(--chip)}.sheet tbody tr:nth-child(odd) td{background:color-mix(in oklab,var(--bg) 94%,#fff 6%)}.sheet .right{text-align:right}.sheet .center{text-align:center}.sheet .muted{color:var(--muted)}.sheet tfoot td{background:var(--card)}.pager{display:flex;gap:8px;align-items:center;justify-content:flex-end;margin-top:10px;flex-wrap:wrap}.pager .btn{padding:6px 10px}.pager .info{color:var(--muted);font-weight:700}.btn.sm{padding:6px 8px;border-radius:8px;font-weight:700}.clamp-1{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}.clamp-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.status-badge{display:inline-block;padding:4px 8px;border-radius:999px;border:1px solid var(--ring);font-weight:700}.status-approved{background:#22c55e1f;color:#22c55e}.status-rejected{background:#f43f5e1f;color:#f43f5e}.status-pending{background:#facc151f;color:#f59e0b}.avatar{width:32px;height:32px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;font-weight:800;background:linear-gradient(135deg,color-mix(in oklab,var(--primary) 60%,#fff 0%),#3b475a);color:#0b0f16;border:1px solid var(--ring)}.who{display:flex;align-items:center;gap:10px}.who .meta{display:flex;flex-direction:column;line-height:1.2}.who .name{font-weight:700}.who .email{color:var(--muted);font-size:12px}.badge{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:999px;border:1px solid var(--ring);background:var(--chip);font-weight:700;font-size:12px}.badge.role-admin{color:#f59e0b}.badge.role-editor{color:#22c55e}.badge.role-author{color:#60a5fa}.pill{display:inline-block;padding:4px 8px;border-radius:999px;font-weight:800;font-size:12px;border:1px solid var(--ring)}.pill.ok{background:#22c55e26;color:#22c55e}.pill.warn{background:#f43f5e26;color:#f43f5e}.nowrap{white-space:nowrap}.truncate{max-width:380px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sheet tbody tr td .row-actions{opacity:0;transition:opacity .12s}.sheet tbody tr:hover td .row-actions{opacity:1}.filter-bar{display:grid;grid-template-columns:repeat(12,1fr);gap:8px;align-items:center}@media (max-width: 900px){.filter-bar{grid-template-columns:repeat(6,1fr)}}@media (max-width: 560px){.filter-bar{grid-template-columns:repeat(4,1fr)}}.control{grid-column:auto / span 3;display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--ring);border-radius:12px;background:var(--bg)}.control.wide{grid-column:auto / span 6}.control .icon{color:var(--muted);font-weight:800}.control input,.control select{appearance:none;-webkit-appearance:none;-moz-appearance:none;background:transparent;border:0;outline:0;color:var(--text);width:100%;font-weight:600;line-height:1.2}.control select,.control input{min-height:36px}.control select{padding-right:28px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 20 20' fill='none' stroke='%2394a3b8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 8 10 12 14 8'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;background-size:12px 12px}.control:focus-within{border-color:color-mix(in oklab,var(--primary) 60%,var(--ring));box-shadow:0 0 0 2px color-mix(in oklab,var(--primary) 30%,transparent) inset}.control .clear{margin-left:auto;color:var(--muted);cursor:pointer;border:1px solid var(--ring);padding:2px 6px;border-radius:8px}.toolbar-actions{display:flex;gap:8px;align-items:center;justify-content:flex-end}.select{position:relative;width:100%}.select-btn{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;background:transparent;border:0;color:var(--text);cursor:pointer;font-weight:600;padding:0}.select-caret{opacity:.8}.select-menu{position:absolute;top:100%;left:0;right:0;margin-top:8px;background:var(--card);border:1px solid var(--ring);border-radius:12px;box-shadow:var(--shadow);max-height:260px;overflow:auto;z-index:100}.select-option{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;cursor:pointer}.select-option:hover{background:var(--chip)}.select-option.selected{background:color-mix(in oklab,var(--primary) 18%,transparent)}.select-check{color:var(--primary);font-weight:800}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:grid;place-items:center;z-index:200}.modal{width:min(640px,96vw);background:var(--card);border:1px solid var(--ring);border-radius:16px;box-shadow:var(--shadow);padding:16px;display:flex;flex-direction:column;gap:12px}.modal .modal-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.modal .modal-body{display:grid;gap:10px}.modal .modal-actions{display:flex;justify-content:flex-end;gap:8px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(160px,1fr));gap:10px}@media (max-width:680px){.form-grid{grid-template-columns:1fr}}.hint{color:var(--muted);font-size:12px}.danger{color:#f43f5e}.icon-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--ring);background:var(--chip);color:var(--text);padding:6px 8px;border-radius:8px;cursor:pointer;font-weight:800}.icon-btn:hover{border-color:color-mix(in oklab,var(--primary) 60%,var(--ring))}
