:root{
  --kepco:#0067a3; --kepco-dark:#004e7c; --bg:#f4f6f9; --panel:#fff;
  --line:#e2e7ee; --text:#1c2530; --muted:#8a94a3; --danger:#cc2222; --ok:#1a9c5b;
  /* 로그인 화면 브랜드용 서체(본문 맑은 고딕과 구분). 미설치·차단 시 맑은 고딕으로 대체된다. */
  --font-brand:'Noto Sans KR','나눔고딕','NanumGothic','맑은 고딕','Malgun Gothic',sans-serif;
}
*{box-sizing:border-box}
body{margin:0;font-family:"맑은 고딕","Malgun Gothic",-apple-system,system-ui,sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.55}
a{color:var(--kepco);text-decoration:none}
code{background:#eef2f7;padding:1px 5px;border-radius:4px;font-size:12px}
.muted{color:var(--muted)}
.hidden{display:none !important}
button{cursor:pointer;font-family:inherit}
.btn-primary{background:var(--kepco);color:#fff;border:0;padding:9px 16px;border-radius:7px;font-weight:600;font-size:14px}
.btn-primary:hover{background:var(--kepco-dark)}
.btn-ghost{background:#fff;border:1px solid var(--line);padding:6px 12px;border-radius:7px}
.btn-sm{padding:4px 9px;font-size:12px;border-radius:6px}
.btn-danger{color:var(--danger);border:1px solid #f0c9c9;background:#fff}

/* ---------- 로그인 · 회원가입 (좌 브랜드 히어로 + 우 폼) ---------- */
.auth-body{min-height:100vh;margin:0;display:flex;background:#08243b;padding:24px}
.auth-shell{margin:auto;display:flex;width:min(960px,100%);background:var(--panel);border-radius:20px;overflow:hidden;box-shadow:0 30px 80px rgba(0,18,38,.5)}
/* 좌: 브랜드 히어로 */
.auth-hero{position:relative;flex:1.15;background:linear-gradient(158deg,#012f52 0%,#0067a3 96%);color:#fff;padding:40px 38px;display:flex;flex-direction:column;justify-content:space-between;min-height:564px;overflow:hidden}
.auth-hero>*{position:relative;z-index:1}
.auth-hero-bg{position:absolute;inset:0;width:100%;height:100%;z-index:0;opacity:.15}
.auth-logo{font-size:15px;font-weight:800;letter-spacing:-.2px;display:flex;align-items:center;gap:7px}
.auth-hero-mid{margin:auto 0}
.auth-hero h1{font-size:27px;line-height:1.38;font-weight:800;letter-spacing:-.6px;margin:0 0 15px}
.auth-hero .lead{font-size:13.5px;line-height:1.75;color:rgba(255,255,255,.8);margin:0 0 26px;max-width:340px}
.auth-feats{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:13px}
.auth-feats li{display:flex;align-items:center;gap:11px;font-size:13.5px;color:rgba(255,255,255,.93)}
.auth-feats .fi{flex:0 0 auto;width:27px;height:27px;border-radius:8px;background:rgba(255,255,255,.15);display:flex;align-items:center;justify-content:center}
.auth-hero-foot{font-size:11.5px;color:rgba(255,255,255,.5);letter-spacing:.3px}
/* 우: 폼 */
.auth-panel{flex:0 0 400px;padding:46px 42px;display:flex;flex-direction:column;justify-content:center}
.auth-panel h2{font-size:22px;font-weight:800;margin:0 0 5px;letter-spacing:-.3px}
.auth-panel .psub{color:var(--muted);font-size:13px;margin:0 0 26px}
.auth-field{margin-bottom:15px}
.auth-field>span.lbl{display:block;font-size:12.5px;font-weight:700;color:#4a5462;margin-bottom:7px}
.auth-ipt{position:relative;display:flex;align-items:center}
.auth-ipt .ic{position:absolute;left:12px;display:flex;color:#9aa4b2;pointer-events:none}
.auth-ipt input{width:100%;padding:11px 13px 11px 39px;border:1px solid var(--line);border-radius:10px;font-size:14px;background:#fafbfd;color:var(--text);transition:border-color .15s,box-shadow .15s,background .15s}
.auth-ipt input::placeholder{color:#b3bcc7}
.auth-ipt input:focus{outline:none;border-color:var(--kepco);background:#fff;box-shadow:0 0 0 3px rgba(0,103,163,.14)}
.auth-submit{width:100%;margin-top:10px;padding:12px;font-size:15px;font-weight:700;border-radius:10px}
.auth-error{background:#fff2f2;border:1px solid #f2cccc;color:var(--danger);font-size:12.5px;padding:9px 12px;border-radius:9px;margin-bottom:16px}
.auth-alt{margin-top:22px;padding-top:20px;border-top:1px solid var(--line);font-size:13px;color:var(--muted);text-align:center}
.auth-alt a{font-weight:700}
@media(max-width:820px){
  .auth-body{padding:0;background:var(--panel)}
  .auth-shell{flex-direction:column;width:100%;border-radius:0;box-shadow:none;min-height:100vh}
  .auth-hero{flex:none;min-height:0;padding:30px 26px 26px}
  .auth-hero-mid{margin:14px 0}
  .auth-hero h1{font-size:22px}
  .auth-feats,.auth-hero-foot{display:none}
  .auth-panel{flex:1;flex-basis:auto;padding:30px 26px}
}

/* ---------- 상단바 ---------- */
.topbar{display:flex;align-items:center;justify-content:space-between;background:var(--kepco);color:#fff;padding:0 20px;height:54px}
.topbar-left{font-weight:800;font-size:16px}
.topbar-right{display:flex;align-items:center;gap:16px;font-size:14px}
.topbar-right a{color:#dbeaf5}
.topbar-right a.active{color:#fff;font-weight:700;border-bottom:2px solid #fff;padding-bottom:2px}
.topbar-right .who{color:#bcd7ea;font-size:12px}
.topbar-right .logout{color:#ffd9d9}

/* ---------- 생성 화면 ---------- */
.gen-layout{display:grid;grid-template-columns:minmax(360px,440px) 1fr;gap:16px;padding:16px;align-items:start}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:12px}
.panel-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--line)}
.panel-head.sticky{position:sticky;top:0;background:#fff;border-radius:12px 12px 0 0;z-index:5}
.panel-head h2{margin:0;font-size:15px}
.tpl-meta{font-size:11px;color:var(--muted)}
.form-panel{position:sticky;top:8px;align-self:start;max-height:calc(100vh - 16px);overflow:auto}
.conn-illust{margin-top:8px;border:1px solid var(--line);border-radius:8px;padding:6px 8px;background:#fbfdff}
.coop-tbl{width:100%;border-collapse:collapse;margin:8px 0}
.coop-tbl th,.coop-tbl td{border:1px solid #ccc;padding:4px 8px;font-size:13px;text-align:center}
.coop-tbl th{background:#f0f4f8;font-weight:700}

/* ---------- 개요도 편집기 ---------- */
.dgm-layout{display:grid;grid-template-columns:200px 1fr 230px;gap:10px;padding:10px;align-items:start}
.dgm-palette,.dgm-props{background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px}
.dgm-sec-title{font-size:12px;font-weight:800;color:var(--kepco);margin:10px 0 6px;border-bottom:1px dashed var(--line);padding-bottom:4px}
.dgm-sec-title:first-child{margin-top:0}
.dgm-palette-grid{display:grid;grid-template-columns:1fr 1fr;gap:5px}
.dgm-tool{border:1px solid var(--line);background:#fbfdff;border-radius:7px;padding:7px 6px;font-size:12px;cursor:pointer}
.dgm-tool:hover{background:#eef6fc;border-color:var(--kepco)}
.dgm-tool.on{background:var(--kepco);color:#fff;border-color:var(--kepco)}
.dgm-line-tools{display:flex;flex-direction:column;gap:5px}
.dgm-file-tools{display:flex;flex-direction:column;gap:5px}
.dgm-file-tools button{width:100%}
.dgm-hint{font-size:11px;color:var(--muted);margin-top:6px;line-height:1.5}
.dgm-canvas-wrap{background:#fff;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.dgm-toolbar{display:flex;align-items:center;gap:12px;padding:8px 12px;border-bottom:1px solid var(--line);background:#f7f9fc}
.dgm-mode{font-weight:700;color:var(--kepco-dark);font-size:13px}
.dgm-snap{font-size:12px;display:inline-flex;align-items:center;gap:5px;color:var(--text);font-weight:600}
.dgm-tip{font-size:12px;color:var(--muted)}
.dgm-canvas .guide{stroke:#ff3b7f;stroke-width:1;stroke-dasharray:5 3;pointer-events:none}
.dgm-canvas .marq{fill:rgba(0,103,163,.10);stroke:#0067a3;stroke-width:1.2;stroke-dasharray:5 3;pointer-events:none}
.dgm-style2{display:flex;gap:5px;margin-top:5px}
.dgm-canvas{display:block;width:100%;height:calc(100vh - 130px);background:#fff;touch-action:none}
.dgm-el{cursor:move}
.dgm-el .selbox{fill:none;stroke:var(--kepco);stroke-width:1.5;stroke-dasharray:5 3}
.dgm-line .hitline{cursor:move}
.dgm-line.sel line:not(.hitline){stroke-dasharray:6 3}
.lh{fill:#fff;stroke:var(--kepco);stroke-width:2;cursor:grab}
.dgm-canvas .rh{fill:#fff;stroke:#1a9c5b;stroke-width:2;cursor:grab}
.dgm-canvas .rh-arm{stroke:#1a9c5b;stroke-width:1.2;stroke-dasharray:3 2}
.dgm-canvas .handles{pointer-events:auto}
.dgm-canvas text{font-family:'Malgun Gothic','맑은 고딕',sans-serif}
.dgm-canvas .dl{font-size:13px;fill:#33475b}
.dgm-canvas .dg{font-size:15px;font-weight:700;fill:#212832}
.dgm-canvas .ds{font-size:11px;font-weight:700;fill:#212832}
.dgm-canvas .dt{font-size:14px;font-weight:700;fill:#212832}
.dgm-canvas .dtx{font-size:14px;fill:#212832}
.dgm-fld{display:block;font-size:12px;font-weight:600;margin-bottom:10px}
.dgm-fld input[type=text],.dgm-fld input:not([type]){width:100%;margin-top:4px;padding:6px 8px;border:1px solid var(--line);border-radius:6px}
.dgm-fld input[type=range]{width:100%}
.dgm-colors{display:flex;gap:6px;margin-top:6px}
.dgm-color{width:22px;height:22px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px var(--line);cursor:pointer}
.cond-form{padding:8px 18px 24px}
.fgroup{margin-top:16px}
.fgroup-title{font-size:12px;font-weight:800;color:var(--kepco);text-transform:uppercase;letter-spacing:.03em;padding:6px 0;border-bottom:1px dashed var(--line);margin-bottom:8px}
.field{margin-bottom:12px}
.field > label,.field > .flabel{display:block;font-weight:600;font-size:13px;margin-bottom:5px}
.field .req{color:var(--danger);margin-left:3px}
.field input[type=text],.field select,.field textarea{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:7px;font-size:13px;font-family:inherit}
.field textarea{min-height:96px;resize:vertical;white-space:pre;line-height:1.5}
.field .help{font-size:11px;color:var(--muted);margin-top:3px}
.radio-row{display:flex;flex-wrap:wrap;gap:6px}
.radio-row label{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line);padding:6px 11px;border-radius:20px;font-size:13px;cursor:pointer}
.radio-row label.on{background:#e8f2fa;border-color:var(--kepco);color:var(--kepco-dark);font-weight:700}
.radio-row input{display:none}
.field-auto .auto-val{padding:8px 10px;border:1px dashed #b9d4e8;background:#eef6fc;border-radius:7px;font-weight:700;color:var(--kepco-dark)}
.auto-tag{font-size:10px;background:#e8f2fa;color:var(--kepco);border:1px solid #cfe3f2;border-radius:10px;padding:1px 7px;font-weight:700;vertical-align:middle}

/* ---------- 미리보기(문서) ---------- */
.preview-panel{min-height:calc(100vh - 86px)}
.preview-doc{padding:30px 44px 60px;background:#fff;border-radius:0 0 12px 12px;font-size:14px}
.preview-doc .doc-title{text-align:center;font-size:22px;font-weight:800;margin:6px 0 26px}
.preview-doc .sec{margin:18px 0}
.preview-doc .sec-h{font-size:15px;font-weight:800;margin:0 0 6px;color:#111}
.preview-doc .ln{margin:2px 0;white-space:pre-wrap;word-break:break-word}
.preview-doc .miss{background:#ffe2e2;color:var(--danger);border-radius:3px;padding:0 3px;font-weight:700}
.preview-doc .diagram{display:block;max-width:100%;margin:10px auto;border:1px solid var(--line);border-radius:8px}
.preview-doc .diagram-note{text-align:center;font-size:12px;color:var(--kepco);margin:-4px 0 8px}
.missing-badge{background:#fff2f2;color:var(--danger);border:1px solid #f2c9c9;padding:4px 9px;border-radius:20px;font-size:12px;font-weight:700}
.actions{display:flex;align-items:center;gap:10px}
.cond-toggle{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;color:var(--muted);cursor:pointer;user-select:none}
/* 조건부 문구 표시(미리보기 전용) — 어떤 입력으로 이 문구가 생겼는지 안내 */
.preview-doc .pblk{position:relative}
.preview-doc .pblk-cond{border-left:2px solid #cfe3f2;padding-left:8px;margin-left:-10px}
.cond-badge{display:inline-block;font-size:11px;line-height:1.5;color:var(--kepco-dark);background:#eaf3fb;border:1px solid #cfe3f2;border-radius:10px;padding:0 8px;margin:3px 0 3px}
.cond-badge b{color:#8a6a12;font-weight:700}
.preview-doc.cond-off .cond-badge{display:none}
.preview-doc.cond-off .pblk-cond{border-left:0;padding-left:0;margin-left:0}
@media print{.cond-badge{display:none!important}.pblk-cond{border-left:0!important;padding-left:0!important;margin-left:0!important}.cond-toggle{display:none!important}.preview-doc::before{display:none!important}}

/* ---------- 관리자 ---------- */
.admin-tabs{display:flex;align-items:center;gap:6px;padding:10px 16px;background:#fff;border-bottom:1px solid var(--line)}
.admin-tabs .tab{background:transparent;border:0;padding:8px 14px;border-radius:8px;font-size:14px;color:var(--muted);font-weight:600}
.admin-tabs .tab.active{background:#e8f2fa;color:var(--kepco-dark)}
.admin-save{margin-left:auto;display:flex;gap:8px;align-items:center}
.admin-save input{padding:8px 10px;border:1px solid var(--line);border-radius:7px;width:280px;font-size:13px}
.admin-body{padding:16px}
.tabpane{display:none}
.tabpane.active{display:block}

.sec-card{background:#fff;border:1px solid var(--line);border-radius:10px;margin-bottom:14px;overflow:hidden}
.sec-card-head{display:flex;align-items:center;gap:10px;padding:10px 14px;background:#f7f9fc;border-bottom:1px solid var(--line)}
.sec-card-head input.sec-no{width:44px}
.sec-card-head input.sec-title{flex:1;font-weight:700}
.sec-card-head input{padding:6px 8px;border:1px solid var(--line);border-radius:6px;font-size:13px}
.sec-blocks{padding:10px 14px}
.block{border:1px solid var(--line);border-radius:8px;padding:10px;margin-bottom:10px;background:#fcfdff}
.block textarea{width:100%;min-height:70px;border:1px solid var(--line);border-radius:6px;padding:8px;font-family:inherit;font-size:13px;line-height:1.5;white-space:pre-wrap}
.cond-list{margin-top:8px}
.cond{display:flex;gap:6px;align-items:center;margin-top:6px;flex-wrap:wrap}
.cond select,.cond input{padding:5px 7px;border:1px solid var(--line);border-radius:6px;font-size:12px}
.cond .cval{min-width:120px}
.block-tools,.sec-tools{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.small-label{font-size:11px;color:var(--muted);font-weight:700;margin-right:4px}

.field-row{display:grid;grid-template-columns:130px 150px 90px 1fr 70px;gap:8px;align-items:start;padding:8px;border:1px solid var(--line);border-radius:8px;margin-bottom:8px;background:#fff}
.field-row input,.field-row select,.field-row textarea{padding:6px 8px;border:1px solid var(--line);border-radius:6px;font-size:12px;width:100%;font-family:inherit}
.field-row textarea{min-height:34px}
.opt-help{font-size:11px;color:var(--muted)}

table.ver{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--line);border-radius:8px;overflow:hidden}
table.ver th,table.ver td{padding:9px 12px;border-bottom:1px solid var(--line);text-align:left;font-size:13px}
table.ver th{background:#f7f9fc}
.badge-active{background:#e3f6ec;color:var(--ok);padding:2px 8px;border-radius:12px;font-size:11px;font-weight:700}

.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#1c2530;color:#fff;padding:11px 20px;border-radius:8px;font-size:14px;box-shadow:0 8px 24px rgba(0,0,0,.25);z-index:99}
.check-box{background:#fff;border:1px solid var(--line);border-radius:8px;padding:14px 16px;margin-bottom:12px}
.check-box h3{margin:0 0 8px;font-size:14px}
.check-ok{color:var(--ok)} .check-warn{color:var(--danger)}

/* ---------- 내 문서 도구 ---------- */
.doc-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:#fff;border-bottom:1px solid var(--line);padding:8px 16px}
.doc-toolbar .dt-label{font-weight:800;color:var(--kepco);font-size:13px}
.doc-toolbar select{padding:6px 8px;border:1px solid var(--line);border-radius:6px;font-size:13px;min-width:230px}
.doc-toolbar .btn-danger{color:var(--danger);border:1px solid #f0c9c9;background:#fff}
.doc-toolbar .dt-sep{width:1px;height:20px;background:var(--line);margin:0 4px}
.doc-toolbar .cur-doc{font-size:12px;color:var(--muted);font-weight:700}
.autosave-hint{font-size:11px;color:var(--ok);margin-left:6px;min-width:56px}

/* ---------- 화면형 업무 디자인 ---------- */
.auth-body{width:100%;min-height:100dvh;display:block;background:#eef5fb;padding:0}
.auth-shell{width:100%;min-height:100dvh;margin:0;display:grid;grid-template-columns:minmax(0,59%) minmax(410px,41%);border-radius:0;box-shadow:none;background:#fff}
.auth-hero{min-height:100dvh;padding:66px clamp(48px,6.1vw,96px) 40px;background:linear-gradient(90deg,rgba(233,244,251,.92) 0%,rgba(233,244,251,.6) 33%,rgba(233,244,251,.14) 60%,rgba(233,244,251,0) 80%),url('/static/auth-bg.jpg') center/cover no-repeat;color:#063b7e;overflow:hidden}
.auth-hero>*{position:relative;z-index:2}.auth-scene{position:absolute;inset:0;width:100%;height:100%;z-index:1}.auth-grid{position:absolute;inset:0;width:100%;height:100%;z-index:1}.auth-orb{position:absolute;border-radius:50%;pointer-events:none;z-index:0}.orb-one{width:430px;height:430px;top:-240px;right:-80px;background:radial-gradient(circle,rgba(22,122,225,.45),rgba(23,123,225,0) 68%)}.orb-two{width:360px;height:360px;bottom:-190px;left:-110px;background:rgba(255,255,255,.24);filter:blur(2px)}
.auth-logo{font-family:var(--font-brand);font-size:clamp(26px,2.1vw,34px);font-weight:900;letter-spacing:-1.6px;color:#06376e;line-height:1.1;padding-left:16px;border-left:6px solid #0a63c8;text-shadow:0 1px 14px rgba(233,244,251,.95)}
.auth-hero-mid{margin:3.5vh 0 auto;max-width:710px}.auth-hero h1{font-size:clamp(34px,3.1vw,54px);line-height:1.33;letter-spacing:-3px;color:#073d83;margin:0 0 25px;font-weight:800;text-shadow:0 1px 16px rgba(233,244,251,.9)}.auth-hero .lead{font-family:var(--font-brand);font-weight:500;font-size:18px;line-height:1.8;max-width:620px;color:#20476d;margin:0;text-shadow:0 1px 12px rgba(233,244,251,.85)}
.auth-feats{display:grid;grid-template-columns:repeat(3,1fr);gap:0;background:rgba(255,255,255,.86);border:1px solid rgba(255,255,255,.95);border-radius:18px;padding:22px 25px;box-shadow:0 12px 34px rgba(12,80,142,.16);backdrop-filter:blur(8px)}.auth-feature{display:flex;align-items:center;gap:12px;padding:0 14px;border-right:1px solid rgba(14,89,156,.15);color:#124d91}.auth-feature:last-child{border-right:0}.auth-feature b{display:block;font-size:15px;letter-spacing:-.6px}.auth-feature small{display:block;margin-top:2px;color:#547196;font-size:11px}.feature-icon{width:45px;height:45px;display:grid;place-items:center;flex:none;border-radius:50%;color:#fff;background:linear-gradient(135deg,#388fff,#005ec6);font-size:26px;font-weight:800}
.auth-kepco{display:inline-flex;align-self:flex-start;align-items:center;gap:13px;padding:11px 21px 11px 12px;border-radius:14px;background:linear-gradient(114deg,#0470b4,#013f6b);box-shadow:0 9px 26px rgba(2,40,76,.3)}.kepco-mark{width:64px;height:38px;flex:none;display:grid;place-items:center;padding:5px 7px;border-radius:8px;background:#fff}.kepco-mark svg{display:block;width:100%;height:100%}.kepco-txt b{display:block;font-family:var(--font-brand);font-size:21px;font-weight:900;letter-spacing:-.7px;color:#fff;line-height:1.2;white-space:nowrap}
.auth-brandfoot{display:flex;flex-direction:column;align-items:flex-start;gap:15px}
.auth-copy{display:flex;align-items:center;gap:11px;font-family:var(--font-brand);font-size:11px;font-weight:500;letter-spacing:1.5px;color:#1d456b;opacity:.82;text-shadow:0 1px 10px rgba(233,244,251,.9)}
.auth-copy::before{content:"";width:28px;height:1px;background:currentColor;opacity:.5}
.auth-panel{position:relative;min-height:100dvh;flex:auto;padding:66px clamp(42px,6vw,112px) 42px;justify-content:center;background:#fff}.auth-form-wrap{width:min(100%,460px);margin:auto}.auth-panel-kicker{font-size:10px;color:#3182cc;letter-spacing:1.4px;font-weight:800;margin-bottom:16px}.auth-panel h2{font-size:42px;letter-spacing:-2px;color:#112b55;margin:0 0 7px}.auth-panel .psub{font-size:17px;line-height:1.6;margin:0 0 40px;color:#74849b}.auth-field{margin-bottom:22px}.auth-field>span.lbl{font-size:16px;color:#52627a;margin-bottom:9px}.auth-ipt .ic{left:18px;color:#7f94ad;font-size:22px;line-height:1}.auth-ipt input{padding:17px 17px 17px 52px;border-color:#d4dfeb;border-radius:12px;background:#f6f9fe;font-size:17px}.auth-ipt input:focus{border-color:#1774d0;background:#fff;box-shadow:0 0 0 4px rgba(26,117,215,.12)}.auth-submit{margin-top:16px;padding:18px;border-radius:12px;background:linear-gradient(115deg,#267cf0,#0063cc);font-size:20px;box-shadow:0 9px 18px rgba(0,99,204,.2)}.auth-alt{margin-top:38px;padding-top:27px;font-size:16px}.auth-panel-foot{position:absolute;bottom:26px;left:0;width:100%;padding:0 clamp(24px,3.4vw,60px);text-align:center;color:#9aabc0;font-size:12px}.brand-slogan{font-size:clamp(20px,1.8vw,26px);font-weight:800;letter-spacing:-.6px;color:#122c4f;white-space:nowrap}.brand-slogan .c1{color:#0a5fd0}.brand-slogan .c2{color:#26b4e6}

.app-body{background:linear-gradient(180deg,#f2f8fd 0%,#e7f1fa 100%);min-height:100dvh;padding-bottom:44px}.topbar{height:62px;padding:0 32px;background:linear-gradient(100deg,#034275,#006ba6 55%,#00497d);box-shadow:0 2px 8px rgba(2,55,102,.2)}.topbar-left{display:flex;align-items:center;gap:10px;font-size:19px;letter-spacing:-.7px}.app-logo-mark{display:grid;place-items:center;width:28px;height:28px;border-radius:8px;background:#187bd7;color:#fff;font-size:15px}.topbar-right{height:100%;gap:27px;font-size:14px}.topbar-right a{height:100%;display:flex;align-items:center;color:#cce7f8}.topbar-right a.active{padding:0;border-bottom:3px solid #fff}.topbar-right .who{color:#d2e6f4}.topbar-right .logout{color:#fff}
.doc-toolbar{min-height:64px;padding:10px 32px;gap:14px;box-shadow:0 1px 5px rgba(25,65,100,.06);border:0}.toolbar-docs,.toolbar-actions{display:flex;align-items:center;gap:8px}.doc-toolbar .dt-label{font-size:14px}.doc-toolbar select{height:36px;border-radius:18px;min-width:300px;padding:5px 14px;background:#f8fbfe}.doc-toolbar .btn-sm{padding:7px 12px;border-radius:8px;font-size:12px}.toolbar-actions{margin-left:auto}.doc-toolbar .cur-doc{font-size:13px;color:#74849b}.doc-toolbar .dt-sep{height:24px}
.gen-layout{grid-template-columns:minmax(340px,400px) minmax(0,1fr);gap:16px;padding:16px 28px 16px;align-items:stretch;min-height:calc(100dvh - 170px)}.panel{border-color:#d9e6f0;border-radius:16px;box-shadow:0 3px 13px rgba(38,81,120,.09);overflow:hidden}.panel-head{min-height:66px;padding:16px 24px;background:rgba(255,255,255,.93);border-bottom-color:#deebf4}.panel-head h2{display:flex;align-items:center;gap:10px;font-size:17px;color:#07539a;letter-spacing:-.6px}.panel-title-icon{display:grid;place-items:center;width:27px;height:27px;color:#1476ce;background:#e2f2ff;border-radius:7px;font-size:16px}.form-panel{position:relative;top:auto;max-height:calc(100dvh - 185px);border-radius:16px;overflow-y:auto;overflow-x:hidden}.preview-panel{min-height:0;height:calc(100dvh - 185px);display:flex;flex-direction:column}.preview-panel .panel-head{flex:none}.preview-doc{position:relative;flex:1;overflow:auto;padding:42px 6.2% 64px;border-radius:0;background:#fff;font-size:14px}.preview-doc::before{content:"";position:absolute;top:0;right:0;width:46%;height:172px;background:url('/static/auth-bg.jpg') center 42%/cover no-repeat;clip-path:polygon(19% 0,100% 0,100% 100%,0 70%);-webkit-mask-image:linear-gradient(203deg,rgba(0,0,0,.92) 18%,rgba(0,0,0,.45) 58%,rgba(0,0,0,0) 90%);mask-image:linear-gradient(203deg,rgba(0,0,0,.92) 18%,rgba(0,0,0,.45) 58%,rgba(0,0,0,0) 90%);pointer-events:none}.preview-doc .doc-title{position:relative;z-index:1;text-align:left;font-size:26px;letter-spacing:-1.5px;color:#102d55;border-bottom:4px solid #2585dc;width:max-content;max-width:75%;padding-bottom:10px;margin:0 0 38px}.preview-doc .sec-h{font-size:17px;color:#07539a}.preview-doc .sec{position:relative;z-index:1;margin:24px 0}.preview-doc .ln{line-height:1.7}.actions{gap:9px}.actions .btn-primary{border-radius:9px;padding:10px 16px}.app-footer{position:fixed;z-index:8;bottom:0;left:0;width:100%;height:38px;display:flex;align-items:center;gap:24px;padding:0 32px;background:rgba(255,255,255,.94);border-top:1px solid #dbe7f0;color:#71849a;font-size:11px}.footer-brand{display:inline-flex;align-items:center;gap:6px;color:#315b7d;font-weight:800}.footer-brand small{font-size:8px}.footer-brand .kmark{flex:none;display:block}.footer-internal{color:#e62835;font-weight:800}.footer-contact{margin-left:auto}

@media(max-width:1000px){.auth-shell{grid-template-columns:minmax(0,54%) minmax(390px,46%)}.auth-hero{padding-left:44px;padding-right:44px}.auth-hero h1{font-size:34px}.auth-feats{padding:16px 12px}.auth-feature{padding:0 8px}.auth-feature b{font-size:13px}.feature-icon{width:38px;height:38px;font-size:20px}.topbar-right{gap:14px}.gen-layout{padding-left:16px;padding-right:16px;grid-template-columns:360px minmax(0,1fr)}}
@media(max-width:820px){.auth-shell{display:flex;min-height:100dvh}.auth-hero{min-height:390px;padding:34px 26px 24px;background:linear-gradient(180deg,rgba(233,244,251,.9) 0%,rgba(233,244,251,.5) 55%,rgba(233,244,251,.2) 100%),url('/static/auth-bg.jpg') center/cover no-repeat}.auth-logo{font-size:17px}.auth-hero-mid{margin:auto 0 0}.auth-hero h1{font-size:29px;letter-spacing:-1.7px;margin-bottom:14px}.auth-hero .lead{font-size:14px;margin-bottom:0}.auth-feats,.auth-kepco{display:none}.auth-panel{min-height:auto;padding:38px 26px 62px}.auth-panel h2{font-size:34px}.auth-panel .psub{font-size:15px;margin-bottom:28px}.auth-panel-foot{bottom:18px}.topbar{height:auto;min-height:58px;padding:8px 16px;align-items:flex-start}.topbar-right{gap:13px;flex-wrap:wrap;height:auto;justify-content:flex-end;font-size:12px}.topbar-right a{height:28px}.topbar-right .who{display:none}.doc-toolbar{padding:10px 16px}.toolbar-actions{margin-left:0}.doc-toolbar select{min-width:220px}.gen-layout{display:block;padding:12px;min-height:0}.form-panel{max-height:none;margin-bottom:12px}.preview-panel{height:auto;min-height:620px}.app-footer{position:static;height:auto;min-height:38px;padding:10px 16px;flex-wrap:wrap;gap:8px}.footer-contact{margin-left:0}.preview-doc::before{width:58%;height:120px}.preview-doc .doc-title{font-size:21px;margin-bottom:28px}}

/* 데스크탑 폭에서의 로그인·회원가입 치수. 좌측 히어로는 실사진 배경 + 실제 텍스트로 구성한다
   (과거 참고 시안 PNG를 통째로 배경에 깔고 히어로 내용을 숨기던 방식은 화질 저하로 폐기). */
@media(min-width:821px){
  .auth-panel{display:block;overflow:auto;padding:0 clamp(48px,6.3vw,108px);min-height:100dvh}
  .auth-form-wrap{width:100%;max-width:525px;margin:clamp(102px,16.7vh,170px) auto 0}
  .auth-panel-signup .auth-form-wrap{margin-top:clamp(42px,7vh,76px)}
  .auth-panel-kicker{display:none}
  .auth-panel h2{font-size:47px;line-height:1.15;letter-spacing:-3px;margin-bottom:12px}
  .auth-panel .psub{font-size:18px;margin-bottom:37px;white-space:nowrap}
  .auth-field{margin-bottom:23px}
  .auth-field>span.lbl{font-size:17px;margin-bottom:10px}
  .auth-ipt input{height:72px;padding:18px 18px 18px 56px;font-size:18px;border-radius:12px;background:#f3f7ff}
  .auth-ipt .ic{left:18px;width:22px;height:22px;color:#91a4ba;font-size:0;border:0;border-radius:0}
  .auth-ipt .ic::after{display:none}
  .auth-ipt .ic svg{display:block;width:22px;height:22px}
  .auth-submit{height:76px;margin-top:17px;border-radius:12px;font-size:22px}
  .auth-alt{margin-top:37px;padding-top:27px;font-size:17px}
  .auth-panel-foot{bottom:27px;font-size:12px}
  .auth-panel-signup .auth-panel-foot{display:none}
  .auth-panel-signup h2{font-size:39px}.auth-panel-signup .psub{font-size:16px;margin-bottom:22px}.auth-panel-signup .auth-field{margin-bottom:13px}.auth-panel-signup .auth-field>span.lbl{font-size:14px;margin-bottom:6px}.auth-panel-signup .auth-ipt input{height:51px;padding:12px 14px 12px 47px;font-size:15px}.auth-panel-signup .auth-ipt .ic{transform:scale(.76);transform-origin:left center;top:14px}.auth-panel-signup .auth-submit{height:57px;margin-top:8px;font-size:17px}.auth-panel-signup .auth-alt{margin-top:20px;padding-top:18px;font-size:14px}
}

/* ---------- 설비 구성 도우미 ---------- */
.equip{margin:8px 18px 0;border:1px solid #cfe3f2;border-radius:10px;overflow:hidden;background:#fbfdff}
.equip-head{background:#eef6fc;padding:10px 14px;font-weight:800;color:var(--kepco-dark);cursor:pointer;display:flex;align-items:center;gap:8px;flex-wrap:nowrap;white-space:nowrap}
.equip-title{overflow:hidden;text-overflow:ellipsis}
.equip-head .equip-caret{margin-left:auto;flex:none}
.equip-sub{font-weight:500;color:var(--muted);font-size:11px}
.equip-body{display:none;padding:12px 14px}
.equip-body.open{display:block}
.equip-group{margin-bottom:12px}
.equip-gtitle{font-size:12px;font-weight:800;color:#33475b;margin-bottom:6px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.equip-applyto{font-weight:600;font-size:11px;color:var(--kepco);background:#e8f2fa;border:1px solid #cfe3f2;border-radius:10px;padding:1px 8px}
.equip-gbtns{margin-left:auto;display:flex;gap:5px}
.equip-gdesc{font-size:11px;color:var(--muted);margin:0 0 7px}
/* 시공주체가 한전이 아닐 때의 미산출 안내(그룹 안에만 표시) */
.equip-skip{font-size:11px;color:#6b4ea8;background:#f6f1fd;border:1px solid #e2d6f5;border-radius:7px;padding:7px 10px;margin-bottom:6px;line-height:1.5}
/* 합계: 총액 한 줄 + 분야별 내역 아랫줄 */
.etot-main{line-height:1.4}
.etot-by{margin-top:3px;font-size:11.5px;color:#a07a35;font-weight:600}
/* 입력칸 이름표 */
.ef{display:inline-flex;flex-direction:column;gap:1px}
.efl{font-size:9.5px;font-weight:700;color:#94a0ae;letter-spacing:-.3px;white-space:nowrap;line-height:1.25}
.efi{display:inline-flex;align-items:center;gap:3px}
.erow .ef .unit{font-size:10px}
.erow .ef select,.erow .ef input{padding:3px 5px;font-size:11.5px}
.erow input.num{width:52px}
/* 고객 소유 = 건설비 제외 */
.erow-cust{background:#fbf7ff;border-left:3px solid #b79bdc;padding-left:7px;border-radius:6px}
.erow-excl{margin-left:auto;align-self:center;font-size:11px;font-weight:700;color:#6b4ea8;background:#f1e9fb;border:1px solid #ddcdf2;border-radius:10px;padding:3px 10px;white-space:nowrap}
.eopt{font-size:12px}
.eopt b{font-weight:700}
.erow-free .wide2{flex:1;min-width:180px;padding:5px 7px;border:1px solid var(--line);border-radius:6px;font-size:12px}
.erow-free{background:#fffdf5}
.equip-rows{display:flex;flex-direction:column;gap:6px}
.erow{display:flex;align-items:flex-end;gap:4px 7px;flex-wrap:wrap;padding:6px 7px;border:1px solid #e4edf5;border-radius:8px;background:#fff}
.erow-del{align-self:center}
.erow select,.erow input{padding:5px 6px;border:1px solid var(--line);border-radius:6px;font-size:12px;background:#fff}
.erow select.wide{min-width:120px}
.erow input.num{width:60px;text-align:right}
.erow .unit{font-size:11px;color:var(--muted)}
.erow .medium-hint{font-size:11px;color:var(--kepco);background:#e8f2fa;border-radius:10px;padding:1px 7px}
.equip-empty{font-size:11.5px;color:var(--muted);padding:9px 11px;border:1px dashed #d5e3ef;border-radius:8px;background:#fcfdff}
.equip-empty b{color:var(--kepco)}
.equip-opts{margin-top:8px;display:flex;flex-direction:column;gap:6px;font-size:12px;background:#fcfdff;border:1px dashed #d5e3ef;border-radius:8px;padding:9px 11px}
.equip-opts label{display:flex;align-items:center;gap:6px}
.equip-prot{display:flex;align-items:flex-end;flex-wrap:wrap;gap:10px;margin:0 0 2px 24px;color:var(--muted)}
.equip-prot input{width:52px;text-align:right;padding:4px 6px;border:1px solid var(--line);border-radius:6px;font-size:12px}
.equip-total{margin-top:10px;padding:8px 10px;background:#fff5e8;border:1px solid #f2dcc0;border-radius:7px;font-size:13px;color:#8a5a10}
.equip-total b{color:#c0700a;font-size:15px}
.erow-cost{margin-left:auto;font-size:12px;font-weight:700;color:#8a5a10;background:#fff5e8;border:1px solid #f2dcc0;border-radius:10px;padding:1px 8px}
.erow-cost.ov{color:var(--muted);background:#f2f4f7;border-color:var(--line);text-decoration:line-through;font-weight:500}
.erow input.cost-ov{width:66px;border-color:#f2dcc0;background:#fffdf8}
.erow-etc{background:#f7fbff}
.erow-etc select.wide{min-width:230px}

/* ---------- 개요도: 밑그림(원본 도면) 조절 ---------- */
.dgm-bg-tools{display:flex;flex-direction:column;gap:6px;font-weight:400;text-transform:none;letter-spacing:0;margin-top:6px}
.dgm-bgop{font-size:12px;display:flex;align-items:center;gap:6px;color:var(--text);font-weight:600}
.dgm-bgop input[type=range]{flex:1}

/* ---------- 개요도: PDF 단선도 읽기 결과 ---------- */
.pdf-info{border:1px solid #cfe3f2;background:#f6fbff;border-radius:8px;padding:10px 12px;margin-bottom:12px;font-size:12px}
.pdf-info.err{border-color:#f2c9c9;background:#fff5f5;color:#8a2020;line-height:1.55}
.pdf-info-h{font-weight:800;color:var(--kepco-dark);margin-bottom:6px}
.pdf-info.err .pdf-info-h{color:var(--danger)}
.pdf-info-file{font-weight:700;color:#33475b;margin-bottom:8px;word-break:break-all}
.pdf-info-t{width:100%;border-collapse:collapse}
.pdf-info-t th{text-align:left;width:60px;padding:3px 6px 3px 0;color:var(--muted);font-weight:700;vertical-align:top;white-space:nowrap}
.pdf-info-t td{padding:3px 0;word-break:break-all;line-height:1.45}
.pdf-info-warn{margin-top:8px;padding-top:8px;border-top:1px dashed #cfe3f2;color:#8a5a10;line-height:1.5}

/* ---------- 관리자: 건설비 단가 ---------- */
.rate-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:8px;padding:10px 14px;margin-bottom:12px}
.rate-head label{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:#33475b}
.rate-head label.grow{flex:1;min-width:240px}
.rate-head input{padding:6px 9px;border:1px solid var(--line);border-radius:6px;font-size:13px;font-weight:400}
.rate-head label.grow input{flex:1}
.rate-head #rtSaveNote{width:230px;margin-left:auto}
.rate-cat{margin-bottom:16px}
.rate-cat-h{font-size:13px;font-weight:800;color:var(--kepco-dark);margin:0 0 6px;display:flex;align-items:center;gap:8px}
.rate-tbl td{vertical-align:middle}
.rate-tbl input,.rate-tbl select{padding:5px 8px;border:1px solid var(--line);border-radius:6px;font-size:13px;width:100%}
.rate-tbl input.rate-price{text-align:right;font-weight:700}
.rate-add{background:#fff;border:1px dashed #b9d4e8;border-radius:8px;padding:12px 14px;margin-bottom:16px}
.rate-add-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:8px}
.rate-add-row input,.rate-add-row select{padding:6px 9px;border:1px solid var(--line);border-radius:6px;font-size:13px}
.rate-add-row #raLabel{flex:1;min-width:220px}
.rate-add-row #raPrice{width:130px;text-align:right}


/* ---------- 개선 건의 게시판 ---------- */
.board-wrap{padding:16px 28px;min-height:calc(100dvh - 170px)}
.board-panel{padding-bottom:18px}
.board-panel .panel-head{flex-wrap:wrap;gap:8px}
.board-search{padding:7px 11px;border:1px solid var(--line);border-radius:8px;font-size:13px;min-width:180px}
.board-filter{padding:7px 9px;border:1px solid var(--line);border-radius:8px;font-size:13px;background:#fff}
.board-intro{margin:0;padding:12px 24px 0;font-size:12.5px;color:var(--muted)}
.board-list{display:flex;flex-direction:column;gap:9px;padding:14px 24px 0}
.board-empty{padding:34px 10px;text-align:center;color:var(--muted);font-size:13px;border:1px dashed #d5e3ef;border-radius:10px;background:#fcfdff}
.board-empty b{color:var(--kepco)}
.board-card{display:flex;align-items:center;gap:14px;border:1px solid #e4edf5;border-radius:10px;padding:12px 14px;background:#fff;cursor:pointer;transition:border-color .12s,box-shadow .12s}
.bc-main{flex:1;min-width:0}
.board-card:hover{border-color:#b9d4e8;box-shadow:0 3px 12px rgba(38,81,120,.09)}
.bc-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.bc-title{font-weight:700;font-size:14px;color:#12314f}
.bc-cat{font-size:11px;color:#4a6786;background:#eef4fa;border-radius:9px;padding:2px 8px}
.bc-status{font-size:11px;font-weight:800;border-radius:9px;padding:2px 9px;white-space:nowrap}
/* 목록 카드 오른쪽의 큰 상태 배지 */
.bc-status-lg{flex:none;width:88px;padding:12px 6px;border-radius:11px;font-size:15px;text-align:center;line-height:1.2}
.st-new{color:#0b5ea8;background:#e6f2fc;border:1px solid #c6e0f5}
.st-doing{color:#8a5a10;background:#fff5e8;border:1px solid #f2dcc0}
.st-done{color:#12734a;background:#e6f7ee;border:1px solid #bfe6d2}
.st-hold{color:#6b7280;background:#f1f3f6;border:1px solid #dfe3e9}
.bc-reply{font-size:11px;font-weight:700;color:#12734a}
.bd-mine{font-size:10.5px;font-weight:700;color:#6b4ea8;background:#f3ecfd;border-radius:9px;padding:2px 7px}
.bc-ex{margin-top:6px;font-size:12.5px;color:#5b6b7d;line-height:1.6}
.bc-meta{margin-top:6px;font-size:11px;color:var(--muted)}
/* 대화상자 */
.bd-back{position:fixed;inset:0;background:rgba(8,32,56,.45);display:flex;align-items:center;justify-content:center;z-index:40;padding:18px}
.bd-box{background:#fff;border-radius:14px;width:min(560px,100%);max-height:88vh;display:flex;flex-direction:column;box-shadow:0 24px 60px rgba(3,30,60,.3)}
.bd-box-wide{width:min(680px,100%)}
.bd-head{display:flex;align-items:center;gap:10px;padding:15px 20px;border-bottom:1px solid var(--line);font-size:15px;color:#0d3358}
.bd-x{margin-left:auto;border:0;background:none;font-size:20px;line-height:1;color:var(--muted)}
.bd-body{padding:16px 20px;overflow:auto}
.bd-foot{display:flex;justify-content:flex-end;gap:8px;padding:13px 20px;border-top:1px solid var(--line)}
.bd-fld{display:block;margin-bottom:13px}
.bd-fld>span{display:block;font-size:12px;font-weight:700;color:#4a5462;margin-bottom:5px}
.bd-fld input,.bd-fld select,.bd-fld textarea{width:100%;padding:9px 11px;border:1px solid var(--line);border-radius:8px;font-size:13.5px;font-family:inherit;background:#fff}
.bd-fld textarea{resize:vertical;line-height:1.65}
.bd-meta{display:flex;align-items:center;gap:9px;flex-wrap:wrap;font-size:11.5px;color:var(--muted);margin-bottom:12px}
.bd-content{font-size:13.5px;line-height:1.75;color:#22303f;word-break:break-word}
.bd-reply{margin-top:16px;background:#f2fbf6;border:1px solid #cbe9d8;border-radius:10px;padding:12px 14px;font-size:13px;line-height:1.7;color:#1d4634}
.bd-reply-h{font-weight:800;color:#12734a;margin-bottom:6px}
.bd-reply-h span{font-weight:500;color:#6f8f80;font-size:11px;margin-left:6px}
.bd-admin{margin-top:18px;border-top:1px dashed var(--line);padding-top:14px}
.bd-admin-h{font-size:12px;font-weight:800;color:var(--kepco);margin-bottom:9px}
@media(max-width:820px){
  .board-wrap{padding:12px}
  .board-list,.board-intro{padding-left:14px;padding-right:14px}
  .board-panel .panel-head{padding:14px}
  .board-search{min-width:0;flex:1}
  .board-card{gap:10px}
  .bc-status-lg{width:70px;font-size:13px;padding:10px 4px}
}

/* ---------- 내 정보 / 사용자 관리 ---------- */
.acct-wrap{max-width:720px;margin:0 auto}
.acct-panel{margin-bottom:56px}
.acct-body{padding:20px 24px 26px}
.acct-sum{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:24px}
.acct-sum>div{flex:1;min-width:150px;padding:11px 14px;border:1px solid var(--line);border-radius:10px;background:#f8fbfe}
.acct-sum span{display:block;font-size:11px;font-weight:700;letter-spacing:.3px;color:#8fa1b4;margin-bottom:3px}
.acct-sum b{font-size:14px;color:#173d63}
.acct-h{margin:0 0 4px;padding-top:6px;font-size:14px;color:#07539a}
.acct-h+.acct-desc{margin-top:0}
.acct-desc{margin:0 0 12px;font-size:12.5px;color:var(--muted);line-height:1.6}
.acct-form{margin:0 0 26px;padding:16px 18px;border:1px solid var(--line);border-radius:10px;background:#fff}
.acct-fld{display:flex;align-items:center;gap:12px;margin-bottom:10px}
.acct-fld>span{flex:none;width:128px;font-size:12.5px;font-weight:700;color:#4d637a}
.acct-fld input{flex:1;min-width:0;padding:8px 10px;border:1px solid var(--line);border-radius:7px;font-size:13px;font-family:inherit}
.acct-fld input:focus{outline:none;border-color:#2585dc;box-shadow:0 0 0 3px rgba(37,133,220,.13)}
.acct-act{display:flex;justify-content:flex-end;margin-top:14px}
.acct-scroll{overflow-x:auto}          /* 좁은 화면에서 사용자 표는 가로로 넘긴다 */
.acct-scroll table.ver{min-width:560px}
@media(max-width:820px){
  .acct-body{padding:16px 14px 20px}
  .acct-fld{flex-direction:column;align-items:stretch;gap:5px}
  .acct-fld>span{width:auto}
  .acct-body .field-row{grid-template-columns:1fr!important}   /* 계정 추가칸은 세로로 */
}

/* ================= 발전소 조건 입력 화면 개편(2026-08) ================= */
/* ---- 4단계: 구역 탐색바 + 접기/펼치기 + 완료현황 ---- */
:root{--form-panel-w:500px}
.sec-nav{position:sticky;top:0;z-index:4;display:flex;flex-wrap:wrap;gap:5px;padding:10px 16px;background:#fbfdff;border-bottom:1px solid var(--line)}
.secnav-btn{display:inline-flex;align-items:center;gap:5px;padding:6px 10px;border:1px solid var(--line);border-radius:16px;background:#fff;font-size:12px;font-weight:700;color:#5b6b7d}
.secnav-btn:hover{border-color:#b9d4e8}
.secnav-btn.secnav-current{border-color:var(--kepco);color:var(--kepco-dark);box-shadow:0 0 0 2px rgba(0,103,163,.12)}
.secnav-btn.secnav-complete{color:var(--ok)}
.secnav-btn.secnav-pending{color:#8a5a10}
.secnav-btn.secnav-error{color:var(--danger);border-color:#f0c9c9;background:#fff7f7}
.secnav-count .cnt-done{color:var(--ok);font-weight:800}
.secnav-count .cnt-pending{color:#8a5a10;font-weight:800;margin-left:2px}
.secnav-count .cnt-err{color:var(--danger);font-weight:800;margin-left:2px}
.secnav-next{margin-left:auto;background:#eef6fc;border-color:#cfe3f2;color:var(--kepco-dark)}
.fgroup-title{cursor:pointer;display:flex;align-items:center;gap:6px;user-select:none}
.fgroup-title:focus-visible{outline:2px solid var(--kepco);outline-offset:2px;border-radius:4px}
.fgroup-caret{width:12px;display:inline-block;color:var(--kepco)}
.fgroup-count{margin-left:auto;font-size:11px;font-weight:700;color:var(--muted);text-transform:none;letter-spacing:0}
.fgroup-body.collapsed{display:none}

/* ---- 1단계: 오류 요약 + 인라인 오류 ---- */
.err-summary{margin:10px 16px 0;background:#fff5f5;border:1px solid #f2c9c9;border-radius:10px;padding:10px 14px}
.errsum-h{font-weight:800;color:var(--danger);font-size:13px;margin-bottom:6px}
.errsum-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:3px}
.errsum-item{display:block;width:100%;text-align:left;background:none;border:0;padding:4px 6px;border-radius:6px;font-size:12.5px;color:#7a2020;cursor:pointer}
.errsum-item:hover{background:#fde8e8}
.errsum-sec{display:inline-block;font-size:10.5px;font-weight:700;color:#a06a10;background:#fff2df;border-radius:8px;padding:0 6px;margin-right:6px}
.field-err{display:none;font-size:11.5px;color:var(--danger);margin-top:4px;font-weight:600}
.field-err.show{display:block}
.field [aria-invalid="true"]{border-color:var(--danger)!important;background:#fff7f7}

/* ---- 6단계: 포커스 표시 · 저장상태 ---- */
:focus-visible{outline:2px solid var(--kepco);outline-offset:2px}
.radio-row label:focus-within{outline:2px solid var(--kepco);outline-offset:2px}
.save-state{font-size:11px;font-weight:700;padding:3px 9px;border-radius:12px;margin-left:6px}
.save-state.save-ok{color:var(--ok);background:#e6f7ee}
.save-state.save-dirty{color:var(--danger);background:#fff2f2}
.save-state.save-draft{color:#8a5a10;background:#fff5e8}

/* ---- 날짜 필드 ---- */
.field input[type=date]{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:7px;font-size:13px;font-family:inherit;min-height:40px}

/* ---- 5단계: 패널 폭 확대 · 글자/컨트롤 크기 · 드래그 리사이즈 · 좁은화면 탭 ---- */
.gen-layout{grid-template-columns:var(--form-panel-w) 6px minmax(0,1fr)!important}
.panel-resizer{cursor:col-resize;background:transparent;position:relative;border-radius:3px}
.panel-resizer::after{content:"";position:absolute;left:2px;top:10%;bottom:10%;width:2px;background:var(--line);border-radius:2px}
.panel-resizer:hover::after,.panel-resizer:active::after{background:var(--kepco)}
.panel-tabs{display:none}
.fgroup-title{font-size:16px}
.field>label,.field>.flabel{font-size:14px}
.field .help{font-size:12.5px}
.field input[type=text],.field select,.field textarea,.field input[type=date]{min-height:40px}
.radio-row label{min-height:40px;padding:8px 14px;font-size:14px}
@media(max-width:1199px){
  .gen-layout{display:block!important}
  .panel-resizer{display:none}
  .panel-tabs{display:flex;gap:8px;margin:0 0 12px;grid-column:1/-1}
  .panel-tab-btn{flex:1;padding:11px;border-radius:10px;border:1px solid var(--line);background:#fff;font-weight:700;color:#5b6b7d;font-size:13px}
  .panel-tab-btn.on{background:var(--kepco);color:#fff;border-color:var(--kepco)}
  .form-panel{display:block}
  .preview-panel{display:none}
  .gen-layout.tab-preview .form-panel{display:none}
  .gen-layout.tab-preview .preview-panel{display:block}
}
