:root{--ink:#182b35;--muted:#75828b;--line:#e5e9e9;--bg:#f4f6f6;--green:#128375;--navy:#152d38;--orange:#bf7530;--red:#c15251}*{box-sizing:border-box}body{margin:0;background:var(--bg);font-family:"Pretendard","Noto Sans CJK KR","Noto Sans KR",Arial,sans-serif;color:var(--ink);font-size:14px;line-height:1.55}button,input,select,textarea{font:inherit}button{cursor:pointer;border:1px solid #dce3e5;background:white;border-radius:7px;color:var(--ink);padding:9px 14px;min-height:39px;transition:background .15s}button:hover{background:#eef5f3}button:disabled{cursor:not-allowed;opacity:.45}button.primary{background:var(--green);border-color:var(--green);color:white}button.primary:hover{background:#0d6b60}button.danger{color:var(--red);border-color:#eac9c9}button.link{border:0;background:none;color:var(--green);padding:3px 0;min-height:30px;font-weight:650}a{color:inherit}input,select,textarea{max-width:100%;width:100%;border:1px solid #dce2e4;border-radius:6px;padding:10px 11px;background:white;color:var(--ink);min-width:0}input[type=checkbox]{width:18px;height:18px}input[type=file]{padding:8px}input[aria-invalid=true]{border-color:var(--red)}textarea{min-height:100px;resize:vertical}label{display:block;font-size:13px;font-weight:550}label input,label select,label textarea{margin-top:7px}small,.muted{color:var(--muted)}b,strong{font-weight:650}h1,h2,h3,p{margin:0}h1{font-size:29px;letter-spacing:-1px;line-height:1.35}h2{font-size:17px;letter-spacing:-.35px}h3{font-size:15px}.skip{position:fixed;top:-60px;z-index:100;background:white;padding:15px}.skip:focus{top:0}:focus-visible{outline:3px solid #e7aa4f;outline-offset:3px}.sidebar{background:var(--navy);color:#b6c5cb;width:238px;position:fixed;inset:0 auto 0 0;display:flex;flex-direction:column;padding:30px 18px 20px;z-index:20;overflow:auto}.brand{display:flex;gap:12px;align-items:center;padding:0 9px 27px;color:#fff}.brand b{font-size:19px;letter-spacing:-.7px}.brand small{display:block;font-size:10px;color:#94aab5;letter-spacing:.5px}.brand-mark{background:#d2ebe0;color:#244b46;border-radius:9px;padding:7px 10px;font-size:20px;font-weight:800}.site-label{border:1px solid #39505a;border-radius:7px;padding:10px;margin:0 6px 24px;font-size:12px;color:#e0e7e8}.site-label span{float:right;font-size:10px;color:#7bc5ab}.nav-group{font-size:10px;letter-spacing:1.2px;color:#718b98;padding:16px 15px 7px}.nav-button{border:0;color:#afc0c8;background:transparent;display:flex;align-items:center;width:100%;gap:12px;text-align:left;border-radius:7px;padding:10px 14px;min-height:40px;font-size:13px;margin-bottom:2px}.nav-button:hover{background:#203f4c;color:white}.nav-button.active{background:#2c4b56;color:#fff}.nav-button.active svg{color:#a0d6c0}.nav-button svg{height:17px;width:17px;flex:none}.nav-count{font-size:10px;margin-left:auto;background:#34515b;padding:1px 6px;border-radius:4px;color:#d1e1e4}.side-bottom{margin-top:auto;padding:25px 12px 0;font-size:11px;color:#aec0c7}.side-bottom small{display:block;margin-top:5px;margin-left:13px;font-size:10px;color:#718c98}.online-dot{display:inline-block;background:#77c6a3;width:6px;height:6px;border-radius:50%;margin-right:6px}.workspace{margin-left:238px;min-height:100vh;display:flex;flex-direction:column}.topbar{height:76px;background:#fff;border-bottom:1px solid var(--line);padding:0 38px;display:flex;align-items:center;justify-content:space-between;gap:15px}.crumb,.top-actions{display:flex;align-items:center;gap:17px}.crumb{font-size:12px;color:#8b969c}.crumb b{color:#3b4e58;font-weight:550}.top-actions button{font-size:11px;border:0;padding:5px 9px;background:transparent;min-height:32px}.top-actions #connection{color:var(--green);background:#eff7f3;border-radius:20px;padding:3px 12px}.top-actions #connection.offline{color:var(--orange);background:#fcf3e6}.notification span{font-size:9px;border-radius:4px;background:#f5e7d8;padding:2px 4px;margin-left:3px;color:#a4642d}.role-label{display:flex;align-items:center;gap:8px;font-size:11px;white-space:nowrap}.role-label select{width:125px;margin:0;padding:6px 8px;font-size:12px}.avatar{background:#e8efed;border:1px solid #dde7e3;border-radius:50%;width:32px;height:32px;display:grid;place-items:center;color:#47675e;font-size:12px}#menu-toggle{display:none}main{padding:33px 38px 18px;flex:1;min-width:0}.eyebrow{font-size:11px;color:var(--green);letter-spacing:1px;margin-bottom:8px;font-weight:650}.page-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-end;margin-bottom:25px}.page-head p{margin-top:8px;color:var(--muted);font-size:13px}.head-actions{display:flex;gap:9px;flex-wrap:wrap}.date-pill{border:1px solid var(--line);border-radius:7px;background:white;padding:10px 13px;font-size:12px}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:17px;margin-bottom:22px}.stat{background:white;border:1px solid var(--line);border-radius:10px;padding:20px 22px;position:relative;overflow:hidden}.stat-label{color:#6d7c84;font-size:12px}.stat-value{font-size:32px;letter-spacing:-1.2px;margin:8px 0 5px;line-height:1.2;font-weight:650;font-variant-numeric:tabular-nums}.stat-value small{font-size:13px;font-weight:400;margin-left:4px;letter-spacing:0}.stat-foot{font-size:11px;color:#809086}.stat-icon{position:absolute;right:20px;top:20px;color:#78a292}.stat-icon svg{width:20px;height:20px}.stat.highlight{border-top:3px solid var(--green);padding-top:18px}.positive{color:var(--green)}.negative{color:var(--red)}.grid{display:grid;gap:20px}.grid.two{grid-template-columns:minmax(0,1.8fr) minmax(280px,1fr)}.grid.equal{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.card{background:#fff;border:1px solid var(--line);border-radius:10px;padding:23px;min-width:0}.card-header{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px}.card-header small{font-size:11px}.card.flush{padding:0}.card.flush>.card-header{padding:21px 23px 0}.space{margin-bottom:20px}.section-label{font-size:11px;color:var(--muted);margin-bottom:13px}.legend{display:flex;gap:17px;font-size:10px;color:var(--muted)}.legend span:before{content:'';display:inline-block;width:7px;height:7px;background:var(--green);margin-right:5px;border-radius:2px}.legend span:last-child:before{background:#ccd8d7}.chart{width:100%;height:220px;display:block;overflow:visible}.chart text{font-size:11px;fill:#86969e;font-family:inherit}.chart .gridline{stroke:#eaf0f0;stroke-dasharray:3 4}.chart .trend-line{stroke:var(--green);stroke-width:2.8;fill:none}.production-line{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.process-tile{flex:1;min-width:110px;border:1px solid #e4eae9;border-radius:7px;padding:15px 12px;background:#fafbfb}.process-tile span{font-size:11px;color:#7b8a90}.process-tile b{display:block;font-size:26px;margin-top:5px}.process-tile em{font-size:11px;color:var(--muted);font-style:normal;font-weight:400}.process-tile.active{background:#eaf4ef;border-color:#cfe5d9}.table-wrap{max-width:100%}table{border-collapse:collapse;width:100%;table-layout:auto;font-size:12px}th{text-align:left;color:#7e8c94;background:#f8faf9;font-weight:500;padding:12px 15px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);white-space:nowrap}td{padding:14px 15px;border-bottom:1px solid #edf0f0;vertical-align:middle}td small{display:block;font-size:10px;margin-top:3px}td .link{font-size:12px}tr:last-child td{border-bottom:0}.mono{font-variant-numeric:tabular-nums;font-family:ui-monospace,monospace;font-size:11px}.badge{border-radius:5px;display:inline-block;padding:3px 8px;font-size:10px;white-space:nowrap;font-weight:550;background:#edf0f1;color:#6e7d85}.badge.green{background:#e8f4ec;color:#338764}.badge.orange{background:#fcf0df;color:#b47c38}.badge.red{background:#f9e9e7;color:#bd5b56}.badge.blue{background:#eaf0f8;color:#507aad}.progress{height:5px;border-radius:5px;background:#e9eeed;overflow:hidden;min-width:70px;margin-top:5px}.progress i{display:block;height:100%;background:var(--green);border-radius:5px}.alert-item{padding:15px 0;border-bottom:1px solid var(--line)}.alert-item:first-of-type{padding-top:0}.alert-item:last-child{border:0;padding-bottom:0}.alert-item p{font-size:12px;margin:7px 0 3px}.alert-item small{font-size:10px}.equipment-mini{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);padding:12px 0;font-size:12px}.equipment-mini small{font-size:10px}.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:20px}.toolbar input{max-width:300px}.toolbar select{max-width:160px}.toolbar .count{margin-left:auto;color:var(--muted);font-size:12px}.tabs{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:18px}.tabs button{border:1px solid var(--line);font-size:12px;padding:7px 12px}.tabs button.active{background:#e6f1ed;color:var(--green);border-color:#cce2d8}.pagination{padding:16px;display:flex;align-items:center;justify-content:center;gap:12px;border-top:1px solid var(--line)}.pagination button{font-size:12px;min-height:30px;padding:4px 10px}.pagination span{font-size:12px;color:var(--muted)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px}.form-grid .full{grid-column:1/-1}.form-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:21px;justify-content:flex-end}.field-help{font-size:11px;color:var(--muted);margin-top:5px}.error{color:var(--red);background:#fff3f1;border:1px solid #f0d5d0;padding:11px 14px;border-radius:7px;font-size:12px;margin:12px 0}.info{color:#50736c;background:#edf6f2;border:1px solid #d7e8e0;border-radius:7px;padding:14px 16px;font-size:12px;margin:16px 0}.empty{padding:55px 20px;text-align:center;color:var(--muted)}.empty h3{color:var(--ink);margin-bottom:8px}.empty button{margin-top:15px}.skeleton{height:150px;border-radius:10px;background:linear-gradient(110deg,#e9eded 20%,#f6f8f7 40%,#e9eded 60%);background-size:200% 100%;animation:shimmer 1.3s infinite;margin:15px 0}.loading-label{font-size:13px;color:var(--muted)}@keyframes shimmer{to{background-position:-200% 0}}.detail-banner{background:var(--navy);color:white;border-radius:10px;padding:24px;display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:20px}.detail-banner small{color:#a1b6be}.detail-banner h2{font-size:24px;margin:7px 0}.trace-steps{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px;margin:22px 0}.trace-step{padding:16px 12px;background:#f5f7f7;border:1px solid var(--line);border-radius:7px;font-size:12px}.trace-step b{display:block;font-size:20px;margin-bottom:8px;color:#a1b1b8}.trace-step.current{background:#eaf5ef;border-color:#9dc5b4}.trace-step.current b{color:var(--green)}.qr-row{display:flex;gap:25px;align-items:center}.qr-box{background:white;border:1px solid var(--line);border-radius:8px;padding:16px;flex:none}.qr-box img,.qr-box svg{display:block;max-width:160px;height:auto}.metric-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:20px 0}.metric-list div{padding:16px;border-radius:7px;background:#f6f9f8;border:1px solid var(--line)}.metric-list small{display:block;font-size:11px}.metric-list b{font-size:20px;display:block;margin-top:4px}.history-row{border-left:2px solid #d8e6df;padding:0 0 20px 20px;margin-left:6px;position:relative;font-size:12px}.history-row:before{content:'';width:8px;height:8px;background:#96b9aa;border:3px solid white;box-sizing:content-box;position:absolute;left:-8px;top:3px;border-radius:50%}.history-row small{display:block;margin-top:5px;font-size:10px}.cut-bar{display:flex;height:44px;gap:3px;background:#ecf0ef;border-radius:5px;overflow:hidden;margin-top:10px}.cut-bar span{background:#cfe5da;display:grid;place-items:center;border-right:1px solid #b6d2c5;color:#326752;font-size:11px;min-width:0}.cut-row{margin:20px 0}.cut-row small{font-size:11px}.assembly-stage{position:relative;border-radius:10px;background:#152d38;padding:25px;overflow:hidden}.assembly-stage svg{width:100%;height:310px}.assembly-stage .stage-caption{color:#acc0c8;font-size:11px}.assembly-stage .overlay{stroke:#96e2bc;fill:#79c49b22;stroke-width:2;stroke-dasharray:7 4}.step-list{display:flex;flex-direction:column;gap:12px}.step-card{border:1px solid var(--line);background:#fafcfb;border-radius:8px;padding:17px;position:relative}.step-card.active{border-color:#8fbda8;background:#eef7f1}.step-card p{font-size:12px;color:var(--muted);margin-top:6px}.field-row{display:grid;grid-template-columns:1.4fr 1fr .7fr .7fr .7fr auto;gap:8px;align-items:end;padding:12px 0;border-bottom:1px solid var(--line)}.field-row label{font-size:10px}.field-row input,.field-row select{padding:8px;font-size:12px}.bar-chart-row{display:grid;grid-template-columns:90px minmax(0,1fr) 45px;gap:12px;align-items:center;margin:18px 0;font-size:11px}.bar-chart-row i{display:block;background:#88b8a2;border-radius:3px;height:12px}.workflow{display:flex;gap:10px;flex-wrap:wrap;align-items:stretch}.workflow .step-card{flex:1;min-width:150px}.workflow.flow .step-card{border-top:3px solid var(--green)}.workflow.block .step-card{background:#ecf5ef;border-left:4px solid #81b197}.big-number{font-size:46px;letter-spacing:-2px;font-weight:650;color:var(--green)}.photo-preview{max-width:180px;max-height:120px;border-radius:6px}.document-preview{background:#fff;border:1px solid var(--line);padding:25px}.document-preview h3{text-align:center;font-size:22px;margin-bottom:25px}footer{padding:19px 38px;font-size:10px;color:#93a0a6;display:flex;gap:15px;align-items:center}footer button{font-size:10px;border:0;background:transparent;color:#7c8e96;min-height:25px;padding:3px 0}dialog{border:0;border-radius:12px;padding:26px;max-width:850px;width:calc(100% - 30px);max-height:90vh;box-shadow:0 25px 90px #0d24284d;color:var(--ink)}dialog::backdrop{background:#10273180;backdrop-filter:blur(2px)}.dialog-top{display:flex;justify-content:space-between;gap:15px;align-items:center;margin-bottom:20px}.dialog-top h2{font-size:21px}.dialog-top button{font-size:11px}.dialog-top~div p{margin-bottom:12px}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);padding:14px 24px;color:white;background:#1d3e37;border-radius:8px;z-index:80;font-size:13px;max-width:90vw;box-shadow:0 8px 30px #17352b33}#toast.error-toast{background:#9f4945}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
@media(min-width:1700px){main{padding:35px 45px 22px}.topbar{padding:0 45px}.card{padding:25px}.chart{height:245px}.stat{padding:23px 25px}.stat.highlight{padding-top:21px}.stat-value{font-size:36px}td{padding:16px 18px}.page-head{margin-bottom:29px}.sidebar{width:248px}.workspace{margin-left:248px}.nav-button{padding-top:11px;padding-bottom:11px}}
@media(max-width:1150px){.sidebar{width:206px;padding-left:12px;padding-right:12px}.workspace{margin-left:206px}.brand{gap:8px}.brand b{font-size:16px}.brand small{font-size:9px}.topbar{padding:0 22px}.top-actions{gap:9px}main{padding:26px 22px}.grid.two{grid-template-columns:minmax(0,1.5fr) minmax(230px,1fr)}.stat{padding:17px 15px}.stat.highlight{padding-top:15px}.stat-value{font-size:28px}.stat-icon{right:14px;top:18px}.card{padding:18px}.page-head h1{font-size:25px}th,td{padding:11px 9px;font-size:11px}.chart{height:190px}.field-row{grid-template-columns:repeat(3,minmax(0,1fr))}.hide-medium{display:none}.grid.three{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:800px){.sidebar{transform:translateX(-100%);width:238px;transition:transform .2s}.sidebar.open{transform:translateX(0)}.workspace{margin-left:0}#menu-toggle{display:block;border:0;padding:0 6px;min-height:30px}.topbar{height:auto;min-height:70px;padding:13px 17px;flex-wrap:wrap;gap:10px}.crumb{gap:9px;font-size:10px}.top-actions{gap:8px;margin-left:auto}.avatar{display:none}.role-label{font-size:0;gap:0}.role-label select{font-size:11px;width:110px}.top-actions .notification{font-size:10px}.top-actions #connection{font-size:10px;padding:4px 7px}main{padding:24px 17px 15px}.page-head{align-items:flex-start;flex-direction:column;gap:15px;margin-bottom:22px}.page-head h1{font-size:26px;word-break:keep-all}.page-head p{font-size:12px}.head-actions{width:100%}.stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.stat{padding:17px 15px}.stat-value{font-size:29px}.stat-label{font-size:11px}.stat-foot{font-size:10px}.stat-icon{display:none}.grid.two,.grid.equal,.grid.three{grid-template-columns:minmax(0,1fr)}.card{padding:19px}.chart{height:200px}.card-header{gap:8px}.card-header h2{font-size:16px}.legend{gap:8px}.legend span{font-size:9px}.trace-steps{grid-template-columns:repeat(2,minmax(0,1fr))}.trace-step{padding:12px}.detail-banner{flex-wrap:wrap;padding:20px}.detail-banner h2{font-size:21px}.toolbar input,.toolbar select{max-width:100%;flex:1;min-width:120px}.toolbar .count{margin-left:0;width:100%}table.responsive thead{display:none}table.responsive,table.responsive tbody,table.responsive tr,table.responsive td{display:block;width:100%}table.responsive tr{padding:12px 17px;border-bottom:1px solid var(--line)}table.responsive td{border:0;padding:4px 0;display:flex;gap:12px;align-items:center;justify-content:space-between;font-size:12px;overflow-wrap:anywhere}table.responsive td:before{content:attr(data-label);color:#8a989f;font-size:10px;flex:none;min-width:70px}table.responsive td small{margin-top:1px}.form-grid{grid-template-columns:minmax(0,1fr)}.metric-list{grid-template-columns:repeat(2,minmax(0,1fr))}.qr-row{flex-wrap:wrap}.qr-box{padding:10px}.qr-box img{max-width:130px}.form-actions button{flex:1}.field-row{grid-template-columns:repeat(2,minmax(0,1fr))}.assembly-stage{padding:15px}.assembly-stage svg{height:250px}.process-tile{min-width:85px;padding:12px}.process-tile span{font-size:10px}.cut-bar span{font-size:8px}footer{padding:16px 17px;font-size:9px;align-items:flex-start;flex-direction:column;gap:2px}.date-pill{font-size:11px}dialog{padding:20px;max-height:92vh}.dialog-top h2{font-size:18px}.workflow{flex-direction:column}.bar-chart-row{grid-template-columns:70px minmax(0,1fr) 30px;gap:8px}.hide-mobile{display:none}.topbar .crumb>span:first-of-type{display:none}}
main[data-screen=dashboard]>.grid.two>.grid{align-content:start}main[data-screen=dashboard] .alert-item{padding:9px 0}main[data-screen=dashboard] .alert-item p{margin:5px 0 1px}main[data-screen=dashboard] .alert-item .link{min-height:24px;font-size:11px}main[data-screen=dashboard] .chart{height:200px}main[data-screen=dashboard]>.grid.two{align-items:start}main[data-screen=dashboard] .equipment-mini{padding:8px 0}#menu-toggle svg{width:20px;height:20px}.qr-box svg{width:132px;height:132px}
@media print{.sidebar,.topbar,footer,.dialog-top,#main,.form-actions{display:none!important}.workspace{margin:0}dialog[open]{position:static;display:block;max-width:100%;width:100%;box-shadow:none;max-height:none}dialog::backdrop{background:white}}
