:root{--green:#245e50;--dark:#193e35;--muted:#7a8580;--line:#e5eae6;--bg:#f5f7f4}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:#253b33;font-family:'Plus Jakarta Sans','Noto Sans Thai',sans-serif;font-size:calc(14px * var(--font-scale, 1))}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit}button,.button{border:0;background:var(--green);color:white;border-radius:9px;padding:12px 20px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:600;transition:.2s}button:hover,.button:hover{filter:brightness(.93);transform:translateY(-1px)}button:disabled{opacity:.45;cursor:default}.secondary{background:#fff;border:1px solid #d4dfd7;color:var(--green)}.sidebar{position:fixed;inset:0 auto 0 0;width:258px;background:#fff;border-right:1px solid var(--line);padding:34px 22px 20px;display:flex;flex-direction:column}.brand{font-size:calc(31px * var(--font-scale, 1));letter-spacing:-1.7px;font-weight:800;display:flex;align-items:center}.brand>span:last-child{color:#6d987a}.brand-icon{display:inline-flex;align-items:center;justify-content:center;border-radius:12px;width:42px;height:44px;background:var(--green);color:#e3d996;font-size:calc(33px * var(--font-scale, 1));margin-right:10px}.college{padding:20px 6px 27px;font-weight:600;font-size:calc(13px * var(--font-scale, 1));line-height:1.9}.college small{color:var(--muted);font-weight:400;font-size:calc(11px * var(--font-scale, 1))}.nav-label{font-size:calc(10px * var(--font-scale, 1));letter-spacing:1.8px;color:#95a099;margin:12px 12px}nav{display:grid;gap:7px}nav a{display:flex;align-items:center;gap:13px;padding:13px 12px;border-radius:8px;font-size:calc(18px * var(--font-scale, 1));color:#738077}nav a span{font-size:calc(12px * var(--font-scale, 1));font-weight:500}nav a.active{background:#eaf2ec;color:var(--green)}.sidebar-note{margin-top:auto;background:#f4f6ef;border:1px solid #e6eadc;border-radius:12px;padding:20px 15px}.sidebar-note>span{font-size:calc(28px * var(--font-scale, 1));color:#8e9b62;display:block}.sidebar-note strong{font-size:calc(13px * var(--font-scale, 1))}.sidebar-note p{font-size:calc(11px * var(--font-scale, 1));color:#82907d;line-height:1.9;margin-bottom:0}.profile{display:flex;align-items:center;gap:9px;border-top:1px solid var(--line);margin-top:24px;padding-top:20px;font-size:calc(11px * var(--font-scale, 1))}.profile small{display:block;font-size:calc(9px * var(--font-scale, 1));color:var(--muted);margin-top:3px}.avatar{width:34px;height:34px;background:#e4ece6;border-radius:50%;display:grid;place-items:center;font-weight:700}.icon-button{padding:5px;background:transparent;color:var(--green)}main{margin-left:258px}.topbar{height:76px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 40px;font-size:calc(11px * var(--font-scale, 1))}.muted{color:var(--muted);line-height:1.85}.online{font-size:calc(10px * var(--font-scale, 1));color:#588d6b;border:1px solid var(--line);border-radius:20px;padding:7px 11px}.content{max-width:1480px;margin:auto;padding:33px 40px 15px}.page-heading,.section-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:24px}.page-heading h1{font-size:calc(29px * var(--font-scale, 1));margin:7px 0 8px;letter-spacing:-.6px}.page-heading p{margin:4px 0}.eyebrow{font-size:calc(9px * var(--font-scale, 1));font-weight:700;letter-spacing:1.8px;color:#8a977f}.sparkle{color:#b3a26e;font-size:calc(25px * var(--font-scale, 1))}h2{font-size:calc(18px * var(--font-scale, 1));margin-top:0}h3{font-size:calc(16px * var(--font-scale, 1))}.hero{background:#eaf0df;border:1px solid #e1e8d7;border-radius:16px;padding:33px 35px;display:flex;justify-content:space-between;overflow:hidden;position:relative;min-height:280px;margin:27px 0}.pill{background:#f8faed;border:1px solid #d9e2ca;border-radius:20px;font-size:calc(9px * var(--font-scale, 1));letter-spacing:.5px;padding:6px 10px;color:#71805e}.hero h2{font-size:calc(30px * var(--font-scale, 1));line-height:1.55;margin:18px 0 9px;letter-spacing:-.6px}.hero p{font-size:calc(12px * var(--font-scale, 1));line-height:1.9;color:#78866c}.hero-link{font-size:calc(11px * var(--font-scale, 1));font-weight:700;display:inline-flex;gap:35px;margin-top:8px}.hero-art{position:relative;display:grid;place-items:center;width:42%;min-width:260px}.decor-circle{position:absolute;width:270px;height:270px;background:#dce5ca;border-radius:50%;right:-15px;top:-4px}.paper{width:270px;background:#fffdf7;border:7px solid #fff;padding:19px 22px;box-shadow:0 17px 25px #4d613927;transform:rotate(-8deg);outline:1px solid #e6e5d4;position:relative;text-align:center}.paper-top{color:#9e9a63;font-size:calc(20px * var(--font-scale, 1))}.paper-top span{display:block;font-size:calc(5px * var(--font-scale, 1));letter-spacing:1.5px}.paper-title{font-size:calc(24px * var(--font-scale, 1));margin:12px 0;color:#5b6852}.paper-line{height:3px;background:#e8e9de;width:70%;margin:7px auto}.paper-line.short{width:45%}.paper-name{font-size:calc(11px * var(--font-scale, 1));color:#8b916e;margin:12px 0}.paper-bottom{display:flex;justify-content:space-between;align-items:center;margin-top:16px;text-align:left;color:#7d855f;font-size:calc(9px * var(--font-scale, 1))}.paper-bottom small{font-size:calc(5px * var(--font-scale, 1));letter-spacing:2px}.paper-bottom b{font-size:calc(40px * var(--font-scale, 1));color:#bea564}.floating-label{position:absolute;bottom:3px;right:0;transform:rotate(4deg);background:white;border-radius:8px;padding:10px 15px;font-size:calc(10px * var(--font-scale, 1));box-shadow:0 5px 20px #48634512}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin:25px 0 31px}.stat{background:#fff;border:1px solid var(--line);border-radius:12px;padding:21px 23px}.stat>span{font-size:calc(11px * var(--font-scale, 1));color:#728276}.stat strong{display:block;font-size:calc(34px * var(--font-scale, 1));letter-spacing:-1px;margin:12px 0}.stat strong small{font-size:calc(11px * var(--font-scale, 1));font-weight:400;letter-spacing:0;color:#859087;margin-left:7px}.stat-foot{font-size:calc(10px * var(--font-scale, 1));color:#8b968e}.card{background:white;border:1px solid var(--line);border-radius:12px;padding:25px;margin-bottom:22px}.section-heading h2{margin:0 0 6px}.section-heading p{margin:0;font-size:calc(11px * var(--font-scale, 1))}.section-heading>span{font-size:calc(10px * var(--font-scale, 1))}.count{font-size:calc(10px * var(--font-scale, 1));display:inline-block;border-radius:20px;background:#e6eee7;padding:4px 8px;vertical-align:middle;margin-left:7px}.empty{text-align:center;padding:40px 15px}.empty p{font-size:calc(12px * var(--font-scale, 1))}.empty-icon{font-size:calc(30px * var(--font-scale, 1));color:#86a18c}.empty .button{margin-top:10px}.project-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.project-card{padding:22px}.project-card-top,.project-bottom{display:flex;align-items:center;justify-content:space-between}.project-icon{background:#eef3e9;border-radius:10px;padding:11px 15px;color:#698267;font-size:calc(24px * var(--font-scale, 1))}.badge{background:#edf5ed;color:#60916c;border-radius:20px;padding:5px 9px;font-size:calc(9px * var(--font-scale, 1));white-space:nowrap}.badge.draft{background:#f5f1e7;color:#a08b58}.project-card h3{font-size:calc(15px * var(--font-scale, 1));line-height:1.7}.project-card .eyebrow{margin-top:20px}.project-card .muted{font-size:calc(11px * var(--font-scale, 1));line-height:2.1}.divider{height:1px;background:var(--line);margin:19px 0}.project-bottom{font-size:calc(10px * var(--font-scale, 1));color:#7f8c80;gap:8px}.project-bottom a{color:var(--green);font-weight:600;white-space:nowrap}footer{font-size:calc(9px * var(--font-scale, 1));color:#99a299;padding:23px 0 5px;display:flex;justify-content:space-between;margin-top:26px;border-top:1px solid var(--line)}.search-form{display:flex;gap:10px}.search-form input{flex:1}.search-card h2{margin-bottom:6px}.search-card p{font-size:calc(12px * var(--font-scale, 1))}label{display:block;font-size:calc(12px * var(--font-scale, 1));font-weight:500;margin:15px 0}input,select,textarea{display:block;width:100%;background:#fcfdfb;border:1px solid #dce3dc;border-radius:7px;padding:11px 12px;color:#294237;margin-top:7px}input:focus,textarea:focus,select:focus{outline:2px solid #91b09b;outline-offset:1px}input[type=color]{height:42px;padding:5px}input[type=file]{font-size:calc(11px * var(--font-scale, 1))}textarea{resize:vertical}.form-grid,.two-col{display:grid;grid-template-columns:1fr 1fr;gap:22px}.form-card{max-width:850px}.info{background:#eef3e7;border:1px solid #dde7d2;padding:16px 20px;border-radius:9px;color:#6c7c5c;line-height:1.8;font-size:calc(12px * var(--font-scale, 1));margin-bottom:22px}.login{max-width:460px;margin:40px auto;padding:36px}.login h1{font-size:calc(26px * var(--font-scale, 1))}.login .eyebrow{margin-top:25px}.login .full{margin-top:23px}.full{width:100%}.alert{padding:15px;background:#e0efe3;color:#315e3b;border-radius:9px;margin-bottom:20px}.error{background:#fcebea;color:#9b3e36}.tabs{display:flex;border-bottom:1px solid var(--line);gap:28px;margin-bottom:25px;overflow:auto}.tabs a{padding:13px 0;white-space:nowrap;font-size:calc(12px * var(--font-scale, 1));color:#8a958c}.tabs a.selected{color:var(--green);border-bottom:2px solid var(--green);font-weight:600}.back{font-size:calc(11px * var(--font-scale, 1));color:#7b8d7f;display:block;margin-bottom:20px}.check{display:flex;align-items:center;gap:10px}.check input{width:auto;margin:0}.multiline{white-space:pre-wrap;line-height:1.9}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:calc(12px * var(--font-scale, 1));text-align:left}th{background:#f6f8f4;color:#7f8e80;padding:12px;font-weight:500}td{padding:15px 12px;border-bottom:1px solid var(--line)}td small{display:block;color:#91a092;margin-top:5px}.text-link{font-size:calc(12px * var(--font-scale, 1));color:#347a60;font-weight:500}.link-button{background:none;color:#9b6d57;padding:6px;font-size:calc(10px * var(--font-scale, 1))}.inline{display:inline}.template-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.template-card{padding:19px}.template-card h2{margin-top:22px;font-size:calc(15px * var(--font-scale, 1))}.mini-cert{border:3px double var(--cert);background:#fffdf5;text-align:center;padding:14px;color:var(--cert)}.mini-cert>span{display:block;font-size:calc(20px * var(--font-scale, 1))}.mini-cert strong{display:block;font-size:calc(20px * var(--font-scale, 1))}.mini-cert small{display:block;font-size:calc(7px * var(--font-scale, 1));margin:8px}.mini-cert div{font-size:calc(13px * var(--font-scale, 1));margin:10px}.background-preview{width:100%;max-height:120px;object-fit:contain}.photo-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:20px}.photo-grid figure{margin:0;padding:10px}.photo-grid img{width:100%;height:130px;object-fit:cover;border-radius:5px}.photo-grid figcaption{font-size:calc(11px * var(--font-scale, 1));margin:7px 0}.result{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);padding-top:18px;margin-top:18px}.printbar{display:flex;justify-content:space-between;padding:20px;max-width:1123px;margin:auto}.certificate{--cert:#245e50;width:1123px;height:794px;background-color:#fffdf7;background-size:100% 100%;margin:15px auto;border:14px solid var(--cert);padding:16px;color:var(--cert);text-align:center}.cert-inner{border:2px solid #c3a763;height:100%;padding:26px 45px;position:relative}.certificate .seal{font-size:calc(45px * var(--font-scale, 1));color:#b69a57}.certificate h1{font-size:calc(55px * var(--font-scale, 1));margin:5px}.certificate h2{font-size:calc(32px * var(--font-scale, 1));border-bottom:1px dotted #bcae87;display:inline-block;min-width:400px;margin:12px 0;padding-bottom:10px}.certificate h3{font-size:calc(22px * var(--font-scale, 1))}.certificate p{margin:11px 0;font-size:calc(17px * var(--font-scale, 1))}.signature{margin-top:35px;line-height:2}.certificate small{position:absolute;bottom:10px;left:20px;font-size:calc(10px * var(--font-scale, 1))}.report-paper{max-width:900px;margin:15px auto;padding:50px;background:white;line-height:1.9}.report-paper h1{font-size:calc(26px * var(--font-scale, 1))}.report-paper h3{margin-top:28px;border-bottom:1px solid var(--line);padding-bottom:10px}.report-photos{display:grid;grid-template-columns:1fr 1fr;gap:20px}.report-photos figure{margin:0;break-inside:avoid}.report-photos img{width:100%;height:220px;object-fit:contain}.report-photos figcaption{font-size:calc(12px * var(--font-scale, 1));text-align:center}@media(max-width:1150px){.sidebar{width:220px;padding:25px 15px}main{margin-left:220px}.content{padding:25px}.topbar{padding:0 25px}.template-grid,.project-grid{grid-template-columns:repeat(2,1fr)}.hero{padding:28px}.hero-art{min-width:235px}.paper{width:235px}.hero h2{font-size:calc(26px * var(--font-scale, 1))}.page-heading h1{font-size:calc(25px * var(--font-scale, 1))}}@media(max-width:800px){.sidebar{position:relative;width:100%;padding:15px;display:block}.brand{font-size:calc(26px * var(--font-scale, 1))}.college,.nav-label,.sidebar-note,.profile{display:none}nav{display:flex;flex-wrap:wrap;margin-top:12px;gap:3px}nav a{padding:8px;font-size:calc(14px * var(--font-scale, 1))}nav a span{font-size:calc(10px * var(--font-scale, 1))}main{margin:0}.topbar{height:52px;padding:0 18px}.content{padding:22px 18px}.hero-art{display:none}.hero{min-height:0}.hero h2{font-size:calc(28px * var(--font-scale, 1))}.stats{gap:9px}.stat{padding:15px 10px}.stat>span{font-size:calc(9px * var(--font-scale, 1))}.stat strong{font-size:calc(26px * var(--font-scale, 1))}.stat-foot{font-size:calc(8px * var(--font-scale, 1))}.stat strong small{display:block;margin-left:0}.page-heading{align-items:flex-start}.page-heading h1{font-size:calc(23px * var(--font-scale, 1))}.page-heading .button{font-size:calc(10px * var(--font-scale, 1));padding:10px;white-space:nowrap}.two-col,.template-grid,.project-grid,.form-grid{grid-template-columns:1fr}.search-form{flex-direction:column}.tabs{gap:20px}.tabs a{font-size:calc(11px * var(--font-scale, 1))}.section-heading{align-items:flex-start}.section-heading h2{font-size:calc(16px * var(--font-scale, 1))}footer span{display:none}.certificate{transform-origin:top left}.result{display:block}.result .button{margin-bottom:10px}.report-paper{padding:25px}}@media print{body{background:white}.printbar{display:none}.certificate{margin:0;width:297mm;height:209mm;break-inside:avoid;-webkit-print-color-adjust:exact;print-color-adjust:exact}.report-paper{margin:0;padding:10mm;max-width:none}.report-photos{display:block}.report-photos figure{margin:15px 0}.report-photos img{height:70mm}@page{size:A4;margin:12mm}body:has(.certificate){margin:0}}


.certificate-qr{position:absolute;right:22px;bottom:24px;width:114px;color:#182b23;text-align:center;background:white;padding:5px;font-size:calc(8px * var(--font-scale, 1));line-height:1.4}.certificate-qr .qr-image{display:block}.certificate-qr svg{display:block;width:100%;height:auto}.qr-warning{position:absolute;bottom:27px;right:20px;max-width:210px;font-size:calc(10px * var(--font-scale, 1));color:#8e6b38}.privacy-policy{max-width:950px;line-height:1.95}.privacy-policy h2{margin-top:28px}.privacy-policy li{margin:8px 0}

/* Text size changes preserve layout dimensions and printed document sizing. */
.font-controls{display:inline-flex;align-items:center;gap:4px;flex-wrap:wrap;flex-shrink:0}.font-controls button{font-size:14px;min-width:38px;min-height:38px;padding:6px 9px;background:#fff;color:var(--green);border:1px solid #d4dfd7;border-radius:7px;line-height:1.2}.font-controls button:focus-visible{outline:3px solid #8fb89e;outline-offset:2px}.font-controls output{font-size:12px;min-width:40px;text-align:center;color:#556f5d}.topbar{height:auto;min-height:76px;padding-top:12px;padding-bottom:12px;gap:12px;flex-wrap:wrap}.sidebar{overflow-y:auto}.sidebar-note{flex-shrink:0}.content{overflow-wrap:anywhere}.certificate{--font-scale:1}.printbar{gap:12px;flex-wrap:wrap}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:800px){.topbar{min-height:52px}.topbar .online{display:none}.page-heading,.section-heading{flex-wrap:wrap}}@media print{:root{--font-scale:1!important}.font-controls{display:none!important}}

.guide-toc{display:flex;flex-wrap:wrap;gap:8px}.guide-toc a{font-size:inherit;padding:8px;background:#edf4ec;border-radius:6px}.user-guide h2{scroll-margin-top:20px}.user-guide li{margin-bottom:10px}@media print{body:has(.user-guide) .sidebar,body:has(.user-guide) .topbar,body:has(.user-guide) footer,.guide-print,.guide-toc{display:none!important}body:has(.user-guide) main{margin:0}body:has(.user-guide) .content{padding:0;max-width:none}.user-guide{border:0;padding:0;max-width:none}.user-guide h2{break-after:avoid}.user-guide p,.user-guide li{orphans:3;widows:3}}

.request-signatures{display:none}@media print{.request-signatures{display:flex;justify-content:space-between;margin-top:25mm;break-inside:avoid}.request-document input,.request-document textarea,.request-document select{border:1px solid #888;background:white}.request-document textarea{height:auto;min-height:35mm}.request-document .info{display:none}}

.front-site-link{font-size:calc(12px * var(--font-scale,1));padding:9px 12px;white-space:nowrap}


footer .app-version{display:inline;white-space:nowrap}

footer{flex-wrap:wrap;gap:8px}.developer-credit{flex-basis:100%;font-size:calc(11px * var(--font-scale,1));line-height:1.8;color:#65786c}

.project-card{position:relative}.public-project-link::after{content:"";position:absolute;inset:0;border-radius:12px}.project-detail-link{position:relative;z-index:1}.project-card:has(.public-project-link):hover{border-color:#7fa88a;box-shadow:0 5px 18px #245e5010}.public-project-link:focus-visible::after{outline:3px solid #6e9b7c;outline-offset:3px}

.certificate-search{align-items:end;flex-wrap:wrap}.certificate-search label{flex:1 1 230px;min-width:0;margin:0}.certificate-search select{width:100%;text-overflow:ellipsis}.certificate-search button{flex:0 0 auto}@media(max-width:800px){.certificate-search{align-items:stretch}.certificate-search label{flex:auto}}

/* Cream, peach and navy interface palette; print and certificate artwork retain their own colors. */
@media screen {
 :root{--green:#233774;--dark:#1d2d61;--muted:#62677b;--line:#ead6c9;--bg:#fff6ee;--peach:#ffdac2;--accent:#b84718}
 body{color:var(--dark)}
 .sidebar,.topbar{background:#fffaf5}
 .brand>span:last-child,.sparkle,.eyebrow{color:var(--accent)}
 .brand-icon{background:var(--green);color:var(--peach)}
 nav a{color:#58617b;border-radius:14px}
 nav a.active,nav a:hover{background:var(--peach);color:var(--dark)}
 .nav-label,.sidebar-note p,.stat>span,.stat strong small,.stat-foot,.project-bottom,.back,.tabs a,.developer-credit{color:var(--muted)}
 .sidebar-note{background:#fff0e4;border-color:var(--line);border-radius:18px}
 .sidebar-note>span,.empty-icon{color:var(--accent)}
 .avatar,.count,.project-icon{background:var(--peach);color:var(--dark)}
 .online{background:#edf4fb;color:#294d79;border-color:#ceddec}
 .hero{background:#fff0e4;border-color:#d9764b;border-radius:28px}
 .hero p{color:#515d7a}
 .pill{background:#fffaf5;border-color:#e9b99e;color:#93401f}
 .decor-circle{background:var(--peach)}
 .paper{box-shadow:0 17px 25px #23377420;outline-color:#ead6c9}
 .paper-top,.paper-bottom b{color:var(--accent)}
 .paper-title,.paper-name,.paper-bottom{color:var(--green)}
 .paper-line{background:#dce4f0}
 .card,.stat{background:#fffdfb;border-radius:20px}
 .project-icon{border-radius:16px}
 .badge{background:#eaf1fb;color:#284d7a}
 .badge.draft{background:#fff0df;color:#85531e}
 .info{background:#fff0e4;border-color:#edc6af;color:#67432f}
 .secondary,.font-controls button{background:#fffaf5;border-color:#d7bcae;color:var(--green)}
 button,.button{border-radius:12px}
 .font-controls output{color:var(--muted)}
 .text-link{color:#245b98}
 .guide-toc a{background:var(--peach);color:var(--dark)}
 .project-card:has(.public-project-link):hover{border-color:#cc724c;box-shadow:0 6px 20px #23377412}
 .public-project-link::after{border-radius:20px}
 a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,.font-controls button:focus-visible,.public-project-link:focus-visible::after{outline:3px solid #2877b8;outline-offset:3px}
 input:not([type=checkbox]):not([type=radio]),textarea,select{background-color:#fffcf9;border-color:#d6bfb0;color:var(--dark)}
 input::placeholder,textarea::placeholder{color:#737183}
 th{background:#fff0e4;color:var(--dark)}
}

/* Uploaded artwork supplies all fixed text; only recipient and number are overlaid. */
.certificate.certificate-background{position:relative;border:0;padding:0;overflow:hidden;background:white;color:#111}
.certificate-artwork{position:absolute;inset:0;width:100%;height:100%;object-fit:fill}
.certificate-overlay-name{position:absolute;top:45.8%;left:12%;width:76%;transform:translateY(-50%);text-align:center;font-size:32px;font-weight:700;line-height:1.25;overflow-wrap:anywhere}
/* SVG text sits on the template's own baseline (11.67% down, after "เลขที่" at 86%) whatever the viewer's Thai font metrics. */
.certificate-overlay-number{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}.certificate-overlay-number text{font-size:13.3px;font-weight:700;fill:#111}
@media print{.certificate.certificate-background{width:297mm;height:209mm;border:0;padding:0}.certificate-overlay-name{font-size:24pt}}
.bulk-bar{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;margin:0 0 14px}.bulk-bar .check{margin:0}
