/* ============================================================
   ระบบออกใบเสนอราคาโซลาร์เซลล์
   ============================================================ */
:root{
  --ink:#0f172a; --body:#475569; --muted:#94a3b8;
  --line:#e2e8f0; --line2:#f1f5f9; --bg:#f8fafc; --card:#fff;
  --brand:#1d4ed8; --brand-d:#1e40af; --brand-l:#eff6ff;
  --amber:#f59e0b; --amber-l:#fffbeb;
  --green:#16a34a; --green-l:#f0fdf4;
  --red:#dc2626; --red-l:#fef2f2;
  --r:10px; --r-l:14px;
  --sh:0 1px 2px rgba(15,23,42,.04), 0 2px 8px rgba(15,23,42,.05);
  --sh-l:0 4px 12px rgba(15,23,42,.07), 0 16px 40px rgba(15,23,42,.10);
  --f:'Sarabun',system-ui,-apple-system,'Segoe UI',sans-serif;
}
*,*::before,*::after{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font-family:var(--f);font-size:15px;line-height:1.65;color:var(--ink);background:var(--bg);-webkit-text-size-adjust:100%}
a{color:var(--brand);text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
h1,h2,h3,h4{margin:0;font-weight:600;line-height:1.3}
table{border-collapse:collapse;width:100%}
:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:4px}
.hide{display:none!important}

