/* B2B портал — визуальный язык Odoo 14 Enterprise (бэкенд SIBEARIAN ERP) */
@font-face { font-family: "Roboto"; font-weight: 400; font-display: swap; src: url("fonts/Roboto-Regular.ttf") format("truetype"); }
@font-face { font-family: "Roboto"; font-weight: 500; font-display: swap; src: url("fonts/Roboto-Medium.ttf") format("truetype"); }
@font-face { font-family: "Roboto"; font-weight: 700; font-display: swap; src: url("fonts/Roboto-Bold.ttf") format("truetype"); }

:root {
  --o-brand: #875A7B;        /* навбар Odoo */
  --o-brand-dark: #714B67;
  --o-brand-light: #f3eef2;
  --o-primary: #00A09D;      /* btn-primary Odoo Enterprise */
  --o-primary-dark: #008784;
  --o-primary-light: #e0f4f3;
  --o-bg: #F9F9F9;
  --o-text: #4c4c4c;
  --o-heading: #212529;
  --o-muted: #8f8f8f;
  --o-border: #dee2e6;
  --o-border-light: #eceef0;
  --o-success: #28a745;
  --o-danger: #dc3545;
  --o-warning: #f0ad4e;
  --o-info: #17a2b8;
  --o-radius: 3px;
  --navbar-h: 46px;
}

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; font: 14px/1.5 Roboto, "Odoo Unicode Support Noto", -apple-system, "Segoe UI", Arial, sans-serif;
       color: var(--o-text); background: var(--o-bg); min-height: 100vh; display: flex; flex-direction: column; }
a { color: var(--o-primary-dark); text-decoration: none; }
a:hover { color: var(--o-brand); }
h1, h2, h3 { color: var(--o-heading); font-weight: 500; margin: 0; }
.text-muted { color: var(--o-muted); } .small { font-size: 12px; } .nowrap { white-space: nowrap; }
.o_icon { width: 1em; height: 1em; vertical-align: -0.14em; flex: none; }
[hidden] { display: none !important; }

/* ---------- navbar ---------- */
.o_navbar { background: var(--o-brand); color: #fff; height: var(--navbar-h); display: flex; align-items: center;
            padding: 0 12px; position: sticky; top: 0; z-index: 50; border-bottom: 1px solid var(--o-brand-dark); gap: 6px; }
