:root{color-scheme:light dark;--g:#5A826A;--gd:#4A6E58;--ink:#0F2A33;--mut:#4A606A;--bg:#F2F5F2;--card:#fff;--ln:#B8C7CC;--off:#E3E9E5;--err:#B42318;--tagbg:#DDE9E1;--tagfg:#2F4F3C}
@media (prefers-color-scheme:dark){:root{--ink:#E8EEEA;--mut:#A3B3AA;--bg:#111815;--card:#1B2520;--ln:#3A4A42;--off:#2A3530;--err:#F97066;--tagbg:#2A3D32;--tagfg:#CFE3D6}}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:300 15px/1.5 'Montserrat','Noto Sans Thai',sans-serif}
main{max-width:480px;margin:0 auto;padding:calc(16px + env(safe-area-inset-top,0px)) 20px calc(130px + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;gap:16px}
main.wide{max-width:980px}
img.logo{width:130px;height:auto;align-self:flex-start}
h1{margin:0;font-size:24px;font-weight:500;line-height:1.3}h2{margin:0;font-size:14px;font-weight:500}
.mut{color:var(--mut);font-size:13px}.err{color:var(--err)}
.card{background:var(--card);border-radius:16px;padding:16px;display:flex;flex-direction:column;gap:12px}
button,a.btn{font:500 15px 'Montserrat','Noto Sans Thai',sans-serif;min-height:48px;border:0;border-radius:12px;padding:0 22px;cursor:pointer;background:var(--gd);color:#fff;display:inline-flex;align-items:center;justify-content:center;text-decoration:none}
button:disabled{background:var(--off);color:#5B6E76;cursor:not-allowed}
.ghost{background:transparent!important;color:var(--ink)!important;border:1px solid #7A8E96!important}
.row{display:flex;gap:8px;align-items:center}.grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.chip{min-height:56px;padding:6px;background:var(--card);color:var(--ink);border:1px solid var(--ln);font-weight:300;flex-direction:column}
.chip.sel{background:var(--gd);color:#fff;border-color:var(--gd);font-weight:500}.chip small{font-size:12px}.chip:disabled{text-decoration:line-through}
.day{flex:1;min-width:0;padding:0;font-size:12px}.day b{font-size:17px;font-weight:500}.day small{font-size:11px}
.bar{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:480px;background:var(--card);padding:12px 20px calc(12px + env(safe-area-inset-bottom));display:flex;justify-content:space-between;align-items:center;gap:12px;box-shadow:0 -1px 0 var(--off)}
label{font-size:14px;font-weight:500;display:flex;flex-direction:column;gap:6px}
input,select{background:var(--card);color:var(--ink);font:300 16px 'Montserrat','Noto Sans Thai',sans-serif;min-height:48px;border:1px solid var(--ln);border-radius:10px;padding:0 12px;width:100%}
.kv{display:flex;justify-content:space-between;gap:12px;font-size:14px}.kv span:first-child{color:var(--mut)}
table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:10px;border-top:1px solid var(--off);font-size:14px}th{font-size:12px;color:var(--mut);border:0}
.tag{padding:3px 10px;border-radius:12px;font-size:12px;font-weight:500;background:var(--tagbg);color:var(--tagfg)}.tag.in{background:var(--gd);color:#fff}.tag.x{background:var(--off);color:var(--mut)}
td button{min-height:36px;padding:0 12px;font-size:13px}

main{padding-top:20px}
.danger{color:var(--err)!important;border-color:var(--err)!important}.sub{margin:0}.step{min-height:40px!important;padding:0 16px!important}