/* ---------- layout ---------- */
.wrap{max-width:1240px;margin:0 auto;padding:0 16px}
.top{position:sticky;top:0;z-index:40;background:#fff;border-bottom:1px solid var(--line);box-shadow:0 1px 3px rgba(15,23,42,.04)}
.top__in{display:flex;align-items:center;gap:14px;height:60px}
.brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:16px;color:var(--ink);white-space:nowrap}
.brand__ic{width:32px;height:32px;border-radius:9px;background:linear-gradient(135deg,var(--amber),#fb923c);display:grid;place-items:center;color:#fff;flex:none}
.brand__ic svg{width:18px;height:18px}
.nav{display:flex;gap:2px;margin-left:10px;flex:1;overflow-x:auto;scrollbar-width:none}
.nav::-webkit-scrollbar{display:none}
.nav a{padding:7px 13px;border-radius:8px;font-size:14px;font-weight:500;color:var(--body);white-space:nowrap;transition:.18s}
.nav a:hover{background:var(--line2);color:var(--ink)}
.nav a.on{background:var(--brand-l);color:var(--brand-d);font-weight:600}
.who{display:flex;align-items:center;gap:9px;flex:none}
.who__n{font-size:13.5px;font-weight:600;line-height:1.2}
.who__r{font-size:11.5px;color:var(--muted)}
.avatar{width:34px;height:34px;border-radius:50%;background:var(--brand);color:#fff;display:grid;place-items:center;font-weight:700;font-size:14px;flex:none}
main{padding:22px 0 60px}

/* ---------- bits ---------- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-l);box-shadow:var(--sh)}
.card__h{padding:16px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.card__h h2{font-size:16px;flex:1}
.card__b{padding:20px}
.page-h{display:flex;align-items:flex-start;gap:14px;flex-wrap:wrap;margin-bottom:18px}
.page-h h1{font-size:22px;flex:1;min-width:200px}
.page-h .sub{font-size:13.5px;color:var(--muted);margin-top:2px;font-weight:400}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.spacer{flex:1}
.grid{display:grid;gap:14px}
.g2{grid-template-columns:1fr 1fr}
.g3{grid-template-columns:repeat(3,1fr)}
.g4{grid-template-columns:repeat(4,1fr)}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:9px 16px;border:1px solid transparent;
  border-radius:9px;font-size:14px;font-weight:600;cursor:pointer;background:var(--brand);color:#fff;transition:.18s;white-space:nowrap}
.btn:hover{background:var(--brand-d)}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn svg{width:16px;height:16px;flex:none}
.btn--g{background:#fff;color:var(--body);border-color:var(--line)}
.btn--g:hover{background:var(--line2);color:var(--ink);border-color:#cbd5e1}
.btn--d{background:var(--red)}.btn--d:hover{background:#b91c1c}
.btn--ok{background:var(--green)}.btn--ok:hover{background:#15803d}
.btn--sm{padding:6px 11px;font-size:13px;border-radius:8px}
.btn--sm svg{width:14px;height:14px}
.btn--ico{padding:7px;width:32px;height:32px}
.btn--blk{width:100%}

label{display:block;font-size:13px;font-weight:600;color:var(--body);margin-bottom:5px}
.inp,select.inp,textarea.inp{width:100%;padding:9px 12px;border:1px solid var(--line);border-radius:9px;background:#fff;font-size:14.5px;transition:.15s}
.inp:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(29,78,216,.12)}
textarea.inp{resize:vertical;min-height:80px;line-height:1.6}
.inp[readonly]{background:var(--line2);color:var(--body)}
.fld{margin-bottom:0}
.hint{font-size:12px;color:var(--muted);margin-top:4px}
.chk{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:500;cursor:pointer;margin:0}
.chk input{width:17px;height:17px;accent-color:var(--brand);cursor:pointer}

.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:100px;font-size:12px;font-weight:600}
.b-draft{background:var(--line2);color:var(--body)}
.b-sent{background:var(--brand-l);color:var(--brand-d)}
.b-won{background:var(--green-l);color:#15803d}
.b-lost{background:var(--red-l);color:#b91c1c}
.b-warn{background:var(--amber-l);color:#b45309}

.tbl{font-size:14px}
.tbl th{background:var(--line2);padding:10px 12px;text-align:left;font-weight:600;font-size:12.5px;color:var(--body);
  border-bottom:1px solid var(--line);white-space:nowrap}
.tbl td{padding:11px 12px;border-bottom:1px solid var(--line2);vertical-align:middle}
.tbl tbody tr:hover{background:#fcfdff}
.tbl .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.tbl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.empty{padding:48px 20px;text-align:center;color:var(--muted)}
.empty svg{width:40px;height:40px;margin-bottom:10px;opacity:.4}

.toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%,20px);z-index:200;background:var(--ink);color:#fff;
  padding:11px 20px;border-radius:10px;font-size:14px;font-weight:500;box-shadow:var(--sh-l);opacity:0;
  transition:.3s;pointer-events:none;max-width:90vw;text-align:center}
.toast.on{opacity:1;transform:translate(-50%,0)}
.toast.err{background:var(--red)}

.modal{position:fixed;inset:0;z-index:100;background:rgba(15,23,42,.55);display:flex;align-items:center;justify-content:center;
  padding:16px;opacity:0;visibility:hidden;transition:.22s}
.modal.on{opacity:1;visibility:visible}
.modal__c{background:#fff;border-radius:16px;box-shadow:var(--sh-l);width:100%;max-width:620px;max-height:90vh;
  display:flex;flex-direction:column;transform:scale(.97);transition:.22s}
.modal.on .modal__c{transform:none}
.modal__h{padding:16px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px}
.modal__h h3{font-size:16px;flex:1}
.modal__b{padding:20px;overflow:auto}
.modal__f{padding:14px 20px;border-top:1px solid var(--line);display:flex;gap:9px;justify-content:flex-end;background:var(--bg);border-radius:0 0 16px 16px}

.loading{display:grid;place-items:center;padding:60px;color:var(--muted)}
.spin{width:28px;height:28px;border:3px solid var(--line);border-top-color:var(--brand);border-radius:50%;animation:sp .8s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}

/* ---------- login ---------- */
.login{min-height:100svh;display:grid;place-items:center;padding:20px;
  background:linear-gradient(160deg,#0f172a,#1e293b 55%,#334155)}
.login__c{width:100%;max-width:390px;background:#fff;border-radius:18px;box-shadow:0 24px 60px rgba(0,0,0,.32);padding:34px 30px}
.login__logo{display:flex;align-items:center;gap:11px;justify-content:center;margin-bottom:6px}
.login__logo .brand__ic{width:38px;height:38px}
.login h1{font-size:19px;text-align:center}
.login p.sub{text-align:center;color:var(--muted);font-size:13.5px;margin:4px 0 24px}
.login .fld{margin-bottom:14px}
.login .err{background:var(--red-l);color:#b91c1c;padding:9px 13px;border-radius:9px;font-size:13.5px;margin-bottom:14px}

/* ---------- stats ---------- */
.stat{background:#fff;border:1px solid var(--line);border-radius:var(--r-l);padding:16px 18px;box-shadow:var(--sh)}
.stat__l{font-size:12.5px;color:var(--muted);font-weight:500}
.stat__v{font-size:22px;font-weight:700;letter-spacing:-.02em;margin-top:3px;font-variant-numeric:tabular-nums}

/* ---------- editor ---------- */
.sect{margin-bottom:16px}
.sect__h{display:flex;align-items:center;gap:9px;padding:0 0 10px;font-size:14.5px;font-weight:700;color:var(--ink)}
.sect__h .n{width:23px;height:23px;border-radius:7px;background:var(--brand-l);color:var(--brand-d);display:grid;place-items:center;font-size:12px;font-weight:700;flex:none}
.itbl{font-size:13.5px}
.itbl th{background:var(--line2);padding:8px 9px;font-size:12px;font-weight:600;color:var(--body);text-align:left;border-bottom:1px solid var(--line);white-space:nowrap}
.itbl td{padding:5px 6px;border-bottom:1px solid var(--line2);vertical-align:top}
.itbl .inp{padding:7px 9px;font-size:13.5px;border-radius:7px}
.itbl input.num{text-align:right;font-variant-numeric:tabular-nums}
.itbl .amt{text-align:right;font-weight:600;font-variant-numeric:tabular-nums;padding-top:14px;white-space:nowrap}
.itbl .del{color:var(--muted);background:none;border:0;cursor:pointer;padding:8px 4px;border-radius:6px}
.itbl .del:hover{color:var(--red);background:var(--red-l)}
.itbl .del svg{width:15px;height:15px;display:block}
.sum{background:var(--bg);border:1px solid var(--line);border-radius:var(--r-l);padding:16px 18px}
.sum__r{display:flex;justify-content:space-between;gap:14px;padding:6px 0;font-size:14px}
.sum__r b{font-variant-numeric:tabular-nums}
.sum__r.tot{border-top:2px solid var(--ink);margin-top:8px;padding-top:11px;font-size:17px;font-weight:700}
.sum__r.tot b{color:var(--brand-d)}
.sticky-save{position:sticky;bottom:0;background:rgba(255,255,255,.94);backdrop-filter:blur(10px);border-top:1px solid var(--line);
  padding:12px 0;margin-top:18px;z-index:30}

/* ---------- print ---------- */
@media print{
  @page{size:A4;margin:0}
  html,body{background:#fff!important}
  main{padding:0!important}
  .wrap{max-width:none;padding:0}
  .no-print{display:none!important}
}

/* ---------- responsive ---------- */
@media (max-width:1000px){ .g4{grid-template-columns:repeat(2,1fr)} .g3{grid-template-columns:1fr 1fr} }
@media (max-width:760px){
  body{font-size:14.5px}
  .top__in{height:56px;gap:10px}
  .brand span{display:none}
  .nav{order:3;width:100%;margin:0;padding:0 0 8px}
  .top__in{flex-wrap:wrap;height:auto;padding-top:9px}
  .who__t{display:none}
  .g2,.g3,.g4{grid-template-columns:1fr}
  .page-h h1{font-size:19px}
  .card__b{padding:15px}
  .itbl{min-width:640px}
}

/* ============================================================
   คู่มือการใช้งาน
   ============================================================ */
.hp{max-width:900px}
.hp__hero{background:linear-gradient(135deg,#0f172a,#1e3a8a);color:#fff;border-radius:var(--r-l);
  padding:26px 30px;margin-bottom:16px}
.hp__hero h2{color:#fff;font-size:21px}
.hp__hero p{margin:6px 0 0;color:#bfdbfe;font-size:14.5px}
.hp__toc{background:#fff;border:1px solid var(--line);border-radius:var(--r-l);padding:18px 22px;
  margin-bottom:16px;box-shadow:var(--sh)}
.hp__toc b{display:block;font-size:13px;color:var(--muted);letter-spacing:.06em;text-transform:uppercase;margin-bottom:8px}
.hp__toc ol{margin:0;padding-left:20px;columns:2;column-gap:28px}
.hp__toc li{margin-bottom:5px;font-size:14.5px;break-inside:avoid}
.hp__warn{background:var(--amber-l);border:1px solid #fcd34d;border-radius:var(--r-l);
  padding:16px 20px;margin-bottom:20px;font-size:14.5px;line-height:1.7;color:#78350f}
.hp__warn b{display:block;color:#b45309;margin-bottom:4px}
.hp section{background:#fff;border:1px solid var(--line);border-radius:var(--r-l);
  padding:22px 26px;margin-bottom:14px;box-shadow:var(--sh);scroll-margin-top:80px}
.hp h3{display:flex;align-items:center;gap:11px;font-size:17px;margin-bottom:14px;padding-bottom:12px;
  border-bottom:1px solid var(--line2)}
.hp h3 span{width:28px;height:28px;border-radius:9px;background:var(--brand);color:#fff;
  display:grid;place-items:center;font-size:14px;font-weight:700;flex:none}
.hp p{font-size:14.5px;line-height:1.75;margin-bottom:10px}
.hp em{font-style:normal;font-weight:600;color:var(--brand-d);background:var(--brand-l);
  padding:1px 7px;border-radius:6px;white-space:nowrap}
.hp code{background:var(--line2);padding:2px 7px;border-radius:5px;font-size:13px;
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--ink)}
.hp__steps{margin:0;padding-left:22px}
.hp__steps>li{font-size:14.5px;line-height:1.75;margin-bottom:12px;padding-left:4px}
.hp__steps ul{margin:8px 0 0;padding-left:20px}
.hp__steps ul li{margin-bottom:7px}
.hp__list{margin:0;padding-left:20px}
.hp__list li{font-size:14.5px;line-height:1.75;margin-bottom:9px}
.hp__tip{background:var(--brand-l);border-left:3px solid var(--brand);border-radius:0 9px 9px 0;
  padding:12px 16px;font-size:14px;line-height:1.7;margin:14px 0 0;color:#1e3a5f}
.hp__tip b{color:var(--brand-d)}
.hp__tbl{font-size:14px;margin:4px 0 6px;border:1px solid var(--line);border-radius:9px;overflow:hidden}
.hp__tbl th{background:var(--line2);padding:9px 13px;text-align:left;font-size:12.5px;
  font-weight:600;color:var(--body);border-bottom:1px solid var(--line)}
.hp__tbl td{padding:10px 13px;border-bottom:1px solid var(--line2);vertical-align:top;line-height:1.65}
.hp__tbl tr:last-child td{border-bottom:0}
.hp__tbl td.y{color:#15803d;font-weight:600}
.hp__tbl td.n{color:#b91c1c;font-weight:600}
.hp__faq{margin:0}
.hp__faq dt{font-weight:600;font-size:14.5px;color:var(--ink);margin-top:14px;
  padding-left:20px;position:relative}
.hp__faq dt:first-child{margin-top:0}
.hp__faq dt::before{content:"?";position:absolute;left:0;top:1px;width:15px;height:15px;
  border-radius:50%;background:var(--brand);color:#fff;font-size:10px;font-weight:700;
  display:grid;place-items:center}
.hp__faq dd{margin:5px 0 0 20px;font-size:14px;line-height:1.75;color:var(--body)}
.hp__foot{background:var(--bg);border:1px dashed var(--line);border-radius:var(--r-l);
  padding:18px 22px;font-size:14px;line-height:1.75;color:var(--body);margin-top:18px}
.hp__foot b{display:block;color:var(--ink);margin-bottom:5px}
@media (max-width:760px){
  .hp__toc ol{columns:1}
  .hp section{padding:18px}
  .hp__hero{padding:20px}
}
@media print{
  .hp__toc{display:none}
  .hp section{break-inside:avoid;box-shadow:none;border-color:#ddd}
  .hp__hero{background:#0f172a!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
}

/* ---------- สไลเดอร์งวดชำระ ---------- */
.rng{-webkit-appearance:none;appearance:none;width:100%;height:6px;border-radius:100px;
  background:linear-gradient(90deg,var(--brand) var(--p,50%),#e2e8f0 var(--p,50%));outline:none;margin:6px 0}
.rng::-webkit-slider-thumb{-webkit-appearance:none;width:20px;height:20px;border-radius:50%;
  background:#fff;border:3px solid var(--brand);cursor:pointer;box-shadow:0 2px 6px rgba(15,23,42,.2)}
.rng::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:#fff;border:3px solid var(--brand);cursor:pointer}
.rng__row{display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:12.5px;color:var(--muted)}
.rng__row b{font-size:17px;color:var(--brand-d);font-variant-numeric:tabular-nums}

/* ---------- ตารางงวดในกล่องสรุป ---------- */
.paytbl{width:100%;font-size:12.5px;margin-top:4px}
.paytbl th{background:var(--line2);padding:6px 8px;text-align:left;font-weight:600;font-size:11.5px;color:var(--body)}
.paytbl th.r,.paytbl td.r{text-align:right;font-variant-numeric:tabular-nums}
.paytbl td{padding:7px 8px;border-bottom:1px solid var(--line2)}
.paytbl td.tot{font-weight:700;color:var(--brand-d)}

/* ---------- พรีวิวในหน้าแก้ไข ---------- */
#prev{transform-origin:top center}
@media (max-width:1100px){ #prev{overflow-x:auto} }