.o_logo { display: flex; align-items: center; gap: 10px; color: #fff; margin-right: 14px; }
.o_logo img { height: 34px; margin: 0 -4px 0 2px; filter: brightness(0) invert(1); display: block; }
.o_logo .o_app { font-size: 12px; font-weight: 500; letter-spacing: .5px; padding: 1px 6px; border: 1px solid rgba(255,255,255,.6); border-radius: 3px; }
.o_logo:hover { color: #fff; }
.o_menu { display: flex; height: 100%; }
.o_menu a { color: #fff; display: flex; align-items: center; padding: 0 12px; height: 100%; font-size: 14px; }
.o_menu a:hover, .o_menu a.active { background: rgba(0,0,0,.08); color: #fff; }
.o_systray { margin-left: auto; display: flex; align-items: center; height: 100%; }
.o_systray > * { display: flex; align-items: center; height: 100%; padding: 0 10px; color: #fff; }
.o_systray > a:hover { background: rgba(0,0,0,.08); color: #fff; }
.o_cart_icon { position: relative; font-size: 18px; }
.o_badge_count { position: absolute; top: -6px; right: -10px; background: var(--o-primary); color: #fff; font-size: 10px;
                 font-weight: 700; border-radius: 9px; padding: 0 5px; line-height: 16px; min-width: 16px; text-align: center; }
.o_user { gap: 8px; }
.o_avatar { width: 26px; height: 26px; border-radius: 50%; background: #fff; color: var(--o-brand); display: inline-flex;
            align-items: center; justify-content: center; font-size: 12px; font-weight: 700; flex: none; }
.o_user_name { max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; }
.o_logout { background: none; border: 0; color: #fff; cursor: pointer; padding: 6px; font-size: 16px; opacity: .85; display: flex; }
.o_logout:hover { opacity: 1; }

/* ---------- control panel ---------- */
.o_control_panel { background: #fff; border-bottom: 1px solid var(--o-border); padding: 10px 16px 8px; }
.o_cp_top, .o_cp_bottom { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.o_cp_bottom { margin-top: 8px; min-height: 30px; }
.o_cp_top > .breadcrumb { flex: 1 1 280px; }
.breadcrumb { display: flex; flex-wrap: wrap; align-items: center; list-style: none; margin: 0; padding: 0; font-size: 18px; color: var(--o-heading); min-width: 0; }
.breadcrumb li { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
.breadcrumb li + li::before { content: "/"; color: var(--o-muted); padding: 0 8px; }
.breadcrumb a { color: var(--o-primary-dark); }
.o_searchview { flex: 1 1 380px; display: flex; align-items: center; gap: 4px; border-bottom: 1px solid var(--o-border);
                padding: 3px 2px; min-height: 32px; flex-wrap: wrap; max-width: 560px; }
.o_searchview:focus-within { border-bottom-color: var(--o-primary); }
.o_searchview .o_icon { color: var(--o-muted); font-size: 15px; }
.o_searchview input { border: 0; outline: 0; flex: 1; min-width: 140px; font: inherit; padding: 2px 4px; background: transparent; }
.o_facet { display: inline-flex; align-items: center; border: 1px solid var(--o-border); border-radius: 3px; font-size: 12px; background: #f6f6f6; overflow: hidden; }
.o_facet .o_facet_label { background: var(--o-brand); color: #fff; padding: 1px 5px; }
.o_facet .o_facet_value { padding: 1px 6px; }
.o_facet a { color: var(--o-muted); padding: 0 6px 0 2px; font-size: 14px; line-height: 1; }
.o_facet a:hover { color: var(--o-danger); }
.o_cp_buttons { display: flex; gap: 6px; flex-wrap: wrap; }
.o_cp_filters { display: flex; gap: 4px; flex-wrap: wrap; }
.o_pager { margin-left: auto; color: var(--o-muted); font-size: 13px; white-space: nowrap; }
.o_filter_btn { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border-radius: var(--o-radius);
                color: var(--o-text); font-size: 13px; border: 1px solid transparent; }
.o_filter_btn:hover { background: #f0f0f0; color: var(--o-text); }
.o_filter_btn.active { color: var(--o-brand); background: var(--o-brand-light); border-color: #e2d6df; }
.o_filter_btn .o_check { width: 14px; height: 14px; border: 1px solid #bbb; border-radius: 2px; display: inline-flex; align-items: center; justify-content: center; background: #fff; }
.o_filter_btn.active .o_check { background: var(--o-brand); border-color: var(--o-brand); color: #fff; }

/* ---------- buttons, forms ---------- */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; font: inherit; font-size: 14px; font-weight: 400;
       line-height: 1.4; padding: 6px 12px; border-radius: var(--o-radius); border: 1px solid transparent; cursor: pointer;
       white-space: nowrap; text-decoration: none; transition: background .15s, border-color .15s; user-select: none; }
.btn-primary { background: var(--o-primary); border-color: var(--o-primary); color: #fff; }
.btn-primary:hover { background: var(--o-primary-dark); border-color: var(--o-primary-dark); color: #fff; }
.btn-brand { background: var(--o-brand); border-color: var(--o-brand); color: #fff; }
.btn-brand:hover { background: var(--o-brand-dark); border-color: var(--o-brand-dark); color: #fff; }
.btn-secondary { background: #fff; border-color: #ced4da; color: var(--o-text); }
.btn-secondary:hover { background: #f2f2f2; color: var(--o-heading); }
.btn-link { background: none; border: 0; color: var(--o-primary-dark); padding: 6px 8px; }
.btn-link:hover { color: var(--o-brand); }
.btn-lg { padding: 9px 18px; font-size: 15px; }
.btn-block { width: 100%; }
.btn-icon { background: none; border: 0; color: var(--o-muted); cursor: pointer; padding: 6px; font-size: 16px; display: inline-flex; border-radius: 3px; }
.btn-icon:hover { color: var(--o-danger); background: #fbeaec; }
.btn.is-added { background: var(--o-success); border-color: var(--o-success); }
input:not([type]), input[type=text], input[type=search], input[type=email], input[type=tel], input[type=password], input[type=number], select, textarea, .o_input {
  font: inherit; color: var(--o-heading); background: #fff; border: 1px solid #ced4da; border-radius: var(--o-radius);
  padding: 6px 10px; width: 100%; outline: 0; transition: border-color .15s, box-shadow .15s; }
input:focus, select:focus, textarea:focus, input:focus-visible { border-color: var(--o-primary); box-shadow: 0 0 0 2px rgba(0,160,157,.18); }
.o_field { display: flex; flex-direction: column; gap: 4px; margin-bottom: 14px; }
.o_field > label, .o_label { font-weight: 500; color: var(--o-heading); font-size: 13px; }
.o_field .req { color: var(--o-danger); }
.o_field.has-error input { border-color: var(--o-danger); }
.o_field_error { color: var(--o-danger); font-size: 12px; }
.o_field_hint { color: var(--o-muted); font-size: 12px; } .o_field_hint.ok { color: var(--o-success); }
.o_checkbox { display: flex; gap: 8px; align-items: flex-start; font-size: 13px; }
.o_checkbox input { margin-top: 3px; accent-color: var(--o-primary); }

/* qty stepper */
/* количество коробами: «В корзину · короб 12 шт» → − [N] кор. · M шт + */
.o_boxctl { display: inline-flex; align-items: stretch; height: 34px; }
.o_boxctl.is-busy { opacity: .6; pointer-events: none; }
.o_boxadd { height: 34px; display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.o_boxadd small { font-size: 11px; opacity: .85; padding-left: 6px; margin-left: 2px; border-left: 1px solid rgba(255,255,255,.45); }
.o_boxbtn { width: 34px; border: 1px solid var(--o-primary); background: var(--o-primary); color: #fff; cursor: pointer;
            font-size: 18px; line-height: 1; padding: 0; }
.o_boxbtn:first-of-type { border-radius: var(--o-radius) 0 0 var(--o-radius); }
.o_boxbtn:last-of-type { border-radius: 0 var(--o-radius) var(--o-radius) 0; }
.o_boxbtn:hover { background: var(--o-primary-dark); border-color: var(--o-primary-dark); }
.o_boxval { display: inline-flex; align-items: center; gap: 4px; padding: 0 8px; border-top: 1px solid var(--o-primary);
            border-bottom: 1px solid var(--o-primary); background: var(--o-primary-light); color: var(--o-heading);
            font-size: 12px; white-space: nowrap; }
.o_boxinput { width: 42px; border: 1px solid transparent; background: transparent; text-align: center; font: inherit;
              font-size: 15px; font-weight: 700; color: var(--o-heading); padding: 2px 0; -moz-appearance: textfield; }
.o_boxinput:focus { outline: 0; border-color: var(--o-primary); background: #fff; }
.o_boxinput::-webkit-outer-spin-button, .o_boxinput::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.o_boxctl_lg { height: 42px; }
.o_boxctl_lg .o_boxadd { height: 42px; font-size: 16px; padding: 0 18px; }
.o_boxctl_lg .o_boxbtn { width: 42px; font-size: 22px; }
.o_boxctl_lg .o_boxval { font-size: 14px; padding: 0 12px; }
.o_boxctl_lg .o_boxinput { font-size: 18px; width: 52px; }
.o_user_name small { display: block; font-size: 11px; opacity: .8; line-height: 1.1; }
.o_user_name { line-height: 1.2; }

/* ---------- badges ---------- */
.badge { display: inline-flex; align-items: center; gap: 4px; font-size: 11.5px; font-weight: 500; line-height: 1; padding: 4px 8px;
         border-radius: 10rem; white-space: nowrap; }
.badge-success { background: var(--o-success); color: #fff; }
.badge-danger { background: var(--o-danger); color: #fff; }
.badge-info { background: var(--o-primary); color: #fff; }
.badge-warning { background: var(--o-warning); color: #fff; }
.badge-secondary { background: #6c757d; color: #fff; }
.badge-light { background: #f1f1f1; color: var(--o-text); border: 1px solid #e5e5e5; }
.badge-outline { background: #fff; border: 1px solid var(--o-border); color: var(--o-text); }
.o_price { color: var(--o-brand); font-weight: 700; font-size: 17px; white-space: nowrap; }
.o_rrp { color: var(--o-muted); font-size: 12px; white-space: nowrap; }

/* ---------- layout ---------- */
.o_content { flex: 1; width: 100%; padding: 16px; }
.o_content.has-cartbar { padding-bottom: 84px; }
.o_flashes { max-width: 1400px; margin: 0 auto; }
.alert { position: relative; padding: 10px 40px 10px 14px; border: 1px solid transparent; border-radius: var(--o-radius); margin-bottom: 12px; font-size: 14px; }
.alert-success { color: #155724; background: #d4edda; border-color: #c3e6cb; }
.alert-info { color: #0c5460; background: #d1ecf1; border-color: #bee5eb; }
.alert-warning { color: #856404; background: #fff3cd; border-color: #ffeeba; }
.alert-danger { color: #721c24; background: #f8d7da; border-color: #f5c6cb; }
.alert .close { position: absolute; right: 8px; top: 6px; border: 0; background: none; font-size: 20px; line-height: 1; cursor: pointer; color: inherit; opacity: .5; }
.alert .close:hover { opacity: 1; }

/* ---------- catalog: search panel + kanban ---------- */
.o_catalog { display: grid; grid-template-columns: 220px minmax(0, 1fr); gap: 16px; max-width: 1400px; margin: 0 auto; align-items: start; }
.o_search_panel { background: #fff; border: 1px solid var(--o-border-light); border-radius: var(--o-radius); padding: 10px 0; position: sticky; top: calc(var(--navbar-h) + 12px); }
.o_search_panel h3 { font-size: 12px; text-transform: uppercase; letter-spacing: .5px; color: var(--o-muted); padding: 0 14px 6px; font-weight: 700; }
.o_search_panel a { display: flex; justify-content: space-between; gap: 8px; padding: 5px 14px; color: var(--o-text); font-size: 13.5px; border-left: 3px solid transparent; }
.o_search_panel a:hover { background: #f5f5f5; }
.o_search_panel a.active { background: var(--o-brand-light); border-left-color: var(--o-brand); color: var(--o-brand-dark); font-weight: 500; }
.o_search_panel .count { color: var(--o-muted); font-size: 12px; }
.o_kanban { display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: 10px; align-content: start; }
.o_kanban_record { background: #fff; border: 1px solid var(--o-border-light); border-radius: var(--o-radius); display: flex; gap: 12px; padding: 10px;
                   transition: box-shadow .15s, border-color .15s; min-width: 0; }
.o_kanban_record:hover { box-shadow: 0 2px 10px rgba(0,0,0,.08); border-color: #d8d8d8; }
.o_kanban_image { flex: 0 0 112px; height: 112px; display: flex; align-items: center; justify-content: center; background: #fff; border-radius: 2px; }
.o_kanban_image img { max-width: 100%; max-height: 100%; object-fit: contain; }
.o_kanban_details { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.o_kanban_title { color: var(--o-heading); font-weight: 500; font-size: 14px; line-height: 1.3;
                  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.o_kanban_title:hover { color: var(--o-brand); }
.o_kanban_meta { color: var(--o-muted); font-size: 12px; display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }
.o_kanban_tags { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }
.o_kanban_bottom { margin-top: auto; display: flex; align-items: flex-end; justify-content: space-between; gap: 8px; flex-wrap: wrap; padding-top: 4px; }
.o_in_cart_note { font-size: 12px; color: var(--o-success); }

/* ---------- sticky cart bar ---------- */
.o_cartbar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 40; background: #fff; border-top: 1px solid var(--o-border);
             box-shadow: 0 -2px 12px rgba(0,0,0,.08); }
.o_cartbar_in { max-width: 1400px; margin: 0 auto; padding: 10px 16px; display: flex; align-items: center; gap: 16px; }
.o_cartbar .o_cartbar_icon { width: 38px; height: 38px; border-radius: 50%; background: var(--o-brand-light); color: var(--o-brand); display: flex; align-items: center; justify-content: center; font-size: 18px; flex: none; }
.o_cartbar .o_cartbar_text { display: flex; flex-direction: column; line-height: 1.25; }
.o_cartbar .o_cartbar_total { font-size: 18px; font-weight: 700; color: var(--o-heading); }
.o_cartbar .btn { margin-left: auto; }

/* ---------- form view (sheet) ---------- */
.o_form_view { max-width: 1400px; margin: 0 auto; }
.o_form_layout { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 16px; align-items: start; }
.o_sheet { background: #fff; border: 1px solid var(--o-border-light); box-shadow: 0 5px 20px -15px rgba(0,0,0,.4); padding: 20px 24px; min-width: 0; }
.o_sheet_title { font-size: 24px; margin-bottom: 4px; }
.o_sheet_sub { color: var(--o-muted); margin-bottom: 16px; }
.o_group { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 32px; margin-bottom: 16px; }
.o_group table { width: 100%; border-collapse: collapse; }
.o_group td { padding: 4px 0; vertical-align: top; font-size: 14px; }
.o_group td.o_td_label { width: 40%; font-weight: 500; color: var(--o-heading); padding-right: 12px; }
.o_notebook_tabs { display: flex; border-bottom: 1px solid var(--o-border); margin: 18px 0 0; gap: 2px; overflow-x: auto; }
.o_notebook_tabs a, .o_notebook_tabs span { padding: 8px 16px; color: var(--o-text); border: 1px solid transparent; border-bottom: 0; margin-bottom: -1px; border-radius: 3px 3px 0 0; white-space: nowrap; cursor: pointer; }
.o_notebook_tabs .active { color: var(--o-heading); border-color: var(--o-border); background: #fff; font-weight: 500; }
.o_notebook_page { padding: 14px 0 0; }
.o_notebook_page[hidden] { display: none; }

/* statusbar (как в форме заказа Odoo) */
.o_statusbar { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap;
               background: #fff; border: 1px solid var(--o-border-light); border-bottom: 0; padding: 6px 12px; }
.o_statusbar_buttons { display: flex; gap: 6px; flex-wrap: wrap; }
.o_statusbar_status { display: flex; flex-wrap: nowrap; overflow-x: auto; margin-left: auto; }
.o_arrow { position: relative; padding: 5px 14px 5px 22px; font-size: 13px; color: var(--o-muted); background: #fff; border: 1px solid var(--o-border); border-right: 0; white-space: nowrap; }
.o_arrow:first-child { padding-left: 14px; border-radius: 3px 0 0 3px; }
.o_arrow:last-child { border-right: 1px solid var(--o-border); border-radius: 0 3px 3px 0; }
.o_arrow.current { background: var(--o-brand); color: #fff; border-color: var(--o-brand); }
.o_arrow.done { color: var(--o-text); }

/* list (таблица строк / заказов) */
.o_list_table { width: 100%; border-collapse: collapse; background: #fff; font-size: 14px; }
.o_list_table th { text-align: left; font-weight: 700; color: var(--o-heading); padding: 8px 10px; border-bottom: 2px solid var(--o-border); white-space: nowrap; background: #fff; font-size: 13px; }
.o_list_table td { padding: 8px 10px; border-top: 1px solid var(--o-border-light); vertical-align: middle; }
.o_list_table tbody tr:nth-child(odd) td { background: #fcfcfc; }
.o_list_table tr.o_row_link { cursor: pointer; }
.o_list_table tr.o_row_link:hover td { background: #f1f6f6; }
.o_list_table .num { text-align: right; white-space: nowrap; }
.o_list_table tfoot td { border-top: 2px solid var(--o-border); font-weight: 700; background: #fff !important; }
.o_list_wrap { background: #fff; border: 1px solid var(--o-border-light); overflow-x: auto; }
.o_line_product { display: flex; align-items: center; gap: 10px; min-width: 220px; }
.o_line_product img { width: 44px; height: 44px; object-fit: contain; flex: none; background: #fff; }
.o_line_product .o_line_name { color: var(--o-heading); font-weight: 500; line-height: 1.3; }
.o_totals { margin-left: auto; max-width: 360px; margin-top: 12px; }
.o_totals table { width: 100%; border-collapse: collapse; }
.o_totals td { padding: 4px 0; text-align: right; }
.o_totals td:first-child { color: var(--o-text); padding-right: 16px; }
.o_totals tr.o_grand td { border-top: 1px solid var(--o-border); font-size: 18px; font-weight: 700; color: var(--o-heading); padding-top: 8px; }

/* сводка корзины (sticky) */
.o_summary { position: sticky; top: calc(var(--navbar-h) + 12px); }
.o_summary .o_sheet { padding: 16px; }
.o_summary h2 { font-size: 16px; margin-bottom: 10px; }
.o_summary_row { display: flex; justify-content: space-between; padding: 3px 0; font-size: 14px; }
.o_summary_total { display: flex; justify-content: space-between; align-items: baseline; border-top: 1px solid var(--o-border); margin: 8px 0 14px; padding-top: 10px; }
.o_summary_total b { font-size: 22px; color: var(--o-heading); }
.o_note { font-size: 12px; color: var(--o-muted); margin: 10px 0 0; }

/* product page */
.o_product { display: grid; grid-template-columns: minmax(0, 420px) minmax(0, 1fr); gap: 28px; }
.o_product_image { border: 1px solid var(--o-border-light); background: #fff; display: flex; align-items: center; justify-content: center; aspect-ratio: 1 / 1; }
.o_product_image img { max-width: 100%; max-height: 100%; object-fit: contain; }
.o_product h1 { font-size: 22px; line-height: 1.3; margin-bottom: 8px; }
.o_buybox { background: #fafafa; border: 1px solid var(--o-border-light); padding: 14px; margin: 14px 0; display: flex; flex-direction: column; gap: 10px; }
.o_buybox .o_price { font-size: 26px; }
.o_desc { white-space: pre-line; }

/* success panel */
.o_success_panel { display: flex; gap: 16px; align-items: center; background: #fff; border: 1px solid #c3e6cb; border-left: 4px solid var(--o-success);
                   padding: 16px 20px; margin-bottom: 16px; }
.o_success_panel .o_success_icon { width: 48px; height: 48px; border-radius: 50%; background: #d4edda; color: var(--o-success); display: flex; align-items: center; justify-content: center; font-size: 26px; flex: none; }
.o_success_panel h2 { font-size: 20px; margin-bottom: 2px; }
.o_success_panel .o_order_number { color: var(--o-brand); font-weight: 700; }

/* empty state (o_view_nocontent) */
.o_nocontent { text-align: center; padding: 56px 16px; color: var(--o-muted); max-width: 520px; margin: 0 auto; }
.o_nocontent .o_nocontent_icon { width: 84px; height: 84px; margin: 0 auto 16px; border-radius: 50%; background: var(--o-brand-light); color: var(--o-brand);
                                 display: flex; align-items: center; justify-content: center; font-size: 40px; }
.o_nocontent h2 { font-size: 20px; color: var(--o-heading); margin-bottom: 8px; }
.o_nocontent p { margin: 0 0 18px; }

/* auth pages */
.o_auth { flex: 1; display: flex; align-items: flex-start; justify-content: center; padding: 40px 16px; }
.o_auth_card { width: 100%; max-width: 380px; background: #fff; border: 1px solid var(--o-border-light); box-shadow: 0 6px 24px -12px rgba(0,0,0,.25); padding: 28px 28px 22px; }
.o_auth_card.wide { max-width: 640px; }
.o_auth_logo { text-align: center; margin-bottom: 18px; }
.o_auth_logo img { max-height: 46px; max-width: 220px; }
.o_auth_logo .o_auth_app { display: block; color: var(--o-brand); font-weight: 500; letter-spacing: 1px; font-size: 12px; text-transform: uppercase; margin-top: 6px; }
.o_auth_card h1 { font-size: 18px; text-align: center; margin-bottom: 18px; }
.o_auth_links { display: flex; justify-content: space-between; font-size: 13px; margin-top: 12px; gap: 8px; flex-wrap: wrap; }
.o_auth_grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0 16px; }
.o_auth_grid .full { grid-column: 1 / -1; }
.o_auth_sep { border-top: 1px solid var(--o-border-light); margin: 6px 0 14px; padding-top: 10px; font-size: 12px; color: var(--o-muted); text-transform: uppercase; letter-spacing: .5px; }

/* toasts (уведомления как в Odoo) */
.o_notification_manager { position: fixed; top: calc(var(--navbar-h) + 10px); right: 12px; z-index: 100; display: flex; flex-direction: column; gap: 8px; width: 320px; max-width: calc(100vw - 24px); }
.o_notification { background: #fff; border-left: 4px solid var(--o-success); box-shadow: 0 4px 16px rgba(0,0,0,.18); padding: 10px 14px; font-size: 13px;
                  animation: o_in .2s ease-out; }
.o_notification.danger { border-left-color: var(--o-danger); }
.o_notification b { display: block; color: var(--o-heading); margin-bottom: 2px; }
@keyframes o_in { from { transform: translateX(30px); opacity: 0; } to { transform: none; opacity: 1; } }

.o_footer { text-align: center; color: var(--o-muted); font-size: 12px; padding: 14px; }
.o_footer.has-cartbar { padding-bottom: 80px; }

/* ---------- вход по ИНН при оформлении, регистрация ---------- */
.o_systray > a.o_signin { font-weight: 500; }
.o_checkout_cart { display: flex; gap: 10px; align-items: flex-start; background: var(--o-primary-light);
                   border-radius: var(--o-radius); padding: 10px 12px; margin-bottom: 16px; font-size: 14px; }
.o_checkout_cart > .o_icon { color: var(--o-primary-dark); font-size: 18px; margin-top: 1px; }
.o_auth_alt { display: flex; flex-direction: column; gap: 8px; text-align: center; border-top: 1px solid var(--o-border-light);
              margin-top: 18px; padding-top: 14px; }
.o_auth_text { margin: 0 0 12px; }
.o_auth_actions { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 10px; }
.o_found { display: flex; gap: 10px; align-items: flex-start; background: #d4edda; color: #155724; border-radius: var(--o-radius);
           padding: 10px 12px; margin-bottom: 14px; font-size: 15px; }
.o_found > .o_icon { font-size: 20px; margin-top: 2px; }
.o_found .text-muted { color: #3d7a4d; }
.o_found_new { background: var(--o-brand-light); color: var(--o-heading); font-size: 14px; }
.o_found_new > .o_icon { color: var(--o-brand); }
.o_inline_form { display: inline; }
.o_admin_actions .btn { margin: 2px 0; }

/* ---------- mobile ---------- */
@media (max-width: 991px) {
  .o_form_layout { grid-template-columns: 1fr; }
  .o_summary { position: static; }
  .o_product { grid-template-columns: 1fr; gap: 16px; }
  .o_product_image { max-height: 360px; }
}
@media (max-width: 767px) {
  body { font-size: 14px; }
  .o_navbar { padding: 0 6px 0 10px; }
  .o_logo { margin-right: 4px; gap: 6px; } .o_logo img { height: 28px; }
  .o_menu a { padding: 0 9px; font-size: 13.5px; }
  .o_user_name, .hide-sm { display: none !important; }
  .o_systray > * { padding: 0 8px; }
  .o_control_panel { padding: 8px 12px 6px; }
  .breadcrumb { font-size: 16px; }
  .o_searchview { max-width: none; }
  .o_content { padding: 10px; }
  .o_catalog { grid-template-columns: 1fr; gap: 10px; }
  .o_search_panel { position: static; display: flex; overflow-x: auto; padding: 6px; gap: 6px; border: 0; background: transparent; scrollbar-width: none; }
  .o_search_panel::-webkit-scrollbar { display: none; }
  .o_search_panel h3 { display: none; }
  .o_search_panel a { border: 1px solid var(--o-border); border-radius: 16px; padding: 4px 12px; background: #fff; white-space: nowrap; flex: none; }
  .o_search_panel a.active { border-color: var(--o-brand); background: var(--o-brand); color: #fff; }
  .o_search_panel a.active .count { color: #f3e6ef; }
  .o_kanban { grid-template-columns: 1fr; gap: 8px; }
  .o_kanban_image { flex-basis: 92px; height: 92px; }
  .o_kanban_bottom { flex-direction: column; align-items: stretch; }
  .o_kanban_bottom .o_boxctl { width: 100%; }
  .o_kanban_bottom .o_boxadd { flex: 1; justify-content: center; }
  .o_kanban_bottom .o_boxval { flex: 1; justify-content: center; }
  .o_cartbar_in { padding: 8px 12px; gap: 10px; }
  .o_cartbar .o_cartbar_icon { display: none; }
  .o_cartbar .o_cartbar_total { font-size: 17px; }
  .o_sheet { padding: 14px; }
  .o_group { grid-template-columns: 1fr; }
  .o_statusbar { padding: 6px 8px; }
  .o_statusbar_status { margin-left: 0; width: 100%; }
  .o_arrow { padding: 4px 10px 4px 16px; font-size: 12px; }
  .o_list_table.o_responsive thead { display: none; }
  .o_list_table.o_responsive, .o_list_table.o_responsive tbody, .o_list_table.o_responsive tr, .o_list_table.o_responsive td { display: block; width: 100%; }
  .o_list_table.o_responsive tr { border-bottom: 1px solid var(--o-border); padding: 8px 4px; position: relative; }
  .o_list_table.o_responsive td { border: 0; padding: 3px 6px; background: transparent !important; display: flex; justify-content: space-between; gap: 10px; text-align: right; }
  .o_list_table.o_responsive td[data-label]::before { content: attr(data-label); color: var(--o-muted); text-align: left; }
  .o_list_table.o_responsive td.o_cell_main { display: block; text-align: left; }
  .o_list_table.o_responsive td.o_cell_main::before { content: none; }
  .o_list_table.o_responsive td.o_cell_action { position: absolute; top: 4px; right: 0; width: auto; }
  .o_list_table.o_responsive tfoot { display: none; }
  .o_auth { padding: 16px 10px; }
  .o_auth_card { padding: 20px 16px; }
  .o_auth_grid { grid-template-columns: 1fr; }
  .o_success_panel { padding: 12px; }
}
.o_test_banner { background: #f0ad4e; color: #3d2a00; text-align: center; font-size: 12px; font-weight: 500; padding: 3px 8px; }
.o_terms { display: flex; flex-wrap: wrap; gap: 4px 14px; font-size: 12px; align-items: center; }
.o_vat { display: inline-block; font-size: 11px; font-weight: 500; color: var(--o-brand-dark); background: var(--o-brand-light);
         border-radius: 3px; padding: 0 5px; vertical-align: 2px; }
.o_price_table { border-collapse: collapse; font-size: 13px; width: 100%; max-width: 380px; }
.o_price_table td { padding: 2px 0; border-bottom: 1px dashed var(--o-border-light); }
.o_price_table td:last-child { text-align: right; white-space: nowrap; }
.o_price_sub { display: flex; flex-wrap: wrap; gap: 0 8px; color: var(--o-muted); font-size: 12px; line-height: 1.35; }
.o_price_sub span + span::before { content: "·"; margin-right: 8px; }
