:root{--bg: #eef0ee;--surface: #fbfcfb;--sunk: #e4e7e5;--ink: #1c2224;--muted: #5b6569;--line: #cfd5d3;--accent: #a94a1c;--accent-ink: #ffffff;--accent-soft: #f4e3d9;--grid: #2f6aa3;--part: #33403f;--part-fill: rgba(51, 64, 63, .14);--sel: #a94a1c;--warn: #8a5a00;--warn-soft: #fbefcf;--bad: #b42318;--bad-soft: #fde4e1;--ok: #2e6f4a;--font-display: "Chakra Petch", "IBM Plex Sans Thai", system-ui, sans-serif;--font-body: "IBM Plex Sans Thai", "Noto Sans Thai", "Leelawadee UI", Tahoma, system-ui, sans-serif;--font-data: "IBM Plex Mono", ui-monospace, "SFMono-Regular", Consolas, monospace;--r: 6px;color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #14181a;--surface: #1b2124;--sunk: #111517;--ink: #e6eae8;--muted: #9aa5a9;--line: #2e383c;--accent: #e2814f;--accent-ink: #1b1110;--accent-soft: #3a261c;--grid: #6aa5dc;--part: #c9d3d1;--part-fill: rgba(201, 211, 209, .14);--sel: #e2814f;--warn: #e3b34a;--warn-soft: #362b12;--bad: #f0857a;--bad-soft: #3b1c19;--ok: #6fc293;color-scheme:dark}}:root[data-theme=dark]{--bg: #14181a;--surface: #1b2124;--sunk: #111517;--ink: #e6eae8;--muted: #9aa5a9;--line: #2e383c;--accent: #e2814f;--accent-ink: #1b1110;--accent-soft: #3a261c;--grid: #6aa5dc;--part: #c9d3d1;--part-fill: rgba(201, 211, 209, .14);--sel: #e2814f;--warn: #e3b34a;--warn-soft: #362b12;--bad: #f0857a;--bad-soft: #3b1c19;--ok: #6fc293;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.55 var(--font-body)}button,input,select,textarea{font:inherit;color:inherit}h1,h2,h3{font-family:var(--font-display);font-weight:600;line-height:1.25;text-wrap:balance;margin:0}h2{font-size:1.15rem}h3{font-size:1rem}.num{font-family:var(--font-data);font-variant-numeric:tabular-nums}.muted{color:var(--muted)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.app{display:flex;flex-direction:column;min-height:100%}.topbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;padding:10px 16px;padding-top:calc(10px + env(safe-area-inset-top,0px));background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}.brand{font-family:var(--font-display);font-weight:600;font-size:1.05rem;letter-spacing:.02em;display:flex;align-items:center;gap:8px}.brand-mark{width:22px;height:22px;border:2px solid var(--accent);border-radius:4px;position:relative}.brand-mark:after{content:"";position:absolute;inset:4px 4px auto auto;width:8px;height:8px;border-top:2px solid var(--accent);border-right:2px solid var(--accent)}.proj{display:flex;align-items:center;gap:8px;min-width:0;flex:1 1 260px}.proj select{max-width:260px}.tools{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.save{font-size:12px;color:var(--muted);white-space:nowrap}.save.error{color:var(--bad)}.tabs{display:flex;gap:2px;padding:0 16px;background:var(--surface);border-bottom:1px solid var(--line);overflow-x:auto}.tab{border:0;background:none;padding:10px 14px;cursor:pointer;color:var(--muted);border-bottom:2px solid transparent;white-space:nowrap}.tab[aria-selected=true]{color:var(--ink);border-bottom-color:var(--accent);font-weight:600}main{flex:1;padding-block:16px;padding-inline:16px;min-width:0}.btn{border:1px solid var(--line);background:var(--surface);padding:6px 12px;border-radius:var(--r);cursor:pointer;white-space:nowrap}.btn:hover:not(:disabled){border-color:var(--muted)}.btn:disabled{opacity:.45;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn.small{padding:3px 8px;font-size:12px}.btn.ghost{border-color:transparent;background:transparent}.btn.danger{color:var(--bad)}input[type=number],input[type=text],select,textarea{border:1px solid var(--line);background:var(--surface);border-radius:4px;padding:4px 8px;min-width:0}input[type=number]{font-family:var(--font-data);width:7.5em}label.field{display:grid;gap:2px;font-size:12px;color:var(--muted)}label.field>span{display:flex;gap:6px;align-items:center}.banner{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;padding:8px 16px;font-size:13px}.banner.warn{background:var(--warn-soft);color:var(--ink);border-bottom:1px solid var(--line)}.chip{display:inline-flex;align-items:center;gap:4px;font-size:11px;padding:1px 7px;border-radius:99px;background:var(--sunk);color:var(--muted);white-space:nowrap}.chip.auto{background:var(--accent-soft);color:var(--accent)}.chip.warn{background:var(--warn-soft);color:var(--warn)}.chip.bad{background:var(--bad-soft);color:var(--bad)}.plan{display:grid;grid-template-columns:230px minmax(0,1fr) 320px;gap:12px;align-items:start}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);min-width:0}.panel>header{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--line)}.panel .body{padding:10px 12px}.palette{max-height:calc(100vh - 170px);overflow:auto}.palette details{border-bottom:1px solid var(--line)}.palette summary{padding:8px 12px;cursor:pointer;font-weight:600;font-size:13px}.palette ul{list-style:none;margin:0;padding:0 6px 8px;display:grid;gap:1px}.palette li button{width:100%;text-align:left;border:0;background:none;padding:5px 8px;border-radius:4px;cursor:pointer;display:flex;justify-content:space-between;gap:6px}.palette li button:hover{background:var(--sunk)}.palette li button[aria-pressed=true]{background:var(--accent);color:var(--accent-ink)}.palette .code{font-family:var(--font-data);font-size:11px;opacity:.75}.canvas-wrap{position:relative}.canvas-head{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;padding:8px 12px;border-bottom:1px solid var(--line)}.hint{font-size:12px;color:var(--muted)}svg.plan-svg{display:block;width:100%;height:auto;max-height:calc(100vh - 220px);background:var(--surface);touch-action:manipulation;-webkit-user-select:none;user-select:none}.plan-svg .gridline{stroke:var(--grid);stroke-width:1;stroke-dasharray:10 4 2 4;vector-effect:non-scaling-stroke;opacity:.75}.plan-svg .bubble circle{fill:var(--surface);stroke:var(--grid);vector-effect:non-scaling-stroke}.plan-svg .bubble text{fill:var(--grid);font-family:var(--font-data);text-anchor:middle;dominant-baseline:central}.plan-svg .dim{fill:var(--muted);font-family:var(--font-data);text-anchor:middle}.plan-svg .node{fill:transparent;stroke:none;cursor:pointer}.plan-svg .node:hover,.plan-svg .node.armed{fill:var(--accent-soft);stroke:var(--accent);vector-effect:non-scaling-stroke}.plan-svg .p-area{fill:var(--part-fill);stroke:var(--part);stroke-width:1;vector-effect:non-scaling-stroke;cursor:pointer}.plan-svg .p-line{stroke:var(--part);stroke-linecap:butt;cursor:pointer;opacity:.85}.plan-svg .p-wall{stroke:var(--muted);stroke-linecap:butt;cursor:pointer;opacity:.8}.plan-svg .p-col{fill:var(--part);cursor:pointer}.plan-svg .p-foot{fill:none;stroke:var(--part);stroke-dasharray:4 3;vector-effect:non-scaling-stroke;cursor:pointer}.plan-svg .ghost{opacity:.25;pointer-events:none}.plan-svg .sel{stroke:var(--sel)!important;fill-opacity:1}.plan-svg .p-col.sel,.plan-svg .p-area.sel{fill:var(--sel);fill-opacity:.35}.plan-svg .p-line.sel,.plan-svg .p-wall.sel{stroke:var(--sel);opacity:1}.plan-svg .p-label{fill:var(--ink);font-family:var(--font-data);pointer-events:none}.plan-svg .warn-dot{fill:var(--warn);pointer-events:none}.table-wrap{overflow-x:auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--r)}table{border-collapse:collapse;width:100%;font-size:13px}th,td{padding:6px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}th{font-weight:600;font-size:12px;color:var(--muted);background:var(--sunk);position:sticky;top:0;white-space:nowrap}td.r,th.r{text-align:right}tr.group td{background:var(--sunk);font-family:var(--font-display);font-weight:600}tr.clickable{cursor:pointer}tr.clickable:hover td,tr.selected td{background:var(--accent-soft)}tr.trace td{background:var(--bg);font-size:12px}tr.missing td:first-child{box-shadow:inset 3px 0 0 var(--bad)}.stack{display:grid;gap:16px}.row{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center}.between{justify-content:space-between}.kpis{display:flex;flex-wrap:wrap;gap:24px;padding:12px 16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r)}.kpi .v{font-family:var(--font-data);font-size:1.35rem;font-variant-numeric:tabular-nums}.kpi .l{font-size:12px;color:var(--muted)}.sign{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;padding:14px 16px;border:1px dashed var(--line);border-radius:var(--r);font-size:13px}.sign .slot{border-bottom:1px solid var(--muted);min-height:36px;display:flex;align-items:end}.disclaimer{font-size:12px;color:var(--muted);max-width:75ch}.inspector .body{display:grid;gap:10px}.param-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px 8px;align-items:end}.param-grid label.field{align-content:end}.param-grid label.field>input,.param-grid label.field>select{justify-self:start;max-width:100%}.qty-list{display:grid;grid-template-columns:1fr auto;gap:2px 12px;font-size:13px}.qty-list .num{text-align:right}.warns{display:grid;gap:4px;font-size:12px}.warns div{background:var(--warn-soft);color:var(--ink);padding:4px 8px;border-radius:4px}.modal-back{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0e0f80;display:grid;place-items:center;padding:16px;z-index:20}.modal{background:var(--surface);border-radius:10px;max-width:560px;width:100%;padding:20px;display:grid;gap:12px;max-height:90vh;overflow:auto}.setup{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px;align-items:start}@media(max-width:1100px){.plan{grid-template-columns:minmax(0,1fr) 300px}.plan .palette-panel{grid-column:1 / -1}.palette{max-height:220px}}@media(max-width:760px){.plan{grid-template-columns:minmax(0,1fr)}.proj{flex-basis:100%}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}.callout{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;padding:10px 14px;border-radius:var(--r);background:var(--accent-soft);border:1px solid var(--line);font-size:13px}.callout.bad{background:var(--bad-soft)}.chip.ok{background:color-mix(in srgb,var(--ok) 16%,transparent);color:var(--ok)}.chip.st-inspected{background:var(--warn-soft);color:var(--warn)}.chip.st-billed{background:var(--accent-soft);color:var(--accent)}.chip.st-paid{background:color-mix(in srgb,var(--ok) 16%,transparent);color:var(--ok)}.chips{display:inline-flex;flex-wrap:wrap;gap:4px;margin-left:6px;vertical-align:middle}.strong{font-weight:600}.grow{flex:1 1 220px}.split{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:16px;align-items:start}.seg{display:inline-flex;border:1px solid var(--line);border-radius:var(--r);overflow:hidden}.seg button{border:0;background:var(--surface);padding:4px 10px;cursor:pointer;font-size:13px;border-right:1px solid var(--line)}.seg button:last-child{border-right:0}.seg button[aria-checked=true],.seg button[aria-pressed=true]{background:var(--accent);color:var(--accent-ink)}.linkish{border:0;background:none;padding:0;color:inherit;cursor:pointer;text-decoration:underline dotted;text-underline-offset:3px}.row-actions{white-space:nowrap;text-align:right}tr.total td{background:var(--sunk);font-weight:600;border-top:2px solid var(--line)}tr.excluded td{color:var(--muted)}tr.excluded td:nth-child(2)>span:first-child{text-decoration:line-through}.price-table td{vertical-align:middle}.price-table input[type=number].price-in{width:7.5em;text-align:right}.price-table input.price-in.empty{border-color:var(--bad);background:var(--bad-soft)}.price-table input.qty-in{width:6.5em;text-align:right}.price-table input.unit-in{width:5em}.price-table td:nth-child(2) input[type=text]{width:100%;min-width:14em}.add-extra{align-items:end}.sumlist{display:grid;grid-template-columns:1fr auto;gap:4px 16px;margin:0;font-size:14px}.sumlist dt{color:var(--muted)}.sumlist dd{margin:0;text-align:right}.sumlist .strong{color:var(--ink);border-top:1px solid var(--line);padding-top:4px}.act-edit{display:flex;flex-wrap:wrap;gap:10px 12px;align-items:end}.preds{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;font-size:13px}.pred{display:inline-flex;align-items:center;gap:4px;background:var(--surface);border:1px solid var(--line);border-radius:99px;padding:2px 4px 2px 10px}.pred input.lag-in{width:4em;padding:1px 4px}.checklist{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:4px 12px}.checklist label{display:flex;align-items:center;gap:8px;padding:4px 8px;border-radius:4px;border:1px solid transparent;cursor:pointer;font-size:13px}.checklist label.on{border-color:var(--accent);background:var(--accent-soft)}.checklist label span:nth-child(2){flex:1}.daylist{list-style:none;margin:6px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:2px 12px;font-size:13px;max-height:220px;overflow:auto}.daylist li{display:flex;gap:8px;align-items:center}.daylist li .num{min-width:6.5em;color:var(--muted)}.gantt-wrap{overflow-x:auto}svg.gantt{display:block;font-family:var(--font-body)}svg.gantt.print{width:100%;height:auto}.gantt .g-off{fill:var(--sunk)}.gantt .g-month{stroke:var(--line)}.gantt .g-week{stroke:var(--line);stroke-dasharray:2 3}.gantt .g-axis{stroke:var(--muted)}.gantt .g-mtext{fill:var(--ink);font-size:12px;font-weight:600}.gantt .g-dtext{fill:var(--muted);font-size:10px;text-anchor:middle;font-family:var(--font-data)}.gantt .g-band{fill:transparent}.gantt .g-row:nth-of-type(2n) .g-band{fill:color-mix(in srgb,var(--sunk) 45%,transparent)}.gantt .g-row{cursor:pointer}.gantt .g-row.sel .g-band{fill:var(--accent-soft)}.gantt .g-label{fill:var(--ink);font-size:12px;dominant-baseline:central}.gantt .g-bar{fill:color-mix(in srgb,var(--accent) 35%,var(--surface));stroke:var(--accent);stroke-width:1}.gantt .g-bar.orphan{fill:var(--bad-soft);stroke:var(--bad);stroke-dasharray:3 2}.gantt .g-prog{fill:var(--ok);opacity:.85}.gantt .g-days{fill:var(--muted);font-size:11px;dominant-baseline:central;font-family:var(--font-data)}.gantt .g-link{fill:none;stroke:var(--muted);stroke-width:1;opacity:.55}.gantt .g-ms{fill:var(--surface);stroke:var(--accent);stroke-width:1.5}.gantt .g-ms.st-paid{fill:var(--ok);stroke:var(--ok)}.gantt .g-ms.st-billed,.gantt .g-ms.st-inspected{fill:var(--accent)}.gantt .g-mslabel{fill:var(--accent);font-size:10px;text-anchor:middle;font-family:var(--font-data)}.gantt .g-today{stroke:var(--bad);stroke-width:1.5;stroke-dasharray:4 3}.gantt .g-ttext{fill:var(--bad);font-size:10px}.site{display:grid;grid-template-columns:240px minmax(0,1fr);gap:12px;align-items:start}.site-list ul{list-style:none;margin:0;padding:6px;display:grid;gap:2px;max-height:calc(100vh - 220px);overflow:auto}.site-list li button{width:100%;display:flex;justify-content:space-between;gap:8px;border:0;background:none;padding:8px 10px;border-radius:4px;cursor:pointer;text-align:left}.site-list li button:hover{background:var(--sunk)}.site-list li button[aria-pressed=true]{background:var(--accent);color:var(--accent-ink)}.site-list li button[aria-pressed=true] .muted{color:inherit;opacity:.85}.send-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding-bottom:12px;border-bottom:1px solid var(--line)}.prog-list{display:grid;gap:6px;margin-top:8px}.prog{display:grid;grid-template-columns:minmax(0,1fr) minmax(120px,220px) auto auto 28px;gap:8px;align-items:center;padding:6px 8px;border:1px solid var(--line);border-radius:var(--r)}.prog.on{border-color:var(--accent);background:var(--accent-soft)}.prog-name{display:grid;min-width:0}.prog input[type=range]{width:100%;accent-color:var(--accent)}.prog input.pct-in{width:4.5em}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px;margin-top:8px}.photo-grid figure{margin:0;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:var(--surface)}.photo-grid img{display:block;width:100%;aspect-ratio:4 / 3;object-fit:cover}.photo-grid figcaption{display:flex;gap:4px;padding:6px}.photo-grid figcaption input{flex:1;min-width:0}.ph-missing{aspect-ratio:4 / 3;display:grid;place-items:center;color:var(--muted);background:var(--sunk);font-size:12px}textarea{width:100%;resize:vertical}@media(max-width:760px){.site{grid-template-columns:minmax(0,1fr)}.site-list ul{max-height:160px}.prog{grid-template-columns:minmax(0,1fr) auto auto 28px}.prog .prog-name{grid-column:1 / -1}.prog input[type=range]{grid-column:1 / 2}.send-bar .btn,.site .btn{padding:8px 12px}.split{grid-template-columns:minmax(0,1fr)}}.print-root{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;background:#5b6569;overflow:auto;color-scheme:light}.print-bar{position:sticky;top:0;z-index:2;display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;justify-content:space-between;padding:10px 16px;background:var(--surface);color:var(--ink);border-bottom:1px solid var(--line)}.print-bar .hint{flex-basis:100%}.sheets{padding:24px 12px 48px;display:grid;gap:24px;justify-items:center}.sheet{--ink: #1c2224;--muted: #5b6569;--line: #b9c1be;--sunk: #eef0ee;--accent: #a94a1c;--ok: #2e6f4a;--bad: #b42318;--surface: #fff;--bg: #fff;width:210mm;min-height:297mm;padding:14mm 14mm 12mm;background:#fff;color:#1c2224;box-shadow:0 4px 24px #00000059;font:11.5px/1.5 var(--font-body);display:flex;flex-direction:column;gap:10px}.sheet.landscape,.is-landscape .sheet{width:297mm;min-height:210mm}.doc-head{display:grid;gap:4px;border-bottom:2px solid #1c2224;padding-bottom:8px}.doc-brand{font-family:var(--font-display);color:var(--accent);font-size:11px;letter-spacing:.05em}.doc-head h1{font-size:17px}.doc-sub{color:var(--muted)}.doc-head dl{display:flex;flex-wrap:wrap;gap:2px 18px;margin:2px 0 0}.doc-head dt{color:var(--muted)}.doc-head dt:after{content:":"}.doc-head dd{margin:0 0 0 -14px;font-weight:500}.doc-h2{font-size:13px;margin-top:6px}.doc-p{margin:0;white-space:pre-wrap}.doc-table{width:100%;border-collapse:collapse;font-size:11px}.doc-table.small,.doc-table .small{font-size:10px}.doc-table th,.doc-table td{border:1px solid var(--line);padding:3px 6px;vertical-align:top;position:static;background:none;color:inherit}.doc-table th{background:var(--sunk);font-weight:600;text-align:center;white-space:normal}.doc-table .r{text-align:right;font-family:var(--font-data);font-variant-numeric:tabular-nums;white-space:nowrap}.doc-table th.r{font-family:var(--font-body)}.doc-table .c{text-align:center}.doc-table tr.g td{background:var(--sunk);font-weight:600}.doc-table tr.sub td{font-style:italic}.doc-table tr.tot td{font-weight:700;border-top:2px solid #1c2224}.doc-table tr.tot.big td{font-size:12.5px}.doc-table tr.muted td{color:var(--muted)}.doc-table thead{display:table-header-group}.doc-table tr{break-inside:avoid}.doc-note{margin:0;color:var(--muted);font-size:10.5px}.doc-note.bad{color:var(--bad)}.doc-baht{margin:0;text-align:right;font-weight:600}.doc-progress{display:grid;gap:6px}.doc-progress .bar{position:relative;height:14px;background:var(--sunk);border:1px solid var(--line)}.doc-progress .act{position:absolute;inset:0 auto 0 0;background:var(--ok)}.doc-progress .plan{position:absolute;top:-4px;bottom:-4px;width:2px;background:var(--accent)}.doc-photos{display:grid;grid-template-columns:1fr 1fr;gap:8px}.doc-photos figure{margin:0;break-inside:avoid}.doc-photos img{width:100%;aspect-ratio:4 / 3;object-fit:cover;display:block;border:1px solid var(--line)}.doc-photos figcaption{font-size:10px;color:var(--muted)}.keep{break-inside:avoid}.doc-sign{margin-top:auto;padding-top:14px;display:grid;gap:8px;break-inside:avoid}.sig-row{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;text-align:center}.sig-line{border-bottom:1px dotted #1c2224;height:34px;margin-bottom:4px}.doc-disc{margin:0;font-size:9.5px;color:var(--muted);border-top:1px solid var(--line);padding-top:6px}.sheet .gantt .g-label{font-size:11px}.sheet .gantt .g-row:nth-of-type(2n) .g-band{fill:#f4f5f4}.sheet .gantt .g-off{fill:#e9ecea}@media print{body.printing .app>*:not(.print-root){display:none!important}body.printing{background:#fff}.print-root{position:static;overflow:visible;background:#fff}.print-bar{display:none}.sheets{display:block!important;padding:0}.sheet,.sheet.landscape,.is-landscape .sheet{display:block;width:100%!important;justify-self:stretch;min-height:0;padding:0;box-shadow:none;break-after:page}.sheet>*+*{margin-top:10px}.sheet:last-child{break-after:auto}.doc-table th{background:#eef0ee!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.gantt,.doc-progress,.doc-table tr.g td{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.acct-back{z-index:40}.modal.acct{max-width:760px}.acct-btn{display:inline-flex;align-items:center;gap:6px;max-width:240px}.acct-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.acct-card{border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;background:var(--bg)}.login-btns{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:8px}.btn.login{display:inline-flex;justify-content:center;padding:10px 14px;text-decoration:none;font-weight:600}.btn.login.google{border-color:var(--ink)}.btn.login.line{background:#06c755;border-color:#06c755;color:#fff}.btn.login.disabled{opacity:.45;pointer-events:none}.plan-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px}.plan-card{border:1px solid var(--line);border-radius:var(--r);padding:12px;display:grid;gap:8px;align-content:start;background:var(--surface)}.plan-card.featured{border-color:var(--accent);box-shadow:inset 0 3px 0 var(--accent)}.plan-card ul{margin:0;padding-left:18px;font-size:12px;display:grid;gap:2px}.plan-card .price{font-size:13px}.plan-card .price .num{font-size:1.5rem;font-weight:600}.plan-card .btn{justify-self:stretch;white-space:normal}ul.plain{margin:0;padding-left:18px}.checkout{display:grid;grid-template-columns:auto minmax(0,1fr);gap:16px;align-items:start;border:1px solid var(--accent);border-radius:var(--r);padding:14px}.qr-box{display:grid;gap:8px;justify-items:center}.qr{display:block;width:220px;height:220px;border:1px solid var(--line);border-radius:6px}.pay-amount{font-size:1.8rem;font-weight:600;line-height:1.2}.pay-amount span{font-size:1rem;font-weight:400}ol.steps{margin:0;padding-left:20px;font-size:13px;display:grid;gap:2px}.slip-preview{max-width:180px;max-height:240px;border:1px solid var(--line);border-radius:4px;justify-self:start}.lh-logo-preview{max-height:48px;border:1px solid var(--line);border-radius:4px;background:#fff}.access-bar{flex-basis:100%;display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;font-size:13px;padding:6px 10px;border-radius:var(--r);background:var(--warn-soft)}.access-bar.ok{background:color-mix(in srgb,var(--ok) 14%,transparent)}.bad-text{color:var(--bad)}.admin{padding:16px;max-width:1200px;width:100%;margin:0 auto}.slip-review{display:grid;grid-template-columns:minmax(0,360px) minmax(0,1fr);gap:16px;align-items:start;padding:12px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface)}.slip-review img{width:100%;border:1px solid var(--line);border-radius:4px}@media(max-width:640px){.checkout,.slip-review{grid-template-columns:minmax(0,1fr)}.qr-box{justify-self:center}}.doc-lh{display:flex;gap:10px;align-items:center}.doc-lh img{max-height:44px;max-width:120px;object-fit:contain}.doc-lh .lh-name{font-family:var(--font-display);font-weight:600;font-size:13px}.doc-lh .lh-sub{font-size:10px;color:var(--muted)}.doc-wm-note{font-size:10px;color:#b42318;font-weight:600}.wm{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-content:center;gap:30vh;pointer-events:none;z-index:3}.wm span{font-family:var(--font-display);font-size:110px;font-weight:600;color:#b4231821;transform:rotate(-30deg);white-space:nowrap;text-align:center}@media print{.wm{position:fixed;top:0;right:0;bottom:0;left:0;gap:0}.wm span:last-child{display:none}.wm span{font-size:120pt;color:#b423181f;-webkit-print-color-adjust:exact;print-color-adjust:exact}}.callout.ok{background:color-mix(in srgb,var(--ok) 14%,transparent)}.receipt-root{z-index:50}.sheet.receipt{gap:14px}.rc-head{display:flex;justify-content:space-between;gap:16px;border-bottom:2px solid #1c2224;padding-bottom:10px}.rc-seller{font-family:var(--font-display);font-weight:600;font-size:15px}.rc-title{text-align:right}.rc-title h1{font-size:20px}.rc-buyer{display:grid;grid-template-columns:max-content 1fr;gap:2px 12px;margin:0}.rc-buyer dt{color:var(--muted)}.rc-buyer dd{margin:0}.rc-sign{display:flex;justify-content:flex-end;text-align:center;margin-top:30px}.rc-sign>div{min-width:220px}details.buyer summary{cursor:pointer;font-size:13px;color:var(--muted)}
