:root{--ink:#0a1628;--ink-700:#1a2d4d;--paper:#fbfcfd;--paper-100:#f4f6f9;--paper-200:#e8ecf1;--paper-300:#d6dce5;--paper-500:#6f7a8c;--accent:#0a8fd8;--accent-glow:#3dc5ff;--danger:#c2185b;--font-sans:"Manrope", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "SF Mono", monospace}*{box-sizing:border-box}html,body,#root{background:var(--paper-100);min-height:100dvh;color:var(--ink);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;margin:0;padding:0;font-size:14px}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:inherit}.eyebrow{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--paper-500);font-size:11px}.login-shell{background:var(--ink);place-items:center;min-height:100dvh;padding:24px;display:grid}.login-card{background:var(--paper);border:1px solid var(--paper-200);width:100%;max-width:400px;padding:40px}.login-card h1{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--paper-500);margin:0 0 32px;font-size:14px}.login-card label{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--paper-500);margin-bottom:8px;font-size:10px;display:block}.login-card input{border:0;border-bottom:1px solid var(--paper-300);width:100%;font-family:var(--font-sans);color:var(--ink);background:0 0;outline:none;margin-bottom:24px;padding:8px 0;font-size:16px}.login-card input:focus{border-bottom-color:var(--ink)}.login-card .err{color:var(--danger);font-family:var(--font-mono);letter-spacing:.05em;margin:-16px 0 16px;font-size:11px}.btn{border:1px solid var(--ink);font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--ink);cursor:pointer;background:0 0;align-items:center;gap:12px;padding:12px 20px;font-size:11px;transition:background .2s,color .2s;display:inline-flex}.btn:hover{background:var(--ink);color:var(--paper)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--ink);color:var(--paper)}.btn-primary:hover{background:var(--accent);border-color:var(--accent)}.btn-block{justify-content:center;width:100%;display:flex}.btn-ghost{color:var(--paper-500);background:0 0;border:0;padding:8px 12px}.btn-ghost:hover{color:var(--ink);background:0 0}.admin-shell{grid-template-rows:auto 1fr;min-height:100dvh;display:grid}.admin-topbar{background:var(--paper);border-bottom:1px solid var(--paper-200);justify-content:space-between;align-items:center;padding:16px 32px;display:flex}.admin-topbar .brand{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;font-size:12px}.admin-topbar .user{color:var(--paper-500);align-items:center;gap:16px;font-size:13px;display:flex}.admin-topbar .user .email{color:var(--ink);font-weight:500}.admin-body{grid-template-columns:220px 1fr;min-height:calc(100dvh - 65px);display:grid}.admin-sidebar{background:var(--paper);border-right:1px solid var(--paper-200);flex-direction:column;gap:4px;padding:24px 0;display:flex}.admin-sidebar a{color:var(--paper-500);border-left:2px solid #0000;padding:10px 24px;font-size:13px;transition:color .15s,background .15s,border-color .15s;display:block}.admin-sidebar a:hover{color:var(--ink);background:var(--paper-100)}.admin-sidebar a.active{color:var(--ink);border-left-color:var(--accent);font-weight:500}.admin-sidebar .group-label{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--paper-300);padding:16px 24px 8px;font-size:10px}.admin-content{width:100%;max-width:1280px;margin:0 auto;padding:32px}.admin-content h1{letter-spacing:-.02em;margin:0 0 8px;font-size:28px;font-weight:500}.admin-content>p{color:var(--paper-500);margin:0 0 24px}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px;display:flex}.table-card{background:var(--paper);border:1px solid var(--paper-200);overflow:auto}table.t{border-collapse:collapse;width:100%;font-size:13px}table.t th{text-align:left;background:var(--paper-100);font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--paper-500);border-bottom:1px solid var(--paper-200);padding:12px 16px;font-size:10px;font-weight:500}table.t td{border-bottom:1px solid var(--paper-200);vertical-align:middle;padding:12px 16px}table.t tr:last-child td{border-bottom:0}table.t tr:hover td{background:var(--paper-100)}table.t .num{text-align:right;font-variant-numeric:tabular-nums}table.t .actions{justify-content:flex-end;gap:8px;display:flex}table.t .actions a,table.t .actions button{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;border:1px solid var(--paper-300);color:var(--ink-700);cursor:pointer;background:0 0;padding:4px 10px;font-size:10px}table.t .actions a:hover,table.t .actions button:hover{border-color:var(--ink);color:var(--ink)}table.t .actions .danger{color:var(--danger);border-color:#c2185b4d}table.t .actions .danger:hover{background:var(--danger);color:var(--paper);border-color:var(--danger)}table.t .badge{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;background:var(--paper-100);color:var(--paper-500);border:1px solid var(--paper-200);padding:2px 8px;font-size:10px;display:inline-block}table.t .badge.published{color:var(--accent);border-color:var(--accent);background:0 0}table.t .empty{text-align:center;color:var(--paper-500);padding:48px}.form-card{background:var(--paper);border:1px solid var(--paper-200);max-width:800px;padding:32px}.form-row{margin-bottom:24px}.form-row.two-col{grid-template-columns:1fr 1fr;gap:24px;margin-bottom:24px;display:grid}.form-row label{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--paper-500);margin-bottom:8px;font-size:10px;display:block}.form-row label .required{color:var(--accent)}.form-row input[type=text],.form-row input[type=number],.form-row textarea,.form-row select{border:1px solid var(--paper-300);background:var(--paper);width:100%;font-family:var(--font-sans);color:var(--ink);border-radius:0;outline:none;padding:10px 12px;font-size:14px}.form-row input:focus,.form-row textarea:focus,.form-row select:focus{border-color:var(--ink)}.form-row textarea{resize:vertical;min-height:120px}.form-row .help{color:var(--paper-500);margin-top:6px;font-size:12px;line-height:1.5}.form-row .err{color:var(--danger);font-family:var(--font-mono);letter-spacing:.05em;margin-top:6px;font-size:11px}.form-toggle{align-items:center;gap:12px;padding:8px 0;display:flex}.form-toggle input[type=checkbox]{width:18px;height:18px;accent-color:var(--ink)}.form-actions{border-top:1px solid var(--paper-200);justify-content:flex-end;gap:12px;margin-top:32px;padding-top:24px;display:flex}.form-banner-error{border-left:3px solid var(--danger);color:var(--danger);background:#c2185b14;margin-bottom:24px;padding:12px 16px;font-size:13px}.specs-list{flex-direction:column;gap:8px;display:flex}.specs-row{grid-template-columns:220px 1fr 32px;align-items:center;gap:8px;display:grid}.specs-row input{width:100%}.specs-row .remove{border:1px solid var(--paper-300);color:var(--paper-500);cursor:pointer;background:0 0;width:32px;height:32px}.specs-row .remove:hover{color:var(--danger);border-color:var(--danger)}.specs-add{border:1px dashed var(--paper-300);color:var(--paper-500);font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;cursor:pointer;background:0 0;margin-top:12px;padding:8px 16px;font-size:11px}.specs-add:hover{border-color:var(--ink);color:var(--ink)}.image-dropzone{border:1px dashed var(--paper-300);background:var(--paper-100);text-align:center;cursor:pointer;padding:32px;transition:border-color .15s,background .15s}.image-dropzone:hover{border-color:var(--ink);background:var(--paper)}.image-dropzone-label{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--paper-500);font-size:11px}.image-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-top:16px;display:grid}.image-tile{background:var(--paper);border:1px solid var(--paper-200);flex-direction:column;display:flex}.image-tile-pic{aspect-ratio:4/3;background:var(--paper-100);justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.image-tile-pic img{object-fit:contain;max-width:100%;max-height:100%}.image-tile-cover{background:var(--ink);color:var(--paper);font-family:var(--font-mono);letter-spacing:.18em;padding:3px 8px;font-size:9px;position:absolute;top:8px;left:8px}.image-tile-meta{border-top:1px solid var(--paper-200);justify-content:space-between;align-items:center;padding:8px 12px;display:flex}.image-tile-dim{font-family:var(--font-mono);letter-spacing:.12em;color:var(--paper-500);font-size:10px}.image-tile-actions{gap:4px;display:flex}.image-tile-actions button{border:1px solid var(--paper-300);width:24px;height:24px;color:var(--paper-500);cursor:pointer;background:0 0;font-size:12px}.image-tile-actions button:hover:not(:disabled){color:var(--ink);border-color:var(--ink)}.image-tile-actions button:disabled{opacity:.3;cursor:not-allowed}.image-tile-actions .danger:hover:not(:disabled){background:var(--danger);color:var(--paper);border-color:var(--danger)}.placeholder-card{background:var(--paper);border:1px solid var(--paper-200);margin-top:32px;padding:32px}.placeholder-card h2{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--paper-500);margin:0 0 16px;font-size:12px}.placeholder-card ul{color:var(--ink-700);padding-left:20px;line-height:1.7}
