*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0f1117;--surface:#1a1d27;--surface2:#232738;--border:#2e3347;--text:#e2e8f0;--text-muted:#8892a4;--accent:#4e79a7;--accent-h:#6395c4;--danger:#e15759;--warning:#f28e2b;--success:#59a14f;--radius:8px;--radius-lg:14px;--shadow:0 2px 12px #0006;font-size:15px}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;min-height:100dvh;font-family:Inter,system-ui,-apple-system,sans-serif}a{color:var(--accent)}button{cursor:pointer;font:inherit}input,select,textarea{font:inherit;color:var(--text)}.app-wrapper{flex-direction:column;min-height:100dvh;display:flex}.app-main{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:1.5rem 1rem 3rem}.app-header{background:var(--surface);border-bottom:1px solid var(--border);align-items:center;gap:.75rem;padding:.9rem 1.5rem;display:flex}.app-header h1{letter-spacing:-.02em;color:var(--text);font-size:1.2rem;font-weight:700}.app-header .logo-icon{font-size:1.4rem}.tab-nav{background:var(--surface);border-bottom:1px solid var(--border);gap:.25rem;padding:0 1rem;display:flex;overflow-x:auto}.tab-nav button{color:var(--text-muted);white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;padding:.75rem 1rem;font-size:.9rem;font-weight:500;transition:color .15s,border-color .15s}.tab-nav button:hover{color:var(--text)}.tab-nav button.active{color:var(--accent-h);border-bottom-color:var(--accent-h)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:1.25rem 1.5rem}.card+.card{margin-top:1rem}.card-title{color:var(--text);margin-bottom:1rem;font-size:1rem;font-weight:600}.form-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem;display:grid}.field{flex-direction:column;gap:.3rem;display:flex}.field label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:.8rem;font-weight:600}.field input,.field select{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);outline:none;padding:.55rem .75rem;transition:border-color .15s}.field input:focus,.field select:focus{border-color:var(--accent)}.field select option{background:var(--surface2)}.field-hint{color:var(--text-muted);font-size:.75rem}.btn{border-radius:var(--radius);border:none;align-items:center;gap:.4rem;padding:.55rem 1.1rem;font-size:.875rem;font-weight:600;transition:background .15s,opacity .15s;display:inline-flex}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-h)}.btn-ghost{background:var(--surface2);border:1px solid var(--border);color:var(--text)}.btn-ghost:hover{background:var(--border)}.btn-danger{color:var(--danger);background:0 0;border:1px solid #0000;padding:.3rem .6rem}.btn-danger:hover{background:#e157591a}.btn-sm{padding:.35rem .7rem;font-size:.8rem}.freq-presets{flex-wrap:wrap;gap:.35rem;margin-bottom:.5rem;display:flex}.freq-presets button{background:var(--surface2);border:1px solid var(--border);color:var(--text-muted);border-radius:6px;padding:.3rem .65rem;font-size:.78rem;font-weight:600;transition:all .12s}.freq-presets button.selected,.freq-presets button:hover{background:var(--accent);border-color:var(--accent);color:#fff}.compound-table{border-collapse:collapse;width:100%;font-size:.875rem}.compound-table th{text-align:left;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--border);padding:.5rem .75rem;font-size:.75rem;font-weight:600}.compound-table td{border-bottom:1px solid var(--border);vertical-align:middle;padding:.65rem .75rem}.compound-table tr:last-child td{border-bottom:none}.compound-table tr:hover td{background:var(--surface2)}.badge{text-transform:uppercase;letter-spacing:.05em;border-radius:99px;padding:.15rem .5rem;font-size:.7rem;font-weight:600;display:inline-block}.badge-estimated{color:var(--warning);background:#f28e2b26}.badge-established{color:var(--success);background:#59a14f1f}.badge-single{color:#b07aa1;background:#b07aa126}.badge-scheduled{color:var(--accent-h);background:#4e79a726}.color-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px;display:inline-block}.chart-controls{flex-wrap:wrap;align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.range-presets{gap:.3rem;display:flex}.range-presets button{background:var(--surface2);border:1px solid var(--border);color:var(--text-muted);border-radius:6px;padding:.3rem .7rem;font-size:.8rem;font-weight:600;transition:all .12s}.range-presets button.selected,.range-presets button:hover{background:var(--accent);border-color:var(--accent);color:#fff}.visibility-toggles{flex-wrap:wrap;gap:.5rem;display:flex}.toggle-chip{background:var(--surface2);border:1px solid var(--border);cursor:pointer;color:var(--text);-webkit-user-select:none;user-select:none;border-radius:99px;align-items:center;gap:.35rem;padding:.25rem .65rem;font-size:.78rem;transition:opacity .12s,border-color .12s;display:flex}.toggle-chip.hidden{opacity:.4}.toggle-chip.active{border-color:var(--accent);color:var(--accent-h)}.toggle-chip:hover{border-color:var(--accent)}.disclaimer{color:var(--text-muted);border-top:1px solid var(--border);margin-top:.75rem;padding-top:.6rem;font-size:.72rem;line-height:1.5}.empty-state{text-align:center;color:var(--text-muted);padding:3rem 1rem}.empty-state p{margin-top:.5rem;font-size:.875rem}.recharts-cartesian-grid line{stroke:var(--border)}.recharts-text{font-size:.75rem;fill:var(--text-muted)!important}.recharts-tooltip-wrapper{outline:none}.chart-tooltip{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);min-width:160px;padding:.65rem .85rem;font-size:.8rem}.chart-tooltip .tooltip-date{color:var(--text);margin-bottom:.4rem;font-weight:700}.chart-tooltip .tooltip-row{color:var(--text-muted);align-items:center;gap:.4rem;margin:.15rem 0;display:flex}.chart-tooltip .tooltip-row span.val{color:var(--text);margin-left:auto;font-weight:600}.form-actions{flex-wrap:wrap;gap:.75rem;margin-top:1.25rem;display:flex}.compound-cards-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:.75rem;margin-bottom:1rem;display:grid}.compound-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);cursor:pointer;-webkit-user-select:none;user-select:none;padding:.85rem 1rem;transition:border-color .15s,opacity .15s,background .15s;position:relative}.compound-card:hover{border-color:var(--accent);background:var(--surface2)}.compound-card--hidden{opacity:.4}.compound-card--add{color:var(--text-muted);border-style:dashed;justify-content:center;align-items:center;min-height:90px;display:flex}.compound-card--add:hover{color:var(--accent-h);border-color:var(--accent-h);background:#4e79a70f}.compound-card__plus{font-size:2rem;font-weight:300;line-height:1}.compound-card__header{align-items:center;gap:.4rem;margin-bottom:.5rem;display:flex}.compound-card__num{color:var(--text-muted);font-size:.7rem;font-weight:600}.compound-card__actions{align-items:center;gap:2px;margin-left:auto;display:flex}.compound-card__edit,.compound-card__delete{color:var(--text-muted);cursor:pointer;opacity:0;background:0 0;border:none;padding:0 .1rem;font-size:1rem;line-height:1;transition:opacity .12s,color .12s}.compound-card:hover .compound-card__edit,.compound-card:hover .compound-card__delete{opacity:1}.compound-card__edit:hover{color:var(--accent-h)}.compound-card__delete:hover{color:var(--danger)}.compound-card__name{margin-bottom:.55rem;font-size:.88rem;line-height:1.3}.compound-card__base{color:var(--text);font-weight:700}.compound-card__ester{color:var(--text-muted);font-style:italic;font-weight:400}.compound-card__meta{flex-wrap:wrap;gap:.3rem;display:flex}.compound-card__tag{background:var(--surface2);border:1px solid var(--border);color:var(--text-muted);white-space:nowrap;border-radius:4px;padding:.1rem .4rem;font-size:.7rem;display:inline-block}.tooltip-row--sub{padding-left:1.1rem}@media (width<=600px){.form-grid{grid-template-columns:1fr}.app-main{padding:1rem .75rem 2rem}.card{padding:1rem}.compound-table{font-size:.78rem}.compound-cards-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}}
