:root{--green:#5a8f29;--bg:#f5f6f4;--text:#222;--muted:#6b6f68;--card:#fff;--border:#dde0da;--red:#b3261e;color:var(--text);background:var(--bg);font-family:Assistant,system-ui,Segoe UI,Arial,sans-serif}*{box-sizing:border-box}body{margin:0}button{background:var(--green);color:#fff;cursor:pointer;border:0;border-radius:8px;padding:10px 16px;font-size:1rem}button:disabled{opacity:.5;cursor:default}button.link{color:var(--green);background:0 0;padding:4px}button.big{width:100%;margin:12px 0;padding:18px;font-size:1.2rem}input,textarea{border:1px solid var(--border);border-radius:8px;width:100%;margin-top:4px;padding:10px;font-family:inherit;font-size:1rem}label{margin-bottom:12px;display:block}.center{place-items:center;min-height:100vh;padding:16px;display:grid}.card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:16px}.login{width:100%;max-width:360px}.login h1{color:var(--green);text-align:center}.error{color:var(--red)}.top{background:var(--card);border-bottom:1px solid var(--border);align-items:center;gap:16px;padding:10px 16px;display:flex}.top nav{flex:1;gap:12px;display:flex}.top a{color:var(--text);text-decoration:none}.top a.active{color:var(--green);font-weight:600}.search{margin-bottom:12px}.list{gap:8px;padding:0;list-style:none;display:grid}.row{flex-wrap:wrap;align-items:center;gap:4px 16px;padding:10px 14px;display:flex}.badge{color:#7a5b00;background:#fff4d6;border-radius:6px;padding:2px 8px;font-size:.85rem}button.secondary{color:var(--green);border:1px solid var(--green);background:#fff}a.button{background:var(--green);color:#fff;white-space:nowrap;border-radius:8px;padding:8px 14px;text-decoration:none}.title-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.check{align-items:center;gap:8px;margin-bottom:12px;display:flex}.check input{width:auto;margin:0}.clickable{color:inherit;text-decoration:none}.clickable:hover{border-color:var(--green)}.badge.ok{color:#2f5a10;background:#e6f2dc}.badge.warn{color:var(--red);background:#fde4e1}.status-line{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.form{grid-template-columns:1fr 1fr;gap:0 16px;display:grid}.form .wide{grid-column:1/-1}@media (width<=600px){.form{grid-template-columns:1fr}}.actions{flex-wrap:wrap;align-items:center;gap:10px;margin-top:8px;display:flex}.error.small{margin-top:4px;display:block}.ok-text{color:var(--green);font-weight:600}.section h3{margin-top:0}.compare{border-collapse:collapse;width:100%;margin-bottom:12px}.compare th,.compare td{text-align:start;border-bottom:1px solid var(--border);padding:6px 8px}.compare tr.differs td{background:#fff4d6;font-weight:600}.atid-row{border:1px solid var(--border);border-radius:8px}.atid-row button{margin-inline-start:auto;padding:6px 14px}.code{background:var(--bg);border-radius:4px;padding:2px 6px;font-family:monospace}.history{gap:10px;padding:0;list-style:none;display:grid}.history li{border-inline-start:3px solid var(--border);padding-inline-start:10px}select{border:1px solid var(--border);background:#fff;border-radius:8px;width:100%;margin-top:4px;padding:10px;font-family:inherit;font-size:1rem}.status{white-space:nowrap;border-radius:6px;padding:2px 8px;font-size:.85rem}.status-draft{color:#455a64;background:#eceff1}.status-signed{color:#0d47a1;background:#e3f2fd}.status-closed{color:#2f5a10;background:#e6f2dc}.status-cancelled{color:var(--red);background:#fde4e1}.chips{flex-wrap:wrap;gap:6px;margin-bottom:12px;display:flex}.chip{color:var(--text);border:1px solid var(--border);background:#fff;padding:6px 12px;font-size:.9rem}.chip.active{background:var(--green);color:#fff;border-color:var(--green)}.counters{grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:16px;display:grid}.counter{color:var(--text);text-align:center;flex-direction:column;align-items:center;padding:12px 6px;text-decoration:none;display:flex}.counter strong{color:var(--green);font-size:1.6rem}.counter span{color:var(--muted);font-size:.85rem}.alert{color:#fff;text-align:center;background:#0d47a1;padding:10px;font-weight:600;text-decoration:none;display:block}.pick{width:100%;color:var(--text);border:1px solid var(--border);text-align:start;background:#fff;flex-wrap:wrap;gap:4px 12px;display:flex}.pick:hover{border-color:var(--green)}.customer-box{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;display:flex}.order-form .card{margin-bottom:12px}.order-form h3,.order-actions h3,.sign-box h3{margin:0 0 10px;font-size:1.05rem}.grid3{grid-template-columns:1fr 1fr 1fr;gap:0 8px;display:grid}@media (width<=480px){.grid3{grid-template-columns:1fr 1fr}.grid3 label:first-child{grid-column:1/-1}}.line{border:1px solid var(--border);border-radius:8px;gap:6px;margin-bottom:8px;padding:8px;display:grid}.line input,.line select{margin-top:2px}.line-nums{grid-template-columns:1fr 1fr auto;align-items:end;gap:8px;display:grid}.line-nums label{margin:0;font-size:.85rem}.line-sum{text-align:end;min-width:70px;padding:10px 4px;font-weight:600}.line-foot{align-items:center;gap:8px;display:flex}.small-input{padding:6px 8px;font-size:.9rem}button.danger,.link.danger{color:var(--red)}.danger-btn{background:var(--red)}.sum-row{justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;display:flex}.num-input{width:130px;margin:0}.total-row{border-top:1px solid var(--border);padding-top:8px;font-size:1.1rem}.sticky-actions{background:var(--bg);border-top:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:10px;padding:10px 0;display:flex;position:sticky;bottom:0}.sticky-actions button:last-of-type{flex:1}.sign-box{margin-top:12px}.signer-row{align-items:end;gap:12px;display:flex}.signer-row .grow{flex:7;margin-bottom:8px}.signer-row .muted{flex:3;padding-bottom:20px}.sigpad{border:2px dashed var(--border);background:#fff;border-radius:8px;margin-bottom:8px;position:relative}.sigpad canvas{touch-action:none;width:100%;height:180px;display:block}.sigpad-hint{text-align:center;color:#bbb;pointer-events:none;position:absolute;top:45%;left:0;right:0}.sigpad button{top:4px;position:absolute;inset-inline-end:4px}.order-actions{gap:8px;margin-bottom:12px;display:grid}.close-form{border-top:1px solid var(--border);padding-top:8px}.public-page{max-width:820px;margin:0 auto;padding:12px}.public-bar{justify-content:center;margin-bottom:12px;display:flex}.doc{border:1px solid var(--border);background:#fff;border-radius:8px;padding:20px;font-size:.95rem;line-height:1.45}.doc h4{color:var(--green);margin:0 0 4px;font-size:.9rem}.doc-head{border-bottom:2px solid var(--green);grid-template-columns:1fr auto 1fr;align-items:start;gap:12px;margin-bottom:12px;padding-bottom:10px;display:grid}.doc-brand strong{color:var(--green);font-size:1.2rem}.doc-title{text-align:center}.doc-title strong{font-size:1.1rem}.doc-trial{color:var(--red);font-size:.8rem}.doc-business{text-align:end;font-size:.85rem}.doc-grid{grid-template-columns:1fr 1fr;gap:16px;margin-bottom:12px;display:grid}.doc-desc{white-space:pre-wrap;margin:0 0 12px}.doc-lines{border-collapse:collapse;width:100%;margin-bottom:12px}.doc-lines th,.doc-lines td{border-bottom:1px solid var(--border);text-align:start;padding:6px}.doc-lines th:not(:first-child),.doc-lines td:not(:first-child){text-align:end;width:18%}.doc-lines tfoot td{border:0}.doc-lines tfoot td:first-child{text-align:end}.doc-total td{font-size:1.05rem;font-weight:700;border-top:2px solid var(--text)!important}.doc-sign img{border-bottom:1px solid var(--text);max-width:260px;max-height:110px;display:block}.doc-sign-empty{border-bottom:1px solid var(--text);width:260px;height:80px}.doc-foot{border-top:1px solid var(--border);color:var(--muted);margin-top:12px;font-size:.8rem}.ltr-start{text-align:end}@media (width<=520px){.doc{padding:12px;font-size:.9rem}.doc-head{grid-template-columns:1fr 1fr}.doc-title{order:-1;grid-column:1/-1}.doc-grid{grid-template-columns:1fr}}@media print{@page{size:A4;margin:0}body,:root{background:#fff}body{margin:0;padding:12mm}.no-print,.top,.alert,.sticky-actions{display:none!important}.page,.public-page{max-width:none;padding:0}.doc{border:0;padding:0;font-size:10.5pt}.doc-head{grid-template-columns:1fr auto 1fr!important}.doc-title{order:0!important;grid-column:auto!important}.doc-grid{grid-template-columns:1fr 1fr!important}}.form-grid{grid-template-columns:1fr 1fr;gap:0 12px;display:grid}@media (width<=480px){.form-grid{grid-template-columns:1fr}}.doc-pay{border:1px solid var(--green);background:#f6faf2;border-radius:6px;margin-top:12px;padding:8px 10px}.pre{white-space:pre-wrap}.wa-row{max-width:260px}a.button.disabled{opacity:.5}.inline-check{width:auto;margin:0}.badge.warn a{color:inherit;font-weight:600}.line-note{color:var(--muted);font-size:.85em}.doc-brand img{width:100%;max-width:210px;height:auto;display:block}.top-logo{width:auto;height:34px;display:block}.login-logo{width:100%;max-width:280px;height:auto}@media print{.doc-brand img{max-width:190px}}.top{flex-wrap:wrap;row-gap:6px}@media (width<=480px){.top{gap:10px;padding:8px 10px}.top-logo{height:26px}.top nav{gap:10px;font-size:.95rem}}.doc-business{text-align:start;justify-self:end;line-height:1.35}.photos{margin:12px 0}button.photos-toggle{padding:6px 12px;font-size:.9rem}.photos-panel{margin-top:8px;padding:12px}.photos-group{margin-top:10px}.photos-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.photos-pick{gap:6px;display:flex}.photos-grid{grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:8px;margin-top:6px;display:grid}button.photo-thumb{aspect-ratio:1;background:#eee;border-radius:8px;place-items:center;padding:0;display:grid;overflow:hidden}.photo-thumb img{object-fit:cover;width:100%;height:100%;display:block}.photo-viewer{z-index:50;background:#000000bf;place-items:center;padding:12px;display:grid;position:fixed;inset:0}.photo-viewer-box{background:var(--card);border-radius:12px;flex-direction:column;gap:8px;max-width:100%;max-height:100%;padding:10px;display:flex}.photo-viewer-box img{object-fit:contain;border-radius:8px;max-width:100%;max-height:75vh}@media print{.photos,.photo-viewer{display:none!important}}.check-row{align-items:flex-start;gap:.5rem;margin:.75rem 0;font-weight:400;display:flex}.check-row input{width:auto;margin-top:.2rem}.quote-draft{color:#455a64;background:#eceff1}.quote-sent{color:#0d47a1;background:#e3f2fd}.quote-approved{color:#2f5a10;background:#e6f2dc}.quote-rejected{color:var(--red);background:#fde4e1}.grid2{grid-template-columns:1fr 1fr;gap:0 8px;display:grid}.quote-line .ql-top{grid-template-columns:auto 120px 1fr;align-items:center;gap:6px;display:grid}.ql-num{color:var(--muted);text-align:center;min-width:1.4em;font-size:.85rem}.ql-nums{grid-template-columns:1fr 1fr 1fr auto;align-items:end;gap:8px;display:grid}.ql-nums label{margin:0;font-size:.85rem}.ql-nums .staff{color:var(--muted)}@media (width<=520px){.quote-line .ql-top{grid-template-columns:auto 1fr}.quote-line .ql-top input:last-child{grid-column:1/-1}.ql-nums{grid-template-columns:1fr 1fr}}.picker{border-color:var(--green);margin-top:8px}.product-pick{grid-template-columns:1fr auto;align-items:center;gap:2px 12px;display:grid}.product-pick .pp-desc,.product-pick .muted{grid-column:1}.product-pick .pp-price{white-space:nowrap;grid-area:1/2/span 2;font-weight:600}.profit{background:#fff8e6;border-radius:8px;flex-wrap:wrap;gap:4px 16px;margin-top:10px;padding:8px 10px;font-size:.9rem;display:flex}.tabs{margin-bottom:4px}.center-text{text-align:center}.doc-approved{color:var(--green);border:2px solid var(--green);border-radius:6px;margin-top:4px;padding:0 8px;font-weight:700;display:inline-block}.quote-lines th:first-child,.quote-lines td:first-child{width:4%;color:var(--muted);text-align:start!important}.quote-lines th:nth-child(2),.quote-lines td:nth-child(2){width:13%;font-size:.85em;text-align:start!important}.quote-lines th:nth-child(3),.quote-lines td:nth-child(3){width:auto;text-align:start!important}.quote-lines th:nth-child(4),.quote-lines td:nth-child(4){width:8%}.quote-lines th:nth-child(5),.quote-lines td:nth-child(5),.quote-lines th:nth-child(6),.quote-lines td:nth-child(6){width:13%}.quote-lines .sku{word-break:break-all}.quote-foot p{color:var(--text);font-size:.9rem}.order-actions .badge{margin-inline-end:6px;text-decoration:none}.customer-details dl{grid-template-columns:auto 1fr;gap:2px 12px;margin:6px 0 0;font-size:.92rem;display:grid}.customer-details dt{color:var(--muted)}.customer-details dd{text-align:start;margin:0}.customer-box{align-items:flex-start}.save-state{white-space:nowrap}.quote-cancelled{color:#6a1b9a;background:#f3e5f5}:root{--bg:#eef1ea;--graphite:#2f3532;--plate:#fff;--sage:#eef1ea;--led:#6fbf2e;--amber:#d08a0e}body{background:var(--sage)}.top{background:var(--plate);box-shadow:0 1px 0 var(--border);border-bottom:0;padding:8px 16px}.top nav a{color:#4b524d;border-bottom:2px solid #0000;padding:6px 2px;font-weight:600}.top nav a.active{color:var(--graphite);border-bottom-color:var(--green)}.dash{gap:20px;display:grid}.dash-hello h2{color:var(--graphite);letter-spacing:-.01em;margin:4px 0 2px;font-size:1.6rem;font-weight:800}.dash-hello p{color:var(--muted);margin:0}.keypad{grid-template-columns:repeat(5,1fr);gap:12px;display:grid}.key{background:var(--plate);min-height:112px;color:var(--graphite);border:1px solid #dfe3db;border-radius:14px;flex-direction:column;justify-content:flex-end;gap:2px;padding:14px 16px;text-decoration:none;transition:transform 80ms,box-shadow 80ms;display:flex;position:relative;box-shadow:inset 0 -4px #e3e7df}.key:hover{border-color:var(--green)}.key:active{transform:translateY(2px);box-shadow:inset 0 -1px #e3e7df}.key:focus-visible{outline:3px solid var(--green);outline-offset:2px}.key-title{font-size:1.15rem;font-weight:700}.key-hint{color:var(--muted);font-size:.85rem}.led{top:14px;background:#cfd5cb;border-radius:50%;width:9px;height:9px;position:absolute;inset-inline-start:16px}.led.on{background:var(--led);box-shadow:0 0 0 3px #6fbf2e2e,0 0 8px #6fbf2eb3}.keypad .key:first-child{background:var(--graphite);color:#fff;border-color:var(--graphite);box-shadow:inset 0 -4px #1f2421}.keypad .key:first-child .key-hint{color:#c9d0c6}.keypad .key:first-child .led{background:var(--led);box-shadow:0 0 8px #6fbf2ecc}.dash-cols{grid-template-columns:1fr 1.3fr;align-items:start;gap:16px;display:grid}.panel{background:var(--plate);border:1px solid #dfe3db;border-radius:14px;padding:16px 18px}.panel h3{color:var(--graphite);margin:0 0 10px;font-size:1.05rem;font-weight:700}.panel-empty{color:var(--muted);margin:0}.todo,.recent{margin:0;padding:0;list-style:none}.todo li+li,.recent li+li{border-top:1px solid #edf0ea}.todo a{color:var(--text);align-items:center;gap:12px;padding:10px 0;text-decoration:none;display:flex}.todo a:hover{color:var(--green)}.todo-n{color:#8a5a00;background:#fff4dd;border-radius:50%;place-items:center;min-width:2.1em;height:2.1em;font-weight:800;display:grid}.recent a{color:var(--text);grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:9px 0;text-decoration:none;display:grid}.recent a:hover strong{color:var(--green)}.recent-main{flex-direction:column;min-width:0;display:flex}.recent-main strong{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.recent-side{flex-direction:column;align-items:flex-end;gap:3px;font-weight:600;display:flex}.kind{border-radius:6px;padding:3px 8px;font-size:.78rem;font-weight:700}.kind-order{color:#3f6b1a;background:#e8efe1}.kind-quote{color:#2d4a6b;background:#e6ecf3}@media (width<=760px){.keypad{grid-template-columns:1fr 1fr}.dash-cols{grid-template-columns:1fr}.key{min-height:96px}}@media (prefers-reduced-motion:reduce){.key{transition:none}}@media (width<=600px){.top{flex-wrap:nowrap;gap:10px;padding:8px 12px}.top nav{scrollbar-width:none;white-space:nowrap;gap:14px;overflow-x:auto}.top nav::-webkit-scrollbar{display:none}.top>button.link{white-space:nowrap;padding:4px 0;font-size:.85rem}.dash-hello h2{font-size:1.4rem}}.ql-nums{grid-template-columns:1fr 1.3fr auto 1fr auto}.ql-nums .vat-toggle{color:var(--muted);white-space:nowrap;cursor:pointer;align-items:center;gap:4px;margin:0 0 10px;font-size:.8rem;display:flex}.ql-nums .vat-toggle input{width:auto;margin:0}.ql-nums .vat-toggle:has(input:checked){color:var(--green);font-weight:700}@media (width<=520px){.ql-nums{grid-template-columns:1fr 1fr}}.status.project-active{color:#2f5a10;background:#e6f2dc}.status.project-on_hold{color:#7a5b00;background:#fff4d6}.status.project-closed{color:#455a64;background:#eceff1}.status.project-cancelled{color:var(--red);background:#fde4e1}.project-row{color:var(--text);grid-template-columns:1fr auto auto;align-items:center;gap:8px 20px;padding:12px 16px;text-decoration:none;display:grid}.project-main{flex-direction:column;min-width:0;display:flex}.project-main strong{font-size:1.05rem}.project-stage{flex-direction:column;align-items:center;gap:4px;min-width:96px;display:flex}.project-side{flex-direction:column;align-items:flex-end;gap:3px;display:flex}.stage-meter{direction:rtl;gap:3px;display:inline-flex}.stage-meter i{background:#dfe3db;border-radius:2px;width:9px;height:9px}.stage-meter i.on{background:var(--green)}.new-project{margin-bottom:12px}@media (width<=600px){.project-row{grid-template-columns:1fr auto}.project-stage{flex-direction:row;grid-column:1/-1;justify-content:flex-start}}.project-sub{color:var(--muted);margin:0 0 12px}.project-sub a{color:inherit;-webkit-text-decoration:underline #c5ccc0;text-decoration:underline #c5ccc0}.stages{counter-reset:st;grid-auto-columns:minmax(72px,1fr);grid-auto-flow:column;gap:0;margin:0 0 14px;padding:0;list-style:none;display:grid;overflow-x:auto}.stages li{text-align:center;position:relative}.stages li:before{content:"";top:13px;background:#dfe3db;width:100%;height:3px;position:absolute;inset-inline-start:50%}.stages li:last-child:before{display:none}.stages li.done:before{background:var(--green)}.stages button{color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:0;flex-direction:column;align-items:center;gap:4px;width:100%;padding:4px 2px;font-size:.8rem;display:flex;position:relative}.stages button:disabled{cursor:default}.stages i{box-sizing:border-box;background:#fff;border:3px solid #dfe3db;border-radius:50%;width:20px;height:20px}.stages li.done i{background:var(--green);border-color:var(--green)}.stages li.now i{border-color:var(--green);background:#fff;box-shadow:0 0 0 4px #5a8f292e}.stages li.now button{color:var(--graphite);font-weight:700}.stages button:not(:disabled):hover span{color:var(--green)}.stages li:has(+.stage-add):before{display:none}.stages .stage-x{top:-2px;width:auto;color:var(--muted);opacity:.6;padding:0 4px;font-size:.7rem;position:absolute;inset-inline-end:4px}.stages .stage-x:hover{color:var(--red);opacity:1}.stages .stage-add i{color:var(--muted);border-style:dashed;place-items:center;font-style:normal;font-weight:700;line-height:1;display:grid}.project-tabs{margin-bottom:10px}.mail-list{gap:8px;margin:10px 0;padding:0;list-style:none;display:grid}.mail-row{background:#fff;border:1px solid #e3e7df;border-radius:10px;min-width:0;padding:8px 12px}.mail-row.mail-out{border-inline-start:3px solid var(--green)}.mail-row.mail-in{border-inline-start:3px solid #d9a33a}.mail-row.mail-failed{border-color:var(--red)}.mail-head{width:100%;color:inherit;font:inherit;text-align:start;cursor:pointer;background:0 0;border:0;flex-wrap:wrap;align-items:center;gap:4px 10px;padding:0;display:flex}div.mail-head{cursor:default}.mail-subject{overflow-wrap:anywhere;min-width:0}.mail-when{margin-inline-start:auto}.mail-who{overflow-wrap:anywhere;margin-top:2px}.mail-to{border:1px solid var(--border);border-radius:8px;margin:0;padding:4px 10px}.mail-to .check-row{margin:.4rem 0}.template-fields{margin:4px 0 10px;padding-inline-start:18px}.template-fields code{direction:rtl;unicode-bidi:isolate;background:#f1f3ee;border-radius:4px;padding:0 4px}.compact-form{gap:8px;margin-bottom:14px;display:grid}.project-cols{grid-template-columns:1.6fr 1fr;align-items:start;gap:16px;display:grid}.project-side-col{gap:12px;display:grid}.project-side-col h3{margin:0}.project-side-col h4{margin:12px 0 4px;font-size:.9rem}@media (width<=860px){.project-cols{grid-template-columns:1fr}.project-side-col{order:-1}}.project-sum{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;display:grid}.project-sum>div{flex-direction:column;gap:2px;display:flex}.project-sum strong{color:var(--graphite);font-size:1.25rem}.project-sum p{grid-column:1/-1;margin:0}.pre{white-space:pre-wrap;margin:0}.contacts{gap:8px;margin:8px 0 0;padding:0;list-style:none;display:grid}.contact-links{flex-wrap:wrap;gap:4px 12px;font-size:.9rem;display:flex}.wa-link{color:#128c4b}.contact-edit{grid-template-columns:1fr 1fr 1fr 1.2fr auto;align-items:center;gap:6px;margin-bottom:6px;display:grid}@media (width<=600px){.contact-edit{grid-template-columns:1fr 1fr}}.link-docs{gap:6px;margin:8px 0;padding:0;list-style:none;display:grid}.link-docs li{border-top:1px solid #edf0ea;justify-content:space-between;align-items:center;gap:10px;padding:6px 0;display:flex}.project-status-actions{flex-wrap:wrap;gap:8px;display:flex}.composer{gap:8px;margin-bottom:12px;display:grid}.composer textarea{box-sizing:border-box;resize:vertical;width:100%}.composer-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.composer-row input{width:auto}.chip-n{background:#00000014;border-radius:8px;margin-inline-start:6px;padding:0 6px;font-size:.75rem}.timeline{gap:4px;display:grid}.timeline ul{margin:0;padding:0;list-style:none}.tl-day{z-index:1;color:var(--muted);background:var(--sage,var(--bg));margin:10px 0 4px;padding:4px 0;font-size:.85rem;position:sticky;top:0}.tl-item{grid-template-columns:32px 1fr;gap:10px;padding-bottom:12px;display:grid;position:relative}.tl-item:before{content:"";top:32px;bottom:0;background:#dfe3db;width:2px;position:absolute;inset-inline-start:15px}.tl-icon{width:32px;height:32px;color:var(--graphite);background:#fff;border:1px solid #dfe3db;border-radius:50%;place-items:center;font-size:.95rem;display:grid}.tl-body{background:#fff;border:1px solid #e3e7df;border-radius:10px;min-width:0;padding:8px 12px}.tl-head{flex-wrap:wrap;align-items:center;gap:4px 10px;display:flex}.tl-kind{color:var(--muted);font-size:.78rem;font-weight:700}.tl-time{margin-inline-start:auto}.tl-text{white-space:pre-wrap;overflow-wrap:anywhere;margin:6px 0 0}.tl-text.clamp{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.tl-foot{gap:12px;display:flex}.tl-foot:empty{display:none}.link.danger,.danger{color:var(--red)}.tl-stage .tl-icon{background:var(--green);color:#fff;border-color:var(--green)}.tl-stage .tl-body{background:#f4f8ef;border-color:#d6e4c8}.tl-quote .tl-icon{color:#2d4a6b;background:#e6ecf3}.tl-service_order .tl-icon{color:#3f6b1a;background:#e8efe1}.tl-call .tl-icon,.tl-meeting .tl-icon,.tl-visit .tl-icon{color:#8a5a00;background:#fff4dd}.tl-email .tl-icon{color:#a33a2c;background:#fde9e7}.tl-whatsapp .tl-icon{color:#128c4b;background:#dcf5e4}.bubbles{gap:6px;display:grid;margin-top:8px!important}.bubble{background:#f1f3ef;border-radius:10px;justify-self:start;max-width:85%;padding:6px 10px;display:grid}.bubble.out{background:#dcf8c6;justify-self:end}.bubble-who{color:var(--muted);font-size:.72rem}.bubble-text{white-space:pre-wrap;overflow-wrap:anywhere}.wa-import{gap:8px;display:grid}.wa-import .actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.file-button{cursor:pointer;justify-self:start}.wa-help{background:#f4f8ef;border-radius:8px;padding:8px 12px}.wa-help p{margin:4px 0}.gmail-label{color:#a33a2c;white-space:nowrap;background:#fde9e7;border-radius:4px;padding:0 6px}:root{--green:#4f8a22;--green-d:#3d6d18;--green-soft:#edf5e5;--bg:#f3f5f0;--sage:#f3f5f0;--text:#1f2421;--muted:#5d645d;--border:#d8ddd2;--graphite:#262b28;--radius:16px;--side-w:240px;--tab-h:68px;font-size:17px;line-height:1.5}body{background:var(--bg);-webkit-font-smoothing:antialiased}h2{color:var(--graphite);letter-spacing:-.01em;margin:0;font-size:1.65rem;font-weight:800}h3{color:var(--graphite);font-size:1.2rem;font-weight:700}h4{font-size:1rem}.small{font-size:.9rem}a{color:var(--green-d)}.app{min-height:100vh}.side{top:0;bottom:0;width:var(--side-w);border-inline-end:1px solid var(--border);z-index:20;background:#fff;flex-direction:column;gap:18px;padding:22px 14px;display:flex;position:fixed;inset-inline-start:0;overflow-y:auto}.side-logo{width:160px;height:auto;margin:0 10px 6px}.side nav{gap:4px;display:grid}.side nav a{color:var(--text);border-radius:12px;align-items:center;gap:12px;padding:12px 14px;font-size:1.05rem;font-weight:700;text-decoration:none;display:flex}.side nav a:hover{background:var(--green-soft)}.side nav a.active{background:var(--green);color:#fff}.side-foot{border-top:1px solid var(--border);gap:4px;margin-top:auto;padding-top:14px;display:grid}.side-user{color:var(--muted);padding:0 14px 4px;font-weight:600}button.side-out{color:var(--text);background:0 0;justify-content:flex-start;gap:12px;padding:10px 14px}button.side-out:hover{color:var(--red);background:#fbecea}.topbar,.tabbar{display:none}.page{max-width:1180px;margin:0 auto;padding:32px 40px 56px}@media (width>=901px){.app{padding-inline-start:var(--side-w)}.sheet-backdrop{display:none!important}}@media (width<=900px){.side{display:none}.topbar{z-index:20;border-bottom:1px solid var(--border);background:#fff;justify-content:center;padding:10px 16px;display:flex;position:sticky;top:0}.top-logo{height:30px}.page{padding:20px 16px calc(var(--tab-h) + 32px)}.tabbar{z-index:30;height:calc(var(--tab-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);border-top:1px solid var(--border);background:#fff;grid-template-columns:repeat(5,1fr);display:grid;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -6px 18px #0000000d}.tabbar a,.tabbar button{color:var(--muted);background:0 0;border-radius:0;flex-direction:column;justify-content:center;align-items:center;gap:2px;min-height:0;padding:6px 2px;font-size:.8rem;font-weight:700;text-decoration:none;display:flex}.tabbar .icon{box-sizing:content-box;border-radius:999px;padding:4px 16px}.tabbar a.active,.tabbar button.active{color:var(--green-d)}.tabbar a.active .icon,.tabbar button.active .icon{background:var(--green-soft)}.sheet-backdrop{top:0;left:0;right:0;bottom:calc(var(--tab-h) + env(safe-area-inset-bottom));z-index:25;background:#14181461;align-items:flex-end;display:flex;position:fixed}.sheet{background:#fff;border-radius:22px 22px 0 0;gap:2px;width:100%;max-height:82vh;padding:18px 14px 12px;display:grid;overflow-y:auto}.sheet a,button.sheet-out{color:var(--text);background:0 0;border-radius:12px;justify-content:flex-start;align-items:center;gap:14px;padding:14px;font-size:1.1rem;font-weight:700;text-decoration:none;display:flex}.sheet a.active{background:var(--green-soft);color:var(--green-d)}button.sheet-out{color:var(--red);border-top:1px solid var(--border);border-radius:0;margin-top:6px}.sheet-user{color:var(--muted);margin:0 6px 8px}.sticky-actions{bottom:calc(var(--tab-h) + env(safe-area-inset-bottom))}h2{font-size:1.45rem}}@media print{.side,.topbar,.tabbar,.sheet-backdrop{display:none!important}.app{padding:0!important}}button,a.button{text-align:center;border-radius:12px;justify-content:center;align-items:center;gap:8px;min-height:46px;padding:10px 20px;font-family:inherit;font-size:1rem;font-weight:700;line-height:1.2;display:inline-flex}button:not(:disabled):not(.link):not(.chip):hover,a.button:hover{filter:brightness(.94)}.side button,.sheet button,.tabbar button,.page-tabs button,.stages button,.pick:hover,.mail-head:hover{filter:none!important}button.pick{text-align:start;border-radius:var(--radius);border:1px solid var(--border);justify-content:flex-start;min-height:58px;padding:14px 18px;font-weight:400}button.pick:hover{border-color:var(--green)}.product-pick .pp-desc{color:var(--graphite);font-weight:700}button.secondary,a.button.secondary{color:var(--green-d);border:1.5px solid var(--green);background:#fff}button.secondary:not(:disabled):hover,a.button.secondary:hover{background:var(--green-soft);filter:none}button.link{min-height:0;color:var(--green-d);padding:6px 4px;font-weight:700}button.link:hover{text-decoration:underline}button.danger-btn{background:var(--red)}a.button.wa{background:#1fae56}input,select,textarea{border:1.5px solid var(--border);min-height:50px;color:var(--text);background:#fff;border-radius:12px;margin-top:6px;padding:11px 14px;font-size:1.02rem}textarea{min-height:0;line-height:1.5}input:focus,select:focus,textarea:focus{border-color:var(--green);outline:none;box-shadow:0 0 0 3px #4f8a222e}input::placeholder,textarea::placeholder{color:#9aa196}input[type=checkbox],input[type=radio]{width:22px;height:22px;min-height:0;accent-color:var(--green);flex:none;margin:0;padding:0}label{color:var(--graphite);margin-bottom:16px;font-weight:700}label input,label select,label textarea,label span{font-weight:400}.check-row,.check{align-items:center;gap:10px;font-weight:600}.small-input{min-height:40px;padding:6px 10px}.num-input{min-height:42px}.card,.panel{border:1px solid var(--border);border-radius:var(--radius);background:#fff;padding:20px 22px;box-shadow:0 1px 2px #141e140a}.title-row{flex-wrap:wrap;row-gap:12px;margin-bottom:18px}.title-row h3{margin:0}.card .title-row{margin-bottom:12px}.section{margin-top:20px}.actions{gap:12px;margin-top:12px}.form-grid{gap:0 16px}@media (width<=600px){.form-grid,.form{grid-template-columns:1fr}.card,.panel{padding:16px}}.search{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 24 24' fill='none' stroke='%235d645d' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M20 20l-4-4'/%3E%3C/svg%3E") right 14px center no-repeat;min-height:54px;margin:0 0 14px;padding-inline-start:46px;font-size:1.05rem}.chips{gap:8px;margin-bottom:16px}.chip{border:1.5px solid var(--border);border-radius:999px;min-height:42px;padding:8px 16px;font-size:.95rem;font-weight:700}.chip:not(.active):hover{border-color:var(--green)}@media (width<=600px){.chips:not(.wrap){scrollbar-width:none;flex-wrap:nowrap;margin-inline:-16px;padding-inline:16px;overflow-x:auto}.chips::-webkit-scrollbar{display:none}.chip{flex:none}}.status,.badge,.kind{white-space:nowrap;border-radius:999px;padding:4px 12px;font-size:.85rem;font-weight:700}.list{gap:10px;margin:0}.row{gap:6px 18px;padding:16px 20px}.muted{color:var(--muted)}.item{color:var(--text);grid-template-columns:1fr auto;align-items:center;gap:4px 16px;padding:16px 20px;text-decoration:none;display:grid}.item-main{flex-direction:column;gap:3px;min-width:0;display:flex}.item-title{color:var(--graphite);overflow-wrap:anywhere;font-size:1.1rem;font-weight:700}.item-sub{color:var(--muted);flex-wrap:wrap;gap:2px 12px;font-size:.95rem;display:flex}.item-side{white-space:nowrap;flex-direction:column;align-items:flex-end;gap:6px;font-weight:700;display:flex}.clickable{transition:border-color .12s,box-shadow .12s}.clickable:hover{border-color:var(--green);box-shadow:0 2px 10px #4f8a221f}.empty{text-align:center;color:var(--muted);border:1.5px dashed var(--border);border-radius:var(--radius);background:#fff;padding:36px 16px}.empty strong{color:var(--graphite);margin-bottom:4px;font-size:1.1rem;display:block}a.back,button.back{border:1.5px solid var(--border);min-height:40px;color:var(--graphite);background:#fff;border-radius:999px;align-items:center;gap:6px;margin-bottom:16px;padding:6px 16px 6px 12px;font-size:.95rem;font-weight:700;text-decoration:none;display:inline-flex}a.back:hover,button.back:hover{border-color:var(--green);color:var(--green-d);filter:none}@media (width<=600px){.title-row>a.button,.title-row>button:not(.link){flex:100%}}.dash{gap:26px}.keypad{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px}.key{border-radius:var(--radius);gap:4px;min-height:130px;padding:18px}.key .icon{color:var(--green);flex:none;margin-bottom:auto}.keypad .key:first-child .icon{color:#b9e08f}.key .led{inset-inline:auto 18px;top:20px}.key-title{font-size:1.2rem}.key-hint{font-size:.9rem}.todo a{padding:12px 0;font-size:1.02rem}.recent a{padding:12px 0}@media (width<=600px){.keypad{grid-template-columns:1fr 1fr;gap:10px}.key{min-height:120px;padding:14px}}.project-head{flex-wrap:wrap;align-items:center;gap:8px 14px;margin-bottom:6px;display:flex}.project-head h2{overflow-wrap:anywhere}.page-tabs{border-bottom:2px solid var(--border);scrollbar-width:none;gap:6px;margin:6px 0 20px;display:flex;overflow-x:auto}.page-tabs::-webkit-scrollbar{display:none}.page-tabs button{color:var(--muted);background:0 0;border-bottom:3px solid #0000;border-radius:0;flex:none;min-height:50px;margin-bottom:-2px;padding:12px 18px;font-size:1.05rem}.page-tabs button:hover{color:var(--graphite)}.page-tabs button.active{color:var(--green-d);border-bottom-color:var(--green)}.overview{grid-template-columns:1fr 1fr;align-items:start;gap:16px;display:grid}.overview .wide{grid-column:1/-1}@media (width<=760px){.overview{grid-template-columns:1fr}}.stages{border:1px solid var(--border);border-radius:var(--radius);background:#fff;margin-bottom:18px;padding:14px 4px 10px}.stages button{min-height:0;font-size:.9rem}.stages .stage-x{min-height:0;padding:0 4px}.timeline-wrap{max-width:820px}.grid2>*,.grid3>*,.form-grid>*,.form>*,.ql-nums>*,.line-nums>*,.composer-row>*{min-width:0}input,select,textarea{min-width:0;max-width:100%}input[type=date],input[type=datetime-local]{width:100%}.composer-row input[type=datetime-local]{flex:200px;width:auto}
