:root{--bg:#f6f7f9;--card:#fff;--ink:#17202f;--muted:#64708299;--muted2:#647082;--accent:#2458e6;--accent-soft:#e9efff;--line:#e4e7ec;--ok:#0d8a4f;--ok-soft:#e4f5ec;--err:#c0362c;--err-soft:#fdeceb}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--ink);font-size:15px;line-height:1.55}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.topbar{display:flex;align-items:center;gap:16px;padding:10px 22px;background:var(--card);border-bottom:1px solid var(--line)}.topbar .brand{font-weight:750;letter-spacing:.01em}.topbar .brand span{color:var(--accent)}.topbar .spacer{flex:1 1}.topbar .who{font-size:13px;color:var(--muted2)}.badge{display:inline-block;font-size:11px;font-weight:700;padding:2px 9px;border-radius:999px;background:var(--accent-soft);color:var(--accent);text-transform:uppercase}.wrap{max-width:1100px;margin:0 auto;padding:28px 22px 80px}h1{font-size:24px;margin-bottom:4px}h2{font-size:17px;margin:22px 0 10px}.sub{color:var(--muted2);font-size:14px;margin-bottom:20px}.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:18px 20px;margin-bottom:14px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));grid-gap:14px;gap:14px}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin:18px 0 22px}.tabs a{padding:8px 16px;border-radius:8px 8px 0 0;color:var(--muted2);font-weight:600;font-size:14px}.tabs a.active{background:var(--card);border:1px solid var(--line);border-bottom-color:var(--card);color:var(--ink)}.btn{display:inline-block;background:var(--accent);color:#fff;border:0;border-radius:8px;padding:9px 18px;font-size:14px;font-weight:650;cursor:pointer}.btn:disabled{opacity:.5;cursor:default}.btn.secondary{background:var(--card);color:var(--ink);border:1px solid var(--line)}table.list{border-collapse:collapse;width:100%;font-size:14px}table.list th{text-align:left;padding:8px 12px;background:#f0f2f6;border-bottom:2px solid var(--line);white-space:nowrap}table.list td{padding:8px 12px;border-bottom:1px solid var(--line)}.pill{font-size:12px;background:#eef1f6;border-radius:999px;padding:2px 10px;margin-right:6px;white-space:nowrap}.ok{color:var(--ok)}.err{color:var(--err)}.callout{border-left:4px solid var(--err);background:var(--err-soft);border-radius:6px;padding:10px 14px;margin:10px 0;font-size:14px}.callout.good{border-color:var(--ok);background:var(--ok-soft)}.mono{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12.5px;white-space:pre-wrap}.preview{border:1px solid var(--line);border-radius:12px;background:var(--card);padding:26px 30px;max-width:640px}.preview h3{font-size:18px;margin-bottom:18px}.preview .section-title{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--muted2);margin:18px 0 10px}.preview .field{margin-bottom:14px}.preview label{display:block;font-size:13px;font-weight:600;margin-bottom:4px}.preview label .req{color:var(--err)}.preview input,.preview select,.preview textarea{width:100%;padding:8px 12px;border:1px solid var(--line);border-radius:8px;font-size:14px;background:#fff}.preview .hint{font-size:12px;color:var(--muted2);margin-top:3px}.preview .actions{display:flex;gap:10px;margin-top:22px}.login-box{max-width:360px;margin:12vh auto}.login-box input{width:100%;padding:10px 12px;margin-bottom:12px;border:1px solid var(--line);border-radius:8px;font-size:14px}.egrid{border:1px solid var(--line);border-radius:10px;background:var(--card);overflow-x:auto}.egrid table{border-collapse:collapse;width:100%;font-size:13.5px;min-width:720px}.egrid th{text-align:left;padding:8px 10px;background:#f0f2f6;border-bottom:2px solid var(--line);font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted2);white-space:nowrap}.egrid td{padding:0;border-bottom:1px solid var(--line);border-right:1px solid #f0f2f6;vertical-align:middle}.egrid td:last-child{border-right:0}.egrid input[type=text],.egrid select{width:100%;border:0;background:transparent;padding:8px 10px;font-size:13.5px;outline:none}.egrid input[type=text]:focus,.egrid select:focus{background:var(--accent-soft)}.egrid input[type=checkbox]{display:block;margin:0 auto}.egrid td.center{text-align:center;padding:8px}.egrid tr:hover td{background:#fafbfd}.egrid .rowbtn{border:0;background:none;color:var(--muted2);cursor:pointer;font-size:15px;padding:6px 10px}.egrid .rowbtn:hover{color:var(--err)}.addrow{display:flex;gap:8px;padding:10px;border-top:1px dashed var(--line);align-items:center}.addrow input,.addrow select{padding:7px 10px;border:1px solid var(--line);border-radius:7px;font-size:13.5px}.entity-nav{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.entity-nav button{border:1px solid var(--line);background:var(--card);border-radius:999px;padding:6px 16px;font-size:13.5px;cursor:pointer;font-weight:600;color:var(--muted2)}.entity-nav button.active{background:var(--accent);border-color:var(--accent);color:#fff}.drawer{background:#f8f9fc;border-top:1px solid var(--line);padding:10px 14px}.drawer h4{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted2);margin-bottom:8px}.savemark{font-size:12px;color:var(--ok);margin-left:8px;transition:opacity .8s}.toolbar{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}.editor-split{display:grid;grid-template-columns:minmax(420px,1fr) minmax(360px,520px);grid-gap:22px;gap:22px;align-items:start}@media (max-width:1000px){.editor-split{grid-template-columns:1fr}}.egrid.xl table{min-width:1080px;font-size:13px}.egrid.xl td{height:34px}.egrid.xl td,.egrid.xl th{border-right:1px solid var(--line)}.egrid.xl th{background:#eef1f6;font-size:11px}.egrid.xl input:not([type]),.egrid.xl input[type=text],.egrid.xl select{border-radius:0}.egrid.xl input:focus,.egrid.xl select:focus{background:#fff;box-shadow:inset 0 0 0 2px var(--accent)}.egrid.xl tbody tr:nth-child(2n) td{background:#fcfdfe}.egrid.xl tbody tr:hover td{background:#f5f8ff}