:root{--navy: #0D1B3E;--dark-navy: #162248;--red: #D4182A;--white: #FFFFFF;--off-white: #F4F6FB;--success: #1E9E5A;--success-bg: #E6F6EE;--warning: #E07B00;--warning-bg: #FFF3E0;--danger: #D4182A;--danger-bg: #FDECEA;--info: #1565C0;--info-bg: #E3F0FF;--text-primary: #1A2340;--text-secondary: #5A6478;--text-muted: #8A93A6;--text-on-dark: #FFFFFF;--text-on-dark-muted: rgba(255,255,255,.6);--bg-app: #F4F6FB;--bg-card: #FFFFFF;--bg-sidebar: #0D1B3E;--bg-header: #0D1B3E;--bg-input: #FFFFFF;--bg-hover: rgba(255,255,255,.08);--border-color: #E2E6EF;--border-color-dark: rgba(255,255,255,.12);--font-heading: "Montserrat", "Segoe UI", sans-serif;--font-body: "Open Sans", "Segoe UI", sans-serif;--sidebar-width: 230px;--live-bar-height: 50px;--radius-sm: 4px;--radius: 8px;--radius-lg: 12px;--radius-xl: 16px;--shadow-xs: 0 1px 2px rgba(13,27,62,.06);--shadow-sm: 0 2px 6px rgba(13,27,62,.08);--shadow-md: 0 4px 16px rgba(13,27,62,.1);--shadow-lg: 0 8px 32px rgba(13,27,62,.14);--transition: .18s ease}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;overflow:hidden;font-family:var(--font-body);font-size:14px;color:var(--text-primary);background:var(--bg-app);-webkit-font-smoothing:antialiased}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#cbd1e0;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#a0a8be}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);font-weight:700;line-height:1.25}h1{font-size:24px}h2{font-size:20px}h3{font-size:17px}h4{font-size:15px}p{line-height:1.6}a{color:var(--red);text-decoration:none}.app-shell{display:flex;flex-direction:column;height:100vh;overflow:hidden}.app-body{display:flex;flex:1;overflow:hidden}.content-wrapper{display:flex;flex-direction:column;flex:1;overflow:hidden}.page-content{flex:1;overflow-y:auto;padding:28px;background:var(--bg-app)}.page-header{background:var(--bg-header);color:var(--text-on-dark);padding:0 28px;height:58px;display:flex;align-items:center;gap:12px;flex-shrink:0;border-bottom:1px solid rgba(255,255,255,.06)}.page-header h2{font-size:17px;font-weight:700;color:var(--white);margin:0}.page-header .page-header-actions{margin-left:auto;display:flex;gap:10px}.card{background:var(--bg-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);border:1px solid var(--border-color)}.card-header{padding:16px 20px;border-bottom:1px solid var(--border-color);display:flex;align-items:center;gap:10px}.card-header h3{font-size:14px;font-weight:700;color:var(--text-primary);margin:0}.card-body{padding:20px}.form-group{display:flex;flex-direction:column;gap:6px}.form-label{font-size:12px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;font-family:var(--font-heading)}.form-input,.form-select,.form-textarea{width:100%;padding:9px 12px;border:1.5px solid var(--border-color);border-radius:var(--radius);font-family:var(--font-body);font-size:14px;color:var(--text-primary);background:var(--bg-input);transition:border-color var(--transition);outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--red);box-shadow:0 0 0 3px #d4182a1f}.form-input:disabled,.form-select:disabled{opacity:.6;cursor:not-allowed;background:var(--off-white)}.form-textarea{resize:vertical;min-height:80px}.form-row{display:grid;gap:16px}.form-row-2{grid-template-columns:1fr 1fr}.form-row-3{grid-template-columns:1fr 1fr 1fr}.form-row-4{grid-template-columns:1fr 1fr 1fr 1fr}.table-wrapper{overflow-x:auto;border-radius:var(--radius)}table{width:100%;border-collapse:collapse;font-size:13.5px}thead th{background:var(--off-white);font-family:var(--font-heading);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--text-secondary);padding:10px 14px;text-align:left;border-bottom:2px solid var(--border-color);white-space:nowrap;-webkit-user-select:none;user-select:none}thead th.sortable{cursor:pointer}thead th.sortable:hover{color:var(--text-primary)}tbody tr{border-bottom:1px solid var(--border-color);transition:background var(--transition)}tbody tr:last-child{border-bottom:none}tbody tr:hover{background:#f8f9fd}tbody td{padding:11px 14px;color:var(--text-primary);vertical-align:middle}tbody td.muted{color:var(--text-muted);font-size:12.5px}.stat-grid{display:grid;gap:16px}.stat-grid-2{grid-template-columns:repeat(2,1fr)}.stat-grid-3{grid-template-columns:repeat(3,1fr)}.stat-grid-4{grid-template-columns:repeat(4,1fr)}.stat-grid-6{grid-template-columns:repeat(6,1fr)}.text-red{color:var(--red)!important}.text-green{color:var(--success)!important}.text-orange{color:var(--warning)!important}.text-muted{color:var(--text-muted)!important}.text-right{text-align:right}.text-center{text-align:center}.font-bold{font-weight:700}.font-mono{font-family:Consolas,monospace;font-size:13px}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-8{gap:8px}.gap-12{gap:12px}.gap-16{gap:16px}.w-full{width:100%}.mt-4{margin-top:4px}.mt-8{margin-top:8px}.mt-16{margin-top:16px}.mt-24{margin-top:24px}.mb-16{margin-bottom:16px}.mb-24{margin-bottom:24px}.section-label{font-family:var(--font-heading);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);padding:12px 16px 4px}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted)}.empty-state p{font-size:14px;margin-top:8px}.banner{padding:12px 16px;border-radius:var(--radius);font-size:13.5px;display:flex;align-items:flex-start;gap:10px}.banner-error{background:var(--danger-bg);color:var(--danger);border:1px solid rgba(212,24,42,.2)}.banner-success{background:var(--success-bg);color:var(--success);border:1px solid rgba(30,158,90,.2)}.banner-warning{background:var(--warning-bg);color:var(--warning);border:1px solid rgba(224,123,0,.2)}.banner-info{background:var(--info-bg);color:var(--info);border:1px solid rgba(21,101,192,.2)}.print-only,.bom-print-section{display:none}@media print{@page{size:A4 landscape;margin:12mm 14mm}*{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}.print-only{display:block!important}body.printing-bom .print-only,body.printing-bom .no-print{display:none!important}body.printing-bom .bom-print-section{display:block}body.printing-bom .page-content{padding:20px!important}.live-bar,.sidebar,.page-header-actions,.no-print{display:none!important}.page-header{background:#fff!important;border-bottom:2px solid #1a2340!important;padding:8px 0 10px!important;height:auto!important;color:#1a2340!important}.page-header h2{color:#1a2340!important;font-size:16px!important}.page-header svg path{fill:#d4182a!important}.page-header:before{content:"ROMANS FROZEN";display:block;font-size:9px;font-weight:700;letter-spacing:.12em;color:#d4182a;margin-bottom:3px}html,body,#root,.app-shell,.app-body,.content-wrapper,.page-content{display:block!important;overflow:visible!important;height:auto!important;max-height:none!important;width:100%!important;flex:none!important}body{background:#fff!important;margin:0}.page-content{padding:12px 0!important;background:#fff!important}.print-only table{color:#1a2340!important}.print-only td,.print-only th{color:inherit!important}.card{box-shadow:none!important;border:1px solid #ccc!important;break-inside:avoid}.plan-entry{break-inside:avoid}.stat-grid-2,.stat-grid-3,.stat-grid-4,.stat-grid-6{display:grid!important}}
