:root{--violet: #2E2673;--indigo: #4A3FB5;--coral: #F0663A;--bg: #f5f4fb;--line: #e3e1f0;--muted: #6b6a86}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--violet);background:var(--bg)}button{cursor:pointer;border:none;border-radius:8px;padding:9px 16px;background:var(--coral);color:#fff;font-weight:600}button.ghost{background:#fff;color:var(--indigo);border:1px solid var(--line)}button:disabled{opacity:.55;cursor:default}input,textarea{width:100%;padding:9px 11px;border:1px solid var(--line);border-radius:8px;font:inherit;color:var(--violet);background:#fff}textarea{resize:vertical}label{display:block;font-size:12px;color:var(--muted);margin:10px 0 4px}.card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px}.muted{color:var(--muted);font-weight:400}.err{color:#b3261e;font-size:14px;margin:8px 0}.err.bar{background:#fde8e6;padding:8px 16px}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:20px}.login{width:320px}.login h1{margin:0 0 2px;font-size:22px}.login input{margin-top:10px}.login button{width:100%;margin-top:14px}.app{min-height:100vh}.topbar{display:flex;align-items:center;gap:16px;padding:12px 18px;background:var(--violet);color:#fff}.topbar .stats{margin-left:auto;display:flex;gap:6px}.topbar button{margin-left:12px}.cols{display:grid;grid-template-columns:380px 1fr;gap:16px;padding:16px;align-items:start}.tree{padding:8px;max-height:calc(100vh - 96px);overflow:auto}.row{padding:6px 8px;border-radius:6px;cursor:pointer;font-size:14px;white-space:nowrap}.row:hover{background:var(--bg)}.row.subject{font-weight:700}.row.chapter{padding-left:20px;font-weight:600}.row.topic{padding-left:38px}.row.topic.sel{background:#ece9fb}.pad{padding:12px}.badge{display:inline-block;font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px;color:#fff}.badge.draft{background:#9a98b5}.badge.in_review{background:var(--indigo)}.badge.published{background:#2e9e5b}.dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px;vertical-align:middle}.dot.draft{background:#9a98b5}.dot.in_review{background:var(--indigo)}.dot.published{background:#2e9e5b}.detail .empty{color:var(--muted);text-align:center;padding:48px}.review-head{display:flex;align-items:center;gap:10px;margin-bottom:4px}.bilingual{display:grid;grid-template-columns:1fr 1fr;gap:12px}.actions{display:flex;gap:8px;margin-top:14px;flex-wrap:wrap}
