@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/font-0.ttf) format('truetype');
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/font-1.ttf) format('truetype');
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/font-2.ttf) format('truetype');
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/font-3.ttf) format('truetype');
}
@font-face {
  font-family: 'Noto Sans Thai';
  font-style: normal;
  font-weight: 400;
  font-stretch: normal;
  font-display: swap;
  src: url(/fonts/font-4.ttf) format('truetype');
}
@font-face {
  font-family: 'Noto Sans Thai';
  font-style: normal;
  font-weight: 500;
  font-stretch: normal;
  font-display: swap;
  src: url(/fonts/font-5.ttf) format('truetype');
}
@font-face {
  font-family: 'Noto Sans Thai';
  font-style: normal;
  font-weight: 600;
  font-stretch: normal;
  font-display: swap;
  src: url(/fonts/font-6.ttf) format('truetype');
}
@font-face {
  font-family: 'Noto Sans Thai';
  font-style: normal;
  font-weight: 700;
  font-stretch: normal;
  font-display: swap;
  src: url(/fonts/font-7.ttf) format('truetype');
}


*{box-sizing:border-box}body{margin:0;background:#edf3f0;color:#143d34;font-family:Tahoma,Arial,sans-serif;font-size:14px;line-height:1.65}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{opacity:.5;cursor:wait}button{color:inherit}a{color:#087b62}h1{font-size:25px;line-height:1.4;margin:12px 0 20px}h2{font-size:19px;line-height:1.5}h3{font-size:16px;line-height:1.5;margin:8px 0}p{margin:8px 0 16px}small,.muted{color:#70847e}small{display:block;font-size:12px}.shell{max-width:440px;margin:auto;min-height:100dvh;background:#fff;box-shadow:0 0 50px #143d3408}.topbar{height:76px;display:flex;align-items:center;gap:12px;padding:12px 20px;background:#fffffff5;border-bottom:1px solid #e7eeea;position:sticky;top:0;z-index:10}.brand{border:0;background:none;display:flex;align-items:center;gap:8px;padding:0;margin-right:auto;font-weight:bold;font-size:19px;color:#1268fa}.brand em{color:#12c45b;font-style:normal}.brand-symbol{width:32px;height:42px;overflow:hidden;position:relative}.brand-symbol img{width:57px;position:absolute;left:-12px;top:-5px}svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.icon-button{border:0;background:none;padding:7px;position:relative;display:inline-flex;align-items:center;justify-content:center}.lang{border:1px solid #dce8e1;border-radius:24px;padding:6px 8px;background:#fff;font-size:12px}.content{padding:22px 20px 100px}.back{border:0;background:none;padding:0 0 12px;color:#748c83;font-size:13px}.bottom-nav{position:fixed;bottom:0;width:min(440px,100%);display:flex;background:#fffffff5;border-top:1px solid #e3eae6;padding:10px 3px max(10px,env(safe-area-inset-bottom));z-index:10;backdrop-filter:blur(14px)}.bottom-nav button{border:0;background:none;flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;color:#86948e;font-size:11px;position:relative}.bottom-nav button.active{color:#00b964}.dot{position:absolute;width:8px;height:8px;border-radius:100%;background:#fc654f;right:27%;top:0;border:1px solid white}.btn{display:block;width:100%;padding:13px 16px;margin:12px 0;border-radius:13px;background:white;border:1px solid #cfe0d6;text-align:center;font-weight:bold}.btn.primary{background:#0fc665;border-color:#0fc665;color:#073c27}.btn.danger{color:#d45646;border-color:#f2c8c2}.row,.person-row{display:flex;width:100%;align-items:center;gap:12px;background:white;border:1px solid #dfe9e3;border-radius:15px;text-align:left;margin:10px 0;padding:15px}.row>span:nth-child(2),.person-row>span{flex:1;min-width:0}.row>svg:last-child,.person-row>svg:last-child{width:15px;color:#7b9486}.tile-icon{background:#edf9f2;color:#04a45a;width:40px;height:40px;border-radius:12px;display:grid;place-items:center;flex-shrink:0}.card,.document-card{border:1px solid #e1e9e4;border-radius:17px;padding:18px;margin:14px 0}.tint{background:#f0faf4;border:0}.keyrow{display:flex;justify-content:space-between;gap:18px;padding:13px 0;border-bottom:1px solid #eef2ef}.keyrow:last-child{border-bottom:0}.keyrow strong{text-align:right;overflow-wrap:anywhere;max-width:64%}.badge{display:inline-block;border-radius:30px;padding:4px 10px;font-size:11px;background:#edf3ef;color:#5f7b6d}.badge.pending,.badge.submitted,.badge.offered{background:#fff3d8;color:#946d1d}.badge.approved,.badge.published,.badge.paid,.badge.accepted,.badge.completed{background:#dff9e9;color:#008846}.badge.changes,.badge.revision,.badge.declined{background:#fff0eb;color:#ae5943}label{display:block;font-weight:bold;margin:18px 0 7px}input,select,textarea{width:100%;padding:13px;border:1px solid #ccdbd3;border-radius:11px;background:white;min-width:0;color:#183e34}input:focus,textarea:focus,select:focus{outline:3px solid #02be6022;border-color:#03b560}textarea{min-height:140px;resize:vertical}input[type=file]{font-size:12px;padding:12px}input[type=checkbox]{width:18px;height:18px;flex-shrink:0;accent-color:#02b65c}.check{display:flex;gap:10px;font-weight:normal;font-size:12px;align-items:flex-start}.notice{background:#fff5df;border-radius:14px;padding:15px;margin:15px 0;font-size:13px;color:#896b30}.empty{text-align:center;padding:42px 16px;color:#91a49a}.empty svg{width:42px;height:42px;opacity:.6}.auth-logo{text-align:center;margin:8px auto 20px}.auth-logo img{width:225px;max-width:80%;height:auto}.center{text-align:center}.right{text-align:right}.text-link{display:block;border:0;background:none;color:#087cba;padding:10px 0;width:100%}.admin-signin{font-size:11px;text-align:center;display:block;margin-top:24px}.sandbox-note{text-align:center;font-size:11px;margin-top:14px;color:#84938c}.role-card{display:flex;align-items:center;gap:20px;padding:28px 20px;margin:24px 0;width:100%;border:1px solid #e2ece5;border-radius:22px;background:white;box-shadow:0 5px 15px #123c3410;text-align:left}.role-card>svg:first-child{width:48px;height:48px;color:#05bd63}.role-card span{flex:1}.role-card b{font-size:21px}.hero{padding:22px;background:linear-gradient(130deg,#06e17d,#04cd70);border-radius:23px;color:#06442f;overflow:hidden;position:relative}.hero h1{max-width:290px;font-size:27px}.hero-actions{display:flex;gap:9px}.hero-actions .btn{font-size:12px;width:auto;flex:1;padding:12px 8px;margin:5px 0}.hero-actions .primary{background:#123e2c;color:#e4ffdf;border:0;flex:1.7}.hero-actions .btn:not(.primary){background:#ffffff90;border:0}.promo-track{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;padding:18px 0 10px;scrollbar-width:thin}.promo{scroll-snap-align:start;flex:0 0 91%;height:144px;background:#133f31;color:#e7ffd7;border:0;border-radius:18px;padding:18px;text-align:left;position:relative;overflow:hidden}.promo span{font-size:8px;letter-spacing:1px}.promo h3{font-size:20px;max-width:85%;margin:5px 0}.promo p{font-size:11px;max-width:80%}.promo>svg{position:absolute;width:50px;height:50px;right:7px;bottom:10px;opacity:.4;transform:rotate(-12deg)}.slide-1{background:#dff6bd;color:#224626}.slide-2{background:#d9eff7;color:#1f5364}.section-title{display:flex;align-items:center;justify-content:space-between;margin-top:20px}.chips{display:flex;gap:8px;overflow:auto;white-space:nowrap;padding:13px 0;scrollbar-width:thin}.chip{border:1px solid #dce7e0;border-radius:30px;background:white;padding:7px 13px;font-size:12px}.chip.active{background:#164a35;color:white;border-color:#164a35}.post-card{display:block;width:100%;overflow:hidden;text-align:left;padding:0;border:1px solid #e2ebe5;border-radius:21px;background:white;margin:16px 0;box-shadow:0 5px 18px #17392a05}.category-photo{width:100%;height:150px;object-fit:cover}.post-info{padding:16px}.eyebrow{font-size:10px;color:#049c53;letter-spacing:.5px}.post-info h3{font-size:19px}.owner{color:#819489;font-size:12px}.post-bottom{display:flex;justify-content:space-between;border-top:1px solid #edf2ee;padding:12px 0;color:#009b50}.detail-photo{width:100%;height:190px;object-fit:cover;border-radius:17px;margin:15px 0}.avatar{width:45px;height:45px;border-radius:50%;object-fit:cover;flex-shrink:0}.initials{display:grid;place-items:center;background:#e1f7e9;color:#009d60;font-weight:bold;font-size:20px;border:3px solid white;box-shadow:0 0 0 1px #dcece1}.profile-head{display:flex;align-items:center;gap:17px;padding:14px 0 22px}.profile-head .avatar{width:76px;height:76px;font-size:28px}.profile-head h1{font-size:21px;margin:0}.profile-head p{margin:3px 0}.person-row{padding:12px}.person-row b{font-size:13px}.compact-people{display:flex;gap:7px}.compact-people .person-row{min-width:0;flex:1;gap:7px;padding:10px;border-radius:12px}.compact-people .avatar{width:30px;height:30px;font-size:13px}.compact-people small{font-size:9px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.compact-people b{font-size:11px}.compact-people svg{display:none}.amount{font-size:27px}.step{border-radius:50%;background:#e4f8ec;width:34px;height:34px;display:grid;place-items:center;color:#059753}.pre{white-space:pre-wrap;overflow-wrap:anywhere}.file-link{display:flex;gap:8px;align-items:center;background:#f4faf7;border:1px solid #d9e9df;border-radius:9px;padding:10px;margin:10px 0;color:#14835b;font-size:12px}.file-link svg{width:18px}.logout{border-top:1px solid #e5ede7;margin-top:30px;padding-top:18px}.verify-symbol{width:95px;height:95px;display:grid;place-items:center;background:#e5faec;border-radius:50%;color:#08b564;margin:30px auto;animation:pulse 2s infinite}.verify-symbol svg{width:45px;height:45px}.pending-full{min-height:72dvh;display:flex;flex-direction:column;justify-content:center;text-align:center}.money-example{background:#e6fbd7;border-radius:22px;padding:23px}.money-example h2{font-size:35px;margin:7px 0}.money-steps{padding-left:25px}.money-steps li{padding:10px 0 10px 8px}.transaction{padding:16px 0;border-bottom:1px solid #e5eee8}.transaction strong{display:block;font-size:22px;margin:8px 0}.chat-item{border:0;border-bottom:1px solid #edf2ee;background:white;width:100%;display:flex;gap:14px;align-items:center;text-align:left;padding:17px 0}.chat-item .chat-info{flex:1;min-width:0}.chat-item p{margin:3px 0;font-size:12px;color:#89978f;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:270px}.chat-item b{font-size:14px}.chat-item time{font-size:10px;color:#8e9c94}.chat-unread{width:8px;height:8px;border-radius:50%;background:#07b85d}.room-header{position:sticky;top:76px;background:#fffffff5;z-index:5;padding-bottom:8px}.room-header .person-row{border:0;margin:0;padding:6px 0}.room-header .row{font-size:11px;padding:9px;margin:5px 0;background:#f3f7f4;border:0}.messages{display:flex;flex-direction:column;gap:12px;min-height:40dvh;padding:15px 0 90px}.message{max-width:84%;align-self:flex-start}.message.own{align-self:flex-end}.bubble{padding:12px 15px;border-radius:19px 19px 19px 5px;background:#f0f3f1;white-space:pre-wrap;overflow-wrap:anywhere;color:#28493a}.own .bubble{background:#dbf8e7;border-radius:19px 19px 5px 19px}.message small{font-size:9px;margin:3px 6px}.system{align-self:center;text-align:center;font-size:11px;color:#7b8c83;background:#f5f8f5;padding:12px;border-radius:12px}.composer{display:flex;gap:8px;position:fixed;bottom:75px;background:#fff;width:min(400px,calc(100% - 40px));padding:10px 0;z-index:6}.composer input{border-radius:25px;background:#f7faf8}.composer button{border:0;background:#12c96b;color:#063e25;border-radius:50%;width:43px;height:43px;flex-shrink:0;display:grid;place-items:center}.document-card h3{font-size:14px}.document-card .requirement{margin-bottom:7px}details{padding:15px 0}summary{cursor:pointer;color:#748b7d}.review-avatar{display:flex;align-items:center;gap:15px}.review-avatar .avatar{width:75px;height:75px}.review-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.review-stat{background:#ecf9f1;border:0;border-radius:16px;padding:20px;text-align:left}.review-stat b{display:block;font-size:28px}.contract-paper{border:1px solid #dfe5de;padding:20px;background:#fffdfa;font-size:12px}.contract-paper h2{text-align:center}.contract-paper .pre{line-height:2}.contract-paper .keyrow{display:block}.contract-paper .keyrow strong{display:block;text-align:left;max-width:none}dialog{width:min(410px,calc(100% - 28px));border:0;border-radius:21px;padding:22px;max-height:88dvh;color:#183f30;box-shadow:0 20px 80px #10291d44}dialog::backdrop{background:#12251d88;backdrop-filter:blur(3px)}.modal-title{display:flex;align-items:center;justify-content:space-between}.modal-title h2{margin:0 0 14px}.modal-title button{font-size:24px}.viewer{width:100%;height:60dvh;border:0;object-fit:contain}#toast{position:fixed;bottom:95px;left:50%;transform:translate(-50%,15px);width:max-content;max-width:90vw;padding:13px 20px;background:#173e30;color:white;border-radius:16px;box-shadow:0 5px 30px #0002;opacity:0;pointer-events:none;z-index:99;transition:.2s;font-size:13px}#toast.show{opacity:1;transform:translate(-50%,0)}@keyframes pulse{50%{box-shadow:0 0 0 18px #e6faec55;transform:scale(1.03)}}@media(prefers-reduced-motion:reduce){*{animation:none!important;scroll-behavior:auto!important;transition:none!important}}@media(min-width:600px){.shell{margin:25px auto;border-radius:27px;overflow:clip;min-height:calc(100dvh - 50px)}.topbar{top:0}.bottom-nav{border-radius:0 0 20px 20px}}@media print{.topbar,.bottom-nav,.back,.btn{display:none}.shell{max-width:none;box-shadow:none}.content{padding:0}.contract-paper{border:0}}
.person-row>.avatar{flex:0 0 auto}.brand-symbol{height:38px}.brand-symbol img{width:72px;left:-20px;top:-8px}.hero h1{font-size:24px;text-wrap:balance}body{font-family:"Leelawadee UI","Segoe UI",Tahoma,sans-serif}#category{margin-top:10px}
#review-toolbar{background:#e7f5ec;border-bottom:1px solid #c9e1d1;padding:12px 16px}.review-toolbar-inner{max-width:440px;margin:auto;display:grid;grid-template-columns:1fr 1fr;gap:8px;align-items:center}.review-toolbar-inner a,.review-toolbar-inner b{font-size:11px}.review-toolbar-inner select{font-size:12px;padding:9px;background:white}body:has(#review-toolbar) .shell{margin-top:0}body:has(#review-toolbar) .room-header{top:76px}
.email-verification{text-align:center;padding:8px 0}.email-verification .verify-symbol{margin:15px auto 27px}.email-verification h1{margin:18px 0 10px}.email-address{display:block;overflow-wrap:anywhere;font-size:16px;margin-bottom:18px}.email-verification label{text-align:left}.otp-code{text-align:center;font-size:30px;letter-spacing:.35em;font-weight:700;padding:15px 8px 15px 18px}.email-verification details{text-align:left}.email-verification #email-countdown{min-height:25px}.email-verification input:disabled{background:#f2f5f3}

/* Local revision: clean auth and bank-style ledger. */
500;600;700&family=Noto+Sans+Thai:wght@400;500;600;700&display=swap');
body{font-family:Inter,'Noto Sans Thai','Leelawadee UI',sans-serif;font-size:14px}h1,h2,h3,.btn{font-weight:700}.lang{border:1px solid #819087;border-radius:99px;padding:2px 13px;background:white;min-width:48px;font-size:11px;line-height:1.5}.balance-card{display:block;width:100%;padding:25px;text-align:left;background:#104c3c;color:white;border:0;border-radius:22px;margin:10px 0 20px}.balance-card h1{color:white;font-size:30px;margin:10px 0}.balance-card small{color:#c3e8d2}.bank-card{display:flex;align-items:center;gap:16px;padding:20px;border-radius:18px;background:#f0f8f3;margin:18px 0}.bank-card h2{letter-spacing:1px;margin:5px 0;overflow-wrap:anywhere}.bank-logo{width:48px;height:48px;object-fit:contain}.field-error,input:user-invalid,textarea:user-invalid{border:1.5px solid #d93042!important;background:#fff9fa!important}.field-error-text{color:#bc2635;font-size:12px}.auth-stage{text-align:center;padding:28px 0;min-height:650px}.auth-stage form{text-align:left;margin-top:28px}.auth-stage .verify-symbol{margin:0 auto 28px;background:#dbf9df;color:#45a865}.auth-stage .verify-symbol svg{width:42px;height:42px}.login-stage{min-height:690px;padding-top:16px;position:relative}.login-stage h1{color:#152820}.login-stage:after{content:'';display:block;height:100px;background:linear-gradient(160deg,#fff 25%,#d6fae6 26%,#b1eee5 65%,#8bd0ea);border-radius:60% 35% 0 0;margin:75px -22px -30px}.role-selection{text-align:center;padding:22px 0}.role-selection h1{font-size:22px;color:#102c21}.role-choice{width:100%;display:flex;align-items:center;gap:20px;text-align:left;margin:28px 0;padding:28px 20px;background:white;border:1px solid #edf0ed;border-radius:18px;box-shadow:0 4px 4px #163d3420}.role-art{width:72px;height:88px;flex-shrink:0;border-radius:50%;background:linear-gradient(135deg,#e8fae5,#d0eefe);display:grid;place-items:center}.role-art svg{width:44px;height:44px}.select-pill{display:block;text-align:center;border-radius:10px;background:#14c366;color:white;margin-top:13px;padding:4px 15px}.outline-pill{border-radius:99px}.code-boxes{display:flex;gap:7px;justify-content:center;margin:20px 0}.code-boxes input{width:calc((100% - 35px)/6);max-width:46px;height:53px;text-align:center;padding:0;font-size:23px;border-radius:10px}.attach-button{position:relative;width:34px;margin:0;font-size:25px;cursor:pointer;flex-shrink:0}.attach-button input{position:absolute;inset:0;width:34px;opacity:0;cursor:pointer}.composer{align-items:center}.bubble .file-link{color:inherit;background:#ffffffaa}.transaction{padding:15px 0;border-bottom:1px solid #e5ece6}.bank-card small{font-size:14px}

.qr-payment{text-align:center;padding:20px;border:1px solid #dce9df;border-radius:20px;margin:20px 0}.qr-payment>img{width:220px;max-width:100%;height:220px;object-fit:contain;margin:14px auto;display:block}.qr-payment>strong{display:block;font-size:25px;color:#067446}

.login-stage:after{margin-left:-20px;margin-right:-20px}.btn.primary{color:white}.role-choice h2{margin:0 0 6px}.field-error-text{flex-basis:100%}

#signaturePad{width:100%;height:170px;background:#fff;border:2px dashed #95bda9;border-radius:15px;touch-action:none}.saved-signature{width:100%;height:120px;object-fit:contain}.sample-slip{padding:25px;background:white;border:1px solid #d6e7df;border-radius:18px}.bank-mark{width:55px;height:55px;background:#086c51;color:white;border-radius:15px;display:grid;place-items:center;font-size:32px;font-weight:bold}

.email-verification{width:100%;min-width:0}.email-verification fieldset{border:0;margin:0;padding:0;min-width:0}.email-verification legend{font-weight:600;text-align:left}.email-verification button{position:static;max-width:100%}.email-verification .email-address{overflow-wrap:anywhere}#email-inline-status:empty{display:none}
/* Requested September review refinements */
.back{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px;min-width:42px;border:1px solid #dfe8e4;border-radius:13px;background:#fff;padding:8px 12px;color:#26322f;font-weight:600;box-shadow:0 2px 6px #163c2910;transition:background .15s,transform .15s}.back:hover{background:#eff8f3;transform:translateX(-2px)}.back svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2.2}.back span{font-size:12px}.signup-inline{display:flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap;font-size:12px;margin:18px 0}.signup-inline .text-link{display:inline;padding:0;margin:0;font-size:inherit;width:auto}.role-art{background:none!important}.role-art img{width:100%;height:100%;object-fit:contain}.role-choice{align-items:center;min-height:155px}.outline-pill{display:flex;align-items:center;justify-content:space-between;border:1px solid #66c96f!important;border-radius:999px!important;color:#19a95a;background:#fff;min-height:42px}.outline-pill svg{width:23px;height:23px}.hero{background:white!important;color:#143d34!important;border-radius:0!important;padding:8px 0 18px!important;box-shadow:none!important}.hero:after,.hero:before{display:none!important}.hero p{font-size:16px;font-weight:700;margin:8px 0 12px}.hero-actions{display:grid!important;grid-template-columns:1fr 1fr;gap:10px}.hero-actions .btn{font-size:12px;min-height:42px;padding:10px}.hero input{margin:0 0 10px;width:100%}.promo.slide-0{background:#8BC5F8!important;color:#174c70!important}.promo.slide-0 span,.promo.slide-0 p{color:#275e82!important}.promo-track{margin-bottom:22px}.balance-card{background:#8BC5F8!important;color:#16475e!important;border:0}.balance-card small,.balance-card p,.balance-card span{color:#245e77!important}.balance-card h1{color:#16475e!important}.post-card{border-radius:18px}.category-photo{height:185px!important;object-fit:cover}.notice-banner{position:fixed;z-index:1000;top:12px;left:50%;transform:translateX(-50%);max-width:420px;width:calc(100% - 28px);padding:15px 18px;background:#143d34;color:#fff;border:0;border-radius:14px;box-shadow:0 8px 25px #0003;text-align:left;font-size:13px;animation:notice-slide .2s ease-out}.contract-paper{font-family:'Noto Sans Thai',sans-serif;background:#fff;padding:30px 24px;border:1px solid #d3d9d6;color:#222}.contract-paper h2{text-align:center;font-size:21px;border-bottom:2px solid #204c3c;padding-bottom:16px;margin-bottom:24px}.contract-paper h3{font-size:16px;margin:24px 0 12px;color:#174a39}.contract-paper p{line-height:1.9;text-align:justify;overflow-wrap:anywhere}.contract-paper .contract-project{text-align:center;font-weight:600}.contract-paper .contract-ref{font-size:11px;color:#71827a}.contract-paper .clause{padding-left:14px;border-left:2px solid #e3eae6;margin:12px 0}.contract-paper table{border-collapse:collapse;width:100%;font-size:12px}.contract-paper th,.contract-paper td{border:1px solid #ccd8d1;padding:9px;text-align:left;vertical-align:top}.contract-paper th{background:#eef4f1}.signature-summary{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:24px}.signature-summary .saved-signature{height:75px;object-fit:contain}.chips{flex-wrap:wrap}@keyframes notice-slide{from{top:-70px}to{top:12px}}

.logout-confirm-actions{display:flex;gap:12px;margin-top:24px}.logout-confirm-actions .btn{flex:1}

.promo-track{scrollbar-width:none;scroll-snap-type:x mandatory;margin-bottom:2px}.promo-track::-webkit-scrollbar{display:none}.promo{scroll-snap-align:start}.promo-dots{display:flex;justify-content:center;gap:4px;margin:4px 0 18px}.promo-dots button{border:0;background:transparent;padding:12px;cursor:pointer}.promo-dots button::before{content:'';display:block;width:8px;height:8px;border-radius:50%;background:#d3ddd8}.promo-dots button[aria-current=true]::before{background:#0bc56b}.receipt-preview{display:block;width:100%;height:auto}.sample-slip{padding:0!important;overflow:hidden}.receipt-label{padding:10px;background:#fff5d9;color:#735308;text-align:center;font-size:12px}

/* Native, responsive announcement cards with real text and buttons. */
.announcement-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:18px 0 28px;font-family:'Noto Sans Thai',Tahoma,sans-serif}
.announcement-card{--announcement-accent:#075acb;--announcement-ink:#123a68;display:flex;flex-direction:column;align-items:flex-start;min-width:0;padding:clamp(22px,2.2vw,36px);border:1px solid #b6d9f7;border-radius:24px;background:linear-gradient(145deg,#e0f1ff,#b5dafb);color:var(--announcement-ink)}
.announcement-student{--announcement-accent:#08794b;--announcement-ink:#164a35;border-color:#bde6c8;background:linear-gradient(145deg,#e7f8e5,#cdf0d5)}
.announcement-together{--announcement-accent:#087cb1;--announcement-ink:#15465f;border-color:#bce4f3;background:linear-gradient(145deg,#e5f7ff,#cceef8)}
.announcement-label{display:inline-flex;align-items:center;gap:9px;max-width:100%;padding:9px 15px;border-radius:999px;background:var(--announcement-accent);color:#fff;font-size:.875rem;font-weight:600;line-height:1.7}
.announcement-label svg{width:20px;height:20px;flex-shrink:0}
.announcement-card h2{font-size:clamp(1.5rem,2.15vw,2.25rem);line-height:1.5;font-weight:700;letter-spacing:0;margin:22px 0 14px;overflow-wrap:anywhere}
.announcement-card>p{font-size:1rem;line-height:1.85;margin:0 0 22px;overflow-wrap:anywhere}
.announcement-features{display:grid;gap:14px;padding:0;margin:0 0 32px;list-style:none;width:100%;font-size:1rem;line-height:1.8}
.announcement-features li{display:flex;align-items:flex-start;gap:10px;min-width:0}.announcement-features li span{min-width:0;overflow-wrap:anywhere}
.announcement-features svg{width:22px;height:22px;margin-top:3px;padding:3px;border-radius:50%;background:var(--announcement-accent);color:#fff;stroke-width:2.5;flex-shrink:0}
.announcement-cta{display:inline-flex;align-items:center;justify-content:center;max-width:100%;min-height:48px;padding:12px 26px;margin-top:auto;border:2px solid transparent;border-radius:999px;background:var(--announcement-accent);color:#fff;font:inherit;font-size:1rem;font-weight:700;line-height:1.6;cursor:pointer;transition:filter .15s,box-shadow .15s}
.announcement-cta:hover{filter:brightness(.9);box-shadow:0 4px 14px #113a5a24}.announcement-cta:focus-visible{outline:3px solid #143d34;outline-offset:4px}
.announcement-card>.announcement-closing{margin:auto 0 0;padding-top:14px;border-top:1px solid #7ebbd066;font-size:.9375rem;font-weight:600;line-height:1.8;width:100%}
@media(max-width:1023px){.announcement-cards{position:relative;display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scrollbar-width:none;margin-bottom:10px}.announcement-cards::-webkit-scrollbar{display:none}.announcement-cards>.announcement-card{flex:0 0 100%;scroll-snap-align:start;scroll-snap-stop:always}.announcement-card{padding:24px}.announcement-card h2{font-size:1.75rem}.announcement-cta{width:100%}}
.project-results-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:20px}.project-results-grid .post-card{margin:0}.project-results-grid .empty{grid-column:1/-1}

.announcement-controls{display:none}
@media(max-width:1023px){.announcement-controls{display:flex;justify-content:center;align-items:center;gap:8px;margin:0 0 24px}.announcement-dot{display:grid;place-items:center;width:44px;height:44px;padding:0;border:0;border-radius:50%;background:transparent}.announcement-dot::before{content:'';width:8px;height:8px;border-radius:50%;background:#bbcfc5}.announcement-dot[aria-current="true"]::before{width:22px;border-radius:6px;background:#08794b}.announcement-toggle{min-height:44px;border:1px solid #d3e3da;border-radius:999px;background:white;padding:7px 14px;font-size:.875rem;color:#143d34}.announcement-controls button:focus-visible,.announcement-cards:focus-visible{outline:3px solid #08794b;outline-offset:2px}}
