:root{--ink:#172b25;--muted:#74827d;--line:#e5ebe7;--green:#19765d}*{box-sizing:border-box}body{margin:0;background:#f4f6f4;color:var(--ink);font:16px/1.5 system-ui,-apple-system,"Segoe UI",sans-serif}.container{width:min(100% - 2rem,1240px);margin-inline:auto}.container-fluid{width:100%;padding-inline:1.5rem}.topbar{height:68px;background:#fff;border-bottom:1px solid var(--line)}.topbar .container-fluid{height:100%;display:flex;align-items:center;justify-content:space-between}.brand-mark,.icon-box{display:inline-grid;place-items:center;background:#e7f4ed;color:var(--green);font-weight:800}.brand-mark{width:36px;height:36px;border-radius:11px}.brand{font-weight:750}.subtle{color:var(--muted)}a{color:var(--green)}.text-dark{color:#172b25!important}.text-decoration-none{text-decoration:none}.fw-normal{font-weight:400}.fw-semibold{font-weight:600}.small,small{font-size:.875em}.d-flex{display:flex}.d-grid{display:grid}.d-none{display:none}.align-items-center{align-items:center}.align-items-start{align-items:flex-start}.align-items-end{align-items:flex-end}.justify-content-between{justify-content:space-between}.justify-content-end{justify-content:flex-end}.flex-wrap{flex-wrap:wrap}.gap-2{gap:.5rem}.gap-3{gap:1rem}.gap-4{gap:1.5rem}.me-2{margin-right:.5rem}.mt-1{margin-top:.25rem}.mt-3{margin-top:1rem}.mt-4{margin-top:1.5rem}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:1rem}.mb-4{margin-bottom:1.5rem}.p-0{padding:0}.px-4{padding-inline:1.5rem}.py-4{padding-block:1.5rem}.w-100{width:100%}.h-100{height:100%}.text-center{text-align:center}.text-end{text-align:right}.border{border:1px solid var(--line)}.rounded{border-radius:.5rem}.row{display:flex;flex-wrap:wrap;margin-inline:-.5rem}.row>*{padding-inline:.5rem;min-width:0}.g-3{row-gap:1rem}.g-4{row-gap:1.5rem}.col-12{width:100%}.col-6{width:50%}.card{background:#fff;border:1px solid var(--line);border-radius:15px;box-shadow:0 3px 14px #20372a08;}.card-header{background:#fff;border-bottom:1px solid var(--line);padding:17px 20px}.card-body{padding:20px}.h-100{height:100%}.section-title{font-size:.94rem;font-weight:750}.eyebrow{font-size:.72rem;letter-spacing:.11em;color:var(--green);font-weight:800;text-transform:uppercase}.heading{letter-spacing:-.045em;font-weight:750}.h2{font-size:2rem}.h5{font-size:1.25rem}.form-label{display:block;margin-bottom:.35rem;font-size:.82rem;font-weight:650;color:#45534d}.form-control,.form-select{display:block;width:100%;min-height:42px;padding:.5rem .75rem;border:1px solid #dce4df;border-radius:.375rem;background:#fff;color:#172b25;font:inherit}.form-control:focus,.form-select:focus{outline:2px solid #19765d33;border-color:#6bb69b}.btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent;border-radius:.4rem;padding:.5rem .85rem;background:#fff;color:#172b25;font:inherit;text-decoration:none;cursor:pointer}.btn-primary{background:#19765d;border-color:#19765d;color:#fff}.btn-primary:hover{background:#125e49}.btn-outline-secondary{border-color:#adb5bd;color:#495057;background:#fff}.btn-light{background:#f8f9fa;border-color:#dee2e6}.btn-sm{padding:.25rem .5rem;font-size:.875rem}.badge{display:inline-block;padding:.3em .55em;border-radius:.375rem;font-size:.75em}.text-bg-light{background:#f1f3f2;color:#49534e}.text-danger{color:#b42318}.nav-link{color:#63716b;font-weight:600}.nav-link:hover{color:#19765d}.alert{padding:1rem;border-radius:.5rem}.alert-success{background:#d1e7dd;color:#0f5132}.alert-danger{background:#f8d7da;color:#842029}.alert-warning{background:#fff3cd;color:#664d03}.stat{border:1px solid var(--line);border-radius:13px;background:#fff;padding:16px}.stat strong{display:block;font-size:1.45rem;letter-spacing:-.04em}.table-responsive{overflow-x:auto;border-radius:12px}.table{width:100%;border-collapse:collapse;background:#fff}.table th,.table td{padding:13px 14px;border-bottom:1px solid #e9ecef;text-align:left;vertical-align:middle}.table thead th{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:#79867f;background:#f8faf8}.icon-box{width:38px;height:38px;border-radius:11px}.page{max-width:1240px;margin:auto;padding:30px 24px}.mobile-actions{display:none}.modal{display:none;position:fixed;inset:0;z-index:1000;background:#0008;overflow:auto;padding:2rem 1rem}.modal.show{display:block}.modal-dialog{max-width:800px;margin:3vh auto}.modal-content{background:#fff;border-radius:12px;overflow:hidden}.modal-header,.modal-footer{padding:1rem;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.modal-footer{border-top:1px solid var(--line);border-bottom:0;justify-content:flex-end;gap:.5rem}.modal-body{padding:1.25rem}.modal-title{margin:0}.btn-close{border:0;background:transparent;font-size:1.5rem;cursor:pointer}.desktop-actions{display:inline-flex}@media(min-width:768px){.col-md-6{width:50%}.col-md-4{width:33.333%}.col-md-8{width:66.667%}}@media(min-width:992px){.col-lg-3{width:25%}.col-lg-4{width:33.333%}.col-lg-5{width:41.667%}.col-lg-6{width:50%}.col-lg-7{width:58.333%}.modal-dialog-centered{margin:8vh auto}}@media(max-width:767px){.page{padding:22px 14px}.container-fluid{padding-inline:14px}.topbar{height:auto;min-height:62px}.card-body{padding:16px}.mobile-actions{display:flex;position:sticky;bottom:0;background:#ffffffed;border-top:1px solid var(--line);padding:10px 14px;z-index:10}.desktop-actions{display:none}.table th,.table td{padding:10px}.heading{font-size:1.65rem}.d-sm-inline{display:none}.modal{padding:0}.modal-dialog{margin:0;min-height:100vh}.modal-content{min-height:100vh;border-radius:0}}

.auth-card{max-width:460px;margin:8vh auto}.nav-menu{flex-wrap:wrap}.nav-link{white-space:nowrap}@media(max-width:767px){.topbar .container-fluid{align-items:flex-start;gap:.6rem;flex-direction:column;padding-block:.7rem}.nav-menu{gap:.35rem .8rem!important}}
.btn-outline-danger{border-color:#dc3545;color:#b02a37;background:#fff}.btn-outline-danger:hover{background:#dc3545;color:#fff}
.ticket-open{background:#fff3cd;color:#664d03}.ticket-closed{background:#d1e7dd;color:#0f5132}.ticket-note{max-width:320px;white-space:normal;overflow-wrap:anywhere}tr[id^="service-"]{scroll-margin-top:20px}tr[id^="service-"]:target{background:#fff3cd}

.app-shell{min-height:100vh;display:flex}.sidebar{position:fixed;inset:0 auto 0 0;width:190px;background:#fff;border-right:1px solid var(--line);padding:18px 12px;display:flex;flex-direction:column;gap:28px;z-index:20}.sidebar-brand{display:flex;align-items:center;gap:9px;color:var(--ink);text-decoration:none;font-weight:750;font-size:.9rem}.sidebar-nav{display:flex;flex-direction:column;gap:5px}.sidebar-nav a,.sidebar-logout{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:9px;color:#52635b;text-decoration:none;font-size:.9rem;font-weight:600}.sidebar-nav a:hover,.sidebar-logout:hover{background:#eaf5ef;color:var(--green)}.sidebar-logout{margin-top:auto}.app-main{width:calc(100% - 190px);margin-left:190px;min-width:0}.app-main .page{max-width:1600px;padding:24px clamp(16px,2vw,32px)}.app-main>.container{max-width:none;padding-inline:clamp(16px,2vw,32px)}.home-search{position:relative;z-index:10}.search-combo{position:relative}.search-results{position:absolute;top:calc(100% + 4px);left:0;right:0;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 12px 30px #172b251a;max-height:520px;overflow:auto;z-index:15}.search-option{width:100%;border:0;border-bottom:1px solid var(--line);background:#fff;padding:10px 12px;text-align:left;cursor:pointer;color:var(--ink);font:inherit}.search-option:last-child{border-bottom:0}.search-option:hover,.search-option:focus{background:#edf7f1;outline:0}.search-option small{display:block;color:var(--muted)}.home-workspace{display:grid;grid-template-columns:minmax(300px, .9fr) minmax(360px,1.1fr);gap:16px;align-items:start}.home-workspace>.card{min-width:0}.home-workspace>.card:nth-child(3){grid-column:2;grid-row:1 / span 3}.home-workspace .table-responsive{max-height:360px}.home-workspace .table th,.home-workspace .table td{padding:9px 10px;font-size:.9rem}
@media(max-width:900px){.sidebar{width:64px;padding:14px 8px}.sidebar-brand{justify-content:center}.sidebar-brand>span:last-child,.sidebar-nav a span,.sidebar-logout span{display:none}.sidebar-nav a,.sidebar-logout{justify-content:center;padding:10px 4px;font-size:1.15rem}.app-main{width:calc(100% - 64px);margin-left:64px}.home-workspace{grid-template-columns:1fr}.home-workspace>.card:nth-child(3){grid-column:auto;grid-row:auto}}
@media(max-width:560px){.sidebar{position:fixed;width:52px;padding:10px 5px;gap:20px}.app-main{width:calc(100% - 52px);margin-left:52px}.app-main .page{padding:16px 10px}.app-main>.container{padding-inline:10px}.home-workspace{gap:12px}.sidebar-nav a,.sidebar-logout{font-size:1rem;padding:9px 2px}.card-header{padding:13px 14px}.card-body{padding:14px}}

/* Compact three-panel home workspace, matching the legacy desktop workflow. */
.home-workspace{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.home-workspace>.card:nth-child(3){grid-column:auto;grid-row:auto}
.home-workspace .row{display:flex;flex-direction:column;flex-wrap:nowrap;margin-inline:0;gap:.55rem}
.home-workspace .row>*{width:100%;padding-inline:0}
.home-workspace .card-header{padding:12px 14px}
.home-workspace .card-body{padding:14px}
.home-workspace .form-control,.home-workspace .form-select{min-height:36px;padding:.35rem .55rem;font-size:.9rem}
.home-workspace textarea.form-control{min-height:65px}
.home-workspace .form-label{margin-bottom:.2rem;font-size:.76rem}
.home-workspace .table th,.home-workspace .table td{padding:7px 8px;font-size:.82rem}
@media(max-width:950px){.home-workspace{grid-template-columns:1fr}.home-workspace>.card:nth-child(3){grid-column:auto;grid-row:auto}}
/* Product forms: selection, price/payment, dates, details, service region. */
.product-entry .row,
form[action="?action=save-client-product"] .row{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem .8rem;margin:0}
.product-entry .row>* ,
form[action="?action=save-client-product"] .row>*{width:auto!important;min-width:0;padding:0!important;grid-column:auto}
.product-entry .row>div:has([name^="product_id"]),
form[action="?action=save-client-product"] .row>div:has([name="product_id"]),
form[action="?action=save-client-product"] .row>div:has(input[disabled]){order:1;grid-column:1/-1}
.product-entry .row>div:has([name^="price_info"]),
form[action="?action=save-client-product"] .row>div:has([name="price_info"]){order:2}
.product-entry .row>div:has([name^="payment_info"]),
form[action="?action=save-client-product"] .row>div:has([name="payment_info"]){order:3}
.product-entry .row>div:has([name^="date_sold"]),
form[action="?action=save-client-product"] .row>div:has([name="date_sold"]){order:4}
.product-entry .row>div:has([name^="date_installed"]),
form[action="?action=save-client-product"] .row>div:has([name="date_installed"]){order:5}
.product-entry .row>div:has([name^="warranty_period"]),
form[action="?action=save-client-product"] .row>div:has([name="warranty_period"]){order:6}
.product-entry .row>div:has([name^="product_long_description"]),
form[action="?action=save-client-product"] .row>div:has([name="long_description"]){order:7;grid-column:1/-1}
.product-entry .row>div:has([name^="region_id"]),
form[action="?action=save-client-product"] .row>div:has([name="region_id"]){order:8;grid-column:1/-1}
.product-entry .row>div:has(.remove-product-row){order:9;grid-column:1/-1}

form[action="?action=save-client-product"] .row>div:has(button.btn-primary){order:9;grid-column:1/-1}

.sidebar-logo{display:block;width:166px;max-width:100%;height:auto;object-fit:contain}
@media(max-width:900px){.sidebar-logo{width:48px}}
@media(max-width:560px){.sidebar-logo{width:42px}}

.service-list-filters .form-label{display:block}
@media print{
 @page{size:A4 landscape;margin:10mm}
 body{background:#fff!important;color:#111!important}
 .sidebar{display:none!important}
 .app-shell{display:block!important;min-height:0!important}
 .app-main{width:auto!important;margin:0!important;min-width:0!important}
 .app-main>.container,.app-main>.page{max-width:none!important;width:auto!important;margin:0!important;padding:0!important}
 .service-list-page{width:100%!important}
 .service-list-filters,.service-list-export,.service-list-pagination{display:none!important}
 .service-list-page .card{border:0!important;border-radius:0!important;box-shadow:none!important;background:#fff!important}
 .service-list-page .card-header{padding:0 0 8px!important;border:0!important;border-bottom:1px solid #777!important}
 .service-list-page .table-responsive{overflow:visible!important;border:0!important;border-radius:0!important}
 .service-list-page .table{width:100%!important;table-layout:auto!important;font-size:9pt!important}
 .service-list-page .table th,.service-list-page .table td{padding:4px 5px!important;border:1px solid #888!important;vertical-align:top!important}
 .service-list-page .ticket-note{max-width:none!important;overflow-wrap:anywhere}
 .service-list-page thead{display:table-header-group}
 .service-list-page tr{break-inside:avoid;page-break-inside:avoid}
 .service-list-page a{color:#111!important;text-decoration:none!important}
}
@media print{.service-list-page .table th:last-child,.service-list-page .table td:last-child{display:none!important}}

.login-logo{display:block;width:min(100%,260px);height:auto;object-fit:contain;margin:0 auto 1.5rem}

.product-entry .row>div:has([name^=seller]),form[action="?action=save-client-product"] .row>div:has([name=seller]){order:9;grid-column:1/-1}
.product-entry .row>div:has([name^=installer]),form[action="?action=save-client-product"] .row>div:has([name=installer]){order:10;grid-column:1/-1}
form[action="?action=save-client-product"] .row>div:has(button.btn-primary){order:11;grid-column:1/-1}
