:root{--navy:#1e3a5f;--navy-dark:#152c4a;--navy-light:#2a4f7c;--accent:#3b82f6;--accent-light:#eff6ff;--success:#16a34a;--success-bg:#f0fdf4;--warn:#d97706;--warn-bg:#fffbeb;--danger:#dc2626;--danger-bg:#fef2f2;--neutral:#6b7280;--bg:#f0f4f8;--surface:#fff;--border:#e2e8f0;--text:#1e293b;--text-light:#64748b;--sidebar-w:250px;--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:32px;--radius-xs:4px;--radius-sm:6px;--radius-md:8px;--radius-lg:10px;--radius-xl:12px;--radius-pill:20px;--z-sticky:50;--z-bottom-nav:90;--z-sidebar:100;--z-dropdown:200;--z-modal:500;--z-toast:1000;--z-tooltip:9000;--z-ctx-menu:9100;--z-popup:9200;--z-panel:9500;--z-login:9999;--z-top:10000;--font-sans:-apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif;}*{box-sizing:border-box;margin:0;padding:0;}*:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px;}*:focus:not(:focus-visible){outline:none;}body{font-family:var(--font-sans);background:var(--bg);color:var(--text);font-size:14px;line-height:1.5;}a{text-decoration:none;color:inherit;cursor:pointer;}.skip-link{position:absolute;top:-40px;left:0;background:var(--navy);color:#fff;padding:8px 16px;z-index:var(--z-top);font-size:14px;font-weight:600;border-radius:0 0 var(--radius-sm) 0;transition:top 0.2s;}.skip-link:focus{top: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;}.layout{display:flex;min-height:100vh;}.sidebar{width:var(--sidebar-w);background:var(--navy);color:#fff;display:flex;flex-direction:column;position:fixed;top:0;left:0;height:100vh;overflow-y:auto;z-index:var(--z-sidebar);}.sidebar-logo{padding:18px 16px 14px;border-bottom:1px solid rgba(255,255,255,0.1);}.sidebar-logo .brand{font-size:17px;font-weight:700;letter-spacing:0.5px;}.sidebar-logo .sub{font-size:10px;color:rgba(255,255,255,0.4);margin-top:2px;text-transform:uppercase;letter-spacing:1px;}.nav-section{padding:10px 0 4px;}.nav-label{font-size:10px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;color:rgba(255,255,255,0.38);padding:0 14px 5px;}.nav-group-label{font-size:10px;font-weight:700;letter-spacing:1px;text-transform:uppercase;padding:8px 14px 3px;color:rgba(255,255,255,0.55);}.nav-item{display:flex;align-items:center;gap:8px;padding:7px 14px;cursor:pointer;transition:background 0.12s;font-size:12.5px;color:rgba(255,255,255,0.72);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-height:36px;}.nav-item:hover{background:rgba(255,255,255,0.08);color:#fff;}.nav-item:focus-visible{background:rgba(255,255,255,0.12);color:#fff;outline:2px solid var(--accent);outline-offset:-2px;}.nav-item.active{background:var(--accent);color:#fff;font-weight:500;}.nav-item .dot{width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,0.4);flex-shrink:0;}.nav-item.active .dot{background:#fff;}.nav-divider{height:1px;background:rgba(255,255,255,0.08);margin:4px 0;}.sidebar-actions{padding:8px 10px;display:flex;flex-direction:column;gap:5px;}.sidebar-btn{width:100%;padding:9px 10px;border-radius:var(--radius-sm);font-size:12px;font-weight:500;cursor:pointer;border:1px solid rgba(255,255,255,0.2);background:rgba(255,255,255,0.07);color:rgba(255,255,255,0.8);text-align:left;transition:all 0.15s;display:flex;align-items:center;gap:6px;min-height:40px;}.sidebar-btn:hover{background:rgba(255,255,255,0.14);color:#fff;border-color:rgba(255,255,255,0.35);}.supplier-search{padding:6px 10px;}.supplier-search input{width:100%;background:rgba(255,255,255,0.1);border:1px solid rgba(255,255,255,0.15);border-radius:6px;padding:6px 10px;color:#fff;font-size:12px;outline:none;}.supplier-search input::placeholder{color:rgba(255,255,255,0.38);}.supplier-search input:focus{border-color:var(--accent);background:rgba(255,255,255,0.15);}.search-group-label{color:rgba(255,255,255,0.45) !important;font-size:10px !important;text-transform:uppercase;letter-spacing:0.6px;padding:10px 14px 2px !important;margin:0;}.search-sub{margin-left:auto;font-size:10px;color:rgba(255,255,255,0.4);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:90px;}.main{margin-left:var(--sidebar-w);flex:1;display:flex;flex-direction:column;min-height:100vh;}.topbar{background:var(--surface);border-bottom:1px solid var(--border);padding:10px 20px;display:flex;align-items:center;gap:12px;position:sticky;top:0;z-index:var(--z-sticky);flex-wrap:nowrap;}.topbar-title-group{flex:0 0 auto;min-width:0;}.topbar-title{font-size:14px;font-weight:600;}.topbar-subtitle{font-size:11px;color:var(--text-light);line-height:1.3;display:none;}.topbar-subtitle:not(:empty){display:block;}.year-selector{display:flex;gap:5px;flex-wrap:wrap;align-items:center;flex:1 1 0;min-width:0;}.year-pills-desktop{display:flex;gap:5px;flex-wrap:wrap;align-items:center;}.year-pill{padding:3px 9px;border-radius:20px;font-size:12px;font-weight:500;cursor:pointer;border:1px solid var(--border);background:var(--bg);color:var(--text-light);transition:all 0.12s;user-select:none;}.year-pill:focus-visible{outline:2px solid var(--accent);outline-offset:1px;}.year-pill.selected{background:var(--navy);border-color:var(--navy);color:#fff;}.year-pill:hover:not(.selected){border-color:var(--accent);color:var(--accent);}.year-filter-btn{display:none;align-items:center;gap:5px;padding:5px 10px;border-radius:20px;border:1px solid var(--border);background:var(--bg);color:var(--text);font-size:12px;font-weight:500;cursor:pointer;transition:all 0.12s;white-space:nowrap;}.year-filter-btn:hover,.year-filter-btn:focus-visible{border-color:var(--accent);color:var(--accent);}.year-filter-btn:focus-visible{outline:2px solid var(--accent);outline-offset:1px;}.year-filter-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;border-radius:9px;background:var(--navy);color:#fff;font-size:10px;font-weight:700;padding:0 5px;}.year-sheet-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.45);z-index:var(--z-modal);display:flex;align-items:flex-end;justify-content:center;opacity:0;pointer-events:none;transition:opacity 0.2s;}.year-sheet-overlay.open{opacity:1;pointer-events:all;}.year-sheet{background:var(--surface);border-radius:16px 16px 0 0;width:100%;max-width:420px;max-height:70vh;display:flex;flex-direction:column;transform:translateY(100%);transition:transform 0.28s ease;}.year-sheet-overlay.open .year-sheet{transform:translateY(0);}.year-sheet-handle{text-align:center;padding:10px 0 4px;cursor:pointer;}.year-sheet-handle span{display:inline-block;width:36px;height:4px;border-radius:2px;background:var(--border);}.year-sheet-header{display:flex;align-items:center;justify-content:space-between;padding:4px 20px 12px;}.year-sheet-header h3{font-size:16px;font-weight:600;margin:0;}.year-sheet-close{background:none;border:none;font-size:22px;color:var(--text-light);cursor:pointer;padding:4px 8px;border-radius:6px;line-height:1;min-width:36px;min-height:36px;display:inline-flex;align-items:center;justify-content:center;}.year-sheet-close:hover,.year-sheet-close:focus-visible{background:var(--bg);color:var(--text);}.year-sheet-list{padding:0 16px;overflow-y:auto;flex:1;}.year-sheet-option{display:flex;align-items:center;gap:12px;padding:12px 8px;border-bottom:1px solid var(--border);cursor:pointer;border-radius:6px;transition:background 0.1s;}.year-sheet-option:last-child{border-bottom:none;}.year-sheet-option:hover,.year-sheet-option:focus-visible{background:var(--accent-light);}.year-sheet-option:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;}.year-sheet-option input{position:absolute;opacity:0;pointer-events:none;}.year-sheet-check{width:22px;height:22px;border-radius:6px;border:2px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:14px;color:transparent;transition:all 0.12s;flex-shrink:0;}.year-sheet-option.selected .year-sheet-check{background:var(--navy);border-color:var(--navy);color:#fff;}.year-sheet-label{font-size:15px;font-weight:500;}.year-sheet-footer{padding:12px 20px 20px;border-top:1px solid var(--border);}.year-sheet-done{width:100%;padding:12px;font-size:14px;border-radius:8px;}.topbar-actions{display:flex;gap:6px;flex-shrink:0;}.btn{padding:6px 13px;border-radius:var(--radius-sm);font-size:12.5px;font-weight:500;cursor:pointer;border:none;transition:all 0.15s;display:inline-flex;align-items:center;gap:5px;min-height:36px;}.btn-ghost{background:transparent;border:1px solid var(--border);color:var(--text-light);}.btn-ghost:hover,.btn-ghost:focus-visible{border-color:var(--accent);color:var(--accent);}.btn-primary{background:var(--navy);color:#fff;}.btn-primary:hover,.btn-primary:focus-visible{background:var(--navy-light);}.btn-success{background:var(--success);color:#fff;}.btn-success:hover,.btn-success:focus-visible{background:#15803d;}.btn-sm{padding:4px 9px;font-size:11.5px;}.btn-warn{background:var(--warn);color:#fff;}.btn-warn:hover{background:#b45309;}.content{padding:20px 24px;flex:1;}.page-header{margin-bottom:16px;}.page-header h1{font-size:20px;font-weight:700;}.page-header p{font-size:12.5px;color:var(--text-light);margin-top:3px;}.stats-bar{display:flex;gap:12px;margin-bottom:20px;flex-wrap:wrap;}.stat-box{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:12px 16px;flex:1;min-width:120px;}.stat-box .label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:0.8px;color:var(--text-light);margin-bottom:5px;}.stat-box .value{font-size:21px;font-weight:700;}.stat-box .sub{font-size:11px;color:var(--text-light);margin-top:1px;}.cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(255px,1fr));gap:14px;margin-bottom:20px;}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:14px;cursor:pointer;transition:all 0.15s;}.card:hover,.card:focus-visible{border-color:var(--accent);box-shadow:0 2px 12px rgba(59,130,246,0.12);}.card-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.8px;margin-bottom:10px;}.card-title.fs{color:#2563eb;}.card-title.hw{color:#7c3aed;}.stat-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;gap:6px;}.stat-label{font-size:12px;color:var(--text-light);}.stat-value{font-size:12.5px;font-weight:600;min-width:80px;text-align:right;}.progress-bar{height:4px;background:var(--border);border-radius:2px;overflow:hidden;flex:1;margin:0 6px;}.progress-fill{height:100%;border-radius:2px;transition:width 0.3s;}.fill-ok{background:var(--accent);}.fill-over{background:var(--warn);}.fill-danger{background:var(--danger);}.fill-sym{font-size:11px;margin-right:2px;}.fill-sym.fill-ok{color:var(--accent);}.fill-sym.fill-over{color:var(--warn);}.fill-sym.fill-danger{color:var(--danger);}.monthly-dashboard{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;margin-bottom:20px;}.dashboard-header{padding:10px 14px;border-bottom:1px solid var(--border);background:#fafbfc;}.dashboard-header h3{font-size:13.5px;font-weight:600;margin:0;}.dashboard-content{padding:16px;min-height:240px;display:flex;flex-direction:column;}.chart-container{display:flex;align-items:flex-end;justify-content:space-around;height:200px;gap:6px;}.bar-group{display:flex;flex-direction:column;align-items:center;flex:1;min-width:28px;}.stacked-bar{width:100%;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:160px;border-radius:3px 3px 0 0;position:relative;overflow:visible;}.bar-segment{width:100%;transition:opacity 0.2s;position:relative;}.bar-label{font-size:9px;font-weight:600;margin-top:4px;color:var(--text-light);text-align:center;}.bar-value{font-size:9px;color:var(--text-light);margin-top:2px;}.legend{display:flex;flex-wrap:wrap;gap:12px;margin-top:12px;padding-top:12px;border-top:1px solid var(--border);}.legend-item{display:flex;align-items:center;gap:6px;font-size:11px;}.legend-color{width:12px;height:12px;border-radius:2px;}.no-data-msg{text-align:center;color:var(--text-light);padding:20px;}.table-wrapper{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;margin-bottom:20px;}.table-header{padding:10px 14px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border);background:#fafbfc;}.table-header h3{font-size:13.5px;font-weight:600;}.tbl{width:100%;border-collapse:collapse;font-size:12.5px;}.tbl th{padding:7px 9px;text-align:right;font-size:10.5px;font-weight:600;color:var(--text-light);text-transform:uppercase;letter-spacing:0.5px;border-bottom:1px solid var(--border);background:#fafbfc;white-space:nowrap;}.tbl th.left{text-align:left;}.tbl th.yh{text-align:center;background:#f1f5f9;border-left:2px solid var(--border);}.tbl td{padding:6px 9px;border-bottom:1px solid #f1f5f9;text-align:right;vertical-align:middle;}.tbl td.left{text-align:left;}.tbl td.yl{border-left:2px solid #e2e8f0;}.tbl tr:last-child td{border-bottom:none;}.tbl tr:hover td:not(.no-hover){background:#f8fafc;}.tbl tr.total-row td{font-weight:700;background:#f1f5f9;border-top:1.5px solid #cbd5e1;}.tbl tr.total-row:hover td{background:#e9eef5;}.tbl tr.grand-total td{font-weight:700;background:var(--navy);color:#fff;border-top:2px solid var(--navy-dark);font-size:13px;}.tbl tr.grand-total:hover td{background:var(--navy-light);}.tbl tr.cat-row td{font-weight:700;color:#fff;background:var(--navy-dark);border-top:2.5px solid var(--navy);font-size:13.5px;padding:10px 12px;letter-spacing:0.5px;text-transform:uppercase;text-shadow:0 1px 2px rgba(0,0,0,0.2);}.tbl tr.cat-row:hover td{background:var(--navy);}.tbl tr.cat-row .del-btn{color:rgba(255,255,255,0.5);}.tbl tr.cat-row .del-btn:hover{color:#fff;background:var(--danger);}.tbl tr.cat-row[draggable='true']{cursor:grab;}.tbl tr.cat-row[draggable='true']:active{cursor:grabbing;}.tbl tr.cat-row .cat-drag-handle{display:inline-block;cursor:grab;opacity:0.5;margin-right:6px;font-size:14px;vertical-align:middle;user-select:none;transition:opacity 0.15s;}.tbl tr.cat-row:hover .cat-drag-handle{opacity:0.9;}.tbl tr.cat-row.cat-dragging{opacity:0.4;background:#1a2e4a !important;}.tbl tr.cat-row.cat-dragging td{background:#1a2e4a !important;}.tbl tr.cat-row.cat-drop-above td{box-shadow:inset 0 3px 0 0 var(--accent) !important;}.tbl tr.cat-row.cat-drop-below td{box-shadow:inset 0 -3px 0 0 var(--accent) !important;}.tbl tr.add-row td{background:#fafbfc;border-top:none;}.tbl tr.add-row:hover td{background:#f0f4f8;}.diff-pos{color:var(--warn);font-weight:600;}.diff-neg{color:var(--neutral);}.diff-zero{color:var(--text-light);}.sortable{cursor:pointer;user-select:none;position:relative;}.sortable:hover{color:var(--accent);background:#e8f0fe !important;}.sortable:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;color:var(--accent);background:#e8f0fe !important;}.sort-arrow{font-size:9px;margin-left:2px;opacity:0.5;}.sort-active .sort-arrow{opacity:1;color:var(--accent);}.ec{cursor:text;position:relative;min-width:52px;}.ec:hover,.ec:focus-visible{background:var(--accent-light) !important;outline:2px solid var(--accent);outline-offset:-1px;}.ec:hover::after,.ec:focus-visible::after{content:'\270E';position:absolute;top:2px;right:3px;font-size:9px;color:var(--accent);opacity:0.6;}.ec.modified{color:var(--navy);font-weight:600;}.ec-prod{cursor:text;min-width:90px;}.ec-prod:hover,.ec-prod:focus-visible{background:var(--accent-light) !important;outline:2px solid var(--accent);outline-offset:-1px;}.ec-prod.ec-prod-blank{color:transparent;}.ec-prod.ec-prod-blank::before{content:'·';color:var(--border);font-weight:400;opacity:0.4;}.ec-prod.ec-prod-blank:hover::before,.ec-prod.ec-prod-blank:focus-visible::before{content:'+';color:var(--accent);opacity:1;}.ec-kat{cursor:text;font-weight:700 !important;color:#fff !important;}.ec-kat:hover,.ec-kat:focus-visible{background:var(--navy-light) !important;outline:2px solid rgba(255,255,255,0.6);outline-offset:-1px;}.wg-date-cell{text-align:center !important;font-weight:400;white-space:nowrap;background:var(--navy-dark) !important;padding:8px 4px !important;}.wg-date-badge{display:inline-block;font-size:11px;font-weight:400;padding:1px 7px;margin-left:4px;border-radius:3px;background:rgba(255,255,255,0.15);cursor:pointer;color:rgba(255,255,255,0.85);text-transform:none;letter-spacing:0;transition:background 0.12s;vertical-align:middle;}.wg-date-badge.modified{background:rgba(251,191,36,0.35);color:#fff;}.wg-date-badge:hover{background:rgba(255,255,255,0.3);}.edit-inp{width:100%;text-align:right;border:1.5px solid var(--accent);border-radius:4px;padding:2px 5px;font-size:12.5px;outline:none;background:#fff;box-shadow:0 0 0 3px rgba(59,130,246,0.15);}.edit-inp-text{width:100%;text-align:left;border:1.5px solid var(--accent);border-radius:4px;padding:2px 5px;font-size:12.5px;outline:none;background:#fff;box-shadow:0 0 0 3px rgba(59,130,246,0.15);}.add-prod-btn{background:none;border:1px dashed var(--border);border-radius:5px;padding:8px 10px;font-size:11.5px;color:var(--text-light);cursor:pointer;transition:all 0.12s;width:100%;min-height:36px;}.add-prod-btn:hover,.add-prod-btn:focus-visible{border-color:var(--accent);color:var(--accent);background:var(--accent-light);}.del-cell{text-align:center;width:48px;padding:0 4px !important;}.del-btn{background:none;border:none;color:var(--text-light);font-size:16px;cursor:pointer;padding:6px 10px;border-radius:4px;opacity:0.4;transition:all 0.15s;line-height:1;min-width:36px;min-height:36px;display:inline-flex;align-items:center;justify-content:center;}.del-btn:hover{opacity:1;color:var(--danger);background:var(--danger-bg);}.del-btn:focus-visible{opacity:1;outline:2px solid var(--accent);outline-offset:1px;}.sup-header{display:flex;align-items:center;gap:12px;margin-bottom:16px;}.inline-rename-input{font-size:19px;font-weight:700;font-family:inherit;border:1px solid var(--navy);border-radius:6px;padding:2px 8px;outline:none;background:var(--surface);color:var(--text);width:280px;max-width:60vw;}.sup-avatar{width:38px;height:38px;border-radius:8px;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:15px;flex-shrink:0;}.season-tabs{display:flex;gap:2px;background:var(--bg);border-radius:8px;padding:3px;width:fit-content;}.season-tab{padding:5px 15px;border-radius:6px;font-size:12.5px;font-weight:500;cursor:pointer;color:var(--text-light);transition:all 0.12s;min-height:36px;display:flex;align-items:center;justify-content:center;}.season-tab:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;}.season-tab.active{background:var(--surface);color:var(--text);box-shadow:0 1px 3px rgba(0,0,0,0.1);font-weight:600;}.sup-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;flex-wrap:wrap;gap:8px;}.undo-redo-bar{display:flex;gap:4px;}.undo-redo-bar button{padding:4px 10px;border-radius:5px;font-size:12px;border:1px solid var(--border);background:var(--surface);cursor:pointer;color:var(--text-light);transition:all 0.12s;}.undo-redo-bar button:hover:not(:disabled){border-color:var(--accent);color:var(--accent);}.undo-redo-bar button:disabled{opacity:0.35;cursor:not-allowed;}.sup-action-footer{display:flex;align-items:center;justify-content:center;gap:8px;padding:14px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);margin-top:16px;flex-wrap:wrap;}.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.45);z-index:var(--z-modal);display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity 0.18s;}.modal-overlay.open{opacity:1;pointer-events:all;}.modal{background:#fff;border-radius:var(--radius-xl);padding:22px;width:400px;max-width:92vw;box-shadow:0 20px 60px rgba(0,0,0,0.2);transform:scale(0.96);transition:transform 0.18s;}.modal-overlay.open .modal{transform:scale(1);}.modal h2{font-size:16px;font-weight:700;margin-bottom:5px;}.modal .modal-sub{font-size:12.5px;color:var(--text-light);margin-bottom:16px;}.form-row{margin-bottom:12px;}.form-row label{display:block;font-size:11.5px;font-weight:600;color:var(--text-light);margin-bottom:4px;text-transform:uppercase;letter-spacing:0.5px;}.form-row input,.form-row select{width:100%;padding:8px 11px;border:1px solid var(--border);border-radius:7px;font-size:13.5px;outline:none;transition:border 0.15s;}.form-row input:focus,.form-row select:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(59,130,246,0.1);}.form-row select[multiple]{height:88px;}.form-row .hint{font-size:11px;color:var(--text-light);margin-top:4px;}.modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:16px;}.prod-dropdown{position:absolute;top:100%;left:0;right:0;background:var(--surface);border:1px solid var(--border);border-radius:7px;box-shadow:0 8px 24px rgba(0,0,0,0.15);z-index:var(--z-dropdown);max-height:180px;overflow-y:auto;margin-top:2px;}.prod-dropdown-item{padding:7px 11px;font-size:13px;cursor:pointer;transition:background 0.08s;color:var(--text);}.prod-dropdown-item:hover,.prod-dropdown-item.highlighted{background:var(--accent-light);color:var(--accent);}.toast{position:fixed;bottom:20px;right:20px;background:var(--navy);color:#fff;padding:10px 16px;border-radius:var(--radius-md);font-size:13px;font-weight:500;z-index:var(--z-toast);opacity:0;transform:translateY(8px);transition:all 0.2s;pointer-events:none;}.toast.show{opacity:1;transform:translateY(0);}.tbl-scroll{overflow-x:auto;}.mobile-year-tabs{display:none;}.badge-new{display:inline-block;padding:1px 6px;border-radius:8px;font-size:10px;font-weight:600;background:#ecfdf5;color:#059669;border:1px solid #6ee7b7;margin-left:4px;}.badge-warn{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;font-size:9px;font-weight:700;background:#fbbf24;color:#78350f;margin-left:auto;flex-shrink:0;title:attr(data-title);}.missing-banner{background:var(--warn-bg);border:1px solid #fcd34d;border-radius:8px;padding:10px 14px;margin-bottom:14px;display:flex;align-items:flex-start;gap:8px;font-size:12.5px;color:#92400e;}.missing-banner .warn-icon{font-size:16px;flex-shrink:0;line-height:1;}.missing-banner .warn-text{flex:1;}.missing-banner .warn-title{font-weight:600;margin-bottom:2px;}.missing-banner ul{margin:4px 0 0 16px;padding:0;font-size:12px;color:#78350f;}.missing-banner li{margin-bottom:1px;}.empty{text-align:center;padding:40px;color:var(--text-light);}.ab-modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.5);z-index:calc(var(--z-modal)+100);display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity 0.18s;}.ab-modal-overlay.open{opacity:1;pointer-events:all;}.ab-modal{background:#fff;border-radius:14px;width:680px;max-width:95vw;max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px rgba(0,0,0,0.25);transform:scale(0.96);transition:transform 0.18s;}.ab-modal-overlay.open .ab-modal{transform:scale(1);}.ab-header{padding:18px 22px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;}.ab-header h2{font-size:17px;font-weight:700;margin:0;}.ab-close{width:32px;height:32px;border-radius:8px;border:none;background:var(--bg);cursor:pointer;font-size:18px;display:flex;align-items:center;justify-content:center;color:var(--text-light);}.ab-close:hover{background:var(--border);color:var(--text);}.ab-body{padding:22px;}.ab-dropzone{border:2px dashed var(--border);border-radius:12px;padding:40px 20px;text-align:center;transition:all 0.2s;cursor:pointer;background:var(--bg);}.ab-dropzone.dragover{border-color:var(--accent);background:var(--accent-light);}.ab-dropzone p{font-size:14px;color:var(--text-light);margin:0;}.ab-dropzone .icon{font-size:36px;margin-bottom:8px;display:block;}.ab-dropzone .hint{font-size:11.5px;color:var(--neutral);margin-top:6px;}.ab-files{margin-top:14px;}.ab-file{display:flex;align-items:center;gap:10px;padding:8px 12px;background:var(--bg);border-radius:8px;margin-bottom:6px;font-size:12.5px;}.ab-file .name{flex:1;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.ab-file .size{color:var(--text-light);font-size:11px;}.ab-file .status{font-size:11px;font-weight:600;}.ab-file .status.ok{color:var(--success);}.ab-file .status.err{color:var(--danger);}.ab-file .remove{cursor:pointer;color:var(--text-light);font-size:14px;padding:2px 6px;border-radius:4px;}.ab-file .remove:hover{background:var(--danger-bg);color:var(--danger);}.ab-step{display:none;}.ab-step.active{display:block;}.ab-steps-bar{display:flex;gap:4px;margin-bottom:16px;}.ab-steps-bar .step{flex:1;height:3px;border-radius:2px;background:var(--border);}.ab-steps-bar .step.done{background:var(--success);}.ab-steps-bar .step.current{background:var(--accent);}.ab-form{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px;}.ab-form .full{grid-column:1/-1;}.ab-form label{display:block;font-size:11px;font-weight:600;color:var(--text-light);text-transform:uppercase;letter-spacing:0.5px;margin-bottom:3px;}.ab-form input,.ab-form select{width:100%;padding:7px 10px;border:1px solid var(--border);border-radius:6px;font-size:13px;outline:none;}.ab-form input:focus,.ab-form select:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(59,130,246,0.1);}.ab-preview{margin-top:14px;max-height:200px;overflow:auto;background:var(--bg);border-radius:8px;padding:12px;font-size:11.5px;font-family:monospace;line-height:1.5;white-space:pre-wrap;}.ab-dup-warn{background:var(--warn-bg);border:1px solid #fcd34d;border-radius:8px;padding:10px 14px;margin-bottom:12px;font-size:12.5px;color:#92400e;}.ab-import-summary{background:var(--success-bg);border:1px solid #86efac;border-radius:8px;padding:14px;margin-top:12px;}.ab-import-summary h3{font-size:14px;font-weight:600;margin:0 0 8px;}.ab-import-summary .item{display:flex;justify-content:space-between;font-size:12.5px;padding:3px 0;border-bottom:1px solid #dcfce7;}.ab-actions{display:flex;gap:8px;justify-content:flex-end;padding:16px 22px;border-top:1px solid var(--border);}.save-indicator{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--text-light);padding:4px 10px;border-radius:20px;background:transparent;transition:all 0.3s;}.save-indicator .dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;transition:background 0.3s;}.save-indicator.saved .dot{background:#22c55e;}.save-indicator.saved{color:#16a34a;}.save-indicator.saving .dot{background:#3b82f6;animation:pulse 1s infinite;}.save-indicator.saving{color:#2563eb;}.save-indicator.offline .dot{background:#f59e0b;}.save-indicator.offline{color:#d97706;}.save-indicator.error .dot{background:#ef4444;}.save-indicator.error{color:#dc2626;}.save-indicator.conflict .dot{background:#ef4444;animation:pulse 1s infinite;}.save-indicator.conflict{color:#dc2626;font-weight:600;}.conflict-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.55);z-index:var(--z-top);display:flex;align-items:center;justify-content:center;}.conflict-dialog{background:#fff;border-radius:var(--radius-xl);padding:28px 32px;max-width:480px;width:90%;box-shadow:0 20px 60px rgba(0,0,0,0.3);text-align:center;}.conflict-dialog h3{margin:0 0 8px;font-size:18px;color:#dc2626;}.conflict-dialog p{margin:0 0 20px;color:#555;font-size:14px;line-height:1.5;}.conflict-dialog .conflict-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;}.conflict-dialog button{padding:10px 20px;border:none;border-radius:var(--radius-md);font-size:14px;font-weight:600;cursor:pointer;transition:background 0.2s;}.conflict-dialog .btn-reload{background:#3b82f6;color:#fff;}.conflict-dialog .btn-reload:hover{background:#2563eb;}.conflict-dialog .btn-force{background:#fee2e2;color:#dc2626;border:1px solid #fca5a5;}.conflict-dialog .btn-force:hover{background:#fecaca;}@keyframes pulse{0%,100%{opacity:1;}50%{opacity:0.4;}}.hamburger{display:none;background:none;border:none;cursor:pointer;padding:6px;border-radius:6px;color:var(--text);flex-shrink:0;min-width:44px;min-height:44px;align-items:center;justify-content:center;}.hamburger:hover,.hamburger:focus-visible{background:var(--bg);}.hamburger svg{width:22px;height:22px;display:block;}.sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.5);z-index:calc(var(--z-sidebar) - 1);opacity:0;transition:opacity 0.25s;touch-action:none;}.sidebar-overlay.open{opacity:1;}body.sidebar-open{overflow:hidden;overscroll-behavior:none;}.sidebar.open{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;}.mobile-bottom-nav{display:none;position:fixed;bottom:0;left:0;right:0;background:var(--surface);border-top:1px solid var(--border);z-index:var(--z-bottom-nav);padding:6px 0 env(safe-area-inset-bottom,6px);box-shadow:0 -2px 10px rgba(0,0,0,0.08);}.mobile-bottom-nav-inner{display:flex;justify-content:space-around;align-items:center;max-width:480px;margin:0 auto;}.mobile-nav-btn{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 12px;border:none;background:none;cursor:pointer;color:var(--text-light);font-size:10px;font-weight:500;border-radius:8px;transition:all 0.15s;min-width:64px;min-height:48px;-webkit-tap-highlight-color:transparent;}.mobile-nav-btn.active{color:var(--accent);font-weight:600;}.mobile-nav-btn svg{width:22px;height:22px;}.mobile-nav-btn:active{background:var(--accent-light);}.touch-tooltip{position:fixed;background:var(--navy);color:#fff;padding:8px 12px;border-radius:var(--radius-md);font-size:12px;z-index:calc(var(--z-toast)+100);pointer-events:none;max-width:200px;box-shadow:0 4px 12px rgba(0,0,0,0.2);}@media (max-width:1024px){:root{--sidebar-w:220px;}.content{padding:16px;}.cards-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;}.stats-bar{gap:10px;}.stat-box{min-width:100px;padding:10px 14px;}.stat-box .value{font-size:18px;}.tbl{font-size:12px;}.tbl th,.tbl td{padding:5px 7px;}}@media (max-width:768px){.hamburger{display:flex;align-items:center;}.sidebar{transform:translateX(-100%);transition:transform 0.3s ease;width:280px;z-index:var(--z-dropdown);}.sidebar.open{transform:translateX(0);}.sidebar-overlay.open{display:block;}.main{margin-left:0 !important;}.topbar{padding:8px 12px;gap:6px;}.topbar-title-group{min-width:0;flex:0 1 auto;overflow:hidden;}.topbar-title{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.topbar-subtitle{display:none !important;}.year-pills-desktop{display:none;}.year-filter-btn{display:inline-flex;}.topbar-actions{gap:4px;}.topbar-actions .btn{padding:5px 10px;font-size:11.5px;}.topbar-actions .btn-ghost[onclick='exportJSON()']{display:none;}.content{padding:12px;}.page-header h1{font-size:16px;}.page-header p{font-size:11.5px;}.stats-bar{flex-direction:column;gap:8px;}.stat-box{min-width:unset;padding:12px 16px;display:flex;align-items:center;gap:12px;}.stat-box .label{margin-bottom:0;flex-shrink:0;min-width:80px;}.stat-box .value{font-size:20px;flex:1;text-align:right;}.stat-box .sub{display:none;}.cards-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;}.chart-container{height:160px;gap:3px;overflow-x:auto;-webkit-overflow-scrolling:touch;}.bar-group{min-width:24px;}.stacked-bar{height:120px;}.bar-label{font-size:8px;}.bar-value{font-size:8px;}.legend{gap:8px;flex-wrap:wrap;}.legend-item{font-size:10px;}.tbl-scroll{-webkit-overflow-scrolling:touch;}.tbl{font-size:11.5px;}.tbl th{padding:5px 6px;font-size:10px;}.tbl td{padding:5px 6px;}.ec{min-width:44px;}.edit-inp{width:60px;font-size:12px;}.sup-header{flex-wrap:wrap;gap:8px;}.season-tabs{width:100%;}.season-tab{flex:1;text-align:center;padding:8px 12px;}.sup-toolbar{flex-direction:column;align-items:stretch;gap:6px;}.undo-redo-bar{justify-content:center;}.mobile-year-tabs{display:flex;gap:2px;background:var(--bg);border-radius:8px;padding:3px;margin-bottom:10px;}.mobile-year-tabs .season-tab{flex:1;text-align:center;padding:8px 12px;}.modal{width:95vw;padding:16px;}.ab-modal{width:98vw;max-height:95vh;}.ab-header{padding:14px 16px;}.ab-body{padding:16px;}.ab-form{grid-template-columns:1fr;}.ab-dropzone{padding:24px 12px;}.ab-actions{padding:12px 16px;flex-wrap:wrap;}.pareto-row-name{width:80px !important;font-size:11px !important;}.mobile-bottom-nav{display:block;}body{padding-bottom:72px;}.save-indicator span:not(.sr-only){display:none;}.save-indicator{padding:4px 6px;}.user-name{display:none;}}@media (max-width:480px){.content{padding:8px;}.page-header h1{font-size:15px;}.topbar{padding:6px 8px;}.stat-box{padding:10px 12px;}.stat-box .value{font-size:18px;}.cards-grid{grid-template-columns:1fr;gap:8px;}.card{padding:10px;}.chart-container{height:140px;}.stacked-bar{height:100px;}.monthly-dashboard .dashboard-content{padding:10px;}.year-filter-btn{padding:4px 8px;font-size:11px;}.modal{border-radius:8px;padding:14px;}.ab-modal{border-radius:10px;}.btn{padding:8px 14px;font-size:12px;}.sidebar-btn{padding:10px 12px;font-size:13px;}.tbl{font-size:11px;}.tbl th{font-size:9.5px;padding:4px 5px;}.tbl td{padding:4px 5px;}.mobile-nav-btn{padding:10px 8px;min-height:52px;}.mobile-nav-btn svg{width:24px;height:24px;}}.home-view{max-width:720px;margin:0 auto;padding:40px 20px;}.home-header{margin-bottom:32px;}.home-header h1{font-size:22px;font-weight:700;color:var(--navy);}.home-header p{font-size:14px;color:var(--text-light);margin-top:4px;}.home-grid{display:grid;grid-template-columns:1fr;gap:16px;}.home-card{display:flex;align-items:center;gap:16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px 24px;cursor:pointer;transition:border-color 0.15s,box-shadow 0.15s;}.home-card:hover,.home-card:focus-visible{border-color:var(--accent);box-shadow:0 2px 12px rgba(59,130,246,0.12);}.home-card-icon{width:52px;height:52px;border-radius:var(--radius-lg);background:var(--accent-light);color:var(--navy);display:flex;align-items:center;justify-content:center;flex-shrink:0;}.home-card-body{flex:1;min-width:0;}.home-card-title{font-size:16px;font-weight:600;color:var(--text);}.home-card-desc{font-size:13px;color:var(--text-light);margin-top:2px;line-height:1.4;}.home-card-meta{font-size:11px;color:var(--neutral);margin-top:6px;}.home-card-arrow{font-size:20px;color:var(--accent);flex-shrink:0;opacity:0.6;transition:opacity 0.15s;}.home-card:hover .home-card-arrow{opacity:1;}.module-nav-hidden{display:none;}.portal-home .sidebar{display:none;}.portal-home .main{margin-left:0;}.portal-home .mobile-nav-btn:not(#mob-nav-home){opacity:0.35;pointer-events:none;}.login-overlay{position:fixed;inset:0;z-index:var(--z-login);background:var(--bg);display:flex;align-items:center;justify-content:center;}.login-card{background:var(--surface);border-radius:var(--radius-xl);box-shadow:0 4px 24px rgba(0,0,0,0.1);padding:40px 36px;width:100%;max-width:380px;margin:16px;}.login-logo{text-align:center;margin-bottom:28px;}.login-subtitle{font-size:11px;text-transform:uppercase;letter-spacing:2px;color:var(--text-light);margin-top:6px;}.login-error{color:var(--danger);font-size:13px;min-height:20px;margin-bottom:4px;text-align:center;font-weight:500;}.login-error:not(:empty)::before{content:'⚠ ';}.login-error[style*='color:#22c55e']:not(:empty)::before,.login-error[style*='color:#22c55e']:not(:empty)::before{content:'✓ ';}.login-field{margin-bottom:16px;}.login-field label{display:block;font-size:12px;font-weight:600;color:var(--text-light);margin-bottom:5px;text-transform:uppercase;letter-spacing:0.5px;}.login-field input{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:6px;font-size:14px;outline:none;transition:border 0.15s;background:var(--bg);}.login-field input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(59,130,246,0.1);}.login-btn{width:100%;padding:11px;border:none;border-radius:6px;background:var(--navy);color:#fff;font-size:14px;font-weight:600;cursor:pointer;transition:background 0.15s;margin-top:8px;}.login-btn:hover{background:var(--navy-light);}.login-btn:disabled{opacity:0.6;cursor:not-allowed;}.user-menu{position:relative;margin-left:4px;}.user-menu-btn{display:flex;align-items:center;gap:6px;padding:4px 8px !important;}.user-avatar{width:26px;height:26px;border-radius:50%;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0;}.user-name{font-size:12px;max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.user-dropdown{display:none;position:absolute;right:0;top:100%;margin-top:6px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:0 4px 16px rgba(0,0,0,0.12);min-width:180px;z-index:var(--z-dropdown);overflow:hidden;}.user-dropdown.open{display:block;}.user-dropdown-info{padding:12px 14px;font-size:13px;}.user-dropdown-divider{height:1px;background:var(--border);}.user-dropdown-item{display:block;width:100%;padding:9px 14px;border:none;background:none;font-size:13px;text-align:left;cursor:pointer;color:var(--text);transition:background 0.1s;min-height:40px;}.user-dropdown-item:hover,.user-dropdown-item:focus-visible{background:var(--accent-light);}.user-dropdown-logout{color:var(--danger);}.user-dropdown-logout:hover{background:var(--danger-bg);}.audit-view{padding:20px;max-width:1100px;}.audit-view h2{font-size:18px;font-weight:600;margin-bottom:16px;}.audit-filters{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:14px 16px;margin-bottom:16px;}.audit-filter-row{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;}.audit-filter-group{display:flex;flex-direction:column;gap:4px;}.audit-filter-group--btn{flex-direction:row;align-items:flex-end;gap:8px;margin-top:4px;}.audit-filter-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.5px;color:var(--text-light);}.audit-filter-select,.audit-filter-input{padding:6px 10px;border:1px solid var(--border);border-radius:6px;font-size:13px;background:var(--bg);color:var(--text);outline:none;transition:border-color 0.15s;}.audit-filter-select:focus,.audit-filter-input:focus{border-color:var(--accent);}.audit-filter-input{width:160px;}.audit-table{width:100%;border-collapse:collapse;font-size:13px;}.audit-table thead{background:var(--bg);}.audit-table th{text-align:left;padding:8px 10px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.5px;color:var(--text-light);border-bottom:2px solid var(--border);}.audit-table td{padding:8px 10px;border-bottom:1px solid var(--border);vertical-align:top;}.audit-table tr:hover{background:var(--accent-light);}.audit-ts{white-space:nowrap;color:var(--text-light);font-size:12px;}.audit-rev{text-align:center;color:var(--text-light);font-size:12px;}.audit-user{font-weight:500;}.audit-badge{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:500;}.audit-action-save{background:var(--success-bg);color:var(--success);}.audit-action-restore{background:var(--warn-bg);color:var(--warn);}.audit-action-login{background:var(--accent-light);color:var(--accent);}.audit-action-logout{background:var(--bg);color:var(--neutral);}.audit-action-password_change{background:#f3e8ff;color:#7c3aed;}.audit-details{max-width:600px;font-size:12px;color:var(--text-light);word-break:break-word;}.btn-audit-toggle{display:inline-block;margin-left:8px;padding:2px 8px;font-size:11px;background:var(--accent-light);color:var(--accent);border:1px solid var(--accent);border-radius:4px;cursor:pointer;}.btn-audit-toggle:hover{background:var(--accent);color:#fff;}.audit-detail-records{margin-top:8px;}.audit-detail-table{width:100%;border-collapse:collapse;font-size:11px;background:var(--bg);border-radius:4px;}.audit-detail-table th{padding:4px 6px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:0.3px;color:var(--text-light);border-bottom:1px solid var(--border);text-align:left;}.audit-detail-table td{padding:4px 6px;border-bottom:1px solid var(--border);}.audit-old-val{color:#dc2626;text-decoration:line-through;}.audit-new-val{color:#16a34a;font-weight:500;}.audit-load-more{text-align:center;padding:16px 0;}.tbl td.ec{position:relative;}.comment-tri{position:absolute;top:0;right:0;width:0;height:0;border-style:solid;border-width:0 8px 8px 0;border-color:transparent #e53e3e transparent transparent;pointer-events:none;z-index:1;}.tbl td.ec .comment-icon{display:none;position:absolute;top:2px;right:2px;font-size:11px;line-height:1;cursor:pointer;z-index:2;opacity:0.75;transition:opacity 0.1s;}.tbl td.ec:hover .comment-icon{display:inline;}.tbl td.ec:hover .comment-icon:hover{opacity:1;}.comment-tooltip{position:fixed;background:#1e293b;color:#f8fafc;border-radius:7px;padding:8px 11px;font-size:12.5px;max-width:280px;white-space:pre-wrap;word-break:break-word;box-shadow:0 4px 16px rgba(0,0,0,0.3);z-index:var(--z-tooltip);pointer-events:none;line-height:1.5;opacity:0;transition:opacity 0.15s;}.comment-tooltip.show{opacity:1;}.ctx-menu{position:fixed;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:0 6px 24px rgba(0,0,0,0.18);z-index:var(--z-ctx-menu);min-width:200px;padding:4px 0;font-size:13px;}.ctx-menu-item{padding:8px 16px;cursor:pointer;display:flex;align-items:center;gap:8px;color:var(--text);min-height:40px;}.ctx-menu-item:hover,.ctx-menu-item:focus-visible{background:var(--accent-light);color:var(--accent);}.ctx-menu-item.danger{color:var(--danger);}.ctx-menu-item.danger:hover{background:var(--danger-bg);}.ctx-menu-sep{height:1px;background:var(--border);margin:3px 0;}.comment-popup{position:fixed;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:0 8px 32px rgba(0,0,0,0.22);z-index:var(--z-popup);padding:14px;min-width:260px;max-width:340px;}.comment-popup-title{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:0.6px;color:var(--text-light);margin-bottom:8px;}.comment-popup textarea{width:100%;border:1px solid var(--border);border-radius:6px;padding:8px 10px;font-size:13px;font-family:inherit;resize:vertical;min-height:80px;outline:none;color:var(--text);background:var(--bg);line-height:1.5;transition:border-color 0.15s;}.comment-popup textarea:focus{border-color:var(--accent);}.comment-popup-actions{display:flex;gap:6px;margin-top:10px;justify-content:flex-end;}.comment-popup-actions .btn-delete{background:transparent;border:1px solid var(--border);color:var(--danger);padding:5px 10px;border-radius:6px;font-size:12px;cursor:pointer;margin-right:auto;}.comment-popup-actions .btn-delete:hover{background:var(--danger-bg);}.audit-count{font-size:12px;color:var(--text-light);padding:10px 0;text-align:right;}.help-fab{position:fixed;bottom:80px;right:20px;width:48px;height:48px;border-radius:50%;background:var(--navy);color:#fff;border:none;font-size:20px;cursor:pointer;box-shadow:0 4px 16px rgba(0,0,0,0.2);z-index:calc(var(--z-tooltip) - 1000);display:flex;align-items:center;justify-content:center;transition:all 0.2s;}.help-fab:hover{background:var(--navy-light);transform:scale(1.08);}.help-panel{position:fixed;top:0;right:-420px;width:400px;max-width:90vw;height:100vh;background:var(--surface);border-left:1px solid var(--border);box-shadow:-4px 0 24px rgba(0,0,0,0.12);z-index:var(--z-panel);display:flex;flex-direction:column;transition:right 0.3s ease;}.help-panel.open{right:0;}.help-panel-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border);background:var(--navy);color:#fff;}.help-panel-header h2{font-size:16px;font-weight:600;margin:0;display:flex;align-items:center;gap:8px;}.help-panel-close{background:none;border:none;color:rgba(255,255,255,0.7);font-size:20px;cursor:pointer;padding:4px 8px;border-radius:4px;line-height:1;min-width:36px;min-height:36px;display:inline-flex;align-items:center;justify-content:center;}.help-panel-close:hover,.help-panel-close:focus-visible{color:#fff;background:rgba(255,255,255,0.15);}.help-panel-inner{display:flex;flex:1;overflow:hidden;}.help-nav{width:140px;flex-shrink:0;background:var(--bg);border-right:1px solid var(--border);overflow-y:auto;padding:8px 0;}.help-nav-item{display:flex;align-items:center;gap:6px;padding:9px 12px;cursor:pointer;font-size:12.5px;color:var(--text-light);transition:all 0.12s;border-left:3px solid transparent;}.help-nav-item:hover{background:var(--accent-light);color:var(--text);}.help-nav-item.active{background:var(--accent-light);color:var(--accent);font-weight:600;border-left-color:var(--accent);}.help-nav-icon{font-size:14px;flex-shrink:0;}.help-body{flex:1;overflow-y:auto;padding:20px;font-size:13px;line-height:1.7;}.help-body h3{font-size:15px;font-weight:700;color:var(--navy);margin:18px 0 8px;padding-bottom:4px;border-bottom:1px solid var(--border);}.help-body h3:first-child{margin-top:0;}.help-body h4{font-size:13px;font-weight:600;margin:12px 0 6px;color:var(--text);}.help-body p{margin:0 0 10px;}.help-body ul,.help-body ol{margin:0 0 12px;padding-left:20px;}.help-body li{margin-bottom:4px;}.help-body strong{color:var(--navy);}.help-body em{color:var(--accent);font-style:normal;font-weight:500;}.help-hint{background:var(--accent-light);border:1px solid #bfdbfe;border-radius:8px;padding:10px 14px;margin:12px 0;font-size:12.5px;line-height:1.6;}.help-hint strong{color:var(--accent);}.faq-item{border:1px solid var(--border);border-radius:8px;margin-bottom:8px;overflow:hidden;}.faq-q{padding:10px 14px;font-size:13px;font-weight:600;cursor:pointer;background:var(--bg);display:flex;align-items:center;gap:8px;transition:background 0.12s;user-select:none;}.faq-q::before{content:'▸';font-size:11px;color:var(--text-light);transition:transform 0.2s;flex-shrink:0;}.faq-item.open .faq-q::before{transform:rotate(90deg);}.faq-q:hover{background:#e8f0fe;}.faq-a{display:none;padding:10px 14px;font-size:12.5px;border-top:1px solid var(--border);line-height:1.7;}.faq-item.open .faq-a{display:block;}.help-panel-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.3);z-index:calc(var(--z-panel) - 100);}.help-panel-overlay.open{display:block;}.help-sidebar-btn{margin-top:auto;padding:10px 14px;border-top:1px solid rgba(255,255,255,0.08);}.help-sidebar-link{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:6px;font-size:12px;color:rgba(255,255,255,0.6);cursor:pointer;transition:all 0.15s;border:1px solid rgba(255,255,255,0.1);background:rgba(255,255,255,0.04);}.help-sidebar-link:hover{background:rgba(255,255,255,0.1);color:#fff;border-color:rgba(255,255,255,0.25);}.help-sidebar-link .kbd{font-size:10px;background:rgba(255,255,255,0.12);padding:1px 5px;border-radius:3px;margin-left:auto;}@media (max-width:768px){.help-fab{display:none !important;}.help-panel{width:100vw;max-width:100vw;}.help-nav{width:110px;}.help-body{padding:14px;}}.tbl tr.drag-product[draggable='true']{cursor:grab;}.tbl tr.drag-product[draggable='true']:active{cursor:grabbing;}.tbl tr.drag-product.dragging{opacity:0.35;background:#e2e8f0 !important;}.tbl tr.drag-product.dragging td{background:#e2e8f0 !important;}.tbl tr.cat-row.drop-target-over td{background:#16a34a !important;color:#fff;box-shadow:inset 0 0 0 2px #15803d;transition:background 0.12s,box-shadow 0.12s;}.tbl tr.cat-row.drop-target-over .del-btn{color:rgba(255,255,255,0.7);}.drag-source-badge{display:inline-block;font-size:10px;padding:1px 7px;border-radius:8px;background:rgba(255,255,255,0.25);margin-left:8px;font-weight:400;letter-spacing:0;text-transform:none;}.drop-hint{display:none;font-size:10px;color:#15803d;font-weight:600;margin-left:8px;letter-spacing:0;text-transform:none;}.tbl tr.cat-row.drop-target-over .drop-hint{display:inline;}@media print{.sidebar,.topbar,.year-selector,.year-filter-btn,.sidebar-actions,.sidebar-btn,.supplier-search,.help-fab,.help-panel,.help-panel-overlay,.year-sheet-overlay,.sup-toolbar .season-tabs,.del-cell,.del-btn,.skip-link,.missing-banner,.cat-drag-handle,.drop-hint,button,.sidebar-btn,.ab-import-area{display:none !important;}.layout{display:block;}.main{margin-left:0 !important;}.sidebar{width:0;}body{background:#fff;font-size:11px;color:#000;}.main{min-height:auto;}.page-header h1{font-size:16px;}.page-header p{font-size:11px;}.table-wrapper{overflow:visible !important;}.tbl-scroll{overflow:visible !important;}.tbl{font-size:10px;width:100%;border-collapse:collapse;}.tbl th,.tbl td{padding:2px 4px !important;border:1px solid #ccc !important;}.tbl thead th{background:#e5e7eb !important;color:#000 !important;-webkit-print-color-adjust:exact;print-color-adjust:exact;}.cat-row td{background:#f3f4f6 !important;font-weight:700;-webkit-print-color-adjust:exact;print-color-adjust:exact;}.stats-bar{display:flex;flex-wrap:wrap;gap:8px;}.stat-box{border:1px solid #ccc;padding:6px 10px;flex:1;min-width:100px;}canvas{max-width:100% !important;height:auto !important;}.tbl tr{page-break-inside:avoid;}.sup-header{page-break-after:avoid;}*{box-shadow:none !important;}.surface,.card,.stat-box{background:#fff !important;}}.ai-confidence{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:10px;font-size:10px;font-weight:600;background:var(--bg);border:1px solid var(--border);position:relative;overflow:hidden;min-width:52px;}.ai-confidence-bar{position:absolute;left:0;top:0;bottom:0;opacity:0.15;border-radius:10px;transition:width 0.3s;}.ai-confidence-label{position:relative;z-index:1;}.ai-confidence-high{border-color:#86efac;color:#15803d;}.ai-confidence-high .ai-confidence-bar{background:#22c55e;}.ai-confidence-medium{border-color:#fcd34d;color:#92400e;}.ai-confidence-medium .ai-confidence-bar{background:#f59e0b;}.ai-confidence-low{border-color:#fca5a5;color:#dc2626;}.ai-confidence-low .ai-confidence-bar{background:#ef4444;}.ai-badge{display:inline-block;padding:1px 6px;border-radius:8px;font-size:10px;font-weight:600;background:var(--accent-light);color:var(--accent);border:1px solid #bfdbfe;letter-spacing:0.3px;vertical-align:middle;}.ai-badge-subtle{font-size:11px;color:var(--text-light);font-weight:500;margin-left:4px;}.ai-sug-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px 14px;margin-bottom:8px;transition:border-color 0.15s,opacity 0.2s;}.ai-sug-card:hover{border-color:var(--accent);}.ai-sug-accepted{border-color:#86efac;background:#f0fdf4;}.ai-sug-dismissed{opacity:0.55;border-color:var(--border);}.ai-sug-overridden{border-color:#fcd34d;background:#fffbeb;}.ai-sug-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;}.ai-sug-type{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.5px;color:var(--text-light);}.ai-sug-type svg{flex-shrink:0;}.ai-sug-body{margin-bottom:8px;}.ai-sug-label{font-size:13px;font-weight:600;color:var(--text);margin-bottom:4px;}.ai-sug-current,.ai-sug-proposed{font-size:12.5px;color:var(--text-light);margin-bottom:2px;}.ai-sug-val-label{color:var(--neutral);font-size:11px;}.ai-sug-val{font-weight:500;color:var(--text);}.ai-sug-val-new{color:var(--accent);font-weight:600;}.ai-sug-reason{background:var(--accent-light);border-radius:6px;padding:6px 10px;font-size:11.5px;color:var(--text);line-height:1.5;display:flex;align-items:flex-start;gap:6px;margin-bottom:8px;}.ai-sug-reason-icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:var(--accent);color:#fff;font-size:10px;font-weight:700;flex-shrink:0;margin-top:1px;}.ai-sug-actions{display:flex;gap:6px;align-items:center;}.ai-sug-status-label{font-size:11px;font-weight:600;padding:2px 8px;border-radius:8px;}.ai-sug-status-label.accepted{background:#dcfce7;color:#15803d;}.ai-sug-status-label.dismissed{background:var(--bg);color:var(--neutral);}.ai-sug-status-label.overridden{background:#fef3c7;color:#92400e;}.ai-sug-list{margin:8px 0;}.ai-sug-summary{font-size:12px;font-weight:600;color:var(--text-light);margin-bottom:8px;padding:4px 0;}.ai-loading{border-radius:10px;padding:14px 16px;margin:12px 0;}.ai-loading-loading{background:var(--accent-light);border:1px solid #bfdbfe;}.ai-loading-ready{background:var(--success-bg);border:1px solid #86efac;}.ai-loading-error{background:var(--danger-bg);border:1px solid #fca5a5;}.ai-loading-header{display:flex;align-items:center;gap:8px;}.ai-loading-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;}.ai-loading-loading .ai-loading-dot{background:var(--accent);animation:pulse 1s infinite;}.ai-loading-ready .ai-loading-dot{background:var(--success);}.ai-loading-error .ai-loading-dot{background:var(--danger);}.ai-loading-label{font-size:13px;font-weight:600;}.ai-loading-loading .ai-loading-label{color:var(--accent);}.ai-loading-ready .ai-loading-label{color:var(--success);}.ai-loading-error .ai-loading-label{color:var(--danger);}.ai-loading-dots span{animation:aiDots 1.4s infinite;opacity:0;}.ai-loading-dots span:nth-child(2){animation-delay:0.2s;}.ai-loading-dots span:nth-child(3){animation-delay:0.4s;}@keyframes aiDots{0%,80%,100%{opacity:0;}40%{opacity:1;}}.ai-loading-msg{font-size:12px;color:var(--text-light);margin-top:4px;margin-left:16px;}.ai-loading-progress{height:3px;background:var(--border);border-radius:2px;margin-top:8px;overflow:hidden;}.ai-loading-progress-bar{height:100%;background:var(--accent);border-radius:2px;transition:width 0.3s;}.ai-hint-tri{position:absolute;top:0;left:0;width:0;height:0;border-style:solid;border-width:8px 8px 0 0;border-color:var(--accent) transparent transparent transparent;pointer-events:none;z-index:1;}.ai-hint-indicator{display:inline-block;width:8px;height:8px;color:var(--accent);font-size:12px;line-height:1;cursor:help;}.ai-summary-banner{background:var(--accent-light);border:1px solid #bfdbfe;border-radius:10px;padding:12px 16px;margin:12px 0;}.ai-summary-title{font-size:12px;font-weight:600;color:var(--text);margin-bottom:6px;}.ai-summary-stats{display:flex;flex-wrap:wrap;gap:8px;}.ai-summary-stat{font-size:11.5px;padding:2px 8px;border-radius:8px;background:var(--bg);color:var(--text-light);font-weight:500;}.ai-summary-stat.accepted{background:#dcfce7;color:#15803d;}.ai-summary-stat.dismissed{background:var(--bg);color:var(--neutral);}.ai-summary-stat.overridden{background:#fef3c7;color:#92400e;}@media (max-width:768px){.ai-sug-card{padding:10px 12px;}.ai-sug-header{flex-wrap:wrap;gap:6px;}.ai-sug-actions{flex-wrap:wrap;}.ai-loading{padding:12px;}.ai-summary-stats{flex-direction:column;gap:4px;}}@media (max-width:480px){.ai-sug-card{padding:8px 10px;}.ai-sug-reason{padding:5px 8px;font-size:11px;}}@media print{.ai-sug-card,.ai-loading,.ai-summary-banner{display:none !important;}}.nos-view{padding:24px;max-width:1280px;margin:0 auto;}.nos-header{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:16px;flex-wrap:wrap;}.nos-header h1{margin:0;font-size:24px;}.nos-header p{margin:4px 0 0;color:#6c7682;font-size:14px;}.nos-header-actions{display:flex;gap:8px;align-items:center;}.nos-toolbar{display:flex;gap:8px;align-items:center;padding:12px 0;border-bottom:1px solid #e5e8ec;margin-bottom:16px;}.nos-status{color:#6c7682;font-size:13px;margin-left:8px;}.nos-input{padding:7px 10px;border:1px solid #d0d5db;border-radius:6px;font-size:14px;min-width:200px;}.nos-btn{background:#fff;border:1px solid #d0d5db;border-radius:6px;padding:7px 14px;font-size:14px;cursor:pointer;}.nos-btn:hover{background:#f5f6f8;}.nos-btn:disabled{opacity:0.5;cursor:not-allowed;}.nos-btn-primary{background:#2c5aa0;color:#fff;border-color:#2c5aa0;}.nos-btn-primary:hover:not(:disabled){background:#244a85;}.nos-save-pending{animation:nos-pulse 1.4s ease-in-out infinite;}@keyframes nos-pulse{0%,100%{box-shadow:0 0 0 0 rgba(44,90,160,0.4);}50%{box-shadow:0 0 0 4px rgba(44,90,160,0);}}.nos-btn-icon{background:transparent;border:1px solid transparent;border-radius:4px;color:#b94a4a;font-size:14px;padding:2px 7px;cursor:pointer;}.nos-btn-icon:hover{background:#fde8e8;border-color:#f5c2c2;}.nos-empty,.nos-empty-row{text-align:center;color:#6c7682;padding:24px;font-size:14px;}.nos-supplier-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;}.nos-supplier-card{background:#fff;border:1px solid #e5e8ec;border-radius:8px;padding:14px 16px;cursor:pointer;display:flex;flex-direction:column;gap:4px;position:relative;transition:border-color 0.15s,transform 0.15s;}.nos-supplier-card:hover,.nos-supplier-card:focus-visible{border-color:#2c5aa0;outline:none;}.nos-supplier-name{font-weight:600;}.nos-supplier-meta{color:#6c7682;font-size:13px;}.nos-supplier-actions{position:absolute;top:6px;right:6px;opacity:0;transition:opacity 0.15s;}.nos-supplier-card:hover .nos-supplier-actions{opacity:1;}.nos-table-wrap{overflow-x:auto;border:1px solid #e5e8ec;border-radius:8px;}.nos-table{width:100%;border-collapse:collapse;background:#fff;font-size:14px;}.nos-table th,.nos-table td{text-align:left;padding:8px 10px;border-bottom:1px solid #eef0f3;vertical-align:middle;}.nos-table th{background:#f5f6f8;font-weight:600;font-size:12px;text-transform:uppercase;color:#6c7682;}.nos-table td.num,.nos-table th.num{text-align:right;}.nos-table tr:last-child td{border-bottom:none;}.nos-cell{border:1px solid transparent;background:transparent;width:100%;font:inherit;padding:4px 6px;border-radius:4px;}.nos-cell:hover{border-color:#d0d5db;}.nos-cell:focus{border-color:#2c5aa0;outline:none;background:#fff;box-shadow:0 0 0 2px rgba(44,90,160,0.15);}.nos-cell.num{text-align:right;}.nos-row-actions{width:36px;text-align:center;}.nos-section-title{margin:20px 0 10px;font-size:15px;font-weight:600;color:#4a5260;text-transform:uppercase;letter-spacing:0.4px;}.nos-ceremony-badge{display:inline-block;background:#f5e8d4;color:#8a5a1a;border-radius:10px;padding:1px 7px;font-size:11px;font-weight:500;margin-left:6px;}.nos-row-ceremony{background:#fdf6ec;}.nos-row-ceremony:hover{background:#fbeed7;}.nos-ceremony-cell{width:70px;text-align:center;}.nos-ceremony-toggle{display:inline-flex;cursor:pointer;user-select:none;}.nos-ceremony-toggle input{cursor:pointer;transform:scale(1.15);}.nos-link{background:transparent;border:none;color:#2c5aa0;cursor:pointer;padding:0;font:inherit;text-align:left;}.nos-link:hover{text-decoration:underline;}.nos-ceremony-card{display:flex;align-items:center;gap:16px;padding:18px 22px;margin:0 0 20px;background:linear-gradient(135deg,#fdf6ec 0%,#f5e8d4 100%);border:1px solid #e6d2a8;border-radius:10px;cursor:pointer;transition:transform 0.12s,box-shadow 0.12s;}.nos-ceremony-card:hover,.nos-ceremony-card:focus-visible{transform:translateY(-1px);box-shadow:0 4px 12px rgba(138,90,26,0.15);outline:none;}.nos-ceremony-card-icon{font-size:32px;flex:0 0 auto;}.nos-ceremony-card-body{flex:1 1 auto;}.nos-ceremony-card-title{font-size:17px;font-weight:600;color:#5a3a0a;margin-bottom:4px;}.nos-ceremony-card-stats{display:flex;gap:18px;color:#6c5430;font-size:13px;flex-wrap:wrap;}.nos-ceremony-card-stats strong{font-size:16px;color:#3a2400;margin-right:3px;}.nos-ceremony-card-arrow{font-size:22px;color:#8a5a1a;flex:0 0 auto;}.nos-stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin:0 0 16px;}.nos-stat-card{background:#fff;border:1px solid #e5e8ec;border-radius:8px;padding:14px 16px;}.nos-stat-value{font-size:22px;font-weight:600;color:#1f2937;}.nos-stat-label{font-size:12px;color:#6c7682;margin-top:2px;text-transform:uppercase;letter-spacing:0.4px;}.nos-supplier-stats{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 20px;}.nos-supplier-stat{display:inline-flex;flex-direction:column;background:#fff;border:1px solid #e5e8ec;border-radius:8px;padding:8px 14px;cursor:pointer;font:inherit;text-align:left;transition:border-color 0.12s;}.nos-supplier-stat:hover{border-color:#2c5aa0;}.nos-supplier-stat-name{font-weight:600;font-size:13px;}.nos-supplier-stat-count{font-size:12px;color:#6c7682;}.nos-supplier-stat-soll{font-size:11px;color:#8a5a1a;}.nos-search{position:relative;margin:0 0 16px;}.nos-search-input{width:100%;max-width:480px;}.nos-search-results{position:absolute;top:100%;left:0;right:0;max-width:580px;background:#fff;border:1px solid #d0d5db;border-radius:8px;box-shadow:0 6px 20px rgba(0,0,0,0.08);max-height:380px;overflow-y:auto;z-index:50;margin-top:4px;}.nos-search-item{display:flex;flex-direction:column;gap:2px;width:100%;padding:8px 14px;border:none;background:transparent;text-align:left;cursor:pointer;border-bottom:1px solid #f0f2f5;font:inherit;}.nos-search-item:last-child{border-bottom:none;}.nos-search-item:hover{background:#f5f6f8;}.nos-search-item-main{font-size:14px;color:#1f2937;}.nos-search-item-supplier{font-size:12px;color:#2c5aa0;font-weight:500;}.nos-search-item-meta{font-size:11px;color:#6c7682;}.nos-search-mark{background:#fff3a8;padding:0 1px;border-radius:2px;}.nos-search-empty{padding:14px;color:#6c7682;font-size:13px;}.nos-date-cell{white-space:nowrap;}.nos-cell-date{font-family:inherit;font-size:13px;padding:5px 7px;}.nos-date-display{display:block;font-size:11px;color:#6c7682;margin-top:2px;}@keyframes nos-row-flash{0%{background:#ffeaa3;}100%{background:transparent;}}.nos-row-flash{animation:nos-row-flash 2s ease-out;}