:root{--lu-brown: #6b2c19;--lu-lime: #cbe145;--lu-cream: #fbf4e4;--lu-bread: #e4b566;--lu-tomato: #fc3018;--lu-lettuce: #8ba802}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{font-family:Lato,Arial,sans-serif;background:var(--lu-cream);color:var(--lu-brown);font-size:15px;line-height:1.5}h1,h2,h3,.h{font-family:Poppins,Arial,sans-serif;margin:0}a{color:inherit}button,input,select,textarea{font-family:inherit;color:var(--lu-brown)}.app{min-width:1024px}.app-header{background:var(--lu-lime);border-bottom:3px solid var(--lu-brown);padding:1.1rem 1.5rem}.app-header-inner{max-width:1440px;margin:0 auto;display:flex;align-items:center;gap:1.25rem;flex-wrap:wrap}.logo{font-family:Poppins,Arial,sans-serif;font-weight:700;font-size:1.6rem;letter-spacing:-.03em;text-decoration:none}.logo b{background:var(--lu-brown);color:var(--lu-lime);padding:.05rem .45rem;border-radius:7px}.tagline{font-weight:700;opacity:.8}.snapinfo{margin-left:auto;font-size:.85rem;text-align:right;line-height:1.35}.banner{max-width:1440px;margin:0 auto;padding:.75rem 1.5rem}.banner-stale{background:var(--lu-lime);border-bottom:1px solid var(--lu-bread);font-weight:700}.banner-error{background:var(--lu-cream);color:var(--lu-tomato);border-bottom:1px solid var(--lu-tomato);font-weight:700}.page{max-width:1440px;margin:0 auto;padding:1.5rem}.page-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.25rem;flex-wrap:wrap}.page-head h1{font-size:1.6rem}.toolbar{display:flex;gap:.75rem;align-items:end;flex-wrap:wrap}label.field{display:flex;flex-direction:column;gap:.3rem;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em}input[type=date],input[type=number],input[type=text],select{font-size:15px;border:1px solid var(--lu-bread);border-radius:9px;padding:.55rem .7rem;background:#fff;min-width:10rem}input:focus,select:focus,button:focus-visible{outline:2px solid var(--lu-lime);outline-offset:1px}button{font-weight:700;font-size:14.5px;cursor:pointer;border-radius:10px;border:1px solid var(--lu-brown);padding:.65rem 1.15rem;background:#fff}button:hover:not(:disabled){background:var(--lu-cream)}button.primary{background:var(--lu-brown);color:var(--lu-lime)}button.primary:hover:not(:disabled){background:#4f1f10}button:disabled{opacity:.45;cursor:not-allowed}button.linkish{border:none;background:transparent;padding:.25rem 0;text-decoration:underline}.card{background:#fff;border:1px solid var(--lu-bread);border-radius:14px;padding:1.25rem 1.4rem;margin-bottom:1.1rem}.card h2{font-size:1.1rem;margin-bottom:.85rem}.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.9rem}.drop{border:2px dashed var(--lu-bread);border-radius:12px;padding:1rem;background:var(--lu-cream);cursor:pointer;min-height:7rem;display:block}.drop:hover,.drop:focus-within{border-color:var(--lu-brown);background:#fff}.drop.has-file{border-style:solid;border-color:var(--lu-lettuce);background:#fff}.drop input{display:none}.drop-title{font-weight:700;display:flex;align-items:center;gap:.5rem}.badge{font-size:.65rem;padding:.1rem .4rem;border-radius:5px;font-weight:700;text-transform:uppercase}.badge-req{background:var(--lu-tomato);color:#fff}.badge-opt{background:var(--lu-bread);color:var(--lu-brown)}.drop-hint{font-size:.82rem;opacity:.75;margin-top:.35rem}.drop-file{font-weight:700;color:var(--lu-lettuce);margin-top:.5rem;word-break:break-all}.note{border-radius:9px;padding:.8rem 1rem;margin:.75rem 0}.note-warn{background:var(--lu-cream);border:2px solid var(--lu-bread);font-weight:700}.note-error{border:1px solid var(--lu-tomato);color:var(--lu-tomato);font-weight:700}.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem;margin:1rem 0}.kpi{background:var(--lu-cream);border:1px solid var(--lu-bread);border-radius:11px;padding:.8rem 1rem}.kpi .l{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;font-weight:700;opacity:.7}.kpi .v{font-family:Poppins,Arial,sans-serif;font-weight:700;font-size:1.4rem;margin-top:.2rem}.tabs{display:flex;gap:.35rem;flex-wrap:wrap;margin-bottom:1rem;border-bottom:2px solid var(--lu-bread)}.tabs button{border:none;border-radius:10px 10px 0 0;background:transparent;padding:.7rem 1.05rem;border-bottom:3px solid transparent;margin-bottom:-2px}.tabs button[aria-selected=true]{background:var(--lu-lime);border-bottom-color:var(--lu-brown)}.tabs button.alert{color:var(--lu-tomato)}.table-wrap{overflow:auto;background:var(--lu-cream);border-radius:10px}table.data{border-collapse:collapse;width:100%;font-size:14px;background:var(--lu-cream)}table.data th{background:var(--lu-brown);color:var(--lu-cream);font-weight:700;text-align:left;padding:.55rem .7rem;font-size:.78rem;text-transform:uppercase;letter-spacing:.03em}table.data td{padding:.5rem .7rem;border-bottom:1px solid var(--lu-bread);vertical-align:middle}table.data td.num,table.data th.num{text-align:right;font-variant-numeric:tabular-nums}table.data tbody tr:hover td{background:#fff}table.data tr.cat td{background:var(--lu-lime);font-weight:700;font-family:Poppins,Arial,sans-serif;border-bottom:2px solid var(--lu-brown)}table.data tr.is-deficit td,table.data td.is-deficit,.is-deficit,table.data tr.is-blocking td{color:var(--lu-tomato);font-weight:700}table.data input{width:6.5rem;min-width:0;padding:.35rem .45rem;background:#fff}.row-actions{display:flex;gap:.75rem;flex-wrap:wrap;align-items:center;margin-top:1rem}.search-box{position:relative;flex:1;min-width:16rem}.search-results{position:absolute;z-index:5;left:0;right:0;background:#fff;border:1px solid var(--lu-brown);border-radius:8px;margin:0;padding:.25rem 0;list-style:none;max-height:14rem;overflow:auto}.search-results button{width:100%;text-align:left;border:none;border-radius:0;background:transparent}.progress{display:flex;align-items:center;gap:.75rem;margin:.75rem 0;font-weight:700}.progress-track{flex:1;height:10px;background:var(--lu-bread);border-radius:7px;overflow:hidden}.progress-bar{display:block;height:100%;width:35%;background:var(--lu-lettuce);animation:pulse 1.1s ease-in-out infinite}@keyframes pulse{0%,to{transform:translate(-40%)}50%{transform:translate(180%)}}.toasts{position:fixed;right:1.25rem;bottom:1.25rem;display:grid;gap:.5rem;z-index:20}.toast{background:var(--lu-brown);color:var(--lu-lime);padding:.8rem 1.1rem;border-radius:10px;font-weight:700;min-width:16rem}.toast-error{background:var(--lu-tomato);color:#fff}.muted{opacity:.7}.section+.section{margin-top:1.4rem}.section h3{font-size:1.05rem;margin-bottom:.55rem}@media(max-width:1100px){.grid3,.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
