@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/atkinson-hyperlegible-latin-ext-400-normal-DRk46D-x.woff2) format("woff2"),url(/assets/atkinson-hyperlegible-latin-ext-400-normal-Bbz-b3yf.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/atkinson-hyperlegible-latin-400-normal-BrHNak5F.woff2) format("woff2"),url(/assets/atkinson-hyperlegible-latin-400-normal-BbWidj28.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/atkinson-hyperlegible-latin-ext-700-normal-BoVPHkS0.woff2) format("woff2"),url(/assets/atkinson-hyperlegible-latin-ext-700-normal-CKkU2Dpt.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/atkinson-hyperlegible-latin-700-normal-GZI4o3u0.woff2) format("woff2"),url(/assets/atkinson-hyperlegible-latin-700-normal-BK6Glc0m.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/bricolage-grotesque-vietnamese-600-normal-Ipewt4hn.woff2) format("woff2"),url(/assets/bricolage-grotesque-vietnamese-600-normal-BppAn7jL.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/bricolage-grotesque-latin-ext-600-normal-CN5JKkBm.woff2) format("woff2"),url(/assets/bricolage-grotesque-latin-ext-600-normal-DF26P3Q7.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/bricolage-grotesque-latin-600-normal-nxTgbNFE.woff2) format("woff2"),url(/assets/bricolage-grotesque-latin-600-normal-Bw0J83-2.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/bricolage-grotesque-vietnamese-700-normal-BLYPkJbo.woff2) format("woff2"),url(/assets/bricolage-grotesque-vietnamese-700-normal-CHrFuVHU.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/bricolage-grotesque-latin-ext-700-normal-fBkt-7fi.woff2) format("woff2"),url(/assets/bricolage-grotesque-latin-ext-700-normal-BXpPFNFj.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/bricolage-grotesque-latin-700-normal-gtcctNPv.woff2) format("woff2"),url(/assets/bricolage-grotesque-latin-700-normal-DvJDmrLu.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--ok-bg: #E3F2E9;--ok: #1F6B44;--warn-bg: #FFF1CC;--warn: #7A4E00;--warn-line: #C98A00;--warn-ink: #3D2700;--err-bg: #FBE4E1;--err: #A3221B;--err-line: #E5A29C;--info-bg: #E3EDF7;--info: #25507D;--offline-bg: #2B2526;--offline-ink: #F5F0EA;--font: "Atkinson Hyperlegible", system-ui, sans-serif;--display: "Bricolage Grotesque", var(--font)}.app.dark{--ok-bg: #173527;--ok: #8FD9AE;--warn-bg: #3A2C08;--warn: #FFD36B;--warn-line: #C98A00;--warn-ink: #FFE7A8;--err-bg: #3B1714;--err: #FF8A80;--err-line: #FF8A80;--info-bg: #15283B;--info: #9CC4EE;--offline-bg: var(--sf2)}*{box-sizing:border-box}html,body{margin:0}body{-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer;border:0;background:none;padding:0}button:disabled{cursor:not-allowed;opacity:.5}:focus-visible{outline:3px solid var(--info);outline-offset:2px}.app{min-height:100dvh;background:var(--bg);color:var(--ink);font-family:var(--font);font-size:17px;line-height:1.35}.screen{max-width:560px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column}.h-display{font-family:var(--display);font-weight:700;margin:0}.num{font-variant-numeric:tabular-nums}.muted{color:var(--ink2)}.label{font-size:15px;font-weight:700;color:var(--ink2)}.stack{display:flex;flex-direction:column;gap:6px}.row{display:flex;align-items:center;gap:10px}.grow{flex:1;min-width:0}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.link{font-weight:700;text-decoration:underline;color:inherit}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.topbar{position:sticky;top:0;z-index:5;height:64px;display:flex;align-items:center;gap:6px;padding:env(safe-area-inset-top) 10px 0;background:var(--sf);border-bottom:1px solid var(--line)}.topbar h1{flex:1;font:700 22px var(--display);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.icon-btn{width:56px;height:56px;display:grid;place-items:center;font-size:26px;border-radius:12px}.content{flex:1;padding:16px;display:flex;flex-direction:column;gap:14px}.footer{position:sticky;bottom:0;z-index:5;padding:12px 16px calc(16px + env(safe-area-inset-bottom));background:var(--sf);border-top:1px solid var(--line);display:flex;flex-direction:column;gap:10px}.btn{min-height:60px;border-radius:14px;display:flex;align-items:center;justify-content:center;gap:10px;font-weight:700;font-size:19px;padding:0 18px;width:100%;text-align:center}.btn-pr{background:var(--pr);color:var(--pri)}.btn-ac{background:var(--ac);color:var(--aci)}.btn-outline{border:2px solid var(--ink)}.btn-soft{border:2px solid var(--line);background:var(--sf)}.btn-sm{min-height:48px;font-size:16px;border-radius:12px;width:auto}.badge-count{min-width:28px;height:28px;padding:0 6px;border-radius:14px;background:var(--pr);color:var(--pri);display:grid;place-items:center;font-size:15px}.field{min-height:60px;border-radius:12px;border:2px solid var(--line);background:var(--sf);display:flex;align-items:center;gap:10px;padding:0 16px;width:100%;text-align:left;font-size:19px}.field.invalid{border:3px solid var(--err)}.field .value{flex:1;font-weight:700;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.field .placeholder{flex:1;color:var(--ink2)}.tag{font-size:13px;padding:4px 8px;border-radius:6px;background:var(--sf2);color:var(--ink2);white-space:nowrap}.tag-reconcile{font-size:14px;font-weight:700;padding:4px 10px;border-radius:999px;border:2px dashed var(--warn);color:var(--warn);white-space:nowrap}.error-text{font-size:15px;font-weight:700;color:var(--err)}textarea.field{padding:14px 16px;min-height:72px;resize:vertical;font-size:17px}input.field{font-weight:700}.seg{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;min-height:60px;border-radius:14px;background:var(--sf2);padding:4px;gap:4px}.seg button{border-radius:11px;font-size:19px;font-weight:700;color:var(--ink2);display:flex;align-items:center;justify-content:center;gap:6px}.seg button.on{background:var(--ink);color:var(--sf)}.seg button.on.danger{background:var(--err);color:#fff}.choice{min-height:60px;border-radius:14px;border:2px solid var(--line);background:var(--sf);display:flex;align-items:center;justify-content:center;gap:8px;font-size:18px;font-weight:700;padding:0 8px}.choice.on{border:3px solid var(--ink);background:var(--ink);color:var(--sf)}.check{width:26px;height:26px;border-radius:6px;border:2.5px solid var(--ink2);display:grid;place-items:center;font-size:16px}.choice.checkbox.on{background:var(--sf);color:var(--ink)}.choice.checkbox.on .check{background:var(--ink);color:var(--sf);border-color:var(--ink)}.pill{display:inline-flex;align-items:center;gap:8px;height:34px;padding:0 14px 0 8px;border-radius:999px;font-weight:700;font-size:15px;white-space:nowrap;align-self:flex-start}.pill i{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-style:normal}.pill.pending{background:var(--info-bg);color:var(--info)}.pill.pending i{border:2.5px solid currentColor}.pill.sent{background:var(--ok-bg);color:var(--ok)}.pill.sent i{background:currentColor}.pill.sent i span{color:var(--ok-bg)}.pill.error{background:var(--err-bg);color:var(--err)}.pill.error i{background:currentColor;border-radius:4px}.pill.error i span{color:var(--err-bg)}.pill.small{height:30px;font-size:14px;padding:0 12px 0 6px}.banner{display:flex;align-items:center;gap:12px;padding:12px 16px;border-radius:14px;font-size:16px;line-height:1.35}.banner-offline{background:var(--offline-bg);color:var(--offline-ink)}.banner-offline .dot{width:12px;height:12px;border-radius:50%;background:var(--pr);flex:none}.banner-soft{background:var(--sf2)}.banner-warn{background:var(--warn-bg);color:var(--warn-ink);border:2px solid var(--warn-line);flex-direction:column;align-items:stretch;gap:6px}.chip-offline{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 10px;border-radius:999px;background:var(--offline-bg);color:var(--offline-ink);font-size:13px;font-weight:700;white-space:nowrap}.chip-offline:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--pr)}.dup{display:flex;flex-direction:column;gap:10px;padding:14px 16px;border-radius:14px;border:2px dashed var(--line)}.measure{min-height:88px;border-radius:14px;background:var(--sf);border:2px solid var(--line);padding:10px 14px;display:flex;flex-direction:column;justify-content:space-between;text-align:left;gap:4px}.measure b{font-size:30px}.measure .unit{font-size:17px;font-weight:700;color:var(--ink2)}.measure.out{background:var(--warn-bg);border:3px solid var(--warn-line);color:var(--warn-ink)}.measure.out .unit{color:inherit}.measure.wide{grid-column:1 / -1}.keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.keypad button{height:64px;border-radius:12px;background:var(--sf);font-size:28px;font-weight:700}.keypad button:active{background:var(--line)}.stepper{min-height:76px;border-radius:14px;background:var(--sf);border:2px solid var(--line);display:flex;align-items:center;padding:0 8px 0 16px;gap:8px}.stepper .sq{width:56px;height:56px;border-radius:12px;background:var(--sf2);display:grid;place-items:center;font-size:28px;font-weight:700}.sheet-back{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;background:#140f1073;display:flex;align-items:flex-end;justify-content:center}.sheet{width:100%;max-width:560px;max-height:88dvh;background:var(--bg);border-radius:22px 22px 0 0;display:flex;flex-direction:column;overflow:hidden;padding-bottom:env(safe-area-inset-bottom)}.sheet-head{display:flex;align-items:center;gap:8px;padding:10px 10px 10px 18px;background:var(--sf);border-bottom:1px solid var(--line)}.sheet-head h2{flex:1;font:700 21px var(--display);margin:0}.sheet-list{overflow:auto;padding:8px 16px 16px;display:flex;flex-direction:column;gap:8px}.option{min-height:60px;border-radius:12px;background:var(--sf);border:2px solid var(--line);display:flex;align-items:center;gap:10px;padding:8px 16px;text-align:left;font-size:18px;width:100%}.option.on{border:3px solid var(--ink)}.option.add{background:var(--sf2);border-style:dashed;font-size:16px}.card{border-radius:16px;background:var(--sf);border:2px solid var(--line);padding:12px 14px;display:flex;flex-direction:column;gap:8px}.card.error{border-color:var(--err-line)}.card.current{border:3px solid var(--ink)}.tiles{display:grid;grid-template-columns:1fr 1fr;gap:12px}.tile{min-height:116px;border-radius:20px;background:var(--sf);border:2px solid var(--line);padding:16px;display:flex;flex-direction:column;justify-content:space-between;text-align:left;gap:8px}.tile .t{font:700 21px/1.1 var(--display);-webkit-hyphens:auto;hyphens:auto}.tile .s{font-size:15px;color:var(--ink2)}.tile.main{grid-column:span 2;background:var(--pr);color:var(--pri);border:0;padding:18px}.tile.main .t{font-size:26px}.tile.main .s{color:inherit}.avatar{width:40px;height:40px;border-radius:50%;background:var(--sf2);display:grid;place-items:center;font-weight:700;flex:none}.avatar.lg{width:48px;height:48px;background:var(--pr);color:var(--pri)}.logo{object-fit:contain;border-radius:10px;background:#fff;flex:none}.logo-ph{border-radius:10px;background:var(--pr);color:var(--pri);display:grid;place-items:center;font:700 20px var(--display);flex:none}.tabbar{position:sticky;bottom:0;z-index:5;display:grid;grid-auto-flow:column;grid-auto-columns:1fr;height:calc(76px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--sf);border-top:1px solid var(--line)}.tabbar button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;font-size:15px;color:var(--ink2)}.tabbar button:before{content:"";width:28px;height:4px;border-radius:2px}.tabbar button.on{color:var(--ink);font-weight:700}.tabbar button.on:before{background:var(--ink)}.chips{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none}.chip{height:44px;padding:0 16px;border-radius:999px;border:2px solid var(--line);display:flex;align-items:center;font-weight:700;font-size:15px;flex:none}.chip.on{background:var(--ink);color:var(--sf);border-color:var(--ink)}.section-title{font-size:14px;font-weight:700;color:var(--ink2);text-transform:uppercase;letter-spacing:.06em}.recap-row{display:flex;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--line);font-size:17px}.recap-row:last-child{border-bottom:0}.recap-row b{text-align:right}.stars{display:flex;justify-content:space-between}.stars button{width:56px;height:48px;font-size:34px;line-height:1;color:var(--line)}.stars button.on{color:var(--warn-line)}.scale{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}.scale button{height:48px;border-radius:10px;background:var(--sf);border:2px solid var(--line);font-size:19px;font-weight:700}.scale button.on{background:var(--ink);color:var(--sf);border-color:var(--ink)}.photo-slot{width:96px;height:96px;border-radius:14px;border:2px dashed var(--ink2);background:var(--sf2);display:grid;place-items:center;text-align:center;font-size:13px;font-weight:700;color:var(--ink2);overflow:hidden;flex:none}.photo-slot img{width:100%;height:100%;object-fit:cover}.empty{text-align:center;color:var(--ink2);padding:32px 16px}.admin{display:grid;grid-template-columns:280px minmax(0,1fr);min-height:100dvh}.admin aside{background:var(--sf);border-right:1px solid var(--line);padding:24px 16px;display:flex;flex-direction:column;gap:4px}.admin nav button{width:100%;height:48px;border-radius:10px;display:flex;align-items:center;justify-content:space-between;padding:0 14px;font-size:16px;text-align:left}.admin nav button.on{background:var(--pr);color:var(--pri);font-weight:700}.admin main{padding:36px 44px;display:flex;flex-direction:column;gap:28px;min-width:0}.admin-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap}.admin-head h1{font:700 34px var(--display);margin:0}.panel{background:var(--sf);border-radius:16px;border:1px solid var(--line);padding:24px;display:flex;flex-direction:column;gap:16px}.panel h2{font-size:19px;margin:0}.table{background:var(--sf);border-radius:16px;border:1px solid var(--line);overflow:auto}.table .tr{display:grid;gap:16px;align-items:center;min-height:64px;padding:8px 20px;border-top:1px solid var(--line);font-size:16px;min-width:640px}.table .th{min-height:48px;background:var(--sf2);font-size:14px;font-weight:700;color:var(--ink2);text-transform:uppercase;letter-spacing:.05em;border-top:0}.cell-input{height:44px;border-radius:10px;border:2px solid var(--line);background:var(--sf);padding:0 12px;font-weight:700;width:100%;min-width:0}.tagchip{display:inline-flex;align-items:center;height:30px;padding:0 12px;border-radius:999px;background:var(--sf2);font-weight:700;font-size:14px;white-space:nowrap}.tagchip.ok{background:var(--ok-bg);color:var(--ok)}.tagchip.warn{background:var(--warn-bg);color:var(--warn)}.tagchip.off{opacity:.45;text-decoration:line-through}.toggle{display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 6px 0 12px;border-radius:999px;background:var(--ink);color:var(--sf);font-weight:700;font-size:15px}.toggle:after{content:"";width:26px;height:26px;border-radius:50%;background:var(--pr)}.toggle.off{flex-direction:row-reverse;padding:0 12px 0 6px;background:var(--sf2);color:var(--ink2);border:2px solid var(--line)}.toggle.off:after{width:22px;height:22px;background:var(--sf);border:2px solid var(--line)}.matrix{display:grid;grid-template-columns:1.6fr repeat(4,1fr);gap:8px;font-size:14px;align-items:center;text-align:center}.matrix button{height:36px;border-radius:8px;border:2px solid var(--line);font-weight:700}.matrix button.on{background:var(--ink);color:var(--sf);border-color:var(--ink)}.admin-mobile-nav{display:none}@media (max-width: 900px){.admin{grid-template-columns:1fr}.admin aside{display:none}.admin main{padding:16px;gap:20px}.admin-head h1{font-size:28px}.admin-mobile-nav{display:block}}
