:root{--c-bg:#f0f0f2;--c-surface:#fff;--c-surface-alt:#f6f5fa;--c-text:#111;--c-text-secondary:#5a5a5a;--c-text-muted:#8a8a8a;--c-accent:#471278;--c-accent-hover:#5c1a99;--c-accent-light:#ede6f8;--c-accent-text:#fff;--c-border:#dddde1;--c-border-strong:#b0aec0;--c-success:#52b247;--c-success-bg:#edf7ec;--c-warning:#ffd400;--c-warning-text:#6b5200;--c-warning-bg:#fff9d9;--c-danger:#ff003b;--c-danger-bg:#ffe8ee;--c-info:#5245d4;--c-info-bg:#eceafc;--c-brand-pink:#ff0382;--c-brand-orange:#ff4724;--c-brand-teal:#38c2b2;--c-brand-magenta:#7d008f;--c-brand-yellow:#e0eb29;--sidebar-width:210px;--header-height:52px;--r-sm:4px;--r-md:8px;--r-lg:12px;--sh-sm:0 1px 3px rgba(0,0,0,.08);--sh-md:0 2px 8px rgba(0,0,0,.1);--sh-lg:0 4px 20px rgba(0,0,0,.12);--font-sans:Helvetica,Arial,sans-serif;--font-display:Helvetica,sans-serif;--font-mono:"SF Mono","Cascadia Code","Fira Code","Consolas",monospace;--t-fast:120ms ease;--t-base:200ms ease}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{font-size:15px;-webkit-text-size-adjust:100%}body{font-family:var(--font-sans);background-color:var(--c-bg);color:var(--c-text);line-height:1.55;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh}a{color:var(--c-accent);text-decoration:none}a:hover{text-decoration:underline}img,svg{display:block;max-width:100%}h1,h2,h3,h4{font-family:var(--font-display)}h1{font-size:1.6rem;font-weight:700;line-height:1.2}h2{font-size:1.25rem}h2,h3{font-weight:600;line-height:1.3}h3{font-size:1.05rem}h4{font-size:.95rem;font-weight:600}p{margin-bottom:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.card{background:var(--c-surface);border-radius:var(--r-md);padding:1.25rem}.btn{display:inline-flex;align-items:center;gap:.4em;padding:.45em 1em;font-family:var(--font-sans);font-size:.875rem;font-weight:500;line-height:1.4;border-radius:var(--r-sm);border:1px solid transparent;cursor:pointer;transition:background var(--t-fast),border-color var(--t-fast),color var(--t-fast);white-space:nowrap;text-decoration:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--c-accent);color:var(--c-accent-text);border-color:var(--c-accent)}.btn-primary:hover:not(:disabled){background:var(--c-accent-hover);border-color:var(--c-accent-hover)}.btn-secondary{background:var(--c-surface);color:var(--c-text);border-color:var(--c-border-strong)}.btn-secondary:hover:not(:disabled){background:var(--c-surface-alt)}.btn-danger{background:var(--c-danger-bg);color:var(--c-danger);border-color:var(--c-danger)}.btn-danger:hover:not(:disabled){background:var(--c-danger);color:#fff}.btn-sm{padding:.3em .7em;font-size:.8rem}.form-group{display:flex;flex-direction:column;gap:.35rem}.form-label{font-size:.8rem;font-weight:600;color:var(--c-text-secondary);text-transform:uppercase;letter-spacing:.04em}.form-input,.form-select,.form-textarea{font-family:var(--font-sans);font-size:.9rem;padding:.45em .7em;border:1px solid var(--c-border-strong);border-radius:var(--r-sm);background:var(--c-surface);color:var(--c-text);transition:border-color var(--t-fast),box-shadow var(--t-fast);width:100%}.form-input:focus,.form-select:focus,.form-textarea:focus{outline:none;border-color:var(--c-accent);box-shadow:0 0 0 2px var(--c-accent-light)}.form-input[type=number]{font-family:var(--font-mono)}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}.data-table{width:100%;border-collapse:collapse;font-size:.875rem}.data-table th{padding:.6rem .75rem;text-align:left;font-size:.75rem;font-weight:600;color:var(--c-text-secondary);text-transform:uppercase;letter-spacing:.04em;background:var(--c-surface-alt);border-bottom:2px solid var(--c-border);white-space:nowrap}.data-table th.num{text-align:right}.data-table td{padding:.55rem .75rem;border-bottom:1px solid var(--c-border);vertical-align:middle}.data-table tbody tr:hover td{background:var(--c-accent-light)}.data-table tbody tr:last-child td{border-bottom:none}.badge{display:inline-block;padding:.2em .55em;font-size:.72rem;font-weight:600;border-radius:999px;text-transform:uppercase;letter-spacing:.05em}.badge-active{background:var(--c-success-bg);color:var(--c-success)}.badge-seasonal{background:var(--c-info-bg);color:var(--c-info)}.badge-archived{background:var(--c-bg);color:var(--c-text-muted)}.badge-warning{background:var(--c-warning-bg);color:var(--c-warning-text)}.badge-danger{background:var(--c-danger-bg);color:var(--c-danger)}.badge-neutral{background:var(--c-surface-alt);color:var(--c-text-secondary);border:1px solid var(--c-border)}.badge-planned{background:var(--c-info-bg);color:var(--c-info)}.badge-confirmed{background:var(--c-success-bg);color:var(--c-success)}.badge-completed{background:var(--c-brand-magenta);color:#f5d0ff}.badge-cancelled{background:var(--c-danger-bg);color:var(--c-danger)}.badge-can{background:#e0f7f5;color:#1a7a72}.badge-bottle{background:#ffe0ef;color:#aa0257}.badge-keg{background:#ffe9e5;color:#b33418}.alert{padding:.75rem 1rem;border-radius:var(--r-sm);font-size:.875rem;border-left:4px solid transparent}.alert-warning{background:var(--c-warning-bg);border-color:var(--c-warning);color:var(--c-warning-text)}.alert-danger{background:var(--c-danger-bg);border-color:var(--c-danger);color:var(--c-danger)}.alert-success{background:var(--c-success-bg);border-color:var(--c-success);color:var(--c-success)}.alert-info{background:var(--c-info-bg);border-color:var(--c-info);color:var(--c-info)}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem;gap:1rem;margin-top:2rem}.page-title{font-size:2rem;font-weight:600;letter-spacing:0}.grid-2{grid-template-columns:repeat(2,1fr);grid-gap:1rem}.grid-2,.grid-3{display:grid;gap:1rem}.grid-3{grid-template-columns:repeat(3,1fr);grid-gap:1rem}.grid-4{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:1rem;gap:1rem}@media (max-width:900px){.grid-3,.grid-4{grid-template-columns:repeat(2,1fr)}}@media (max-width:600px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}}.num{font-family:var(--font-mono);font-size:.875rem;text-align:right}