@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Noto+Sans+Thai:wght@400;500;600;700&display=swap');
:root{--ink:#1f2937;--muted:#758097;--line:#e9edf3;--surface:#fff;--base:#f7f8fb;--brand:#7256e8;--brand-soft:#f0edff;--green:#168768;--amber:#bd7611;--rose:#d55d74}*{box-sizing:border-box}body{margin:0;background:var(--base);color:var(--ink);font-family:"DM Sans","Noto Sans Thai",sans-serif;font-size:14px}.app-shell{display:flex;min-height:100vh}.sidebar{width:250px;background:#202237;color:#c4c6d3;display:flex;flex-direction:column;padding:24px 14px;position:fixed;inset:0 auto 0 0;z-index:2}.brand{display:flex;gap:10px;align-items:center;color:#fff;text-decoration:none;font-size:19px;margin:0 10px 43px}.brand-mark{display:grid;place-items:center;width:33px;height:33px;border-radius:11px;background:linear-gradient(135deg,#9d83ff,#6f52e6);font-weight:700}.brand b{color:#a995ff}nav{display:grid;gap:5px}nav a{display:flex;gap:14px;align-items:center;border-radius:9px;color:inherit;text-decoration:none;padding:11px 13px;font-size:14px;font-weight:500}nav a span{width:16px;text-align:center;font-size:17px}nav a:hover,nav a.active{background:#36394f;color:#fff}.side-user{display:flex;align-items:center;gap:10px;margin-top:auto;padding:12px 10px;border-top:1px solid #383a4c;color:#fff}.side-user small,.job-row small,.tasks small,.finance-row small,.timeline-item small{display:block;color:var(--muted);margin-top:3px}.avatar{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:#e9a56d;color:#fff;font-weight:700}main{margin-left:250px;width:calc(100% - 250px);padding:30px 38px;overflow:hidden}header{display:flex;align-items:center;justify-content:space-between;margin-bottom:26px}h1{font-size:24px;margin:2px 0;font-weight:700;letter-spacing:-.4px}.eyebrow{font-size:12px;color:var(--muted);margin:0}.header-actions{display:flex;gap:9px;align-items:center}.primary{border:0;border-radius:9px;background:var(--brand);color:#fff;padding:10px 15px;font:inherit;font-weight:600;cursor:pointer;box-shadow:0 4px 10px #7256e833}.primary:hover{background:#6045d6}.primary:disabled{opacity:.45;cursor:not-allowed}.icon,.menu,.panel-head button{border:0;background:#fff;border-radius:8px;color:#50586c;padding:9px;cursor:pointer}.menu{display:none}.notice{padding:11px 15px;background:#fff7e3;color:#815d16;border:1px solid #ffe5a1;border-radius:10px;margin-bottom:20px}.notice code{background:#fff;padding:1px 4px;border-radius:3px}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:17px;margin-bottom:22px}.metrics article,.panel{background:var(--surface);border:1px solid var(--line);border-radius:13px}.metrics article{padding:18px}.metrics span{display:block;color:var(--muted);font-size:12px}.metrics strong{display:block;font-size:25px;margin:10px 0 3px;letter-spacing:-.5px}.metrics small{color:var(--muted);font-size:11px}.green{color:var(--green)!important}.amber{color:var(--amber)!important}.rose{color:var(--rose)!important}.grid-2{display:grid;grid-template-columns:1.2fr .8fr;gap:22px}.panel{padding:19px}.panel-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:13px}.panel h2{font-size:16px;margin:0}.panel-head a{font-size:12px;color:var(--brand);text-decoration:none}.job-list{display:grid}.job-row{display:flex;gap:11px;align-items:center;border-top:1px solid var(--line);padding:13px 2px;text-decoration:none;color:inherit}.color-dot{width:8px;height:8px;border-radius:50%;background:#8b96a8}.color-dot.confirmed,.stage.confirmed,.event.confirmed{background:#e3f8ef;color:#137957}.color-dot.quoted,.stage.quoted,.event.quoted{background:#fff1d9;color:#a86500}.color-dot.site_survey,.stage.site_survey,.event.site_survey{background:#e9f0ff;color:#3566c4}.color-dot.lead,.stage.lead,.event.lead{background:#f1efff;color:#6955cf}.job-row div{flex:1}.job-row b{font-size:13px}.stage{font-size:11px;font-style:normal;border-radius:20px;padding:4px 8px;background:#f0f2f5;color:#697386}.tasks p{position:relative;margin:0;padding:13px 0 13px 31px;border-top:1px solid var(--line)}.tasks p>span{position:absolute;left:1px;top:15px;color:var(--amber);background:#fff2d8;border-radius:50%;width:20px;height:20px;text-align:center;line-height:20px}.tasks b{font-size:13px}.toolbar{display:flex;justify-content:space-between;margin-bottom:17px}.filters{display:flex;gap:6px}.filters button{border:1px solid var(--line);background:#fff;border-radius:20px;padding:7px 12px;color:var(--muted)}.filters .selected{background:var(--brand-soft);color:var(--brand);border-color:#d9d1fe}.kanban{display:flex;gap:13px;overflow-x:auto;padding-bottom:14px;min-height:600px}.kanban-col{min-width:220px;width:220px}.kanban-col h3{font-size:12px;margin:0 0 10px;color:#525d70;display:flex;justify-content:space-between;align-items:center}.kanban-col h3 span{background:#eceef3;border-radius:20px;padding:2px 7px;font-size:10px}.kanban-card{background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px;margin-bottom:9px;box-shadow:0 2px 3px #1d253007}.kanban-card small{color:var(--muted);font-size:10px}.kanban-card>b{display:block;margin:7px 0;font-size:13px}.kanban-card p{font-size:11px;color:var(--muted);margin:4px 0}.kanban-card footer{border-top:1px solid var(--line);padding-top:9px;margin-top:10px;display:flex;align-items:center;justify-content:space-between;color:var(--brand);font-size:12px;font-weight:700}.kanban-card i{font-style:normal;color:#fff;background:#74a6c2;border-radius:50%;width:20px;height:20px;text-align:center;padding-top:3px;font-size:10px}.add-card{width:100%;border:1px dashed #cfd4de;background:transparent;border-radius:9px;color:#7b8495;padding:10px;cursor:pointer}.calendar{overflow:auto}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(110px,1fr));border-top:1px solid var(--line);border-left:1px solid var(--line)}.calendar-grid>b{padding:10px;background:#fafbfc;text-align:center;color:var(--muted);font-size:11px;border-right:1px solid var(--line)}.day{height:105px;padding:7px;border-right:1px solid var(--line);border-top:1px solid var(--line);font-size:11px}.day>span{color:var(--muted)}.event{margin:6px 0 0;border-radius:4px;padding:3px;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:#f1efff;color:#6955cf}.customer-table,.finance-table,.timeline-list,.stack{display:grid}.tr{display:grid;grid-template-columns:1.3fr 1fr 1fr .8fr;gap:10px;padding:14px 4px;border-top:1px solid var(--line);align-items:center}.th{padding:10px 4px 12px;color:#5d6880;font-size:12px;font-weight:700;border:0;background:#f7f9fc;border-radius:10px}.th span{letter-spacing:.2px}.finance-grid{align-items:start}.finance-head,.finance-row{grid-template-columns:1.7fr .7fr .7fr .7fr}.finance-row b,.timeline-item b{font-size:13px}.timeline-item{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;padding:14px 0;border-top:1px solid var(--line)}.timeline-item:first-child{border-top:0;padding-top:0}.timeline-amount{font-weight:700;white-space:nowrap}.stack{gap:22px}.compact-form{padding:0;gap:12px}.empty,.empty-page{text-align:center;color:var(--muted);padding:48px 15px}.empty-page{max-width:480px;margin:90px auto}.empty-page>span{color:var(--brand);font-size:40px}.empty-page h2{color:var(--ink)}dialog{border:0;border-radius:14px;box-shadow:0 20px 70px #11182744;width:min(500px,calc(100% - 32px));padding:0}dialog::backdrop{background:#15182766}.form{padding:22px;display:grid;gap:14px}.form header{margin:0}.form h2{margin:0;font-size:18px}.form header button{border:0;background:transparent;font-size:23px;cursor:pointer}.form label{display:grid;gap:6px;font-weight:600;font-size:12px}.form input,.form select,.form textarea{border:1px solid #dce1eb;border-radius:8px;padding:10px;font:inherit;color:var(--ink);width:100%;background:#fff}.form textarea{min-height:64px;resize:vertical}.two{display:grid;grid-template-columns:1fr 1fr;gap:11px}.form-note{background:#fff6dd;padding:10px;border-radius:8px;color:#8b6513;margin:0}
@media(max-width:1024px){.sidebar{width:72px;padding:24px 10px}.brand{margin:0 8px 42px;font-size:0}.brand-mark{font-size:18px}.sidebar nav a{justify-content:center;padding:12px}.sidebar nav a:not(.active){font-size:0}.sidebar nav a span{font-size:18px}.side-user{justify-content:center;padding:12px 0}.side-user div{display:none}main{margin-left:72px;width:calc(100% - 72px);padding:25px}.metrics{grid-template-columns:repeat(2,1fr)}.grid-2{grid-template-columns:1fr}}
@media(max-width:640px){.sidebar{transform:translateX(-100%);width:230px;transition:.2s}.sidebar.open{transform:translateX(0)}.sidebar.open+.main{filter:blur(2px)}.sidebar nav a{justify-content:flex-start;font-size:14px}.brand{font-size:19px}.side-user{justify-content:flex-start;padding:12px 10px}.side-user div{display:block}main{margin:0;width:100%;padding:18px 14px}header{align-items:flex-start;margin-bottom:21px}.menu{display:block;margin-right:8px}.header-actions .icon{display:none}.header-actions .primary{font-size:0;padding:10px 12px}.header-actions .primary:first-letter{font-size:17px}h1{font-size:18px}.metrics{grid-template-columns:1fr 1fr;gap:10px}.metrics article{padding:14px}.metrics strong{font-size:19px}.grid-2{gap:12px}.panel{padding:15px}.job-row em{display:none}.kanban{margin:0 -14px;padding:0 14px 14px}.calendar{padding:10px}.calendar-grid{grid-template-columns:repeat(7,100px)}.tr{grid-template-columns:1fr .9fr}.tr span:nth-child(3),.tr span:nth-child(4),.th span:nth-child(3),.th span:nth-child(4){display:none}.finance-head,.finance-row{grid-template-columns:1fr}.timeline-item{flex-direction:column;align-items:flex-start}.two{grid-template-columns:1fr}}
.ghost{display:inline-flex;align-items:center;justify-content:center;padding:10px 14px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink);text-decoration:none}.user-chip{display:inline-flex;align-items:center;padding:8px 12px;border-radius:999px;background:#fff;color:var(--muted);border:1px solid var(--line)}.flash{padding:12px 15px;border-radius:10px;margin-bottom:18px;border:1px solid transparent}.flash-success{background:#e9f8f1;border-color:#bfe7d0;color:#0e6b4d}.flash-error{background:#fff0f0;border-color:#f1c4c4;color:#9b2b2b}.flash-info{background:#eef4ff;border-color:#d9e5ff;color:#365a9e}.login-body{min-height:100vh;background:radial-gradient(circle at top left,#f0edff 0,#f7f8fb 40%,#fff 100%)}.login-shell{max-width:1080px;margin:0 auto;min-height:100vh;display:grid;grid-template-columns:1.05fr .95fr;gap:28px;padding:38px 22px;align-items:center}.login-hero,.login-card{background:#fff;border:1px solid var(--line);border-radius:24px;padding:28px}.brand-mark.large{width:56px;height:56px;font-size:26px;border-radius:18px;margin-bottom:18px}.login-hero h1{font-size:34px;line-height:1.1;margin:8px 0 12px}.login-copy{color:var(--muted);font-size:15px;line-height:1.7;max-width:550px}.login-tip{margin-top:22px;padding:14px;border-radius:14px;background:#f7f2ff;border:1px solid #e1d8ff}.login-tip p,.login-meta p{margin:8px 0 0}.login-tip code{display:inline-block;margin-top:10px;background:#fff;padding:6px 9px;border-radius:8px}.login-card h2{margin:0 0 12px}.login-form{padding:0}.login-meta{margin-top:14px;color:var(--muted)}.map-meta{font-size:11px}.map-link-row{display:flex;justify-content:space-between;gap:8px;align-items:center}.map-link-row a{color:var(--brand);text-decoration:none}.gallery-layout{align-items:start}.gallery-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.gallery-card{overflow:hidden;border:1px solid var(--line);border-radius:14px;background:#fff}.gallery-card img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;background:#eef2f6}.gallery-card-body{padding:14px}.gallery-card-body p{margin:8px 0 10px;color:var(--muted);line-height:1.6}.gallery-meta{display:flex;justify-content:space-between;gap:10px;font-size:12px;color:var(--muted)}@media(max-width:1024px){.login-shell{grid-template-columns:1fr;padding:24px}.gallery-grid{grid-template-columns:1fr 1fr}}@media(max-width:640px){.login-shell{padding:16px}.login-hero,.login-card{padding:20px;border-radius:18px}.login-hero h1{font-size:28px}.user-chip,.ghost{display:none}.gallery-grid{grid-template-columns:1fr}}
.inline-check{display:flex!important;align-items:center;gap:10px;font-size:13px;font-weight:600}.inline-check input{width:auto}.timeline-list>a.timeline-item{color:inherit;text-decoration:none}.timeline-list>a.timeline-item:hover b{color:var(--brand)}.timeline-item a{color:var(--brand);text-decoration:none}.brand-logo-preview{margin-bottom:16px;padding:18px;border:1px solid var(--line);border-radius:16px;background:#fffdfa;display:flex;justify-content:center;align-items:center;min-height:180px}.brand-logo-preview img{max-width:240px;max-height:140px;object-fit:contain}.receipt-body{background:linear-gradient(180deg,#f3efe8 0,#eef1f7 100%);padding:28px}.receipt-shell{max-width:980px;margin:0 auto}.receipt-actions{display:flex;justify-content:space-between;gap:12px;margin-bottom:18px}.receipt-paper{position:relative;background:linear-gradient(180deg,#fffdf9 0,#fff 100%);border:1px solid #eadfca;border-radius:24px;padding:38px;box-shadow:0 18px 50px #0f172a14;overflow:hidden}.receipt-paper:before{content:"";position:absolute;inset:0 auto 0 0;width:10px;background:linear-gradient(180deg,#c7a86d,#9f7f47)}.receipt-head{display:flex;justify-content:space-between;gap:20px;border-bottom:1px solid #e8dcc8;padding-bottom:24px;margin-bottom:22px}.receipt-brand-block{display:grid;gap:14px}.receipt-brand-top{display:flex;gap:18px;align-items:center}.receipt-logo{position:relative;width:76px;height:76px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 30% 30%,#f3d7c3 0,#c29279 45%,#8c5f49 100%);box-shadow:inset 0 0 0 1px #e8c8af;overflow:hidden}.receipt-logo-image-wrap{background:#fff}.receipt-logo-image{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;padding:8px;background:#fff}.receipt-logo-image-wrap .receipt-logo-ring,.receipt-logo-image-wrap .receipt-logo-letter{display:none}.receipt-logo-fallback{background:radial-gradient(circle at 30% 30%,#f3d7c3 0,#c29279 45%,#8c5f49 100%)}.receipt-logo-fallback .receipt-logo-ring,.receipt-logo-fallback .receipt-logo-letter{display:block}.receipt-logo-ring{position:absolute;inset:7px;border:1px solid rgba(255,255,255,.55);border-radius:50%}.receipt-logo-letter{position:relative;font-size:34px;font-weight:700;color:#fff8ef;letter-spacing:1px}.receipt-brand-copy h1{margin:2px 0 6px;font-size:30px;line-height:1.05;letter-spacing:-.6px}.receipt-brand-copy p{margin:0;color:#6e5d53}.receipt-kicker{font-size:11px;text-transform:uppercase;letter-spacing:2.4px;color:#a07d4b!important;margin-bottom:8px!important}.receipt-contact-row{display:flex;flex-wrap:wrap;gap:10px 16px;color:#7c6f67;font-size:12px}.receipt-contact-row span{position:relative}.receipt-contact-row span+span:before{content:"•";position:absolute;left:-10px;color:#bea37a}.receipt-head h2{margin:10px 0 12px;font-size:24px}.receipt-head p{margin:4px 0;color:#6f7786}.receipt-meta-box{text-align:right;min-width:240px}.receipt-chip{display:inline-flex;align-items:center;padding:7px 12px;border-radius:999px;background:#f7efe2;color:#9f7f47;border:1px solid #ead6b2;font-size:11px;font-weight:700;letter-spacing:.8px;text-transform:uppercase}.receipt-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:20px}.receipt-grid article{border:1px solid #eee4d4;border-radius:16px;padding:18px;background:#fffdfa}.receipt-grid h3,.receipt-summary h3{margin:0 0 8px;font-size:15px;color:#7e6744}.receipt-grid p,.receipt-summary p{margin:5px 0;color:var(--ink)}.receipt-table{width:100%;border-collapse:collapse;margin-bottom:22px}.receipt-table th,.receipt-table td{border:1px solid #eadfce;padding:13px 12px;text-align:left;vertical-align:top}.receipt-table th{background:#f8f3eb;font-size:12px;color:#8a7350;text-transform:uppercase;letter-spacing:.4px}.receipt-summary{display:grid;grid-template-columns:1.3fr .7fr;gap:18px;align-items:start}.receipt-total-box{border:1px solid #eadcc4;border-radius:16px;padding:20px;text-align:right;background:linear-gradient(180deg,#fffaf1 0,#fff 100%)}.receipt-total-box span{display:block;color:#8a7350;margin-bottom:6px;text-transform:uppercase;font-size:11px;letter-spacing:.6px}.receipt-total-box strong{font-size:30px;color:#9f7f47}.receipt-footer{display:grid;grid-template-columns:1fr 1fr;gap:40px;margin-top:42px}.receipt-sign{padding-top:26px;border-top:1px solid #e8dcc8;text-align:center}.receipt-sign span{display:block;color:var(--muted);margin-bottom:10px}
@media print{body.receipt-body{background:#fff;padding:0}.receipt-actions{display:none}.receipt-paper{box-shadow:none;border:0;border-radius:0;padding:0;background:#fff}.receipt-paper:before{display:none}}
.job-badges{display:grid!important;justify-items:end;gap:5px;flex:0!important}.payment-badge{font-size:11px;font-style:normal;border-radius:20px;padding:4px 8px;background:#f0f2f5;color:#697386;white-space:nowrap;font-weight:700}.payment-badge.unpaid{background:#fff0f0;color:#a33d3d}.payment-badge.partial{background:#fff5df;color:#9a6407}.payment-badge.paid{background:#e3f8ef;color:#137957}.payment-badge.unquoted{background:#eef1f5;color:#667085}.kanban-card footer .payment-badge{margin-left:auto;margin-right:9px}.inline-action{display:inline}.text-button{border:0;background:transparent;padding:0;color:var(--brand);font:inherit;cursor:pointer}
.receipt-table small{display:block;margin-top:4px;color:#7c8795}.receipt-balance{margin-top:16px;border-top:1px solid #eadcc4;padding-top:10px}.receipt-balance p{display:flex;justify-content:space-between;gap:16px;margin:7px 0!important;font-size:13px}.receipt-balance p span{margin:0;text-transform:none;letter-spacing:0;font-size:13px;color:#7b6c60}.receipt-balance p b{color:var(--ink)}.receipt-balance .receipt-balance-due{margin-top:11px!important;padding-top:11px;border-top:1px dashed #ddceb7;font-weight:700}.receipt-balance .receipt-balance-due span,.receipt-balance .receipt-balance-due b{color:#9f7f47}
.finance-titlebar{display:flex;justify-content:space-between;align-items:flex-end;gap:18px;margin:0 0 18px;padding:22px 24px;border:1px solid #e5e0fb;border-radius:18px;background:linear-gradient(120deg,#f8f6ff 0,#fff 65%)}.finance-titlebar h2{margin:5px 0 6px;font-size:21px;letter-spacing:-.3px}.finance-titlebar p:last-child{margin:0;color:var(--muted)}.finance-metrics{gap:13px}.finance-metrics article{position:relative;overflow:hidden;box-shadow:0 7px 18px #18213b08}.finance-metrics article:before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:#9a83f5}.finance-metrics article:nth-child(2):before{background:#1ea678}.finance-metrics article:nth-child(3):before{background:#e2a13a}.finance-metrics article:nth-child(4):before{background:#6c7894}.finance-metrics article strong{font-size:28px}.finance-grid>.panel,.finance-grid .panel{box-shadow:0 8px 22px #18213b06}.finance-grid .panel-head{align-items:flex-start}.panel-caption{display:block;margin-top:4px;font-size:11px;color:var(--muted)}.finance-row{padding:16px 8px}.finance-row:hover{background:#fafbfe}.finance-row .payment-badge{display:inline-flex;margin-top:8px}.finance-table{border:1px solid #edf0f5;border-radius:12px;overflow:hidden}.finance-table .th{margin:0;border-radius:0}.finance-table .finance-row:last-child{border-bottom:0}.finance-grid .stack .panel{border-radius:15px}.finance-grid .stack .panel-head{padding-bottom:11px;border-bottom:1px solid var(--line)}
@media(max-width:640px){.finance-titlebar{align-items:flex-start;flex-direction:column;padding:18px}.finance-titlebar .ghost{display:inline-flex}.finance-metrics article strong{font-size:23px}.finance-row .payment-badge{font-size:10px}}
.finance-title-actions{display:flex;gap:9px;flex-wrap:wrap}.receipt-list{display:grid;border:1px solid #edf0f5;border-radius:13px;overflow:hidden}.receipt-list-head,.receipt-list-row{display:grid;grid-template-columns:1fr 1.7fr .8fr .75fr auto;gap:16px;align-items:center;padding:15px 16px}.receipt-list-head{background:#f7f9fc;color:#5d6880;font-size:12px;font-weight:700}.receipt-list-row{border-top:1px solid #edf0f5}.receipt-list-row:hover{background:#fcfcfe}.receipt-list-row small{display:block;color:var(--muted);margin-top:4px}.receipt-list-row strong{color:#137957}.small-ghost{padding:7px 10px;font-size:12px;white-space:nowrap}@media(max-width:640px){.finance-title-actions{width:100%}.receipt-list-head{display:none}.receipt-list-row{grid-template-columns:1fr auto;gap:8px;padding:14px}.receipt-list-row>div{grid-column:1/2}.receipt-list-row>span{font-size:12px;color:var(--muted)}.receipt-list-row strong{grid-column:2;grid-row:1}.receipt-list-row .small-ghost{grid-column:2;grid-row:2/4;align-self:center}}
.income-caption{color:#137957}.expense-caption{color:#b55663}.finance-grid .stack .panel:first-child{border-top:3px solid #29a67b}.finance-grid .stack .panel:nth-child(2){border-top:3px solid #df7281}
.transaction-page{max-width:960px;margin:0 auto}.transaction-intro{padding:26px 28px;border-radius:19px;margin-bottom:18px;background:linear-gradient(120deg,#ecfbf4,#fff);border:1px solid #c9ecda}.transaction-expense .transaction-intro{background:linear-gradient(120deg,#fff3f4,#fff);border-color:#f1d0d6}.transaction-intro h2{font-size:25px;margin:5px 0 8px}.transaction-intro p:last-child{max-width:700px;color:var(--muted);line-height:1.65;margin:0}.transaction-form-panel{border-top:3px solid #29a67b}.transaction-expense .transaction-form-panel{border-top-color:#df7281}.transaction-form{grid-template-columns:1fr 1fr;gap:16px 18px}.transaction-form>label{grid-column:1/-1}.transaction-form>.two{grid-column:1/-1}.transaction-form .inline-check{grid-column:1/-1}.transaction-form button{grid-column:1/-1;justify-self:start;width:fit-content;min-width:240px;padding:13px 22px}.transaction-history{margin-top:18px}@media(max-width:640px){.transaction-intro{padding:20px}.transaction-intro h2{font-size:21px}.transaction-form{grid-template-columns:1fr}.transaction-form .two{grid-template-columns:1fr}.transaction-form button{width:100%;min-width:0;justify-self:stretch}}
main.page-finance .finance-grid:not(.secondary){grid-template-columns:1fr}main.page-finance .finance-grid:not(.secondary)>.stack{display:none}
.receipt-list-row{color:var(--ink);text-decoration:none;cursor:pointer;transition:background .15s,transform .15s}.receipt-list-row:hover{background:#f8f7ff}.receipt-list-row:focus-visible{outline:3px solid #b9aafc;outline-offset:-3px}.receipt-list-row:first-of-type{border-top:0}.receipt-list-row .small-ghost{pointer-events:none}@media(max-width:640px){.receipt-list-row{min-height:104px;padding:17px 15px}.receipt-list-row .small-ghost{padding:9px 11px;color:var(--brand);border-color:#ddd7ff;background:#f5f2ff}}
.quotation-contact-panel{margin:0 0 22px;padding:18px;border:1px solid #eee4d4;border-radius:16px;background:#fffdfa}.quotation-contact-panel h3{margin:0 0 12px;font-size:15px;color:#7e6744}.quotation-contact-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 16px}.quotation-contact-grid p{margin:0;display:grid;gap:3px;min-width:0}.quotation-contact-grid b{font-size:11px;text-transform:uppercase;letter-spacing:.45px;color:#9f7f47}.quotation-contact-grid span{font-size:13px;color:var(--ink);overflow-wrap:anywhere}.quotation-contact-wide{grid-column:1/-1}@media(max-width:640px){.quotation-contact-grid{grid-template-columns:1fr}.quotation-contact-panel{padding:15px}}
.quotation-paper .receipt-brand-block{min-width:0;max-width:650px}.quotation-paper .receipt-contact-row{line-height:1.45}.quotation-paper .receipt-contact-row span{overflow-wrap:anywhere}.quotation-paper .receipt-contact-row span:last-child{flex-basis:100%}
.quote-items-editor{display:grid;gap:10px;padding:12px;border:1px solid var(--line);border-radius:12px;background:#fafbfe}.quote-items-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.quote-items-head b{display:block;font-size:13px}.quote-items-head small{display:block;margin-top:3px;color:var(--muted);font-size:11px}.quote-items-list{display:grid;gap:8px}.quote-item-row{display:grid;grid-template-columns:1fr 1.2fr 120px auto;gap:8px;align-items:center}.quote-item-row input{border:1px solid #dce1eb;border-radius:8px;padding:10px;font:inherit;background:#fff}.quote-item-remove{font-size:12px;color:#b24655}@media(max-width:640px){.quote-items-head{flex-direction:column}.quote-item-row{grid-template-columns:1fr}.quote-item-remove{justify-self:start}}
.stage-update-form textarea{border:1px solid #dce1eb;border-radius:8px;padding:10px;font:inherit;color:var(--ink);width:100%;background:#fff;min-height:72px;resize:vertical}.job-update-list{display:grid;gap:10px}.job-update-item{position:relative;padding:12px 12px 12px 16px;border:1px solid var(--line);border-radius:12px;background:#fafbfe}.job-update-item:before{content:"";position:absolute;left:0;top:12px;bottom:12px;width:4px;border-radius:999px;background:var(--brand)}.job-update-item b{display:block;font-size:13px}.job-update-item small{display:block;margin-top:3px;color:var(--muted);font-size:11px;line-height:1.45}.job-update-item p{margin:9px 0 0;line-height:1.55;color:var(--ink)}.job-update-item em{display:inline-flex;margin-top:9px;padding:4px 8px;border-radius:999px;background:var(--brand-soft);color:var(--brand);font-size:11px;font-style:normal;font-weight:700}
@page{size:A4;margin:10mm}@media print{body.quotation-body{font-size:10.5px;line-height:1.32;color:#111;padding:0!important}.quotation-body .receipt-shell{max-width:none;width:100%;margin:0}.quotation-paper{padding:0!important;overflow:visible!important}.quotation-paper .receipt-head{gap:12px;padding-bottom:10px;margin-bottom:10px;break-inside:avoid}.quotation-paper .receipt-brand-block{gap:7px}.quotation-paper .receipt-brand-top{gap:10px}.quotation-paper .receipt-logo{width:48px;height:48px}.quotation-paper .receipt-logo-letter{font-size:24px}.quotation-paper .receipt-kicker{font-size:8px;letter-spacing:1.2px;margin-bottom:3px!important}.quotation-paper .receipt-brand-copy h1{font-size:18px;margin:0 0 3px;line-height:1.05}.quotation-paper .receipt-brand-copy p{font-size:10px;line-height:1.25}.quotation-paper .receipt-contact-row{gap:4px 12px;font-size:9px}.quotation-paper .receipt-head h2{font-size:18px;margin:5px 0 6px}.quotation-paper .receipt-meta-box{min-width:175px}.quotation-paper .receipt-meta-box p{font-size:10px;margin:2px 0}.quotation-paper .receipt-chip{font-size:8px;padding:4px 8px}.quotation-paper .receipt-grid{gap:10px;margin-bottom:10px;break-inside:avoid}.quotation-paper .receipt-grid article{padding:10px;border-radius:10px}.quotation-paper .receipt-grid h3,.quotation-paper .receipt-summary h3,.quotation-contact-panel h3{font-size:12px;margin-bottom:5px}.quotation-paper .receipt-grid p,.quotation-paper .receipt-summary p{margin:2px 0}.quotation-contact-panel{margin-bottom:10px;padding:9px;border-radius:10px;break-inside:avoid}.quotation-contact-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:5px 10px}.quotation-contact-grid b{font-size:8px}.quotation-contact-grid span{font-size:9.5px}.quotation-contact-wide{grid-column:1/-1}.quotation-table{margin-bottom:10px;break-inside:avoid}.quotation-table th,.quotation-table td{padding:8px 9px;font-size:10px}.quotation-table small{font-size:9px}.quotation-paper .receipt-summary{grid-template-columns:1.2fr .8fr;gap:10px;break-inside:avoid}.quotation-paper .receipt-total-box{padding:10px;border-radius:10px}.quotation-paper .receipt-total-box span{font-size:8px;margin-bottom:3px}.quotation-paper .receipt-total-box strong{font-size:21px}.quotation-paper .receipt-balance{margin-top:8px;padding-top:6px}.quotation-paper .receipt-balance p{font-size:10px;margin:3px 0!important}.quotation-paper .receipt-balance .receipt-balance-due{margin-top:5px!important;padding-top:5px}.quotation-paper .receipt-footer{gap:24px;margin-top:32px;break-inside:avoid}.quotation-paper .receipt-sign{position:relative;padding-top:30px}.quotation-paper .receipt-sign:before{content:"";display:block;height:34px}.quotation-paper .receipt-sign span{margin-bottom:5px}.quotation-paper *{print-color-adjust:exact;-webkit-print-color-adjust:exact}}
.transaction-form input[list]{min-height:46px}.field-label{display:block;font-weight:600;font-size:12px;color:var(--ink);margin-bottom:8px}.method-group{grid-column:1/-1;display:grid;gap:8px}.method-options{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.method-options label{display:flex;align-items:center;gap:8px;padding:11px 12px;border:1px solid var(--line);border-radius:12px;background:#fff;font-weight:600;font-size:13px;cursor:pointer}.method-options input{width:auto;accent-color:var(--brand)}.method-options label:has(input:checked){border-color:#c8bbff;background:#f5f1ff;color:var(--brand)}@media(max-width:640px){.method-options{grid-template-columns:1fr 1fr}.method-options label{padding:10px}.transaction-form input[list]{min-height:44px}}
.kanban-card{display:block;color:var(--ink);text-decoration:none}.kanban-card:hover{border-color:#c9d2e3;box-shadow:0 8px 20px #1d253012;transform:translateY(-1px)}.kanban-card:focus-visible{outline:3px solid #b9aafc;outline-offset:2px}.job-detail-hero{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;margin-bottom:18px;padding:22px 24px;border:1px solid var(--line);border-radius:14px;background:#fff}.job-detail-hero h2{margin:6px 0 8px;font-size:26px}.job-detail-hero p{margin:0;color:var(--muted)}.back-link{display:inline-flex;margin-bottom:10px;color:var(--brand);text-decoration:none;font-weight:700}.job-detail-actions{display:flex;gap:9px;flex-wrap:wrap;justify-content:flex-end}.job-detail-grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:18px;align-items:start}.job-detail-main,.job-detail-side{display:grid;gap:18px}.job-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.job-facts div,.job-money-grid article{padding:13px;border:1px solid #edf0f5;border-radius:10px;background:#fafbfe}.job-facts span,.job-money-grid span,.job-note span{display:block;color:var(--muted);font-size:11px;margin-bottom:5px}.job-facts b{font-size:13px}.job-note{margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}.job-note p{margin:0;line-height:1.65}.job-money-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.job-money-grid strong{display:block;font-size:20px}.job-gallery-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.job-gallery-strip img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:10px;border:1px solid var(--line)}.empty-inline{margin:0;color:var(--muted);font-size:13px}.compact-timeline .timeline-item{padding:11px 0}.mini-doc-link{display:block;padding:11px 0;border-top:1px solid var(--line);color:var(--ink);text-decoration:none}.mini-doc-link:first-child{border-top:0}.mini-doc-link small{display:block;margin-top:4px;color:var(--muted)}.progress-steps{display:flex;gap:6px;overflow-x:auto;padding-bottom:8px;margin-bottom:12px}.progress-steps span{flex:0 0 auto;padding:7px 9px;border-radius:999px;background:#eef1f5;color:#667085;font-size:11px;font-weight:700}.progress-steps .active{background:#e3f8ef;color:#137957}.stage-next-form,.stage-update-form{display:grid;gap:10px}.stage-next-form{margin-bottom:14px}.stage-next-form .primary,.stage-update-form .ghost{width:100%}.stage-update-form label{display:grid;gap:6px;font-weight:600;font-size:12px}.stage-update-form select,.stage-update-form input{border:1px solid #dce1eb;border-radius:8px;padding:10px;font:inherit;color:var(--ink);width:100%;background:#fff}@media(max-width:1024px){.job-detail-grid{grid-template-columns:1fr}.job-detail-hero{flex-direction:column}.job-detail-actions{justify-content:flex-start}.job-money-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.job-gallery-strip{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:640px){.job-detail-hero{padding:18px}.job-detail-hero h2{font-size:21px}.job-detail-actions .ghost,.job-detail-actions .primary{display:inline-flex}.job-facts,.job-money-grid,.job-gallery-strip{grid-template-columns:1fr}.progress-steps{margin-right:-14px}}
.day{position:relative}.blank-day{background:#f8fafc}.day-head{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:4px}.day-head button{border:1px solid #dfe5ef;border-radius:7px;background:#fff;color:var(--brand);font:inherit;font-size:11px;font-weight:700;padding:4px 7px;cursor:pointer}.day-head button:hover{background:var(--brand-soft);border-color:#d8d0ff}.calendar .event{display:block;text-decoration:none}.calendar .event:hover{filter:brightness(.97);text-decoration:underline}@media(max-width:640px){.day-head{align-items:flex-start;flex-direction:column}.day-head button{width:100%;padding:6px}}
.customer-row-link{color:var(--ink);text-decoration:none;border-radius:9px}.customer-row-link:hover{background:#fafbfe}.inline-link{color:var(--brand);text-decoration:none}.inline-link:hover{text-decoration:underline}.customer-detail-hero .primary{white-space:nowrap}.customer-job-list{display:grid;border:1px solid #edf0f5;border-radius:12px;overflow:hidden}.customer-job-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center;padding:14px 15px;border-top:1px solid #edf0f5;color:var(--ink);text-decoration:none}.customer-job-row:first-child{border-top:0}.customer-job-row:hover{background:#fafbfe}.customer-job-row small,.customer-job-row span{display:block;color:var(--muted);font-size:12px}.customer-job-row b{display:block;margin:4px 0;font-size:14px}.customer-job-meta{display:grid;justify-items:end;gap:7px;white-space:nowrap}.customer-facts{grid-template-columns:1fr}@media(max-width:640px){.customer-job-row{grid-template-columns:1fr}.customer-job-meta{justify-items:start}.customer-detail-hero .primary{width:100%;white-space:normal}}
.kanban{display:grid;grid-auto-flow:column;grid-auto-columns:clamp(240px,calc((100vw - 330px)/4),310px);align-items:start}.kanban-col{min-width:0;width:auto}.kanban-col h3{gap:8px}.kanban-col h3 span{flex:0 0 auto}.kanban-card{min-width:0;overflow:hidden;word-break:break-word}.kanban-card>b{line-height:1.35;overflow-wrap:anywhere}.kanban-card p{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;white-space:normal;overflow:hidden;line-height:1.35}.kanban-card footer{gap:7px;flex-wrap:wrap;align-items:flex-start}.kanban-card footer span{min-width:0;overflow-wrap:anywhere}.kanban-card footer .payment-badge{margin-left:0;margin-right:auto;white-space:normal;max-width:100%;line-height:1.25;text-align:center}.kanban-card i{flex:0 0 auto}.add-card{display:none}@media(max-width:1024px){.kanban{grid-auto-columns:clamp(230px,42vw,300px)}}@media(max-width:640px){.kanban{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(245px,82vw);margin:0 -14px;padding:0 14px 14px}.kanban-card footer .payment-badge{font-size:10px}}
.gallery-theme-list{display:grid;gap:16px}.gallery-theme-card{border:1px solid var(--line);border-radius:12px;background:#fff;overflow:hidden}.gallery-theme-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;padding:14px 15px;border-bottom:1px solid var(--line);background:#fafbfe}.gallery-theme-head h3{margin:0 0 4px;font-size:15px}.gallery-theme-head small{display:block;color:var(--muted)}.gallery-theme-head span{flex:0 0 auto;border-radius:999px;background:#eef1f5;color:#667085;padding:5px 9px;font-size:11px;font-weight:700}.gallery-thumb-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;padding:12px}.gallery-thumb-grid figure{margin:0;min-width:0}.gallery-thumb-grid img{display:block;width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:9px;background:#eef2f6;border:1px solid var(--line)}.gallery-thumb-grid figcaption{margin-top:4px;color:var(--muted);font-size:11px;text-align:center}.gallery-card img{max-width:100%}@media(max-width:640px){.gallery-layout{display:grid;grid-template-columns:1fr}.gallery-theme-head{align-items:stretch;flex-direction:column}.gallery-theme-head span{width:fit-content}.gallery-thumb-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;padding:10px}.gallery-thumb-grid img{border-radius:7px}.gallery-thumb-grid figcaption{font-size:10px}.gallery-card{max-width:100%;overflow:hidden}.gallery-card img{height:auto;max-height:220px;object-fit:cover}}
.stage-filters{flex-wrap:wrap}.stage-filters a{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:#fff;border-radius:999px;padding:8px 12px;color:var(--muted);text-decoration:none;font-size:12px;font-weight:700;white-space:nowrap}.stage-filters a:hover{background:#faf9ff;border-color:#ddd6ff;color:var(--brand)}.stage-filters a.selected{background:var(--brand-soft);color:var(--brand);border-color:#d9d1fe}.stage-filters a span{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:#edf0f5;color:#5d6678;font-size:11px}.stage-filters a.selected span{background:#fff;color:var(--brand)}.kanban{display:grid!important;grid-auto-flow:row!important;grid-auto-columns:unset!important;grid-template-columns:1fr!important;gap:16px!important;overflow:visible!important;min-height:0!important;padding-bottom:0!important}.kanban-col{position:relative;width:100%!important;min-width:0!important;padding:18px 18px 18px 34px;border:1px solid var(--line);border-radius:16px;background:#fff;box-shadow:0 8px 22px #18213b06}.kanban-col:before{content:"";position:absolute;left:16px;top:44px;bottom:18px;width:2px;background:#e8ebf2}.kanban-col h3{position:relative;margin:0 0 13px!important;font-size:15px!important;color:var(--ink)!important;justify-content:flex-start!important;gap:10px!important}.kanban-col h3:before{content:"";position:absolute;left:-25px;top:2px;width:14px;height:14px;border-radius:50%;background:var(--brand);box-shadow:0 0 0 5px var(--brand-soft)}.kanban-col h3 span{margin-left:auto;background:#f0f2f6!important;color:#5c6678!important;font-size:11px!important}.kanban-card{display:grid!important;grid-template-columns:minmax(0,1.3fr) minmax(180px,.8fr) auto;gap:14px;align-items:center;margin:10px 0 0!important;padding:15px 16px!important;border-radius:13px!important}.kanban-card>b{grid-column:1;grid-row:2;margin:2px 0!important;font-size:14px!important}.kanban-card>small{grid-column:1;grid-row:1;font-size:11px!important}.kanban-card>p{margin:0!important;-webkit-line-clamp:1!important}.kanban-card>p:nth-of-type(1){grid-column:1;grid-row:3}.kanban-card>p:nth-of-type(2){grid-column:2;grid-row:1}.kanban-card>p:nth-of-type(3){grid-column:2;grid-row:2/4}.kanban-card footer{grid-column:3;grid-row:1/4;min-width:145px;margin:0!important;padding:0!important;border:0!important;display:grid!important;justify-items:end;gap:7px!important}.kanban-card footer .payment-badge{margin:0!important}.kanban-card footer i{width:auto!important;height:auto!important;border-radius:999px!important;padding:6px 10px!important;background:var(--brand)!important;font-size:11px!important}@media(max-width:800px){.stage-filters{overflow-x:auto;flex-wrap:nowrap;max-width:100%;padding-bottom:6px}.toolbar{align-items:flex-start;flex-direction:column}.kanban-col{padding:16px 14px 16px 30px}.kanban-col:before{left:14px}.kanban-col h3:before{left:-23px}.kanban-card{grid-template-columns:1fr!important;gap:7px}.kanban-card>b,.kanban-card>small,.kanban-card>p,.kanban-card footer{grid-column:1!important;grid-row:auto!important}.kanban-card footer{justify-items:start!important;min-width:0;display:flex!important;align-items:center!important;justify-content:space-between!important;width:100%}.kanban-card footer i{margin-left:auto}}
.job-progress-panel{border-color:#d9ccff;box-shadow:0 14px 32px rgba(111,86,232,.12)}
.job-progress-panel .panel-head h2{font-size:18px}
.job-progress-panel .panel-caption{font-weight:600}
.job-progress-panel .progress-steps{padding:2px 0 10px;margin-bottom:12px}
.job-progress-panel .progress-steps span{padding:9px 11px}
.stage-next-form .primary{padding:14px 16px;font-size:14px;box-shadow:0 10px 24px rgba(111,86,232,.22)}
.stage-update-form{padding-top:12px;border-top:1px solid var(--line)}
.stage-update-form .progress-submit{width:100%;padding:14px 16px;font-size:14px;box-shadow:0 10px 24px rgba(111,86,232,.22)}
.stage-update-form textarea{min-height:92px}
@media(min-width:1180px){.job-detail-grid{grid-template-columns:minmax(0,.92fr) minmax(430px,.38fr);gap:18px}.job-detail-side{position:sticky;top:16px;max-height:calc(100vh - 32px);overflow:auto;padding-right:4px}.job-summary-panel{padding:16px}.job-summary-panel .panel-head{margin-bottom:8px}.job-summary-panel .panel-caption{font-size:11px}.job-facts{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.job-facts div{padding:10px 11px}.job-facts span{margin-bottom:3px}.job-facts b{font-size:12.5px;line-height:1.4;word-break:break-word}.job-note{margin-top:10px;padding-top:10px}.job-note p{font-size:13px;line-height:1.55}.job-money-grid article{padding:11px}}
@media(max-width:1179px){.job-detail-side{position:static;max-height:none;overflow:visible;padding-right:0}}
.user-list{display:grid;border:1px solid #edf0f5;border-radius:13px;overflow:hidden}
.user-list-head,.user-list-row{display:grid;grid-template-columns:minmax(0,1.5fr) .7fr .65fr .75fr;gap:14px;align-items:center;padding:14px 16px}
.user-list-head{background:#f7f9fc;color:#5d6880;font-size:12px;font-weight:700}
.user-list-row{border-top:1px solid #edf0f5;background:#fff}
.user-list-row:first-of-type{border-top:0}
.user-list-row:hover{background:#fcfcfe}
.user-list-row b{display:block}
.user-list-row small{display:block;margin-top:4px;color:var(--muted)}
@media(max-width:720px){.user-list-head{display:none}.user-list-row{grid-template-columns:1fr;gap:7px;padding:15px}.user-list-row>span{font-size:12px;color:var(--muted)}.user-list-row .payment-badge{width:max-content;color:#137957}}
.job-workspace-layout-note{display:none}
@media(min-width:1180px){.job-detail-grid{grid-template-columns:minmax(0,1fr) minmax(360px,.34fr)!important;align-items:start}.job-detail-side{order:1;position:static!important;max-height:none!important;overflow:visible!important;padding-right:0!important}.job-detail-main{order:2;position:sticky;top:16px;max-height:calc(100vh - 32px);overflow:auto;padding-right:4px}.job-detail-side .job-progress-panel{border-top:4px solid var(--brand);padding:22px}.job-detail-side .job-progress-panel .panel-head h2{font-size:20px}.job-detail-side .job-update-list{max-height:none}.job-detail-main .job-summary-panel{padding:15px}.job-detail-main .job-summary-panel .job-facts{grid-template-columns:1fr!important}.job-detail-main .job-money-grid{grid-template-columns:1fr 1fr!important}.job-detail-main .job-gallery-strip{grid-template-columns:repeat(2,minmax(0,1fr))!important}.job-detail-main .panel{box-shadow:0 8px 22px #18213b06}.job-detail-main .panel-head{align-items:flex-start}.job-detail-main .job-note p{font-size:12.5px}}
@media(max-width:1179px){.job-detail-main{position:static;max-height:none;overflow:visible;padding-right:0}.job-detail-side{order:0}}
.stage-next-form .primary,.stage-update-form .progress-submit{width:auto!important;min-width:220px;max-width:360px;justify-self:end;padding:11px 18px!important;font-size:13px!important}
.stage-next-form{justify-items:stretch}
.stage-update-form{justify-items:stretch}
.stage-update-form label{width:100%}
@media(max-width:640px){.stage-next-form .primary,.stage-update-form .progress-submit{width:100%!important;max-width:none;justify-self:stretch}}
.customer-profile-hero{display:flex;justify-content:space-between;gap:22px;align-items:flex-start;margin-bottom:16px;padding:24px;border:1px solid var(--line);border-radius:18px;background:linear-gradient(120deg,#fff 0,#faf8ff 100%);box-shadow:0 8px 22px #18213b06}
.customer-profile-main{min-width:0}
.customer-identity{display:flex;gap:16px;align-items:center;margin-top:8px}
.customer-avatar{display:grid;place-items:center;flex:0 0 auto;width:62px;height:62px;border-radius:20px;background:linear-gradient(135deg,#9d83ff,#6f52e6);color:#fff;font-size:26px;font-weight:800;box-shadow:0 10px 24px #7256e833}
.customer-identity h2{margin:0 0 7px;font-size:28px;line-height:1.12;letter-spacing:-.6px}
.customer-identity p:last-child{margin:0;color:var(--muted);line-height:1.55}
.customer-profile-actions{display:flex;gap:9px;flex-wrap:wrap;justify-content:flex-end}
.customer-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin-bottom:18px}
.customer-metrics article{position:relative;overflow:hidden;padding:17px 18px;border:1px solid var(--line);border-radius:15px;background:#fff;box-shadow:0 7px 18px #18213b07}
.customer-metrics article:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--brand)}
.customer-metrics span{display:block;color:var(--muted);font-size:12px}
.customer-metrics strong{display:block;margin:8px 0 2px;font-size:25px;letter-spacing:-.5px}
.customer-metrics small{color:var(--muted);font-size:11px}
.customer-profile-grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:18px;align-items:start}
.customer-workspace,.customer-sidebar{display:grid;gap:18px}
.customer-sidebar{position:sticky;top:16px}
.customer-section-head .small-ghost{display:inline-flex}
.customer-job-board{border:1px solid #edf0f5;border-radius:14px;overflow:hidden;background:#fff}
.customer-job-head,.customer-job-card{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(180px,.95fr) minmax(130px,.7fr) minmax(120px,.65fr) auto;gap:14px;align-items:center;padding:14px 16px}
.customer-job-head{background:#f7f9fc;color:#5d6880;font-size:12px;font-weight:700}
.customer-job-card{color:var(--ink);text-decoration:none;border-top:1px solid #edf0f5;transition:background .15s,transform .15s}
.customer-job-card:hover{background:#fbfaff;transform:translateY(-1px)}
.customer-job-card b{display:block}
.customer-job-card small,.customer-job-title em{display:block;margin-top:4px;color:var(--muted);font-size:12px;font-style:normal;line-height:1.45}
.customer-job-title small{margin:0 0 4px;color:var(--brand);font-weight:700}
.customer-money{display:grid;gap:7px;justify-items:start}
.customer-open{color:var(--brand);font-weight:700;white-space:nowrap}
.customer-empty-state{padding:28px;text-align:center;color:var(--muted)}
.customer-empty-state b{display:block;color:var(--ink);margin-bottom:6px}
.customer-contact-list{display:grid;gap:10px}
.customer-contact-list div{padding:12px;border:1px solid #edf0f5;border-radius:11px;background:#fafbfe}
.customer-contact-list span{display:block;margin-bottom:5px;color:var(--muted);font-size:11px}
.customer-contact-list b{overflow-wrap:anywhere}
.customer-next-job{display:block;padding:14px;border:1px solid #edf0f5;border-radius:12px;background:#fafbfe;color:var(--ink);text-decoration:none}
.customer-next-job:hover{background:#f8f5ff;border-color:#ddd6ff}
.customer-next-job span,.customer-next-job small{display:block;margin-top:5px;color:var(--muted)}
@media(max-width:1180px){.customer-profile-grid{grid-template-columns:1fr}.customer-sidebar{position:static}.customer-job-head{display:none}.customer-job-card{grid-template-columns:1fr 1fr;gap:10px}.customer-open{justify-self:end}}
@media(max-width:720px){.customer-profile-hero{flex-direction:column;padding:19px}.customer-profile-actions{justify-content:flex-start;width:100%}.customer-profile-actions .ghost,.customer-profile-actions .primary{display:inline-flex}.customer-identity{align-items:flex-start}.customer-avatar{width:50px;height:50px;border-radius:16px;font-size:21px}.customer-identity h2{font-size:22px}.customer-metrics{grid-template-columns:1fr 1fr}.customer-metrics article{padding:14px}.customer-metrics strong{font-size:21px}.customer-job-card{grid-template-columns:1fr}.customer-open{justify-self:start}.customer-section-head{align-items:flex-start;flex-direction:column}.customer-section-head .small-ghost{width:100%}}
.customer-searchbar{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:10px;align-items:end;margin:0 0 16px;padding:14px;border:1px solid #edf0f5;border-radius:14px;background:#fafbfe}
.customer-searchbar label{display:grid;gap:6px;font-weight:700;font-size:12px;color:var(--ink)}
.customer-searchbar label span{color:var(--muted);font-weight:600}
.customer-searchbar input{width:100%;border:1px solid #dce1eb;border-radius:10px;padding:11px 12px;font:inherit;background:#fff;color:var(--ink)}
.customer-searchbar .ghost{display:inline-flex}
@media(max-width:720px){.customer-searchbar{grid-template-columns:1fr}.customer-searchbar .primary,.customer-searchbar .ghost{width:100%;display:inline-flex}.customer-searchbar .ghost{justify-content:center}}
.theme-color-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.theme-color-grid label{padding:12px;border:1px solid var(--line);border-radius:12px;background:#fafbfe}
.theme-color-grid input[type=color]{height:44px;padding:4px;border-radius:10px;cursor:pointer}
.theme-preview{display:grid;gap:8px;padding:16px;border:1px solid var(--line);border-radius:14px;background:linear-gradient(135deg,var(--brand-soft),#fff)}
.theme-preview span{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.8px}
.theme-preview b{font-size:18px}
.theme-preview .primary{justify-self:start}
.line-settings-form textarea{min-height:76px}
.line-settings-form code{background:#fff;padding:2px 5px;border-radius:5px;overflow-wrap:anywhere}
.line-test-form{margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.line-test-form .ghost{display:inline-flex;justify-self:start}
@media(max-width:720px){.theme-color-grid{grid-template-columns:1fr}.line-test-form .ghost{width:100%;justify-self:stretch}}
.stage-description{position:relative;margin:0 0 12px;color:var(--muted);font-size:12px;line-height:1.55;z-index:1}
.job-progress-panel .form-note{margin:0 0 12px;line-height:1.55}
.progress-steps span{max-width:220px;white-space:normal;line-height:1.25;text-align:center}
.document-mode-panel{max-width:980px;margin:0 auto 18px;background:#fff;border:1px solid #e8dcc8;border-radius:16px;padding:14px 16px;display:flex;align-items:center;gap:14px;box-shadow:0 8px 24px #0f172a0c}
.document-mode-panel div{display:grid;gap:3px;flex:1}.document-mode-panel b{font-size:14px}.document-mode-panel span{font-size:12px;color:var(--muted);line-height:1.45}.document-mode-panel select{border:1px solid #dce1eb;border-radius:10px;background:#fff;padding:10px 12px;font:inherit;min-width:240px}.document-mode-panel .small-ghost{white-space:nowrap}
@media(max-width:760px){.document-mode-panel{display:grid}.document-mode-panel select{width:100%;min-width:0}}
@media print{.document-mode-panel{display:none!important}}
.receipt-actions{max-width:980px;margin-left:auto;margin-right:auto}.receipt-actions .primary,.receipt-actions .ghost{width:auto;max-width:max-content}.receipt-paper{overflow:visible}.receipt-brand-copy{min-width:0}.receipt-brand-copy h1{overflow-wrap:anywhere}.receipt-meta-box h2{line-height:1.15}
@media screen and (max-width:760px){.receipt-body{padding:14px}.receipt-paper{padding:24px 18px;border-radius:18px}.receipt-head{display:grid;grid-template-columns:1fr;gap:16px}.receipt-brand-top{align-items:flex-start}.receipt-logo{width:58px;height:58px;flex:0 0 58px}.receipt-logo-letter{font-size:26px}.receipt-brand-copy h1{font-size:24px;line-height:1.08}.receipt-meta-box{text-align:left;min-width:0}.receipt-meta-box h2{font-size:22px}.receipt-contact-row{display:grid;gap:6px}.receipt-contact-row span+span:before{display:none}.receipt-grid,.receipt-summary,.receipt-footer{grid-template-columns:1fr}.receipt-table{font-size:12px}.receipt-table th,.receipt-table td{padding:9px 8px}.receipt-total-box{text-align:left}.receipt-actions{padding:0 2px}.receipt-actions .primary,.receipt-actions .ghost{max-width:none}}
.expense-history-head{gap:14px;align-items:flex-start}.expense-filter-form{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;justify-content:flex-end}.expense-month-field{display:grid;gap:5px;color:var(--muted);font-size:11px;font-weight:700}.expense-filter-form input{border:1px solid #dce1eb;border-radius:10px;padding:9px 10px;font:inherit;background:#fff;min-width:155px}.expense-filter-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.export-link{border-color:#d8ddec!important;color:#596274!important;background:#fff!important;box-shadow:none!important}.export-link:before{content:"↓ ";font-weight:700}.expense-month-summary{display:flex;justify-content:space-between;align-items:center;gap:14px;background:#fff8f8;border:1px solid #fde0e0;border-radius:13px;padding:13px 15px;margin-bottom:14px}.expense-month-summary span{color:var(--muted);font-size:12px}.expense-month-summary b{font-size:18px;color:var(--rose)}.expense-table{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:#fff}.expense-table-head,.expense-table-row{display:grid;grid-template-columns:.75fr 1.8fr 1fr .7fr .8fr;gap:14px;align-items:center;padding:13px 15px}.expense-table-head{background:#f7f9fc;color:#5d6880;font-size:12px;font-weight:700}.expense-table-row{border-top:1px solid var(--line)}.expense-table-row b{display:block}.expense-table-row small{display:block;color:var(--muted);margin-top:3px}.expense-table-row a{color:var(--brand);font-weight:700;text-decoration:none}.expense-table-row strong{text-align:right}.expense-empty{padding:22px;text-align:center;color:var(--muted);border-top:1px solid var(--line)}
@media(max-width:760px){.expense-table-head{display:none}.expense-table-row{grid-template-columns:1fr auto;gap:8px}.expense-table-row>span,.expense-table-row>div{grid-column:1/2}.expense-table-row strong{grid-column:2;grid-row:1/3}.expense-filter-form{width:100%;justify-content:flex-start}.expense-month-field,.expense-filter-form input,.expense-filter-actions{width:100%}.expense-filter-actions a,.expense-filter-actions button{flex:1;justify-content:center}}
.booking-mini-panel,.booking-calculation-strip{border:1px solid #efe4bd;background:#fff8dd;border-radius:13px;padding:12px 13px}.booking-mini-panel b{display:block;margin-bottom:4px}.booking-mini-panel p{margin:0;color:#8b6513;font-size:12px;line-height:1.55}.quote-work-panel{border-color:#ded7ff}.quote-work-form{padding:0}.booking-calculation-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:12px;background:#fffaf0}.booking-calculation-strip span{display:grid;gap:4px;color:#775a12;font-size:12px}.booking-calculation-strip b{font-size:16px;color:#1f2937}.form-actions-inline{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.form-actions-inline .primary,.form-actions-inline .ghost{width:auto;max-width:max-content}
@media(max-width:760px){.booking-calculation-strip{grid-template-columns:1fr}.form-actions-inline .primary,.form-actions-inline .ghost{max-width:none;width:100%}}

@media(min-width:1180px){
  .job-detail-grid{grid-template-columns:minmax(0,1fr) minmax(340px,360px)!important;align-items:start}
  .job-detail-side{grid-column:1!important;grid-row:1!important;order:0!important;position:static!important;max-height:none!important;overflow:visible!important;padding-right:0!important}
  .job-detail-main{grid-column:2!important;grid-row:1!important;order:1!important;position:sticky!important;top:16px;max-height:calc(100vh - 32px);overflow:auto;padding-right:4px}
  .job-detail-side .job-progress-panel,.job-detail-side .quote-work-panel{border-top:4px solid var(--brand);padding:22px}
  .job-detail-side .job-progress-panel .panel-head h2,.job-detail-side .quote-work-panel .panel-head h2{font-size:20px}
  .job-detail-side .booking-calculation-strip{grid-template-columns:repeat(3,minmax(0,1fr))}
  .job-detail-side .quote-item-row{grid-template-columns:minmax(150px,1fr) minmax(220px,1.4fr) 150px auto}
  .job-detail-side .job-update-list{max-height:none}
  .job-detail-main .job-summary-panel{padding:15px}
  .job-detail-main .job-summary-panel .job-facts{grid-template-columns:1fr!important}
  .job-detail-main .job-money-grid{grid-template-columns:1fr 1fr!important}
  .job-detail-main .job-gallery-strip{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .job-detail-main .panel{box-shadow:0 8px 22px #18213b06}
  .job-detail-main .panel-head{align-items:flex-start}
  .job-detail-main .job-note p{font-size:12.5px}
}

/* Quotation workspace */
.quote-editor-layout,.quote-editor-fields{display:grid;gap:14px;min-width:0}
.quote-editor-section{display:grid;gap:14px;padding:16px;border:1px solid var(--line);border-radius:14px;background:linear-gradient(180deg,#fff,#fcfcff);min-width:0}
.quote-section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.quote-section-head b{display:block;font-size:15px;color:var(--text)}
.quote-section-head small{display:block;margin-top:3px;color:var(--muted);font-size:11px;line-height:1.5}
.quote-section-head a{font-size:12px;color:var(--brand);white-space:nowrap}
.quote-draft-badge{display:inline-flex;align-items:center;min-height:28px;padding:4px 10px;border-radius:999px;background:#f1edff;color:var(--brand);font-size:11px;font-weight:800}
.quote-field-grid{display:grid;gap:12px;min-width:0}
.quote-field-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}
.quote-field-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.quote-field-grid .span-all{grid-column:1/-1}
.quote-field-grid label,.quote-item-row label{display:grid;gap:6px;min-width:0;font-size:12px;font-weight:700;color:#31384a}
.quote-field-grid input,.quote-field-grid select,.quote-field-grid textarea,
.quote-item-row input,.quote-item-row select,.quote-item-row textarea{width:100%;min-width:0;box-sizing:border-box;border:1px solid #dce1eb;border-radius:9px;padding:10px 11px;background:#fff;color:var(--text);font:inherit}
.inline-check{display:flex!important;align-items:center;gap:7px;font-size:11px!important;font-weight:600!important;color:var(--muted)!important}
.inline-check input{width:auto!important}
.quote-tax-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.quote-tax-options label{display:flex;align-items:flex-start;gap:10px;padding:12px;border:1px solid var(--line);border-radius:12px;background:#fff;cursor:pointer;min-width:0}
.quote-tax-options label:has(input:checked){border-color:var(--brand);background:#f6f3ff;box-shadow:0 0 0 2px color-mix(in srgb,var(--brand) 12%,transparent)}
.quote-tax-options input{margin-top:3px;accent-color:var(--brand)}
.quote-tax-options span{display:grid;gap:3px;min-width:0}
.quote-tax-options b{font-size:12px}.quote-tax-options small{font-size:10px;line-height:1.45;color:var(--muted)}
.quote-job-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:10px;border-radius:10px;background:#f7f8fb}
.quote-job-facts span{display:grid;gap:3px;font-size:10px;color:var(--muted)}.quote-job-facts b{font-size:12px;color:var(--text);overflow-wrap:anywhere}
.quote-items-editor{margin-top:14px}
.quote-item-row{grid-template-columns:repeat(4,minmax(0,1fr))!important;align-items:end!important;padding:12px;border:1px solid #e5e8ef;border-radius:12px;background:#fff}
.quote-item-name,.quote-item-description{grid-column:span 2}
.quote-item-row label span{font-size:10px;color:var(--muted);font-weight:700}
.quote-item-row textarea{resize:vertical;min-height:42px}
.quote-line-total{align-self:center;text-align:right;color:var(--brand);font-size:12px;white-space:nowrap}
.quote-item-remove{align-self:center;justify-self:center;padding:8px}
.quote-image-picker{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.quote-image-picker label{position:relative;display:grid;gap:6px;padding:7px;border:1px solid var(--line);border-radius:12px;background:#fff;cursor:pointer;min-width:0}
.quote-image-picker label:has(input:checked){border-color:var(--brand);box-shadow:0 0 0 2px color-mix(in srgb,var(--brand) 14%,transparent)}
.quote-image-picker input{position:absolute;top:10px;right:10px;width:18px;height:18px;accent-color:var(--brand);z-index:1}
.quote-image-picker img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:8px}
.quote-image-picker span{font-size:10px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.quote-display-options{display:flex;gap:10px 18px;align-items:center;flex-wrap:wrap}
.quote-display-options label{display:flex;align-items:center;gap:7px;font-size:12px}.quote-display-options input{accent-color:var(--brand)}
.quote-live-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;margin-top:14px;border:1px solid #ead9ab;border-radius:14px;overflow:hidden;background:#ead9ab}
.quote-live-summary div{display:grid;gap:5px;padding:12px;background:#fffdf7;min-width:0}
.quote-live-summary span{font-size:10px;color:#7f6a36}.quote-live-summary b{font-size:15px;overflow-wrap:anywhere}
.quote-live-summary .strong,.quote-live-summary .balance{background:#fff8df}.quote-live-summary .strong b,.quote-live-summary .balance b{color:#986b0c}
.quote-submit-actions{justify-content:flex-end;margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.job-detail-grid:has(.quote-work-panel){grid-template-columns:minmax(0,1fr)!important}
.job-detail-grid:has(.quote-work-panel)>.job-detail-side{display:contents!important}
.job-detail-grid:has(.quote-work-panel)>.job-detail-main{grid-column:1!important;grid-row:auto!important;order:2!important;position:static!important;max-height:none!important;overflow:visible!important;padding-right:0!important}
.job-detail-grid:has(.quote-work-panel)>.job-detail-side>*{order:3!important}
.job-detail-grid:has(.quote-work-panel)>.job-detail-side>.job-progress-panel{order:0!important}
.job-detail-grid:has(.quote-work-panel)>.job-detail-side>.quote-work-panel{order:1!important;width:100%;max-width:100%;min-width:0}

@media(max-width:1100px){
  .quote-field-grid.three{grid-template-columns:repeat(2,minmax(0,1fr))}
  .quote-live-summary{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:700px){
  .quote-editor-section{padding:12px;border-radius:12px}
  .quote-section-head{align-items:stretch;flex-direction:column;gap:8px}
  .quote-section-head a{white-space:normal}
  .quote-field-grid.two,.quote-field-grid.three,.quote-tax-options{grid-template-columns:1fr}
  .quote-job-facts{grid-template-columns:1fr}
  .quote-item-row{grid-template-columns:repeat(2,minmax(0,1fr))!important;padding:10px}
  .quote-item-name,.quote-item-description{grid-column:1/-1}
  .quote-line-total{justify-self:start;text-align:left}
  .quote-image-picker{grid-template-columns:repeat(2,minmax(0,1fr))}
  .quote-live-summary{grid-template-columns:repeat(2,minmax(0,1fr))}
  .quote-submit-actions{display:grid!important;grid-template-columns:1fr 1fr}
  .quote-submit-actions>*{width:100%!important;max-width:none!important;min-height:46px;white-space:normal}
}
@media(max-width:380px){
  .quote-item-row,.quote-live-summary,.quote-submit-actions{grid-template-columns:1fr!important}
  .quote-image-picker{grid-template-columns:1fr 1fr}
}
@media(max-width:1179px){
  .job-detail-side{order:0;position:static!important;max-height:none!important;overflow:visible!important;padding-right:0!important}
  .job-detail-main{order:1;position:static!important;max-height:none!important;overflow:visible!important;padding-right:0!important}
}

.quote-location-form{border:1px solid #f1d08c;background:#fffbef;border-radius:14px;padding:14px;margin-bottom:16px}
.quote-location-warning b{display:block;color:#7a5512;margin-bottom:4px}
.quote-location-warning p{margin:0;color:#8b6513;font-size:12px;line-height:1.55}

html,body{max-width:100%;overflow-x:hidden}
.app-shell,main,.panel,.job-detail-grid,.job-detail-main,.job-detail-side,.kanban,.kanban-col,.kanban-card,.quote-work-panel,.quote-items-editor{min-width:0;max-width:100%}
.job-detail-actions,.header-actions,.panel-head,.toolbar{min-width:0}
.form input,.form select,.form textarea{min-width:0}
@media(max-width:760px){
  main{overflow:visible!important}
  header,.job-detail-hero,.panel-head{min-width:0;max-width:100%;flex-wrap:wrap}
  .header-actions,.job-detail-actions{width:100%;justify-content:flex-start;overflow-x:auto;padding-bottom:4px}
  .header-actions .primary{font-size:13px!important}
  .job-detail-actions .ghost,.job-detail-actions .primary{white-space:nowrap}
  .job-detail-grid{display:grid!important;grid-template-columns:1fr!important;gap:14px!important}
  .job-detail-side,.job-detail-main{grid-column:auto!important;grid-row:auto!important;width:100%!important}
  .stage-filters{max-width:calc(100vw - 28px)}
  .kanban{max-width:calc(100vw - 28px)}
  .kanban-col{padding-right:12px!important}
  .kanban-card{width:100%!important}
  .quote-location-form{padding:12px}
  .quote-work-panel .two{grid-template-columns:1fr!important}
}

/* Responsive repair: off-canvas sidebar and mobile-safe workspaces */
body.sidebar-lock{overflow:hidden;touch-action:none}
.sidebar-overlay{display:none;position:fixed;inset:0;border:0;padding:0;margin:0;background:rgba(15,23,42,.45);z-index:1100;cursor:pointer}
.sidebar-overlay.open{display:block}
.sidebar nav{min-height:0}
.sidebar nav a,.brand,.side-user{min-width:0}
.sidebar nav a{line-height:1.25}
main,.app-shell,.panel,.metrics,.grid-2,.toolbar,.customer-searchbar,.job-detail-hero,.job-detail-grid,.job-detail-main,.job-detail-side,.job-summary-panel,.job-progress-panel,.quote-work-panel,.kanban,.kanban-col,.kanban-card,.customer-profile-grid,.customer-workspace,.customer-sidebar,.gallery-layout,.gallery-grid,.receipt-list,.expense-table,.transaction-page{width:100%;max-width:100%;min-width:0;box-sizing:border-box}
.panel h2,.job-detail-hero h2,.kanban-card b,.customer-job-card b,.receipt-list-row b,.expense-table-row b{overflow-wrap:anywhere}
.job-detail-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;align-items:stretch;justify-content:stretch;width:min(100%,620px);margin-left:auto;min-width:0}
.job-detail-actions .ghost,.job-detail-actions .primary{display:flex!important;align-items:center;justify-content:center;width:100%;min-height:48px;padding:10px 12px;text-align:center;line-height:1.25;white-space:normal}
.job-facts a[href^="tel:"]{font-weight:800}
.progress-steps{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px;overflow:visible!important;padding:0!important;margin:0 0 12px!important}
.progress-steps span{max-width:none!important;min-width:0!important;white-space:normal!important;line-height:1.25;text-align:center}

@media(max-width:1024px){
  .app-shell{display:block;min-height:100dvh}
  .sidebar{position:fixed!important;top:0!important;left:0!important;right:auto!important;bottom:auto!important;width:min(82vw,320px)!important;height:100dvh!important;max-height:100dvh!important;z-index:1200!important;padding:18px 14px!important;transform:translateX(-105%)!important;transition:transform .25s ease!important;overflow:hidden!important;display:flex!important;box-shadow:20px 0 60px rgba(15,23,42,.26)}
  .sidebar.open{transform:translateX(0)!important}
  .sidebar .brand{display:flex!important;gap:10px!important;align-items:center!important;margin:0 6px 18px!important;font-size:18px!important;line-height:1.2!important}
  .sidebar .brand span:last-child{display:block!important;white-space:normal!important;overflow-wrap:anywhere}
  .sidebar .brand-mark{flex:0 0 34px;font-size:18px!important}
  .sidebar nav{display:grid!important;gap:3px!important;overflow-y:auto!important;overscroll-behavior:contain;padding-right:2px;scrollbar-width:thin}
  .sidebar nav a{display:flex!important;justify-content:flex-start!important;align-items:center!important;gap:10px!important;padding:9px 11px!important;font-size:14px!important;white-space:normal!important}
  .sidebar nav a:not(.active){font-size:14px!important}
  .sidebar nav a span{flex:0 0 22px;width:22px!important;text-align:center;font-size:17px!important}
  .side-user{justify-content:flex-start!important;gap:10px!important;margin-top:12px!important;padding:10px 8px!important}
  .side-user div{display:block!important;min-width:0}
  main{margin-left:0!important;width:100%!important;padding:22px 18px!important;overflow:visible!important}
  .menu{display:inline-flex!important;align-items:center;justify-content:center;min-width:44px;min-height:44px;margin:0!important}
  .job-detail-actions{width:100%!important;grid-template-columns:repeat(3,minmax(0,1fr))}
}

@media(min-width:1025px){
  .sidebar-overlay{display:none!important}
  .menu{display:none!important}
  main{margin-left:250px!important;width:calc(100% - 250px)!important}
}

@media(max-width:760px){
  body{font-size:13px}
  main{padding:16px 12px calc(92px + env(safe-area-inset-bottom))!important}
  header{display:grid!important;grid-template-columns:44px minmax(0,1fr);gap:10px 12px;align-items:start!important;margin-bottom:16px!important}
  header>div:first-of-type{min-width:0}
  .eyebrow{font-size:11px}
  h1{font-size:20px!important;line-height:1.2}
  .header-actions{position:fixed;right:max(16px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));z-index:900;width:auto!important;display:flex!important;gap:0!important;padding:0!important;overflow:visible!important}
  .header-actions .user-chip,.header-actions .ghost{display:none!important}
  .header-actions .primary{display:grid!important;place-items:center;width:56px!important;height:56px!important;min-width:56px!important;min-height:56px!important;border-radius:999px!important;padding:0!important;font-size:0!important;box-shadow:0 14px 28px rgba(114,86,232,.34)!important}
  .header-actions .primary:before{content:"+";font-size:28px;line-height:1;font-weight:700}
  .metrics{grid-template-columns:1fr 1fr!important;gap:10px}
  .metrics article,.panel{padding:14px!important;border-radius:16px!important}
  .grid-2,.finance-grid,.gallery-layout,.transaction-form{grid-template-columns:1fr!important;gap:14px}
  .toolbar{display:grid!important;grid-template-columns:1fr;gap:10px;margin-bottom:14px!important}
  .filters,.stage-filters{display:flex;gap:8px;max-width:100%!important;overflow-x:auto!important;overscroll-behavior-x:contain;padding-bottom:6px;flex-wrap:nowrap!important}
  .filters button,.stage-filters a{flex:0 0 auto}
  .kanban{width:100%!important;max-width:100%!important;margin:0!important;padding:0!important;overflow:visible!important}
  .kanban-col{padding:15px 12px 15px 28px!important;border-radius:15px!important}
  .kanban-col:before{left:13px!important}
  .kanban-col h3:before{left:-22px!important}
  .kanban-card{grid-template-columns:1fr!important;gap:7px!important;padding:13px!important;border-radius:13px!important}
  .kanban-card footer{width:100%;min-width:0!important;display:flex!important;flex-wrap:wrap!important;align-items:center!important;justify-content:space-between!important}
  .payment-badge,.small-ghost,.customer-open{white-space:normal!important;line-height:1.25}
  .job-detail-hero{display:grid!important;grid-template-columns:1fr;gap:14px;padding:16px!important;border-radius:16px!important;margin-bottom:14px!important}
  .job-detail-hero h2{font-size:23px!important;line-height:1.15}
  .job-detail-actions{grid-template-columns:repeat(2,minmax(0,1fr));width:100%!important;overflow:visible!important;padding:0!important}
  .job-detail-grid{display:grid!important;grid-template-columns:1fr!important;gap:14px!important}
  .job-detail-side,.job-detail-main{grid-column:auto!important;grid-row:auto!important;position:static!important;max-height:none!important;overflow:visible!important;padding-right:0!important}
  .job-detail-side{order:0!important}
  .job-detail-main{order:1!important}
  .job-facts{grid-template-columns:1fr!important;gap:8px!important}
  .job-facts div,.job-money-grid article{padding:10px!important;border-radius:12px!important}
  .job-facts b{font-size:13px;line-height:1.35;overflow-wrap:anywhere}
  .job-note{margin-top:10px;padding-top:10px}
  .job-money-grid{grid-template-columns:1fr 1fr!important;gap:8px!important}
  .job-money-grid strong{font-size:18px!important}
  .job-gallery-strip{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px}
  .progress-steps{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;overflow:visible!important;margin:0 0 12px!important;padding:0!important}
  .progress-steps span{max-width:none;min-width:0;white-space:normal!important;text-align:center;line-height:1.25;padding:8px 9px}
  .stage-next-form .primary,.stage-update-form .progress-submit,.stage-update-form .primary{width:100%!important;max-width:none!important;min-width:0!important;justify-self:stretch!important;min-height:48px!important}
  .booking-calculation-strip{grid-template-columns:1fr!important;gap:8px!important}
  .quote-item-row,.receipt-list-row,.expense-table-row,.customer-job-row,.customer-job-card{grid-template-columns:1fr!important}
  .quote-items-head{align-items:stretch!important}
  .quote-items-head .small-ghost,
  #add-quote-item{display:inline-flex!important;width:100%;min-height:44px;align-items:center;justify-content:center;white-space:normal!important;border-style:dashed;background:#fff;color:var(--brand);font-weight:800}
  .form-actions-inline{display:grid!important;grid-template-columns:1fr;gap:10px}
  .form-actions-inline .primary,.form-actions-inline .ghost{width:100%!important;max-width:none!important;min-height:48px}
  .customer-searchbar{grid-template-columns:1fr!important}
  .customer-searchbar .primary,.customer-searchbar .ghost{display:flex!important;width:100%;justify-content:center}
  .gallery-thumb-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}
  .gallery-card img{max-height:220px}
  .method-options{grid-template-columns:1fr 1fr!important}
  .expense-filter-form,.expense-filter-actions{width:100%;justify-content:flex-start}
  .calendar{overflow:visible!important;padding:0!important}
  .calendar-grid{grid-template-columns:repeat(7,minmax(0,1fr))!important;width:100%;border-radius:14px;overflow:hidden}
  .calendar-grid>b{padding:8px 2px;font-size:10px}
  .day{min-width:0;height:auto;min-height:78px;padding:6px 4px}
  .event{white-space:normal!important;overflow-wrap:anywhere;line-height:1.2}
  dialog{width:calc(100% - 20px)!important;max-width:520px;max-height:calc(100dvh - 20px)}
  .form{padding:16px;gap:12px}
  .form header{display:flex!important;grid-template-columns:1fr auto;padding:0!important}
  .two{grid-template-columns:1fr!important}
  .receipt-list,.expense-table{overflow:visible!important}
  .receipt-list-row .small-ghost,.expense-table-row .small-ghost{display:inline-flex!important;width:100%;justify-content:center}
}

.danger-zone-panel{
  border-color:#fecdd3!important;
  background:linear-gradient(180deg,#fff,#fff8f8)!important;
}

.danger-zone-panel .panel-head h2{
  color:#9f1239;
}

.danger-clear-form{
  border-top:1px solid #fee2e2;
  padding-top:14px;
}

.danger-check{
  background:#fff1f2;
  border:1px solid #fecdd3;
  border-radius:12px;
  padding:11px 12px;
}

.danger-button{
  border:0;
  border-radius:10px;
  background:#be123c;
  color:#fff;
  cursor:pointer;
  font:inherit;
  font-weight:800;
  min-height:44px;
  padding:11px 18px;
  box-shadow:0 10px 20px rgba(190,18,60,.2);
  transition:.18s ease;
  justify-self:start;
}

.danger-button:hover{
  background:#9f1239;
  transform:translateY(-1px);
}

.gallery-open{
  position:relative;
  display:block;
  width:100%;
  min-width:0;
  padding:0;
  border:0;
  border-radius:10px;
  background:transparent;
  cursor:pointer;
  overflow:hidden;
  text-align:inherit;
}

.gallery-open img{
  transition:.2s ease;
}

.gallery-open span{
  position:absolute;
  left:8px;
  right:8px;
  bottom:8px;
  display:flex;
  justify-content:center;
  padding:6px 8px;
  border-radius:999px;
  background:rgba(15,23,42,.72);
  color:#fff;
  font-size:11px;
  font-weight:800;
  opacity:0;
  transform:translateY(5px);
  transition:.2s ease;
  pointer-events:none;
}

.gallery-open:hover img,
.gallery-open:focus-visible img{
  transform:scale(1.03);
}

.gallery-open:hover span,
.gallery-open:focus-visible span{
  opacity:1;
  transform:translateY(0);
}

.gallery-open:focus-visible{
  outline:3px solid #b9aafc;
  outline-offset:3px;
}

.gallery-lightbox{
  width:min(96vw,1100px);
  max-width:96vw;
  max-height:94dvh;
  padding:0;
  border:0;
  border-radius:20px;
  background:#0f172a;
  color:#fff;
  overflow:hidden;
  box-shadow:0 30px 80px rgba(15,23,42,.45);
}

.gallery-lightbox::backdrop{
  background:rgba(15,23,42,.72);
  backdrop-filter:blur(4px);
}

.gallery-lightbox figure{
  margin:0;
  display:grid;
  gap:0;
}

.gallery-lightbox img{
  display:block;
  width:100%;
  max-height:calc(94dvh - 54px);
  object-fit:contain;
  background:#050816;
}

.gallery-lightbox figcaption{
  padding:14px 50px 14px 16px;
  color:#e5e7eb;
  font-size:14px;
  line-height:1.45;
}

.gallery-lightbox-close{
  position:absolute;
  top:10px;
  right:10px;
  z-index:2;
  width:38px;
  height:38px;
  border:0;
  border-radius:999px;
  background:rgba(255,255,255,.92);
  color:#111827;
  cursor:pointer;
  font-size:24px;
  line-height:1;
  box-shadow:0 8px 20px rgba(0,0,0,.22);
}

.line-pending-panel{
  margin-top:16px;
  padding-top:14px;
  border-top:1px solid var(--line);
}

.line-pending-panel h3{
  margin:0 0 4px;
  font-size:16px;
}

.line-pending-list{
  display:grid;
  gap:10px;
}

.line-pending-item{
  display:grid;
  grid-template-columns:44px minmax(0,1fr);
  gap:10px;
  align-items:center;
  padding:10px;
  border:1px solid var(--line);
  border-radius:12px;
  background:#fafbfe;
}

.line-pending-item img,
.line-avatar{
  width:44px;
  height:44px;
  border-radius:999px;
  object-fit:cover;
  display:grid;
  place-items:center;
  background:#06c755;
  color:#fff;
  font-weight:900;
}

.line-pending-item b,
.line-pending-item small{
  display:block;
  min-width:0;
}

.line-pending-item input[data-copy-value],
input[data-copy-value]{
  cursor:pointer;
}

.line-pending-item input[data-copy-value]{
  margin:6px 0;
  font-size:12px;
  font-family:ui-monospace,SFMono-Regular,Consolas,monospace;
}

input[data-copy-value].copied{
  border-color:#22c55e!important;
  box-shadow:0 0 0 3px rgba(34,197,94,.14)!important;
}

@media(max-width:760px){
  .danger-button{
    width:100%;
    min-height:48px;
  }
  .gallery-open span{
    opacity:1;
    transform:none;
    font-size:10px;
    padding:5px 7px;
  }
  .gallery-lightbox{
    width:calc(100vw - 16px);
    max-width:calc(100vw - 16px);
    border-radius:16px;
  }
}

@media(max-width:900px){
  .progress-steps{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;overflow:visible!important;margin:0 0 12px!important;padding:0!important}
  .progress-steps span{max-width:none;min-width:0;white-space:normal!important;text-align:center;line-height:1.25}
}

@media(max-width:520px){
  .progress-steps{grid-template-columns:repeat(2,minmax(0,1fr))}
}

@media(max-width:360px){
  main{padding-left:10px!important;padding-right:10px!important}
  .method-options{grid-template-columns:1fr!important}
  .metrics,.job-money-grid,.gallery-thumb-grid{grid-template-columns:1fr!important}
}

@media(prefers-color-scheme:dark){
  body:not(.login-body):not(.receipt-body):not(.quotation-body){--ink:#eef2ff;--muted:#a8b1c3;--line:#2d3344;--surface:#171b29;--base:#101421;background:var(--base);color:var(--ink)}
  body:not(.login-body):not(.receipt-body):not(.quotation-body) .panel,
  body:not(.login-body):not(.receipt-body):not(.quotation-body) .metrics article,
  body:not(.login-body):not(.receipt-body):not(.quotation-body) .job-detail-hero,
  body:not(.login-body):not(.receipt-body):not(.quotation-body) .kanban-col,
  body:not(.login-body):not(.receipt-body):not(.quotation-body) .kanban-card,
  body:not(.login-body):not(.receipt-body):not(.quotation-body) .customer-searchbar,
  body:not(.login-body):not(.receipt-body):not(.quotation-body) .customer-contact-list div,
  body:not(.login-body):not(.receipt-body):not(.quotation-body) .job-facts div,
  body:not(.login-body):not(.receipt-body):not(.quotation-body) .job-money-grid article,
  body:not(.login-body):not(.receipt-body):not(.quotation-body) .ghost,
  body:not(.login-body):not(.receipt-body):not(.quotation-body) .icon,
  body:not(.login-body):not(.receipt-body):not(.quotation-body) .menu{background:#171b29;color:var(--ink);border-color:var(--line)}
  body:not(.login-body):not(.receipt-body):not(.quotation-body) input,
  body:not(.login-body):not(.receipt-body):not(.quotation-body) select,
  body:not(.login-body):not(.receipt-body):not(.quotation-body) textarea{background:#111827!important;color:var(--ink)!important;border-color:#354052!important}
}

@page{
  size:A4;
  margin:6mm;
}

@media print{
  html,
  body.quotation-body{
    width:210mm;
    min-height:0!important;
  }

  body.quotation-body{
    font-size:9px!important;
    line-height:1.22!important;
  }

  .quotation-body .receipt-shell{
    width:100%!important;
    max-width:none!important;
  }

  .quotation-paper{
    min-height:0!important;
    padding:0!important;
    border:0!important;
  }

  .quotation-paper .receipt-head{
    display:grid!important;
    grid-template-columns:minmax(0,1.35fr) minmax(42mm,.65fr);
    gap:7mm!important;
    padding-bottom:6px!important;
    margin-bottom:7px!important;
  }

  .quotation-paper .receipt-brand-block{
    gap:4px!important;
  }

  .quotation-paper .receipt-brand-top{
    gap:8px!important;
  }

  .quotation-paper .receipt-logo{
    width:34px!important;
    height:34px!important;
  }

  .quotation-paper .receipt-logo-image{
    padding:4px!important;
  }

  .quotation-paper .receipt-logo-letter{
    font-size:18px!important;
  }

  .quotation-paper .receipt-kicker{
    font-size:7px!important;
    letter-spacing:1px!important;
    margin:0 0 2px!important;
  }

  .quotation-paper .receipt-brand-copy h1{
    font-size:14px!important;
    line-height:1.02!important;
    margin:0 0 2px!important;
  }

  .quotation-paper .receipt-brand-copy p{
    font-size:8.5px!important;
    line-height:1.18!important;
  }

  .quotation-paper .receipt-contact-row{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:2px 8px!important;
    font-size:7.5px!important;
    line-height:1.18!important;
  }

  .quotation-paper .receipt-contact-row span+span:before{
    display:none!important;
  }

  .quotation-paper .receipt-meta-box{
    min-width:0!important;
  }

  .quotation-paper .receipt-chip{
    font-size:7px!important;
    padding:3px 7px!important;
  }

  .quotation-paper .receipt-head h2{
    font-size:15px!important;
    margin:4px 0!important;
  }

  .quotation-paper .receipt-meta-box p{
    font-size:8.5px!important;
    margin:1px 0!important;
  }

  .quotation-paper .receipt-grid{
    gap:7px!important;
    margin-bottom:7px!important;
  }

  .quotation-paper .receipt-grid article{
    padding:7px!important;
    border-radius:8px!important;
  }

  .quotation-paper .receipt-grid h3,
  .quotation-paper .receipt-summary h3{
    font-size:10px!important;
    margin-bottom:3px!important;
  }

  .quotation-paper .receipt-grid p,
  .quotation-paper .receipt-summary p{
    margin:1px 0!important;
    font-size:8.5px!important;
    line-height:1.22!important;
  }

  .quotation-table{
    margin-bottom:7px!important;
  }

  .quotation-table th,
  .quotation-table td{
    padding:5px 6px!important;
    font-size:8.5px!important;
    line-height:1.2!important;
  }

  .quotation-table small{
    font-size:7.5px!important;
    line-height:1.18!important;
  }

  .quotation-paper .receipt-summary{
    grid-template-columns:minmax(0,1fr) 62mm!important;
    gap:7px!important;
  }

  .quotation-paper .receipt-total-box{
    padding:7px!important;
    border-radius:8px!important;
  }

  .quotation-paper .receipt-total-box span{
    font-size:7px!important;
    margin-bottom:2px!important;
  }

  .quotation-paper .receipt-total-box strong{
    font-size:17px!important;
  }

  .quotation-paper .receipt-balance{
    margin-top:5px!important;
    padding-top:4px!important;
  }

  .quotation-paper .receipt-balance p{
    font-size:8px!important;
    margin:2px 0!important;
  }

  .quotation-paper .receipt-balance .receipt-balance-due{
    margin-top:3px!important;
    padding-top:3px!important;
  }

  .quotation-paper .receipt-footer{
    gap:18px!important;
    margin-top:14px!important;
    break-inside:avoid!important;
    page-break-inside:avoid!important;
  }

  .quotation-paper .receipt-sign{
    padding-top:18px!important;
  }

  .quotation-paper .receipt-sign:before{
    height:18px!important;
  }

  .quotation-paper .receipt-sign span{
    margin-bottom:3px!important;
    font-size:8.5px!important;
  }

  .quotation-paper .receipt-sign b{
    font-size:8.5px!important;
  }
}

/* Business documents: one source of truth for preview, print and PDF */
.document-print-body{background:#ecebe8;padding:24px;color:#252525}
.document-preview-shell{max-width:1040px;padding-left:0!important;padding-right:0!important}
.document-paper-wrap{width:100%;overflow-x:auto;padding:2px 0 28px}
.business-document{--doc-gold:#c8a15a;--doc-orange:#f3a038;position:relative;width:210mm;height:297mm;margin:0 auto;padding:10mm 13mm 8mm;background:#fff;color:#202020;font-family:"Sarabun","Noto Sans Thai","Leelawadee UI",Tahoma,sans-serif;font-size:9.4pt;line-height:1.38;box-sizing:border-box;box-shadow:0 12px 38px #1112;overflow:hidden}
.business-document *{box-sizing:border-box}
.document-content{height:100%;display:flex;flex-direction:column;min-width:0}
.document-content>*{flex-shrink:0}
.document-validation-alert{display:flex;gap:8px;align-items:center;max-width:210mm;margin:0 auto 10px;padding:10px 12px;border:1px solid #e7b85d;background:#fff7df;color:#805d14;border-radius:10px}
.document-validation-alert span{min-width:0;overflow-wrap:anywhere}
.business-document.has-overflow{outline:1.2mm solid #d6495b}
.business-document.has-overflow::after{content:"เนื้อหาเกิน 1 หน้า A4";position:absolute;right:4mm;bottom:3mm;background:#d6495b;color:#fff;padding:1.5mm 2.5mm;border-radius:1mm;font-size:8pt;z-index:5}
.document-corner{position:absolute;top:0;right:0;width:0;height:0;border-left:28mm solid transparent;border-top:28mm solid var(--doc-orange)}
.document-header{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(60mm,.85fr);gap:14mm;padding-bottom:5mm;border-bottom:.3mm solid #cfcfcf;break-inside:avoid}
.document-company{min-width:0}
.document-company-profile{display:grid;grid-template-columns:22mm minmax(0,1fr);gap:4mm;align-items:start}
.document-company-copy{min-width:0}
.document-logo{width:22mm;height:22mm;object-fit:contain;display:block;margin:0}
.document-company h1{font-size:11.5pt;margin:0 0 1.4mm;line-height:1.25}
.document-company p{margin:.7mm 0;color:#343434;overflow-wrap:anywhere}
.document-meta{padding-right:5mm;min-width:0}
.document-english-title{display:block;text-align:center;color:#a87624;text-transform:uppercase;letter-spacing:.08em}.document-meta h2{margin:1mm 0 3mm;color:var(--doc-gold);font-size:20pt;font-weight:500;text-align:center;border-bottom:.3mm solid #cfcfcf;padding-bottom:2mm}
.document-meta dl,.document-totals{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:1mm 4mm;margin:0}
.document-meta dt{color:#b39259}.document-meta dd{margin:0;font-weight:600;overflow-wrap:anywhere}
.document-customer{padding:4mm 0 3mm;min-height:20mm;break-inside:avoid}
.document-label,.document-notes h4,.document-payment-accounts h4{color:var(--doc-gold);font-weight:700;margin:0 0 1mm}
.document-customer h3{font-size:11pt;margin:0 0 1mm}.document-customer p{margin:.5mm 0}
.document-customer-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(48mm,.65fr);gap:8mm;min-width:0}.document-customer-grid>div{min-width:0}.document-customer-contact{padding-top:1mm}
.document-job-line{display:flex;flex-wrap:wrap;gap:1.2mm 5mm;padding:2.2mm 0;border-top:.25mm solid #d7d7d7;color:#454545;break-inside:avoid}
.document-job-line b{color:#222}.document-job-line span{position:relative}
.document-items{width:100%;border-collapse:collapse;table-layout:fixed;margin-top:1mm;break-inside:auto}
.document-items th,.document-items td{padding:2.1mm 1.4mm;border-bottom:.25mm solid #d3d3d3;vertical-align:top;overflow-wrap:anywhere}
.document-items th{font-size:8.5pt;text-align:center;border-top:.35mm solid #aaa;color:#333;font-weight:700}
.document-items th:nth-child(1){width:7mm}.document-items th:nth-child(2){width:auto}.document-items th:nth-child(3){width:13mm}.document-items th:nth-child(4){width:23mm}.document-items th:nth-child(5){width:18mm}.document-items th:nth-child(6){width:23mm}.document-items th:nth-child(7){width:23mm}
.document-items tr{break-inside:avoid}.document-items small{display:-webkit-box;color:#555;font-size:8.5pt;margin-top:.7mm;white-space:normal;overflow:hidden;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-clamp:2}.document-items .center{text-align:center}.document-items .number{text-align:right;white-space:nowrap}
.document-summary-row{display:grid;grid-template-columns:minmax(0,1fr) 76mm;gap:8mm;padding:3mm 0 2mm;break-inside:avoid}
.document-amount-words{font-weight:600;align-self:center}
.document-totals{gap:1.3mm 3mm;border-bottom:.3mm solid #ccc;padding-bottom:2mm}
.document-totals dt{color:#b39259}.document-totals dd{text-align:right;margin:0;white-space:nowrap}.document-totals .strong{font-weight:800;color:#222;border-top:.25mm solid #bbb;padding-top:1.3mm}
.document-lower{display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);gap:8mm;margin-top:2mm;break-inside:avoid}
.document-notes p{margin:1mm 0;white-space:normal}
.document-payment-accounts{margin-top:4mm;break-inside:avoid}
.payment-accounts-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2.5mm}
.payment-accounts-grid.count-1{grid-template-columns:minmax(0,1fr);max-width:150mm}
.payment-accounts-grid.count-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.payment-account-card{display:grid;grid-template-columns:minmax(0,1fr) 30mm;gap:2.5mm;align-items:center;border:.25mm solid #d8d8d8;border-radius:2mm;padding:3mm;min-height:38mm}
.payment-accounts-grid.count-3 .payment-account-card{grid-template-columns:minmax(0,1fr) 25mm;padding:2mm;gap:1.5mm}.payment-accounts-grid.count-3 .payment-account-qr{justify-self:center}.payment-accounts-grid.count-3 .payment-account-qr img{width:25mm;height:25mm}
.payment-account-heading{display:flex;gap:2mm;align-items:center;margin-bottom:1.5mm}.payment-bank-logo{width:9mm;height:9mm;object-fit:contain}.payment-account-heading b,.payment-account-heading small{display:block}.payment-account-heading small{font-size:7.5pt;color:#666}
.payment-account-copy p{display:grid;grid-template-columns:18mm 1fr;gap:1mm;margin:.7mm 0}.payment-account-copy p span{font-size:7.8pt;color:#666}.payment-account-copy p strong{font-size:8.3pt;overflow-wrap:anywhere}
.payment-account-qr{margin:0;text-align:center}.payment-account-qr img{display:block;width:30mm;height:30mm;object-fit:contain}.payment-account-qr figcaption{font-size:7pt;color:#555;margin-top:.6mm}
.document-images{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:31mm;gap:1.5mm;min-width:0}.document-images.count-1{grid-template-columns:1fr;grid-auto-rows:50mm}.document-images figure{position:relative;margin:0;min-width:0;overflow:hidden;background:#f4f4f4}.document-images img{width:100%;height:100%;object-fit:cover;display:block}.document-images figcaption{position:absolute;left:0;right:0;bottom:0;padding:1mm 1.5mm;background:#0009;color:#fff;font-size:7.5pt}
.document-signatures{display:grid;grid-template-columns:minmax(0,1fr) 32mm minmax(0,1fr);gap:8mm;margin-top:8mm;break-inside:avoid;align-items:end}.document-signatures section{text-align:center;min-width:0}.signature-art-space{height:20mm;display:flex;align-items:flex-end;justify-content:center}.signature-image{display:block;max-width:38mm;max-height:19mm;object-fit:contain}.signature-stamp-space{height:28mm;display:flex;align-items:center;justify-content:center}.stamp-image{display:block;position:static;transform:none;max-width:27mm;max-height:27mm;object-fit:contain;opacity:.9}.signature-stamp-column small{display:block;min-height:4mm;color:#666;font-size:7.5pt}.signature-party p{height:9mm;margin:0;display:flex;align-items:flex-end;justify-content:center;overflow-wrap:anywhere}.signature-line{border-bottom:.3mm solid #9e9e9e;margin-top:2mm}.signature-party>b{display:block;margin-top:1.2mm;font-size:8.4pt}.signature-date{display:flex;gap:2mm;align-items:flex-end;justify-content:center;margin-top:2mm;font-size:8.4pt;color:#444}.signature-date span{display:inline-block;width:30mm;border-bottom:.25mm solid #aaa;height:4mm}.document-footer-text{text-align:center;border-top:.25mm solid #ddd;margin-top:5mm;padding-top:2mm;color:#666;font-size:8pt}
.business-document.density-medium{font-size:9pt;line-height:1.3}.density-medium .document-header{padding-bottom:3.5mm}.density-medium .document-customer{padding:3mm 0 2mm}.density-medium .document-items th,.density-medium .document-items td{padding:1.6mm 1.2mm}.density-medium .document-summary-row{padding:2mm 0 1mm}.density-medium .document-payment-accounts{margin-top:2.5mm}.density-medium .document-signatures{margin-top:5mm}
.business-document.density-compact{font-size:8.7pt;line-height:1.14}.density-compact .document-corner{border-left-width:22mm;border-top-width:22mm}.density-compact .document-header{gap:8mm;padding-bottom:2mm}.density-compact .document-company-profile{grid-template-columns:16mm minmax(0,1fr);gap:2.5mm}.density-compact .document-logo{width:16mm;height:16mm}.density-compact .document-company h1{font-size:10.5pt;margin-bottom:.5mm}.density-compact .document-company p{margin:.2mm 0}.density-compact .document-meta{padding-right:3mm}.density-compact .document-meta h2{font-size:16pt;margin:.5mm 0 1mm;padding-bottom:1mm}.density-compact .document-meta dl{gap:.25mm 3mm}.density-compact .document-customer{padding:1.5mm 0 1mm;min-height:0}.density-compact .document-customer-grid{gap:5mm}.density-compact .document-customer h3{font-size:10pt;margin-bottom:.35mm}.density-compact .document-customer p{margin:.15mm 0}.density-compact .document-customer-contact{padding-top:.4mm}.density-compact .document-job-line{padding:1mm 0;gap:.5mm 3mm}.density-compact .document-items{margin-top:.3mm}.density-compact .document-items th,.density-compact .document-items td{padding:.65mm .9mm;font-size:8.5pt;line-height:1.06}.density-compact .document-items small{font-size:8.5pt;line-height:1.06;margin-top:.2mm}.density-compact .document-summary-row{grid-template-columns:minmax(0,1fr) 70mm;gap:5mm;padding:1mm 0 .7mm}.density-compact .document-totals{gap:.35mm 2mm;padding-bottom:.7mm}.density-compact .document-lower{gap:5mm;margin-top:.5mm}.density-compact .document-notes p{margin:.25mm 0}.density-compact .document-images{grid-auto-rows:21mm}.density-compact .document-images.count-1{grid-auto-rows:28mm}.density-compact .document-payment-accounts{margin-top:1mm}.density-compact .payment-accounts-grid{gap:1.5mm}.density-compact .payment-account-card{padding:1.4mm;min-height:28mm}.density-compact .payment-account-heading{margin-bottom:.3mm}.density-compact .payment-account-copy p{margin:.1mm 0}.density-compact .payment-account-qr img{width:25mm;height:25mm}.density-compact .payment-accounts-grid.count-3 .payment-account-qr img{width:25mm;height:25mm}.density-compact .document-signatures{grid-template-columns:minmax(0,1fr) 28mm minmax(0,1fr);gap:5mm;margin-top:1.5mm}.density-compact .signature-art-space{height:10mm}.density-compact .signature-image{max-height:9mm}.density-compact .signature-stamp-space{height:18mm}.density-compact .stamp-image{max-width:18mm;max-height:18mm}.density-compact .signature-party p{height:4mm}.density-compact .signature-date{margin-top:.6mm}.density-compact .document-footer-text{margin-top:1mm;padding-top:.7mm}
.quote-item-row select{min-width:0}
@media screen and (max-width:760px){
  .document-print-body{padding:10px}
  .document-screen-actions,.document-mode-panel{width:100%;min-width:0}
  .document-paper-wrap{margin:0 -10px;width:calc(100% + 20px);padding-left:10px}
  .business-document{margin:0;box-shadow:none}
}
@page{size:A4 portrait;margin:0}
@media print{
  html,body.document-print-body{width:210mm!important;min-height:297mm!important;margin:0!important;padding:0!important;background:#fff!important}
  .document-screen-actions,.document-mode-panel{display:none!important}
  .document-preview-shell,.document-paper-wrap{width:210mm!important;max-width:none!important;margin:0!important;padding:0!important;overflow:visible!important}
  .document-validation-alert{display:none!important}
  .business-document{width:210mm!important;height:297mm!important;min-height:0!important;margin:0!important;padding:10mm 13mm 8mm!important;box-shadow:none!important;outline:none!important;print-color-adjust:exact!important;-webkit-print-color-adjust:exact!important}
  .business-document.has-overflow::after{display:none!important}
  .document-header{grid-template-columns:minmax(0,1.15fr) minmax(60mm,.85fr)!important}
  .document-summary-row{grid-template-columns:minmax(0,1fr) 76mm!important}
  .document-lower{grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr)!important}
  .document-signatures{grid-template-columns:minmax(0,1fr) 32mm minmax(0,1fr)!important}
}

.payment-account-settings-list{display:grid;gap:10px}.payment-account-settings-row{display:grid;grid-template-columns:52px 52px minmax(0,1fr) auto auto;gap:14px;align-items:center;padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--panel)}.payment-account-settings-logo{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;background:var(--soft);overflow:hidden;font-weight:800;color:var(--brand)}.payment-account-settings-logo img{width:100%;height:100%;object-fit:contain}.payment-account-settings-qr{width:46px;height:46px;display:grid;place-items:center;border:1px solid var(--line);border-radius:8px;background:#fff;overflow:hidden;font-size:9px;color:var(--muted);text-align:center}.payment-account-settings-qr img{width:100%;height:100%;object-fit:contain}.payment-account-settings-row small{display:block;color:var(--muted);margin-top:3px}.payment-account-statuses,.payment-account-settings-actions{display:flex;align-items:center;gap:8px}.payment-account-settings-actions form{margin:0}.compact-button{width:auto!important;min-width:0!important;padding:9px 13px!important}.danger-text{color:#d54b61!important}.compact-empty{padding:22px}.inline-check-group{display:flex;flex-wrap:wrap;gap:14px}.upload-image-preview{display:none;width:72px;height:72px;object-fit:contain;margin-top:8px;border:1px solid var(--line);border-radius:8px;background:#fff}.upload-image-preview.is-visible{display:block}
.document-account-selector{border:1px solid var(--line);border-radius:12px;padding:12px;margin:0}.document-account-selector legend{padding:0 6px;font-size:12px;font-weight:700}.document-account-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.document-account-options>label{display:flex;align-items:center;gap:8px;padding:9px;border:1px solid var(--line);border-radius:9px}.document-account-options small{display:block;color:var(--muted)}
@media screen and (max-width:760px){.payment-account-settings-row{grid-template-columns:42px 42px minmax(0,1fr)}.payment-account-statuses,.payment-account-settings-actions{grid-column:1/-1;justify-content:flex-start;flex-wrap:wrap}.document-account-options{grid-template-columns:1fr}}

.document-settings-panel .document-text-form textarea{min-height:96px;line-height:1.55}
.document-text-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.document-text-grid small{color:var(--muted);font-weight:500;line-height:1.45}
.document-text-grid code{background:#fff6dd;border-radius:5px;padding:1px 5px;color:#8b6513}
@media(max-width:900px){.document-text-grid{grid-template-columns:1fr}}

@media screen and (min-width:761px){
  body.quotation-body{
    padding:18px!important;
  }

  .quotation-body .receipt-shell,
  .quotation-body .receipt-actions,
  .quotation-body .document-mode-panel{
    max-width:210mm!important;
  }

  .quotation-body .quotation-paper{
    width:210mm!important;
    min-height:297mm!important;
    margin:0 auto!important;
    padding:6mm!important;
    border-radius:4px!important;
  }

  .quotation-paper .receipt-head{
    display:grid!important;
    grid-template-columns:minmax(0,1.35fr) minmax(42mm,.65fr);
    gap:7mm!important;
    padding-bottom:6px!important;
    margin-bottom:7px!important;
  }

  .quotation-paper .receipt-brand-block{gap:4px!important}
  .quotation-paper .receipt-brand-top{gap:8px!important}
  .quotation-paper .receipt-logo{width:34px!important;height:34px!important}
  .quotation-paper .receipt-logo-image{padding:4px!important}
  .quotation-paper .receipt-logo-letter{font-size:18px!important}
  .quotation-paper .receipt-kicker{font-size:7px!important;letter-spacing:1px!important;margin:0 0 2px!important}
  .quotation-paper .receipt-brand-copy h1{font-size:14px!important;line-height:1.02!important;margin:0 0 2px!important}
  .quotation-paper .receipt-brand-copy p{font-size:8.5px!important;line-height:1.18!important}

  .quotation-paper .receipt-contact-row{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:2px 8px!important;
    font-size:7.5px!important;
    line-height:1.18!important;
  }

  .quotation-paper .receipt-contact-row span+span:before{display:none!important}
  .quotation-paper .receipt-meta-box{min-width:0!important}
  .quotation-paper .receipt-chip{font-size:7px!important;padding:3px 7px!important}
  .quotation-paper .receipt-head h2{font-size:15px!important;margin:4px 0!important}
  .quotation-paper .receipt-meta-box p{font-size:8.5px!important;margin:1px 0!important}
  .quotation-paper .receipt-grid{gap:7px!important;margin-bottom:7px!important}
  .quotation-paper .receipt-grid article{padding:7px!important;border-radius:8px!important}
  .quotation-paper .receipt-grid h3,
  .quotation-paper .receipt-summary h3{font-size:10px!important;margin-bottom:3px!important}
  .quotation-paper .receipt-grid p,
  .quotation-paper .receipt-summary p{margin:1px 0!important;font-size:8.5px!important;line-height:1.22!important}
  .quotation-table{margin-bottom:7px!important}
  .quotation-table th,
  .quotation-table td{padding:5px 6px!important;font-size:8.5px!important;line-height:1.2!important}
  .quotation-table small{font-size:7.5px!important;line-height:1.18!important}

  .quotation-paper .receipt-summary{
    grid-template-columns:minmax(0,1fr) 62mm!important;
    gap:7px!important;
  }

  .quotation-paper .receipt-total-box{padding:7px!important;border-radius:8px!important}
  .quotation-paper .receipt-total-box span{font-size:7px!important;margin-bottom:2px!important}
  .quotation-paper .receipt-total-box strong{font-size:17px!important}
  .quotation-paper .receipt-balance{margin-top:5px!important;padding-top:4px!important}
  .quotation-paper .receipt-balance p{font-size:8px!important;margin:2px 0!important}
  .quotation-paper .receipt-balance .receipt-balance-due{margin-top:3px!important;padding-top:3px!important}
  .quotation-paper .receipt-footer{gap:18px!important;margin-top:14px!important}
  .quotation-paper .receipt-sign{padding-top:18px!important}
  .quotation-paper .receipt-sign:before{height:18px!important}
  .quotation-paper .receipt-sign span,
  .quotation-paper .receipt-sign b{font-size:8.5px!important}
}

@media print{
  .receipt-actions,
  .document-mode-panel{
    display:none!important;
  }

  body.quotation-body{
    padding:0!important;
    background:#fff!important;
  }

  .quotation-body .quotation-paper{
    width:100%!important;
    min-height:0!important;
    margin:0!important;
    padding:0!important;
    box-shadow:none!important;
  }

  /*
   * Keep document columns deterministic in Chrome print preview.
   * Print uses a narrow CSS viewport, so the mobile rules above can also
   * match while printing unless every document grid is restored here.
   */
  .quotation-paper .receipt-head{
    display:grid!important;
    grid-template-columns:minmax(0,1.35fr) minmax(42mm,.65fr)!important;
  }

  .quotation-paper .receipt-grid{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }

  .quotation-paper .receipt-summary{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) 62mm!important;
  }

  .quotation-paper .receipt-footer{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    align-items:start!important;
    column-gap:18mm!important;
    width:100%!important;
  }

  .quotation-paper .receipt-sign{
    min-width:0!important;
    width:auto!important;
    break-inside:avoid!important;
    page-break-inside:avoid!important;
  }
}
