@font-face{font-family:"Noto Sans Thai";src:url('/assets/NotoSansThai.ttf') format('truetype');font-weight:100 900;font-style:normal;font-display:swap}
:root{--canvas:#f5f5f5;--surface:#fff;--ink:#202124;--muted:#616161;--line:#dfdfdf;--accent:#06c755;--accent-hover:#05b34c;--accent-ink:#007c35;--on-accent:#06351b;--tint:#e8f9ee;--error:#a32621;--radius:8px;--font:"Noto Sans Thai",sans-serif;color-scheme:light;font-family:var(--font);color:var(--ink);background:var(--canvas)}
*{box-sizing:border-box}
body{margin:0;line-height:1.65;font-size:15px}
button,input,select,textarea{font:inherit}
button,a,input,select,textarea,summary{ -webkit-tap-highlight-color:transparent }
button{cursor:pointer}button:disabled{cursor:wait;opacity:.6}
[hidden]{display:none!important}
::selection{background:#c9f4da;color:var(--ink)}
input,textarea{caret-color:var(--accent-ink)}
:focus-visible{outline:3px solid var(--accent-ink);outline-offset:3px}
svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.app-header{max-width:1280px;margin:auto;min-height:88px;padding:24px 40px;display:flex;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);font-size:17px;font-weight:650;letter-spacing:-.02em}
.brand svg{width:30px;height:30px;color:var(--accent)}
.mode-label{font-size:12px;color:var(--muted)}
.workspace{max-width:1280px;margin:auto;display:grid;grid-template-columns:minmax(0,480px) minmax(0,1fr);gap:70px;padding:44px 40px 70px}
.intro h1{font-size:32px;line-height:1.4;letter-spacing:-.02em;font-weight:650;margin:0 0 12px;text-wrap:balance}
.intro p{color:var(--muted);margin:0;font-size:15px}
.steps{list-style:none;padding:0;margin:28px 0 20px;display:flex;gap:26px;align-items:center}
.steps li{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted)}
.steps span{display:inline-flex;width:26px;height:26px;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:50%;font-size:12px;background:var(--surface)}
.steps [aria-current="step"]{color:var(--accent-ink);font-weight:650}
.steps [aria-current="step"] span{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}
.notice{font-size:12px;color:var(--muted);margin:0 0 28px}.notice.is-error{color:var(--error)}
fieldset{border:0;padding:0;margin:0;min-width:0}
legend{font-size:19px;font-weight:650;line-height:1.5;padding:0}
.section-description{font-size:13px;color:var(--muted);margin:5px 0 22px}
.field{min-width:0;margin:0 0 20px}
label{display:block;font-size:14px;font-weight:550;margin-bottom:7px}
.required,.optional{font-size:11px;font-weight:400;color:var(--muted);margin-left:6px}
input:not([type="file"]),select,textarea{width:100%;border:1px solid #949494;border-radius:var(--radius);background:var(--surface);color:var(--ink);padding:11px 13px;min-height:48px;line-height:1.5;transition:border-color .15s ease-out,box-shadow .15s ease-out;font-size:16px}
textarea{resize:vertical;min-height:88px}input::placeholder,textarea::placeholder{color:#757575;opacity:1}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent-ink);box-shadow:0 0 0 3px #06c75526}
input[aria-invalid="true"],textarea[aria-invalid="true"]{border-color:var(--error)}
select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23616161' stroke-width='1.6' stroke-linecap='round'%3E%3Cpath d='m7 10 5 5 5-5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:40px}
.hint{color:var(--muted);font-size:12px;margin:6px 0 0;line-height:1.65}
.field-error{color:var(--error);font-size:12px;margin:6px 0 0}
.contact-fields{display:grid;grid-template-columns:140px minmax(0,1fr);gap:12px}
.additional{border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:6px 0 36px;padding:15px 0}
summary{cursor:pointer;font-size:14px;font-weight:550;display:flex;align-items:center;gap:10px;list-style:none;min-height:24px}summary::-webkit-details-marker{display:none}
summary::before{content:"";display:block;width:8px;height:8px;border-bottom:1.5px solid currentColor;border-right:1.5px solid currentColor;transform:rotate(-45deg);margin-right:3px;transition:transform .15s ease-out}
details[open] summary::before{transform:rotate(45deg)}summary span{font-weight:400;font-size:12px;color:var(--muted)}
.additional-fields{padding-top:22px}.additional-fields>.field:last-child{margin-bottom:0}
.logo-upload{display:flex;gap:14px;align-items:flex-start}.logo-thumbnail{width:62px;height:62px;flex:0 0 62px;display:flex;align-items:center;justify-content:center;border:1px dashed #a9b9ab;border-radius:var(--radius);color:var(--muted);background:white;overflow:hidden}.logo-thumbnail img{width:100%;height:100%;object-fit:contain}
.upload-controls{min-width:0}input[type="file"]{width:100%;font-size:12px;color:var(--muted)}input[type="file"]::file-selector-button{font:inherit;padding:8px 12px;border:1px solid #aebcaf;background:var(--surface);color:var(--ink);border-radius:6px;margin-right:8px;cursor:pointer}
.text-button{border:0;background:none;padding:6px 0;color:var(--accent-ink);font-size:12px;text-decoration:underline;text-underline-offset:3px;min-height:32px}
.validity-fields{display:grid;grid-template-columns:minmax(0,1fr) 136px;gap:12px}.validity-fields:has(#custom-validity-field[hidden]){grid-template-columns:1fr}
.input-with-unit{position:relative}.input-with-unit input{padding-right:42px}.input-with-unit span{position:absolute;right:13px;top:12px;color:var(--muted)}
.form-actions{padding-top:4px}.form-actions p{font-size:12px;color:var(--muted);margin:0 0 12px}
.button{border-radius:var(--radius);min-height:48px;padding:12px 18px;font-weight:550;font-size:14px;border:1px solid transparent;display:inline-flex;align-items:center;justify-content:center;gap:14px;line-height:1.5;transition:background .15s ease-out}
.primary{background:var(--accent);color:var(--on-accent)}.primary:hover{background:var(--accent-hover)}.secondary{background:transparent;color:var(--accent-ink);border-color:#949494}.secondary:hover{background:var(--tint)}
.form-actions .button{width:100%;justify-content:space-between}
.preview-panel{padding-top:4px;position:sticky;top:26px;align-self:start;min-width:0}
.preview-header{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:19px}
.preview-header h2{margin:0;font-size:16px;font-weight:600}.preview-header p{margin:3px 0 0;font-size:12px;color:var(--muted)}.sample-label{font-size:11px;color:var(--muted);border:1px solid #bfcbbf;padding:3px 10px;border-radius:4px}
.paper-shell{container-type:inline-size}.quotation-paper{background:var(--surface);color:#253129;min-height:calc(100cqi * 1.414);padding:7cqi 6cqi 4cqi;box-shadow:0 9px 26px #2434290d;border:1px solid #dbe1d9;display:flex;flex-direction:column;font-size:2.1cqi;line-height:1.7}
.zoom-button{display:none;align-items:center;gap:8px;margin:0 0 12px}.zoom-button svg{width:16px;height:16px}dialog{padding:0;border:1px solid var(--line);border-radius:var(--radius);width:min(900px,calc(100vw - 24px));max-height:calc(100dvh - 24px);color:var(--ink);background:var(--canvas);overflow:hidden}dialog::backdrop{background:#102519b3}.zoom-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 20px;border-bottom:1px solid var(--line)}.zoom-toolbar h2{font-size:18px;margin:0}.zoom-toolbar p{font-size:12px;color:var(--muted);margin:3px 0 0}.zoom-toolbar .button{font-size:12px;min-height:44px;padding:8px 12px}.zoom-scroll{max-height:calc(100dvh - 126px);overflow:auto;padding:20px;overscroll-behavior:contain}.zoom-paper-shell{width:794px;container-type:inline-size}
.paper-top{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:5cqi;min-height:19cqi;align-items:start}
.issuer-block h3{font-size:3.25cqi;line-height:1.55;margin:0 0 1.3cqi;font-weight:650;overflow-wrap:anywhere}.issuer-block p{margin:.8cqi 0 0;overflow-wrap:anywhere}.issuer-block img{width:13cqi;height:10cqi;object-fit:contain;object-position:left center;margin-bottom:2cqi}
.document-meta{text-align:right}.document-meta h3{font-size:4.1cqi;line-height:1.4;margin:0 0 2cqi;font-weight:650}.document-meta dl{margin:0;font-size:1.95cqi}.document-meta dl>div{display:flex;justify-content:flex-end;gap:2cqi}.document-meta dd{margin:0;font-variant-numeric:tabular-nums}.document-meta dt{color:#56635a}
.paper-title{text-align:right;color:#263b53;font-size:5cqi;letter-spacing:.02em;margin:2cqi 0 7cqi}.paper-parties{display:grid;grid-template-columns:1fr 1fr;gap:4cqi;margin-bottom:8cqi}.customer-block{display:flex;flex-direction:column;gap:1cqi;align-items:start}.customer-block span{color:#263b53;font-weight:600}.customer-block strong{font-weight:500}.document-meta dt{color:#263b53;font-weight:600}#paper-logo-slot{justify-self:end}#paper-logo-slot img{width:25cqi;height:12cqi;object-fit:contain;object-position:right top}
.quotation-table{border-collapse:collapse;width:100%;table-layout:fixed;font-variant-numeric:tabular-nums;font-size:1.95cqi}.col-description{width:47%}.col-qty{width:11%}.col-price{width:20%}.col-amount{width:22%}
.quotation-table th{text-align:left;background:#263b53;color:white;font-weight:550;padding:1.9cqi .9cqi;font-size:1.7cqi;white-space:nowrap}.quotation-table td{padding:2.7cqi .9cqi;vertical-align:top;overflow-wrap:anywhere}.quotation-table th:nth-child(n+3),.quotation-table td:nth-child(n+3){text-align:right}.quotation-table tbody tr:last-child td{border-bottom:1px solid #263b53}
.paper-totals{margin:0 0 0 auto;width:48%;font-variant-numeric:tabular-nums}.paper-totals>div{display:flex;justify-content:space-between;gap:2cqi;padding:1.5cqi .9cqi}.paper-totals .paper-total{background:#f2f4f7;border-block:1px solid #263b53;color:#263b53;font-weight:650}.paper-total strong{font-size:2.6cqi}.paper-signature{margin:12cqi 0 2cqi auto;width:43%;border-top:1px solid #263b53;padding-top:1cqi;text-align:center;display:flex;flex-direction:column;color:#263b53}.paper-terms h4{color:#263b53}.tax-hint{margin-top:-6px;margin-bottom:22px}
.paper-terms{margin-top:5cqi;font-size:2cqi}.paper-terms h4{margin:0 0 1cqi;font-size:2.1cqi;font-weight:600}.paper-terms p{margin:.6cqi 0;overflow-wrap:anywhere}.preserve-lines{white-space:pre-wrap}
.paper-footer{margin-top:auto;padding-top:10cqi;display:flex;justify-content:space-between;gap:3cqi;font-size:1.65cqi;color:#58655b}.preview-caption{text-align:center;font-size:12px;color:var(--muted);margin:20px 0 0}
.confirmation h2,.success h2{font-size:24px;font-weight:650;margin:0 0 14px;line-height:1.5}.confirmation>p{color:var(--muted);font-size:14px}.confirmation-summary{margin:26px 0;border-top:1px solid var(--line)}.confirmation-summary>div{display:grid;grid-template-columns:110px minmax(0,1fr);gap:12px;border-bottom:1px solid var(--line);padding:14px 0;font-size:14px}.confirmation-summary dt{color:var(--muted)}.confirmation-summary dd{margin:0;overflow-wrap:anywhere}.confirmation-actions{display:flex;flex-direction:column;gap:10px}.save-description{font-size:12px!important}.success-icon{width:52px;height:52px;display:flex;align-items:center;justify-content:center;background:var(--tint);color:var(--accent-ink);border-radius:50%;margin-bottom:22px}.success-icon svg{width:26px;height:26px}.success p{font-size:14px;color:var(--muted)}.success>.button{margin-top:22px;width:100%}.success>.button+.button{margin-top:12px}
body[data-step="review"] .steps #step-one span,body[data-step="saved"] .steps #step-one span{background:var(--tint);color:var(--accent-ink)}
@media(min-width:900px){.form-panel{max-width:480px}.preview-panel{max-width:560px}}
@media(max-width:1050px){.workspace{gap:36px;padding-inline:30px}.app-header{padding-inline:30px}.intro h1{font-size:28px}}
@media(max-width:760px){.app-header{padding:18px 20px;min-height:70px}.brand{font-size:15px}.brand svg{width:26px;height:26px}.mode-label{font-size:11px}.workspace{display:block;padding:28px 20px 40px;max-width:560px}.intro h1{font-size:28px}.preview-panel{position:static;margin-top:36px;padding:0}.steps{margin-top:24px;gap:22px}body[data-step="edit"] .preview-panel{display:none}body[data-step="review"] .preview-panel{margin-top:26px}body[data-step="saved"] .preview-panel{margin-top:32px}.confirmation-actions{margin-top:14px}.quotation-paper{font-size:2.5cqi}.issuer-block p{font-size:2.5cqi}.document-meta dl{font-size:2.2cqi}.paper-terms{font-size:2.45cqi}.paper-terms h4{font-size:2.6cqi}.preview-caption{font-size:11px}.notice{margin-bottom:26px}}
@media(max-width:760px){.zoom-button{display:flex}.zoom-toolbar{padding:12px}.zoom-scroll{padding:12px}#review-preview-slot .preview-panel{margin:12px 0 26px}#review-preview-slot .preview-caption{margin-bottom:0}.sample-label{font-size:11px}}
@media(max-width:380px){.workspace{padding-inline:16px}.app-header{padding-inline:16px}.brand{font-size:14px}.contact-fields{grid-template-columns:112px minmax(0,1fr);gap:10px}.required{font-size:11px;margin-left:3px}.validity-fields{grid-template-columns:minmax(0,1fr) 112px}.confirmation-summary>div{grid-template-columns:92px minmax(0,1fr)}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
