:root{--navy:#112b46;--blue:#0c749a;--aqua:#dff4f1;--paper:#f5f8fb;--ink:#142433;--muted:#647585;--line:#dbe4ea;--danger:#a92845;--success:#087d5f;--amber:#a66a06;font-family:"Noto Sans Thai","Tahoma",sans-serif;color:var(--ink);background:var(--paper)}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--paper);font-size:16px;line-height:1.5}a{color:var(--blue);text-decoration:none}h1,h2,p{margin-top:0}h1{font-size:1.8rem;line-height:1.2;margin-bottom:0}h2{font-size:1.1rem;margin-bottom:1rem}.sidebar{width:248px;background:var(--navy);color:#fff;position:fixed;inset:0 auto 0 0;display:flex;flex-direction:column;padding:28px 16px}.brand{font-size:1.08rem;font-weight:700;display:flex;gap:10px;align-items:center;padding:0 10px 30px}.brand span,.brand-mark{display:grid;place-items:center;background:#24a6a6;color:#fff;border-radius:12px;width:38px;height:38px;font-size:1.45rem}.brand small{font-weight:400;opacity:.72}.sidebar nav{display:grid;gap:5px}.sidebar nav a{color:#d5e3ee;padding:11px 12px;border-radius:8px}.sidebar nav a:hover{background:#25435d;color:#fff}.userbox{margin-top:auto;border-top:1px solid #36546e;padding:18px 10px 4px;display:grid;gap:4px}.userbox small{color:#aecaDD}.userbox a{font-size:.9rem;color:#8ed8d2;margin-top:8px}.app{margin-left:248px;padding:32px max(32px,5vw);max-width:1600px}.topbar{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:26px}.eyebrow{font-size:.78rem;text-transform:uppercase;letter-spacing:.09em;color:var(--blue);font-weight:700;margin-bottom:6px}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.metrics article,.panel,.project-summary{background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 4px 15px #18334a0a}.metrics article{padding:18px}.metrics small,.summary-money small{color:var(--muted);display:block}.metrics strong{font-size:1.55rem;display:inline-block;margin:5px 7px 0 0}.metrics .accent{background:var(--aqua);border-color:#b8e4dd}.grid{display:grid;gap:20px;margin-bottom:20px}.two{grid-template-columns:1.6fr 1fr}.split{grid-template-columns:1.4fr .9fr}.panel{padding:22px;overflow:auto}.panel-head,.filterbar{display:flex;justify-content:space-between;gap:18px;align-items:start}.panel-head h2,.filterbar h2{margin-bottom:0}.panel-head>a{font-size:.9rem}.empty{text-align:center;padding:40px 14px;color:var(--muted)}.empty strong{color:var(--ink);display:block;margin-bottom:3px}.button{display:inline-flex;align-items:center;justify-content:center;border:1px solid #b6c7d2;background:#fff;color:var(--ink);padding:9px 13px;border-radius:8px;font:inherit;font-weight:650;cursor:pointer}.button:hover{background:#eff5f7}.button.primary{background:var(--blue);border-color:var(--blue);color:white}.button.primary:hover{background:#095f80}.button.danger-btn{background:#fff0f3;border-color:#f4b7c4;color:var(--danger)}.wide{width:100%}.slim{padding:5px 9px;font-size:.85rem}.link{border:0;background:transparent;cursor:pointer;font:inherit;padding:0}.danger{color:var(--danger)}table{border-collapse:collapse;width:100%;font-size:.92rem}th,td{text-align:left;padding:11px 9px;border-bottom:1px solid var(--line);vertical-align:top}th{color:#496170;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;background:#f4f8fa}tfoot th{background:#edf5f6}.right{text-align:right}.badge{display:inline-block;padding:3px 8px;border-radius:999px;font-size:.78rem;font-weight:700;background:#eaf0f3;color:#405563}.badge.draft,.badge.rejected{background:#fff0e6;color:#a3570a}.badge.submitted,.badge.reviewing{background:#e6f3fc;color:#17638c}.badge.approved,.badge.closed{background:#e3f5ed;color:#087554}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.form-grid label,.side-actions label,.login-card label{display:grid;gap:6px;font-weight:650;font-size:.9rem}.form-grid .full{grid-column:1/-1}input,select,textarea{font:inherit;border:1px solid #b9c7d0;background:#fff;border-radius:7px;padding:9px 10px;color:var(--ink);width:100%}textarea{min-height:78px;resize:vertical}.note{background:#eff9f8}.note p{color:#45606c}.muted{color:var(--muted);font-weight:400}.warning{color:#875707;background:#fff7dd;padding:10px;border-radius:7px}.flash{padding:12px 15px;border-radius:8px;margin:0 0 18px}.flash.error{color:#8c2037;background:#ffedf1}.flash.success{color:#09634d;background:#e4f6ef}.project-summary{padding:25px;display:flex;gap:30px;justify-content:space-between;margin-bottom:20px}.project-summary h2{font-size:1.35rem;margin-bottom:8px}.project-summary p{max-width:760px;color:#4a5e6b}.summary-money{text-align:right;min-width:230px}.summary-money strong{font-size:1.7rem;display:block}.side-actions{display:grid;align-content:start;gap:12px}.side-actions h2{margin-bottom:0}.status-cards{display:flex;gap:12px;flex-wrap:wrap}.status-cards>div{padding:14px;border:1px solid var(--line);border-radius:8px;min-width:150px;display:grid;gap:7px}.status-cards strong{font-size:.95rem}.status-cards small{color:var(--muted)}.auth{min-height:100vh;display:grid;place-items:center;padding:28px;background:linear-gradient(135deg,#112b46 0%,#0c749a 100%)}.login-card{background:#fff;width:min(440px,100%);border-radius:16px;padding:34px;box-shadow:0 20px 50px #00142555}.login-card .brand-mark{margin-bottom:18px;width:46px;height:46px;font-size:1.7rem}.login-card h2,.login-card h1{font-size:1.45rem;margin-bottom:7px}.login-card p{color:var(--muted);margin-bottom:24px}.login-card form{display:grid;gap:15px}.login-card .button{margin-top:6px}.print{background:#e7edf1;padding:30px}.print-page{max-width:210mm;min-height:297mm;background:#fff;margin:auto;padding:18mm;box-shadow:0 6px 30px #20334833}.print-page h1{text-align:center;font-size:1.5rem;margin-bottom:28px}.print-page .signature{margin-top:55px;text-align:center}
@media(max-width:900px){.sidebar{position:static;width:auto;min-height:auto;display:block;padding:16px}.brand{padding-bottom:12px}.sidebar nav{grid-template-columns:repeat(3,1fr)}.userbox{display:none}.app{margin-left:0;padding:22px 16px}.metrics{grid-template-columns:repeat(2,1fr)}.two,.split{grid-template-columns:1fr}.project-summary{display:block}.summary-money{text-align:left;margin-top:20px}.topbar{align-items:start}.form-grid{grid-template-columns:1fr}.form-grid .full{grid-column:auto}}@media(max-width:540px){.sidebar nav{grid-template-columns:1fr}.metrics{grid-template-columns:1fr}.topbar{display:grid}.topbar .button{width:100%}.panel{padding:15px}.print{padding:0}.print-page{padding:12mm;min-height:100vh}.filterbar{display:grid}table{font-size:.84rem}th,td{padding:8px 6px}}
.inline-form{display:inline}
.workflow{margin-bottom:20px}.workflow ol{display:flex;list-style:none;margin:10px 0 0;padding:0}.workflow li{align-items:center;color:var(--muted);display:flex;flex:1;flex-direction:column;font-size:.84rem;font-weight:650;gap:7px;position:relative;text-align:center}.workflow li:not(:last-child)::after{background:var(--line);content:"";height:3px;left:50%;position:absolute;top:16px;width:100%;z-index:0}.workflow li span{align-items:center;background:#fff;border:2px solid var(--line);border-radius:50%;display:flex;height:34px;justify-content:center;position:relative;width:34px;z-index:1}.workflow li.done,.workflow li.active{color:var(--blue)}.workflow li.done span{background:var(--success);border-color:var(--success);color:#fff}.workflow li.active span{background:var(--blue);border-color:var(--blue);color:#fff}.workflow li.done:not(:last-child)::after{background:var(--success)}.workflow-note{background:#fff5e8;border-radius:7px;color:#8b5708;margin:18px 0 0;padding:10px 12px}.workflow .panel-head{margin-bottom:3px}@media(max-width:640px){.workflow ol{align-items:stretch;flex-direction:column;gap:10px}.workflow li{align-items:center;flex-direction:row;justify-content:flex-start;text-align:left}.workflow li:not(:last-child)::after{height:18px;left:16px;top:33px;width:3px}.workflow li strong{padding-left:5px}}
