@font-face{font-family:NotoThai;src:url(noto-sans-thai-thai-wght-normal.woff2) format('woff2');font-weight:100 900;font-display:swap;unicode-range:U+0E00-0E7F}
@font-face{font-family:NotoThai;src:url(noto-sans-thai-latin-wght-normal.woff2) format('woff2');font-weight:100 900;font-display:swap}
:root{--ink:#233a4b;--muted:#7b8995;--navy:#203745;--teal:#245e60;--gold:#cda86b;--line:#e0e6e7;--paper:#f5f6f3;--white:#fff;--red:#b75f67;--radius:19px}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:14px/1.7 NotoThai,system-ui,sans-serif}a{color:var(--teal);text-decoration:none}a:hover{color:#163f42}button,input,select,textarea{font:inherit}button,a,input,select,textarea{touch-action:manipulation}button{cursor:pointer}svg{width:22px;height:22px;flex-shrink:0;vertical-align:middle}h1,h2,h3,p{margin-top:0}h1{font-size:30px;letter-spacing:-.6px;line-height:1.5;margin-bottom:8px}h2{font-size:21px;line-height:1.5;margin-bottom:18px}h3{font-size:16px;margin-bottom:8px}p{margin-bottom:16px}small{font-size:12px}.muted{color:var(--muted)}.teal-text{color:var(--teal)!important}.danger-text{color:var(--red)!important}.amber-text{color:#a67d36!important}.strong{font-weight:700}.preline{white-space:pre-wrap;overflow-wrap:anywhere}.eyebrow{font-size:10px;letter-spacing:2.1px;font-weight:700;color:var(--muted);display:block;margin-bottom:13px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:44px;padding:11px 20px;border:1px solid transparent;border-radius:10px;background:var(--teal);color:#fff;font-weight:600;font-size:13px;transition:background .15s}.btn:hover{background:#194b4d;color:#fff}.btn.light{background:#fff;border-color:var(--line);color:var(--ink)}.btn.light:hover{background:#f2f6f5}.btn.cream{background:#f9f4e8;color:var(--ink)}.btn:disabled{opacity:.6;cursor:wait}.actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.actions a:not(.btn){font-size:12px}.link{font-weight:600}.brand{display:flex;gap:12px;align-items:center;font-size:19px;font-weight:750;letter-spacing:-.4px;color:#fff}.brand:hover{color:#fff}.brand small{display:block;font-size:8px;letter-spacing:1.9px;font-weight:500;margin-top:4px;color:#b8cbd0}.brand-mark{width:43px;height:43px;display:grid;place-items:center;background:#c8dedd;color:#24565c;border-radius:13px;flex-shrink:0}.brand-mark svg{width:25px;height:25px}.brand.dark{color:var(--ink);margin-bottom:28px}.sidebar{position:fixed;width:266px;left:0;top:0;bottom:0;background:var(--navy);padding:30px 19px 20px;display:flex;flex-direction:column;z-index:30;color:#dbe5e7}.sidebar .brand{padding:0 6px}.school-name{font-size:11px;color:#9eb6bf;padding:16px 8px 27px;overflow-wrap:anywhere}.nav-caption{font-size:9px;color:#8da8b5;letter-spacing:2px;padding:0 13px;margin:14px 0 18px}.sidebar nav{overflow-y:auto;flex:1}.sidebar nav>a{display:flex;gap:15px;align-items:center;padding:15px 17px;margin-bottom:7px;border-radius:11px;color:#b7c9cf;font-size:13px}.sidebar nav>a svg{width:19px;height:19px}.sidebar nav>a:hover{background:#2a4552;color:#fff}.sidebar nav>a.active{background:#dceae7;color:#234e53;font-weight:700}.sidebar-user{border-top:1px solid #49606a;margin-top:22px;padding-top:20px;display:flex;gap:8px;align-items:center}.sidebar-user>a{display:flex;gap:10px;align-items:center;color:#fff;font-size:12px;min-width:0;flex:1}.sidebar-user small{display:block;color:#9ab3be;font-size:10px}.avatar{width:34px;height:34px;background:#3c5662;display:grid;place-items:center;border-radius:50%;flex-shrink:0}.logout{border:0;background:none;color:#b5c9d0;padding:5px}.logout svg{width:17px}.workspace{margin-left:266px;min-width:0}.topbar{height:66px;border-bottom:1px solid var(--line);background:#fcfdfa;display:flex;align-items:center;justify-content:space-between;padding:0 36px;font-size:11px;color:var(--muted)}.icon-button{display:none;background:none;border:0;color:var(--ink);padding:8px}.content{max-width:1620px;margin:0 auto;padding:31px 36px 10px}.page-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:26px;gap:16px}.page-title p{color:var(--muted);font-size:13px;margin:0}.page-title .eyebrow{margin-bottom:8px}.today{color:var(--muted);font-size:11px;white-space:nowrap}.panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:26px;margin-bottom:24px;min-width:0}.panel.narrow{max-width:660px}.section-title{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:20px}.section-title h2{margin-bottom:0}.section-title p{margin:5px 0 0}.section-title>a:not(.btn){font-size:12px;white-space:nowrap}.hero{background:linear-gradient(112deg,#223d4b,#2d5b62);border-radius:23px;padding:34px 40px;display:grid;grid-template-columns:1fr 255px;gap:36px;color:#fff;margin-bottom:24px;overflow:hidden;position:relative}.hero .eyebrow{color:#b5d5d7;font-size:9px}.hero h2{font-size:30px;line-height:1.65;font-weight:650;letter-spacing:-.5px;margin-bottom:10px}.hero h2>span{color:#e3b473}.hero p{color:#b3cbd0;font-size:12px;margin-bottom:23px}.hero-progress{border-left:1px solid #62818a;padding-left:38px;align-self:center;display:flex;flex-direction:column;gap:5px;color:#bed4d7;font-size:11px}.hero-progress strong{font-size:69px;line-height:1.45;color:#fff;font-weight:500}.hero-progress strong small{font-size:26px;padding-left:6px;color:#e0bb80}.progress-track{height:5px;background:#466d73;border-radius:10px;overflow:hidden;margin:9px 0}.progress-track i{height:100%;background:#dbb478;display:block;border-radius:10px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:24px}.stat{border:1px solid var(--line);border-radius:17px;background:#fff;padding:21px 23px;color:var(--ink);min-width:0}.stat>span{display:flex;align-items:center;justify-content:space-between;font-size:12px;gap:10px}.stat svg{color:#91a6ae;width:19px;height:19px}.stat>strong{display:block;font-size:37px;font-weight:650;margin:7px 0 1px}.stat>small{font-size:10px;color:var(--muted)}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:24px}.dashboard-bottom{grid-template-columns:1.15fr 1fr}.deadline-row{display:flex;align-items:center;gap:16px;padding:17px 0;border-bottom:1px solid var(--line);color:var(--ink)}.deadline-row:last-child{border-bottom:0;padding-bottom:0}.deadline-row>svg{margin-left:auto;width:18px;color:#8da3ab}.deadline-row strong{font-size:13px}.deadline-row small{display:block;color:var(--muted);font-size:11px}.date-square{background:#eff4f1;border-radius:11px;min-width:51px;height:56px;text-align:center;padding:6px;color:var(--teal);font-size:21px;font-weight:650;line-height:1.2}.date-square small{font-weight:400;font-size:10px;margin-top:3px}.workflow-card{background:#fdfcf7}.workflow-step{display:flex;gap:17px;align-items:center;margin:21px 0}.workflow-step:last-child{margin-bottom:0}.workflow-step>b{color:#b69a67;font-size:20px;font-weight:500}.workflow-step strong{font-size:13px}.workflow-step small{display:block;color:var(--muted);font-size:11px;margin-top:3px}.table-wrap{overflow-x:auto;max-width:100%}table{width:100%;border-collapse:collapse;text-align:left;font-size:12px}th{background:#f2f5f2;color:#778b8b;font-weight:500;font-size:11px;padding:14px 12px;white-space:nowrap}td{padding:18px 12px;border-bottom:1px solid var(--line);vertical-align:middle}td:first-child{min-width:195px}td small{display:block;color:var(--muted);font-size:10px;margin-top:6px}td p{margin:5px 0}tr:last-child td{border-bottom:0}.arrow-link{display:grid;place-items:center;width:32px;height:32px;border-radius:9px;border:1px solid var(--line)}.arrow-link svg{width:16px}.badge{display:inline-block;font-size:10px;white-space:nowrap;border-radius:7px;padding:5px 9px;background:#edf0f3;color:#72808d}.badge.approved,.badge.final,.badge.open{background:#e5f1ea;color:#347361}.badge.pending_head{background:#fbf1dc;color:#a67e32}.badge.pending_academic{background:#e9eef9;color:#5274a2}.badge.revision{background:#f9e9eb;color:#b0616b}.badge.closed{background:#eae8f1;color:#7a7397}.count-pill{border:1px solid var(--line);padding:2px 9px;border-radius:7px;font-size:12px}.field{display:block;min-width:0;margin-bottom:18px}.field>span{display:block;font-size:12px;font-weight:600;margin-bottom:8px}input:not([type=checkbox]),select,textarea{display:block;width:100%;border:1px solid #d7dfdd;border-radius:9px;background:#fff;color:var(--ink);padding:11px 13px;min-height:45px;outline:none}input:focus,select:focus,textarea:focus{border-color:#668f8e;box-shadow:0 0 0 3px #e7f0ed}input[readonly]{background:#f3f5f4}input[type=file]{font-size:12px;background:#fafbf9}input[type=checkbox]{accent-color:var(--teal);width:17px;height:17px;flex-shrink:0}textarea{resize:vertical}::placeholder{color:#a1acae}.form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 18px}.form-grid .field{margin-bottom:18px}.filter-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 18px}.filter-grid .actions{align-self:end;margin-bottom:18px}.check-line{display:flex;gap:9px;align-items:center;font-size:12px;margin:9px 0 18px}.notice{background:#f8f3e6;border:1px solid #eee1c1;border-radius:11px;padding:14px 17px;color:#866e42;font-size:12px;margin:20px 0}.empty{padding:33px 15px;text-align:center;color:var(--muted)}.empty svg{width:37px;height:37px;color:#9eafb1;margin-bottom:13px}.empty h3{font-size:15px;color:#73888b;font-weight:500}.empty p{font-size:12px;margin:0}.meta-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;margin:24px 0}.meta-grid small{display:block;color:var(--muted);font-size:11px;margin-bottom:6px}.meta-grid strong{font-weight:550;font-size:13px;overflow-wrap:anywhere}.review-panel{border-color:#bdd2cd;background:#f9fcfa}.list-row{display:flex;justify-content:space-between;align-items:center;gap:16px;border-bottom:1px solid var(--line);padding:18px 0;color:var(--ink);font-size:13px}.list-row:last-child{border-bottom:0}.list-row small{display:block;font-size:11px;color:var(--muted);margin-top:5px}.version-row{display:flex;justify-content:space-between;gap:15px;align-items:center;padding:16px 0;border-bottom:1px solid var(--line);font-size:12px}.version-row:last-child{border-bottom:0}.version-row small{display:block;color:var(--muted);font-size:10px}.timeline{padding-left:13px}.timeline-item{position:relative;border-left:1px solid #dce5e4;padding:0 0 22px 20px;font-size:12px}.timeline-item:before{content:'';position:absolute;width:8px;height:8px;left:-5px;top:7px;border:2px solid #fff;background:#769a95;border-radius:50%;box-shadow:0 0 0 2px #dce5e4}.timeline-item:last-child{padding-bottom:0}.timeline-item small{display:block;color:var(--muted);font-size:10px;margin:4px 0 10px}.timeline-item p{background:#f5f7f4;padding:10px 12px;border-radius:8px;margin:0;font-size:12px}.card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.round-card{display:block;color:var(--ink);margin:0}.round-card .eyebrow{margin:0}.round-card h2{font-size:20px}.round-date{font-size:12px;color:var(--muted);display:flex;gap:9px;align-items:center;border-top:1px solid var(--line);padding-top:17px;margin-top:20px;margin-bottom:20px}.round-date svg{width:17px}.clamp{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;font-size:12px}.check-list{display:grid;grid-template-columns:1fr 1fr;gap:12px;max-height:450px;overflow:auto;margin:15px 0 23px}.check-item{display:flex;gap:12px;align-items:center;border:1px solid var(--line);border-radius:10px;padding:13px;font-size:12px}.check-item small{display:block;color:var(--muted);font-size:10px}.check-item:has(input:checked){background:#f0f6f2;border-color:#93b2a7}.tabs{display:flex;gap:8px;overflow:auto;margin-bottom:24px;white-space:nowrap}.tabs a{padding:11px 17px;border-radius:10px;color:var(--muted);font-size:12px}.tabs a.active{color:var(--teal);background:#e1ebe5;font-weight:650}.setup-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:19px;margin:24px 0}.setup-item{background:#f5f7f3;border-radius:12px;padding:21px}.setup-item b{font-size:24px;color:#a98e5e;font-weight:500}.setup-item h3{margin-top:14px;font-size:14px}.setup-item p{font-size:12px;color:var(--muted);margin:0}.history{padding:17px 0;border-bottom:1px solid var(--line)}.history:last-child{border-bottom:0}summary{cursor:pointer;font-size:14px;font-weight:600;line-height:1.8}summary small{display:block;font-size:11px;color:var(--muted);font-weight:400;margin-top:4px}details[open]>summary{margin-bottom:20px}.inline-form{display:flex;align-items:flex-end;gap:16px}.inline-form .field{margin:0;flex:1}.pagination{display:flex;justify-content:center;align-items:center;gap:17px;margin-top:24px;font-size:12px}footer{text-align:center;padding:24px;color:#94a19e;font-size:10px}.install-page{padding:40px 20px}.install-page>.panel{margin:0 auto}.login-wrap{max-width:1200px;min-height:680px;display:grid;grid-template-columns:1fr 1fr;margin:7vh auto;background:#fff;border-radius:28px;overflow:hidden;box-shadow:0 25px 70px #263f4e0b}.login-story{background:linear-gradient(145deg,#233b4b,#2a5358);color:#fff;padding:47px;display:flex;flex-direction:column;justify-content:space-between;min-height:680px}.login-story .eyebrow{font-size:9px;color:#dcc192}.login-message{margin:58px 0 42px}.login-message h1{font-size:46px;line-height:1.65;font-weight:650;letter-spacing:-1px;margin-bottom:22px}.login-message h1 span{color:#e1b57f}.login-message p{font-size:13px;color:#b5cbd0;line-height:2}.login-steps{display:flex;gap:25px;margin-top:35px}.login-steps>span{font-size:24px;color:#d0b382;font-weight:500}.login-steps small{font-size:11px;display:block;color:#c8d9dc}.brand-foot{font-size:8px;letter-spacing:3px;color:#8cabb5}.login-form{display:flex;flex-direction:column;justify-content:center;padding:55px}.login-form>.eyebrow{color:#a68a58}.login-form h2{font-size:26px;margin-bottom:14px}.login-form>.muted{font-size:12px;margin-bottom:35px}.login-form form .btn{width:100%;margin-top:10px}.login-note{font-size:11px;color:var(--muted);margin-top:31px;margin-bottom:0;line-height:2}.print-toolbar{max-width:1000px;margin:24px auto;text-align:center}.print-page{max-width:1050px;background:#fff;padding:45px;margin:24px auto}.print-heading{display:flex;justify-content:space-between;border-bottom:2px solid #d5e0dd;padding-bottom:20px;margin-bottom:26px}.print-heading small{color:var(--muted)}.print-page h1{font-size:24px}.print-page h2{font-size:19px}.print-page p{font-size:13px}.signature{text-align:center;line-height:2.4;margin:45px 0 10px}.print-page footer{margin-top:30px;border-top:1px solid var(--line)}
@media(min-width:1600px){.hero{padding:43px}.hero h2{font-size:35px}.panel{padding:30px}.stat{padding:24px 27px}}
@media(max-width:1150px){.sidebar{width:230px;padding-left:13px;padding-right:13px}.brand{font-size:17px}.brand-mark{width:37px;height:37px}.brand small{font-size:7px}.workspace{margin-left:230px}.content{padding:25px}.topbar{padding:0 25px}.hero{padding:28px;grid-template-columns:1fr 180px;gap:20px}.hero h2{font-size:25px}.hero-progress{padding-left:25px}.hero-progress strong{font-size:58px}.stat{padding:18px 15px}.stat>span{font-size:11px}.two-col{gap:18px}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.setup-grid{grid-template-columns:1fr 1fr}.login-wrap{margin:30px}.login-story{padding:36px}.login-form{padding:36px}.login-message h1{font-size:38px}}
@media(max-width:900px){.sidebar{transform:translateX(-100%);transition:transform .2s;width:266px;box-shadow:15px 0 45px #233a4b22}.menu-open .sidebar{transform:translateX(0)}.workspace{margin-left:0}.icon-button{display:block}.topbar{position:sticky;top:0;z-index:25;background:#fafcf9;gap:12px;height:58px}.topbar>span{margin-right:auto;font-size:10px}.topbar>a{font-size:10px}.two-col{grid-template-columns:1fr 1fr}.brand{font-size:19px}.brand small{font-size:8px}.brand-mark{width:43px;height:43px}.login-wrap{min-height:0}.login-story{min-height:600px}.login-message h1{font-size:33px}.login-form h2{font-size:23px}}
@media(max-width:620px){body{font-size:13px}.content{padding:22px 15px 0}.topbar{padding:0 13px}.topbar>span{max-width:220px;line-height:1.5}.page-title{margin-bottom:21px;align-items:flex-start}.page-title .eyebrow{font-size:8px;letter-spacing:1.6px}h1{font-size:24px}h2{font-size:18px}.page-title p{font-size:11px}.today{display:none}.hero{grid-template-columns:1fr;padding:26px;gap:22px;border-radius:20px}.hero h2{font-size:25px}.hero p{font-size:11px}.hero .eyebrow{font-size:8px;letter-spacing:1.4px}.hero-progress{border-left:0;border-top:1px solid #52727b;padding:17px 0 0;display:grid;grid-template-columns:1fr auto;align-items:center;gap:3px}.hero-progress strong{grid-column:2;grid-row:1/4;font-size:45px;margin-left:15px}.hero-progress strong small{font-size:20px}.progress-track{margin:7px 0;width:100%}.hero-progress>span{font-size:10px}.stats{grid-template-columns:1fr 1fr;gap:12px;margin-bottom:18px}.stat{padding:17px}.stat>strong{font-size:32px;margin:6px 0 0}.stat>small{font-size:9px}.stat>span{font-size:10px}.stat svg{width:16px}.two-col,.card-grid{grid-template-columns:1fr;gap:0}.card-grid{gap:16px}.panel{padding:21px 18px;margin-bottom:18px;border-radius:16px}.round-card{margin-bottom:0}.section-title{flex-wrap:wrap;gap:12px;margin-bottom:17px}.section-title h2{font-size:18px}.section-title>.actions{width:100%}.section-title .btn{font-size:11px;padding:9px 12px;min-height:40px}.filter-grid,.form-grid{grid-template-columns:1fr}.filter-grid .actions{margin-bottom:0}.filter-grid .check-line{margin-top:0}.meta-grid{grid-template-columns:1fr 1fr;gap:19px}.meta-grid strong{font-size:12px}.meta-grid small{font-size:10px}.check-list{grid-template-columns:1fr}.list-row{flex-wrap:wrap;font-size:12px}.setup-grid{gap:12px}.setup-item{padding:16px}.setup-item h3{font-size:12px}.setup-item p{font-size:11px}.inline-form{align-items:stretch;flex-direction:column}.tabs a{padding:10px 12px}.actions .btn{flex:1;white-space:nowrap;font-size:12px}.login-wrap{display:block;margin:18px;border-radius:22px}.login-story{padding:27px;min-height:0}.login-story .brand{font-size:17px}.login-message{margin:32px 0 10px}.login-message h1{font-size:31px;line-height:1.6;margin-bottom:16px}.login-message h1 br:nth-child(2){display:none}.login-message p{font-size:11px;margin-bottom:4px}.login-steps,.brand-foot{display:none}.login-form{padding:31px 26px}.login-form h2{font-size:22px}.login-form>.muted{font-size:11px;margin-bottom:25px}.login-note{margin-top:23px}.install-page{padding:20px 12px}.install-page h1{font-size:22px}.print-page{margin:10px;padding:22px}.print-page .meta-grid{grid-template-columns:1fr}.version-row{flex-wrap:wrap}summary{font-size:13px}td{padding:14px 10px}.table-wrap table{min-width:760px}footer{font-size:9px;padding:20px 12px}}
@media(max-width:620px){.table-wrap:before{content:'เลื่อนตารางซ้าย–ขวาเพื่อดูข้อมูลเพิ่มเติม →';display:block;position:sticky;left:0;font-size:10px;color:var(--muted);padding-bottom:10px}}
@media print{@page{size:A4;margin:14mm}body{background:#fff;color:#172c39;font-size:11px}.print-toolbar{display:none}.print-page{max-width:none;margin:0;padding:0}.print-page .meta-grid{grid-template-columns:repeat(3,1fr)}.print-page table{min-width:0;font-size:9px;table-layout:fixed}.print-page td:first-child{min-width:0}.print-page td,.print-page th{padding:8px 5px;font-size:9px;overflow-wrap:anywhere;white-space:normal}.print-page .table-wrap{overflow:visible}.print-page .table-wrap:before{display:none}.print-page .badge{font-size:8px;padding:3px}.print-page .arrow-link{display:none}.print-page .table-wrap th:last-child,.print-page .table-wrap td:last-child{display:none}.print-page p{font-size:11px}.print-page h1{font-size:21px}.print-page h2{font-size:17px}.print-heading{break-after:avoid}tr,.meta-grid,.signature{break-inside:avoid}h1,h2,h3{break-after:avoid}a{color:inherit}thead{display:table-header-group}.preline{orphans:3;widows:3}footer{font-size:8px}.badge{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
