:root{--color-bg: #fafafa;--color-surface: #ffffff;--color-border: #d9d9d9;--color-text: #1a1a1a;--color-text-secondary: #666666;--color-accent: #1d4ed8;--color-error: #b91c1c;--color-warning: #92400e;--color-hero-bg: #f3f0e9;--color-hero-blob-a: #ffb27a;--color-hero-blob-b: #8ab4ff;--color-hero-blob-c: #c9a4ff}*{box-sizing:border-box}body{margin:0;background:var(--color-bg);color:var(--color-text);font-family:-apple-system,Segoe UI,sans-serif}main{max-width:1100px;margin:0 auto;padding:2.5rem 2rem}.topbar{position:sticky;top:0;z-index:10;background:#fafafacc;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--color-border)}.topbar-inner{max-width:1100px;margin:0 auto;padding:.85rem 2rem;display:flex;align-items:center;gap:1.5rem}.topbar-logo{font-weight:800;font-size:1.0625rem;letter-spacing:-.01em;color:var(--color-text);text-decoration:none}.topbar-nav{display:flex;gap:1.25rem;margin-right:auto}.topbar-nav a{color:var(--color-text-secondary);text-decoration:none;font-size:.875rem;font-weight:600}.topbar-nav a:hover{color:var(--color-text)}.topbar-cta{padding:.45rem 1rem;border:1px solid var(--color-text);border-radius:999px;background:var(--color-text);color:#fff;font-size:.875rem;font-weight:600;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;white-space:nowrap}.topbar-cta:hover{box-shadow:0 4px 14px #0000002e;transform:translateY(-1px)}@media (max-width: 520px){.topbar-nav{display:none}}h1,h2{line-height:1.2}.page-section{margin:2rem 0}.section-header{margin:0 0 1rem;font-size:1.25rem;font-weight:700;color:var(--color-text)}.hero{position:relative;overflow:hidden;text-align:center;padding:3rem 1.5rem 2.5rem;margin:0 0 2rem;border-radius:20px;background:var(--color-hero-bg);isolation:isolate}.hero-glow{position:absolute;inset:-40% -20% auto -20%;height:22rem;z-index:-1;filter:blur(60px);opacity:.55;background:radial-gradient(28% 45% at 22% 35%,var(--color-hero-blob-a) 0%,transparent 100%),radial-gradient(30% 50% at 75% 30%,var(--color-hero-blob-b) 0%,transparent 100%),radial-gradient(26% 40% at 50% 70%,var(--color-hero-blob-c) 0%,transparent 100%)}.hero-badge{display:inline-block;padding:.3rem .8rem;margin-bottom:1rem;border-radius:999px;background:var(--color-surface);color:var(--color-text-secondary);font-size:.8125rem;font-weight:600;letter-spacing:.01em;box-shadow:0 1px 2px #0000000f}.hero h1{max-width:26ch;margin:0 auto .75rem;font-size:clamp(1.75rem,1.3rem + 2vw,2.75rem);font-weight:700;letter-spacing:-.02em;color:var(--color-text)}.hero>p{max-width:46ch;margin:0 auto 1.5rem;color:var(--color-text-secondary);font-size:1rem}.hero .csv-import{margin:0}.hero .csv-import-controls{justify-content:center}.hero .field-error{text-align:left;max-width:32rem;margin-left:auto;margin-right:auto}.field{display:flex;flex-direction:column;gap:.25rem;margin-bottom:.75rem}.field label{font-size:.875rem;font-weight:600}.field input{font:inherit;font-variant-numeric:tabular-nums;padding:.5rem .6rem;border:1px solid var(--color-border);border-radius:4px;background:var(--color-surface);color:var(--color-text);max-width:100%}.field input:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.field input[aria-invalid=true]{border-color:var(--color-error)}.field-error{margin:0;color:var(--color-error);font-size:.8125rem}.hint{margin:0 0 .75rem;color:var(--color-text-secondary);font-size:.875rem}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.csv-import{margin:1rem 0}.csv-import-controls{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem}.csv-import .field-error{margin:.5rem 0 0}.import-button{display:inline-block;padding:.65rem 1.25rem;border:1px solid var(--color-text);border-radius:999px;background:var(--color-text);color:#fff;font-weight:600;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease}.import-button:hover{box-shadow:0 4px 14px #0000002e;transform:translateY(-1px)}.import-button:focus-within{outline:2px solid var(--color-accent);outline-offset:2px}.export-button{padding:.65rem 1.25rem;border:1px solid var(--color-border);border-radius:999px;background:transparent;color:var(--color-text);font-weight:600;cursor:pointer;transition:background .15s ease}.export-button:hover:not(:disabled){background:var(--color-surface)}.export-button:disabled{border-color:var(--color-border);color:var(--color-text-secondary);cursor:not-allowed}.clear-sample-button{padding:.4rem .85rem;border:none;border-radius:999px;background:transparent;color:var(--color-text-secondary);font-size:.8125rem;font-weight:600;text-decoration:underline;cursor:pointer}.clear-sample-button:hover{color:var(--color-text)}.sample-data-note{margin:.5rem 0 0;color:var(--color-text-secondary);font-size:.8125rem}.menu-table-scroll{margin-top:1.5rem;overflow:auto;resize:vertical;min-height:4rem;max-height:80vh;border:1px solid var(--color-border);border-radius:6px}.menu-table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}.menu-table th,.menu-table td{padding:.6rem .9rem;text-align:left;white-space:nowrap;border-bottom:1px solid var(--color-border)}.menu-table thead th{position:sticky;top:0;background:var(--color-bg);color:var(--color-text-secondary);font-size:.8125rem;font-weight:600}.menu-table tbody tr:last-child td,.menu-table tbody tr:last-child th{border-bottom:none}.menu-table-headline{color:var(--color-accent);font-weight:700}.menu-table-note{color:var(--color-warning);font-variant-numeric:normal}.menu-table-row--error th,.menu-table-row--error .menu-table-reason{color:var(--color-error)}.menu-table-reason{white-space:normal}.menu-table-actions{display:flex;gap:.5rem;white-space:nowrap}.menu-table-actions button{padding:.3rem .5rem;border:1px solid var(--color-border);border-radius:4px;background:var(--color-surface);color:var(--color-text);cursor:pointer}.menu-table-section{margin-top:1rem}.menu-table-controls{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.75rem}.add-item-button{padding:.5rem .75rem;border:1px solid var(--color-border);border-radius:4px;background:var(--color-surface);color:var(--color-text);font-weight:600;cursor:pointer}.item-editor{border:1px solid var(--color-border);border-radius:6px;padding:1rem;margin:1rem 0;background:var(--color-surface)}.item-editor h2{margin-top:0;font-size:1.125rem}.item-editor-pairs{border:none;padding:0;margin:.75rem 0}.item-editor-pairs legend{font-size:.875rem;font-weight:600;padding:0;margin-bottom:.5rem}.item-editor-pair{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.75rem;margin-bottom:.5rem}.item-editor-pair .field{margin-bottom:0;flex:1 1 8rem}.remove-pair-button{padding:.5rem .6rem;border:1px solid var(--color-border);border-radius:4px;background:var(--color-surface);color:var(--color-error);cursor:pointer;height:fit-content}.item-editor-actions{display:flex;gap:.75rem;margin-top:.75rem}.primary-button{padding:.5rem .75rem;border:1px solid var(--color-accent);border-radius:4px;background:var(--color-accent);color:#fff;font-weight:600;cursor:pointer}.item-editor-actions button:not(.primary-button){padding:.5rem .75rem;border:1px solid var(--color-border);border-radius:4px;background:var(--color-surface);color:var(--color-text);cursor:pointer}.dashboard{border:1px solid var(--color-border);border-radius:6px;padding:1rem;margin-top:1.5rem;background:var(--color-surface)}.dashboard-stats{display:flex;flex-wrap:wrap;gap:1.5rem}.dashboard-stat{display:flex;flex-direction:column;gap:.2rem;font-variant-numeric:tabular-nums}.dashboard-stat-label{font-size:.8125rem;color:var(--color-text-secondary);font-weight:600}.dashboard-stat-value{font-size:1.5rem;font-weight:700}.dashboard-stat-value--accent{color:var(--color-accent)}.dashboard-stat-value--warning{color:var(--color-warning)}.dashboard-opportunities{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--color-border)}.dashboard-opportunities-label{display:block;font-size:.8125rem;color:var(--color-text-secondary);font-weight:600;margin-bottom:.5rem}.dashboard-opportunities-list{list-style:decimal;margin:0;padding-left:1.25rem;font-variant-numeric:tabular-nums}.dashboard-opportunities-list li{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1rem;padding:.4rem 0;border-bottom:1px solid var(--color-border)}.dashboard-opportunities-list li:last-child{border-bottom:none}.dashboard-opportunity-name{font-weight:600;flex:1 1 8rem}.dashboard-opportunity-delta{font-weight:700;color:var(--color-accent)}.dashboard-opportunities-list button{padding:.3rem .5rem;border:1px solid var(--color-border);border-radius:4px;background:var(--color-surface);color:var(--color-text);cursor:pointer}.menu-summary-toggle{display:flex;gap:.5rem;margin-bottom:.75rem}.menu-summary-toggle button{padding:.4rem .7rem;border:1px solid var(--color-border);border-radius:4px;background:var(--color-surface);color:var(--color-text-secondary);font-weight:600;cursor:pointer}.menu-summary-toggle button[aria-pressed=true]{border-color:var(--color-accent);color:var(--color-accent)}.price-chart{border:1px solid var(--color-border);border-radius:6px;padding:1rem;background:var(--color-surface)}.price-chart-header{display:flex;align-items:center;gap:.6rem;margin-bottom:.75rem}.price-chart-select-label{font-size:.875rem;font-weight:600}.price-chart-header select{font:inherit;padding:.4rem .6rem;border:1px solid var(--color-border);border-radius:4px;background:var(--color-surface);color:var(--color-text)}.price-chart-svg{width:100%;height:auto}.price-chart-gridline{stroke:var(--color-border);stroke-width:1}.price-chart-axis-label{font-size:10px;fill:var(--color-text-secondary);font-variant-numeric:tabular-nums}.price-chart-axis-title{font-size:11px;font-weight:600;fill:var(--color-text-secondary)}.price-chart-demand-line{stroke:var(--color-text);stroke-width:2}.price-chart-profit-curve{stroke:#16a34a;stroke-width:2;stroke-dasharray:5 4;opacity:.85}.price-chart-datapoint{fill:var(--color-surface);stroke:var(--color-text);stroke-width:1.5}.price-chart-marker{stroke-width:1.5}.price-chart-marker--cost{stroke:var(--color-warning);stroke-dasharray:4 3}.price-chart-marker--current{stroke:var(--color-text-secondary);stroke-dasharray:2 3}.price-chart-marker--optimal{stroke:var(--color-accent)}.price-chart-optimal-point{fill:var(--color-accent);stroke:var(--color-surface);stroke-width:1.5}.price-chart-legend{display:flex;flex-wrap:wrap;gap:.5rem 1rem;margin-top:.75rem;font-size:.8125rem;color:var(--color-text-secondary);font-variant-numeric:tabular-nums}.price-chart-legend-item{display:inline-flex;align-items:center;gap:.35rem}.price-chart-swatch{display:inline-block;width:.75rem;height:.1875rem;border-radius:1px}.price-chart-swatch--demand{background:var(--color-text)}.price-chart-swatch--profit{background:#16a34a}.price-chart-swatch--datapoint{width:.5rem;height:.5rem;border-radius:999px;background:var(--color-surface);border:1.5px solid var(--color-text)}.price-chart-swatch--cost{background:var(--color-warning)}.price-chart-swatch--current{background:var(--color-text-secondary)}.price-chart-swatch--optimal{background:var(--color-accent)}.price-chart-derivation{margin-top:.85rem;padding-top:.75rem;border-top:1px solid var(--color-border);font-size:.875rem;color:var(--color-text-secondary);font-variant-numeric:tabular-nums}.price-chart-derivation p{margin:.3rem 0}.price-chart-derivation strong{color:var(--color-text)}
