:root{--clr-primary: #2563eb;--clr-primary-hover: #1d4ed8;--clr-primary-light: #dbeafe;--clr-danger: #dc2626;--clr-danger-hover: #b91c1c;--clr-danger-light: #fee2e2;--clr-success: #16a34a;--clr-success-light: #dcfce7;--clr-warning: #d97706;--clr-warning-light: #fef3c7;--clr-info: #0891b2;--clr-info-light: #cffafe;--clr-bg: #f1f5f9;--clr-surface: #ffffff;--clr-surface-2: #f8fafc;--clr-border: #e2e8f0;--clr-border-focus: #93c5fd;--clr-topbar: #1e293b;--clr-topbar-text: #f8fafc;--clr-topbar-link: #94a3b8;--clr-topbar-active: #f8fafc;--clr-sidebar: #ffffff;--clr-text: #0f172a;--clr-text-2: #334155;--clr-muted: #64748b;--radius: 6px;--radius-lg: 10px;--shadow-sm: 0 1px 2px rgba(0,0,0,.06);--shadow: 0 1px 3px rgba(0,0,0,.08), 0 1px 2px rgba(0,0,0,.05);--shadow-md: 0 4px 6px -1px rgba(0,0,0,.1), 0 2px 4px -2px rgba(0,0,0,.06);--shadow-lg: 0 10px 15px -3px rgba(0,0,0,.1), 0 4px 6px -4px rgba(0,0,0,.06);--topbar-h: 52px;--sidebar-w: 288px;--content-max: 1400px;--font: system-ui, "Segoe UI", Roboto, -apple-system, sans-serif;--font-mono: "Cascadia Code", "Fira Code", Consolas, monospace;--accent: var(--clr-primary)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font);font-size:14px;color:var(--clr-text);background:var(--clr-bg);line-height:1.5}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:inherit;font-size:inherit}input,select,textarea{font-family:inherit;font-size:inherit}.topbar{position:fixed;top:0;left:0;right:0;z-index:100;height:var(--topbar-h);background:var(--clr-topbar);color:var(--clr-topbar-text);display:flex;align-items:center;gap:0;padding:0 1rem;box-shadow:0 1px 4px #0000004d}.topbar__brand{font-size:15px;font-weight:700;color:var(--clr-topbar-text);white-space:nowrap;padding-right:1.5rem;border-right:1px solid rgba(255,255,255,.12);margin-right:.5rem;letter-spacing:-.01em}.topbar__brand span{color:#60a5fa}.topbar__nav{display:flex;align-items:stretch;height:100%;flex:1;gap:0;overflow-x:auto}.topbar__nav a{display:flex;align-items:center;padding:0 1rem;color:var(--clr-topbar-link);font-size:13.5px;font-weight:500;border-bottom:2px solid transparent;transition:color .15s,border-color .15s;white-space:nowrap}.topbar__nav a:hover{color:var(--clr-topbar-text)}.topbar__nav a.active{color:var(--clr-topbar-text);border-bottom-color:#60a5fa}.topbar__actions{display:flex;align-items:center;gap:.75rem;margin-left:auto;padding-left:1rem;border-left:1px solid rgba(255,255,255,.12)}.topbar__user{font-size:12.5px;color:var(--clr-topbar-link)}#login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1e293b,#1e3a5f 50%,#f1f5f9 50%);padding:2rem}#login-screen[hidden],#app-shell[hidden]{display:none!important}.app-layout{display:flex;padding-top:var(--topbar-h);min-height:100vh}.sidebar{width:var(--sidebar-w);min-width:var(--sidebar-w);background:var(--clr-sidebar);border-right:1px solid var(--clr-border);display:flex;flex-direction:column;height:calc(100vh - var(--topbar-h));position:sticky;top:var(--topbar-h);overflow:hidden}.sidebar__header{padding:.75rem 1rem;border-bottom:1px solid var(--clr-border);display:flex;flex-direction:column;gap:.5rem}.sidebar__header h3{font-size:13px;font-weight:600;color:var(--clr-muted);text-transform:uppercase;letter-spacing:.05em}.sidebar__search{width:100%;padding:.4rem .65rem;border:1px solid var(--clr-border);border-radius:var(--radius);font-size:13px;background:var(--clr-surface-2);color:var(--clr-text);outline:none;transition:border-color .15s}.sidebar__search:focus{border-color:var(--clr-border-focus);background:var(--clr-surface)}.sidebar__list{overflow-y:auto;flex:1}.sidebar__item{padding:.65rem 1rem;border-bottom:1px solid var(--clr-border);cursor:pointer;transition:background .1s;display:flex;flex-direction:column;gap:.2rem}.sidebar__item:hover{background:var(--clr-surface-2)}.sidebar__item.active{background:var(--clr-primary-light);border-left:3px solid var(--clr-primary);padding-left:calc(1rem - 3px)}.sidebar__item__title{font-size:13.5px;font-weight:500;color:var(--clr-text)}.sidebar__item__sub{font-size:11.5px;color:var(--clr-muted)}.sidebar__footer{padding:.75rem 1rem;border-top:1px solid var(--clr-border)}.main-content{flex:1;overflow-y:auto;padding:1.25rem;max-width:calc(var(--content-max) - var(--sidebar-w))}.main-content.full{max-width:100%}.main-content.narrow{max-width:900px;margin:0 auto}.page-split{display:flex;flex:1}.page-full{flex:1;padding:1.25rem;max-width:var(--content-max);margin:0 auto;width:100%}.card{background:var(--clr-surface);border:1px solid var(--clr-border);border-radius:var(--radius-lg);box-shadow:var(--shadow);overflow:hidden}.card+.card{margin-top:1rem}.card__header{padding:.875rem 1.25rem;border-bottom:1px solid var(--clr-border);display:flex;align-items:center;justify-content:space-between;gap:.75rem;background:var(--clr-surface-2)}.card__header h2{font-size:15px;font-weight:600}.card__header h3{font-size:14px;font-weight:600}.card__body{padding:1.25rem}.card__footer{padding:.875rem 1.25rem;border-top:1px solid var(--clr-border);background:var(--clr-surface-2);display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;gap:.4rem;padding:.45rem .9rem;border:none;border-radius:var(--radius);font-size:13.5px;font-weight:500;background:var(--clr-primary);color:#fff;cursor:pointer;white-space:nowrap;transition:background .15s,box-shadow .15s;line-height:1.4}.btn:hover{background:var(--clr-primary-hover)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.secondary{background:var(--clr-surface);color:var(--clr-text-2);border:1px solid var(--clr-border);box-shadow:var(--shadow-sm)}.btn.secondary:hover{background:var(--clr-surface-2);border-color:#cbd5e1}.btn.danger{background:var(--clr-danger)}.btn.danger:hover{background:var(--clr-danger-hover)}.btn.ghost{background:transparent;color:var(--clr-muted)}.btn.ghost:hover{background:var(--clr-surface-2);color:var(--clr-text-2)}.btn.sm{padding:.3rem .6rem;font-size:12.5px}.btn.lg{padding:.6rem 1.25rem;font-size:14.5px}.btn.icon{padding:.4rem;min-width:30px;justify-content:center}.form-group{display:flex;flex-direction:column;gap:.3rem}.form-group label,label{font-size:12.5px;font-weight:500;color:var(--clr-text-2)}.form-row{display:flex;gap:1rem;flex-wrap:wrap}.form-row .form-group{flex:1;min-width:120px}input[type=text],input[type=number],input[type=password],input[type=email],select,textarea{width:100%;padding:.45rem .7rem;border:1px solid var(--clr-border);border-radius:var(--radius);font-size:13.5px;color:var(--clr-text);background:var(--clr-surface);outline:none;transition:border-color .15s,box-shadow .15s}input:focus,select:focus,textarea:focus{border-color:var(--clr-border-focus);box-shadow:0 0 0 3px #2563eb1a}input[type=number]{-moz-appearance:textfield}input.sm,select.sm{padding:.3rem .5rem;font-size:12.5px}textarea{resize:vertical;min-height:80px;font-family:var(--font-mono);font-size:12.5px}input:read-only{background:var(--clr-surface-2);color:var(--clr-muted)}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th{padding:.6rem .75rem;text-align:left;font-size:12px;font-weight:600;color:var(--clr-muted);text-transform:uppercase;letter-spacing:.04em;background:var(--clr-surface-2);border-bottom:1px solid var(--clr-border);white-space:nowrap;position:sticky;top:0;z-index:1}td{padding:.55rem .75rem;border-bottom:1px solid var(--clr-border);font-size:13.5px;vertical-align:middle}tr:last-child td{border-bottom:none}tbody tr:hover td{background:var(--clr-surface-2)}td input,td select{padding:.25rem .4rem;font-size:13px;border-radius:4px;width:100%}.col-num{width:60px;text-align:right;font-variant-numeric:tabular-nums}.col-action{width:40px;text-align:center}.col-sm{width:80px}.col-md{width:120px}.oxide-panel{background:var(--clr-surface-2);border:1px solid var(--clr-border);border-radius:var(--radius-lg);overflow:hidden}.oxide-panel__header{padding:.65rem 1rem;border-bottom:1px solid var(--clr-border);display:flex;align-items:center;justify-content:space-between;background:var(--clr-surface)}.oxide-panel__header h4{font-size:13px;font-weight:600;color:var(--clr-text-2)}.oxide-panel__status{font-size:12px;display:flex;align-items:center;gap:.4rem}.oxide-panel__body{padding:.75rem 1rem}.kpi-section{margin-bottom:.75rem}.kpi-section__title{font-size:11px;font-weight:600;color:var(--clr-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.4rem}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:.4rem}.kpi-tile{background:var(--clr-surface);border:1px solid var(--clr-border);border-radius:var(--radius);padding:.5rem .6rem;display:flex;flex-direction:column;gap:.15rem}.kpi-tile.ok{border-left:3px solid var(--clr-success)}.kpi-tile.warn{border-left:3px solid var(--clr-warning)}.kpi-tile.bad{border-left:3px solid var(--clr-danger)}.kpi-tile__label{font-size:10.5px;color:var(--clr-muted);font-weight:500}.kpi-tile__value{font-size:14px;font-weight:700;color:var(--clr-text);font-variant-numeric:tabular-nums}.kpi-tile.ok .kpi-tile__value{color:var(--clr-success)}.kpi-tile.warn .kpi-tile__value{color:var(--clr-warning)}.kpi-tile.bad .kpi-tile__value{color:var(--clr-danger)}.kpi-row{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:.5rem}.kpi-badge{background:var(--clr-surface);border:1px solid var(--clr-border);border-radius:var(--radius);padding:.35rem .7rem;display:flex;align-items:center;gap:.4rem;font-size:12.5px}.kpi-badge__label{color:var(--clr-muted);font-weight:500}.kpi-badge__value{font-weight:700;color:var(--clr-text);font-variant-numeric:tabular-nums}.kpi-badge.ok .kpi-badge__value{color:var(--clr-success)}.kpi-badge.warn .kpi-badge__value{color:var(--clr-warning)}.kpi-badge.bad .kpi-badge__value{color:var(--clr-danger)}.badge{display:inline-block;padding:.15rem .5rem;border-radius:999px;font-size:11.5px;font-weight:600;background:var(--clr-surface-2);color:var(--clr-muted);border:1px solid var(--clr-border)}.badge.blue{background:var(--clr-primary-light);color:var(--clr-primary);border-color:#bfdbfe}.badge.green{background:var(--clr-success-light);color:var(--clr-success);border-color:#bbf7d0}.badge.orange{background:var(--clr-warning-light);color:var(--clr-warning);border-color:#fde68a}.badge.red{background:var(--clr-danger-light);color:var(--clr-danger);border-color:#fecaca}.badge.cyan{background:var(--clr-info-light);color:var(--clr-info);border-color:#a5f3fc}.cat-sand{background:#fef9c3;color:#a16207;border-color:#fde68a}.cat-soda{background:#ede9fe;color:#6d28d9;border-color:#ddd6fe}.cat-kalk,.cat-dolomit{background:#f0fdf4;color:#15803d;border-color:#bbf7d0}.cat-feldspat{background:#fff7ed;color:#c2410c;border-color:#fed7aa}.cat-cullet{background:#e0f2fe;color:#0369a1;border-color:#bae6fd}.cat-sonstige{background:var(--clr-surface-2);color:var(--clr-muted);border-color:var(--clr-border)}.ing-table-wrap{overflow-x:auto;border-radius:var(--radius);border:1px solid var(--clr-border)}.ing-table{width:100%;border-collapse:collapse}.ing-table th{padding:.5rem .65rem;font-size:11px;background:var(--clr-surface-2);position:sticky;top:0;z-index:1}.ing-table td{padding:.3rem .4rem;border-bottom:1px solid var(--clr-border);vertical-align:middle}.ing-table tr:last-child td{border-bottom:none}.ing-table tbody tr:hover td{background:#f1f5f999}.ing-table .rohstoff-select{min-width:140px}.ing-table input[type=number]{max-width:90px}.ing-table .col-calc{color:var(--clr-muted);font-size:12.5px;font-variant-numeric:tabular-nums;min-width:70px}.ing-table .row-drag{cursor:grab;color:var(--clr-muted);font-size:16px}.toast-container{position:fixed;bottom:1.25rem;right:1.25rem;z-index:9999;display:flex;flex-direction:column;gap:.5rem;pointer-events:none}.toast{background:var(--clr-text);color:#fff;padding:.65rem 1rem;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);font-size:13.5px;font-weight:500;pointer-events:all;display:flex;align-items:center;gap:.6rem;min-width:240px;max-width:380px;animation:toast-in .2s ease}.toast.success{background:var(--clr-success)}.toast.error{background:var(--clr-danger)}.toast.info{background:var(--clr-info)}.toast.warning{background:var(--clr-warning)}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)}}.spinner{display:inline-block;width:18px;height:18px;border:2px solid var(--clr-border);border-top-color:var(--clr-primary);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-state{display:flex;align-items:center;gap:.75rem;padding:2rem;color:var(--clr-muted)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem 2rem;text-align:center;color:var(--clr-muted)}.empty-state__icon{font-size:2.5rem;margin-bottom:1rem;opacity:.4}.empty-state__title{font-size:15px;font-weight:600;color:var(--clr-text-2);margin-bottom:.35rem}.empty-state__sub{font-size:13.5px}.divider{border:none;border-top:1px solid var(--clr-border);margin:1rem 0}.text-muted{color:var(--clr-muted)}.text-sm{font-size:12.5px}.text-right{text-align:right}.mono{font-family:var(--font-mono);font-size:12.5px}.gap-row{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.ml-auto{margin-left:auto}.hidden{display:none!important}.login-card{background:var(--clr-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:2.5rem 2rem;width:100%;max-width:380px}.login-card h2{font-size:1.4rem;margin-bottom:.25rem}.login-card .subtitle{color:var(--clr-muted);font-size:13.5px;margin-bottom:1.5rem}.login-card .form-group+.form-group{margin-top:.75rem}.login-card .btn{width:100%;margin-top:1.25rem;padding:.6rem 1rem;font-size:14.5px}.login-card .err{margin-top:.75rem;padding:.5rem .75rem;background:var(--clr-danger-light);color:var(--clr-danger);border-radius:var(--radius);font-size:13px}.login__lang{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem;font-size:13px;color:var(--clr-muted)}.login__lang label{margin:0;font-weight:500;color:var(--clr-text-2)}.lang-select{background:var(--clr-surface);color:var(--clr-text);border:1px solid var(--clr-border);border-radius:var(--radius);padding:.25rem .4rem;min-width:4.5rem}.topbar__lang{display:flex;align-items:center;gap:.35rem;margin-right:.5rem;font-size:12px;color:var(--clr-topbar-link)}.topbar__lang span{white-space:nowrap}.topbar .lang-select{background:#ffffff1f;color:var(--clr-topbar-text);border-color:#ffffff38}.accordion{border:1px solid var(--clr-border);border-radius:var(--radius);overflow:hidden}.accordion__trigger{width:100%;padding:.7rem 1rem;background:var(--clr-surface-2);display:flex;align-items:center;justify-content:space-between;font-weight:500;font-size:13.5px;border:none;cursor:pointer;transition:background .1s}.accordion__trigger:hover{background:#f0f4f8}.accordion__trigger .chevron{transition:transform .2s;display:inline-block}.accordion__trigger[aria-expanded=true] .chevron{transform:rotate(180deg)}.accordion__body{display:none;padding:1rem;border-top:1px solid var(--clr-border)}.accordion__body.open{display:block}.settings-section{margin-bottom:1.5rem}.settings-section h3{font-size:13px;font-weight:600;color:var(--clr-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.75rem}.settings-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.75rem}.oxide-checklist{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:.4rem}.oxide-checklist label{display:flex;align-items:center;gap:.4rem;font-size:13px;font-weight:400;cursor:pointer}.oxide-checklist input[type=checkbox]{width:auto}@media print{.topbar,.sidebar,.no-print,.toast-container,.btn{display:none!important}.app-layout{padding-top:0}.main-content{padding:0;max-width:100%}.card{box-shadow:none;border:1px solid #ccc;page-break-inside:avoid}body{font-size:12px}td,th{padding:.3rem .5rem}.print-header{display:block!important}}.print-header{display:none}@media(max-width:768px){:root{--sidebar-w: 100%}.page-split{flex-direction:column}.sidebar{height:auto;position:static;width:100%;border-right:none;border-bottom:1px solid var(--clr-border);max-height:40vh}.main-content{max-width:100%}.form-row{flex-direction:column}.topbar__brand{display:none}}.view-toggle{display:inline-flex;background:var(--clr-surface-2);border:1px solid var(--clr-border);border-radius:var(--radius);overflow:hidden}.view-toggle__btn{padding:.35rem .7rem;font-size:12.5px;font-weight:500;background:transparent;border:none;color:var(--clr-muted);cursor:pointer;transition:background .15s,color .15s}.view-toggle__btn:hover{background:var(--clr-surface);color:var(--clr-text-2)}.view-toggle__btn.active{background:var(--clr-primary);color:#fff}.waage-kpi-row{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem}.waage-kpi{background:var(--clr-surface);border:1px solid var(--clr-border);border-radius:var(--radius);padding:.5rem .85rem;display:flex;align-items:center;gap:.5rem;font-size:12.5px}.waage-kpi__label{color:var(--clr-muted);font-weight:500}.waage-kpi__value{font-weight:700;color:var(--clr-text);font-variant-numeric:tabular-nums}.waage-kpi__unit{color:var(--clr-muted);font-size:11px;margin-left:.1rem}.waage-kpi.warn{border-left:3px solid var(--clr-warning)}.waage-kpi.warn .waage-kpi__value{color:var(--clr-warning)}.waage-kpi.bad{border-left:3px solid var(--clr-danger)}.waage-kpi.bad .waage-kpi__value{color:var(--clr-danger)}.waage-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1rem}.waage-card{background:var(--clr-surface);border:1px solid var(--clr-border);border-radius:var(--radius-lg);box-shadow:var(--shadow);overflow:hidden;display:flex;flex-direction:column;transition:box-shadow .15s,transform .1s}.waage-card:hover{box-shadow:var(--shadow-md)}.waage-card--inactive{opacity:.6;background:var(--clr-surface-2)}.waage-card__accent{height:4px;background:var(--waag-accent, var(--clr-border))}.waage-card__head{padding:.875rem 1rem;display:flex;align-items:flex-start;gap:.75rem;border-bottom:1px solid var(--clr-border)}.waage-card__icon{font-size:1.6rem;line-height:1;flex-shrink:0}.waage-card__info{flex:1;min-width:0}.waage-card__name{font-size:14px;font-weight:600;color:var(--clr-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.waage-card__meta{font-size:12px;color:var(--clr-muted);margin-top:.15rem;display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}.waage-card__actions{display:flex;gap:.25rem;flex-shrink:0}.waage-card__body{padding:.75rem 1rem;flex:1;display:flex;flex-direction:column;gap:.6rem}.waage-card__specs{display:flex;gap:.6rem;flex-wrap:wrap;font-size:12px}.waage-card__spec{background:var(--clr-surface-2);border:1px solid var(--clr-border);border-radius:var(--radius);padding:.25rem .5rem;color:var(--clr-text-2)}.waage-card__spec strong{font-weight:600;color:var(--clr-text)}.waage-card__silos{display:flex;flex-direction:column;gap:.35rem}.waage-card__silos-label{font-size:11px;font-weight:600;color:var(--clr-muted);text-transform:uppercase;letter-spacing:.04em}.waage-card__silos-list{display:flex;flex-wrap:wrap;gap:.35rem}.waage-card__silo-chip{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;background:var(--clr-primary-light);color:var(--clr-primary);border:1px solid #bfdbfe;border-radius:999px;font-size:11.5px;font-weight:500}.waage-card__silo-chip .nr{font-weight:700;opacity:.8}.waage-card__silo-chip .name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:140px}.waage-card__footer{padding:.6rem 1rem;border-top:1px solid var(--clr-border);background:var(--clr-surface-2);display:flex;justify-content:flex-end}.waage-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem 2rem;text-align:center;color:var(--clr-muted)}.waage-empty__icon{font-size:3rem;margin-bottom:1rem;opacity:.5}.waage-empty__title{font-size:16px;font-weight:600;color:var(--clr-text-2);margin-bottom:.35rem}.waage-empty__sub{font-size:13.5px;max-width:320px}.color-input-row{display:flex;align-items:center;gap:.6rem}.color-input-row input[type=color]{width:44px;height:32px;padding:2px;border:1px solid var(--clr-border);border-radius:var(--radius);cursor:pointer;background:var(--clr-surface)}.color-input-row .hex{font-family:var(--font-mono);font-size:12.5px;color:var(--clr-muted)}@media(max-width:768px){.waage-grid{grid-template-columns:1fr}}@media(min-width:769px)and (max-width:1100px){.waage-grid{grid-template-columns:repeat(2,1fr)}}
