@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+Thai:wght@400;500;600;700&display=swap');
:root{--ink:#12334b;--muted:#60788c;--blue:#165573;--line:#cddfe9;--paper:#f4f9fd;--danger:#a93250}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;color:var(--ink);background:radial-gradient(ellipse at 85% 10%,#e2effa,transparent 36%),#f3f8fc;font:16px/1.85 'Noto Sans Thai',sans-serif}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.55;cursor:wait}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}h1,h2,h3,p{margin:0}h1,h2,h3{line-height:1.6;overflow-wrap:anywhere}h1{font-size:clamp(2rem,4.5vw,3.7rem);font-weight:700}h2{font-size:clamp(1.5rem,2.8vw,2.4rem);font-weight:600}h3{font-size:1.25rem;font-weight:600}p{color:var(--muted)}em{font-style:normal;color:#287e9c}small{font-size:.8125rem;color:var(--muted)}code{font-size:.875rem;overflow-wrap:anywhere}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #69b5ce;outline-offset:3px}.wrap,.site-nav,.site-footer{width:min(1180px,calc(100% - 40px));margin-inline:auto}.site-nav{display:flex;align-items:center;justify-content:space-between;gap:25px;margin-top:18px;padding:16px 24px;border-radius:18px;background:#ffffffc7;backdrop-filter:blur(20px);box-shadow:0 10px 35px #163e5910;border:1px solid #fff}.brand{display:flex;gap:12px;align-items:center;font-size:1.15rem;font-weight:600;line-height:1.5}.brand>b{display:grid;place-items:center;background:#143e5a;color:#b9e6f0;width:44px;height:44px;border-radius:11px}.brand small{display:block;font-size:.75rem;font-weight:400;margin-top:4px}.site-nav nav{display:flex;gap:24px;font-size:.875rem;align-items:center;flex-wrap:wrap}.site-nav nav a:hover,.site-nav nav a[aria-current]{color:#2889a5}.site-nav form{margin:0}.link{border:0;background:none;color:#276a89;padding:0;font-size:.875rem}.button{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:48px;padding:10px 22px;border:1px solid transparent;border-radius:11px;font-size:.9375rem;font-weight:600;transition:transform .2s,background .2s}.button:hover{transform:translateY(-2px)}.primary{background:#15516f;color:#fff}.primary:hover{background:#0c3e59}.outlined{background:#ffffff87;border-color:#b6d0df;color:#315b75}.danger{background:var(--danger);color:#fff}.danger-text{color:var(--danger)!important}.actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:25px}.actions.right{justify-content:flex-end}.eyebrow{font-size:.875rem;color:#347994;letter-spacing:.035em;font-weight:500;display:block}.hero{display:grid;grid-template-columns:1.3fr .8fr;gap:75px;align-items:center;padding:70px 0}.hero h1{margin-top:25px}.hero p{margin-top:20px;font-size:1.0625rem;line-height:2}.hero-note{margin-top:36px;color:#3c7894;letter-spacing:.08em;font-size:.8125rem}.hero-note small{letter-spacing:0;line-height:2.5}.portrait-stage{margin:0;max-width:390px;transition:transform .3s ease-out}.portrait-stage>small{display:block;letter-spacing:.12em;margin-bottom:15px}.portrait{height:425px;border:8px solid #ffffffab;overflow:hidden;border-radius:200px 200px 18px 18px;background:#ddebf4;box-shadow:0 20px 55px #234b601a}.portrait img{height:100%;width:100%;object-fit:cover;object-position:center 35%;opacity:.72;filter:saturate(.7)}figcaption{display:flex;align-items:center;gap:24px;margin-top:20px}figcaption strong{font-size:1.65rem;font-weight:500}figcaption span{padding-left:22px;border-left:1px solid #bbd2df;font-size:.875rem;color:var(--muted);line-height:1.7}.directory{display:grid;grid-template-columns:repeat(3,1fr);border-block:1px solid var(--line)}.directory a{padding:24px;display:flex;gap:18px;align-items:center;font-weight:500}.directory a:first-child{padding-left:0}.directory a+a{border-left:1px solid var(--line)}.directory small{color:#7298ad}.section{padding-top:75px}.section-head{display:flex;justify-content:space-between;align-items:flex-end;gap:30px;margin-bottom:30px}.section-head h2{margin-top:8px}.section-head p{max-width:340px;font-size:.9375rem}.card-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.portfolio-card{border:1px solid #fff;border-radius:20px;overflow:hidden;background:#ffffffb8;backdrop-filter:blur(20px);box-shadow:0 16px 35px #244a660b;display:flex;flex-direction:column;transition:transform .25s,box-shadow .25s}.portfolio-card:hover{transform:translateY(-5px);box-shadow:0 22px 40px #244a6619}.card-top{background:linear-gradient(130deg,#dcebf5,#eaf5f8);padding:26px;min-height:150px;display:flex;flex-direction:column;justify-content:space-between;color:#3c7c98}.portfolio-card:nth-child(3n+2) .card-top{background:linear-gradient(130deg,#e3eaf7,#eef3fc)}.card-top span{font-size:.875rem}.card-top b{font-size:.75rem;font-weight:500;letter-spacing:.13em}.card-cover{width:100%;height:210px;object-fit:cover}.card-body{padding:25px;display:flex;flex:1;flex-direction:column}.metadata{font-size:.75rem;color:#6c8ba1;margin-bottom:12px}.card-body h3{margin-bottom:12px}.card-body p{font-size:.9375rem;line-height:1.9}.tags{display:flex;gap:7px;flex-wrap:wrap;margin-top:20px}.tags span{font-size:.75rem;background:#e8f3f8;padding:3px 9px;border-radius:6px;color:#497892}.card-actions{display:flex;gap:15px;justify-content:space-between;flex-wrap:wrap;border-top:1px solid #dceaf2;margin-top:22px;padding-top:17px;font-size:.8125rem;color:#297292}.card-actions button,.news-card button{background:none;border:0;color:#276f91;padding:0;font-weight:600;text-align:left}.empty{grid-column:1/-1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:12px;padding:35px;border:1px dashed #bfd5e3;border-radius:18px;background:#ffffff65;color:var(--muted)}.journey{display:grid;grid-template-columns:.8fr 1.2fr;gap:30px}.career-grid{grid-template-columns:1fr}.teacher-note{border-radius:22px;padding:35px;background:#143e5a;color:#fff}.teacher-note .eyebrow{color:#a8d5e2}.teacher-note h3{font-size:1.5rem;line-height:1.8;margin-top:25px}.teacher-note p{color:#c1d8e5;margin-block:22px;line-height:2}.teacher-note strong{font-size:1.55rem;color:#a8d5e2;font-weight:400}.news-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:20px}.news-card{padding:30px;border-radius:20px;border:1px solid #fff;background:#ffffffad;display:flex;flex-direction:column;align-items:flex-start}.news-card.featured{grid-row:span 2;background:linear-gradient(125deg,#f7fcff,#e2eff7);justify-content:center}.news-card time{font-size:.8125rem;color:#6f8fa5}.news-card h3{margin-block:17px 10px}.news-card.featured h3{font-size:1.65rem}.news-card p{font-size:.9375rem}.news-card button{margin-top:24px;font-size:.875rem}.archive{margin-top:22px;border:1px solid var(--line);border-radius:15px;overflow:hidden}.archive summary{padding:20px 25px;cursor:pointer;color:#326c8a}.archive button{display:flex;width:100%;border:0;border-top:1px solid var(--line);padding:18px 25px;gap:25px;text-align:left;background:#ffffffa1;color:var(--ink)}.archive time{font-size:.8125rem;color:var(--muted);white-space:nowrap}.closing{padding-block:65px}.closing h2{font-weight:500;line-height:1.9;font-size:1.8rem;margin-top:20px}.site-footer{display:flex;justify-content:space-between;gap:25px;padding-block:30px 40px;border-top:1px solid var(--line);font-size:.8125rem;color:var(--muted)}.setup-wrap{width:min(1080px,calc(100% - 40px));margin:50px auto 75px}.page-heading{margin-bottom:30px}.page-heading h1{font-size:2.35rem;margin-block:10px}.page-heading p{font-size:1rem}.setup-grid{display:grid;grid-template-columns:.75fr 1.4fr;gap:25px;align-items:start}.panel{padding:30px;border:1px solid #fff;border-radius:20px;background:#ffffffc7;box-shadow:0 13px 40px #21486509}.panel h2{font-size:1.3rem;margin-bottom:20px}.panel p+p{margin-top:13px}.panel hr,form hr{border:0;border-top:1px solid var(--line);margin-block:22px}.requirements p{font-size:.9375rem}.requirements b{display:inline-block;width:25px}.pass{color:#2d7c89!important}.fail,.error{color:#a73751!important}.panel a:not(.button){text-decoration:underline;color:#317796}.panel> a{display:block;margin-top:18px}.setup-form{display:flex;flex-direction:column;gap:18px}.setup-form h2{margin:0 0 4px}.setup-form hr{margin:4px 0}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:18px}label{display:flex;flex-direction:column;gap:8px;font-size:.9375rem;font-weight:500;min-width:0}label small{font-weight:400}input:not([type=checkbox]),textarea,select{width:100%;min-height:47px;padding:10px 12px;border:1px solid #c3d9e6;border-radius:9px;background:#fff;color:var(--ink);font-weight:400;font-size:1rem;line-height:1.7}textarea{resize:vertical}.checkbox-row{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:12px}.checkbox-row input{width:19px;height:19px;accent-color:#256c8e}.notice{padding:17px 20px;background:#eaf4fa;border:1px solid #c5deed;border-radius:12px;color:#557c96;font-size:.9375rem;line-height:1.9}.form-status{font-size:.9375rem;white-space:pre-wrap;color:#2f7b8e}.form-status:empty{display:none}.login-wrap{width:min(480px,calc(100% - 40px));margin:65px auto}.login-wrap h1{font-size:1.85rem;margin-block:15px}.login-wrap form{display:flex;flex-direction:column;gap:20px;margin-block:27px}.login-wrap>small{display:block}.heading-row{display:flex;justify-content:space-between;align-items:center;gap:20px}.admin-page{padding-block:45px 70px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-block:28px}.stats>div{display:flex;align-items:center;gap:22px;padding:20px 27px;border:1px solid #fff;background:#ffffffb8;border-radius:15px}.stats strong{font-size:2rem;font-weight:600;color:#2a7998}.stats span{font-size:.9375rem;color:var(--muted)}.admin-toolbar{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-block:25px}.tabs{display:flex;gap:5px;flex-wrap:wrap;background:#e3eef6;border-radius:13px;padding:5px}.tabs button{padding:11px 18px;font-size:.875rem;background:none;border:0;border-radius:9px;color:#50728b}.tabs button.active{background:#fff;color:#214e6a;box-shadow:0 4px 8px #1744610b}.admin-item{display:flex;gap:22px;align-items:center;margin-bottom:15px;padding:24px;border:1px solid #fff;border-radius:16px;background:#ffffffc7}.item-copy{flex:1;min-width:0}.item-copy h3{font-size:1.15rem}.item-copy p{font-size:.875rem;margin-top:8px}.item-actions{display:flex;gap:8px}.item-actions button{padding:8px 12px;border:1px solid #c4dce9;border-radius:8px;background:#f5fafd;color:#3d7592;font-size:.875rem}.badge{padding:3px 9px;border-radius:6px;margin-right:8px}.published{background:#e1f1f5;color:#307787}.draft{background:#e9edf7;color:#6876a1}.admin-help{font-size:.9375rem;margin-top:25px}.upload-row{display:grid;grid-template-columns:1fr 1fr;gap:20px}.upload-box{padding:20px;border:1px dashed #9ac1d6;border-radius:12px;background:#edf6fb;font-size:.9375rem}.upload-box input{font-size:.8125rem;padding:8px 0;border:0;min-height:auto;background:transparent}.upload-box span{font-size:.8125rem;font-weight:400;color:#447d9a;overflow-wrap:anywhere}.attachment-controls{display:flex;gap:20px}.attachment-controls button{color:#a64d64}dialog{position:fixed;inset:0;max-width:min(750px,calc(100% - 32px));max-height:90dvh;width:100%;margin:auto;border:1px solid #d2e4ee;border-radius:22px;padding:30px;background:#f8fcff;color:var(--ink);overflow:auto;box-shadow:0 35px 100px #173b5733}dialog::backdrop{background:#122f4955;backdrop-filter:blur(3px)}dialog h2{font-size:1.5rem;padding-right:20px;margin-bottom:12px}dialog form{display:flex;flex-direction:column;gap:18px;margin-top:22px}.dialog-close{position:absolute;right:15px;top:10px;border:0;background:none;font-size:1.7rem;color:#628198}.detail-cover{width:100%;max-height:360px;object-fit:cover;border-radius:13px;margin-block:20px}.detail-summary{font-weight:500;color:#3e6b86;margin-block:18px}.detail-body{white-space:pre-wrap;overflow-wrap:anywhere;line-height:2;color:#587990}#delete-dialog{max-width:min(490px,calc(100% - 32px))}.reveal{animation:reveal .7s both}@keyframes reveal{from{opacity:.4;transform:translateY(15px)}to{opacity:1;transform:none}}@supports(animation-timeline:view()){.reveal{animation:reveal linear both;animation-timeline:view();animation-range:entry 0% entry 25%}}
@media(max-width:900px){.hero{gap:35px}.portrait{height:360px}.hero h1{font-size:2.7rem}.site-nav{align-items:flex-start}.site-nav nav{gap:15px;justify-content:flex-end}.card-grid{grid-template-columns:repeat(2,1fr)}.career-grid{grid-template-columns:1fr}.section-head{align-items:flex-start;flex-direction:column;gap:12px}.setup-grid{grid-template-columns:1fr}.requirements{display:grid;grid-template-columns:1fr 1fr;gap:8px 20px}.requirements h2,.requirements hr,.requirements p:has(code),.requirements>a{grid-column:1/-1}.requirements p{margin:0!important}.journey{grid-template-columns:1fr}.stats>div{gap:15px}.admin-toolbar{align-items:flex-start;flex-direction:column}.admin-toolbar>.button{align-self:flex-end}}
@media(max-width:600px){.wrap,.site-nav,.site-footer,.setup-wrap{width:calc(100% - 28px)}.site-nav{padding:14px;gap:15px;flex-wrap:wrap}.site-nav nav{justify-content:flex-start;gap:13px;font-size:.8125rem}.hero{grid-template-columns:1fr;padding-block:40px;gap:40px}.hero h1{font-size:2.5rem}.hero p{font-size:1rem}.hero p br{display:none}.portrait-stage{width:310px;max-width:100%;margin:auto}.portrait{height:350px}.directory{grid-template-columns:1fr}.directory a,.directory a:first-child{padding:17px 0}.directory a+a{border-left:0;border-top:1px solid var(--line)}.section{padding-top:50px}.card-grid,.form-row,.upload-row,.news-grid{grid-template-columns:1fr}.news-card.featured{grid-row:auto}.teacher-note{padding:28px}.card-body{padding:23px}.closing h2{font-size:1.35rem}.site-footer{flex-wrap:wrap;gap:13px}.setup-wrap{margin-top:35px}.page-heading h1{font-size:1.9rem}.panel{padding:23px}.requirements{grid-template-columns:1fr}.requirements>*{grid-column:1!important}.stats{gap:10px}.stats>div{padding:15px;flex-direction:column;align-items:flex-start;gap:0}.stats strong{font-size:1.7rem}.stats span{font-size:.75rem}.admin-item{flex-wrap:wrap;padding:20px}.item-actions{margin-left:auto}.heading-row{flex-direction:column;align-items:flex-start}.heading-row h1{font-size:1.8rem}.tabs button{flex:1;font-size:.8125rem;padding:10px 12px}.admin-toolbar .tabs{width:100%}.archive button{flex-direction:column;gap:5px}dialog{padding:24px}.upload-box{padding:16px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}.portrait-stage{transform:none!important}}
