@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Outfit Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/outfit-latin-ext-wght-normal-DdQaqQDo.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Outfit Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/outfit-latin-wght-normal-Bc-8i84L.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--font-sans:"Inter Variable", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-display:"Outfit Variable", "Inter Variable", ui-sans-serif, system-ui, sans-serif;--font-mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--fs-badge:11px;--fs-label:12.5px;--fs-table:13.5px;--fs-body:14px;--fs-title:16px;--fs-dialog:20px;--fs-page:28px;--fs-display:30px;--ink-900:#222120;--ink-800:#2e2d2b;--ink-700:#454340;--ink-600:#5c5954;--ink-500:#706c66;--ink-400:#9d988f;--ink-300:#c8c2b8;--ink-200:#e1dbd2;--line:#ebe6de;--line-strong:#ddd6cb;--bg:#f4f2ee;--bg-subtle:#f9f8f5;--surface:#fff;--surface-hover:#faf8f4;--fill:#f2efea;--fill-strong:#e8e3db;--charcoal:#3e3e3e;--charcoal-900:#2b2a28;--sidebar-bg:#2b2a28;--sand:#d8cfc3;--taupe:#b8b0a2;--brand:#d97b35;--brand-600:#c2651f;--brand-700:#9e4f16;--brand-50:#fdf4ec;--brand-100:#fae4d2;--brand-200:#f3c9a6;--green:#2f7a4f;--green-500:#3c9a64;--green-bg:#eaf5ee;--green-line:#c4e3cf;--amber:#8a5d06;--amber-500:#d9a21b;--amber-bg:#fdf6e0;--amber-line:#f0dd9e;--red:#b93a32;--red-500:#d9534a;--red-bg:#fcefec;--red-line:#f2c9c4;--info:#3e5c76;--info-bg:#eef3f7;--info-line:#d3dfea;--violet:var(--brand-700);--violet-bg:var(--brand-50);--violet-line:var(--brand-200);--radius-sm:6px;--radius:10px;--radius-lg:14px;--radius-xl:16px;--shadow-xs:0 1px 2px #2820140d;--shadow-sm:0 1px 2px #2820140a, 0 1px 3px #2820140d;--shadow-md:0 4px 14px -4px #28201424, 0 2px 4px #2820140a;--shadow-lg:0 24px 48px -12px #2820143d, 0 8px 16px -8px #2820141a;--ring:0 0 0 3px #d97b3538;--sidebar-w:244px;--topbar-h:60px;--ease:cubic-bezier(.2, .8, .2, 1)}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}html,body,#root{height:100%}body{font-family:var(--font-sans);font-size:var(--fs-body);color:var(--ink-700);background:var(--bg);font-feature-settings:"cv11", "ss01", "ss03";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;line-height:1.5}h1,h2,h3,h4{color:var(--ink-900);margin:0;font-weight:600;line-height:1.25}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.01em}p{margin:0}a{color:var(--brand-700);text-decoration:none}a:hover{color:var(--brand-600)}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}img{max-width:100%;display:block}::selection{background:var(--brand-100)}:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.display{font-family:var(--font-display);letter-spacing:-.02em;font-weight:600}.mono{font-family:var(--font-mono);font-size:.92em}.muted,.subtle{color:var(--ink-500)}.small{font-size:var(--fs-label)}.tiny{font-size:var(--fs-badge)}.strong{color:var(--ink-900);font-weight:600}.nowrap{white-space:nowrap}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.row{align-items:center;gap:8px;display:flex}.row-wrap{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.col{flex-direction:column;gap:8px;display:flex}.grow{flex:auto;min-width:0}.spacer{flex:1}.stack-sm>*+*{margin-top:8px}.stack>*+*{margin-top:16px}.stack-lg>*+*{margin-top:24px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.fade-in{animation:fade-in .35s var(--ease) both}@keyframes fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.35}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}@media print{.sidebar,.topbar,.spec-nav,.tabs,.btn,.toasts,.product-hero .col{display:none!important}.app{display:block}body{background:#fff}.content{max-width:none;padding:0}.card{box-shadow:none;break-inside:avoid}.spec-layout{display:block}}.btn{border:1px solid var(--line-strong);background:var(--surface);height:36px;color:var(--ink-900);font-size:var(--fs-table);white-space:nowrap;box-shadow:var(--shadow-xs);border-radius:8px;justify-content:center;align-items:center;gap:7px;padding:0 14px;font-weight:550;transition:background .15s,border-color .15s,box-shadow .15s,transform 50ms;display:inline-flex}.btn:hover{background:var(--surface-hover);border-color:var(--ink-300)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn svg{flex:none;width:16px;height:16px}.btn-primary{background:var(--ink-900);border-color:var(--ink-900);color:#fff}.btn-primary:hover{background:var(--ink-800);border-color:var(--ink-800)}.btn-brand{background:var(--brand);border-color:var(--brand);color:#fff}.btn-brand:hover{background:var(--brand-600);border-color:var(--brand-600)}.btn-ai{color:#fff;background:linear-gradient(135deg,#e3894a 0%,#c9651f 100%);border:0}.btn-ai:hover{filter:brightness(1.06);background:linear-gradient(135deg,#e3894a 0%,#c9651f 100%)}.btn-danger{color:var(--red)}.btn-ghost{box-shadow:none;color:var(--ink-600);background:0 0;border-color:#0000}.btn-ghost:hover{color:var(--ink-900);background:#2b2a280f;border-color:#0000}.btn-sm{height:30px;font-size:var(--fs-label);border-radius:7px;padding:0 10px}.btn-sm svg{width:14px;height:14px}.btn-lg{height:44px;font-size:var(--fs-body);border-radius:10px;padding:0 20px}.btn-icon{width:36px;padding:0}.btn-icon.btn-sm{width:30px}.btn-block{width:100%}.spinner{border:2px solid;border-right-color:#0000;border-radius:50%;flex:none;width:15px;height:15px;animation:.7s linear infinite spin}.input,.select,.textarea{border:1px solid var(--line-strong);background:var(--surface);width:100%;height:38px;color:var(--ink-900);font-size:var(--fs-table);border-radius:8px;padding:0 12px;transition:border-color .15s,box-shadow .15s}.textarea{resize:vertical;height:auto;min-height:84px;padding:9px 12px;line-height:1.5}.select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2377736c' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 10px center;background-repeat:no-repeat;padding-right:32px}.input::placeholder,.textarea::placeholder{color:var(--ink-500)}.input:focus,.select:focus,.textarea:focus{border-color:var(--brand);box-shadow:var(--ring);outline:none}.input:disabled,.select:disabled,.textarea:disabled{background:var(--bg-subtle);color:var(--ink-500)}.input.is-error,.select.is-error,.textarea.is-error{border-color:var(--red-500);background:#fffaf9}.input.is-error:focus,.textarea.is-error:focus{box-shadow:0 0 0 3px #b93a3226}.input-group{align-items:center;display:flex;position:relative}.input-group .input{padding-right:58px}.input-suffix{font-size:var(--fs-label);color:var(--ink-500);pointer-events:none;position:absolute;right:12px}.input-icon{color:var(--ink-400);pointer-events:none;display:flex;position:absolute;left:11px}.input-icon+.input{padding-left:34px}.field{flex-direction:column;gap:6px;display:flex}.field-label{font-size:var(--fs-label);color:var(--ink-800);align-items:center;gap:6px;font-weight:600;display:flex}.field-label .req{color:var(--red-500)}.field-help{font-size:var(--fs-label);color:var(--ink-500)}.field-error{font-size:var(--fs-label);color:var(--red);align-items:flex-start;gap:5px;display:flex}.field-error svg{flex:none;width:14px;height:14px;margin-top:1px}.checkbox{width:16px;height:16px;accent-color:var(--brand)}.segmented{background:var(--fill);border-radius:9px;gap:2px;padding:3px;display:inline-flex}.segmented button{height:28px;font-size:var(--fs-label);color:var(--ink-600);background:0 0;border:0;border-radius:7px;align-items:center;gap:6px;padding:0 12px;font-weight:550;display:inline-flex}.segmented button:hover{color:var(--ink-900)}.segmented button.is-active{background:var(--surface);color:var(--ink-900);box-shadow:var(--shadow-sm)}.field>.segmented{align-self:flex-start}.segmented.is-error{box-shadow:inset 0 0 0 1px var(--red-line);background:var(--red-bg)}.pill{height:22px;font-size:var(--fs-badge);white-space:nowrap;border:1px solid #0000;border-radius:6px;align-items:center;gap:5px;padding:0 7px;font-weight:600;line-height:1;display:inline-flex}.pill svg{flex:none;width:12px;height:12px}.pill-green{background:var(--green-bg);color:var(--green);border-color:var(--green-line)}.pill-amber{background:var(--amber-bg);color:var(--amber);border-color:var(--amber-line)}.pill-red{background:var(--red-bg);color:var(--red);border-color:var(--red-line)}.pill-blue{background:var(--info-bg);color:var(--info);border-color:var(--info-line)}.pill-violet{background:var(--violet-bg);color:var(--violet);border-color:var(--violet-line)}.pill-gray{background:var(--fill);color:var(--ink-600);border-color:var(--line)}.pill-dark{background:var(--ink-900);color:#fff}.pill-dot:before{content:"";background:currentColor;border-radius:50%;width:6px;height:6px}.pill-live:before{animation:1.4s ease-in-out infinite pulse-dot}.chip{border:1px solid var(--line-strong);height:22px;font-size:var(--fs-badge);color:var(--ink-800);background:var(--surface);white-space:nowrap;border-radius:6px;align-items:center;gap:5px;padding:0 7px;font-weight:600;display:inline-flex}.chip svg{width:12px;height:12px;color:var(--ink-400)}.chip-market{background:var(--fill);min-width:26px;height:20px;color:var(--ink-700);font-size:var(--fs-badge);letter-spacing:.02em;border-color:#0000;justify-content:center;padding:0 5px;font-weight:650}.flag{vertical-align:-.15em;box-shadow:0 0 0 1px var(--line);border-radius:2px;flex:none;display:inline-block}.chip-market:has(.flag){gap:4px}.product-no{font-family:var(--font-mono);font-size:var(--fs-badge);color:var(--ink-500);letter-spacing:.01em;white-space:nowrap;font-weight:500}.tag{font-size:var(--fs-label);background:var(--fill);color:var(--ink-700);border-radius:7px;align-items:center;gap:5px;padding:3px 9px;font-weight:550;display:inline-flex}.tag svg{width:13px;height:13px}.tag-red{background:var(--red-bg);color:var(--red)}.tag-amber{background:var(--amber-bg);color:var(--amber)}.tag-green{background:var(--green-bg);color:var(--green)}.tag-blue{background:var(--info-bg);color:var(--info)}.tag-violet{background:var(--violet-bg);color:var(--violet)}.kbd{border:1px solid var(--line-strong);background:var(--surface);min-width:20px;height:20px;font-size:var(--fs-badge);color:var(--ink-500);border-bottom-width:2px;border-radius:5px;justify-content:center;align-items:center;padding:0 5px;font-weight:600;display:inline-flex}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs)}.card-header{border-bottom:1px solid var(--line);border-radius:var(--radius-lg) var(--radius-lg) 0 0;align-items:center;gap:10px;min-height:50px;padding:10px 18px;display:flex}.card-header h3{font-size:var(--fs-title);align-items:center;gap:8px;font-weight:600;display:flex}.card-header h3 svg{width:16px;height:16px;color:var(--ink-400)}.card-header .count{font-size:var(--fs-label);color:var(--ink-500);background:var(--fill);border-radius:6px;padding:1px 7px;font-weight:600}.card-body{padding:18px}.card-footer{border-top:1px solid var(--line);align-items:center;gap:8px;padding:12px 18px;display:flex}.card-flat{box-shadow:none}.table-wrap{overflow-x:auto}.table{border-collapse:separate;border-spacing:0;width:100%;font-size:var(--fs-table)}.table th{text-align:left;font-size:var(--fs-label);color:var(--ink-500);background:var(--bg-subtle);border-bottom:1px solid var(--line);white-space:nowrap;padding:9px 16px;font-weight:500}.table td{border-bottom:1px solid var(--line);vertical-align:middle;color:var(--ink-800);padding:12px 16px}@media (width<=1320px){.table th,.table td{padding-left:10px;padding-right:10px}}.table.divided th+th,.table.divided td+td{border-left:1px solid var(--line)}.table tbody tr{transition:background .12s}.table.hover tbody tr:hover{background:var(--surface-hover);cursor:pointer}.table tbody tr:last-child td{border-bottom:0}.table .num{text-align:right;font-variant-numeric:tabular-nums}.product-cell{align-items:center;gap:12px;min-width:220px;max-width:320px;display:flex}@media (width<=1320px){.product-cell{max-width:300px}}.thumb{background:var(--fill);border:1px solid var(--line);border-radius:10px;flex:none;justify-content:center;align-items:center;width:44px;height:44px;display:flex;overflow:hidden}.thumb img{object-fit:cover;object-position:center 30%;width:100%;height:100%}.thumb-sm{border-radius:8px;width:34px;height:34px}.thumb-lg{border-radius:14px;width:64px;height:64px}.product-cell .name{color:var(--ink-900);margin-top:3px;font-weight:600;line-height:1.3}.tabs{border-bottom:1px solid var(--line);flex-wrap:wrap;gap:2px;display:flex}.tabs-sticky{top:var(--topbar-h);z-index:20;background:var(--bg);position:sticky}@media (width<=1400px){.tabs-sticky .tab svg{display:none}}.tab{font-size:var(--fs-table);color:var(--ink-500);white-space:nowrap;background:0 0;border:0;align-items:center;gap:6px;padding:10px 9px 12px;font-weight:550;display:inline-flex;position:relative}.tab svg{width:15px;height:15px}.tab:hover,.tab.is-active{color:var(--ink-900)}.tab.is-active:after{content:"";background:var(--brand);border-radius:2px;height:2px;position:absolute;bottom:-1px;left:8px;right:8px}.tab .badge{min-width:18px;height:18px;font-size:var(--fs-badge);background:var(--fill);color:var(--ink-600);border-radius:999px;justify-content:center;align-items:center;padding:0 5px;font-weight:700;display:inline-flex}.tab .badge.red{background:var(--red-bg);color:var(--red)}.tab .badge.amber{background:var(--amber-bg);color:var(--amber)}.overlay{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:60;background:#2221206b;justify-content:center;align-items:flex-start;padding:8vh 16px 16px;animation:.18s both fade;display:flex;position:fixed;inset:0}@keyframes fade{0%{opacity:0}}.modal{background:var(--surface);border-radius:var(--radius-xl);width:min(560px,100%);max-height:84vh;box-shadow:var(--shadow-lg);animation:pop .22s var(--ease) both;flex-direction:column;display:flex;overflow:hidden}.modal-lg{width:min(760px,100%)}@keyframes pop{0%{opacity:0;transform:translateY(8px)scale(.985)}}.modal-header{align-items:flex-start;gap:12px;padding:20px 22px 14px;display:flex}.modal-header h2{font-size:var(--fs-dialog)}.modal-body{padding:4px 22px 18px;overflow-y:auto}.modal-footer{border-top:1px solid var(--line);background:var(--bg-subtle);justify-content:flex-end;gap:8px;padding:14px 22px;display:flex}.drawer-overlay{justify-content:flex-end;align-items:stretch;padding:0}.drawer{background:var(--surface);width:min(720px,100vw);height:100%;box-shadow:var(--shadow-lg);animation:slide-in .26s var(--ease) both;flex-direction:column;display:flex}.drawer-wide{width:min(1040px,100vw)}@keyframes slide-in{0%{opacity:0;transform:translate(24px)}}.drawer-header{border-bottom:1px solid var(--line);align-items:center;gap:12px;padding:16px 20px;display:flex}.drawer-body{flex:1;padding:20px;overflow-y:auto}.toasts{z-index:90;pointer-events:none;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:20px;right:20px}.toast{pointer-events:auto;background:var(--ink-900);color:#fff;min-width:280px;max-width:420px;box-shadow:var(--shadow-lg);font-size:var(--fs-table);animation:pop .22s var(--ease) both;border-radius:12px;align-items:flex-start;gap:10px;padding:12px 14px;display:flex}.toast svg{flex:none;width:18px;height:18px;margin-top:1px}.toast.success svg{color:#6fe0a6}.toast.error svg{color:#ff9b9e}.toast .toast-title{font-weight:600}.toast .toast-body{color:#ffffffb8;font-size:var(--fs-label);margin-top:2px}.toast .toast-link{color:#fff;font-size:var(--fs-label);text-underline-offset:2px;margin-top:6px;font-weight:600;text-decoration:underline;display:inline-block}.skeleton{background:linear-gradient(90deg,#efebe5 0,#f7f5f1 120px,#efebe5 240px) 0 0/800px 100%;border-radius:6px;animation:1.4s linear infinite shimmer}.skeleton-line{height:10px;margin:8px 0}.progress{background:var(--fill-strong);border-radius:999px;height:6px;overflow:hidden}.progress>span{border-radius:inherit;background:var(--brand);height:100%;transition:width .5s var(--ease);display:block}.progress.green>span{background:var(--green-500)}.progress.amber>span{background:var(--amber-500)}.progress.red>span{background:var(--red-500)}.ring{flex:none;justify-content:center;align-items:center;display:inline-flex;position:relative}.ring svg{transform:rotate(-90deg)}.ring .ring-label{flex-direction:column;justify-content:center;align-items:center;line-height:1.1;display:flex;position:absolute;inset:0}.ring .ring-value{font-family:var(--font-display);color:var(--ink-900);font-weight:600}.empty{text-align:center;color:var(--ink-500);flex-direction:column;align-items:center;gap:8px;padding:40px 24px;display:flex}.empty .empty-icon{background:var(--brand-50);width:48px;height:48px;color:var(--brand);border-radius:14px;justify-content:center;align-items:center;margin-bottom:6px;display:flex}.empty h4{font-size:var(--fs-title)}.callout{border:1px solid var(--line);background:var(--bg-subtle);font-size:var(--fs-table);color:var(--ink-700);border-radius:10px;gap:10px;padding:12px 14px;display:flex}.callout>svg{flex:none;width:17px;height:17px;margin-top:1px}.callout.red{background:var(--red-bg);border-color:var(--red-line);color:#8d2227}.callout.red>svg{color:var(--red)}.callout.amber{background:var(--amber-bg);border-color:var(--amber-line);color:#7a4a00}.callout.amber>svg{color:var(--amber)}.callout.green{background:var(--green-bg);border-color:var(--green-line);color:#0f5e3a}.callout.green>svg{color:var(--green)}.callout.blue{background:var(--info-bg);border-color:var(--info-line);color:var(--info)}.callout.violet{background:var(--violet-bg);border-color:var(--violet-line);color:var(--brand-700)}.callout.violet>svg{color:var(--violet)}.callout strong{color:inherit}.avatar{width:32px;height:32px;font-size:var(--fs-label);color:#fff;border-radius:50%;flex:none;justify-content:center;align-items:center;font-weight:700;display:inline-flex;overflow:hidden}.avatar img{object-fit:cover;width:100%;height:100%}.avatar-sm{width:24px;height:24px;font-size:var(--fs-badge)}.dropzone{border:1.5px dashed var(--line-strong);background:var(--bg-subtle);text-align:center;color:var(--ink-600);cursor:pointer;border-radius:12px;padding:22px;transition:border-color .15s,background .15s}.dropzone:hover,.dropzone.is-over{border-color:var(--brand);background:var(--brand-50)}.dropzone .dz-icon{background:var(--surface);width:40px;height:40px;color:var(--brand);box-shadow:var(--shadow-sm);border-radius:12px;justify-content:center;align-items:center;margin:0 auto 8px;display:flex}.file-icon{width:36px;height:42px;font-size:var(--fs-badge);letter-spacing:.04em;color:#fff;border-radius:6px;flex:none;justify-content:center;align-items:flex-end;padding-bottom:6px;font-weight:800;display:flex;position:relative}.file-icon:before{content:"";background:#ffffff73;border-bottom-left-radius:4px;width:11px;height:11px;position:absolute;top:0;right:0}.generating{background:var(--brand-50);border:1px solid var(--brand-100);height:24px;color:var(--brand-600);font-size:var(--fs-label);border-radius:999px;align-items:center;gap:6px;padding:0 10px;font-weight:600;display:inline-flex}.generating .spinner{border-width:1.6px;width:11px;height:11px}.menu{z-index:50;background:var(--surface);border:1px solid var(--line);min-width:220px;box-shadow:var(--shadow-lg);animation:pop .16s var(--ease) both;border-radius:12px;padding:6px;position:absolute}.menu-item{width:100%;font-size:var(--fs-table);color:var(--ink-800);text-align:left;background:0 0;border:0;border-radius:8px;align-items:center;gap:9px;padding:8px 10px;display:flex}.menu-item:hover{background:var(--surface-hover)}.menu-item svg{width:16px;height:16px;color:var(--ink-500)}.divider{background:var(--line);height:1px;margin:6px 0}.kv{font-size:var(--fs-table);grid-template-columns:minmax(120px,38%) 1fr;gap:10px 16px;display:grid}.kv dt{color:var(--ink-500)}.kv dd{color:var(--ink-900);margin:0;font-weight:500}.stat-label{font-size:var(--fs-label);color:var(--ink-500);font-weight:500}.bold-allergen strong{color:var(--ink-900);font-weight:750}.chain-row{border-bottom:1px solid var(--line);align-items:flex-start;gap:12px;padding:10px 16px;display:flex}.chain-row:last-child{border-bottom:0}.chain-step{background:var(--ink-900);color:#fff;width:24px;height:24px;font-size:var(--fs-label);border-radius:999px;flex:none;justify-content:center;align-items:center;margin-top:1px;font-weight:700;display:inline-flex}.btn.is-disabled{pointer-events:none;opacity:.5}@media print{.sidebar,.topbar,.modal-footer,.drawer-header .btn,.toasts{display:none!important}.overlay{background:0 0;padding:0;position:static}.modal,.drawer{box-shadow:none;width:100%;max-width:none;max-height:none}.print-area{color:#000}}.overdue{color:var(--red);font-weight:600}.feedback-attached{border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-subtle);font-size:var(--fs-label);color:var(--ink-600);overflow-wrap:anywhere;flex-direction:column;gap:3px;padding:9px 12px;display:flex}.feedback-attached .strong{color:var(--ink-800)}.feedback-mono{color:var(--ink-700);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.feedback-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.feedback-item{border:1px solid var(--line);border-radius:var(--radius);min-width:0;padding:10px 12px}.feedback-who{text-overflow:ellipsis;white-space:nowrap;min-width:0;margin-left:auto;overflow:hidden}.feedback-text{font-size:var(--fs-table);color:var(--ink-800);white-space:pre-wrap;overflow-wrap:anywhere;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;margin:6px 0 0;display:-webkit-box;overflow:hidden}.feedback-note{border-left:2px solid var(--green-line);color:var(--ink-600);overflow-wrap:anywhere;margin:6px 0 0;padding-left:8px}.app{grid-template-columns:var(--sidebar-w) 1fr;min-height:100%;display:grid}.sidebar{background:var(--sidebar-bg);color:#ffffffb8;scrollbar-width:thin;scrollbar-color:#ffffff26 transparent;flex-direction:column;gap:2px;height:100vh;padding:18px 12px 12px;display:flex;position:sticky;top:0;overflow-y:auto}.brand{align-items:center;gap:11px;padding:2px 8px 18px;display:flex}.brand-mark{border-radius:9px;flex:none}.sidebar .brand-mark{box-shadow:0 0 0 1px #ffffff1a}.brand-name{font-family:var(--font-display);font-size:var(--fs-title);color:#fff;letter-spacing:-.01em;font-weight:600;line-height:1.15}.brand-sub{font-size:var(--fs-label);color:#ffffff80;margin-top:2px}.nav-section{font-size:var(--fs-badge);color:#ffffff61;padding:16px 10px 6px;font-weight:500}.nav-link{color:#ffffffb3;height:36px;font-size:var(--fs-table);border-radius:8px;align-items:center;gap:10px;padding:0 10px;font-weight:500;transition:background .12s,color .12s;display:flex;position:relative}.nav-link svg{opacity:.8;flex:none;width:17px;height:17px}.nav-link:hover{color:#fff;background:#ffffff0f}.nav-link.active{color:#fff;background:#ffffff1a}.nav-link.active:before{content:"";background:var(--brand);border-radius:0 3px 3px 0;width:3px;position:absolute;top:8px;bottom:8px;left:-12px}.nav-link.active svg{color:var(--brand);opacity:1}.nav-link .nav-badge{min-width:20px;height:20px;font-size:var(--fs-badge);color:#ffffffd9;background:#ffffff1f;border-radius:6px;justify-content:center;align-items:center;margin-left:auto;padding:0 6px;font-weight:650;display:inline-flex}.nav-link .nav-badge.red{background:var(--red-500);color:#fff}.nav-link .nav-badge.blue{background:var(--brand);color:#fff}.sidebar-footer{flex-direction:column;gap:8px;margin-top:auto;padding-top:12px;display:flex}.workspace-card{border-top:1px solid #ffffff14;align-items:center;gap:10px;padding:10px;display:flex;position:relative}.workspace-card .who{flex:1;min-width:0}.workspace-card .who .n{font-size:var(--fs-table);color:#fff;font-weight:600}.workspace-card .who .e{font-size:var(--fs-badge);color:#ffffff80}.workspace-card .btn-ghost{color:#fff9}.workspace-card .btn-ghost:hover{color:#fff;background:#ffffff14}.sidebar .avatar{box-shadow:0 0 0 2px #ffffff1f}.main{flex-direction:column;min-width:0;display:flex}.topbar{z-index:30;height:var(--topbar-h);-webkit-backdrop-filter:saturate(1.2)blur(10px);backdrop-filter:saturate(1.2)blur(10px);border-bottom:1px solid var(--line);background:#f4f2eedb;align-items:center;gap:12px;padding:0 28px;display:flex;position:sticky;top:0}.search-trigger{border:1px solid var(--line-strong);background:var(--surface);width:min(380px,40vw);height:36px;color:var(--ink-500);font-size:var(--fs-table);box-shadow:var(--shadow-xs);border-radius:9px;align-items:center;gap:8px;padding:0 10px 0 12px;display:flex}.search-trigger svg{width:16px;height:16px}.search-trigger .kbd{margin-left:auto}.search-trigger .st-text{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.feedback-trigger{flex:none}.content{width:100%;max-width:1360px;margin:0 auto;padding:28px 28px 64px}.page-header{flex-wrap:wrap;align-items:flex-end;gap:16px;margin-bottom:22px;display:flex}.page-header h1{font-weight:600;font-size:var(--fs-page);letter-spacing:-.02em}.page-header p{color:var(--ink-500);margin-top:4px}.page-header .actions{gap:8px;margin-left:auto;display:flex}.breadcrumb{font-size:var(--fs-table);color:var(--ink-500);align-items:center;gap:6px;min-width:0;display:flex}.breadcrumb a{color:var(--ink-500)}.breadcrumb a:hover{color:var(--ink-900)}.breadcrumb svg{width:14px;height:14px;color:var(--ink-300)}.breadcrumb .current{color:var(--ink-900);font-weight:550}.grid{gap:16px;display:grid}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.split{grid-template-columns:minmax(0,1fr) 360px;align-items:start;gap:20px;display:grid}.split-wide{grid-template-columns:minmax(0,1fr) 420px}.toolbar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:14px;display:flex}.filter-pills{flex-wrap:wrap;gap:6px;display:flex}.filter-pill{border:1px solid var(--line-strong);background:var(--surface);height:32px;font-size:var(--fs-table);color:var(--ink-600);border-radius:8px;align-items:center;gap:7px;padding:0 12px;font-weight:550;display:inline-flex}.filter-pill:hover{border-color:var(--ink-300);color:var(--ink-900)}.filter-pill.is-active{background:var(--ink-900);border-color:var(--ink-900);color:#fff}.filter-pill .n{font-size:var(--fs-badge);opacity:.7;font-weight:700}.filter-pill svg{width:14px;height:14px}@media (width<=1180px){.split,.split-wide{grid-template-columns:1fr}.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}}.menu-toggle,.sidebar-backdrop{display:none}@media (width<=860px){.app{grid-template-columns:1fr}.sidebar{display:none}.sidebar.is-open{z-index:70;width:280px;box-shadow:var(--shadow-lg);animation:slide-in-left .22s var(--ease) both;display:flex;position:fixed;top:0;bottom:0;left:0}.sidebar-backdrop{z-index:65;background:#22212073;display:block;position:fixed;inset:0}.menu-toggle{flex:none;display:inline-flex}.search-trigger{flex:1;width:auto;min-width:0}.topbar>.spacer{display:none}.topbar>div{flex:none}.search-trigger .kbd{display:none}.feedback-trigger{flex:none;width:36px;padding:0}.feedback-trigger .ft-text{display:none}.content{padding:20px 16px 48px}.topbar{padding:0 16px}.grid-2,.grid-3{grid-template-columns:1fr}}@keyframes slide-in-left{0%{opacity:0;transform:translate(-24px)}}.login{background:var(--bg);justify-content:center;align-items:center;min-height:100vh;padding:40px 16px;display:flex}.login-box{text-align:center;flex-direction:column;align-items:center;width:min(360px,100%);display:flex}.login-box .brand-mark{box-shadow:var(--shadow-md);border-radius:16px}.login-box h1{font-size:var(--fs-page);letter-spacing:-.02em;margin-top:22px}.login-box .col{width:100%}.login-note{font-size:var(--fs-label);color:var(--ink-500);margin-top:18px}.google-btn{color:var(--ink-900);border:1px solid var(--line-strong);box-shadow:var(--shadow-xs);background:#fff;gap:10px;font-weight:600}.google-btn:hover{color:var(--ink-900)}.google-btn.is-disabled{opacity:.55;cursor:not-allowed}.hello{flex-wrap:wrap;align-items:flex-end;gap:16px;margin-bottom:24px;display:flex}.hello h1{font-weight:600;font-size:var(--fs-page);letter-spacing:-.02em}.kpis{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs);grid-template-columns:repeat(5,minmax(0,1fr));margin-bottom:20px;display:grid;overflow:hidden}.kpi{text-align:left;color:inherit;padding:16px 18px 15px;transition:background .12s;display:block;position:relative}.kpi+.kpi{border-left:1px solid var(--line)}a.kpi:hover{background:var(--surface-hover);color:inherit}.kpi .kpi-top{font-size:var(--fs-label);color:var(--ink-500);align-items:center;gap:8px;font-weight:500;display:flex}.kpi .kpi-top:before{content:"";background:var(--kpi-tone,var(--ink-300));border-radius:2px;width:7px;height:7px}.kpi .kpi-value{font-family:var(--font-display);font-size:var(--fs-display);color:var(--ink-900);letter-spacing:-.02em;margin-top:8px;font-weight:600;line-height:1.1}.kpi .kpi-sub{font-size:var(--fs-label);color:var(--ink-500);margin-top:2px}.kpi.green{--kpi-tone:var(--green-500)}.kpi.amber{--kpi-tone:var(--amber-500)}.kpi.red{--kpi-tone:var(--red-500)}.kpi.brand{--kpi-tone:var(--brand)}.kpi.ink{--kpi-tone:var(--charcoal)}.dash-grid{grid-template-columns:minmax(0,1fr) 380px;align-items:start;gap:20px;display:grid}.legend-dot{border-radius:50%;width:8px;height:8px;margin-right:8px;display:inline-block}.task-list{flex-direction:column;display:flex}.task-filters{border-bottom:1px solid var(--line);gap:12px;padding:14px 18px;display:grid}.task-pagination{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:12px 18px;display:flex}.task-item{border-bottom:1px solid var(--line);color:inherit;gap:12px;padding:12px 18px;transition:background .12s;display:flex}.task-item:last-child{border-bottom:0}.task-item:hover{background:var(--surface-hover);color:inherit}.sev{border-radius:50%;flex:none;width:8px;height:8px;margin-top:7px}.sev.critical{background:var(--red-500);box-shadow:0 0 0 3px var(--red-bg)}.sev.warning{background:var(--amber-500);box-shadow:0 0 0 3px var(--amber-bg)}.sev.info{background:var(--brand);box-shadow:0 0 0 3px var(--brand-50)}.pipeline{background:var(--fill-strong);border-radius:999px;gap:2px;height:10px;display:flex;overflow:hidden}.pipeline span{height:100%}.pipeline-legend{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:14px;display:grid}.pipeline-legend div{font-size:var(--fs-label);color:var(--ink-500)}.pipeline-legend b{font-size:var(--fs-title);font-family:var(--font-display);color:var(--ink-900);font-weight:600;display:block}.feed{flex-direction:column;display:flex}.feed-item{font-size:var(--fs-table);gap:10px;padding:10px 18px;display:flex}.feed-item+.feed-item{border-top:1px solid var(--line)}.feed-item .when{font-size:var(--fs-badge);color:var(--ink-500);white-space:nowrap}.cert-row{border-bottom:1px solid var(--line);color:inherit;align-items:center;gap:12px;padding:11px 18px;display:flex}.cert-row:last-child{border-bottom:0}.cert-row:hover{background:var(--surface-hover);color:inherit}.cert-badge{width:36px;height:36px;font-size:var(--fs-badge);border-radius:10px;flex:none;justify-content:center;align-items:center;font-weight:800;display:flex}@media (width<=1280px){.kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.kpi+.kpi{border-left:0}.kpi{border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.dash-grid{grid-template-columns:minmax(0,1fr)}}.product-hero{align-items:stretch;gap:22px;margin-bottom:18px;display:flex}.product-hero .pack{border:1px solid var(--line);background:linear-gradient(#f6f3ee,#ebe6de);border-radius:16px;flex:none;justify-content:center;align-items:center;width:150px;height:180px;display:flex;overflow:hidden}.product-hero .pack img{object-fit:contain;width:100%;height:100%;padding:8px}.product-hero .pack{position:relative}.pack-change{border:1px solid var(--line);width:30px;height:30px;color:var(--ink-700);opacity:0;background:#ffffffeb;border-radius:50%;justify-content:center;align-items:center;transition:opacity .15s;display:flex;position:absolute;bottom:8px;right:8px}.product-hero .pack:hover .pack-change,.pack-change:focus-visible{opacity:1}.pack-placeholder{cursor:pointer;color:#ffffffe6;text-align:center;border:0;flex-direction:column;justify-content:center;align-items:center;gap:8px;width:100%;height:100%;padding:10px;display:flex}.pack-placeholder .brand-label{font-family:var(--font-display);font-weight:600;font-size:var(--fs-title)}.product-hero h1{font-weight:600;font-size:var(--fs-page);letter-spacing:-.02em;line-height:1.15}.hero-meta{flex-wrap:wrap;gap:22px;margin-top:14px;display:flex}.hero-meta>div{min-width:110px}.hero-meta .v{font-size:var(--fs-table);color:var(--ink-900);margin-top:3px;font-weight:600}.step-list{flex-direction:column;display:flex}.step{align-items:center;gap:12px;padding:10px 0;display:flex}.step+.step{border-top:1px dashed var(--line)}.step .label{color:var(--ink-900);font-weight:600;font-size:var(--fs-table)}.step .detail{font-size:var(--fs-label);color:var(--ink-500)}.facts{grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.fact{border-right:1px solid var(--line);border-bottom:1px solid var(--line);min-width:0;padding:14px 18px}.fact:nth-child(3n){border-right:0}.fact .v{color:var(--ink-900);font-weight:600;font-size:var(--fs-table);margin-top:5px}.allergen-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;display:grid}.allergen{text-align:center;font-size:var(--fs-badge);border:1px solid var(--line);color:var(--ink-500);background:var(--bg-subtle);border-radius:8px;padding:7px 6px;font-weight:600;line-height:1.25}.allergen.contains{background:var(--red-bg);border-color:var(--red-line);color:var(--red)}.allergen.may_contain{background:var(--amber-bg);border-color:var(--amber-line);color:var(--amber)}.nutri{border-collapse:collapse;width:100%;font-size:var(--fs-table)}.nutri td{border-bottom:1px solid var(--line);padding:6px 0}.nutri tr:last-child td{border-bottom:0}.nutri td:last-child{text-align:right;color:var(--ink-900);font-variant-numeric:tabular-nums;font-weight:600}.nutri td.sub{color:var(--ink-500);padding-left:14px}.ingredients-text{font-size:var(--fs-table);color:var(--ink-700);line-height:1.65}.doc-mini{border-bottom:1px solid var(--line);color:inherit;align-items:center;gap:10px;padding:10px 18px;display:flex}.doc-mini:last-child{border-bottom:0}.doc-mini:hover{background:var(--surface-hover);color:inherit}.spec-layout{grid-template-columns:220px minmax(0,1fr);align-items:start;gap:24px;display:grid}.spec-nav{top:calc(var(--topbar-h) + 16px);flex-direction:column;gap:2px;display:flex;position:sticky}.spec-nav a{font-size:var(--fs-table);color:var(--ink-600);border-radius:8px;align-items:center;gap:8px;padding:7px 10px;font-weight:550;display:flex}.spec-nav a:hover{background:var(--surface);color:var(--ink-900)}.spec-nav .dot{background:var(--ink-200);border-radius:50%;flex:none;width:8px;height:8px}.spec-nav .dot.done{background:var(--green-500)}.spec-nav .dot.partial{background:var(--amber-500)}.spec-nav .dot.missing{background:var(--red-500)}.spec-section{scroll-margin-top:calc(var(--topbar-h) + 16px)}.spec-section+.spec-section{margin-top:16px}.spec-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 20px;display:grid}.spec-fields .full{grid-column:1/-1}.field.flagged{box-shadow:inset 0 0 0 1px var(--red-line);background:#fdf6f4;border-radius:10px;margin:-10px;padding:10px}.readonly-value{min-height:38px;font-size:var(--fs-table);color:var(--ink-900);padding:8px 0;font-weight:500}.readonly-value.empty-value{color:var(--ink-500)}.ing-table{border:1px solid var(--line-strong);border-collapse:separate;border-spacing:0;width:100%;font-size:var(--fs-table);border-radius:10px;overflow:hidden}.ing-table th{background:var(--bg-subtle);font-size:var(--fs-label);color:var(--ink-500);text-align:left;border-bottom:1px solid var(--line);padding:8px 10px;font-weight:500}.ing-table td{border-bottom:1px solid var(--line);vertical-align:top;padding:4px 6px}.ing-table tr:last-child td{border-bottom:0}.ing-table input,.ing-table select{width:100%;height:32px;font-size:var(--fs-table);background:0 0;border:1px solid #0000;border-radius:6px;padding:0 8px}.ing-table input:hover,.ing-table select:hover{border-color:var(--line)}.ing-table input:focus,.ing-table select:focus{border-color:var(--brand);box-shadow:var(--ring);background:#fff;outline:none}.allergen-matrix{border:1px solid var(--line-strong);border-radius:10px;overflow:hidden}.am-row{font-size:var(--fs-table);align-items:center;gap:12px;padding:7px 12px;display:flex}.am-row+.am-row{border-top:1px solid var(--line)}.am-row .am-name{color:var(--ink-800);flex:1;font-weight:550}.am-row.unanswered .am-name{color:var(--red)}.am-opt{gap:4px;display:inline-flex}.am-opt button{border:1px solid var(--line-strong);height:26px;font-size:var(--fs-label);color:var(--ink-500);background:#fff;border-radius:999px;padding:0 10px;font-weight:600}.am-opt button.on.contains{background:var(--red-bg);border-color:var(--red-line);color:var(--red)}.am-opt button.on.may_contain{background:var(--amber-bg);border-color:var(--amber-line);color:var(--amber)}.am-opt button.on.absent{background:var(--green-bg);border-color:var(--green-line);color:var(--green)}.multi{flex-wrap:wrap;gap:6px;display:flex}.multi button{border:1px solid var(--line-strong);height:30px;font-size:var(--fs-label);color:var(--ink-600);background:#fff;border-radius:999px;padding:0 12px;font-weight:550}.multi button.on{background:var(--ink-900);border-color:var(--ink-900);color:#fff}.issue-list{flex-direction:column;display:flex}.issue{font-size:var(--fs-table);border-bottom:1px solid var(--line);align-items:flex-start;gap:10px;padding:9px 14px;display:flex}.issue:last-child{border-bottom:0}.issue svg{flex:none;width:16px;height:16px;margin-top:2px}.issue.missing svg,.issue.error svg{color:var(--red-500)}.issue.warning svg{color:var(--amber-500)}.issue.info svg{color:var(--brand)}.issue .sec{font-size:var(--fs-badge);color:var(--ink-500)}@media (width<=1100px){.spec-layout{grid-template-columns:1fr}.spec-nav{display:none}.spec-fields{grid-template-columns:1fr}.facts{grid-template-columns:repeat(2,minmax(0,1fr))}}.label-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:16px;display:grid}.lang-tabs{flex-wrap:wrap;gap:8px;display:flex}.lang-tab{border:1px solid var(--line-strong);background:var(--surface);height:38px;font-size:var(--fs-table);color:var(--ink-700);border-radius:10px;align-items:center;gap:8px;padding:0 12px;font-weight:600;display:inline-flex}.lang-tab.is-active{border-color:var(--brand);box-shadow:var(--ring);color:var(--ink-900)}.lang-tab .st{border-radius:50%;width:8px;height:8px}.st.approved{background:var(--green-500)}.st.draft,.st.needs_review{background:var(--amber-500)}.st.missing{background:var(--ink-200)}.label-sheet{border:1px solid var(--line);box-shadow:var(--shadow-sm);background:#fff;border-radius:14px}.label-sec{padding:14px 18px}.label-sec+.label-sec{border-top:1px solid var(--line)}.label-sec .t{font-size:var(--fs-label);color:var(--ink-500);margin-bottom:6px;font-weight:600}.label-sec .x{font-size:var(--fs-table);color:var(--ink-900);white-space:pre-wrap;line-height:1.65}.label-sec textarea{border:1px solid var(--line-strong);width:100%;min-height:70px;font-size:var(--fs-table);resize:vertical;border-radius:8px;padding:8px 10px;line-height:1.6}.label-sec textarea:focus{border-color:var(--brand);box-shadow:var(--ring);outline:none}.nutri-label{border:1.5px solid var(--ink-900);border-collapse:collapse;width:100%;max-width:380px;font-size:var(--fs-table)}.nutri-label th{background:var(--ink-900);color:#fff;text-align:left;padding:6px 10px;font-weight:600}.nutri-label td{border-top:1px solid var(--ink-200);padding:5px 10px}.nutri-label td:last-child{text-align:right;font-weight:650}.nutri-label td.sub{padding-left:24px}.skeleton-sheet .label-sec .skeleton{margin:6px 0}@media (width<=1100px){.label-grid{grid-template-columns:1fr}}.art-layout{grid-template-columns:minmax(0,1.05fr) minmax(380px,1fr);align-items:start;gap:18px;display:grid}.art-files{gap:10px;margin-bottom:14px;padding-bottom:4px;display:flex;overflow-x:auto}.art-file{border:1px solid var(--line);text-align:left;background:#fff;border-radius:12px;flex:none;width:170px;padding:6px;transition:border-color .15s,box-shadow .15s}.art-file.is-active{border-color:var(--brand);box-shadow:var(--ring)}.art-file .img{background:var(--bg-subtle);border-radius:8px;justify-content:center;align-items:center;height:96px;display:flex;overflow:hidden}.art-file .img img{object-fit:cover;object-position:top left;width:100%;height:100%}.art-file .meta{padding:6px 4px 2px}.art-preview{top:calc(var(--topbar-h) + 16px);max-height:calc(100vh - var(--topbar-h) - 32px);border:1px solid var(--line);background:repeating-conic-gradient(#f3f0eb 0% 25%,#faf8f5 0% 50%) 50%/20px 20px;border-radius:14px;position:sticky;overflow:auto}.art-preview-bar{z-index:3;justify-content:flex-end;height:0;display:flex;position:sticky;top:0}.art-preview-bar>*{margin:10px 10px 0 0}.art-pages{flex-direction:column;gap:16px;padding:12px;display:flex}.art-page{margin:0}.art-page-label{font-size:var(--fs-label);color:var(--ink-600);margin-bottom:6px;font-weight:600}.art-preview img{cursor:zoom-in;width:100%}.art-preview.zoom img{cursor:zoom-out}.check-summary{border-bottom:1px solid var(--line);align-items:center;gap:14px;padding:16px 18px;display:flex}.check-counts{flex-wrap:wrap;gap:6px;display:flex}.check-verdict{border:1px solid var(--line);border-left-width:4px;border-radius:10px;flex-direction:column;gap:6px;margin:14px 18px 4px;padding:12px 14px;display:flex}.check-verdict.red{border-color:var(--red-line);border-left-color:var(--red-500)}.check-verdict.amber{border-color:var(--amber-line);border-left-color:var(--amber-500)}.check-verdict.blue{border-color:var(--info-line);border-left-color:var(--info)}.check-verdict.green{border-color:var(--green-line);border-left-color:var(--green-500)}.check-verdict-head{flex-wrap:wrap;align-items:baseline;gap:4px 12px;display:flex}.check-verdict-title{font-family:var(--font-display);font-size:1.05rem;font-weight:650}.check-verdict.red .check-verdict-title{color:var(--red)}.check-verdict.amber .check-verdict-title{color:var(--amber)}.check-verdict.blue .check-verdict-title{color:var(--info)}.check-verdict.green .check-verdict-title{color:var(--green)}.check-group{margin-top:10px}.check-group-title{font-size:var(--fs-label);text-transform:uppercase;letter-spacing:.04em;color:var(--ink-600);padding:8px 18px 4px;font-weight:650}.check-group-hint{max-width:65ch;padding:0 18px 4px}.check-passed>summary{cursor:pointer;border-top:1px solid var(--line);align-items:baseline;gap:6px;padding-top:12px;padding-bottom:12px;list-style:none;display:flex}.check-passed>summary::-webkit-details-marker{display:none}.check-passed>summary:before{content:"▸";color:var(--ink-500)}.check-passed[open]>summary:before{content:"▾"}.check-passed-names{text-overflow:ellipsis;white-space:nowrap;text-transform:none;letter-spacing:0;min-width:0;font-weight:400;overflow:hidden}.text-diffs{flex-direction:column;gap:6px;margin-top:6px;display:flex}.text-diff{background:var(--bg-subtle);font-size:var(--fs-label);color:var(--ink-700);overflow-wrap:anywhere;border-radius:6px;gap:8px;padding:6px 10px;display:flex}.text-diff-lang{font-weight:700;font-size:var(--fs-badge);color:var(--ink-600);flex:none;margin-top:2px}.text-diff-label{min-width:64px;color:var(--ink-500);margin-right:6px;display:inline-block}.text-diff mark{border-radius:3px;min-width:6px;padding:0 1px;display:inline-block}.text-diff mark.approved{background:var(--green-bg);box-shadow:inset 0 -2px 0 var(--green-500);color:inherit}.text-diff-gap{vertical-align:text-bottom;border-radius:1px;width:2px;height:1em;margin:0 1px;display:inline-block}.text-diff-gap.approved{background:var(--green-500)}.text-diff-gap.printed{background:var(--info)}.text-diff mark.printed{background:var(--info-bg);box-shadow:inset 0 -2px 0 var(--info);color:inherit}.check-item{border-bottom:1px solid var(--line);gap:12px;padding:12px 18px;display:flex}.check-item:last-child{border-bottom:0}.check-item .ci-icon{border-radius:50%;flex:none;justify-content:center;align-items:center;width:22px;height:22px;margin-top:1px;display:flex}.check-item .ci-icon svg{width:14px;height:14px}.ci-icon.pass{background:var(--green-bg);color:var(--green)}.ci-icon.fail{background:var(--red-bg);color:var(--red)}.ci-icon.warning{background:var(--amber-bg);color:var(--amber)}.ci-icon.not_applicable{background:var(--fill);color:var(--ink-500)}.ci-icon.manual{background:var(--info-bg);color:var(--info)}.check-item .evidence{border-left:3px solid var(--line-strong);background:var(--bg-subtle);font-size:var(--fs-label);color:var(--ink-600);border-radius:0 6px 6px 0;margin-top:6px;padding:6px 10px;font-style:italic}.check-item .suggestion{font-size:var(--fs-label);color:var(--brand-700);gap:6px;margin-top:6px;display:flex}.check-item .suggestion svg{flex:none;width:14px;height:14px;margin-top:2px}.check-item .confirm-line{font-size:var(--fs-label);color:var(--ink-600);flex-wrap:wrap;align-items:center;gap:8px;margin-top:6px;display:flex}.check-item .confirm-line.is-confirmed{color:var(--green);flex-wrap:nowrap;align-items:flex-start}.check-item .confirm-line.is-confirmed svg{flex:none;width:14px;height:14px;margin-top:2px}.confirm-count{margin-top:6px}.confirm-list{flex-direction:column;gap:8px;max-height:260px;margin:0;padding-left:18px;display:flex;overflow:auto}.check-summary.is-running{border-bottom:0}.check-progress{background:var(--line);height:3px;position:relative;overflow:hidden}.check-progress:after{content:"";background:var(--brand);opacity:.7;width:30%;animation:check-progress 2.4s var(--ease) infinite;border-radius:999px;position:absolute;inset:0 auto 0 0}@keyframes check-progress{0%{transform:translate(-100%)}to{transform:translate(340%)}}@media (prefers-reduced-motion:reduce){.check-progress:after{opacity:.35;width:100%;animation:none}}@media (width<=1200px){.art-layout{grid-template-columns:1fr}.art-preview{position:relative;top:0}}.doc-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px;display:grid}.doc-card{border:1px solid var(--line);text-align:left;box-shadow:var(--shadow-xs);transition:transform .15s var(--ease), box-shadow .15s;background:#fff;border-radius:14px;flex-direction:column;padding:0;display:flex;overflow:hidden}.doc-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.doc-card .preview{border-bottom:1px solid var(--line);background:linear-gradient(#f6f3ee,#ece7df);justify-content:center;align-items:center;height:138px;display:flex;position:relative;overflow:hidden}.doc-card .preview img{object-fit:cover;object-position:top center;width:100%;height:100%}.doc-card .preview .corner{position:absolute;top:8px;left:8px}.doc-card .body{flex-direction:column;flex:1;gap:4px;padding:10px 12px 12px;display:flex}.doc-card .title{color:var(--ink-900);font-weight:600;font-size:var(--fs-table);line-height:1.3}.viewer{border:1px solid var(--line);background:var(--fill);border-radius:12px;width:100%;height:calc(100vh - 220px);min-height:480px}.viewer-img{border:1px solid var(--line);border-radius:12px;width:100%}.drive-banner{background:var(--surface);border:1px solid var(--line);border-radius:14px;align-items:center;gap:14px;margin-bottom:16px;padding:14px 18px;display:flex}.drive-logo{border:1px solid var(--line);background:#fff;border-radius:10px;flex:none;justify-content:center;align-items:center;width:40px;height:40px;display:flex}.folder-icon{color:#c98a00;background:#fff4d6;border-radius:8px;flex:none;justify-content:center;align-items:center;width:34px;height:34px;display:flex}.board{grid-template-columns:repeat(4,minmax(0,1fr));align-items:start;gap:14px;display:grid}.board-col{background:#ede9e2;border-radius:14px;min-height:200px;padding:10px}.board-col h4{font-size:var(--fs-label);color:var(--ink-700);align-items:center;gap:8px;padding:4px 6px 10px;font-weight:650;display:flex}.board-card{text-align:left;border:1px solid var(--line);width:100%;box-shadow:var(--shadow-xs);background:#fff;border-radius:12px;padding:12px;transition:transform .12s,box-shadow .12s;display:block}.board-card+.board-card{margin-top:8px}.board-card:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.timeline{padding-left:18px;position:relative}.timeline:before{content:"";background:var(--line);width:2px;position:absolute;top:6px;bottom:6px;left:5px}.tl-item{font-size:var(--fs-table);padding:0 0 14px;position:relative}.tl-item:before{content:"";border:2px solid var(--brand);background:#fff;border-radius:50%;width:10px;height:10px;position:absolute;top:5px;left:-17px}.email-preview{border:1px solid var(--line);border-radius:12px;overflow:hidden}.email-preview .hdr{background:var(--bg-subtle);border-bottom:1px solid var(--line);font-size:var(--fs-table);padding:10px 14px}.email-preview textarea{width:100%;min-height:260px;font-size:var(--fs-table);resize:vertical;line-height:1.6;font-family:var(--font-sans);border:0;padding:14px}.email-preview textarea:focus{outline:none}.diff-table td.old{color:var(--ink-500);text-decoration:line-through;-webkit-text-decoration-color:var(--ink-300);text-decoration-color:var(--ink-300)}.diff-table td.new{color:var(--ink-900);font-weight:600}@media (width<=1200px){.board{grid-template-columns:repeat(2,minmax(0,1fr))}}.portal{background:var(--bg);min-height:100vh}.portal-top{border-bottom:1px solid var(--line);z-index:20;background:#fff;position:sticky;top:0}.portal-top-inner{align-items:center;gap:14px;max-width:1180px;margin:0 auto;padding:12px 24px;display:flex}.portal-progress{width:260px}.portal-body{max-width:1180px;margin:0 auto;padding:24px}.portal-hero{background:var(--charcoal);color:#fff;border-radius:18px;align-items:center;gap:20px;margin-bottom:18px;padding:22px;display:flex;position:relative;overflow:hidden}.portal-hero:after{content:"";border:34px solid var(--brand);opacity:.9;pointer-events:none;border-radius:50%;width:240px;height:240px;position:absolute;top:-90px;right:-70px}.portal-hero>*{z-index:1;position:relative}.portal-hero h1{color:#fff;font-weight:600;font-size:var(--fs-page)}.portal-hero .pack{background:#fffffff2;border-radius:14px;flex:none;width:92px;height:112px;overflow:hidden}.portal-hero .pack img{object-fit:contain;width:100%;height:100%}.portal-hero .meta{font-size:var(--fs-table);color:#ffffffc7;flex-wrap:wrap;gap:22px;margin-top:10px;display:flex}.portal-hero .meta b{color:#fff;font-weight:600}.portal-footer{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-top:1px solid var(--line);z-index:20;background:#ffffffeb;position:sticky;bottom:0}.portal-footer-inner{align-items:center;gap:12px;max-width:1180px;margin:0 auto;padding:12px 24px;display:flex}.upload-list{flex-direction:column;gap:8px;margin-top:12px;display:flex}.upload-row{border:1px solid var(--line);background:#fff;border-radius:10px;align-items:center;gap:10px;padding:8px 10px;display:flex}.success-hero{text-align:center;max-width:560px;margin:8vh auto}.success-hero .check{background:var(--green-bg);width:72px;height:72px;color:var(--green);border-radius:50%;justify-content:center;align-items:center;margin:0 auto 18px;display:flex}.settings-spend{margin:-4px 0 14px}.settings-layout{grid-template-columns:220px minmax(0,1fr);align-items:start;gap:24px;display:grid}.settings-nav{top:calc(var(--topbar-h) + 16px);flex-direction:column;gap:2px;display:flex;position:sticky}.settings-nav button{height:36px;font-size:var(--fs-table);color:var(--ink-600);text-align:left;background:0 0;border:0;border-radius:8px;align-items:center;gap:9px;padding:0 10px;font-weight:550;display:flex}.settings-nav button svg{width:16px;height:16px}.settings-nav button:hover{background:var(--surface);color:var(--ink-900)}.settings-nav button.is-active{background:var(--surface);color:var(--ink-900);box-shadow:var(--shadow-sm)}.toggle{background:var(--ink-200);border:0;border-radius:999px;flex:none;width:36px;height:20px;padding:0;transition:background .15s;position:relative}.toggle:after{content:"";width:16px;height:16px;transition:transform .15s var(--ease);background:#fff;border-radius:50%;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #0003}.toggle.on{background:var(--brand)}.toggle.on:after{transform:translate(16px)}.setting-row{border-bottom:1px solid var(--line);align-items:center;gap:14px;padding:12px 18px;display:flex}.setting-row:last-child{border-bottom:0}.code-block{color:#ece6dc;font-family:var(--font-mono);font-size:var(--fs-label);white-space:pre;background:#262523;border-radius:10px;padding:14px 16px;line-height:1.6;overflow-x:auto}@media (width<=1000px){.settings-layout{grid-template-columns:minmax(0,1fr)}.settings-nav{flex-flow:wrap;position:static}}.ask-card .card-header{background:var(--brand-50)}.ask-suggestion{text-align:left;border:1px solid var(--line);background:var(--bg-subtle);font-size:var(--fs-label);color:var(--ink-700);border-radius:10px;padding:8px 12px;transition:border-color .15s,background .15s}.ask-suggestion:hover{border-color:var(--violet-line);background:var(--violet-bg);color:var(--violet)}.ask-input{border:1px solid var(--line-strong);background:#fff;border-radius:12px;align-items:center;gap:6px;padding:4px 4px 4px 12px;transition:border-color .15s,box-shadow .15s;display:flex}.ask-input:focus-within{border-color:var(--brand);box-shadow:var(--ring)}.ask-input input{font-size:var(--fs-table);background:0 0;border:0;outline:none;flex:1;min-width:0}.ask-thread{margin-bottom:12px}.ask-q{background:var(--ink-900);color:#fff;width:fit-content;max-width:90%;font-size:var(--fs-table);border-radius:12px 12px 4px;margin-left:auto;padding:8px 12px}.ask-a{background:var(--violet-bg);border:1px solid var(--violet-line);border-radius:12px 12px 12px 4px;margin-top:8px;padding:10px 12px}@media (width<=860px){.page-header h1,.product-hero h1,.hello h1{font-size:var(--fs-page)}.page-header .actions{margin-left:0}.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.product-hero{flex-direction:column;gap:14px}.product-hero .pack{width:110px;height:132px}.product-hero>.col{flex-flow:wrap;justify-content:space-between;align-items:center;gap:12px}.product-hero>.col>.row{flex-wrap:wrap}.facts{grid-template-columns:repeat(2,minmax(0,1fr))}.fact:nth-child(3n){border-right:1px solid var(--line)}.fact:nth-child(2n){border-right:0}.allergen-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.board{grid-template-columns:1fr}.portal-top-inner,.portal-footer-inner{padding:10px 16px}.portal-top-inner .tiny{display:none}.portal-progress{width:130px}.portal-body{padding:16px}.portal-hero{flex-direction:column;align-items:flex-start;padding:18px}.portal-hero h1{font-size:var(--fs-dialog)}.portal-hero .pack{width:72px;height:88px}.portal-footer-inner>.small,.portal-footer-inner .pill,.portal-footer-inner .spacer{display:none}.portal-footer-inner .btn{flex:1}}.art-canvas{max-width:none;position:relative}.art-canvas img{width:100%;display:block}.art-overlay{pointer-events:none;position:absolute;inset:0}.art-box{pointer-events:auto;border:2px solid var(--red-500);cursor:pointer;background:#d9534a14;border-radius:6px;padding:0;transition:background .15s,box-shadow .15s;position:absolute}.art-box.warning{border-color:var(--amber-500);background:#d9a21b14}.art-box.is-hover{background:#d9534a33;box-shadow:0 0 0 4px #d9534a2e}.art-box.warning.is-hover{background:#d9a21b38;box-shadow:0 0 0 4px #d9a21b33}.art-num{width:22px;height:22px;font-size:var(--fs-badge);color:#fff;background:var(--red-500);border-radius:50%;justify-content:center;align-items:center;font-weight:800;display:flex;position:absolute;top:-11px;left:-11px;box-shadow:0 2px 6px #0003}.art-box.badge-right .art-num{left:auto;right:-11px}.art-box.warning .art-num,.art-num.static.warning{background:var(--amber-500)}.art-box.manual{border-color:var(--info);background:#3e5c7614}.art-box.manual.is-hover{background:#3e5c7633;box-shadow:0 0 0 4px #3e5c762e}.art-box.manual .art-num,.art-num.static.manual{background:var(--info)}.art-num.static{cursor:pointer;border:0;flex:none;margin-top:1px;padding:0;position:static}.check-item.is-hover{background:var(--surface-hover)}.drive-banner .drive-stats{flex:none;gap:18px;display:flex}.drive-stats>*{min-width:48px;color:inherit;flex-direction:column;align-items:center;line-height:1.15;text-decoration:none;display:flex}.drive-stats .strong{font-family:var(--font-display);font-size:var(--fs-title)}.drive-stat-link.is-red .strong{color:var(--red)}.drive-layout{grid-template-columns:minmax(0,1fr) 360px;align-items:start;gap:16px;display:grid}.drive-events{flex-direction:column;display:flex}.drive-event{border-bottom:1px solid var(--line);gap:10px;padding:10px 16px;display:flex}.drive-event:last-child{border-bottom:0}.text-red{color:var(--red)}.table.audit td{vertical-align:top}@media (width<=1100px){.drive-layout{grid-template-columns:minmax(0,1fr)}.drive-banner{flex-wrap:wrap}}@media (width<=1400px){.col-supplier{display:none}}.ingredient-name{-webkit-hyphens:auto;hyphens:auto;overflow-wrap:anywhere}.sort-section{margin:0 0 24px}.sort-section>h2{font-size:var(--fs-title);margin-bottom:4px}.sort-group-title{font-size:var(--fs-label);color:var(--ink-600);margin:16px 0 0;font-weight:600}.sort-q{border-top:1px solid var(--line);gap:8px;padding:14px 0;display:grid}.sort-q-head{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.sort-q-head h4{font-size:var(--fs-body);font-weight:650}.sort-path{font-family:var(--font-mono);font-size:var(--fs-label);color:var(--ink-600);overflow-wrap:anywhere}.sort-names{font-size:var(--fs-label);color:var(--ink-600);margin:2px 0 0;padding-left:18px}.sort-answers{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.sort-menu{align-items:center;gap:6px;max-width:100%;display:inline-flex}.sort-menu .select{width:auto;min-width:190px;max-width:300px;height:32px;font-size:var(--fs-label)}.sort-comment{gap:8px;max-width:640px;display:grid}.item-number-row{border-bottom:1px solid var(--line);flex-direction:column;gap:5px;padding:10px 16px;display:flex}.item-number-row:last-child{border-bottom:0}.item-number-row.is-ended{padding:6px 16px}.item-number-head{align-items:center;gap:10px;display:flex}.item-number-ended{border-top:1px solid var(--line);padding:8px 0 4px}.item-number-ended summary{cursor:pointer;padding:0 16px 6px}.packaging-types{gap:12px;margin-top:12px;display:grid}.packaging-type-body{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:24px;padding:12px 16px 14px;display:grid}@media (width<=900px){.packaging-type-body{grid-template-columns:minmax(0,1fr)}}.packaging-doc{border:0;border-bottom:1px solid var(--line);text-align:left;cursor:pointer;background:0 0;align-items:center;gap:10px;width:100%;padding:6px 0;display:flex}.packaging-product{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:6px 0;display:flex}.folder-moves{flex-direction:column;gap:6px;margin:0 0 16px;display:flex}.folder-move .btn{padding-block:2px}.bring-in-party{max-width:880px}.bring-in-party .table .right,.table .right{text-align:right}.bring-in-party .link{color:var(--brand-700);font-size:inherit;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.bi-choices{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.bi-choice{border:1px solid var(--line-strong);background:var(--surface);cursor:pointer;border-radius:8px;align-items:flex-start;gap:10px;padding:10px 12px;display:flex}.bi-choice>span{font-size:var(--fs-table);flex-direction:column;gap:2px;display:flex}.bi-choice input{accent-color:var(--brand);margin-top:3px}.bi-choice.is-on{border-color:var(--brand);background:var(--brand-50)}.bi-doc{align-items:center;gap:10px;min-height:34px;display:flex}.bi-summary{background:var(--fill);border-radius:8px;padding:10px 12px}.bi-files{gap:4px;margin:0;padding:0;list-style:none;display:grid}.bi-files li{font-size:var(--fs-label);grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) minmax(0,1fr);align-items:baseline;gap:12px;display:grid}.bi-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}@media (width<=900px){.bi-choices,.bi-grid{grid-template-columns:1fr}.bi-files li{grid-template-columns:1fr;gap:2px}}
