:root{--bg:#0b1a21;--panel:#11242d;--panel-2:#16303b;--line:#22434f;--ink:#e8f1f4;--ink-dim:#9db3bc;--accent:#d98a63;--accent-ink:#1a0f09;--danger:#e06c5a;--ok:#5fb98a;--radius:10px;--gap:16px}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);margin:0;font:15px/1.5 IBM Plex Sans,system-ui,-apple-system,Segoe UI,sans-serif}a{color:var(--accent)}h1{margin:0 0 4px;font-size:24px}h2{margin:0 0 12px;font-size:18px}.shell{grid-template-columns:240px 1fr;min-height:100vh;display:grid}.side{background:var(--panel);border-right:1px solid var(--line);flex-direction:column;align-self:start;gap:20px;height:100vh;padding:20px 16px;display:flex;position:sticky;top:0;overflow-y:auto}.brand{letter-spacing:.08em;text-transform:uppercase;font-size:14px;font-weight:700}.brand span{color:var(--accent)}.side nav{flex-direction:column;gap:2px;display:flex}.side nav a{color:var(--ink);border-radius:8px;padding:7px 10px;font-size:14px;text-decoration:none}.side nav a:hover{background:var(--panel-2)}.side nav a[aria-current=page]{background:var(--panel-2);color:var(--accent)}.side footer{color:var(--ink-dim);margin-top:auto;font-size:13px}.side footer p{margin:0 0 6px}.main{max-width:900px;padding:28px 32px 60px}.lead{color:var(--ink-dim);margin:0 0 24px}.cards{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;display:grid}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);color:inherit;padding:14px 16px;text-decoration:none;display:block}.card:hover{border-color:var(--accent)}.card b{margin-bottom:4px;display:block}.card small{color:var(--ink-dim)}label{margin-bottom:14px;font-size:14px;display:block}label span{color:var(--ink-dim);margin-bottom:5px;display:block}input[type=text],input[type=email],input[type=password],input[type=number],input[type=url]{background:var(--bg);border:1px solid var(--line);width:100%;color:var(--ink);font:inherit;border-radius:8px;padding:9px 11px}input:focus{outline:2px solid var(--accent);outline-offset:1px}button{background:var(--accent);color:var(--accent-ink);font:inherit;cursor:pointer;border:0;border-radius:8px;padding:9px 18px;font-weight:600}button:hover{filter:brightness(1.08)}.error{background:color-mix(in srgb, var(--danger) 16%, transparent);border:1px solid var(--danger);border-radius:8px;margin-bottom:16px;padding:10px 12px;font-size:14px}.login{place-items:center;min-height:100vh;padding:24px;display:grid}.login form{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);width:100%;max-width:340px;padding:26px}.login .brand{margin-bottom:18px}.login button{width:100%}.toolbar{margin:0 0 18px}.button,a.button{background:var(--accent);color:var(--accent-ink);border-radius:8px;padding:9px 18px;font-weight:600;text-decoration:none;display:inline-block}.empty{color:var(--ink-dim)}table{border-collapse:collapse;width:100%;font-size:14px}th,td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:9px 12px}th{color:var(--ink-dim);font-size:13px;font-weight:500}tbody tr:hover{background:var(--panel)}td a{text-decoration:none}td a:hover{text-decoration:underline}textarea,select{background:var(--bg);border:1px solid var(--line);width:100%;color:var(--ink);font:inherit;resize:vertical;border-radius:8px;padding:9px 11px}textarea:focus,select:focus{outline:2px solid var(--accent);outline-offset:1px}input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent);margin:2px 8px 0 0}.req{color:var(--accent);margin-left:3px;font-style:normal}.hint{color:var(--ink-dim);margin:5px 0 0;font-size:13px}.field-error{color:var(--danger);margin:5px 0 0;font-size:13px}label.bad input,label.bad textarea,label.bad select{border-color:var(--danger)}.ok{background:color-mix(in srgb, var(--ok) 16%, transparent);border:1px solid var(--ok);border-radius:8px;margin-bottom:18px;padding:10px 12px;font-size:14px}.group{border:1px solid var(--line);border-radius:var(--radius);margin:0 0 16px;padding:14px 16px 4px}.group legend{color:var(--ink-dim);padding:0 6px;font-size:13px}.group .group{background:var(--panel)}.rows{flex-direction:column;gap:8px;margin-bottom:10px;display:flex}.of-string .row{align-items:flex-start;gap:8px;display:flex}.of-string .row-body{flex:1;min-width:0}.of-object .row{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);padding:10px 14px 0}.of-object .row+.row{margin-top:4px}.row-head{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.row-num{color:var(--ink-dim);background:var(--panel-2);border-radius:999px;padding:5px 10px;font:12px/1 IBM Plex Mono,ui-monospace,monospace}.row-body>label:last-child{margin-bottom:12px}.small{padding:5px 11px;font-size:13px}.remove-inline{padding:8px 12px;line-height:1}.ghost{border:1px solid var(--line);color:var(--ink);cursor:pointer;font:inherit;background:0 0;border-radius:8px;padding:8px 14px;text-decoration:none;display:inline-block}.ghost:hover{border-color:var(--accent);filter:none}.ghost.danger{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 50%, var(--line))}.ghost.danger:hover{border-color:var(--danger)}.add{margin-bottom:12px}.image-field{align-items:flex-start;gap:10px;display:flex}.image-field .thumb{object-fit:cover;border:1px solid var(--line);background:var(--bg);border-radius:8px;flex:none;width:56px;height:56px}.image-controls{flex:1;align-items:center;gap:8px;min-width:0;display:flex}.image-controls input[type=text]{flex:1;min-width:0}.image-controls .file{cursor:pointer;flex:none;margin:0}.actions{border-top:1px solid var(--line);align-items:center;gap:10px;margin-top:24px;padding-top:18px;display:flex}.actions .danger{margin-left:auto}.publish{border:1px solid var(--line);color:var(--ink);border-radius:8px;justify-content:space-between;align-items:center;gap:8px;padding:9px 12px;font-size:14px;text-decoration:none;display:flex}.publish:hover{border-color:var(--accent)}.publish[aria-current=page]{border-color:var(--accent);color:var(--accent)}.badge{background:var(--accent);color:var(--accent-ink);border-radius:999px;padding:1px 8px;font-size:12px}.log{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);white-space:pre-wrap;word-break:break-word;max-height:420px;color:var(--ink-dim);margin-top:20px;padding:14px 16px;font:12px/1.5 IBM Plex Mono,ui-monospace,monospace;overflow:auto}button:disabled{opacity:.55;cursor:default}
