@charset "UTF-8";:root{--bg: #f3f6f4;--surface: #ffffff;--surface-2: #f7faf8;--border: #e0e8e4;--text: #1b2433;--muted: #64748b;--primary: #1e5e48;--primary-hover: #174a39;--primary-soft: #e4f1eb;--side: #123a2d;--side-text: #b5cec3;--side-active: #1c4a3a;--side-current: #2f7a5f;--side-border: #1d4637;--side-group: #7fa696;--ok: #138a52;--ok-soft: #e3f5ec;--warn: #b26a00;--warn-soft: #fff3df;--bad: #c62f3c;--bad-soft: #fde8ea;--info: #0b7bb5;--info-soft: #e2f3fb;--radius: 10px;--shadow: 0 1px 2px rgba(16, 24, 40, .05), 0 1px 3px rgba(16, 24, 40, .06)}*{box-sizing:border-box}html,body{margin:0}body{font-family:Inter,Segoe UI,system-ui,-apple-system,sans-serif;font-size:14px;color:var(--text);background:var(--bg);min-height:100vh}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{margin:0;font-weight:600}h1{font-size:22px}h2{font-size:16px}h3{font-size:14px}.muted{color:var(--muted)}.small{font-size:12px}.right{text-align:right}.nowrap{white-space:nowrap}.hidden{display:none!important}.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}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:20px;flex-wrap:wrap}.page-head p{margin:4px 0 0;color:var(--muted)}.crumbs{font-size:12px;color:var(--muted);margin-bottom:6px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;border-bottom:1px solid var(--border);flex-wrap:wrap}.card-body{padding:18px}.card-foot{padding:12px 18px;border-top:1px solid var(--border)}.grid{display:grid;gap:16px}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th,td{padding:10px 14px;text-align:left;border-bottom:1px solid var(--border);vertical-align:middle}th{font-size:11.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);font-weight:600;background:var(--surface-2);white-space:nowrap}tbody tr:hover{background:#fafbfd}tbody tr:last-child td{border-bottom:0}td.wrap{min-width:180px;max-width:280px;white-space:normal}.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:999px;font-size:12px;font-weight:500;white-space:nowrap;background:#eef1f5;color:#475569}.badge+.badge{margin-left:4px}.b-ok{background:var(--ok-soft);color:var(--ok)}.b-bad{background:var(--bad-soft);color:var(--bad)}.b-warn{background:var(--warn-soft);color:var(--warn)}.b-info{background:var(--info-soft);color:var(--info)}.b-approval{background:var(--warn-soft);color:var(--warn)}.b-production{background:#efe9fb;color:#6b46c1}.b-qc{background:var(--info-soft);color:var(--info)}.b-logistics{background:#e5eef4;color:#2f5f80}.b-payment{background:#fff0e6;color:#c2410c}.b-completed{background:var(--ok-soft);color:var(--ok)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;font:inherit;font-weight:500;font-size:13.5px;padding:8px 14px;border-radius:8px;cursor:pointer;border:1px solid var(--border);background:var(--surface);color:var(--text);white-space:nowrap}.btn:hover{background:var(--surface-2);text-decoration:none}.btn-primary{background:var(--primary);color:#fff;border-color:var(--primary)}.btn-primary:hover{background:var(--primary-hover)}.btn-bad{background:var(--surface);color:var(--bad);border-color:#f2c4c8}.btn-bad:hover{background:var(--bad-soft)}.btn-danger{background:var(--bad);color:#fff;border-color:var(--bad)}.btn-danger:hover{background:#a82632}.btn-sm{padding:5px 10px;font-size:12.5px}.btn:disabled{opacity:.45;cursor:not-allowed;filter:grayscale(.6)}.btn svg{width:15px;height:15px}.btn-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.btn-row.end{justify-content:flex-end}.icon-btn{width:44px;height:44px;flex:none;display:inline-grid;place-items:center;background:none;border:0;border-radius:8px;cursor:pointer;color:var(--muted)}.icon-btn:hover{background:var(--surface-2);color:var(--text)}.icon-btn.danger{color:var(--bad)}.icon-btn.danger:hover{background:var(--bad-soft);color:var(--bad)}.menu-panel{max-width:calc(100vw - 32px);background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 10px 28px #0f172a29,0 2px 6px #0f172a0f;overflow:hidden}.menu-item{width:calc(100% - 12px);margin:0 6px;display:flex;align-items:center;gap:12px;min-height:40px;padding:0 12px;border-radius:8px;white-space:nowrap;background:none;border:0;font:inherit;font-size:13.5px;font-weight:500;color:var(--text);cursor:pointer;text-align:left}.menu-item:hover,.menu-item:focus-visible{background:var(--surface-2);outline:none}.menu-item app-icon{color:var(--muted);flex:none}.menu-item:hover app-icon{color:var(--text)}.menu-item.danger,.menu-item.danger app-icon{color:var(--bad)}.menu-item.danger:hover,.menu-item.danger:focus-visible{background:var(--bad-soft)}.menu-sep{height:1px;margin:6px 0;background:var(--border)}.bulk-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:10px 18px;background:var(--primary-soft);border-bottom:1px solid var(--border);font-size:13.5px}.form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 16px}.form-grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.span-all{grid-column:1/-1}label.field{display:flex;flex-direction:column;gap:5px;font-size:12.5px;color:var(--muted);font-weight:500}input,select,textarea{font:inherit;color:var(--text);padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:var(--surface)}input:focus,select:focus,textarea:focus{outline:2px solid var(--primary-soft);border-color:var(--primary)}select{appearance:none;padding-right:38px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;background-size:16px;cursor:pointer}textarea{resize:vertical;min-height:64px}input.uppercase{text-transform:uppercase}.field.invalid input,.field.invalid select,.field.invalid textarea{border-color:var(--bad)}.field-error{color:var(--bad);font-size:12px;font-weight:400}.req{color:var(--bad)}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:16px;overflow-x:auto;overflow-y:hidden}.tab{background:none;border:0;font:inherit;padding:10px 14px;cursor:pointer;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;text-decoration:none}.tab:hover{color:var(--text);text-decoration:none}.tab.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:600}.note{padding:12px 14px;border-radius:8px;background:var(--info-soft);color:#075985;font-size:13px;display:flex;gap:10px;align-items:flex-start}.note.warn{background:var(--warn-soft);color:#7a4a00}.note.bad{background:var(--bad-soft);color:#8f1d27}.empty{padding:32px;text-align:center;color:var(--muted)}.toast-host{position:fixed;right:20px;bottom:20px;display:flex;flex-direction:column;gap:8px;z-index:100}.toast{background:#1b2433;color:#fff;padding:11px 16px;border-radius:8px;box-shadow:0 8px 24px #0000002e;font-size:13.5px;max-width:360px;animation:pop .2s ease-out}.toast.ok{background:var(--ok)}.toast.bad{background:var(--bad)}@keyframes pop{0%{transform:translateY(8px);opacity:0}}.modal-back{position:fixed;inset:0;background:#0f172a73;display:flex;align-items:center;justify-content:center;z-index:90;padding:20px}.modal{background:var(--surface);border-radius:12px;width:820px;max-width:100%;max-height:90vh;overflow:auto;box-shadow:0 20px 50px #00000040}.modal.sm{width:520px}.modal.lg{width:1120px;height:min(820px,94vh);max-height:94vh;overflow:hidden;display:flex;flex-direction:column}.modal.lg>.card-head,.modal.lg>.modal-foot{flex:none}.modal.lg>.card-body{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;padding:20px 24px}.modal .card-head{position:sticky;top:0;background:var(--surface);z-index:1}.modal-foot{padding:14px 18px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:8px}.x{display:inline-flex;align-items:center;justify-content:center;flex:none;width:38px;height:38px;margin:-6px -8px -6px 0;border:0;border-radius:8px;background:none;font-size:28px;line-height:1;cursor:pointer;color:var(--muted)}.x:hover{background:var(--surface-2);color:var(--text)}.x:focus-visible{outline:2px solid var(--primary-soft);color:var(--text)}@media(max-width:1100px){.g3{grid-template-columns:1fr}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:760px){.form-grid,.form-grid.cols-2{grid-template-columns:1fr}.card-head .btn-row{width:100%}.card-head app-search-box{flex:1;width:auto}.modal-back:has(.modal.lg){padding:8px}.modal.lg{height:calc(100dvh - 16px);max-height:none}.modal.lg>.card-body{padding:16px}}.app-shell{display:grid;grid-template-columns:240px 1fr;grid-template-rows:60px 1fr;min-height:100vh}.sidebar{grid-row:1/3;background:var(--side);color:var(--side-text);display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.brand{height:60px;display:flex;align-items:center;gap:10px;padding:0 20px;color:#fff;font-weight:700;letter-spacing:.3px;border-bottom:1px solid var(--side-border)}.brand-mark{width:36px;height:36px;border-radius:8px;background:#fff;display:grid;place-items:center;overflow:hidden;flex:none}.brand-mark img{width:34px;height:34px;object-fit:cover;object-position:top}.brand small{display:block;font-weight:400;color:var(--side-text);font-size:11px}.nav{padding:12px 10px;overflow-y:auto;flex:1}.nav-group{font-size:11px;text-transform:uppercase;letter-spacing:.8px;color:var(--side-group);padding:14px 12px 6px}.nav a{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:8px;color:var(--side-text);font-size:13.5px}.nav a:hover{background:var(--side-active);color:#fff;text-decoration:none}.nav a.active{background:var(--side-current);color:#fff}.topbar{background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:16px;padding:0 24px;position:sticky;top:0;z-index:20}.topbar .spacer{flex:1}.topbar .who{display:flex;flex-direction:column;text-align:right;font-size:13px;line-height:1.25}.menu-toggle{display:none;background:none;border:0;cursor:pointer;color:var(--text);padding:6px}.avatar{width:32px;height:32px;border-radius:50%;background:var(--primary-soft);color:var(--primary);display:grid;place-items:center;font-weight:600;font-size:12px;flex:none}main.content{padding:24px 28px 48px;min-width:0}.user-menu{position:relative}.user-btn{display:flex;align-items:center;gap:10px;background:none;border:0;padding:4px 6px;border-radius:10px;font:inherit;color:var(--text);cursor:pointer;min-height:44px}.user-btn:hover,.user-btn[aria-expanded=true]{background:var(--surface-2)}.user-menu .menu-panel{position:absolute;right:0;top:calc(100% + 6px);z-index:30;width:240px}.menu-user{display:flex;align-items:center;gap:10px;padding:14px;border-bottom:1px solid var(--border)}.menu-user>div{min-width:0}.menu-user .small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.side-scrim{display:none}.login-page{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);min-height:100vh}.login-hero{background:linear-gradient(160deg,#123a2d,#1e5e48 60%,#3f8f6f);color:#e4f1eb;display:flex;flex-direction:column;justify-content:space-between;gap:32px;padding:48px}.login-hero h1{color:#fff;font-size:30px;line-height:1.25;margin-top:28px;max-width:460px}.login-hero p{max-width:440px;line-height:1.6;opacity:.85}.login-hero .logo{background:#fff;border-radius:12px;padding:10px;width:120px}.login-hero .logo img{width:100%;display:block}.login-hero ul{list-style:none;padding:0;margin:24px 0 0;display:grid;gap:10px;font-size:14px}.login-hero li:before{content:"\2713";color:#7ab39b;margin-right:10px;font-weight:700}.login-panel{display:grid;place-items:center;padding:32px 16px;background:var(--bg)}.login-card{width:100%;max-width:400px;padding:32px}.login-card h2{font-size:22px}.login-card form{display:grid;gap:14px;margin-top:22px}.login-card .btn-primary{padding:11px 14px;font-size:15px}.auth-help{margin:18px 0 0;text-align:center;font-size:13px;color:var(--muted)}@media(max-width:760px){.app-shell{grid-template-columns:1fr}.sidebar{position:fixed;left:0;top:0;width:240px;z-index:60;transform:translate(-100%);transition:transform .2s ease}.app-shell.nav-open .sidebar{transform:none}.app-shell.nav-open .side-scrim{display:block;position:fixed;inset:0;background:#0f172a73;z-index:50}.menu-toggle{display:inline-flex}.topbar{padding:0 16px}.topbar .who{display:none}main.content{padding:16px}.login-page{grid-template-columns:minmax(0,1fr)}.login-hero{padding:24px 16px;gap:20px}.login-hero h1{font-size:24px;margin-top:18px}.login-hero .logo{width:88px;padding:8px}.login-panel{padding:24px 16px}.login-card{padding:24px 20px}}
