:root{--canvas:#f2f5f4;--surface:#fff;--surface-alt:#e8efed;--line:#c8d5d1;--ink:#102a2a;--muted:#566b68;--primary:#086e70;--deep:#064b50;--control:#1e5aa8;--attention:#c46a16;--ok:#23845a;--danger:#c83b32;--mono:"IBM Plex Mono",monospace;--sans:"IBM Plex Sans KR",sans-serif}*{box-sizing:border-box}html{color:var(--ink);background:var(--canvas);font-family:var(--sans)}body{margin:0}button,input,select{font:inherit}button,a{min-height:44px}button{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:6px;padding:.7rem 1rem;cursor:pointer;font-weight:600}button:hover{border-color:var(--primary)}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #7bc7c7;outline-offset:2px}.primary{background:var(--deep);color:#fff;border-color:var(--deep)}.attention{background:var(--attention);color:#fff;border-color:var(--attention)}.danger{color:var(--danger);border-color:#e3aaa6}.ghost{background:transparent}.mono,.metric,.badge{font-family:var(--mono);font-variant-numeric:tabular-nums}.muted{color:var(--muted)}.eyebrow{font-family:var(--mono);font-size:.76rem;letter-spacing:.08em;text-transform:uppercase;color:var(--primary);font-weight:600}.badge{display:inline-flex;align-items:center;gap:.4rem;min-height:28px;padding:.28rem .55rem;border:1px solid var(--line);border-radius:999px;background:var(--surface);font-size:.76rem}.badge.ok{color:var(--ok)}.badge.warn{color:var(--attention)}.badge.fail{color:var(--danger)}h1,h2,h3{word-break:keep-all;text-wrap:balance;margin:0}h1{font-size:clamp(2.5rem,6vw,5.6rem);line-height:1.06;letter-spacing:-.02em}h2{font-size:clamp(1.75rem,3vw,2.8rem);line-height:1.1;letter-spacing:-.015em}p{line-height:1.65}.public{min-height:100vh;background:linear-gradient(110deg,#edf5f1 0 58%,#dceae5 58%)}.public header{max-width:1280px;margin:auto;padding:1.2rem 2rem;display:flex;align-items:center;justify-content:space-between}.brand{font-weight:700;font-size:1.2rem;color:var(--deep);text-decoration:none}.public-hero{max-width:1280px;margin:auto;padding:7vh 2rem 5rem;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(420px,.95fr);gap:5rem;align-items:center}.hero-copy h1{max-width:820px}.hero-copy .lede{font-size:1.2rem;max-width:680px}.actions{display:flex;gap:.75rem;flex-wrap:wrap;margin-top:2rem}.actions a{display:inline-flex;align-items:center;text-decoration:none;padding:.8rem 1rem;border-radius:6px;font-weight:700}.proof-list{display:grid;gap:.8rem;margin:2.5rem 0 0;padding:0;list-style:none}.proof-list li{display:flex;align-items:center;gap:.65rem}.proof-list li::before{content:"";width:9px;height:9px;background:var(--ok);border-radius:50%}.process-card{background:var(--deep);color:#fff;padding:1.5rem;border-radius:12px;box-shadow:16px 18px 0 #b7d0c6}.process-card .topline{display:flex;justify-content:space-between;align-items:center}.process-flow{display:grid;grid-template-columns:repeat(5,1fr);align-items:center;gap:.45rem;margin:2.5rem 0}.node{border:1px solid #5e8888;background:#0b585d;padding:.9rem .45rem;text-align:center;border-radius:4px;font-size:.78rem}.arrow{color:#87c8bc;text-align:center}.decision-demo{border-top:1px solid #4b7777;padding-top:1rem}.decision-row{display:grid;grid-template-columns:1fr auto;gap:1rem;padding:.65rem 0;border-bottom:1px solid #325f61}.decision-row strong{font-family:var(--mono)}.public-section{max-width:1280px;margin:auto;padding:4rem 2rem}.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);margin-top:2rem}.step{background:var(--surface);padding:1.5rem}.step b{font-family:var(--mono);color:var(--primary)}.login-page{min-height:100vh;display:grid;grid-template-columns:1fr minmax(360px,520px)}.login-story{background:var(--deep);color:#fff;padding:7vw;display:flex;flex-direction:column;justify-content:center}.login-story h1{font-size:clamp(2.5rem,5vw,5rem)}.login-panel{padding:3rem;display:flex;flex-direction:column;justify-content:center;background:var(--surface)}.login-panel form{display:grid;gap:1rem}.login-panel label{display:grid;gap:.4rem;font-weight:600}.login-panel input{min-height:48px;border:1px solid var(--line);border-radius:4px;padding:.75rem}.autofill{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;margin:1.5rem 0}.error{color:var(--danger);min-height:1.5em}.shell{min-height:100vh;display:grid;grid-template-columns:216px 1fr;background:var(--canvas)}.side{background:var(--deep);color:#fff;padding:1.25rem 1rem;position:sticky;top:0;height:100vh}.side nav{display:grid;gap:.4rem;margin-top:2rem}.side a{color:#d8e8e5;text-decoration:none;padding:.75rem;border-radius:4px;display:flex;align-items:center}.side a[aria-current="page"],.side a:hover{background:#0b6062;color:#fff}.side-foot{position:absolute;bottom:1.25rem;left:1rem;right:1rem}.workspace{min-width:0}.statusbar{height:64px;background:var(--surface);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 1.5rem;position:sticky;top:0;z-index:5}.status-group{display:flex;gap:.55rem;align-items:center}.workmain{padding:1.5rem;max-width:1600px;margin:auto}.workhead{display:flex;align-items:flex-start;justify-content:space-between;gap:2rem;margin-bottom:1.25rem}.workhead h1{font-size:2rem}.plant-strip{display:grid;grid-template-columns:repeat(9,auto);align-items:center;gap:.45rem;background:var(--surface);border:1px solid var(--line);padding:.8rem 1rem;margin-bottom:1rem;overflow:auto}.plant-strip .equipment{min-width:92px;text-align:center;padding:.65rem;border:1px solid var(--line);border-radius:4px}.grid{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:1rem}.panel{background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:1rem}.panel h2{font-size:1.08rem;margin-bottom:1rem}.decision-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}.decision-step{background:var(--surface);padding:1rem;min-height:150px}.decision-step .num{font-family:var(--mono);font-size:.75rem;color:var(--primary)}.metric{font-size:1.7rem;font-weight:600;display:block;margin:.6rem 0}.metric small{font-family:var(--sans);font-size:.8rem;color:var(--muted)}.constraint{background:#fff8ed;border-color:#e6bd87}.rail{display:grid;gap:1rem}.mode-list{display:grid;gap:.5rem}.mode-btn{text-align:left}.mode-btn.active{border-color:var(--control);background:#eef4fc;color:var(--control)}.constraint-list{list-style:none;padding:0;margin:0;display:grid;gap:.65rem}.constraint-list li{display:flex;justify-content:space-between;border-bottom:1px solid #e7ecea;padding-bottom:.55rem}.table-wrap{overflow:auto}.data-table{width:100%;border-collapse:collapse;font-size:.87rem}.data-table th,.data-table td{text-align:left;padding:.7rem;border-bottom:1px solid #e4e9e7}.data-table th{color:var(--muted);font-size:.76rem}.chart{height:240px;width:100%;background:linear-gradient(#fff,#f7faf9);border:1px solid var(--line)}.chart polyline{fill:none;stroke:var(--control);stroke-width:2}.chart .cop{stroke:var(--ok)}.stack{display:grid;gap:1rem}.evidence-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}.kpi{background:var(--surface);padding:1rem}.toast{position:fixed;right:1rem;bottom:1rem;background:var(--ink);color:#fff;padding:1rem;border-radius:6px;z-index:10;max-width:360px}.loading{padding:4rem}.mobile-nav{display:none}
.workspace,.workmain,.grid,.stack,.table-wrap,.panel,.rail,.decision-steps{min-width:0}
.autofill button{display:flex;flex-direction:column;align-items:flex-start;gap:.25rem;text-align:left}
.autofill button small{font-weight:500;color:var(--muted);font-size:.72rem;word-break:break-all}
.login-help{margin:.35rem 0 0}
.mobile-nav a[aria-current="page"]{background:#0b6062;border-radius:4px}
@media (max-width: 900px) {
  html,body{overflow-x:hidden;max-width:100%}
  .shell,.workspace{overflow-x:hidden;width:100%}
  input,select,textarea{font-size:16px}
  .workmain,.grid,.stack,.rail,.decision-steps,.panel,.table-wrap,.evidence-grid{max-width:100%;min-width:0}
  .public{background:#edf5f1}
  .public header{padding:1rem;gap:.75rem;flex-wrap:wrap}
  .public-hero{grid-template-columns:1fr;gap:1.5rem;padding:1.5rem 1rem 2rem}
  .public-hero h1{font-size:1.85rem;line-height:1.18;letter-spacing:-.015em}
  .lede{font-size:1rem;max-width:none}
  .actions{margin-top:1.1rem}
  .actions a,.workhead .actions button,.workhead .actions a{width:100%;justify-content:center}
  .process-card{box-shadow:6px 8px 0 #b7d0c6;padding:1rem}
  .process-flow{grid-template-columns:1fr 16px 1fr 16px 1fr;margin:1rem 0;gap:.3rem}
  .process-flow .arrow{transform:none;font-size:.9rem}
  .node{padding:.55rem .3rem;font-size:.72rem}
  .steps{grid-template-columns:1fr 1fr;gap:.75rem}
  .public-section{padding:1.5rem 1rem 3rem}
  .public-section h2{font-size:1.45rem}
  .login-page{display:flex;flex-direction:column;min-height:100dvh;background:var(--canvas);overflow-x:hidden}
  .login-story{display:none}
  .login-panel{padding:max(1.25rem, env(safe-area-inset-top)) 1.25rem calc(1.5rem + env(safe-area-inset-bottom));justify-content:flex-start;flex:1;max-width:100%}
  .login-panel .brand{margin-bottom:.75rem}
  .login-panel h2{font-size:1.7rem;line-height:1.2;margin:.35rem 0}
  .autofill{grid-template-columns:1fr 1fr;gap:.6rem;margin:1rem 0}
  .autofill button{min-height:68px;padding:.7rem .75rem;max-width:100%}
  .login-panel form{gap:.85rem}
  .login-panel input{width:100%;max-width:100%}
  .login-panel .primary{width:100%}
  .shell{display:block}
  .side{display:none}
  .statusbar{padding:0 .8rem;height:56px}
  .mobile-nav{display:flex;flex-wrap:wrap;gap:.3rem;overflow:hidden;background:var(--deep);padding:.45rem;position:sticky;top:56px;z-index:4;width:100%}
  .mobile-nav a{color:#fff;text-decoration:none;padding:.55rem .6rem;white-space:nowrap;min-height:40px;display:inline-flex;align-items:center;justify-content:center;flex:1 1 auto;font-size:.82rem}
  .workmain{padding:.85rem;overflow-x:hidden}
  .workhead{display:block;margin-bottom:.85rem}
  .workhead h1{font-size:1.55rem}
  .workhead .actions{margin-top:.75rem;display:grid;gap:.5rem}
  .status-group .desktop-only{display:none}
  .plant-strip{display:flex;flex-wrap:wrap;gap:.4rem;grid-template-columns:none;padding:.65rem;margin-bottom:.75rem;max-width:100%}
  .plant-strip .flow-arrow{display:none}
  .equipment{min-width:calc(50% - .4rem);flex:1 1 42%;padding:.5rem;font-size:.82rem}
  .grid,.evidence-grid{grid-template-columns:minmax(0,1fr)}
  .kpis{grid-template-columns:1fr 1fr}
  .decision-steps{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .decision-step{min-height:0;padding:.75rem;overflow-wrap:anywhere}
  .decision-step p{font-size:.82rem;line-height:1.45}
  .metric{font-size:1.25rem}
  .panel{padding:.85rem;overflow:hidden}
  .constraint-list li{gap:.35rem;align-items:flex-start}
  .constraint-list b{overflow-wrap:anywhere;text-align:right}
  .table-wrap{display:block;width:100%;max-width:100%;overflow-x:auto}
  .data-table{width:100%;table-layout:fixed}
  .data-table th,.data-table td{overflow-wrap:anywhere;word-break:break-word}
  .chart{height:180px;max-width:100%}
  .toast{left:1rem;right:1rem;max-width:none}
}
@media (max-width: 520px) {
  .steps{grid-template-columns:1fr}
  .public header .badge{font-size:.68rem}
  .decision-steps{grid-template-columns:1fr}
  .decision-step{display:grid;grid-template-columns:1fr auto;grid-template-areas:"num metric" "body body";gap:.2rem .75rem;align-items:center}
  .decision-step .num{grid-area:num}
  .decision-step .metric{grid-area:metric;margin:0;text-align:right}
  .decision-step p{grid-area:body}
}
