@import"https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap";:root{--green: #00B388;--green-dark: #006B5A;--green-darker: #004d3f;--green-light: #ecfdf5;--green-glow: rgba(0, 179, 136, .12);--gray-900: #111827;--gray-800: #1f2937;--gray-700: #374151;--gray-600: #4b5563;--gray-400: #9ca3af;--gray-300: #d1d5db;--gray-200: #e5e7eb;--gray-100: #f3f4f6;--gray-50: #f9fafb;--white: #fff;--red: #ef4444;--red-light: #fef2f2;--orange: #f59e0b;--orange-light: #fffbeb;--yellow: #eab308;--blue: #3b82f6;--blue-light: #eff6ff;--violet: #8b5cf6;--violet-light: #f5f3ff;--radius: 12px;--radius-sm: 8px;--radius-lg: 16px;--radius-full: 9999px;--shadow-xs: 0 1px 2px rgba(15, 23, 42, .04);--shadow: 0 1px 3px rgba(15, 23, 42, .06), 0 1px 2px rgba(15, 23, 42, .03);--shadow-md: 0 6px 16px -2px rgba(15, 23, 42, .06), 0 2px 4px -1px rgba(15, 23, 42, .04);--shadow-lg: 0 16px 40px -8px rgba(15, 23, 42, .1), 0 4px 12px -2px rgba(15, 23, 42, .04);--shadow-xl: 0 24px 56px -12px rgba(15, 23, 42, .16);--shadow-green: 0 4px 16px -4px rgba(0, 179, 136, .25);--transition: .2s cubic-bezier(.4, 0, .2, 1);--transition-slow: .4s cubic-bezier(.4, 0, .2, 1);--font: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", "SF Mono", "Fira Code", monospace}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:var(--font);background-color:#f8fafc;background-image:radial-gradient(at 12% 0%,rgba(0,179,136,.04) 0px,transparent 50%),radial-gradient(at 88% 0%,rgba(139,92,246,.03) 0px,transparent 50%),url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.025 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");color:var(--gray-800);line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;letter-spacing:-.01em;font-feature-settings:"ss01","cv11"}h1,h2,h3,h4{text-wrap:balance;letter-spacing:-.02em}p{text-wrap:pretty}td,th,.stat-value,.num,[data-num]{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}a{color:var(--green);text-decoration:none;transition:color var(--transition)}a:hover{color:var(--green-dark)}.app{display:flex;flex-direction:column;min-height:100vh}.main{max-width:1080px;margin:0 auto;padding:36px 32px;width:100%;flex:1}.admin-main{max-width:960px;padding:32px 40px}@media(max-width:768px){.main,.admin-main{padding:20px 16px}}.header{background:var(--gray-900);color:var(--white);padding:0 32px;height:56px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:100;border-bottom:1px solid rgba(255,255,255,.06)}.header h1{font-size:15px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:var(--green)}.header nav{display:flex;align-items:center;gap:4px}.header nav a,.header nav button{color:#ffffffd9;font-size:13px;font-weight:500;padding:8px 14px;border-radius:var(--radius-sm);border:none;background:transparent;cursor:pointer;transition:all var(--transition);white-space:nowrap}.header nav a:hover,.header nav button:hover{color:var(--white);background:#ffffff14}.header nav a.active{color:var(--white);background:#00b38833;border:1px solid rgba(0,179,136,.3)}.header .user-badge{font-size:12px;background:#ffffff1a;padding:4px 12px;border-radius:var(--radius-full);opacity:.7;margin:0 4px}@media(max-width:768px){.header{height:56px;padding:0 16px}.header h1{font-size:15px;letter-spacing:1px}.header nav{gap:2px;overflow-x:auto}.header nav a,.header nav button{font-size:12px;padding:6px 10px}.header .user-badge{display:none}}.card{background:var(--white);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow);border:1px solid var(--gray-200);margin-bottom:20px;transition:all var(--transition)}.card:hover{box-shadow:var(--shadow-md);border-color:var(--gray-300)}.card-flat{box-shadow:none;border:1px solid var(--gray-200)}.card-flat:hover{box-shadow:var(--shadow-xs)}@media(max-width:640px){.card{padding:16px;border-radius:var(--radius-sm)}}.form-group{margin-bottom:20px}.form-group label{display:block;font-size:13px;font-weight:600;color:var(--gray-600);margin-bottom:6px;letter-spacing:.02em}.form-group input,.form-group select,.form-group textarea{width:100%;padding:11px 14px;border:1.5px solid var(--gray-200);border-radius:var(--radius-sm);font-size:14px;font-family:inherit;color:var(--gray-800);background:var(--white);transition:all var(--transition)}.form-group input:hover,.form-group select:hover,.form-group textarea:hover{border-color:var(--gray-300)}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 4px var(--green-glow)}.form-group input::placeholder{color:var(--gray-400)}.form-group textarea{resize:vertical;min-height:80px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media(max-width:640px){.form-row{grid-template-columns:1fr}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 22px;border:none;border-radius:var(--radius-sm);font-size:14px;font-weight:600;font-family:inherit;cursor:pointer;transition:all var(--transition);white-space:nowrap;text-decoration:none}.btn:active{transform:scale(.97);transition-duration:.05s}.btn:focus-visible{outline:2px solid var(--green);outline-offset:2px}.btn-primary{background:var(--gray-900);color:var(--white);box-shadow:0 1px 3px #0000001f}.btn-primary:hover{background:var(--gray-700);color:var(--white);box-shadow:0 2px 8px #00000026}.btn-primary:disabled{background:var(--gray-300);box-shadow:none;cursor:not-allowed;transform:none}.btn-secondary{background:var(--white);color:var(--gray-800);border:1.5px solid var(--gray-200)}.btn-secondary:hover{background:var(--gray-50);border-color:var(--gray-300);color:var(--gray-800)}.btn-danger{background:var(--red);color:var(--white);box-shadow:0 2px 8px #e53e3e4d}.btn-danger:hover{transform:translateY(-1px);box-shadow:0 4px 16px #e53e3e66}.btn-sm{padding:7px 14px;font-size:13px;border-radius:6px}.btn-lg{padding:14px 28px;font-size:16px}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:var(--radius-sm)}table{width:100%;border-collapse:collapse}th,td{padding:12px 16px;text-align:left;font-size:14px}th{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--gray-400);background:var(--gray-50);border-bottom:1px solid var(--gray-200);position:sticky;top:0}td{border-bottom:1px solid var(--gray-100)}tr{transition:background var(--transition)}tr:hover td{background:var(--gray-50)}@media(max-width:640px){th,td{padding:10px 12px;font-size:13px}}.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 12px;border-radius:var(--radius-full);font-size:12px;font-weight:600;letter-spacing:.02em}.badge-green{background:var(--green-light);color:#059669}.badge-orange{background:var(--orange-light);color:#b45309}.badge-red{background:var(--red-light);color:#dc2626}.badge-gray{background:var(--gray-100);color:var(--gray-600)}.badge-blue{background:var(--blue-light);color:#2563eb}.badge-violet{background:var(--violet-light);color:#7c3aed}.fill-bar-container{margin-bottom:20px}.fill-bar-label{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px;font-size:14px;font-weight:600;color:var(--gray-700)}.fill-bar-label span:last-child{font-size:20px}.fill-bar-track{height:28px;background:var(--gray-200);border-radius:var(--radius-full);overflow:hidden;box-shadow:inset 0 2px 4px #0000000f}.fill-bar-fill{height:100%;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:#fff;min-width:48px;transition:width var(--transition-slow),background-color .3s;position:relative}.fill-bar-fill:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;background:linear-gradient(rgba(255,255,255,.2) 0%,transparent 50%)}.fill-bar-fill.red{background:linear-gradient(135deg,#e53e3e,#c53030)}.fill-bar-fill.orange{background:linear-gradient(135deg,#ed8936,#dd6b20)}.fill-bar-fill.yellow{background:linear-gradient(135deg,#ecc94b,#d69e2e);color:var(--gray-800)}.fill-bar-fill.green{background:linear-gradient(135deg,var(--green),var(--green-dark))}.composition-layout{display:grid;grid-template-columns:1.2fr 1fr;gap:24px;align-items:start}@media(max-width:1024px){.composition-layout{grid-template-columns:1fr}}.family-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px}.family-tab{padding:8px 16px;border:1.5px solid var(--gray-200);border-radius:var(--radius-full);background:var(--white);color:var(--gray-700);font-size:13px;font-weight:500;font-family:inherit;cursor:pointer;transition:all var(--transition)}.family-tab:hover{border-color:var(--green);color:var(--green);background:var(--green-light)}.family-tab.active{background:linear-gradient(135deg,var(--green),var(--green-dark));color:var(--white);border-color:transparent;box-shadow:0 2px 8px #00b3884d}.product-row{display:flex;align-items:center;gap:16px;padding:14px 0;border-bottom:1px solid var(--gray-100);transition:background var(--transition)}.product-row:hover{background:var(--gray-50);border-radius:var(--radius-sm);margin:0 -12px;padding-left:12px;padding-right:12px}.product-row:last-child{border-bottom:none}.product-info{flex:1;min-width:0}.product-info .designation{font-size:14px;font-weight:600;color:var(--gray-800);line-height:1.3}.product-info .meta{font-size:12px;color:var(--gray-400);margin-top:3px}.product-qty{display:flex;align-items:center;gap:8px;flex-shrink:0}.product-qty input{width:64px;padding:8px;text-align:center;border:1.5px solid var(--gray-200);border-radius:var(--radius-sm);font-size:14px;font-weight:600;font-family:inherit;transition:border-color var(--transition)}.product-qty input:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 3px var(--green-glow)}@media(max-width:640px){.product-row{flex-wrap:wrap;gap:8px}.product-qty{width:100%;justify-content:flex-end}}.alert{display:flex;align-items:flex-start;gap:10px;padding:14px 18px;border-radius:var(--radius-sm);margin-bottom:16px;font-size:14px;line-height:1.5}.alert svg{flex-shrink:0;margin-top:1px}.alert-info{background:var(--blue-light);color:#2b6cb0;border-left:4px solid var(--blue)}.alert-warning{background:var(--orange-light);color:#c05621;border-left:4px solid var(--orange)}.alert-error{background:var(--red-light);color:#c53030;border-left:4px solid var(--red)}.alert-success{background:var(--green-light);color:var(--green-dark);border-left:4px solid var(--green)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:24px;animation:fadeIn .2s}.modal-content{background:var(--white);border-radius:var(--radius-lg);padding:28px;max-width:640px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-xl);animation:slideUp .3s cubic-bezier(.4,0,.2,1)}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid var(--gray-200)}.modal-header h2{font-size:20px;font-weight:700;color:var(--gray-800)}.modal-close{width:36px;height:36px;border-radius:50%;border:none;background:var(--gray-100);color:var(--gray-600);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition)}.modal-close:hover{background:var(--gray-200);color:var(--gray-800)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:640px){.modal-overlay{align-items:flex-end;padding:0}.modal-content{border-radius:var(--radius-lg) var(--radius-lg) 0 0;max-height:95vh;padding:20px}}.auth-container{max-width:460px;margin:40px auto;padding:0 16px}.auth-container .card{padding:32px;box-shadow:var(--shadow-lg);border:none}.auth-container h2{text-align:center;font-size:22px;color:var(--gray-800);margin-bottom:28px}.auth-container .logo{text-align:center;font-size:24px;font-weight:800;letter-spacing:3px;color:var(--green);margin-bottom:8px}@media(max-width:640px){.auth-container{margin-top:20px}.auth-container .card{padding:24px}}.cart-line{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid var(--gray-100);font-size:14px;transition:background var(--transition)}.cart-line:hover{background:var(--gray-50);border-radius:6px;margin:0 -8px;padding-left:8px;padding-right:8px}.cart-line .actions{display:flex;align-items:center;gap:8px}.radio-group{display:flex;flex-wrap:wrap;gap:12px;margin-top:6px}.radio-group label{display:flex;align-items:center;gap:8px;padding:8px 16px;border:1.5px solid var(--gray-200);border-radius:var(--radius-sm);cursor:pointer;font-size:14px;font-weight:500;transition:all var(--transition);background:var(--white)}.radio-group label:hover{border-color:var(--green)}.radio-group label:has(input:checked){border-color:var(--green);background:var(--green-light);color:var(--green-dark)}.radio-group input[type=radio]{accent-color:var(--green)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:24px}.stat-card{background:var(--white);border-radius:var(--radius);padding:24px 20px;box-shadow:var(--shadow);border:1px solid var(--gray-200);transition:all var(--transition)}.stat-card:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.stat-card .stat-value{font-size:32px;font-weight:800;color:var(--gray-900);margin:8px 0 4px;letter-spacing:-1px}.stat-card .stat-label{font-size:12px;font-weight:600;color:var(--gray-400);text-transform:uppercase;letter-spacing:.04em}.empty-state{text-align:center;padding:48px 24px;color:var(--gray-400)}.empty-state svg{margin-bottom:12px;opacity:.3}.empty-state p{margin-bottom:16px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--gray-300);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--gray-400)}.text-center{text-align:center}.text-right{text-align:right}.mt-4{margin-top:4px}.mt-8{margin-top:8px}.mt-16{margin-top:16px}.mt-24{margin-top:24px}.mb-8{margin-bottom:8px}.mb-16{margin-bottom:16px}.mb-24{margin-bottom:24px}.flex{display:flex}.gap-4{gap:4px}.gap-8{gap:8px}.gap-12{gap:12px}.gap-16{gap:16px}.items-center{align-items:center}.justify-between{justify-content:space-between}.flex-1{flex:1}.flex-wrap{flex-wrap:wrap}.w-full{width:100%}.font-mono{font-family:var(--font-mono)}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}@media(max-width:768px){.grid-2,.grid-3{grid-template-columns:1fr}.grid-4{grid-template-columns:1fr 1fr}}.loading{display:flex;align-items:center;justify-content:center;gap:10px;padding:48px;color:var(--gray-400);font-size:13px}.loading:before{content:"";width:16px;height:16px;border:2px solid var(--gray-200);border-top-color:var(--green);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{background:linear-gradient(90deg,var(--gray-100) 0%,var(--gray-200) 50%,var(--gray-100) 100%);background-size:200% 100%;animation:skeleton-shimmer 1.4s ease-in-out infinite;border-radius:6px}@keyframes skeleton-shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton-row{height:14px;margin:8px 0}.skeleton-card{height:110px;border-radius:var(--radius)}@keyframes fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.fade-up{animation:fade-up .4s cubic-bezier(.4,0,.2,1) both}.fade-up-1{animation-delay:.05s}.fade-up-2{animation-delay:.1s}.fade-up-3{animation-delay:.15s}.fade-up-4{animation-delay:.2s}:focus-visible{outline:2px solid var(--green);outline-offset:2px}button:focus:not(:focus-visible),a:focus:not(:focus-visible),input:focus:not(:focus-visible){outline:none}@media print{.header,.btn,.modal-overlay{display:none!important}.card{box-shadow:none;border:1px solid #ddd;page-break-inside:avoid}}
