:root{--ink: #101014;--ink-2: #17171d;--ink-3: #1f1f27;--line: #2c2c36;--gold: #c9a45c;--gold-dim: #8f7340;--paper: #e8e0d0;--muted: #9a958a;--green: #7fb069;--amber: #d9a441;--red: #d9635e;--blue: #6aa5d9}*{box-sizing:border-box}body{margin:0;background:var(--ink);color:var(--paper);font-family:Georgia,Times New Roman,serif;-webkit-font-smoothing:antialiased}#root{min-height:100vh}.app{max-width:1080px;margin:0 auto;padding:28px 20px 80px}header.brand{text-align:center;margin-bottom:26px}header.brand .motto{letter-spacing:.42em;font-size:11px;color:var(--gold);margin-bottom:8px}header.brand h1{font-size:40px;margin:0;letter-spacing:.12em;font-weight:400}header.brand .byline{letter-spacing:.28em;font-size:12px;color:var(--gold);margin-top:10px;text-transform:uppercase}header.brand .sub{color:var(--muted);font-style:italic;margin-top:6px;font-size:14px}header.brand .rule{width:120px;height:1px;background:var(--gold-dim);margin:16px auto 0}nav.tabs{display:flex;gap:8px;justify-content:center;margin-bottom:28px;flex-wrap:wrap}nav.tabs button{background:transparent;border:1px solid var(--line);color:var(--muted);padding:9px 18px;font-family:inherit;font-size:13px;letter-spacing:.14em;cursor:pointer;border-radius:2px;text-transform:uppercase}nav.tabs button.active{border-color:var(--gold);color:var(--gold);background:#c9a45c14}nav.tabs button:hover{color:var(--paper);border-color:var(--muted)}.card{background:var(--ink-2);border:1px solid var(--line);border-radius:4px;padding:22px;margin-bottom:18px}.card h2{margin:0 0 4px;font-size:20px;letter-spacing:.08em;font-weight:400;color:var(--gold)}.card h3{margin:18px 0 8px;font-size:15px;letter-spacing:.1em;color:var(--paper);font-weight:400}.card .hint{color:var(--muted);font-size:13px;font-style:italic;margin-bottom:12px}textarea.formula-input{width:100%;min-height:190px;background:var(--ink);color:var(--paper);border:1px solid var(--line);border-radius:3px;padding:12px;font-family:Courier New,monospace;font-size:13.5px;line-height:1.65;resize:vertical}textarea.formula-input:focus{outline:none;border-color:var(--gold-dim)}.row{display:flex;gap:14px;flex-wrap:wrap;align-items:flex-end;margin-top:14px}.field label{display:block;font-size:11px;letter-spacing:.18em;color:var(--muted);margin-bottom:6px;text-transform:uppercase}.field input,.field select{background:var(--ink);border:1px solid var(--line);color:var(--paper);padding:9px 12px;font-family:inherit;font-size:14px;border-radius:3px}.field input:focus,.field select:focus{outline:none;border-color:var(--gold-dim)}button.primary{background:var(--gold);color:#141414;border:none;padding:11px 30px;font-family:inherit;font-size:13px;letter-spacing:.2em;cursor:pointer;border-radius:2px;text-transform:uppercase;font-weight:700}button.primary:hover{background:#d8b76e}button.ghost{background:transparent;color:var(--muted);border:1px solid var(--line);padding:10px 18px;font-family:inherit;font-size:12px;letter-spacing:.14em;cursor:pointer;border-radius:2px;text-transform:uppercase}button.ghost:hover{color:var(--paper);border-color:var(--muted)}button.linklike{background:none;border:none;padding:0;cursor:pointer;color:var(--gold-dim);font-family:inherit;font-size:13px;letter-spacing:.04em;text-decoration:underline;text-underline-offset:3px}button.linklike:hover{color:var(--gold)}.scores{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:16px 0}.score{background:var(--ink);border:1px solid var(--line);border-radius:3px;padding:14px;text-align:center}.score .num{font-size:34px;color:var(--gold)}.score .lbl{font-size:11px;letter-spacing:.2em;color:var(--muted);text-transform:uppercase;margin-top:4px}.score .bar{height:4px;background:var(--ink-3);margin-top:10px;border-radius:2px;overflow:hidden}.score .bar i{display:block;height:100%;background:var(--gold)}.pyramid-row{margin:10px 0}.pyramid-row .top-line{display:flex;justify-content:space-between;font-size:13px;margin-bottom:5px}.pyramid-row .top-line .pct{color:var(--gold);font-family:Courier New,monospace}.pyramid-row .track{position:relative;height:14px;background:var(--ink-3);border-radius:2px}.pyramid-row .fill{position:absolute;left:0;top:0;bottom:0;border-radius:2px}.pyramid-row .target{position:absolute;top:-4px;bottom:-4px;width:2px;background:var(--paper);opacity:.85}.badge{display:inline-block;font-size:10.5px;letter-spacing:.1em;padding:3px 9px;border-radius:20px;border:1px solid var(--line);color:var(--muted);text-transform:uppercase;margin-right:6px}.badge.restricted{border-color:var(--amber);color:var(--amber)}.badge.prohibited{border-color:var(--red);color:var(--red)}.badge.watch{border-color:var(--blue);color:var(--blue)}.badge.house-banned{border-color:var(--red);color:var(--red);background:#d9635e1f}.badge.ok{border-color:var(--green);color:var(--green)}.badge.allergen{border-color:#b48ead;color:#b48ead}table.reg{width:100%;border-collapse:collapse;font-size:13.5px}table.reg th{text-align:left;color:var(--muted);font-weight:400;letter-spacing:.12em;font-size:11px;text-transform:uppercase;padding:8px 10px;border-bottom:1px solid var(--line)}table.reg td{padding:8px 10px;border-bottom:1px solid var(--ink-3);vertical-align:top}table.reg tr:hover td{background:#ffffff05}.flag{border-left:3px solid var(--line);padding:10px 14px;margin:8px 0;background:var(--ink);font-size:14px;line-height:1.55}.flag.bad{border-color:var(--red)}.flag.warn{border-color:var(--amber)}.flag.info{border-color:var(--blue)}.flag.good{border-color:var(--green)}.flag b{color:var(--paper)}.narrative{font-style:italic;line-height:1.8;color:var(--paper);font-size:15px}.narrative:before{content:"“";color:var(--gold);font-size:22px}.narrative:after{content:"”";color:var(--gold);font-size:22px}ul.diag{list-style:none;padding:0;margin:0}ul.diag li{padding:9px 4px;border-bottom:1px solid var(--ink-3);font-size:14px;line-height:1.55}ul.diag li:last-child{border-bottom:none}ul.diag li .k{color:var(--gold);letter-spacing:.08em;font-size:12px;text-transform:uppercase;display:block;margin-bottom:2px}.palette-filters{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}.palette-filters button{background:transparent;border:1px solid var(--line);color:var(--muted);padding:6px 12px;font-size:12px;letter-spacing:.08em;cursor:pointer;border-radius:20px;font-family:inherit}.palette-filters button.active{border-color:var(--gold);color:var(--gold)}.search-box{width:100%;margin-bottom:12px}.shelf-head{margin:20px 0 6px}.shelf-head .latin{font-size:17px;letter-spacing:.2em;color:var(--gold)}.shelf-head .tag{font-size:13px;color:var(--muted);font-style:italic}.kv{display:grid;grid-template-columns:150px 1fr;gap:6px 14px;font-size:14px}.kv dt{color:var(--muted);letter-spacing:.06em}.kv dd{margin:0}.ratio-table{display:flex;gap:10px;flex-wrap:wrap;margin:10px 0}.ratio-card{background:var(--ink);border:1px solid var(--line);border-radius:3px;padding:12px 16px;text-align:center;min-width:110px}.ratio-card .r{font-family:Courier New,monospace;font-size:17px;color:var(--gold)}.ratio-card .d{font-size:11px;color:var(--muted);margin-top:4px}.disclaimer{border:1px dashed var(--gold-dim);padding:14px 16px;font-size:13px;color:var(--muted);line-height:1.6;margin-top:18px;border-radius:3px}.disclaimer b{color:var(--gold)}footer.foot{text-align:center;color:var(--muted);font-size:12px;margin-top:40px;letter-spacing:.2em}@media(max-width:640px){.scores{grid-template-columns:repeat(2,1fr)}}
