@import"https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Noto+Sans+KR:wght@400;500;600;700&display=swap";:root{font-family:DM Sans,Noto Sans KR,sans-serif;color:#18211e;background:#e8e6df;font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-width:1180px}button,.button,input,select{font:inherit}button,.button{border:1px solid #c8c7c0;background:#fff;border-radius:6px;padding:9px 13px;display:inline-flex;gap:7px;align-items:center;justify-content:center;cursor:pointer;color:#27332f;font-weight:600}button:hover{border-color:#527d70}button:disabled{opacity:.45;cursor:not-allowed}button svg,.button svg{width:16px}.primary{background:#173b32!important;color:#fff!important;border-color:#173b32!important}.app{min-height:100vh}header{height:74px;background:#fcfbf7;border-bottom:1px solid #d4d1c8;display:flex;align-items:center;padding:0 24px;gap:24px}.brand{display:flex;align-items:center;gap:11px;min-width:320px}.brand-mark{background:#173b32;color:#f4c76b;width:40px;height:40px;border-radius:8px;display:grid;place-items:center;font-weight:800}.brand h1{font-size:18px;margin:0}.brand p{font-size:11px;color:#718079;margin:2px 0}.badge{padding:7px 12px;background:#fff1d8;color:#7b5412;border:1px solid #e9cf9e;border-radius:30px;font-size:12px;display:flex;gap:6px}.header-actions{margin-left:auto;display:flex;gap:8px}.notice{height:40px;background:#f8e8c8;color:#664c19;border-bottom:1px solid #e4c786;display:flex;align-items:center;gap:9px;padding:0 24px;font-size:12px}.notice svg{width:16px}main{display:grid;grid-template-columns:190px minmax(700px,1fr) 275px;max-width:1800px;margin:auto;min-height:calc(100vh - 114px)}.steps{background:#f5f3ed;border-right:1px solid #d7d4cc;padding:25px 16px}.steps>small,.results>small,.section-head small{font-size:10px;letter-spacing:1.6px;color:#74827c;font-weight:700}.step{display:flex;align-items:center;gap:10px;padding:11px 8px;color:#63706b;font-size:13px;border-radius:6px}.step b{display:grid;place-items:center;width:23px;height:23px;border-radius:50%;background:#e0dfd9;font-size:11px}.step i{margin-left:auto;color:#3b7b67}.step.active{background:#e0ece7;color:#173b32;font-weight:700}.step.active b{background:#173b32;color:#fff}.privacy{margin-top:30px;border:1px solid #cbd8d2;background:#edf4f1;border-radius:7px;padding:13px;font-size:11px}.privacy svg{color:#39725f}.privacy b{display:block;margin:7px 0}.privacy p{color:#64736d;line-height:1.5;margin:0}.workspace{padding:24px;overflow:hidden}.card{background:#f9f8f4;border:1px solid #d8d5cd;border-radius:8px}.project-row{padding:14px;display:grid;grid-template-columns:1fr 1fr .7fr;gap:12px}.section-head{display:flex;justify-content:space-between;align-items:end;margin:25px 0 10px}.section-head h2{font-size:18px;margin:4px 0 0}.section-head>span{font-size:12px;color:#718079}.dropzone{border:1.5px dashed #a9aaa4;border-radius:9px;min-height:150px;background:#f7f6f2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;color:#53635d}.dropzone.drag{background:#e5f1ec;border-color:#28725b}.dropzone>svg{color:#39725f}.dropzone>b{font-size:14px}.dropzone>span{font-size:11px;color:#82908b}.dropzone button{margin-top:5px}.validation{border-left:4px solid #dc8b2d;background:#fff3e3;padding:10px 14px;margin:10px 0;font-size:12px;color:#744917}.validation b{display:flex;gap:6px;align-items:center}.validation svg{width:15px}.validation p{margin:5px 0}.table-tools{display:flex;justify-content:space-between;align-items:center;margin:12px 0 6px;font-size:11px;color:#7b5c28}.table-tools input{width:260px}.table-wrap{max-height:310px;overflow:auto;border:1px solid #d7d4cc;border-radius:7px;background:#fff}table{width:100%;border-collapse:collapse;font-size:11px;white-space:nowrap}th{position:sticky;top:0;background:#eceae4;text-align:left;padding:9px;border-bottom:1px solid #cbc8c0;z-index:1}td{padding:6px 8px;border-bottom:1px solid #eceae4}td input,td select{padding:5px;min-width:65px;max-width:115px}.status-dot{display:block;width:9px;height:9px;border-radius:50%;background:#3a886c}.review .status-dot{background:#e99829}.invalid .status-dot{background:#d44343}.tabs{display:flex;gap:4px;border-bottom:1px solid #cfcfc8}.tabs button{border:none;border-radius:5px 5px 0 0;background:transparent}.tabs button.active{background:#173b32;color:#fff}.conditions{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;padding:15px;border-radius:0 7px 7px}.conditions .check{justify-content:center}.conditions .check input{width:auto}.conditions label,.project-row label{font-size:11px;font-weight:600;color:#506059;display:flex;flex-direction:column;gap:5px}input,select{border:1px solid #c9c9c2;border-radius:5px;background:#fff;padding:8px;color:#1d2a26;min-width:0}input:focus,select:focus{outline:2px solid #8bb6a8;border-color:#39725f}.runbar{display:flex;align-items:center;gap:7px;background:#deddd7;padding:10px;margin:18px -24px}.progress{height:28px;width:220px;background:#c8c8c1;position:relative;border-radius:3px;overflow:hidden}.progress i{position:absolute;background:#57927f;height:100%}.progress span{position:absolute;font-size:10px;left:8px;top:7px;color:#fff}.canvas-wrap{background:#303735;border-radius:7px;overflow:hidden}.canvas-tools{padding:7px;background:#242b29;display:flex;gap:5px}.canvas-tools button{background:#3c4643;color:#fff;border-color:#59615f;padding:5px 8px}.canvas-scroll{overflow:auto;padding:20px;height:420px}.marker-svg{display:block;height:360px;background:#f8f4ec}.hint{font-size:11px;color:#68766f}.footer-actions{border-top:1px solid #cfcdc6;margin-top:22px;padding-top:14px;display:flex;gap:8px}.danger{color:#a43b3b}.results{background:#f4f2ec;border-left:1px solid #d7d4cc;padding:25px 18px}.results h2{font-size:19px;margin:5px 0 14px}.result-status{padding:10px;border-radius:5px;font-weight:700;margin-bottom:10px;display:flex;flex-direction:column}.result-status small{font-weight:400;margin-top:3px}.result-status.valid{background:#daeee6;color:#23644f}.result-status.review{background:#fff0d6;color:#825817}.result-status.invalid{background:#f8dddd;color:#963b3b}.kpi{display:flex;justify-content:space-between;gap:8px;padding:11px 0;border-bottom:1px solid #d8d5ce;font-size:12px}.kpi span{color:#67736f}.kpi b{text-align:right}.hero-kpi{background:#173b32;color:#fff;padding:15px;margin:14px -5px;border-radius:6px}.hero-kpi span{font-size:10px;display:block;opacity:.75}.hero-kpi b{font-size:22px;display:block;margin-top:4px}.hero-kpi.muted{background:#82504b}.warnings{margin-top:15px;font-size:11px;background:#fff;border:1px solid #ddd8ce;padding:12px;border-radius:6px}.warnings p{color:#706e67;line-height:1.4}.empty-result{text-align:center;color:#7a8782;padding-top:90px}.empty-result span{font-size:50px;color:#adbbb6}.empty-result b{display:block;color:#43514c;margin:12px}.empty-result p{font-size:12px;line-height:1.6}@media(max-width:1300px){main{grid-template-columns:175px minmax(650px,1fr) 250px}.conditions{grid-template-columns:repeat(3,1fr)}}.field-validation{grid-column:1/-1;color:#963b3b;background:#f8dddd;border-left:4px solid #c84b4b;padding:8px 10px;font-size:11px}.native-status{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid #eadcb8;border-bottom:1px solid #eadcb8}.native-card details{font-size:11px;padding:10px 0}.native-card summary{cursor:pointer;font-weight:700}.native-card dl{display:grid;grid-template-columns:100px 1fr;margin:9px 0}.native-card dt{color:#7a6c4c}.native-card dd{margin:0 0 5px;word-break:break-word}.native-card em{display:block;color:#946d20;margin-top:8px}.candidate{margin:7px 0}.candidate>b{display:block;margin-bottom:4px}.candidate>div{display:inline-flex;margin:2px 5px 2px 0}.candidate input{padding:5px}.candidate button{padding:5px 7px;font-size:10px}.candidate>span{color:#8a8982}.guide-request{background:#e8f0ed;border-radius:6px;padding:12px;display:flex;flex-direction:column;gap:5px;font-size:12px}.guide-request span{color:#53625d}.support-levels{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-top:8px}.support-levels div{display:flex;flex-direction:column;gap:3px;border:1px solid #d8d5cd;background:#f8f7f3;padding:9px;border-radius:5px;font-size:10px}.support-levels b{color:#244b40}.support-levels span{color:#75807c}.native-card{margin:12px 0;border:1px solid #d5b870;background:#fffaf0;border-radius:8px;padding:16px}.native-title{display:flex;justify-content:space-between;align-items:start}.native-title small{font-size:9px;letter-spacing:1.5px;color:#8a6a23}.native-title h3{margin:3px 0;font-size:16px}.native-title>span{background:#e8a930;color:#fff;font-size:11px;font-weight:700;padding:7px 10px;border-radius:20px}.native-card>p{font-size:12px;line-height:1.65;color:#65552f}.native-status{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid #eadcb8;border-bottom:1px solid #eadcb8;margin:12px 0}.native-status .kpi{padding:8px;margin-right:14px}.native-actions{display:flex;gap:7px}.waiting{font-size:11px;color:#774d13;font-weight:600}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#13201db5;z-index:20;display:grid;place-items:center}.modal{width:590px;background:#faf9f5;border-radius:10px;padding:28px;position:relative;box-shadow:0 24px 80px #0007}.modal-close{position:absolute;right:14px;top:12px;border:0;background:transparent;font-size:24px}.modal h2{margin:6px 0 18px}.modal li{padding:5px;line-height:1.45}.modal>p{font-size:12px;color:#6d7773}.project-row.two{grid-template-columns:2fr .7fr}.diagnostic{margin:14px 0;background:#eef3f1;border:1px solid #bdcdc7;border-radius:8px;padding:12px}.diagnostic summary{font-weight:700;cursor:pointer;color:#244d40}.diagnostic-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:0 18px;margin-top:8px}.parse-steps{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.parse-steps span{font-size:10px;padding:5px 8px;border-radius:20px}.parse-steps .ok{background:#dceee7;color:#21624e}.parse-steps .fail{background:#f5dddd;color:#973e3e}.selection-tools{display:flex;gap:6px;align-items:center;position:sticky;top:0;z-index:3;background:#e8e6df;padding:8px 0}.selection-tools input{margin-left:auto}.assignment-warning,.locked-stage{background:#fff0d9;border-left:4px solid #dc8b2d;color:#785219;padding:10px 13px;font-size:12px;margin:7px 0}.pattern-grid{display:grid;grid-template-columns:repeat(3,minmax(190px,1fr));gap:10px}.pattern-card{background:#f9f8f4;border:2px solid #d3d1ca;border-radius:8px;padding:10px;cursor:pointer;transition:.15s}.pattern-card:hover{transform:translateY(-1px);box-shadow:0 5px 16px #273b3420}.pattern-card.selected{border-color:#173b32;background:#e9f2ee}.pattern-card.assigned{border-left:6px solid var(--fabric)}.pattern-card.excluded{opacity:.55}.pattern-card-head{display:flex;align-items:center;gap:7px}.pattern-card-head b{font-size:13px}.pattern-card-head span{margin-left:auto;font-size:9px;text-transform:uppercase;color:#6c7773}.pattern-shape{width:100%;display:block;margin:8px 0;background:#fff;border:1px solid #e2dfd7}.pattern-shape polygon{fill:#dce9e4;stroke:#173b32;stroke-width:1.5}.pattern-meta{display:grid;grid-template-columns:1fr 1fr;gap:4px;font-size:9px;color:#72807a}.pattern-meta b{display:block;color:#24332e;font-size:10px}.pattern-card>label{display:flex;align-items:center;justify-content:space-between;font-size:10px;margin-top:8px}.pattern-card>label input{width:64px;padding:5px}.pattern-modal{width:min(900px,90vw)}.pattern-modal .pattern-shape{max-height:60vh}.recent{display:flex;gap:3px}.recent button{padding:3px 6px;font-size:9px}.assigned-count{font-size:11px;color:#6e7a75}.fabric-tab{display:flex;align-items:center;background:#ebe9e2;border-radius:6px 6px 0 0;border:1px solid transparent;border-bottom:0}.fabric-tab.active{background:#173b32;color:#fff}.fabric-tab .tab-label,.fabric-tab .tab-close{border:0;background:transparent;color:inherit;border-radius:0}.fabric-tab .tab-label{padding-right:5px}.fabric-tab .tab-close{min-width:30px;padding:8px;font-size:17px;line-height:1}.fabric-tab .tab-close:hover{background:#ffffff25;color:#f4c76b}.optimization-progress{margin-left:auto;min-width:430px;background:#f5f4ef;border-radius:6px;padding:8px 10px;color:#26322e}.progress-title{display:flex;justify-content:space-between;font-size:11px}.progress-title strong{color:#245d4c}.optimization-progress .progress{width:100%;height:7px;margin:5px 0}.progress-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;font-size:9px}.progress-metrics span{color:#6d7874}.progress-metrics b{display:block;color:#26322e;font-size:10px}.delete-modal{width:430px}.delete-modal p{line-height:1.6;color:#5d6864}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.danger-delete{background:#b13c35;color:#fff;border-color:#b13c35}.canvas-tools{align-items:center}.rotation-state{font-size:10px;color:#d9e2df;margin-left:5px}.marker-svg{margin:auto}.grain-conditions{margin-top:8px;grid-template-columns:repeat(2,1fr)}.conditions:not(.grain-conditions)>label:nth-child(7){display:none}.pattern-shape .grain-overlay{stroke:#d35632;stroke-width:2}.pattern-shape marker path{fill:#d35632}.grain-warning{display:inline-block;margin-top:7px;background:#f6d9a9;color:#7a4b08;border-radius:12px;padding:3px 7px;font-size:9px;font-weight:700}.piece-direction{margin-top:8px;padding-top:7px;border-top:1px solid #d8d5cd;display:grid;gap:5px}.piece-direction label{font-size:9px;display:grid;grid-template-columns:1fr 1.5fr;align-items:center}.piece-direction select,.piece-direction input{padding:5px;font-size:9px}.selection-tools{flex-wrap:wrap}.selection-tools select[aria-label="Filter patterns"]{min-width:155px}.pattern-card.excluded{opacity:.68}.pattern-card.excluded:hover{opacity:.9}.marker-badge{border-radius:10px;padding:3px 7px;font-weight:800}.marker-badge.included{background:#dceee7;color:#21624e}.marker-badge.excluded{background:#f1dddd;color:#913c3c}.marker-toggle{display:flex;align-items:center;justify-content:space-between;margin-top:8px;padding-top:7px;border-top:1px solid #d8d5cd;font-size:10px;font-weight:700}.marker-toggle button{padding:4px 9px;font-size:9px}.marker-toggle button.on{background:#286b57;color:#fff;border-color:#286b57}.marker-toggle button.off{background:#f4dfdf;color:#8b3737;border-color:#d9abab}.canvas-scroll{overflow:auto;height:420px;padding:0}.canvas-stage{min-width:100%;min-height:100%;display:flex;align-items:center;justify-content:center;padding:16px}.marker-svg{display:block;flex:none;height:auto;background:#f8f4ec}.rotation-state{margin-left:auto;color:#c8d4d0;font-size:11px;align-self:center}.result-header{display:flex;justify-content:space-between;gap:16px;align-items:center;background:#173b32;color:#fff;padding:11px 14px;border-radius:7px 7px 0 0;font-size:12px}.result-header strong{color:#f4c76b;white-space:nowrap}.consumption-summary{margin:12px 0;background:#f9f8f4;border:1px solid #d8d5cd;border-radius:8px;padding:16px}.consumption-summary h3{font-size:12px;letter-spacing:1.4px;margin:0 0 10px;color:#52625c}.summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.summary-item{background:#fff;border:1px solid #e0ddd4;border-radius:5px;padding:9px;display:flex;flex-direction:column;gap:3px}.summary-item span{font-size:10px;color:#74817c}.summary-item b{font-size:13px}.summary-item.final{background:#173b32;color:#fff}.summary-item.final span{color:#bdd0ca}.summary-item.final b{font-size:17px;color:#f4c76b}.export-menu{position:relative;margin-left:auto}.export-menu>button{background:#173b32;color:#fff}.export-popover{position:absolute;right:0;top:calc(100% + 5px);z-index:8;background:#fff;border:1px solid #ccc8be;border-radius:7px;box-shadow:0 8px 22px #0002;padding:5px;width:235px}.export-popover button{width:100%;justify-content:flex-start;display:flex;flex-direction:column;align-items:flex-start;gap:2px}.export-popover small{font-weight:400;color:#77827e}.outdated-result{border:1px solid #e3b15a;background:#fff2d8;color:#795316;padding:12px;border-radius:6px;margin:10px 0;font-size:12px}@media(max-width:1300px){.summary-grid{grid-template-columns:repeat(2,1fr)}}.canvas-scroll{height:min(420px,70vh);min-height:260px;padding:0}.canvas-stage{padding:16px}.axis-state{color:#f4c76b;font-size:12px;font-weight:700;margin-left:8px}.rotation-state{margin-left:auto}.optimization-improvement{display:flex;justify-content:space-between;gap:12px;margin:12px 0;padding:10px 12px;border:1px solid #b9cfc6;border-radius:6px;background:#eaf3ef;color:#245443;font-size:12px}
