@font-face{font-family:Sarabun;src:url('./assets/fonts/Sarabun-Regular.ttf') format('truetype');font-weight:400;font-display:swap}
@font-face{font-family:Sarabun;src:url('./assets/fonts/Sarabun-Bold.ttf') format('truetype');font-weight:600 800;font-display:swap}
:root{color-scheme:light;--navy:#173968;--navy-dark:#102b50;--blue:#2563a8;--teal:#0f766e;--ink:#182334;--muted:#66758a;--line:#d9e1eb;--surface:#fff;--soft:#f4f7fb;--danger:#a41e2c;--warn:#945515;--shadow:0 16px 40px rgba(25,45,75,.09)}
*{box-sizing:border-box}html{font-family:Sarabun,system-ui,sans-serif;background:#eef3f8;color:var(--ink)}body{margin:0;min-height:100vh;background:radial-gradient(circle at top right,#dae8f7 0,transparent 34rem),#eef3f8}button,input,select{font:inherit}button{touch-action:manipulation}.hidden{display:none!important}
.topbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px max(18px,env(safe-area-inset-right)) 12px max(18px,env(safe-area-inset-left));background:rgba(255,255,255,.92);border-bottom:1px solid rgba(203,213,225,.8);backdrop-filter:blur(14px)}
.brand{display:flex;align-items:center;gap:10px}.brand img{border-radius:11px}.brand div{display:grid}.brand strong{font-size:16px;color:var(--navy-dark)}.brand span{font-size:11px;color:var(--muted);letter-spacing:.04em}.top-actions{display:flex;align-items:center;gap:8px}.status-pill{padding:6px 10px;border-radius:999px;background:#e9f7f1;color:#176844;font-size:12px;font-weight:700}.status-pill.offline{background:#fff2dc;color:#915419}
.app-shell{max-width:1220px;margin:0 auto;padding:28px 20px 72px}.center-card{max-width:520px;margin:10vh auto 0;padding:42px;text-align:center;background:#fff;border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow)}.center-card h1{margin:12px 0 4px;color:var(--navy-dark)}.center-card p{color:var(--muted)}
.spinner{width:42px;height:42px;margin:auto;border:4px solid #d9e5f2;border-top-color:var(--blue);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.setup-layout{display:grid;grid-template-columns:minmax(300px,.8fr) minmax(420px,1.2fr);gap:24px;align-items:start;max-width:1020px;margin:4vh auto}.intro-panel{padding:24px 12px}.intro-panel h1{font-size:38px;line-height:1.16;margin:10px 0;color:var(--navy-dark)}.intro-panel>p{font-size:17px;line-height:1.7;color:var(--muted)}.eyebrow{color:var(--blue);font-size:13px;font-weight:800;text-transform:uppercase;letter-spacing:.09em}.steps{list-style:none;padding:0;margin:28px 0;display:grid;gap:14px}.steps li{display:flex;align-items:center;gap:12px;font-weight:700}.steps span,.step-number{display:grid;place-items:center;width:32px;height:32px;flex:0 0 auto;border-radius:10px;background:#dceafa;color:var(--navy);font-weight:800}.template-link{color:var(--blue);font-weight:700;text-underline-offset:4px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow)}.form-card{padding:26px;display:grid;gap:18px}label>span{display:block;margin-bottom:7px;color:#324257;font-weight:700}input,select{width:100%;min-height:46px;padding:10px 12px;border:1px solid #c6d2df;border-radius:10px;background:#fff;color:#162235}input:focus,select:focus{outline:3px solid #cfe4fb;border-color:#3b73b9}.file-field{display:block;padding:16px;border:1px dashed #9db2c8;border-radius:13px;background:#f7fafd}.file-field input[type=file]{min-height:auto;padding:8px;background:#fff}.file-field small{display:block;margin-top:8px;color:var(--muted)}.signature-preview{display:block;width:180px;height:70px;object-fit:contain;margin:12px auto 0;background:#fff;border:1px solid var(--line);border-radius:8px}.small-note{margin:8px 0 0;color:var(--muted);font-size:13px;line-height:1.5}
.button{min-height:44px;padding:10px 16px;border:0;border-radius:10px;font-weight:800;cursor:pointer;text-align:center}.button:disabled{opacity:.5;cursor:not-allowed}.button.primary{background:var(--blue);color:#fff}.button.primary:hover{background:#1d558f}.button.secondary{background:#e8eef5;color:#243c59}.button.teal{background:var(--teal);color:#fff}.button.ghost{background:#eef4fa;color:var(--navy)}.button.full{width:100%;display:block}.danger-button{background:#fff0f1;color:var(--danger);border:1px solid #f3c8ce}.icon-button{width:42px;height:42px;border:0;border-radius:10px;background:#eaf0f6;color:var(--navy);font-size:21px;cursor:pointer}.text-button{border:0;background:transparent;font:700 14px Sarabun;color:var(--blue);cursor:pointer;text-decoration:underline;text-underline-offset:3px}.text-button.danger{color:var(--danger)}.file-button{position:relative;overflow:hidden}.file-button input{position:absolute;inset:0;opacity:0;cursor:pointer}
.message-box{padding:12px 14px;border-radius:11px;background:#fff8e8;color:#744313;font-size:14px;line-height:1.5}.message-box.error{background:#fff0f1;color:#8b1e2a}.message-box ul{margin:6px 0 0;padding-left:22px}.form-status{min-height:20px;margin:0;color:var(--muted);font-size:14px}.form-status.error{color:var(--danger);font-weight:700}.form-status.success{color:#176844;font-weight:700}
.workspace{display:grid;gap:20px}.welcome-card{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:24px 28px;border-radius:20px;color:#fff;background:linear-gradient(135deg,var(--navy-dark),#22588f);box-shadow:0 18px 40px rgba(23,57,104,.18)}.welcome-card h1{margin:5px 0 2px;font-size:26px}.welcome-card p{margin:0;opacity:.82}.privacy-note{padding:10px 14px;border-radius:12px;background:rgba(255,255,255,.12);font-size:13px}.controls-card,.output-card{padding:24px}.section-heading{margin-bottom:20px}.section-heading>div{display:flex;gap:12px;align-items:center}.section-heading h2{margin:0;color:var(--navy-dark);font-size:20px}.section-heading p{margin:2px 0 0;color:var(--muted);font-size:14px}.form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.people-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin-top:16px}.subcard{padding:16px;border:1px solid var(--line);border-radius:14px;background:var(--soft)}.subcard h3{margin:0 0 12px;font-size:16px}.check-list{display:grid;gap:8px;max-height:230px;overflow:auto}.check-row{display:flex;align-items:flex-start;gap:9px;padding:9px 10px;border:1px solid #dce4ed;border-radius:9px;background:#fff;font-weight:400}.check-row input{width:18px;min-height:18px;margin:2px 0}.warnings{display:grid;gap:8px;margin-top:15px}.warning{padding:10px 12px;border:1px solid #f3d392;border-radius:10px;background:#fff8e7;color:var(--warn)}.action-grid{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:10px}.output-card>.form-status{margin:11px 0}.preview-frame{overflow:hidden;border:1px solid var(--line);border-radius:14px;background:#dfe5ec}.preview-frame iframe{display:block;width:100%;height:940px;border:0;background:#dfe5ec}
dialog{width:min(480px,calc(100% - 28px));border:0;border-radius:20px;padding:0;box-shadow:0 28px 80px rgba(15,23,42,.3)}dialog::backdrop{background:rgba(11,25,43,.52);backdrop-filter:blur(3px)}.dialog-card{padding:24px;display:grid;gap:12px}.dialog-head{display:flex;justify-content:space-between;align-items:start;gap:10px;margin-bottom:6px}.dialog-head h2{margin:0;color:var(--navy-dark)}.dialog-head p{margin:3px 0;color:var(--muted)}
@media(max-width:820px){.topbar{padding:10px 12px}.brand strong{font-size:14px}.brand span{display:none}.status-pill{display:none}.app-shell{padding:16px 12px 60px}.setup-layout{grid-template-columns:1fr;margin:0}.intro-panel{padding:18px 8px 4px}.intro-panel h1{font-size:30px}.steps{margin:20px 0}.form-card{padding:19px}.welcome-card{align-items:flex-start;padding:20px;flex-direction:column}.privacy-note{width:100%}.controls-card,.output-card{padding:17px}.form-grid,.people-grid{grid-template-columns:1fr}.action-grid{grid-template-columns:1fr}.preview-frame iframe{height:680px}.center-card{margin:7vh auto 0;padding:28px 20px}.top-actions .button{padding:8px 10px}.top-actions{gap:5px}}
@media print{.topbar,.controls-card,.welcome-card,.section-heading,.action-grid,.form-status{display:none!important}.app-shell{padding:0}.output-card{padding:0;border:0;box-shadow:none}.preview-frame{border:0}.preview-frame iframe{height:100vh}}
