@font-face{font-family:Trirong;font-weight:600;font-display:swap;src:url(/fonts/trirong-latin-600.woff2) format("woff2")}@font-face{font-family:Trirong;font-weight:600;font-display:swap;src:url(/fonts/trirong-thai-600.woff2) format("woff2");unicode-range:U+0E00-0E7F}@font-face{font-family:Trirong;font-weight:700;font-display:swap;src:url(/fonts/trirong-latin-700.woff2) format("woff2")}@font-face{font-family:Trirong;font-weight:700;font-display:swap;src:url(/fonts/trirong-thai-700.woff2) format("woff2");unicode-range:U+0E00-0E7F}@font-face{font-family:IBM Plex Sans Thai;font-weight:400;font-display:swap;src:url(/fonts/plexsansthai-latin-400.woff2) format("woff2")}@font-face{font-family:IBM Plex Sans Thai;font-weight:400;font-display:swap;src:url(/fonts/plexsansthai-thai-400.woff2) format("woff2");unicode-range:U+0E00-0E7F}@font-face{font-family:IBM Plex Sans Thai;font-weight:600;font-display:swap;src:url(/fonts/plexsansthai-latin-600.woff2) format("woff2")}@font-face{font-family:IBM Plex Sans Thai;font-weight:600;font-display:swap;src:url(/fonts/plexsansthai-thai-600.woff2) format("woff2");unicode-range:U+0E00-0E7F}@font-face{font-family:IBM Plex Sans Thai;font-weight:700;font-display:swap;src:url(/fonts/plexsansthai-latin-700.woff2) format("woff2")}@font-face{font-family:IBM Plex Sans Thai;font-weight:700;font-display:swap;src:url(/fonts/plexsansthai-thai-700.woff2) format("woff2");unicode-range:U+0E00-0E7F}@font-face{font-family:IBM Plex Mono;font-weight:400;font-display:swap;src:url(/fonts/plexmono-latin-400.woff2) format("woff2")}@font-face{font-family:IBM Plex Mono;font-weight:500;font-display:swap;src:url(/fonts/plexmono-latin-500.woff2) format("woff2")}:root{--ink:#16233B;--ink-soft:#5B6880;--paper:#FBF9F3;--card:#FFFFFF;--seal:#16233B;--seal-dk:#0E1728;--gold:#F5A81C;--gold-dk:#8A6208;--alert:#D42A20;--alert-dk:#A81E14;--stamp:#B8332B;--amber:#F5A81C;--amber-dk:#8A6208;--line-green:#06C755;--line:rgba(22,35,59,.13);--t-display:28px;--t-h1:24px;--t-h2:19px;--t-title:16px;--t-body:15px;--t-sm:13px;--t-xs:12px;--t-label:9.5px;--lh-tight:1.15;--lh-body:1.55;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:20px;--s-6:24px;--s-8:32px;--pad-card:16px;--gap-card:14px;--e-1:0 1px 2px rgba(22,35,59,.07);--e-2:0 10px 30px -20px rgba(22,35,59,.32);--e-3:0 24px 60px -24px rgba(22,35,59,.45);--r-sm:4px;--r:6px;--r-lg:8px;--r-pill:999px;--dur:.15s;--ease:cubic-bezier(.2,.6,.2,1);--f-display:"Trirong","Noto Serif Thai",Georgia,serif;--f-body:"IBM Plex Sans Thai","Noto Sans Thai",-apple-system,system-ui,sans-serif;--f-mono:"IBM Plex Mono",ui-monospace,Menlo,monospace}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{font-family:var(--f-body);background:var(--paper);color:var(--ink);font-size:var(--t-body);line-height:var(--lh-body);min-height:100vh;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:var(--seal-dk)}:focus-visible{outline:3px solid var(--seal);outline-offset:2px}button{font-family:inherit;color:inherit}h1{font-family:var(--f-display);font-size:var(--t-h1);line-height:var(--lh-tight);font-weight:600}h2{font-family:var(--f-display);font-size:var(--t-h2);line-height:var(--lh-tight);font-weight:600}.wrap{max-width:760px;margin:0 auto;padding:0 16px}.klabel{font-family:var(--f-mono);font-size:var(--t-label);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft)}.klabel-th{font-family:var(--f-body);font-size:11px;letter-spacing:0;text-transform:none;color:var(--ink-soft);font-weight:600}:root:lang(th) .klabel,:root:lang(th) .stamp b{font-family:var(--f-body);letter-spacing:0;text-transform:none;font-weight:600}.qrlabel-preview svg{width:100%;height:auto;display:block;border-radius:var(--r-lg);box-shadow:var(--e-2)}.section-title{font-family:var(--f-display);font-size:var(--t-title);font-weight:600;margin:0 0 var(--s-3);position:relative;padding-bottom:7px}.section-title:after{content:"";position:absolute;left:0;bottom:0;width:32px;height:2px;border-radius:2px;background:linear-gradient(90deg,var(--gold),var(--gold-dk))}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:44px;padding:0 16px;border-radius:var(--r);border:1px solid var(--line);background:var(--card);color:var(--ink);font-weight:600;font-size:var(--t-body);cursor:pointer;text-decoration:none;white-space:nowrap;transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}.btn:hover{transform:translateY(-1px);box-shadow:0 6px 16px -10px #16233b80}.btn:active{transform:translateY(0)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}.btn.primary{background:var(--gold);border-color:var(--gold);color:var(--ink)}.btn.primary:hover{box-shadow:0 8px 18px -10px #f5a81cbf}.btn.alert{background:var(--alert);border-color:var(--alert);color:#fff}.btn.danger-outline{background:transparent;border-color:var(--alert);color:var(--alert-dk)}.btn.ghost{background:transparent;border-color:transparent}.btn.block{width:100%}.btn.icon{min-width:44px;padding:0 10px}.linkbtn{display:inline-flex;align-items:center;gap:5px;background:none;border:0;min-height:32px;padding:6px;cursor:pointer;font-family:inherit;font-weight:600;font-size:var(--t-sm);color:var(--seal-dk)}.linkbtn:hover{text-decoration:underline}.linkbtn.danger{color:var(--alert-dk)}@media(prefers-reduced-motion:reduce){.btn{transition:none}.btn:hover{transform:none}}.card{background:var(--card);border:1px solid rgba(22,35,59,.07);border-radius:14px;box-shadow:0 1px 3px #16233b0d,0 10px 26px -16px #16233b38}.card-pad{padding:var(--pad-card)}.card.compact{padding:12px}.card.danger{border-color:#d42a2066;background:#fef6f4}.stack{display:grid;gap:var(--gap-card)}.pdtabs{display:flex;gap:4px;background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:4px;margin-bottom:16px}.pdtab{flex:1;min-width:0;min-height:42px;border:0;background:transparent;border-radius:9px;font:inherit;font-weight:600;font-size:13px;line-height:1.2;color:var(--ink-soft);cursor:pointer;padding:8px 4px;white-space:nowrap;transition:background .16s ease,color .16s ease,box-shadow .16s ease}.pdtab:hover:not(.on){background:#16233b0d}.pdtab.on{background:var(--seal);color:#fff;box-shadow:0 3px 10px -3px #16233b66}.pdtab-dot{display:inline-block;width:7px;height:7px;border-radius:99px;background:var(--amber);margin-inline-start:5px;vertical-align:middle}.pdtab.on .pdtab-dot{background:var(--gold)}.fchips{display:flex;gap:8px;overflow-x:auto;margin:0 0 12px;padding-bottom:2px;-webkit-overflow-scrolling:touch;scrollbar-width:none}.fchips::-webkit-scrollbar{display:none}.fchip{flex:0 0 auto;display:inline-flex;align-items:center;gap:5px;min-height:38px;padding:0 13px;border:1px solid var(--line);border-radius:var(--r-pill);background:var(--card);color:var(--ink);font:inherit;font-size:var(--t-sm);font-weight:600;cursor:pointer;white-space:nowrap}.fchip .n{color:var(--ink-soft);font-weight:700}.fchip.on{background:var(--seal);color:#fff;border-color:var(--seal)}.fchip.on .n{color:#ffffffb8}.cdot{width:8px;height:8px;border-radius:99px;background:var(--alert);flex:0 0 auto}.field{display:block;margin-bottom:14px;min-width:0}.field>span{display:block;margin-bottom:5px}.input{width:100%;min-width:0;max-width:100%;min-height:44px;padding:9px 12px;font-size:var(--t-body);font-family:inherit;line-height:1.4;border:1px solid var(--line);border-radius:var(--r);background:#fff;color:var(--ink);transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}.input[type=date]{-webkit-appearance:none;appearance:none}.input:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px #f5a81c38}.input.err{border-color:var(--alert)}.input.err:focus{box-shadow:0 0 0 3px #d42a2026}.input:disabled{background:var(--paper);color:var(--ink-soft);cursor:not-allowed}textarea.input{line-height:1.5;resize:vertical}select.input{-webkit-appearance:none;appearance:none;padding-right:36px;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' fill='none' stroke='%235B6880' stroke-width='1.6' stroke-linecap='round'/></svg>");background-repeat:no-repeat;background-position:right 12px center}.field .hint{display:block;margin-top:4px;font-size:var(--t-xs);color:var(--ink-soft)}.field .error{display:block;margin-top:4px;font-size:var(--t-sm);color:var(--alert-dk)}.badge{display:inline-flex;align-items:center;gap:4px;font-size:var(--t-xs);font-weight:700;padding:3px 9px;border-radius:var(--r-pill);background:var(--seal);color:#fff;white-space:nowrap}.badge.alert{background:var(--alert)}.badge.soft{background:var(--paper);color:var(--ink-soft)}.chip{display:inline-flex;align-items:center;font-size:11px;font-weight:600;padding:2px 8px;border-radius:var(--r-pill);background:var(--seal);color:#fff}.muted{color:var(--ink-soft)}.center{text-align:center}.formmsg{margin-top:10px;font-size:var(--t-sm);font-weight:600}.formmsg.ok{color:var(--seal-dk)}.formmsg.err{color:var(--alert-dk)}.formmsg.warn{color:var(--amber-dk)}.guilloche{height:5px;opacity:.5;border-radius:var(--r) var(--r) 0 0;background:linear-gradient(90deg,transparent,rgba(245,168,28,.4) 50%,transparent),repeating-linear-gradient(115deg,var(--seal) 0 1px,transparent 1px 5px),repeating-linear-gradient(65deg,var(--seal) 0 1px,transparent 1px 5px)}.guilloche-wm{position:absolute;inset:0;pointer-events:none;opacity:.05;z-index:0;background:repeating-linear-gradient(115deg,var(--seal) 0 1px,transparent 1px 7px),repeating-linear-gradient(65deg,var(--seal) 0 1px,transparent 1px 7px)}.mrz{font-family:var(--f-mono);font-size:11px;letter-spacing:.08em;color:var(--ink-soft);background:var(--paper);border-top:1px solid var(--line);padding:7px 12px;white-space:nowrap;overflow:hidden;text-overflow:clip;line-height:1.5;user-select:none}.stamp{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;width:78px;height:78px;border:2px solid var(--stamp);border-radius:var(--r-pill);color:var(--stamp);transform:rotate(-8deg);opacity:.85;font-weight:700;line-height:1.1;text-align:center;box-shadow:inset 0 0 0 3px #b8332b2e}.stamp b{font-size:10px;letter-spacing:.04em}.stamp small{font-size:8px;font-family:var(--f-mono)}@keyframes shimmer{to{background-position:-200% 0}}.skeleton{background:linear-gradient(90deg,var(--paper) 25%,#EAE7DF 37%,var(--paper) 63%);background-size:200% 100%;animation:shimmer 1.3s ease-in-out infinite;border-radius:var(--r)}.skeleton-line{height:12px;margin:6px 0}@media(prefers-reduced-motion:reduce){.skeleton{animation:none}}.toast{position:fixed;left:50%;bottom:20px;transform:translate(-50%);z-index:200;max-width:calc(100% - 32px);padding:12px 16px;border-radius:var(--r-lg);box-shadow:var(--e-3);font-size:var(--t-body);font-weight:600;color:#fff;background:var(--seal-dk);animation:toast-in var(--dur) var(--ease)}.toast.err{background:var(--alert-dk)}.toast.warn{background:var(--amber-dk)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}@media(prefers-reduced-motion:reduce){.toast{animation:none}}.backdrop{position:fixed;inset:0;z-index:150;background:#0e17288c;display:flex;align-items:center;justify-content:center;padding:16px}.dialog{background:var(--card);border-radius:var(--r-lg);box-shadow:var(--e-3);max-width:520px;width:100%;max-height:90vh;overflow:auto}.petcard{display:block;width:100%;text-align:left;padding:0;overflow:hidden;cursor:pointer;font:inherit;color:inherit;border:1px solid rgba(22,35,59,.07);border-radius:14px;box-shadow:0 1px 3px #16233b12,0 14px 30px -12px #16233b52;transition:transform .18s cubic-bezier(.2,.7,.3,1),box-shadow .18s ease}.petcard:hover{transform:translateY(-3px);box-shadow:0 3px 8px #16233b17,0 22px 44px -14px #16233b6b}.petcard:active{transform:scale(.985);transition-duration:.09s}@media(prefers-reduced-motion:reduce){.petcard{transition:none}.petcard:hover,.petcard:active{transform:none}}.petcard-main{display:flex;gap:13px;align-items:center;padding:14px}.petcard-photo{width:62px;height:62px;border-radius:13px;overflow:hidden;flex:0 0 auto;background:var(--paper)}.todocard{display:flex;gap:10px;align-items:center;text-align:left;width:100%;padding:13px 14px;cursor:pointer;font:inherit;color:inherit;transition:transform .18s cubic-bezier(.2,.7,.3,1),box-shadow .18s ease}.todocard:hover{transform:translateY(-2px);box-shadow:0 3px 8px #16233b14,0 18px 38px -14px #16233b57}.todocard:active{transform:scale(.99);transition-duration:.09s}@media(prefers-reduced-motion:reduce){.todocard{transition:none}.todocard:hover,.todocard:active{transform:none}}.todo-dot{width:9px;height:9px;border-radius:var(--r-pill);flex:0 0 auto}.segmented{display:flex;border:1px solid var(--line);border-radius:var(--r);overflow:hidden}.segmented button{flex:1;min-height:40px;border:0;cursor:pointer;font-family:inherit;font-size:var(--t-sm);font-weight:600;background:var(--card);color:var(--ink-soft)}.segmented button.on{background:var(--seal);color:#fff}.segmented button+button{border-inline-start:1px solid var(--line)}.langtoggle{display:inline-flex;border:1px solid var(--line);border-radius:var(--r-pill);overflow:hidden;flex:0 0 auto;background:var(--card)}.langtoggle button{min-height:36px;padding:0 12px;border:0;cursor:pointer;font-family:var(--f-mono);font-size:var(--t-xs);font-weight:600;letter-spacing:.05em;background:transparent;color:var(--ink-soft)}.langtoggle button.on{background:var(--seal);color:#fff}.leaflet-container{z-index:0}.appbar{position:sticky;top:0;z-index:100;background:#fbf9f3e6;backdrop-filter:saturate(1.2) blur(8px);border-bottom:1px solid var(--line)}.appbar-inner{max-width:760px;margin:0 auto;padding:8px 16px;display:flex;align-items:center;gap:8px}.appbar .brand{font-family:var(--f-display);font-size:20px;font-weight:700;letter-spacing:.01em;color:var(--ink)}
