:root,[data-theme=light]{--page: #f6f3ee;--surface: #fffefc;--soft: #eee8e0;--ink: #1f1b18;--muted: #655c53;--line: #e4ddd4;--accent: #a78357;--accent-ink: #fffefc;--gold: #c9a77a;--danger: #8a3d32}[data-theme=dark]{--page: #15120f;--surface: #211d19;--soft: #28231f;--ink: #f6f3ee;--muted: #c3b5a7;--line: #42382f;--accent: #c9a77a;--accent-ink: #1f1b18;--gold: #e0c9aa;--danger: #e7b2a8}*{box-sizing:border-box}html,body,#root{height:100%;overflow:hidden}body{margin:0;background:var(--page);color:var(--ink);font:14px/1.45 Montserrat,sans-serif}a{color:inherit}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.app{display:grid;grid-template-columns:240px 1fr;height:100%}.side{position:sticky;top:0;height:100%;overflow:auto;padding:16px 12px;background:var(--surface);border-right:1px solid var(--line);scrollbar-width:thin;scrollbar-color:var(--accent) var(--soft)}.side::-webkit-scrollbar{width:8px}.side::-webkit-scrollbar-track{background:var(--soft);border-radius:999px}.side::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--accent) 75%,var(--line));border-radius:999px;border:2px solid var(--soft)}.brand{display:flex;align-items:center;gap:8px;font-weight:600;letter-spacing:.08em}.brand-logo{height:36px;width:auto}.logo-dark,.icon-dark,[data-theme=dark] .logo-light,[data-theme=dark] .icon-light{display:none}[data-theme=dark] .logo-dark,[data-theme=dark] .icon-dark{display:block}.icon-btn{display:grid;place-items:center;width:40px;height:40px;border:0;border-radius:8px;background:transparent;color:var(--ink)}.icon-btn:hover{background:var(--soft)}.mobile-bar,.nav-backdrop,.side-foot{display:none}.nav{display:grid;gap:4px;margin-top:20px}.nav a,.nav button.linkish{display:block;width:100%;text-align:left;text-decoration:none;border:0;background:transparent;border-radius:8px;padding:8px 10px}.nav a.active,.nav a:hover{background:var(--soft)}.group{margin:14px 10px 4px;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.main{min-height:0;overflow:auto;padding:20px 24px 48px}.top{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px}h1{font-size:28px;font-weight:500;margin:0}h2{font-size:18px;font-weight:500;margin:0 0 8px}.muted{color:var(--muted)}.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.grid{display:grid;gap:12px}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}.card,.panel{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px}.card a{text-decoration:none;display:block}.card strong{display:block;font-size:28px;font-weight:500}table{width:100%;border-collapse:collapse;background:var(--surface)}th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:12px;color:var(--muted);font-weight:500}.thumb{width:48px;height:36px;object-fit:cover;border-radius:6px;background:var(--soft)}.colour-card{display:grid;grid-template-columns:72px 1fr;gap:12px;align-items:center;padding:10px 0;border-top:1px solid var(--line)}.colour-photo{width:72px;height:54px;object-fit:cover;border-radius:8px;background:var(--soft)}.swatch{width:28px;height:28px;border-radius:999px;border:1px solid var(--line)}.colour-code{display:flex;align-items:center;gap:8px}.colour-code input[type=color]{width:36px;height:32px;padding:0;border:0;background:transparent}input,select,textarea{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:8px 10px;width:100%}input[type=checkbox]{width:auto}label{display:grid;gap:4px;font-size:12px;color:var(--muted)}.fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.config{list-style:none;margin:0;padding:0;display:grid;gap:8px}.config li{display:flex;gap:8px;align-items:center}.config strong{display:block;font-weight:500;color:var(--ink)}.setting-field{display:grid;gap:4px}.setting-field>span{font-size:12px;color:var(--muted);text-transform:capitalize}.repeat-row{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:start}.btn,a.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border-radius:8px;border:1px solid var(--line);background:var(--surface);padding:8px 12px;text-decoration:none}.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:transparent}.btn.danger{color:var(--danger)}.btn:disabled{opacity:.65;cursor:progress}.btn[aria-busy=true]:before{content:"";width:12px;height:12px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .6s linear infinite}.toasts{position:fixed;right:16px;bottom:16px;z-index:80;display:grid;gap:8px;width:min(280px,calc(100vw - 32px));pointer-events:none}.toast{margin:0;background:var(--ink);color:var(--page);border-radius:10px;padding:12px 16px;box-shadow:0 8px 24px color-mix(in srgb,#000 24%,transparent);animation:toast-in .18s ease}@keyframes spin{to{transform:rotate(360deg)}}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.toast,.btn[aria-busy=true]:before{animation:none}}.login{min-height:100vh;display:grid;place-items:center;padding:24px}.login form{width:min(420px,100%);display:grid;gap:12px}.error{color:var(--danger);font-size:13px}.pager{display:flex;gap:8px;margin-top:12px}.badge{display:inline-block;border-radius:999px;background:var(--soft);padding:2px 8px;font-size:12px}@media(max-width:860px){.app{grid-template-columns:1fr;grid-template-rows:auto 1fr}.mobile-bar{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;height:56px;padding:0 8px;background:var(--surface);border-bottom:1px solid var(--line);z-index:40}.mobile-bar-left{display:flex;align-items:center}.mobile-brand{display:flex;justify-content:center}.mobile-bar .brand-logo{height:28px}.main>.top{display:none}.side .brand{display:none}.side{position:fixed;top:56px;bottom:0;left:0;z-index:30;display:flex;flex-direction:column;width:min(18rem,86vw);height:auto;max-height:none;border-right:1px solid var(--line);border-bottom:0;transform:translate(-100%);transition:transform .28s ease}.nav-open .side{transform:translate(0)}.nav{flex:1;overflow:auto}.side-foot{display:grid;gap:8px;margin-top:16px}.nav-backdrop{display:block;position:fixed;inset:56px 0 0;z-index:20;background:color-mix(in srgb,var(--ink) 40%,transparent);opacity:0;pointer-events:none;transition:opacity .28s ease}.nav-open .nav-backdrop{opacity:1;pointer-events:auto}.main{padding:16px 16px 48px}}
