:root{--mineral:#40514f;--zest:#beda81;--stone:#edede1;--white:#fff;--black:#161a19;--mineral-900:#28332f;--mineral-800:#33403d;--mineral-700:#40514f;--mineral-600:#4e625f;--mineral-500:#5f7572;--mineral-400:#859895;--mineral-300:#aab8b5;--mineral-200:#cbd4d2;--mineral-100:#e3e8e7;--mineral-50:#f1f4f3;--zest-900:#5e7333;--zest-800:#79913f;--zest-700:#93af52;--zest-600:#a8c566;--zest-500:#beda81;--zest-400:#cce29a;--zest-300:#d9ebb4;--zest-200:#e7f2cf;--zest-100:#f2f8e7;--stone-500:#c9c9b8;--stone-400:#d8d8cb;--stone-300:#e2e2d6;--stone-200:#edede1;--stone-100:#f5f5ee;--stone-50:#fbfbf6;--signal-success:#5e8c4e;--signal-success-soft:#e4efdd;--signal-warning:#c58a3a;--signal-warning-soft:#f6ead6;--signal-danger:#b4503f;--signal-danger-soft:#f4e0db;--signal-info:#4e6f7d;--signal-info-soft:#deeaee;--surface-page:var(--stone-100);--surface-card:var(--white);--surface-sunken:var(--stone-200);--surface-inverse:var(--mineral-800);--surface-accent:var(--zest-100);--text-strong:var(--mineral-900);--text-body:var(--mineral-800);--text-muted:var(--mineral-500);--text-subtle:var(--mineral-400);--text-inverse:var(--stone-100);--text-on-zest:var(--mineral-900);--border-soft:var(--stone-300);--border-default:var(--mineral-200);--border-strong:var(--mineral-400);--action-primary:var(--mineral-700);--action-primary-hover:var(--mineral-800);--action-primary-press:var(--mineral-900);--action-accent:var(--zest-500);--action-accent-hover:var(--zest-600);--action-accent-press:var(--zest-700);--font-display:"DM Serif Display", Georgia, "Times New Roman", serif;--font-sans:"DM Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"DM Mono", ui-monospace, "SFMono-Regular", monospace;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:2.5rem;--space-8:3rem;--space-9:4rem;--space-10:5rem;--radius-xs:3px;--radius-sm:5px;--radius-md:8px;--radius-lg:12px;--radius-xl:18px;--radius-pill:999px;--shadow-xs:0 1px 2px #28332f0f;--shadow-sm:0 1px 3px #28332f14, 0 1px 2px #28332f0d;--shadow-md:0 4px 12px #28332f14, 0 2px 4px #28332f0d;--shadow-lg:0 12px 28px #28332f1f, 0 4px 8px #28332f0f;--shadow-xl:0 24px 56px #28332f29, 0 8px 16px #28332f14;--shadow-focus:0 0 0 3px #93af5273;--ease-standard:cubic-bezier(.2, 0, .1, 1);--ease-out:cubic-bezier(.16, 1, .3, 1);--duration-fast:.12s;--duration-base:.2s;--duration-slow:.32s;--container-lg:1120px}*,:before,:after{box-sizing:border-box}html,body{min-height:100%;margin:0;padding:0}body{background:var(--surface-page);color:var(--text-body);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-size:1rem;line-height:1.5}h1,h2,h3,h4{font-family:var(--font-display);color:var(--text-strong);margin:0;font-style:italic;font-weight:400;line-height:1.2}a{color:inherit;text-decoration:none}p{margin:0}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{box-shadow:var(--shadow-focus);outline:none}.container{width:100%;max-width:var(--container-lg);padding-left:var(--space-6);padding-right:var(--space-6);margin:0 auto}.section{padding-top:var(--space-8);padding-bottom:var(--space-10)}.app-header{background:var(--surface-inverse);color:var(--text-inverse);padding:var(--space-5) 0}.app-header-inner{justify-content:space-between;align-items:center;gap:var(--space-4);display:flex}.app-brand,.app-header-actions{align-items:center;gap:var(--space-3);display:inline-flex}.app-logo{width:auto;height:30px;display:block}.app-brand-label{font-family:var(--font-sans);color:var(--stone-300);font-size:.9375rem;font-style:normal}.btn{justify-content:center;align-items:center;gap:var(--space-2);height:40px;padding:0 var(--space-4);border-radius:var(--radius-md);font-family:var(--font-sans);cursor:pointer;transition:background var(--duration-base) var(--ease-standard), border-color var(--duration-base) var(--ease-standard), transform var(--duration-base) var(--ease-standard);border:none;font-size:.875rem;font-weight:500;line-height:1;display:inline-flex}.btn:active{transform:translateY(1px)}.btn:disabled{cursor:not-allowed;transform:none}.btn-primary{background:var(--action-primary);color:var(--text-inverse)}.btn-primary:hover:not(:disabled){background:var(--action-primary-hover)}.btn-primary:active:not(:disabled){background:var(--action-primary-press)}.btn-primary:disabled{background:var(--mineral-400);color:var(--text-muted)}.btn-accent{background:var(--action-accent);color:var(--text-on-zest);font-weight:600}.btn-accent:hover:not(:disabled){background:var(--action-accent-hover)}.btn-accent:active:not(:disabled){background:var(--action-accent-press)}.btn-accent:disabled{background:var(--zest-300);color:var(--text-muted)}.btn-secondary{color:var(--text-body);border:1px solid var(--border-default);background:0 0}.btn-secondary:hover:not(:disabled){background:var(--stone-100);border-color:var(--border-strong)}.btn-secondary:active:not(:disabled){background:var(--mineral-50);color:var(--text-strong)}.btn-secondary:disabled{color:var(--text-muted);border-color:var(--border-soft)}.app-header .btn-secondary{color:var(--text-inverse);border-color:#fff6}.app-header .btn-secondary:hover:not(:disabled){border-color:var(--text-inverse);color:var(--text-inverse);background:#ffffff1f}.app-header .btn-secondary:active:not(:disabled){color:var(--text-inverse);background:#ffffff2e}.btn-danger{background:var(--signal-danger);color:var(--white)}.btn-danger:hover:not(:disabled){background:#9c4536}.btn-block{width:100%}.btn-link{height:auto;font-family:var(--font-sans);color:var(--text-body);cursor:pointer;text-underline-offset:2px;background:0 0;border:none;padding:0;font-size:.875rem;font-weight:500;text-decoration:underline}.btn-link:focus-visible{box-shadow:var(--shadow-focus);border-radius:var(--radius-xs);outline:none}.card{background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--radius-lg);padding:var(--space-5);box-shadow:var(--shadow-sm);transition:box-shadow var(--duration-base) var(--ease-standard), border-color var(--duration-base) var(--ease-standard)}.form-group{margin-bottom:var(--space-4);flex-direction:column;display:flex}.label{font-family:var(--font-sans);color:var(--text-strong);margin-bottom:var(--space-2);font-size:.875rem;font-weight:500}.input,.select,.textarea{background:var(--stone-50);border:1px solid var(--border-soft);border-radius:var(--radius-md);width:100%;font-family:var(--font-sans);color:var(--text-body);transition:border-color var(--duration-base) var(--ease-standard), box-shadow var(--duration-base) var(--ease-standard);font-size:1rem}.input,.select{height:40px;padding:var(--space-2) var(--space-3)}.textarea{min-height:80px;padding:var(--space-3);resize:vertical;line-height:1.5}.input::placeholder,.textarea::placeholder{color:var(--text-subtle)}.input:focus-visible,.select:focus-visible,.textarea:focus-visible{border-color:var(--border-strong);box-shadow:var(--shadow-focus);outline:none}.input.error,.select.error,.textarea.error{border-color:var(--signal-danger);border-width:1px}.helper-text{color:var(--text-muted);margin-top:var(--space-1);font-size:.75rem;font-weight:400}.error-text{color:var(--signal-danger);margin-top:var(--space-1);font-size:.75rem;font-weight:500}.form-alert{color:var(--signal-danger);background:var(--signal-danger-soft);border:1px solid var(--signal-danger);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4);font-size:.875rem;font-weight:500}.centre-screen{min-height:100vh;padding:var(--space-6);justify-content:center;align-items:center;display:flex}.centre-card{background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--radius-lg);width:100%;max-width:420px;box-shadow:var(--shadow-md);padding:var(--space-8)}.card-logo{width:auto;height:44px;display:block}.centre-card h1{margin-bottom:var(--space-2);font-size:2.25rem}.centre-card h1.card-heading{margin-bottom:var(--space-5)}.centre-card .lede{color:var(--text-muted);margin-bottom:var(--space-6);font-size:1rem}.category-section{margin-bottom:var(--space-9)}.category-heading{font-family:var(--font-display);color:var(--text-strong);margin-bottom:var(--space-5);font-size:2.25rem;font-style:italic;font-weight:400}.tool-grid{gap:var(--space-5);grid-template-columns:repeat(3,1fr);display:grid}.tool-tile{background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);transition:box-shadow var(--duration-base) var(--ease-standard), transform var(--duration-base) var(--ease-standard);flex-direction:column;display:flex;overflow:hidden}.tool-tile:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.tool-tile:focus-visible{box-shadow:var(--shadow-focus);outline:none}.tool-tile-image{aspect-ratio:3/2;object-fit:cover;background:var(--stone-200);width:100%;display:block}.tool-tile-body{gap:var(--space-2);padding:var(--space-5);flex-direction:column;display:flex}.tool-tile-category{font-family:var(--font-sans);text-transform:uppercase;letter-spacing:.12em;color:var(--text-muted);font-size:.75rem;font-weight:500}.tool-tile-name{font-family:var(--font-sans);color:var(--text-strong);font-size:1.375rem;font-weight:600;line-height:1.3}.tool-tile-desc{font-family:var(--font-sans);color:var(--text-body);font-size:.9375rem;line-height:1.5}.empty-state{text-align:center;max-width:420px;margin:var(--space-9) auto;padding:var(--space-8)}.empty-state h2{margin-bottom:var(--space-3);font-size:1.75rem}.empty-state p{color:var(--text-muted)}.admin-bar{justify-content:space-between;align-items:center;gap:var(--space-4);margin-bottom:var(--space-6);display:flex}.admin-title{font-size:2.25rem}.admin-actions{align-items:center;gap:var(--space-3);display:flex}.admin-layout{gap:var(--space-6);grid-template-columns:1fr 340px;align-items:start;display:grid}.admin-tool-list{gap:var(--space-4);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.admin-tool-row{align-items:center;gap:var(--space-4);display:flex}.admin-tool-thumb{object-fit:cover;border-radius:var(--radius-md);background:var(--stone-200);flex-shrink:0;width:64px;height:48px}.admin-tool-main{flex:1;min-width:0}.admin-tool-name{color:var(--text-strong);font-size:1.125rem;font-weight:600}.admin-tool-meta{color:var(--text-muted);font-size:.8125rem}.admin-tool-controls{gap:var(--space-2);flex-shrink:0;display:flex}.stack{gap:var(--space-4);flex-direction:column;display:flex}.section-label{font-family:var(--font-sans);text-transform:uppercase;letter-spacing:.12em;color:var(--text-muted);margin-bottom:var(--space-3);font-size:.75rem;font-weight:500}.category-chip{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-3);border:1px solid var(--border-soft);border-radius:var(--radius-md);background:var(--stone-50);display:flex}.category-chip-name{color:var(--text-body);font-size:.9375rem}.image-preview{aspect-ratio:3/2;object-fit:cover;border-radius:var(--radius-md);border:1px solid var(--border-soft);width:100%;max-width:240px;margin-top:var(--space-2)}.modal-scrim{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);padding:var(--space-6);z-index:100;background:#28332f80;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-card{background:var(--surface-card);border-radius:var(--radius-xl);width:100%;max-width:500px;box-shadow:var(--shadow-xl);padding:var(--space-8)}.modal-title{font-family:var(--font-display);color:var(--text-strong);margin-bottom:var(--space-4);font-size:1.75rem;font-style:italic;font-weight:400}.modal-body{color:var(--text-body);margin-bottom:var(--space-6);font-size:1rem}.modal-actions{justify-content:flex-end;gap:var(--space-3);display:flex}@media (max-width:900px){.tool-grid{grid-template-columns:repeat(2,1fr)}.admin-layout{grid-template-columns:1fr}.container{padding-left:var(--space-4);padding-right:var(--space-4)}}@media (max-width:600px){.tool-grid{grid-template-columns:1fr}.app-header-inner{align-items:flex-start;gap:var(--space-2);flex-direction:column}.admin-bar{flex-direction:column;align-items:flex-start}.modal-actions{flex-direction:column-reverse}.modal-actions .btn{width:100%}.centre-card{padding:var(--space-6)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}.tool-tile:hover{transform:none}}
