:root{--ink:#17202a;--muted:#687383;--line:#dfe4ea;--bg:#f5f7f9;--surface:#fff;--primary:#9f1d20;--primary-dark:#7e1115;--soft:#f9ecec;--success:#166534;--warning:#92400e;--danger:#b91c1c;--radius:14px;--shadow:0 10px 30px rgba(23,32,42,.07)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;line-height:1.5}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit}.topbar{height:68px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 max(20px,calc((100% - 1180px)/2));position:sticky;top:0;z-index:30}.brand{display:flex;align-items:center;gap:10px;color:var(--ink);font-weight:800}.brand:hover{text-decoration:none}.brand-mark,.login-logo{display:grid;place-items:center;background:var(--primary);color:#fff;border-radius:10px;font-weight:900}.brand-mark{width:36px;height:36px}.nav{margin-left:auto;display:flex;align-items:center;gap:24px}.nav a,.link-button{color:#394554;font-weight:650}.nav-toggle{display:none;margin-left:auto;border:0;background:transparent;font-size:24px}.inline-form{display:inline}.link-button{border:0;background:transparent;padding:0;cursor:pointer}.container{max-width:1180px;margin:0 auto;padding:32px 20px 70px}.page-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:24px}.page-heading h1{margin:0;font-size:clamp(26px,4vw,38px);letter-spacing:-.03em}.page-heading p{margin:5px 0}.eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:12px;font-weight:800;color:var(--primary)}.muted,small{color:var(--muted)}.button{border:1px solid transparent;border-radius:10px;padding:10px 16px;display:inline-flex;justify-content:center;align-items:center;gap:8px;font-weight:750;cursor:pointer}.button:hover{text-decoration:none}.button.primary{background:var(--primary);color:#fff}.button.primary:hover{background:var(--primary-dark)}.button.secondary{background:#fff;color:var(--ink);border-color:var(--line)}.button.ghost{color:var(--muted);background:transparent}.button.wide{width:100%}.panel,.stat-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.panel{padding:24px;margin-bottom:22px}.panel-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.panel h2{margin:0 0 14px}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}.stat-card{padding:20px}.stat-card span{display:block;color:var(--muted);font-weight:650}.stat-card strong{font-size:34px;letter-spacing:-.03em}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:13px 12px;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}tr:last-child td{border-bottom:0}.actions{display:flex;gap:12px;flex-wrap:wrap}.empty{text-align:center;color:var(--muted);padding:40px}.badge{display:inline-flex;padding:4px 9px;border-radius:999px;font-size:12px;font-weight:800;background:#eef2f6;color:#4b5563}.badge.completed{background:#dcfce7;color:#166534}.badge.cancelled{background:#fee2e2;color:#991b1b}.badge.draft_step_1,.badge.draft_step_2{background:#fef3c7;color:#92400e}.alert{padding:13px 16px;border-radius:10px;margin-bottom:18px;border:1px solid}.alert.success{background:#ecfdf3;color:var(--success);border-color:#bbf7d0}.alert.warning{background:#fffbeb;color:var(--warning);border-color:#fde68a}.alert.danger{background:#fef2f2;color:var(--danger);border-color:#fecaca}.filter-bar{display:grid;grid-template-columns:1fr 220px auto;gap:10px;margin-bottom:18px}.stack-form{display:grid;gap:17px}.narrow{max-width:650px}.form-grid{display:grid;gap:17px}.form-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.span-2{grid-column:span 2}label{display:grid;gap:7px;font-weight:700;font-size:14px}input,select,textarea{width:100%;border:1px solid #cbd2d9;border-radius:9px;background:#fff;padding:11px 12px;color:var(--ink);outline:none}input:focus,select:focus,textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(159,29,32,.12)}input:disabled{background:#f0f2f4}.error-text{color:var(--danger);font-weight:650}.form-section{padding:26px}.section-title{display:flex;gap:14px;align-items:flex-start;margin-bottom:22px}.section-title>span{flex:0 0 34px;height:34px;display:grid;place-items:center;background:var(--soft);color:var(--primary);border-radius:50%;font-weight:900}.section-title h2,.section-title p{margin:0}.location-box{display:flex;gap:14px;align-items:center;padding:14px;background:#f7f8fa;border-radius:10px}.product-toolbar{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:20px}.product-toolbar input{max-width:520px}.product-group{margin-top:24px}.product-group h3{font-size:16px;border-bottom:1px solid var(--line);padding-bottom:8px}.product-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.product-card{display:flex;grid-template-columns:auto 1fr;align-items:flex-start;gap:10px;border:1px solid var(--line);padding:12px;border-radius:10px;cursor:pointer;font-weight:400}.product-card:has(input:checked){border-color:var(--primary);background:var(--soft)}.product-card input{width:18px;height:18px;margin-top:3px}.product-card span{display:grid;gap:3px}.product-card strong{font-size:14px}.sticky-actions{position:sticky;bottom:14px;background:rgba(255,255,255,.94);border:1px solid var(--line);box-shadow:var(--shadow);padding:12px;border-radius:13px;display:flex;justify-content:flex-end;gap:10px;backdrop-filter:blur(10px)}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}dl{display:grid;grid-template-columns:140px 1fr;gap:10px;margin:0}dt{color:var(--muted);font-weight:700}dd{margin:0}.compact-list{padding-left:22px;max-height:520px;overflow:auto}.compact-list li{padding:7px 0;border-bottom:1px solid var(--line)}.compact-list small{display:block}.placeholder{text-align:center;padding:45px}.placeholder-icon{width:58px;height:58px;border-radius:50%;display:grid;place-items:center;background:#dcfce7;color:#166534;font-size:30px;margin:0 auto 16px}.selected-products{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:20px}.selected-products span{padding:6px 10px;border-radius:999px;background:#eef2f6;font-size:13px}.guest-body{min-height:100vh;display:grid;place-items:center;background:linear-gradient(145deg,#f8f4f2,#eef1f5)}.guest-shell{width:min(430px,calc(100% - 32px))}.login-card{background:#fff;border:1px solid var(--line);border-radius:20px;padding:34px;box-shadow:var(--shadow)}.login-card h1{margin:6px 0}.login-logo{width:52px;height:52px;font-size:20px}.checkbox-row{display:flex;grid-template-columns:auto 1fr;align-items:center}.checkbox-row input{width:18px}.form-actions{display:flex;justify-content:flex-end;gap:10px}.error-page{text-align:center;background:#fff;padding:42px;border-radius:18px;box-shadow:var(--shadow)}.error-page>strong{font-size:70px;color:var(--primary)}.error-page pre{text-align:left;white-space:pre-wrap;background:#111827;color:#fff;padding:12px;border-radius:8px;overflow:auto}@media(max-width:800px){.stats-grid{grid-template-columns:repeat(2,1fr)}.form-grid.two,.product-grid,.detail-grid{grid-template-columns:1fr}.span-2{grid-column:auto}.filter-bar{grid-template-columns:1fr}.nav-toggle{display:block}.nav{display:none;position:absolute;top:68px;left:0;right:0;background:#fff;border-bottom:1px solid var(--line);padding:18px 20px;flex-direction:column;align-items:flex-start}.nav.open{display:flex}.page-heading{flex-direction:column}.location-box{align-items:flex-start;flex-direction:column}.product-toolbar{align-items:stretch;flex-direction:column}.sticky-actions{position:static}.container{padding-top:22px}}@media(max-width:480px){.stats-grid{grid-template-columns:1fr}.panel,.form-section{padding:18px}.login-card{padding:24px}}

.status-text{font-size:22px!important}.status-text.ok{color:var(--success)}.status-text.off{color:var(--muted)}
.badge.sync-synced{background:#dcfce7;color:#166534}.badge.sync-pending{background:#fef3c7;color:#92400e}.badge.sync-failed{background:#fee2e2;color:#991b1b}.badge.sync-disabled{background:#e5e7eb;color:#4b5563}
.config-list{grid-template-columns:190px 1fr}.config-list code{overflow-wrap:anywhere}.top-gap{margin-top:18px}.code-block{background:#111827;color:#f9fafb;padding:18px;border-radius:10px;overflow:auto;white-space:pre-wrap}.wrap-cell{max-width:360px;white-space:normal;overflow-wrap:anywhere}

/* Tahap 2 */
.step-two-intro{display:flex;align-items:center;justify-content:space-between;gap:24px}.step-two-intro h2,.step-two-intro p{margin:0}.step-two-intro p{margin-top:6px}.progress-card{min-width:190px;background:var(--soft);border:1px solid #ead4d4;border-radius:14px;padding:14px 18px;text-align:center}.progress-card strong{display:block;font-size:30px;color:var(--primary);line-height:1}.progress-card span{font-size:13px;color:var(--muted)}
.step-two-form{display:grid;gap:16px}.step-two-toolbar{position:sticky;top:84px;z-index:20;display:flex;align-items:end;justify-content:space-between;gap:20px;padding:16px 20px}.step-two-toolbar label{width:min(520px,100%)}.autosave-overall{display:flex;align-items:center;gap:9px;color:var(--muted);font-size:13px;font-weight:700}.save-dot{width:9px;height:9px;border-radius:50%;background:#16a34a;box-shadow:0 0 0 3px rgba(22,163,74,.12)}.autosave-overall.is-saving .save-dot{background:#d97706;box-shadow:0 0 0 3px rgba(217,119,6,.12)}.autosave-overall.is-error .save-dot{background:#dc2626;box-shadow:0 0 0 3px rgba(220,38,38,.12)}
.survey-product-list{display:grid;gap:14px}.survey-product-card{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 4px 16px rgba(19,30,43,.05);overflow:hidden}.survey-product-card.has-errors{border-color:#f59e0b}.survey-product-card[hidden]{display:none}.survey-product-card summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:38px minmax(0,1fr) auto;gap:12px;align-items:center;padding:17px 20px}.survey-product-card summary::-webkit-details-marker{display:none}.survey-product-card[open] summary{border-bottom:1px solid var(--line);background:#fbfbfc}.product-number{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:#eef2f6;color:#52606d;font-weight:850}.product-summary-text{display:grid;gap:3px;min-width:0}.product-summary-text strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.product-summary-text small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.product-complete-badge{display:inline-flex;border-radius:999px;padding:5px 9px;font-size:12px;font-weight:800}.product-complete-badge.is-complete{background:#dcfce7;color:#166534}.product-complete-badge.is-incomplete{background:#fef3c7;color:#92400e}.survey-product-body{padding:20px;display:grid;gap:20px}.product-save-status{text-align:right;color:var(--muted);font-size:12px}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.product-core-fields{padding-bottom:20px;border-bottom:1px solid var(--line)}
.field-has-error input[aria-invalid="true"]{border-color:var(--danger);box-shadow:0 0 0 3px rgba(185,28,28,.12)}.option-fieldset.field-has-error{border-color:var(--danger);background:#fffafa}.is-error-highlight{outline:3px solid rgba(185,28,28,.28);outline-offset:5px;border-radius:10px;animation:step-two-error-pulse .8s ease-out 2}@keyframes step-two-error-pulse{0%,100%{outline-color:rgba(185,28,28,.28)}50%{outline-color:rgba(185,28,28,.75)}}@media(prefers-reduced-motion:reduce){.is-error-highlight{animation:none}}
.option-fieldset{border:1px solid var(--line);border-radius:12px;padding:16px;margin:0}.option-fieldset legend{padding:0 8px;font-size:14px;font-weight:800;color:var(--ink)}.field-help{margin:-2px 0 12px;color:var(--muted);font-size:13px}.option-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.option-choice{border:1px solid var(--line);border-radius:10px;padding:10px;background:#fff}.option-choice:has(input[type=checkbox]:checked){border-color:var(--primary);background:var(--soft)}.choice-label{display:flex;grid-template-columns:none;flex-direction:row;align-items:flex-start;gap:9px;font-weight:650;cursor:pointer}.choice-label input{width:17px;height:17px;flex:0 0 auto;margin-top:2px}.option-note{margin-top:9px;font-size:13px}.radio-row{display:flex;gap:20px;flex-wrap:wrap}.radio-row .choice-label{padding:10px 18px;border:1px solid var(--line);border-radius:10px}.radio-row .choice-label:has(input:checked){border-color:var(--primary);background:var(--soft)}.step-two-actions{align-items:center}.step-two-actions>span{margin-right:auto;max-width:520px;font-size:12px}
.detail-products-table td{vertical-align:middle}.detail-products-table .product-name-cell{min-width:220px}.detail-products-table .answer-list{display:flex;flex-wrap:wrap;gap:5px}.detail-products-table .answer-list span{background:#eef2f6;border-radius:999px;padding:3px 7px;font-size:11px}.detail-progress{display:flex;align-items:center;gap:12px}.detail-progress strong{font-size:22px;color:var(--primary)}
@media(max-width:900px){.form-grid.three,.option-grid{grid-template-columns:1fr 1fr}.step-two-toolbar{position:static;align-items:stretch;flex-direction:column}.autosave-overall{justify-content:flex-start}.step-two-actions{align-items:stretch;flex-direction:column}.step-two-actions>span{margin-right:0}.step-two-actions .button{width:100%}}
@media(max-width:620px){.step-two-intro{align-items:stretch;flex-direction:column}.progress-card{min-width:0}.form-grid.three,.option-grid{grid-template-columns:1fr}.survey-product-card summary{grid-template-columns:34px minmax(0,1fr)}.product-complete-badge{grid-column:2;justify-self:start}.survey-product-body{padding:16px}.radio-row{display:grid;grid-template-columns:1fr 1fr}.product-save-status{text-align:left}}

/* Tahap 04: pencarian produk dan status SBCR toko */
[hidden]{display:none!important}.product-card[hidden],.product-group[hidden],.product-search-empty[hidden],.survey-not-selling-reasons[hidden]{display:none!important}
.product-search-wrap{display:flex;align-items:center;gap:8px;flex:1;max-width:720px}.product-search-wrap input{max-width:none}.button.compact{padding:8px 10px;font-size:12px;white-space:nowrap}.survey-sbcr-fieldset{margin-bottom:14px}.survey-not-selling-reasons{margin-top:14px}.survey-not-selling-reasons .option-fieldset{background:#fffaf0}
@media(max-width:700px){.product-search-wrap{display:grid;width:100%;max-width:none}.product-search-wrap .button{width:100%}}

/* Tahap 04: dashboard report */
.block{display:block}.dashboard-heading{align-items:center}.report-filter{display:grid;gap:16px}.report-filter-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}.report-filter-grid label{min-width:0}.dashboard-stats{grid-template-columns:repeat(4,minmax(0,1fr))}.dashboard-stats .stat-card{min-height:132px}.dashboard-stats .stat-card strong{font-size:clamp(24px,2.3vw,34px);line-height:1.12;margin:5px 0;display:block}.stat-card.success-accent{border-top:4px solid #15803d}.stat-card.danger-accent{border-top:4px solid #b91c1c}.stat-card.revenue-card{grid-column:span 2;border-top:4px solid var(--primary)}.report-grid{display:grid;gap:22px}.report-grid.two-panels{grid-template-columns:repeat(2,minmax(0,1fr))}.chart-panel canvas{width:100%;display:block;max-width:100%}.map-panel{overflow:hidden}.google-map{width:100%;height:540px;border-radius:12px;background:#e8edf1}.map-placeholder{min-height:320px;border:1px dashed #cbd5e1;border-radius:12px;background:#f8fafc;display:grid;place-content:center;text-align:center;padding:30px}.map-placeholder strong{font-size:20px}.map-placeholder p{max-width:680px;color:var(--muted)}.map-placeholder code{background:#e2e8f0;padding:2px 5px;border-radius:5px}.map-legend{display:flex;gap:20px;flex-wrap:wrap;padding-top:14px;color:var(--muted);font-size:13px}.map-legend span{display:inline-flex;align-items:center;gap:7px}.legend-dot{width:12px;height:12px;border-radius:50%;display:inline-block}.legend-dot.sells{background:#15803d}.legend-dot.not-sells{background:#b91c1c}.legend-dot.unknown{background:#64748b}.map-info-window{display:grid;gap:6px;max-width:300px;color:#17202a}.map-info-window p{margin:0}.map-info-window small{color:#687383}.map-info-window a{font-weight:750;margin-top:4px}.map-load-error{display:grid;place-content:center;text-align:center;color:var(--danger);padding:30px}.master-summary{display:flex;gap:8px;flex-wrap:wrap}
@media(max-width:1100px){.report-filter-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.dashboard-stats{grid-template-columns:repeat(3,minmax(0,1fr))}.stat-card.revenue-card{grid-column:span 2}}
@media(max-width:820px){.report-grid.two-panels{grid-template-columns:1fr}.dashboard-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.google-map{height:460px}.topbar{height:auto;min-height:68px}}
@media(max-width:620px){.report-filter-grid{grid-template-columns:1fr}.dashboard-stats{grid-template-columns:1fr}.stat-card.revenue-card{grid-column:auto}.google-map{height:400px}.chart-panel{padding:16px}.dashboard-heading .actions{width:100%}.dashboard-heading .actions .button{flex:1}}

/* Tahap 05: navigasi admin, master data, audit, dan deployment */
.nav-admin{position:relative}.nav-admin-trigger{border:0;background:transparent;color:#394554;font-weight:650;padding:6px 0;cursor:pointer}.nav-admin-menu{display:none;position:absolute;right:0;top:100%;min-width:210px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:8px;box-shadow:var(--shadow);z-index:50}.nav-admin:hover .nav-admin-menu,.nav-admin:focus-within .nav-admin-menu{display:grid}.nav-admin-menu a{padding:9px 11px;border-radius:8px;white-space:nowrap}.nav-admin-menu a:hover{background:var(--soft);text-decoration:none}.product-filter-grid{grid-template-columns:2fr 1fr 1fr 1fr auto}.audit-filter-grid{grid-template-columns:2fr 1fr 2fr auto}.filter-actions{align-self:end}.nowrap-cell{white-space:nowrap}.metadata-pre{max-width:460px;white-space:pre-wrap;overflow-wrap:anywhere;background:#111827;color:#fff;border-radius:8px;padding:10px;font-size:12px}.admin-shortcuts{display:flex;gap:8px;flex-wrap:wrap}.deploy-check-list{display:grid;gap:10px}.deploy-check-list li{padding:8px 0}
@media(max-width:900px){.product-filter-grid,.audit-filter-grid{grid-template-columns:1fr 1fr}.nav-admin{width:100%}.nav-admin-trigger{width:100%;text-align:left}.nav-admin-menu{position:static;box-shadow:none;border:0;border-left:3px solid var(--line);border-radius:0;margin-top:6px;padding-left:12px}.nav-admin:hover .nav-admin-menu,.nav-admin:focus-within .nav-admin-menu{display:grid}}
@media(max-width:620px){.product-filter-grid,.audit-filter-grid{grid-template-columns:1fr}}

/* Tahap 07: alur review/QC dan profil akun */
.badge.review-pending{background:#dbeafe;color:#1d4ed8}.badge.review-approved{background:#dcfce7;color:#166534}.badge.review-needs-revision{background:#fee2e2;color:#991b1b}.badge.review-not-submitted{background:#e5e7eb;color:#4b5563}
.alert.info{background:#eff6ff;color:#1e40af;border-color:#bfdbfe}.step-one-draft-note{border-left-width:4px;font-weight:650;line-height:1.55}.step-one-draft-note.is-saved{background:#ecfdf3;color:#166534;border-color:#86efac}.survey-form label{font-size:15px}.survey-form input:not([type=checkbox]):not([type=radio]),.survey-form select{min-height:46px}.survey-form .button,.quick-product-dialog .button{min-height:44px}.button.danger{background:#b91c1c;color:#fff}.button.danger:hover{background:#991b1b}.field-error{color:var(--danger);font-weight:700}.form-stack{display:grid;gap:16px}
.review-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:18px}.review-tab{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 16px;color:var(--ink);box-shadow:0 4px 14px rgba(23,32,42,.04)}.review-tab:hover{text-decoration:none;border-color:#b7c0ca}.review-tab.active{border-color:var(--primary);box-shadow:0 0 0 3px rgba(159,29,32,.09)}.review-tab strong{font-size:20px}.review-alert{margin-top:-6px}.review-note{background:#f8fafc;border:1px solid var(--line);border-radius:10px;padding:13px}.review-note p{margin:5px 0 0}.qc-review-panel{border-top:4px solid var(--primary)}.review-action-form{display:grid;gap:12px;padding:16px 0;border-top:1px solid var(--line)}.review-action-form:first-of-type{border-top:0}.review-action-form.danger-zone{background:#fff7f7;border:1px solid #fecaca;border-radius:12px;padding:16px;margin-top:14px}.profile-grid{align-items:start}.survey-filter-bar{grid-template-columns:minmax(250px,1fr) 190px 190px auto}.review-card.pending{border-top:4px solid #2563eb}.review-card.approved{border-top:4px solid #16a34a}.review-card.revision{border-top:4px solid #dc2626}
@media(max-width:900px){.review-tabs{grid-template-columns:1fr 1fr}.survey-filter-bar{grid-template-columns:1fr 1fr}.survey-filter-bar input{grid-column:span 2}}
@media(max-width:620px){.review-tabs,.survey-filter-bar{grid-template-columns:1fr}.survey-filter-bar input{grid-column:auto}.qc-review-panel .button{width:100%}}

/* Tahap 08: pemisahan Saus/Kecap dan operasi survei */
.heading-actions{display:flex;gap:.65rem;align-items:center;flex-wrap:wrap}.product-category-tabs{display:flex;gap:.55rem;flex-wrap:wrap;margin:0 0 1rem}.product-category-tab{border:1px solid #d5dbe1;background:#fff;color:#394554;border-radius:999px;padding:.6rem .9rem;font-weight:700;cursor:pointer}.product-category-tab.is-active{outline:3px solid rgba(143,29,34,.12);border-color:#8f1d22}.category-sauce{background:#fff2df!important;color:#8a4b00!important;border-color:#efc783!important}.category-soy{background:#e8f0ff!important;color:#244c84!important;border-color:#aac2ea!important}.category-selection-summary{display:flex;gap:.6rem;flex-wrap:wrap;margin:.8rem 0}.product-group-heading{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin:.6rem 0}.product-group-sauce{border-left:4px solid #d88722;padding-left:1rem}.product-group-soy_sauce{border-left:4px solid #3b6ca8;padding-left:1rem}.product-card-sauce{background:#fffbf4}.product-card-soy_sauce{background:#f7faff}.danger-text{color:#b42318!important}.inline-form .danger-text{font-weight:700}.map-cluster-note{font-size:.86rem;color:#687383}.trash-warning{border-color:#efb6b1;background:#fff5f4}
.product-category-badge{display:inline-flex;align-items:center;width:max-content;border-radius:999px;padding:3px 8px;font-size:11px;font-weight:800;border:1px solid transparent;vertical-align:middle}.product-category-badge.is-sauce{background:#fff2df;color:#8a4b00;border-color:#efc783}.product-category-badge.is-soy{background:#e8f0ff;color:#244c84;border-color:#aac2ea}.product-summary-text .product-category-badge{margin-top:4px}.survey-filter-bar{grid-template-columns:minmax(240px,1.4fr) repeat(3,minmax(150px,.7fr)) auto auto}.button.danger{background:#b91c1c;color:#fff}.button.danger:hover{background:#991b1b;text-decoration:none}
@media(max-width:1050px){.survey-filter-bar{grid-template-columns:1fr 1fr 1fr}.survey-filter-bar input{grid-column:span 3}}
@media(max-width:700px){.survey-filter-bar{grid-template-columns:1fr}.survey-filter-bar input{grid-column:auto}}

.survey-filter-panel{display:grid;gap:0;padding:0;overflow:hidden}.survey-filter-section{display:grid;grid-template-columns:minmax(210px,.65fr) minmax(0,2fr);gap:22px;padding:18px 20px;align-items:end}.survey-filter-section+.survey-filter-section{border-top:1px solid var(--line)}.survey-filter-section h2{font-size:16px;margin:0 0 3px}.survey-filter-section p{margin:0;font-size:13px}.survey-date-filter{background:#f8fafc}.survey-date-filter-grid{display:grid;grid-template-columns:repeat(2,minmax(170px,1fr));gap:12px}.survey-data-filter-grid{display:grid;grid-template-columns:minmax(240px,1.5fr) repeat(3,minmax(150px,1fr));gap:12px}.survey-filter-actions{display:flex;justify-content:flex-end;gap:10px;padding:14px 20px;border-top:1px solid var(--line);background:#fff}.survey-daily-chart{height:clamp(420px,62vh,620px);margin-bottom:22px;display:flex;flex-direction:column}.survey-daily-chart canvas{min-height:0;flex:1}
@media(max-width:1050px){.survey-filter-section{grid-template-columns:1fr}.survey-data-filter-grid{grid-template-columns:1fr 1fr}.survey-search-filter{grid-column:span 2}}
@media(max-width:700px){.survey-date-filter-grid,.survey-data-filter-grid{grid-template-columns:1fr}.survey-search-filter{grid-column:auto}.survey-filter-actions{justify-content:stretch}.survey-filter-actions .button{flex:1}.survey-daily-chart{height:clamp(380px,58vh,520px)}}
.product-add-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}.quick-product-dialog{width:min(720px,calc(100vw - 28px));border:0;border-radius:16px;padding:0;box-shadow:0 24px 80px rgba(0,0,0,.28)}.quick-product-dialog::backdrop{background:rgba(15,23,42,.58)}.quick-product-form{padding:22px;display:grid;gap:18px}.product-order-controls{display:flex;align-items:center;gap:4px;white-space:nowrap}.drag-handle,.order-step{border:0;background:#eef1f4;border-radius:8px;padding:7px 9px;font-size:15px}.drag-handle{cursor:grab;font-size:18px}.drag-handle:active{cursor:grabbing}.order-step{cursor:pointer;color:#475569}[data-product-sort-row].is-dragging{opacity:.4;background:#f9ecec}.dashboard-primary-charts select{min-width:180px}
.category-stick,.product-category-badge.is-stick{background:#f3e8ff;color:#6b21a8}.derived-unit-card{display:grid;gap:5px;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:#f8fafc;align-content:center}.derived-unit-card span,.derived-unit-card small{color:var(--muted)}.derived-unit-card strong{font-size:18px}

.sbcr-map-cluster {
  width: 42px;
  height: 42px;
  border: 3px solid rgba(255, 255, 255, .94);
  border-radius: 999px;
  background: #9d1f26;
  color: #fff;
  font: 700 13px/1 system-ui, sans-serif;
  box-shadow: 0 3px 12px rgba(0, 0, 0, .28);
  cursor: pointer;
}
.sbcr-map-cluster:hover { transform: scale(1.06); }
.google-map-java-control {
  margin: 10px;
  padding: 9px 13px;
  border: 0;
  border-radius: 4px;
  background: #fff;
  color: #263238;
  box-shadow: 0 1px 4px rgba(0, 0, 0, .3);
  font: 700 13px/1.2 system-ui, sans-serif;
  cursor: pointer;
}
.google-map-java-control:hover,
.google-map-java-control:focus-visible {
  background: #f1f5f9;
  outline: 2px solid #9d1f26;
  outline-offset: 1px;
}


/* Hotfix Tahap 08: chart responsif dan stabil pada HP/tablet */
.chart-panel{min-width:0;overflow:hidden;contain:layout paint}
.chart-panel canvas[data-dashboard-chart]{display:block;width:100%!important;max-width:100%;height:auto;box-sizing:border-box}
.report-grid,.report-grid>*{min-width:0}
@media(max-width:700px){
  .chart-panel canvas[data-dashboard-chart]{max-height:360px}
  .survey-daily-chart canvas[data-dashboard-chart]{max-height:none}
  .chart-panel{overflow:hidden}
}

/* Tahap 09: analitik distribusi dan visibilitas produk SBCR */
.sbcr-product-visibility-note{margin:.8rem 0}
.product-card[hidden]{display:none!important}
.wide-cell{min-width:320px;max-width:680px;white-space:normal;line-height:1.5}
.analytics-tables .table-wrap{max-height:520px;overflow:auto}
@media(max-width:820px){
  .wide-cell{min-width:260px}
  .analytics-tables .table-wrap{max-height:420px}
}

/* Availability per produk dan form batch master produk */
.availability-product-panel{grid-column:1/-1}
.availability-product-chart-scroll{max-height:70vh;min-height:360px;overflow-y:auto;overflow-x:hidden;padding-right:6px}
.product-batch-list{display:grid;gap:18px}
.product-batch-row{border:1px solid var(--border);border-radius:14px;background:#fbfcfd;padding:18px}
.product-batch-heading,.product-batch-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px}
.product-batch-heading{margin-bottom:16px}
.product-batch-heading>div{display:grid;gap:2px}
.product-batch-number{font-weight:800;font-size:17px}
.product-batch-toolbar{justify-content:flex-start;flex-wrap:wrap;padding-top:2px}
@media(max-width:620px){
  .product-batch-row{padding:14px}
  .availability-product-chart-scroll{max-height:65vh}
}
@media(max-width:700px){.availability-product-chart-scroll canvas[data-dashboard-chart]{max-height:none}}
.suggestion-actions{display:grid;gap:8px;min-width:280px}.suggestion-merge-form{display:grid;grid-template-columns:minmax(160px,1fr) auto;gap:6px}.suggestion-merge-form select{padding:8px 10px}.option-suggestion-panel{border-top:4px solid var(--primary)}
@media(max-width:700px){.suggestion-actions{min-width:240px}.suggestion-merge-form{grid-template-columns:1fr}.location-box strong{display:block}}

/* Dashboard SBCR: hierarki analisis dan density tablet/mobile */
.panel-heading h2{margin:0}.panel-heading p{margin:4px 0 0}.dashboard-filter-heading{margin-bottom:0}.dashboard-section-heading{display:flex;align-items:end;justify-content:space-between;gap:20px;margin:28px 0 14px}.dashboard-section-heading h2,.dashboard-section-heading p{margin:0}.dashboard-section-heading .muted{max-width:560px;text-align:right}.sbcr-kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.sbcr-category-panel{border-left:4px solid var(--primary)}.sbcr-category-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:12px;overflow:hidden}.sbcr-category-grid>div{display:grid;gap:3px;background:#fff;padding:16px 18px}.sbcr-category-grid span,.sbcr-category-grid small{color:var(--muted)}.sbcr-category-grid strong{font-size:24px;line-height:1.15}.dashboard-chart-grid{gap:18px}.dashboard-chart-grid .panel{margin-bottom:0}.dashboard-operational-grid .panel{margin-bottom:0}.dashboard-recent-panel{margin-top:18px}
@media(min-width:701px) and (max-width:1024px){
  .container{padding:22px 16px 48px}.page-heading{gap:16px;margin-bottom:18px}.panel{padding:20px;margin-bottom:16px}.stats-grid{gap:12px;margin-bottom:16px}.stat-card{padding:16px}.dashboard-stats .stat-card{min-height:112px}.report-grid{gap:16px}.dashboard-section-heading{margin:22px 0 12px}.google-map{height:390px}.map-placeholder{min-height:240px;padding:22px}.report-filter{gap:12px}.report-filter-grid{gap:10px}.report-filter-grid input,.report-filter-grid select{padding:9px 10px}.chart-panel .panel-heading{margin-bottom:10px}.analytics-tables .table-wrap{max-height:380px}
}
@media(max-width:820px){.sbcr-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.stat-card.revenue-card{grid-column:span 2}.sbcr-category-grid{grid-template-columns:1fr}.dashboard-section-heading{align-items:flex-start;flex-direction:column;gap:5px}.dashboard-section-heading .muted{text-align:left}.dashboard-operational-grid .panel+.panel{margin-top:0}}
@media(max-width:700px){
  .container{padding:16px 12px 36px}.page-heading{gap:12px;margin-bottom:16px}.page-heading h1{font-size:28px}.panel,.form-section{padding:15px;margin-bottom:14px;border-radius:12px}.panel-heading{align-items:flex-start;gap:10px;flex-wrap:wrap;margin-bottom:11px}.panel-heading h2{font-size:18px}.panel-heading select{width:100%;min-width:0}.stats-grid{gap:10px;margin-bottom:14px}.sbcr-kpi-grid{grid-template-columns:1fr}.stat-card.revenue-card{grid-column:auto}.dashboard-stats .stat-card{min-height:0;padding:15px}.dashboard-stats .stat-card strong{font-size:27px}.dashboard-section-heading{margin:20px 2px 10px}.dashboard-section-heading h2{font-size:21px}.report-grid{gap:14px}.dashboard-chart-grid .panel{margin-bottom:0}.sbcr-category-grid>div{padding:13px 14px}.sbcr-category-grid strong{font-size:21px}.form-actions{width:100%}.form-actions .button{flex:1}.google-map{height:340px}.map-placeholder{min-height:210px;padding:18px}.map-legend{gap:10px 14px}.table-wrap{font-size:13px}th,td{padding:10px 9px}.empty{padding:28px 12px}
}

.offline-sync-banner{position:sticky;top:0;z-index:80;display:flex;align-items:center;justify-content:center;gap:16px;padding:10px 20px;background:#fff7ed;color:#9a3412;border-bottom:1px solid #fed7aa;font-size:14px;font-weight:700;box-shadow:0 4px 12px rgba(15,23,42,.08)}.offline-sync-banner[hidden]{display:none}.offline-sync-banner.is-offline,.offline-sync-banner.is-error{background:#fff1f2;color:#9f1239;border-color:#fecdd3}.offline-sync-banner.is-syncing{background:#eff6ff;color:#1d4ed8;border-color:#bfdbfe}.offline-sync-banner.is-success{background:#ecfdf5;color:#166534;border-color:#a7f3d0}.offline-sync-actions{display:flex;gap:8px;align-items:center}.offline-sync-banner .button{min-height:34px;padding:7px 10px}
@media(max-width:620px){.offline-sync-banner{align-items:stretch;flex-direction:column;gap:8px}.offline-sync-actions{display:grid;grid-template-columns:1fr 1fr}.offline-sync-actions .button{text-align:center}}
