@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;550;600;650;700&family=Outfit:wght@400;500;600;650;700;800&display=swap');
/* Shared foundation */
:root{--ink:#252b26;--muted:#798078;--green:#193c2e;--lime:#d8ee8e;--line:#e5e8df;--paper:#f6f7f2;--bs-primary:#254a35;--bs-primary-rgb:37,74,53}
body{font-family:'DM Sans',sans-serif;color:var(--ink);background:var(--paper);font-size:16px}h1,h2,h3,.brand{font-family:'Outfit',sans-serif}a{color:var(--green);text-decoration:none}button,input,select{font:inherit}a:hover{color:#5b7232}.btn{border-radius:8px;padding:10px 16px;font-weight:600;font-size:15px}.btn-primary{background:var(--green);border-color:var(--green)}.btn-primary:hover,.btn-primary:focus{background:#2f573f;border-color:#2f573f}.btn-light{background:#f4f5f0;border:1px solid var(--line)}.btn-dark{background:var(--ink);border-color:var(--ink)}.btn-outline-dark{border-color:#ced4c6}.form-control,.form-select{font-size:16px;min-height:44px;border-radius:7px;border-color:#dce1d5}.form-control:focus,.form-select:focus{border-color:#758d5e;box-shadow:0 0 0 3px #bdd68a33}.form-label{font-size:15px;font-weight:600}.required{color:#9e3b2d}.form-check-input:checked{background-color:var(--green);border-color:var(--green)}.eyebrow{font-size:13px;font-weight:700;letter-spacing:1.7px;color:#76816f}.panel{background:white;border:1px solid var(--line);border-radius:12px;overflow:hidden}.text-secondary{color:#7a8178!important}.small{font-size:14px}
/* Persistent BackOffice shell */
.sidebar{position:fixed;inset:0 auto 0 0;width:246px;background:#fff!important;border-right:1px solid var(--line)!important;display:flex;flex-direction:column;z-index:1040;padding:32px 18px 20px}.brand{display:flex;align-items:center;gap:11px;font-weight:700;font-size:19px;color:var(--green);padding:0 9px;margin-bottom:45px;letter-spacing:.4px}.brand small{font-family:'DM Sans',sans-serif;font-size:12px;letter-spacing:1.5px;display:block;color:#8a9187;margin-top:3px}.brand-mark{font-size:28px;color:#69853a}.workspace-label{font-size:12px;letter-spacing:1.5px;color:#a2a89d;font-weight:700;margin:0 14px 16px}.nav-group{margin-bottom:9px}.group-toggle{width:100%;background:transparent;border:0;display:flex;align-items:center;gap:12px;padding:12px 13px;text-align:left;font-size:14px;font-weight:700;color:#576152;border-radius:7px}.group-toggle.selected{color:var(--green)}.group-toggle>i:first-child{width:17px}.group-toggle .fa-chevron-down{font-size:12px}.nav-link{font-size:14px;padding:12px 13px;margin:3px 0 3px 19px;display:flex;gap:12px;align-items:center;border-radius:7px;color:#788173}.nav-link i{width:15px}.nav-link.active{background:#eaf1df;color:#2a4c2f;font-weight:700}.nav-link:hover{background:#f3f6ec}.sidebar-bottom{margin-top:auto;padding:22px 12px 0;border-top:1px solid var(--line)}.sidebar-bottom a{display:flex;gap:10px;font-size:14px}.sidebar-note{display:block;font-size:13px;color:#a4aa9d;margin-top:23px}.app-shell{margin-left:246px;min-height:100vh;display:flex;flex-direction:column}.topbar{height:104px;padding:0 38px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);background:var(--paper)}.topbar h1{font-size:25px;margin:0;font-weight:600}.top-divider{height:30px;border-left:1px solid var(--line)}.open-site{font-size:14px;color:#6f7969;display:flex;gap:8px;align-items:center}.avatar{background:#e6ebde;color:#4a6041;border-radius:50%;width:35px;height:35px;display:inline-flex;align-items:center;justify-content:center;font-size:14px;font-weight:700}.avatar.large{width:65px;height:65px;font-size:22px}.user-button{border:0;background:none;display:flex;align-items:center;gap:11px;padding:0}.user-name{text-align:left;font-size:14px;font-weight:600}.user-name small{display:block;color:#8e9588;font-size:13px;font-weight:400}.user-button>i{font-size:13px;color:#8a9381}.content{padding:32px 38px;flex:1}.app-footer{display:flex;justify-content:space-between;gap:16px;padding:22px 38px;color:#949b8e;font-size:13px;border-top:1px solid var(--line);margin-top:auto}.demo-dot{display:inline-block;width:5px;height:5px;border-radius:50%;background:#8ca557;margin:0 6px 2px}
/* Dashboard */
.welcome{display:grid;grid-template-columns:1.2fr 1fr;min-height:288px;overflow:hidden;padding:33px 35px;border:1px solid #dce4ca;border-radius:13px;background:#edf1df}.welcome h2{font-size:39px;font-weight:600;line-height:1.12;letter-spacing:-1px;margin:15px 0}.welcome p:not(.eyebrow){font-size:14px;color:#818970}.welcome .btn{font-size:14px;margin-top:8px}.network-art{position:relative;min-height:240px}.pizza-disc{position:absolute;left:43%;top:48%;transform:translate(-50%,-50%);height:104px;width:104px;background:#d7e2b7;border-radius:50%;display:grid;place-items:center;color:#617c37;font-size:54px;box-shadow:0 0 0 15px #e4ebd0}.orbit{position:absolute;left:43%;top:48%;transform:translate(-50%,-50%);border:1px dashed #bdc9a5;border-radius:50%;width:250px;height:200px}.orbit-two{width:340px;height:270px;opacity:.5}.location-chip{position:absolute;z-index:1;background:#fff9;padding:10px 13px;border:1px solid #fff;border-radius:7px;font-size:13px;color:#6a7957;box-shadow:0 8px 15px #66774408}.location-chip i{margin-right:7px}.chip-one{left:0;top:24px}.chip-two{right:0;top:66px}.chip-three{left:7%;bottom:24px}.chip-four{right:13%;bottom:3px}.metric{display:block;background:white;border:1px solid var(--line);border-radius:10px;padding:21px;height:100%;color:var(--ink)}.metric>span{display:flex;justify-content:space-between;font-size:14px;color:#7e8775}.metric>span i{color:#85966a;font-size:16px}.metric strong{display:block;font-family:'Outfit';font-size:34px;font-weight:500;margin:10px 0 5px}.metric strong small{font-size:16px;color:#b3b9aa}.metric p{font-size:13px;color:#9bA38f;margin:0}.metric:hover{border-color:#acbd8f}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:23px}.section-header h2{font-size:17px;margin:0;font-weight:500}.section-header a{font-size:13px;color:#82916d}.section-header a i{margin-left:8px}.location-summary{display:flex;align-items:center;gap:14px;padding:18px 0;border-top:1px solid #eef0e8;font-size:14px}.location-summary small{display:block;color:#9aa18f;font-size:13px;margin-top:5px}.store-icon{background:#f1f4e8;color:#849365;display:grid;place-items:center;width:37px;height:37px;border-radius:8px}.calendar-item{display:flex;gap:17px;margin:23px 0;font-size:14px}.calendar-item p{font-size:13px;color:#929c85;margin:7px 0}.date-block{display:flex;align-items:center;flex-direction:column;background:#f1f4e9;border:1px solid #e9eedd;border-radius:7px;padding:6px 11px;font-size:12px;color:#839269}.date-block strong{font-family:'Outfit';font-size:21px;color:#576a3d}.text-link{font-size:14px;font-weight:600}.quick-banner{display:flex;align-items:center;gap:20px;padding:25px 30px;border:1px solid var(--line);border-radius:10px;background:#eeF1e5;margin-top:27px}.feature-icon{height:46px;width:46px;display:inline-grid;place-items:center;background:#e5edce;color:#6e873b;border-radius:12px;font-size:22px}.quick-banner h2{font-size:17px;margin:0 0 6px}.quick-banner p{font-size:14px;color:#939c85;margin:0}.quick-banner .btn{margin-left:auto;font-size:14px}
/* Grids and drawers */
.section-intro{display:flex;justify-content:space-between;align-items:center;gap:15px;margin:0 0 25px}.subtle-tag{font-size:13px;white-space:nowrap;border:1px solid var(--line);padding:8px 10px;border-radius:6px;color:#86937a;background:#fff}.filterbar{display:flex;flex-wrap:wrap;gap:10px;padding:19px;border-bottom:1px solid var(--line);align-items:center}.filterbar .form-select{width:auto;font-size:14px;min-height:39px}.filterbar .btn{font-size:14px;padding:10px 12px}.search-wrap{position:relative;flex:1;min-width:170px;max-width:260px}.search-wrap i{position:absolute;left:12px;top:14px;color:#9ba38d;font-size:14px}.search-wrap .form-control{padding-left:32px;min-height:39px;font-size:14px}.table{margin:0;font-size:14px;--bs-table-border-color:#edf0e7}.table thead th{font-size:13px;font-weight:600;color:#8c957f;padding:16px 20px;background:#fafbf7;white-space:nowrap}.table td{padding:20px;white-space:nowrap;color:#717b66}.table td:first-child{font-weight:600;color:#39492d}.actions{width:1%;white-space:nowrap!important;text-align:right;padding-left:10px!important;padding-right:18px!important}.btn-icon{background:transparent;border:0;color:#82936e;padding:6px;font-size:15px}.btn-icon:hover{background:#edf2e3;border-radius:5px;color:#25472a}.status{display:inline-flex;align-items:center;gap:6px;padding:5px 9px;font-size:12px;border-radius:5px;background:#eef1e9;color:#81916a}.status:before{content:'';display:block;width:4px;height:4px;border-radius:50%;background:currentColor}.status-active{background:#eaf3e0;color:#7b9957}.status-draft,.status-inactive{background:#f0f0ec;color:#9a9f91}.status-scheduled{background:#fff3d7;color:#ad944f}.status-paused{background:#f8e8df;color:#b08161}.grid-bottom{display:flex;justify-content:space-between;padding:18px 20px;align-items:center;color:#a0a68f;font-size:14px}.page-link{font-size:14px;color:#7f8d6a;border-color:#e6ebdc}.active>.page-link{background:#e8efda;border-color:#d7e0c7;color:#5d7440}.record-drawer{--bs-offcanvas-width:520px}.offcanvas-header{border-bottom:1px solid var(--line);padding:25px}.record-form{display:flex;flex-direction:column;overflow:hidden;flex:1}.offcanvas-body{padding:25px}.drawer-footer{padding:20px 25px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:10px}.empty-state{padding:55px;text-align:center;color:#8f9981}.settings-panel{max-width:780px}.settings-layout{display:grid;grid-template-columns:minmax(300px,1.4fr) 1fr;gap:25px;max-width:1050px}.tip-card{background:#e9efd9;border-radius:12px;padding:40px;color:#526839}.tip-card>i{font-size:45px;margin-bottom:30px}.tip-card h2{font-size:30px}.tip-card p{line-height:1.8;color:#7e8d6a;margin:22px 0}.permission-table td,.permission-table th{text-align:center}.permission-table th:first-child{text-align:left}.profile-hero{display:flex;align-items:center;gap:20px;padding:10px 0 25px}.profile-row{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:23px 0;border-top:1px solid var(--line)}.profile-row span,.profile-row strong{display:block}.profile-row span{font-size:14px;color:#98a089;margin-bottom:6px}.profile-row strong{font-size:15px}.profile-value{overflow-wrap:anywhere}.modal-content{border:0;border-radius:13px}.modal-header,.modal-footer{padding:20px 24px;border-color:var(--line)}.modal-body{padding:24px}
/* Authentication, public preview and customer portal */
.auth-layout{min-height:100vh;display:flex;flex-direction:column;background:radial-gradient(ellipse at 15% 10%,#e7edda,transparent 50%),#f7f8f3}.auth-brand{font-family:'Outfit';font-size:23px;font-weight:700;text-align:center;padding:38px;color:#304c2c}.auth-brand i{margin-right:10px;color:#879e55}.auth-main{flex:1;display:flex;align-items:center;justify-content:center;padding:25px 20px 60px}.auth-card{background:white;border:1px solid var(--line);padding:38px;border-radius:16px;width:100%;max-width:460px;box-shadow:0 15px 60px #2b402207}.auth-card h1{font-size:31px;margin:15px 0}.auth-card>p{font-size:15px;line-height:1.7}.auth-card form{margin-top:27px}.auth-card a:not(.btn){font-size:14px}.website-preview{max-width:1000px;width:100%;padding:25px}.website-preview>h1{font-size:70px;line-height:1.06;letter-spacing:-2px;color:#28452c}.website-preview>.form-select{max-width:320px}.offer-card{height:100%;border-radius:15px;padding:35px;background:#e9efce;position:relative;overflow:hidden}.offer-card>i{position:absolute;right:25px;top:28px;font-size:80px;opacity:.13}.offer-card h2{font-size:30px;margin:20px 0}.offer-card strong{display:block;font-size:32px;font-family:'Outfit';margin:15px 0}.offer-card small{display:block;font-size:13px;opacity:.6}.offer-card.dark{background:#28452c;color:#f0f5e7}.offer-card.dark .eyebrow{color:#c9d7b1}.portal-preview{max-width:800px;width:100%}.portal-preview h1{font-size:40px}.loyalty-card{background:#25442c;color:#eaf1d9;padding:35px;border-radius:15px}.loyalty-card>span{font-size:13px;letter-spacing:2px;color:#b9cb9c}.loyalty-card>strong{display:flex;align-items:center;justify-content:space-between;font-size:65px;font-family:'Outfit';font-weight:500}.loyalty-card i{font-size:50px;opacity:.5}.loyalty-card p{font-size:14px;color:#a4b88d}.countdown{font-family:'Outfit';font-size:24px;color:#607b39}
@media(min-width:992px){.sidebar.offcanvas-lg{visibility:visible!important}.sidebar.offcanvas-lg .offcanvas-body{display:block}}
@media(max-width:1199px){.content{padding:25px}.topbar{padding:0 25px}.welcome h2{font-size:33px}.welcome{padding:28px}.chip-two{right:-18px}.filterbar .reset-filters span{display:none}}
@media(max-width:991px){.app-shell{margin-left:0}.sidebar{width:260px}.welcome{grid-template-columns:1fr 1fr}.topbar{height:91px}.app-footer{padding:20px 25px}.sidebar-bottom{margin-top:25px}.sidebar{overflow-y:auto}.brand{margin-bottom:25px}}
@media(max-width:650px){.content{padding:18px 14px}.topbar{padding:0 14px;height:88px}.topbar h1{font-size:20px}.topbar .eyebrow{font-size:12px;letter-spacing:.7px}.user-name,.top-divider{display:none}.open-site{font-size:12px;max-width:75px}.user-button{gap:5px}.welcome{grid-template-columns:1fr;padding:25px;min-height:auto}.welcome h2{font-size:36px}.network-art{display:none}.metric{padding:16px}.metric>span{font-size:13px}.metric p{line-height:1.7}.quick-banner{flex-wrap:wrap;padding:20px;gap:12px}.quick-banner .btn{margin-left:0;width:100%}.quick-banner h2{font-size:16px}.section-intro{display:block}.subtle-tag{display:inline-block;margin-top:15px}.settings-layout{grid-template-columns:1fr}.auth-card{padding:28px 24px}.app-footer{font-size:12px;padding:20px 16px}.website-preview{padding:5px}.website-preview>h1{font-size:45px}.portal-preview h1{font-size:33px}.filterbar{padding:13px}.filterbar .search-wrap{max-width:none;flex-basis:100%}.filterbar .btn{flex:1}.filterbar .per-page{max-width:110px}.filterbar .reset-filters{flex:0}.table td{padding:16px}.profile-row{gap:10px}.record-drawer{--bs-offcanvas-width:100vw}.loyalty-card>strong{font-size:50px}}

/* Readable supporting text and comfortable line spacing. */
body { line-height: 1.55; }
.brand small { font-size: 10px; letter-spacing: 1px; }
.eyebrow, .workspace-label { font-size: 12px; letter-spacing: 1.1px; }
.nav-link, .group-toggle { line-height: 1.45; }
.table thead th { font-size: 14px; color: #66725b; }
.table td { font-size: 15px; }
.status { font-size: 13px; }
.app-footer, .sidebar-note { font-size: 12px; }
.metric p, .location-summary small, .calendar-item p { color: #727d64; }
.record-count, .grid-bottom { color: #737f65; }
.form-label { font-size: 15px; }
.invalid-feedback { font-size: 14px; }
.sidebar { overflow-y: auto; }
@media (max-width: 650px) {
    .topbar .eyebrow { font-size: 10px; }
    .open-site { font-size: 12px; max-width: 90px; }
    .metric > span { font-size: 13px; }
    .app-footer { font-size: 12px; flex-wrap: wrap; }
    .section-header a { font-size: 13px; }
}

/* Location map and view controls */
.location-view-switch .btn { white-space: nowrap; }
.location-view-switch .btn.active { background: var(--green); color: #fff; border-color: var(--green); }
#locationMap { height: 540px; width: 100%; background: #e8eddf; z-index: 1; }
.map-caption { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px; padding: 18px 20px; }
.map-feedback { padding: 15px 20px; margin: 0; background: #fbf5e7; }
.location-map-popup { min-width: 210px; font-family: 'DM Sans', sans-serif; font-size: 14px; line-height: 1.5; }
.location-map-popup h2 { font-size: 18px; }
.location-map-popup p { margin: 8px 0; }
.leaflet-tooltip { font-family: 'DM Sans', sans-serif; font-size: 14px; }
@media (max-width: 650px) { #locationMap { height: 440px; } .location-view-switch { width: 100%; } .location-view-switch .btn { flex: 1; } }

#overviewLocationMap { height: 430px; width: 100%; background: #e8eddf; z-index: 1; }
@media (max-width: 650px) { #overviewLocationMap { height: 360px; } }

/* Continuous column dividers across every table header and body row. */
table { border-collapse: collapse; }
table > :is(thead, tbody, tfoot) > tr > :is(th, td):not(:last-child) {
    border-right: 1px solid #d5dccb;
}

/* Franchise profile identity and financial sections. */
.franchise-identity { display: flex; flex-wrap: wrap; align-items: center; gap: 20px; }
.profile-tabs { gap: 4px; border-bottom: 1px solid var(--line); }
.profile-tabs .nav-link { margin: 0; border-radius: 7px 7px 0 0; padding: 14px 17px; color: #68775c; }
.profile-tabs .nav-link.active { border-color: var(--line) var(--line) white; background: white; color: var(--green); }
.profile-details dt { color: #7b846f; font-size: 13px; font-weight: 500; margin-top: 18px; }
.profile-details dd { font-size: 15px; margin: 4px 0 0; }
.franchise-identity + .row .metric strong { font-size: clamp(22px, 2.1vw, 34px); overflow-wrap: anywhere; }
@media (max-width: 650px) { .profile-tabs .nav-link { padding: 12px 10px; font-size: 13px; } }

/* Promotions use the same authored records in card grid and table list views. */
.promotion-view-switch .btn { white-space: nowrap; }
.promotion-view-switch .btn.active { color: white; background: var(--green); border-color: var(--green); }
.promotion-grid-view { padding: 20px; overflow: visible; }
.promotion-grid-view .promotion-table,
.promotion-grid-view .promotion-table tbody { display: block; width: 100%; }
.promotion-grid-view .promotion-table thead { display: none; }
.promotion-grid-view .promotion-table tbody { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.promotion-grid-view .promotion-table tbody tr { display: flex; flex-direction: column; min-width: 0; border: 1px solid var(--line); border-radius: 12px; overflow: hidden; background: #fff; box-shadow: 0 5px 18px #254a3506; }
.promotion-grid-view .promotion-table tbody td { display: block; white-space: normal; overflow-wrap: anywhere; padding: 12px 20px; border: 0!important; background: transparent; box-shadow: none; }
.promotion-grid-view .promotion-table tbody td::before { content: attr(data-label); display: block; font-size: 12px; color: #78856c; margin-bottom: 5px; font-weight: 500; }
.promotion-grid-view .promotion-table td[data-field="name"] { background: #edf2e3; padding: 22px 20px; font-family: 'Outfit', sans-serif; font-size: 23px; line-height: 1.3; }
.promotion-grid-view .promotion-table td[data-field="name"]::before { letter-spacing: 1px; font-family: 'DM Sans', sans-serif; text-transform: uppercase; }
.promotion-grid-view .promotion-table td[data-field="offer"] { font-size: 23px; font-weight: 650; color: var(--green); }
.promotion-grid-view .promotion-table td.actions { width: auto; margin-top: auto; padding: 14px 20px!important; border-top: 1px solid var(--line)!important; background: #fafbf7; }
.promotion-grid-view .promotion-table td.actions::before { display: none; }
@media (max-width: 1250px) { .promotion-grid-view .promotion-table tbody { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 650px) {
    .promotion-grid-view { padding: 14px; }
    .promotion-grid-view .promotion-table tbody { grid-template-columns: 1fr; gap: 16px; }
    .promotion-view-switch { width: 100%; }
    .promotion-view-switch .btn { flex: 1; }
}

/* Serial columns are kept narrow in every table. */
.table .serial-column { width: 1%; white-space: nowrap; text-align: center; color: #78846c; }
.promotion-grid-view .promotion-table .serial-column { width: auto; text-align: left; padding: 10px 20px; font-size: 12px; color: #81916a; }
.promotion-grid-view .promotion-table .serial-column::before { content: 'S.No. '; display: inline; }

/* Promotion assignments support all stores or a searchable selection of stores. */
.promotion-location-options { max-height: 280px; overflow-y: auto; border: 1px solid var(--line); border-radius: 8px; padding: 5px 14px; }
.promotion-location-option { padding-top: 12px; padding-bottom: 12px; margin-bottom: 0; border-bottom: 1px solid var(--line); }
.promotion-location-option:last-child { border-bottom: 0; }
.promotion-location-option .form-check-input { margin-top: 5px; }
.promotion-location-option .form-check-label { font-size: 14px; font-weight: 500; }
.promotion-location-option small { font-size: 12px; margin-top: 3px; }
.promotion-all { padding-top: 10px; padding-bottom: 10px; font-weight: 600; }
.all-stores-selected { opacity: .55; background: #f6f7f2; }
.promotion-selection-summary { color: var(--green); }
.promotion-table td[data-field="location"] { white-space: normal; min-width: 180px; max-width: 340px; }
