:root{--navy: #10243A;--navy-800: #142c46;--navy-700: #16304d;--navy-600: #1d3d61;--teal: #087F8C;--teal-600: #0a95a4;--teal-050: #e7f2f4;--amber: #B26A00;--amber-bg: #FBEFD9;--amber-text: #8A5300;--bg: #EFF5F8;--surface: #FFFFFF;--surface-2: #F4F8FB;--border: #D6E1E9;--border-strong: #B9C9D5;--text: #10243A;--text-soft: #48596A;--text-faint: #6C7B8A;--danger: #B42318;--danger-bg: #FBECEA;--success: #0A7A4B;--success-bg: #E6F4EC;--warn: #8A5A00;--warn-bg: #FBEFD9;--info: #0a6b77;--s1: 4px;--s2: 8px;--s3: 12px;--s4: 16px;--s6: 24px;--s8: 32px;--s12: 48px;--f-xs: 12px;--f-sm: 14px;--f-md: 16px;--f-lg: 20px;--f-xl: 28px;--f-2xl: 36px;--radius: 14px;--radius-sm: 9px;--radius-xs: 6px;--sidebar-w: 256px;--header-h: 60px;--header-h-mobile: 56px;--tabbar-h: 60px;--shadow-sm: 0 1px 2px rgba(16,36,58,.06);--shadow: 0 1px 2px rgba(16,36,58,.05), 0 8px 24px rgba(16,36,58,.07);--shadow-lg: 0 12px 40px rgba(16,36,58,.16);--focus: 0 0 0 3px rgba(8,127,140,.45);--ring: 0 0 0 2px var(--surface), 0 0 0 4px var(--teal);--btn-primary: #087F8C;--btn-primary-h: #066b76;--btn-danger: #B42318;--btn-danger-h: #a8281c}:root[data-theme=dark]{--navy: #0b1826;--navy-800: #10202f;--navy-700: #12283c;--navy-600: #17324a;--teal: #17a6b4;--teal-600: #26bccb;--teal-050: #10303a;--amber: #E6A94E;--amber-bg: #2c2312;--amber-text: #E6A94E;--bg: #0A1420;--surface: #111f2d;--surface-2: #16283a;--border: #24384c;--border-strong: #33506a;--text: #EAF2F7;--text-soft: #AFC0CE;--text-faint: #8598a8;--danger: #F1685E;--danger-bg: #2c1613;--success: #35C08A;--success-bg: #0f2a20;--warn: #E6A94E;--warn-bg: #2c2312;--info: #35c0cf;--shadow-sm: 0 1px 2px rgba(0,0,0,.35);--shadow: 0 1px 2px rgba(0,0,0,.4), 0 8px 24px rgba(0,0,0,.4);--shadow-lg: 0 16px 48px rgba(0,0,0,.55);--focus: 0 0 0 3px rgba(38,188,203,.5);--ring: 0 0 0 2px var(--surface), 0 0 0 4px var(--teal-600);--btn-primary: #0c828e;--btn-primary-h: #07737e;--btn-danger: #c0392b;--btn-danger-h: #b3261e}*{box-sizing:border-box}html,body,#root{height:100%}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,Segoe UI,system-ui,-apple-system,Arial,sans-serif;font-size:var(--f-md);line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:var(--teal-600);text-underline-offset:2px}h1,h2,h3{color:var(--text);margin:0 0 var(--s3);line-height:1.2}h1{font-size:var(--f-xl);font-weight:700;letter-spacing:-.01em}h2{font-size:var(--f-lg);font-weight:650}p{margin:0 0 var(--s3)}:focus-visible{outline:none;box-shadow:var(--focus);border-radius:var(--radius-xs)}::selection{background:var(--teal);color:#fff}.skip-link{position:absolute;left:-999px;top:var(--s2);background:var(--navy);color:#fff;padding:var(--s2) var(--s4);z-index:200;border-radius:var(--radius-sm)}.skip-link:focus{left:var(--s2)}.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}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}.app-shell{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-w);background:var(--navy);color:#cdd9e3;display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;z-index:60;padding:var(--s4) var(--s3);gap:var(--s1)}.sidebar .brand{display:flex;align-items:center;gap:var(--s2);padding:var(--s2) var(--s3) var(--s4)}.sidebar .brand img{height:30px;width:auto}.sidebar nav{display:flex;flex-direction:column;gap:2px;overflow-y:auto;scrollbar-width:thin}.nav-section{font-size:11px;text-transform:uppercase;letter-spacing:.09em;color:#90a6ba;padding:var(--s4) var(--s3) var(--s1);font-weight:600}.nav-item{display:flex;align-items:center;gap:var(--s3);padding:9px var(--s3);border-radius:var(--radius-sm);color:#c2d1dd;text-decoration:none;font-size:var(--f-sm);font-weight:500;min-height:42px;transition:background .15s,color .15s;position:relative}.nav-item:hover{background:var(--navy-700);color:#fff}.nav-item[aria-current=page]{background:var(--btn-primary);color:#fff;font-weight:600}.nav-item svg{width:19px;height:19px;flex:none}.nav-item .count{margin-left:auto;background:var(--amber);color:#201400;border-radius:999px;font-size:11px;font-weight:700;padding:1px 7px;min-width:20px;text-align:center}.nav-item[aria-current=page] .count{background:#fff;color:var(--teal)}.sidebar .foot{margin-top:auto;font-size:11px;color:#93a7b8;padding:var(--s3) var(--s3) 0;line-height:1.4}.main{flex:1;margin-left:var(--sidebar-w);display:flex;flex-direction:column;min-width:0}.topbar{position:sticky;top:0;z-index:50;background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:var(--s3);padding:0 var(--s6);min-height:var(--header-h)}.topbar .crumbs{color:var(--text-soft);font-size:var(--f-sm);font-weight:500;display:flex;align-items:center;gap:var(--s2);min-width:0}.topbar .crumbs .sep{color:var(--border-strong)}.topbar .crumbs .cur{color:var(--text);font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar .spacer{flex:1}.iconbtn{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:var(--radius-sm);border:1px solid transparent;background:transparent;color:var(--text-soft);cursor:pointer;position:relative;transition:background .15s,color .15s}.iconbtn:hover{background:var(--surface-2);color:var(--text)}.iconbtn svg{width:20px;height:20px}.iconbtn .dot{position:absolute;top:7px;right:8px;width:8px;height:8px;border-radius:50%;background:var(--amber);border:2px solid var(--surface)}.mobile-brand{display:none;align-items:center;gap:var(--s2)}.mobile-brand img{height:26px}.content{padding:var(--s6);max-width:1240px;width:100%;margin:0 auto;padding-bottom:var(--s12)}.with-panel{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:var(--s6);align-items:start}.context-panel{position:sticky;top:calc(var(--header-h) + var(--s4));display:flex;flex-direction:column;gap:var(--s4)}.menu{position:relative}.menu-pop{position:absolute;right:0;top:calc(100% + 6px);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);z-index:80;min-width:260px;padding:var(--s2)}.menu-pop.wide{min-width:340px;max-width:min(92vw,380px)}.menu-head{padding:var(--s3);border-bottom:1px solid var(--border);margin-bottom:var(--s1)}.menu-item{display:flex;align-items:center;gap:var(--s3);width:100%;padding:10px var(--s3);border:none;background:none;color:var(--text);font:inherit;font-size:var(--f-sm);text-align:left;border-radius:var(--radius-sm);cursor:pointer;min-height:42px}.menu-item:hover{background:var(--surface-2)}.menu-item svg{width:18px;height:18px;color:var(--text-soft);flex:none}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--s6);box-shadow:var(--shadow-sm)}.card+.card{margin-top:var(--s4)}.grid>.card+.card{margin-top:0}.card h2{font-size:var(--f-md);font-weight:650}.card-title{display:flex;align-items:center;gap:var(--s2);margin-bottom:var(--s4)}.card-title svg{width:20px;height:20px;color:var(--teal-600)}.grid{display:grid;gap:var(--s4)}.kpis{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}.kpi{display:flex;flex-direction:column;gap:2px}.kpi .val{font-size:var(--f-xl);font-weight:700;color:var(--navy);line-height:1.1;letter-spacing:-.02em}:root[data-theme=dark] .kpi .val{color:var(--text)}.kpi .lbl{color:var(--text-soft);font-size:var(--f-sm);display:flex;align-items:center;gap:6px}.kpi .lbl svg{width:15px;height:15px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);min-height:42px;padding:0 var(--s4);border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);font-size:var(--f-sm);font-weight:600;font-family:inherit;cursor:pointer;transition:background .15s,border-color .15s,transform .05s;white-space:nowrap;text-decoration:none}.btn:hover{background:var(--surface-2)}.btn:active{transform:translateY(1px)}.btn.primary{background:var(--btn-primary);border-color:var(--btn-primary);color:#fff}.btn.primary:hover{background:var(--btn-primary-h);border-color:var(--btn-primary-h)}.btn.navy{background:var(--navy);border-color:var(--navy);color:#fff}.btn.navy:hover{background:var(--navy-600)}.btn.danger{background:var(--btn-danger);border-color:var(--btn-danger);color:#fff}.btn.danger:hover{background:var(--btn-danger-h);border-color:var(--btn-danger-h)}.btn.ghost{border-color:transparent;background:transparent}.btn.ghost:hover{background:var(--surface-2)}.btn.sm{min-height:34px;padding:0 var(--s3);font-size:13px}.btn:disabled{opacity:.5;cursor:not-allowed}.btn svg{width:18px;height:18px}.btn.block{width:100%}label{display:block;font-size:var(--f-sm);font-weight:600;margin-bottom:var(--s1);color:var(--text)}input,select,textarea{width:100%;min-height:44px;padding:0 var(--s3);border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-size:var(--f-md);font-family:inherit}input:hover,select:hover,textarea:hover{border-color:var(--text-faint)}textarea{padding:var(--s3);min-height:90px;resize:vertical;line-height:1.5}.field{margin-bottom:var(--s4)}.field .hint{font-size:var(--f-xs);color:var(--text-soft);margin-top:var(--s1);font-weight:400}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2348596A' stroke-width='2'><path d='M6 9l6 6 6-6'/></svg>");background-repeat:no-repeat;background-position:right 12px center;padding-right:34px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:var(--f-sm)}th,td{text-align:left;padding:var(--s3);border-bottom:1px solid var(--border);vertical-align:middle}th{color:var(--text-soft);font-weight:600;font-size:var(--f-xs);text-transform:uppercase;letter-spacing:.04em}tbody tr:hover{background:var(--surface-2)}td .stack{display:flex;flex-direction:column}td .muted{color:var(--text-soft);font-size:var(--f-xs)}.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-size:var(--f-xs);font-weight:700;border:1px solid;white-space:nowrap}.badge:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;flex:none}.badge.ok{color:var(--success);background:var(--success-bg);border-color:transparent}.badge.warn{color:var(--warn);background:var(--warn-bg);border-color:transparent}.badge.err{color:var(--danger);background:var(--danger-bg);border-color:transparent}.badge.info{color:var(--info);background:var(--teal-050);border-color:transparent}.badge.muted{color:var(--text-soft);background:var(--surface-2);border-color:transparent}.badge.plain:before{display:none}.tag-demo{background:var(--amber-bg);color:var(--amber-text, var(--amber));font-weight:700;padding:3px 9px;border-radius:var(--radius-xs);font-size:var(--f-xs);border:1px solid transparent}.pill{display:inline-flex;align-items:center;gap:6px;font-size:var(--f-xs);font-weight:600;color:var(--text-soft);background:var(--surface-2);padding:3px 9px;border-radius:999px}.state{text-align:center;padding:var(--s12) var(--s4);color:var(--text-soft)}.state svg{width:40px;height:40px;opacity:.45;margin-bottom:var(--s3)}.state h3{color:var(--text);font-size:var(--f-md);margin-bottom:var(--s1)}.spinner{width:22px;height:22px;border:3px solid var(--border);border-top-color:var(--teal);border-radius:50%;animation:spin .7s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{background:linear-gradient(90deg,var(--surface-2) 25%,var(--border) 37%,var(--surface-2) 63%);background-size:400% 100%;animation:sk 1.3s ease infinite;border-radius:var(--radius-xs)}@keyframes sk{0%{background-position:100% 0}to{background-position:0 0}}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--border);margin-bottom:var(--s4);overflow-x:auto;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tabs button{padding:var(--s3) var(--s4);border:none;background:none;color:var(--text);font-weight:600;font-size:var(--f-sm);font-family:inherit;cursor:pointer;border-bottom:2px solid transparent;min-height:44px;white-space:nowrap}.tabs button.active{color:var(--navy);border-bottom-color:var(--teal);font-weight:700}:root[data-theme=dark] .tabs button.active{color:var(--text)}.chat-log{display:flex;flex-direction:column;gap:var(--s4)}.msg{max-width:82%;padding:var(--s3) var(--s4);border-radius:var(--radius);font-size:var(--f-sm);line-height:1.5}.msg.user{align-self:flex-end;background:var(--btn-primary);color:#fff;border-bottom-right-radius:var(--radius-xs)}.msg.bot{align-self:flex-start;background:var(--surface-2);border:1px solid var(--border);border-bottom-left-radius:var(--radius-xs);max-width:92%}.msg .plan{margin:var(--s2) 0 0;padding-left:18px}.msg .plan li{margin:2px 0}.evidence{font-size:var(--f-xs);color:var(--text-soft)}.src{border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--s2) var(--s3);margin-top:var(--s2);background:var(--surface)}.src .t{font-weight:600;font-size:13px}.privacy-on .mask{filter:blur(6px);-webkit-user-select:none;user-select:none;pointer-events:none}.privacy-banner{background:var(--amber-bg);color:var(--amber-text, var(--amber));font-size:var(--f-xs);font-weight:600;padding:4px var(--s4);text-align:center}.toasts{position:fixed;bottom:var(--s4);right:var(--s4);z-index:300;display:flex;flex-direction:column;gap:var(--s2);max-width:min(92vw,380px)}.toast{background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--text-soft);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);padding:var(--s3) var(--s4);display:flex;gap:var(--s3);align-items:flex-start;font-size:var(--f-sm);animation:slidein .2s ease}.toast.ok{border-left-color:var(--success)}.toast.err{border-left-color:var(--danger)}.toast.warn{border-left-color:var(--warn)}.toast.info{border-left-color:var(--teal)}.toast svg{width:18px;height:18px;flex:none;margin-top:1px}@keyframes slidein{0%{transform:translateY(10px);opacity:0}}.cmdk-back{position:fixed;top:0;right:0;bottom:0;left:0;background:#09142080;z-index:250;display:flex;justify-content:center;align-items:flex-start;padding-top:12vh}.cmdk{width:min(92vw,560px);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);overflow:hidden}.cmdk input{border:none;border-bottom:1px solid var(--border);border-radius:0;min-height:54px;font-size:var(--f-md)}.cmdk input:focus-visible{box-shadow:none}.cmdk-list{max-height:320px;overflow-y:auto;padding:var(--s2)}.cmdk-item{display:flex;align-items:center;gap:var(--s3);padding:10px var(--s3);border-radius:var(--radius-sm);cursor:pointer;font-size:var(--f-sm)}.cmdk-item.active{background:var(--teal-050)}.cmdk-item svg{width:18px;height:18px;color:var(--text-soft)}.cmdk-item .k{margin-left:auto;font-size:11px;color:var(--text-faint)}.modal-back{position:fixed;top:0;right:0;bottom:0;left:0;background:#0914208c;z-index:250;display:grid;place-items:center;padding:var(--s4)}.modal{width:min(94vw,480px);background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:var(--s6);max-height:90vh;overflow-y:auto}.modal h2{margin-bottom:var(--s4)}.lock-screen{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--navy);z-index:400;display:grid;place-items:center;color:#dbe7ef;text-align:center;padding:var(--s6)}.lock-screen img{height:44px;margin-bottom:var(--s6)}.row{display:flex;gap:var(--s3);align-items:center;flex-wrap:wrap}.row.between{justify-content:space-between}.muted{color:var(--text-soft);font-size:var(--f-sm)}.stack-2{display:flex;flex-direction:column;gap:var(--s2)}code.kbd{background:var(--surface-2);border:1px solid var(--border);padding:1px 6px;border-radius:4px;font-size:12px;font-family:ui-monospace,SF Mono,Menlo,monospace;word-break:break-all}.divider{height:1px;background:var(--border);margin:var(--s4) 0;border:none}.notice{padding:var(--s3) var(--s4);border-radius:var(--radius-sm);font-size:var(--f-sm);margin-bottom:var(--s4);border:1px solid transparent}.notice.err{background:var(--danger-bg);color:var(--danger)}.notice.ok{background:var(--success-bg);color:var(--success)}.notice.info{background:var(--teal-050);color:var(--info)}.notice.warn{background:var(--warn-bg);color:var(--warn)}.tabbar{display:none}.auth-wrap{min-height:100vh;display:grid;place-items:center;padding:var(--s4);background:var(--navy);background-image:radial-gradient(circle at 50% 0,rgba(8,127,140,.14),transparent 60%)}.auth-card{width:100%;max-width:420px;background:var(--surface);border-radius:var(--radius);padding:var(--s8);box-shadow:var(--shadow-lg)}.auth-card .logo{display:block;height:40px;margin:0 auto var(--s3)}.auth-card .tagline{text-align:center;color:var(--text-soft);font-size:var(--f-sm);margin:0 0 var(--s6)}.stepdots{display:flex;gap:6px;justify-content:center;margin-bottom:var(--s4)}.stepdots i{width:7px;height:7px;border-radius:50%;background:var(--border-strong)}.stepdots i.on{background:var(--teal)}@media (max-width: 900px){.with-panel{grid-template-columns:1fr}.context-panel{position:static}.sidebar{width:min(84vw,300px);transform:translate(-100%);transition:transform .22s cubic-bezier(.4,0,.2,1);box-shadow:var(--shadow-lg)}.app-shell.nav-open .sidebar{transform:translate(0)}.app-shell.nav-open .backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#09142080;z-index:55}.main{margin-left:0}.topbar{min-height:var(--header-h-mobile);padding:0 var(--s3);gap:var(--s1)}.topbar .crumbs{display:none}.mobile-brand{display:flex}.content{padding:var(--s4);padding-bottom:calc(var(--tabbar-h) + var(--s6))}.tabbar{display:flex;position:fixed;bottom:0;left:0;right:0;height:var(--tabbar-h);background:var(--surface);border-top:1px solid var(--border);z-index:60;padding-bottom:env(safe-area-inset-bottom,0)}.tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--text-soft);text-decoration:none;font-size:10.5px;font-weight:600;min-width:0}.tabbar a svg{width:22px;height:22px}.tabbar a span{max-width:100%;padding:0 2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s3)}.kpis .card{padding:var(--s3) var(--s4)}.kpi .val{font-size:var(--f-lg)}.tabbar a[aria-current=page]{color:var(--btn-primary)}:root[data-theme=dark] .tabbar a[aria-current=page]{color:var(--teal-600)}.tabbar a .count{position:absolute;transform:translate(14px,-12px);background:var(--amber);color:#201400;border-radius:999px;font-size:9px;font-weight:700;padding:0 5px;min-width:15px;text-align:center}table.responsive,table.responsive tbody,table.responsive tr,table.responsive td{display:block}table.responsive thead{display:none}table.responsive tr{border:1px solid var(--border);border-radius:var(--radius-sm);margin-bottom:var(--s3);padding:var(--s2) var(--s3)}table.responsive td{border:none;padding:5px 0;display:flex;justify-content:space-between;gap:var(--s3);align-items:center}table.responsive td:before{content:attr(data-label);font-weight:600;color:var(--text-soft);font-size:var(--f-xs);text-transform:uppercase;letter-spacing:.03em}table.responsive td[data-label=""]:before{content:""}.auth-card{padding:var(--s6)}.card{padding:var(--s4)}h1{font-size:var(--f-lg)}}@media (min-width: 901px){.only-mobile{display:none!important}}@media (max-width:900px){.only-desktop{display:none!important}}.check{display:inline-flex;align-items:center;gap:var(--s2);min-height:36px;cursor:pointer;font-size:var(--f-sm)}.check input{width:18px;height:18px;accent-color:var(--btn-primary);margin:0}.check-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:0 var(--s3);max-height:220px;overflow:auto;padding:var(--s2) var(--s3);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2)}tr[aria-current=true] td{background:var(--teal-050)}.batch-plan{list-style:none;margin:var(--s2) 0 0;padding:0;display:flex;flex-direction:column;gap:2px}.batch-plan li{display:grid;grid-template-columns:64px minmax(0,1fr) auto;align-items:center;gap:var(--s2);padding:6px 0;border-bottom:1px solid var(--border);font-size:var(--f-sm)}.batch-plan li:last-child{border-bottom:none}.batch-plan .lot{color:var(--text-soft);font-size:var(--f-xs);font-weight:600;text-transform:uppercase;letter-spacing:.04em}.batch-plan .names{min-width:0;overflow-wrap:anywhere}.batch-plan .extra{grid-column:2 / -1}.progress{height:8px;border-radius:999px;background:var(--surface-2);overflow:hidden;display:flex;margin:var(--s2) 0 var(--s3)}.progress>span{display:block;height:100%}.progress .p-ok{background:var(--success)}.progress .p-err{background:var(--danger)}.progress .p-warn{background:var(--warn)}.nowrap{white-space:nowrap}
