:root{--bg:#f4f6f8;--card:#fff;--text:#16202a;--muted:#687480;--line:#dce2e8;--primary:#123d6a;--primary2:#0c2f53}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Pretendard,"Noto Sans KR","Malgun Gothic",Arial,sans-serif}a{text-decoration:none;color:inherit}.topbar{height:64px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 28px;position:sticky;top:0;z-index:20}.brand{font-size:20px;font-weight:800;color:var(--primary)}.topbar nav{display:flex;gap:18px;align-items:center;font-size:14px}.user-pill{background:#eef3f8;padding:7px 10px;border-radius:20px}.container{max-width:1480px;margin:0 auto;padding:26px}.narrow{max-width:760px}.page-head{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:20px}.page-head h1{margin:0 0 6px;font-size:26px}.page-head p,.muted{margin:0;color:var(--muted)}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:20px;margin-bottom:18px;box-shadow:0 2px 10px rgba(20,40,60,.04)}.card h2{font-size:18px;margin:0 0 18px}.card h3{margin:0 0 14px;color:var(--primary)}.tabs{display:flex;gap:8px;margin-bottom:14px;overflow:auto}.tabs a{background:#fff;border:1px solid var(--line);padding:10px 16px;border-radius:9px;white-space:nowrap}.tabs a.active{background:var(--primary);color:#fff}.tabs b{font-size:12px;margin-left:5px}.filter{display:grid;grid-template-columns:2fr 1fr 1fr 1fr auto auto;gap:10px;align-items:end}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.form-grid.three{grid-template-columns:repeat(3,1fr)}.form-grid.four{grid-template-columns:repeat(4,1fr)}.span2{grid-column:span 2}label{font-size:13px;font-weight:700;display:block}label small{font-weight:400;color:var(--muted)}input,select,textarea{width:100%;margin-top:6px;padding:11px 12px;border:1px solid #cbd4dc;border-radius:8px;background:#fff;font:inherit;color:var(--text)}input[readonly]{background:#f0f3f6;color:#52606d}.btn{display:inline-flex;justify-content:center;align-items:center;border:1px solid #c7d0d9;background:#fff;padding:10px 14px;border-radius:8px;font-weight:700;cursor:pointer}.btn.primary{background:var(--primary);color:#fff;border-color:var(--primary)}.btn.primary:hover{background:var(--primary2)}.btn.ghost{background:transparent}.btn.wide{width:100%}.btn.big{padding:13px 22px}.btn.small{font-size:12px;padding:6px 8px}.table-wrap{padding:0;overflow:auto}table{width:100%;border-collapse:collapse}th,td{padding:12px 14px;border-bottom:1px solid #e7ebef;text-align:left;font-size:13px;white-space:nowrap}th{background:#f8fafb;color:#51606e}.click-row{cursor:pointer}.click-row:hover td{background:#f6f9fc}td small{display:block;color:var(--muted);margin-top:3px}.rev{display:inline-block;background:#e9f1f8;color:var(--primary);padding:4px 8px;border-radius:7px;font-weight:800}.rev.big{font-size:14px;vertical-align:middle}.empty{text-align:center;padding:50px;color:var(--muted)}.alert{padding:13px 15px;border-radius:9px;margin-bottom:16px}.alert.ok{background:#e9f7ef;border:1px solid #b8e0c8}.alert.error{background:#fff0f0;border:1px solid #f0c1c1}.alert.info{background:#edf5ff;border:1px solid #c6dcf5}.section-title{display:flex;justify-content:space-between;align-items:center}.image-preview,.gallery{display:flex;gap:12px;flex-wrap:wrap;margin-top:14px}.image-preview img,.gallery img{width:160px;height:120px;object-fit:contain;border:1px solid var(--line);border-radius:9px;background:#fafafa}.gallery img{cursor:zoom-in}.image-preview small{display:block;max-width:160px;color:var(--muted)}.calc-box{display:grid;grid-template-columns:1fr 1fr;gap:10px;background:#0f3154;color:#fff;padding:18px;border-radius:12px;margin-top:18px}.calc-box div{display:flex;justify-content:space-between;gap:20px;align-items:end}.calc-box span{opacity:.8}.calc-box strong{font-size:24px}.calc-box small{grid-column:1/-1;opacity:.7}.calc-box.vertical{grid-template-columns:1fr}.calc-box.vertical small{display:none}.sticky-actions{position:sticky;bottom:12px;background:rgba(255,255,255,.95);border:1px solid var(--line);padding:12px;border-radius:12px;display:flex;justify-content:flex-end;gap:10px;box-shadow:0 5px 20px rgba(0,0,0,.08)}.view-grid{display:grid;grid-template-columns:2fr 1fr;gap:18px}.detail{display:grid;grid-template-columns:130px 1fr 130px 1fr;margin:0}.detail dt,.detail dd{padding:10px;border-bottom:1px solid #edf0f3;margin:0}.detail dt{color:var(--muted);font-weight:700}.spec-table{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}.spec-table div{background:#fff;padding:12px;display:flex;justify-content:space-between;gap:12px}.spec-table span{color:var(--muted)}.history{display:flex;gap:8px;flex-wrap:wrap}.history a{border:1px solid var(--line);border-radius:8px;padding:8px 12px;display:flex;gap:10px}.history a.current{border-color:var(--primary);background:#eef5fb}.memo{line-height:1.7}.actions{display:flex;gap:8px}.modal{display:none;position:fixed;inset:0;background:rgba(0,0,0,.85);z-index:100;align-items:center;justify-content:center;padding:30px}.modal.show{display:flex}.modal img{max-width:95vw;max-height:92vh;object-fit:contain}.login-bg{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#0e2e4e,#245f94)}.login-card{width:390px;background:#fff;padding:34px;border-radius:16px;box-shadow:0 20px 50px rgba(0,0,0,.25)}.login-card h1{margin:0;color:var(--primary)}.login-card h2{margin:6px 0 25px;color:#64717c}.login-card label{margin-bottom:14px}.inline{display:inline}.spec-panel{display:none}.toolbar{display:flex;gap:8px}hr{border:0;border-top:1px solid var(--line)}
@media(max-width:900px){.container{padding:15px}.topbar{padding:0 14px}.topbar nav a:not(:last-child),.user-pill{display:none}.filter,.form-grid.three,.form-grid.four,.view-grid{grid-template-columns:1fr 1fr}.spec-table{grid-template-columns:1fr 1fr}.detail{grid-template-columns:110px 1fr}.detail dt:nth-of-type(n),.detail dd:nth-of-type(n){}}
@media(max-width:600px){.filter,.form-grid,.form-grid.three,.form-grid.four,.view-grid,.spec-table{grid-template-columns:1fr}.page-head{align-items:flex-start;flex-direction:column}.span2{grid-column:auto}.calc-box{grid-template-columns:1fr}.topbar nav{gap:8px}.actions{flex-wrap:wrap}}.image-admin-card{display:flex;flex-direction:column;gap:7px}
.image-tools{display:flex;gap:5px;flex-wrap:wrap}
.section-title h2{margin-bottom:0}
code{font-family:Consolas,monospace;font-size:12px}.advanced-search{padding:18px 20px}
.search-title{display:flex;justify-content:space-between;align-items:flex-start;gap:15px;margin-bottom:16px}
.search-title h2{margin:0 0 4px}.search-title p{margin:0;color:var(--muted);font-size:13px}
.dim-search-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.dim-group{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:13px;background:#f5f8fb;border:1px solid #dde5ec;border-radius:10px}
.quick-tolerance{display:flex;gap:7px;align-items:center;flex-wrap:wrap;margin:12px 0;font-size:12px;color:var(--muted)}
.tol-btn{border:1px solid #ced8e1;background:#fff;border-radius:18px;padding:6px 10px;cursor:pointer;font-size:12px}
.tol-btn:hover{border-color:var(--primary);color:var(--primary)}
.general-search-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr auto auto;gap:10px;align-items:end}
.check-label{display:flex;align-items:center;gap:7px;padding-bottom:10px;white-space:nowrap}
.check-label input{width:auto;margin:0}
.search-submit{height:43px}
.similar-summary{display:flex;align-items:center;gap:12px;margin:2px 0 12px;padding:10px 14px;background:#eef5fb;border:1px solid #cfdfed;border-radius:9px;font-size:13px}
.similar-summary strong{color:var(--primary);font-size:16px}
.similar-summary small{margin-left:auto;color:var(--muted)}
.diff-cell span{display:block;font-size:11px;color:#5b6874}
.similarity{display:inline-block;min-width:48px;text-align:center;padding:5px 8px;border-radius:14px;font-weight:800;font-size:12px}
.similarity.high{background:#e7f6ec;color:#17723a}.similarity.mid{background:#fff4d8;color:#9b6500}.similarity.low{background:#f4ecec;color:#8c4b4b}
@media(max-width:900px){.dim-search-grid,.general-search-grid{grid-template-columns:1fr 1fr}.similar-summary{flex-wrap:wrap}.similar-summary small{margin-left:0}}
@media(max-width:600px){.dim-search-grid,.dim-group,.general-search-grid{grid-template-columns:1fr}.check-label{padding-bottom:0}}.btn.danger{background:#fff1f1;border-color:#e5a7a7;color:#a32020}
.btn.danger:hover{background:#a32020;color:#fff;border-color:#a32020}
.btn.admin-edit{background:#fff8e6;border-color:#dfc676;color:#765300}
.super-badge{display:inline-block;background:#291f42;color:#fff;padding:4px 8px;border-radius:7px;font-weight:800;font-size:12px}
.manual-weight-box{display:grid;grid-template-columns:1fr 1.4fr 1fr;gap:12px;align-items:end;background:#f5f8fb;border:1px solid #d9e2ea;border-radius:10px;padding:14px;margin-top:16px}
.auto-weight-preview{display:flex;align-items:center;gap:10px;min-height:44px}.auto-weight-preview span{color:var(--muted);font-size:12px}.auto-weight-preview strong{font-size:18px;color:var(--primary)}
@media(max-width:700px){.manual-weight-box{grid-template-columns:1fr}}

.spec-copy-btn{
  background:#ffec99!important;
  border:2px solid #d2a400!important;
  color:#5d4700!important;
  font-weight:900!important;
  padding:10px 15px!important;
  box-shadow:0 2px 8px rgba(120,90,0,.14);
}
.spec-copy-btn:hover{background:#ffe066!important;border-color:#b58b00!important}
.worker-view-btn{
  background:#173b63!important;
  border:2px solid #173b63!important;
  color:#fff!important;
  font-weight:900!important;
  padding:10px 15px!important;
  box-shadow:0 2px 8px rgba(0,0,0,.15);
}
.worker-view-btn:hover{background:#0d2946!important;border-color:#0d2946!important}
/* FINAL V8 - mobile/responsive hardening */
.topbar{height:auto;min-height:64px}
.actions{flex-wrap:wrap;justify-content:flex-end}
.detail dd{overflow-wrap:anywhere;min-width:0}
.section-title{gap:10px;flex-wrap:wrap}
@media(max-width:900px){
  .topbar nav a:not(:last-child),.user-pill{display:inline-flex}
  .topbar{padding:10px 14px;gap:10px}
  .topbar nav{min-width:0;overflow-x:auto;white-space:nowrap;padding-bottom:2px}
  .card{overflow-x:auto}
}
@media(max-width:760px){
  .topbar{align-items:stretch;flex-direction:column}
  .brand{font-size:18px}
  .topbar nav{width:100%;gap:8px;align-items:center}
  .topbar nav a,.user-pill{flex:0 0 auto}
  .container{padding:12px}
  .page-head h1{font-size:22px}
  .actions{width:100%;justify-content:flex-start}
  .actions .btn,.actions form{flex:1 1 auto}
  .actions form .btn{width:100%}
  .login-card{width:min(390px,calc(100vw - 24px));padding:24px}
  .detail{grid-template-columns:96px minmax(0,1fr)!important}
  .detail dt,.detail dd{padding:9px 8px}
  .section-title{align-items:flex-start}
}
@media(max-width:430px){
  .container{padding:9px}
  .card{padding:14px;border-radius:10px}
  .btn{padding:9px 11px}
  input,select,textarea{font-size:16px} /* 모바일 자동 확대 방지 */
  .page-head{gap:10px}
  .gallery img,.image-preview img{width:132px;height:100px}
}
/* V8.1 제품별 admin 세부견적서 PDF */
.quote-upload-form{
  display:grid;
  grid-template-columns:minmax(260px,1fr) auto auto;
  gap:10px;
  align-items:end;
  padding:14px;
  border:1px solid #dbe3ea;
  background:#f7f9fb;
  border-radius:10px;
}
.quote-file-field{display:flex;flex-direction:column;gap:6px;font-weight:700}
.quote-file-field input[type=file]{
  width:100%;
  border:1px solid #cbd5df;
  background:#fff;
  border-radius:8px;
  padding:9px;
}
.quote-upload-form small{color:var(--muted);padding-bottom:11px;white-space:nowrap}
.quote-file-list{display:flex;flex-direction:column;gap:8px;margin-top:14px}
.quote-file-item{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  padding:12px 14px;
  border:1px solid #d7dfe7;
  border-radius:9px;
  background:#fff;
}
.quote-file-info{min-width:0;display:flex;flex-direction:column;gap:4px}
.quote-file-info strong{word-break:break-all}
.quote-file-info small{color:var(--muted)}
.quote-file-actions{display:flex;gap:6px;align-items:center;flex:0 0 auto}
.quote-empty{margin-top:12px;padding:18px}
@media(max-width:700px){
  .quote-upload-form{grid-template-columns:1fr}
  .quote-upload-form small{padding-bottom:0}
  .quote-file-item{align-items:flex-start;flex-direction:column}
  .quote-file-actions{width:100%;flex-wrap:wrap}
  .quote-file-actions .btn{flex:1;text-align:center}
}

/* V8.1.3 admin 직접 수정 - 선재단가/무게/재료비 */
.admin-cost-box{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:12px;
  align-items:end;
  padding:16px;
  margin-top:16px;
  border:1px solid #d9e2ea;
  border-radius:10px;
  background:#f5f8fb;
}
.admin-cost-box input{
  font-size:16px;
  font-weight:700;
}
.admin-cost-box .auto-weight-preview{
  grid-column:1/-1;
  display:flex;
  align-items:center;
  gap:12px;
  padding-top:4px;
}
@media(max-width:700px){
  .admin-cost-box{grid-template-columns:1fr}
  .admin-cost-box .auto-weight-preview{grid-column:auto;flex-wrap:wrap}
}

/* V8.1.5 admin 제품 직접 수정 - 등록 이미지 관리 */
.admin-image-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.admin-image-item{border:1px solid #d7dfe7;border-radius:10px;background:#fff;overflow:hidden}
.admin-image-preview{height:220px;display:flex;align-items:center;justify-content:center;background:#f6f8fa;padding:10px}
.admin-image-preview img{display:block;max-width:100%;max-height:100%;object-fit:contain}
.admin-image-meta{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;border-top:1px solid #e1e6eb}
.admin-image-meta small{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted)}
@media(max-width:700px){
  .admin-image-grid{grid-template-columns:1fr}
  .admin-image-preview{height:190px}
  .admin-image-meta{align-items:flex-start;flex-direction:column}
  .admin-image-meta form,.admin-image-meta .btn{width:100%}
}

.image-delete-form{margin:0}.image-delete-form .btn{white-space:nowrap}

.admin-image-manage{margin-top:16px}

.admin-image-add-form{display:grid;grid-template-columns:minmax(260px,1fr) auto auto;gap:10px;align-items:end;margin-bottom:16px;padding:13px;background:#f6f8fa;border:1px solid #d8e0e7;border-radius:9px}
.admin-image-add-form label{display:flex;flex-direction:column;gap:6px;font-weight:700}
.admin-image-add-form input[type=file]{width:100%;padding:8px;border:1px solid #ccd5dd;border-radius:7px;background:#fff}
.admin-image-add-form small{padding-bottom:10px;color:var(--muted);white-space:nowrap}
@media(max-width:700px){.admin-image-add-form{grid-template-columns:1fr}.admin-image-add-form small{padding-bottom:0}}

.current-db-info{font-size:13px;background:#eef7ff;border:1px solid #bfd9ee;color:#234b68}
