:root{--brand-teak:#6e4b2e;--brand-teak-deep:#573a22;--brand-gold:#8a6c26;--brand-sage:#40603c;--brand-sand:#fcf9f4;--brand-ink:#2a2520;--app-paper:var(--brand-sand);--app-ink:var(--brand-ink);--app-ink-mid:#4a443c;--app-ink-soft:#56504a;--app-ink-faint:#585249;--app-line:#e8e2d8;--app-line-strong:#d5cec2;--app-line-row:#ded7cb;--app-primary:var(--brand-teak);--app-primary-deep:var(--brand-teak-deep);--app-primary-wash:#f4ebe0;--app-primary-soft:#66432c;--app-primary-tint:#f7f1e8;--app-gold:var(--brand-gold);--app-ok:var(--brand-sage);--app-ok-wash:#e7eee2;--app-ok-ink:#2f5228;--app-ok-dot:#40603c;--app-ok-memo:#ecf1e6;--app-danger:#96322b;--app-disabled:#d9d3c8;--app-disabled-ink:#4a443c;--app-muted:#8b857a;--app-panel:#f4f0e8;--app-hairline:#efeae1;--s:20px;--sans:"Noto Sans Thai","IBM Plex Sans Thai","Sarabun","Leelawadee UI",Thonburi,-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;--mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;color-scheme:light}:root[data-scale="2"]{--s:23px}:root[data-scale="3"]{--s:26px}*{box-sizing:border-box}body,html{overflow-x:clip}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--app-paper);color:var(--app-ink);font-family:var(--sans);font-size:var(--s);line-height:1.6;-webkit-font-smoothing:antialiased}.app{display:flex;flex-direction:column;min-height:100dvh;max-width:480px;margin:0 auto}.appbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:max(12px,env(safe-area-inset-top)) 20px 12px;border-bottom:1px solid var(--app-line)}.wordmark i{display:block;font-family:Georgia,Iowan Old Style,Times New Roman,serif;font-style:italic;font-size:20px;line-height:1.1;color:var(--app-gold)}.wordmark small{display:block;font-size:11px;letter-spacing:.1em;color:var(--app-ink-faint);margin-top:2px}.scale-group{display:flex;gap:6px;flex:none}.scale-group button{font-family:var(--sans);border:1px solid var(--app-line-strong);background:var(--app-paper);color:var(--app-ink);border-radius:8px;width:36px;height:34px;font-size:13px;line-height:1;cursor:pointer}.scale-group button[aria-pressed=true]{background:var(--app-primary);border-color:var(--app-primary);color:var(--app-paper)}.body{flex:1 1;padding:20px 20px 8px}.foot{position:-webkit-sticky;position:sticky;bottom:0;background:var(--app-paper);padding:12px 20px max(20px,env(safe-area-inset-bottom))}.foot--bar{padding:0 0 env(safe-area-inset-bottom)}.q{font-size:calc(var(--s) * 1.15);font-weight:700;margin:0 0 4px;line-height:1.35}.hint{font-size:calc(var(--s) * .8);color:var(--app-ink-soft);margin:0 0 18px}.screen-title{font-size:calc(var(--s) * 1.25);font-weight:700;margin:0 0 2px}.screen-sub{font-size:calc(var(--s) * .76);margin:0 0 16px}.screen-sub,.who{color:var(--app-ink-soft)}.who{font-size:calc(var(--s) * .8);margin:0 0 10px;font-weight:600}.greet{font-size:calc(var(--s) * 1.1);font-weight:700;margin:0}.house{font-size:calc(var(--s) * .9);color:var(--app-ink-mid);margin:2px 0 0;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}hr.rule{height:1px;background:var(--app-line);margin:14px 0;border:0}.fac{display:flex;align-items:center;gap:12px}.fac svg{width:34px;height:34px;flex:none;color:var(--app-primary)}.fac-name{font-size:calc(var(--s) * 1.4);font-weight:700;letter-spacing:-.01em}.when{font-family:var(--mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:min(calc(var(--s) * .86),21px);color:var(--app-ink-mid);margin:6px 0 0}.occupancy{display:inline-flex;align-items:center;gap:8px;margin-top:12px;background:var(--app-ok-wash);color:var(--app-ok-ink);border-radius:999px;padding:6px 14px;font-size:calc(var(--s) * .8);font-weight:600}.dot{width:8px;height:8px;border-radius:50%;background:var(--app-ok-dot)}.btn{font-family:var(--sans);width:100%;min-height:64px;border:0;border-radius:14px;background:var(--app-primary);color:var(--app-paper);font-size:calc(var(--s) * 1.05);font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:10px;transition:background .12s,transform .06s}.btn:hover{background:var(--app-primary-deep)}.btn:active{transform:translateY(1px)}.btn:disabled{background:var(--app-disabled);color:var(--app-disabled-ink);cursor:not-allowed}.btn:focus-visible{outline:3px solid var(--app-ink);outline-offset:3px}.btn.ghost{background:transparent;color:var(--app-primary);min-height:52px;font-size:calc(var(--s) * .82);font-weight:600;text-decoration:underline;text-underline-offset:4px;margin-top:4px}.btn.ghost:hover{background:var(--app-primary-tint)}.field{width:100%;font-family:var(--sans);font-size:calc(var(--s) * 1.2);padding:14px 16px;border:2px solid var(--app-line-strong);border-radius:12px;background:var(--app-paper);color:var(--app-ink);min-height:64px}.field:focus-visible{outline:3px solid var(--app-primary);outline-offset:2px;border-color:var(--app-primary)}.err{font-size:calc(var(--s) * .76);color:var(--app-danger);margin:10px 0 0;font-weight:600}.chips{display:flex;flex-wrap:wrap;gap:10px}.chip{font-family:var(--sans);font-size:calc(var(--s) * .85);min-height:64px;padding:8px 16px;border-radius:12px;border:2px solid var(--app-line-strong);background:var(--app-paper);color:var(--app-ink);cursor:pointer;display:flex;align-items:center;gap:8px;line-height:1.2;transition:background .12s,border-color .12s}.chip small{font-size:calc(var(--s) * .62);color:var(--app-ink-faint);display:block}.chip[aria-pressed=true]{border-color:var(--app-primary);background:var(--app-primary-wash)}.chip[aria-pressed=true] small{color:var(--app-primary-soft)}.chip .tick{width:20px;height:20px;color:var(--app-primary);flex:none;opacity:0}.chip[aria-pressed=true] .tick{opacity:1}.chip.add{border-style:dashed;color:var(--app-ink-mid)}.chip:focus-visible{outline:3px solid var(--app-primary);outline-offset:2px}.seg{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px;gap:10px;margin-bottom:14px}.seg button{font-family:var(--sans);min-height:64px;border-radius:12px;border:2px solid var(--app-line-strong);background:var(--app-paper);color:var(--app-ink);font-size:calc(var(--s) * .9);cursor:pointer}.seg button[aria-pressed=true]{border-color:var(--app-primary);background:var(--app-primary-wash);font-weight:700}.steps{display:flex;gap:6px;margin-bottom:16px}.steps i{height:4px;flex:1 1;border-radius:2px;background:var(--app-line)}.steps i.on{background:var(--app-primary)}.done{text-align:center;padding-top:30px}.seal{width:108px;height:108px;margin:0 auto 20px;border-radius:50%;background:var(--app-ok);display:grid;place-items:center;animation:pop .38s cubic-bezier(.2,1.3,.4,1) both}.seal svg{width:58px;height:58px;color:var(--app-paper)}@keyframes pop{0%{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}.done h1{font-size:calc(var(--s) * 1.3);margin:0 0 6px;font-weight:700}.done .meta{font-family:var(--mono);font-size:calc(var(--s) * .82);color:var(--app-ink-mid);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;margin:0 0 4px}.done .next-head{text-align:left;margin:26px 0 10px}.done .next-list{text-align:left}.memo{margin:22px auto 0;background:var(--app-ok-memo);border-radius:12px;padding:14px 16px;font-size:calc(var(--s) * .78);color:var(--app-ok-ink);max-width:300px;line-height:1.5}.list{flex-direction:column;gap:10px}.list,.row{display:flex}.row{font-family:var(--sans);text-align:left;width:100%;background:var(--app-paper);border:2px solid var(--app-line-row);border-radius:14px;padding:14px 16px;min-height:80px;align-items:center;gap:14px;cursor:pointer;color:var(--app-ink)}a.row{text-decoration:none}.row:hover{border-color:var(--app-primary)}.row:focus-visible{outline:3px solid var(--app-primary);outline-offset:2px}.row svg.lead{width:30px;height:30px;color:var(--app-primary);flex:none}.row .rt{flex:1 1;min-width:0}.row .rt b{font-size:calc(var(--s) * .95);font-weight:700;display:block}.row .rt small{font-size:calc(var(--s) * .68);color:var(--app-ink-soft)}.row .chev{width:20px;height:20px;color:var(--app-muted);flex:none}.row[aria-disabled=true]{opacity:.55;cursor:not-allowed}.note-card{background:var(--app-paper);border:1px solid var(--app-line);border-radius:14px;padding:14px 16px}.note-card time{font-family:var(--mono);font-size:calc(var(--s) * .62);color:var(--app-ink-faint);display:block;margin-bottom:4px}.note-card b{font-size:calc(var(--s) * .95);display:block;margin-bottom:8px;line-height:1.4}.note-card p{font-size:calc(var(--s) * .8);color:var(--app-ink-mid);margin:0 0 10px;line-height:1.7}.note-card p:last-of-type{margin-bottom:0}.note-from{font-size:calc(var(--s) * .72)!important;color:var(--app-ink-soft)!important;text-align:right;margin-top:12px!important}.note-image{display:block;width:100%;height:auto;border-radius:10px;border:1px solid var(--app-line)}.note-image,.soft{margin-top:14px;background:var(--app-panel)}.soft{font-size:calc(var(--s) * .7);color:var(--app-ink-soft);border-radius:12px;padding:12px 14px;line-height:1.55}.kv{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--app-hairline)}.kv span{font-size:calc(var(--s) * .78);color:var(--app-ink-soft)}.kv b{font-size:calc(var(--s) * .85);text-align:right}.pdpa{font-size:calc(var(--s) * .66);color:var(--app-ink-faint);text-align:center;margin:10px 0 0;line-height:1.5}.tabbar{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--app-line);background:var(--app-paper)}.tabbar button{font-family:var(--sans);border:0;background:none;padding:10px 4px max(14px,env(safe-area-inset-bottom));min-height:68px;cursor:pointer;color:var(--app-ink-soft);display:flex;flex-direction:column;align-items:center;gap:4px;font-size:calc(var(--s) * .66);font-weight:600;line-height:1.2}.tabbar button svg{width:25px;height:25px}.tabbar button[aria-current=page]{color:var(--app-primary)}.tabbar button[aria-current=page] span{font-weight:700}.tabbar button:focus-visible{outline:3px solid var(--app-primary);outline-offset:-3px}.app:has(.admin){max-width:1040px}.admin{max-width:100%;font-size:16px}.admin .screen-title{font-size:26px}.admin .screen-sub{font-size:15px}.admin .soft{font-size:14px;margin-top:20px}.admin .setup,.admin .who{font-size:15px}.admin .setup{line-height:1.8;color:var(--app-ink-mid);padding-left:22px;margin:0 0 18px}.admin code{font-family:var(--mono);font-size:13px;background:var(--app-panel);padding:2px 6px;border-radius:4px}.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));grid-gap:12px;gap:12px;margin-top:16px}.stat{border:1px solid var(--app-line);border-radius:10px;padding:14px 16px;background:var(--app-paper)}.stat b{display:block;font-family:var(--mono);font-size:34px;line-height:1.1;color:var(--app-primary);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.stat span{display:block;font-size:15px;font-weight:600;margin-top:2px}.stat small{display:block;font-size:13px;color:var(--app-ink-soft);margin-top:4px}.tablewrap{overflow-x:auto;border:1px solid var(--app-line);border-radius:10px;margin-top:10px}.admin table{border-collapse:collapse;width:100%;min-width:640px;font-size:14.5px}.admin td,.admin th{text-align:left;padding:10px 14px;border-bottom:1px solid var(--app-hairline);white-space:nowrap}.admin thead th{font-family:var(--mono);font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--app-ink-soft);font-weight:500;background:var(--app-panel)}.admin tbody tr:last-child td{border-bottom:0}.admin .num{font-family:var(--mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.form{display:flex;flex-direction:column;gap:14px;margin-top:12px}.form label{display:block}.form label>span{display:block;font-size:14.5px;font-weight:600;color:var(--app-ink-mid);margin-bottom:6px}.admin .field{font-size:17px;min-height:52px;padding:12px 14px}.admin textarea.field{min-height:150px;line-height:1.7;resize:vertical}.admin .field.file{padding:12px 14px;font-size:15px}.hintline{font-size:14px;color:var(--app-ink-soft);margin:-6px 0 0}.note-card.preview{border:2px dashed var(--app-line-strong)}.ok-line{font-size:15px;font-weight:600;color:var(--app-ok-ink);background:var(--app-ok-wash);border-radius:8px;padding:12px 14px;margin:16px 0 0}.admin .btn{max-width:320px;margin-top:18px}.admin .btn.ghost{max-width:none}@media (prefers-reduced-motion:reduce){.seal{animation:none}*{transition-duration:.01ms!important}}