/* wMapsach application system. Source: docs/DESIGN-SYSTEM.md and UX Pilot reference.
   App shell at 1440px: 88px rail + 1352px workspace. Task panes have their own grid. */
:root {
 --font-ui:Poppins,system-ui,sans-serif;
 --rail-width:88px;
 --radius-panel:16px;
 --radius-control:10px;
 --radius-small:6px;
 --space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;
}
body {font-family:var(--font-ui);font-size:14px;line-height:1.5;}
button,input,textarea,select {font-family:var(--font-ui);}
button:disabled {cursor:not-allowed;opacity:.55;}
h1 {font-size:26px;letter-spacing:-.7px;line-height:1.3;}
h2 {font-size:16px;letter-spacing:-.25px;}
p {line-height:1.7;}
small,.small {font-size:12px;}
.sr-only {position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}
button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,summary:focus-visible {outline:2px solid var(--accent);outline-offset:3px;}
.search:focus-within {outline:2px solid var(--accent);outline-offset:2px;}
.search input:focus-visible {outline:0;}
.sidebar {width:var(--rail-width);padding:16px 8px 14px;background:var(--surface);box-shadow:none;overflow-y:auto;}
.brand {display:flex;flex-direction:column;gap:5px;padding:0;margin:0 0 28px;flex-shrink:0;}
.app-mark {display:grid;place-items:center;width:40px;height:42px;background:var(--brand-mark);border-radius:14px;color:#fff;}
.app-wordmark {font-size:10px;font-weight:600;color:var(--text);letter-spacing:-.3px;}
.sidebar nav {flex:none;overflow:visible;gap:4px;}
.sidebar .nav-link {position:relative;display:flex;flex-direction:column;gap:7px;min-height:56px;padding:10px 2px 8px;font-size:9px;font-weight:400;text-align:center;border:1px solid transparent;border-radius:12px;color:var(--nav-text);}
.nav-link svg {width:17px;height:17px;}
.sidebar .nav-link.active {color:var(--text);background:var(--selected-bg);border-color:var(--line);font-weight:500;}
.nav-count {position:absolute;top:6px;right:10px;margin:0;min-width:16px;min-height:16px;padding:1px 4px;border-radius:50%;background:var(--blue-text);color:var(--page-bg);font-size:9px;}
.sidebar-footer {margin-top:auto;padding-top:28px;}
.sidebar-theme {margin:0 0 14px;}
.rail-theme {display:flex;flex-direction:column;align-items:center;color:var(--muted);gap:6px;}
.rail-theme>span {font-size:9px;text-transform:uppercase;letter-spacing:1.2px;}
.rail-theme>div {display:flex;flex-direction:column;border:1px solid var(--line);border-radius:10px;width:40px;overflow:hidden;}
.rail-theme button {display:grid;place-items:center;border:0;background:transparent;height:34px;color:var(--muted);border-radius:8px;}
.rail-theme button[aria-pressed="true"] {background:var(--selected-bg);color:var(--text);box-shadow:inset 0 0 0 1px var(--selected-border);}
.rail-theme small {font-size:9px;}
.sidebar-bottom {flex-direction:column;gap:5px;padding-top:12px;}
.sidebar-bottom .avatar {width:32px;height:32px;font-size:11px;}
.sidebar-bottom strong {font-size:9px;max-width:56px;text-align:center;font-weight:400;}
.sidebar-bottom small {display:none;}
.sidebar-bottom .icon-button {min-height:28px;color:var(--muted);}
.sidebar-bottom .icon-button svg {width:15px;height:15px;}
.workspace {margin-left:var(--rail-width);width:calc(100% - var(--rail-width));min-width:0;}
.workspace main {padding:32px;max-width:1600px;}
.topbar {height:58px;padding:0 32px;background:var(--page-bg);}
.topbar .today {font-size:11px;}
.local-banner {background:var(--surface-soft);color:var(--muted);font-size:10px;padding:5px 16px;text-transform:none;letter-spacing:0;}
.page-heading {margin-bottom:24px;}
.page-heading p {font-size:13px;}
.button {min-height:36px;padding:8px 12px;font-size:12px;border-radius:var(--radius-control);border-color:var(--line);background:var(--surface);}
.button.primary {border-color:var(--primary-bg);}
.icon-button {color:var(--muted);}
.badge {font-size:11px;padding:3px 7px;border-radius:var(--radius-small);flex-shrink:0;}
.panel,.client-card,.callout,.stat {border-radius:var(--radius-panel);box-shadow:none;}
.panel {padding:24px;}
.client-card:hover {box-shadow:none;}
.stat-icon,.icon-tile {padding:0;background:transparent;border-radius:0;color:var(--muted);}
.stat-icon {display:none;}
.stats {gap:0;border:1px solid var(--line);border-radius:var(--radius-panel);overflow:hidden;background:var(--surface);}
.stat {border:0;border-right:1px solid var(--line);border-radius:0;padding:20px 24px;}
.stat:last-child {border-right:0;}
.stat>span:not(.stat-icon) {margin:0;font-size:12px;}
.stat strong {font-size:28px;font-weight:500;font-variant-numeric:tabular-nums;}
.stat small,.lead-row small,.client-card-bottom small,.task-meta small,.task-row .grow>a,.timeline small,.service-list small {font-size:11px;}
.client-card p,.client-card-bottom {font-size:12px;}
.callout {background:var(--surface);border-color:var(--line);}
.callout h2 {font-size:20px;}
.callout p {font-size:13px;}
.company-avatar {border-radius:50%;font-size:13px;}
.tabs button {font-size:13px;}
.tabs button.active {color:var(--text);border-color:var(--text);}
.segmented button {font-size:12px;}
th {background:transparent;font-size:12px;letter-spacing:0;}
td {font-size:13px;}
.num {font-variant-numeric:tabular-nums;}
td.num,th.num {text-align:right;}
td small {font-size:11px;}
.field>span {font-size:12px;}
.field input,.field textarea,.field select {min-height:40px;border-radius:var(--radius-control);border-color:var(--border-strong);}
.service-edit .field>span {font-size:11px;}
.modal-head h2 {font-size:18px;}
dialog {border-radius:var(--radius-panel);}
dialog::backdrop {backdrop-filter:none;}
.login-story {background:var(--page-bg);border-right:1px solid var(--line);}
.login-story h1 {font-size:38px;}
.login-side {background:var(--surface);}
.metric>strong,.offer-prices strong {font-variant-numeric:tabular-nums;}
@media(max-width:1100px) {
 .sidebar {transform:translateX(-100%);width:240px;position:fixed;z-index:45;padding:24px 16px;transition:none;}
 .sidebar.shown {transform:none;box-shadow:15px 0 50px var(--drawer-shadow);}
 .sidebar .brand {flex-direction:row;gap:12px;}
 .sidebar .app-wordmark {font-size:17px;}
 .sidebar .nav-link {flex-direction:row;padding:12px;font-size:13px;min-height:44px;gap:14px;}
 .nav-count {position:static;margin-left:auto;}
 .rail-theme>div {flex-direction:row;width:auto;padding:3px;}
 .rail-theme button {width:48px;min-height:40px;}
 .rail-theme>span {font-size:11px;}
 .rail-theme small {font-size:11px;}
 .sidebar-bottom {flex-direction:row;flex-wrap:wrap;gap:10px;}
 .sidebar-bottom strong {font-size:12px;max-width:128px;text-align:left;}
 .sidebar-bottom .icon-button {margin-left:auto;}
 .workspace {margin-left:0;width:100%;}
 .workspace main {padding:28px;}
 .topbar {padding:0 24px;}
 .mobile-only {display:inline-flex;}
 .stats {grid-template-columns:repeat(2,minmax(0,1fr));}
 .stat:nth-child(2) {border-right:0;}
 .stat:nth-child(-n+2) {border-bottom:1px solid var(--line);}
 .sidebar-footer {padding-top:20px;}
}
@media(max-width:760px) {
 .workspace main {padding:24px 16px 92px;}
 .sidebar {padding-bottom:calc(80px + env(safe-area-inset-bottom));}
 .topbar {height:52px;padding:0 16px;}
 .mobile-nav {z-index:40;}
 .mobile-nav a {min-height:44px;min-width:54px;font-size:11px;}
 .mobile-nav a.active {color:var(--text);}
 .stat {padding:16px;}
 .stat strong {font-size:24px;overflow-wrap:anywhere;}
 .stats {gap:0;}
 .page-heading h1 {font-size:24px;}
 .page-heading .button {min-height:44px;}
 .button,.icon-button {min-height:40px;}
 .panel {padding:18px;}
 .form-grid {grid-template-columns:1fr;}
 .login-story h1 {font-size:28px;}
 .login-story p {font-size:14px;}
 .task-row .text-button {font-size:13px;}
 .report-view h1 {font-size:24px;}
 .service-edit {grid-template-columns:1fr 1fr;}
 .service-edit>.field:first-child {grid-column:1/-1;}
}
@media(prefers-reduced-motion:reduce) {*,*::before,*::after {scroll-behavior:auto!important;transition:none!important;animation:none!important;}}
@media print {
 .sidebar,.mobile-nav,.topbar,.local-banner {display:none!important;}
 .workspace {margin:0;width:100%;}
 .workspace main {padding:0;}
}
/* A declared period payment remains readable without sideways scrolling on phones. */
.service-schedule {grid-column:1 / -1;min-width:0;font-size:12px;}
.service-schedule summary {color:var(--muted);cursor:pointer;overflow-wrap:anywhere;}
.service-schedule .form-grid {margin-top:12px;grid-template-columns:repeat(3,minmax(0,1fr));}
.service-schedule .field>span {font-size:12px;}
.service-schedule p {margin:12px 0 0;}
@media (max-width: 767px) {
  .service-schedule .form-grid {grid-template-columns:1fr;}
  .billing-periods-table, .billing-periods-table tbody { display: block; width: 100%; min-width: 0; }
  .billing-periods-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
  .billing-periods-table tr { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 12px 16px; padding: 20px 0; border-bottom: 1px solid var(--line); }
  .billing-periods-table td { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; width: auto; min-width: 0; max-width: none; padding: 0; border: 0; white-space: normal; overflow-wrap: anywhere; }
  .billing-periods-table td small { max-width: 100%; white-space: normal; overflow-wrap: anywhere; }
  .billing-periods-table td:first-child { grid-column: 1 / -1; }
  .billing-periods-table td.num { align-items: flex-end; }
  .billing-periods-table td:not(:first-child)::before { content: attr(data-label); color: var(--muted); font-size: 12px; font-weight: 400; }
}

/* Client portal: composition from the owner's 03.11.2026 PDF, shared tokens. */
.portal-client {min-height:100dvh;background:var(--page-bg);color:var(--text)}
.portal-client .portal-header {padding:0 24px;background:var(--surface);border-bottom:1px solid var(--line)}
.portal-header-inner {width:100%;max-width:1120px;min-height:72px;margin:auto;display:flex;align-items:center;gap:22px}
.portal-client .portal-brand {display:flex;flex-shrink:0}
.portal-client .portal-brand .brand-logo {width:142px}
.portal-context {font-size:12px;color:var(--muted);border-left:1px solid var(--line);padding-left:16px;white-space:nowrap}
.portal-header-inner nav {display:flex;gap:4px;align-items:center}
.portal-header-inner nav a {padding:10px 12px;font-size:13px;color:var(--text);border-radius:var(--radius-small);text-decoration:none;white-space:nowrap}
.portal-header-inner nav a:hover {background:var(--surface-hover)}
.portal-account {margin-left:auto;display:flex;align-items:center;gap:16px;min-width:0}
.portal-identity {display:flex;flex-direction:column;min-width:0;max-width:190px}
.portal-identity strong {font-size:12px;font-weight:500;overflow-wrap:anywhere}
.portal-identity small {font-size:11px;color:var(--muted);overflow-wrap:anywhere}
.portal-client .theme-control {font-size:12px;gap:6px}
.portal-client .theme-control>span,.portal-client .theme-control>svg {display:none}
.portal-client .portal-main {max-width:1168px;padding:40px 24px 24px;margin:auto}
.portal-welcome {display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:30px}
.portal-welcome h1 {font-size:25px;margin:0 0 6px}
.portal-welcome p {font-size:13px;color:var(--muted);margin:0}
.portal-current-period {display:flex;align-items:center;gap:6px;max-width:260px;flex-shrink:0}
.portal-current-period svg {flex-shrink:0}
.portal-client .portal-intro {display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:20px;margin-bottom:30px;scroll-margin-top:20px}
.portal-client .panel {border:1px solid var(--line);border-radius:var(--radius-panel);box-shadow:none;min-width:0;background:var(--surface)}
.portal-client .portal-package,.portal-client .portal-services {padding:24px;margin:0}
.portal-section-label {font-size:12px;color:var(--muted)}
.portal-package-title {margin:10px 0 26px}
.portal-package-title h2 {font-size:24px;line-height:1.35;margin:0;overflow-wrap:anywhere}
.portal-package dl {display:grid;gap:18px;margin:0}
.portal-package dl>div {min-width:0}
.portal-package dt {font-size:12px;color:var(--muted);margin:0 0 3px}
.portal-package dd {margin:0;font-size:13px;overflow-wrap:anywhere}
.portal-package-note {margin:24px 0 0;padding:14px;border-radius:var(--radius-control);background:var(--surface-soft);font-size:12px;color:var(--muted)}
.portal-services .section-heading {margin:0 0 12px}
.portal-services h2 {font-size:14px;margin:0}
.portal-service-list {padding:0;margin:0;list-style:none}
.portal-service-list li {display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 0;border-top:1px solid var(--line);font-size:13px}
.portal-service-list li:first-child {border-top:0}
.portal-service-list li>span {min-width:0;overflow-wrap:anywhere}
.portal-service-list li small {display:block;font-size:11px;color:var(--muted);margin-top:3px}
.portal-service-list li>svg {flex-shrink:0;color:var(--status-done)}
.portal-client .portal-report {padding:0;margin:0;scroll-margin-top:20px;overflow:visible}
.portal-report-header {padding:24px 28px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:24px}
.portal-report-header>div:first-child {min-width:0}
.portal-report-header .portal-section-label {color:var(--status-done)}
.portal-report-header h2 {font-size:19px;margin:7px 0 5px;overflow-wrap:anywhere}
.portal-report-header p {font-size:12px;color:var(--muted);margin:0}
.portal-report-actions {display:flex;align-items:center;gap:8px;flex-shrink:0}
.portal-report-actions .field {margin:0;max-width:240px}
.portal-report-actions .button {display:flex;align-items:center;gap:8px;white-space:nowrap;font-size:12px}
.portal-report-content {padding:28px;display:grid;gap:30px}
.portal-report-content h3 {font-size:15px;font-weight:600;margin:0 0 12px}
.portal-report-content .section-heading {gap:16px;align-items:baseline;margin:0 0 12px}
.portal-report-content .section-heading h3 {margin:0}
.portal-report-content .section-heading small {font-size:11px}
.portal-summary {padding:18px;display:flex;align-items:flex-start;gap:14px;background:var(--green-bg);border:1px solid var(--line);border-radius:var(--radius-control)}
.portal-summary svg {flex-shrink:0;color:var(--status-done);margin-top:3px}
.portal-summary p {margin:0;font-size:13px;overflow-wrap:anywhere}
.portal-metrics {display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.portal-metric {border:1px solid var(--line);border-radius:var(--radius-control);padding:16px;min-width:0;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.portal-metric>span,.portal-metric>small {display:block;font-size:11px;color:var(--muted)}
.portal-metric>strong {display:block;font-size:26px;font-weight:600;margin:4px 0 6px;line-height:1.4}
.portal-metric strong small {font-size:12px;font-weight:400;color:var(--muted)}
.portal-metric.is-missing {border-style:dashed}
.portal-metric.is-missing>strong {font-size:18px;color:var(--muted)}
.portal-metric p {font-size:11px;color:var(--muted);margin:5px 0 0}
.portal-disclaimer {font-size:11px;color:var(--muted);margin:12px 0 0}
.portal-position-table {border:1px solid var(--line);border-radius:var(--radius-control)}
.portal-position-table table {width:100%;min-width:570px;margin:0;table-layout:fixed}
.portal-position-table th:first-child {width:34%}
.portal-position-table th:nth-child(2) {width:14%}
.portal-position-table th:nth-child(3) {width:20%}
.portal-position-table th,.portal-position-table td {padding:13px 16px;font-size:12px;overflow-wrap:anywhere}
.portal-position-table tbody tr:last-child td {border-bottom:0}
.portal-report-bottom {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:30px}
.portal-work-list {list-style:none;padding:0;margin:0;display:grid;gap:18px}
.portal-work-list li {display:flex;gap:10px;align-items:flex-start;font-size:13px}
.portal-work-list li>svg {color:var(--status-done);flex-shrink:0;margin-top:4px}
.portal-work-list li>div {min-width:0;overflow-wrap:anywhere}
.portal-work-list small {font-size:11px;color:var(--muted);display:block}
.portal-work-list p {margin:3px 0;font-size:13px}
.portal-work-list a {display:block;font-size:12px;margin-top:5px}
.portal-modules {display:grid;align-content:start;gap:22px;min-width:0}
.portal-module {background:var(--surface-soft);padding:16px;border-radius:var(--radius-control);overflow-wrap:anywhere}
.portal-module p {font-size:13px;margin:0}
.portal-module small {display:block;font-size:11px;color:var(--muted);margin-top:8px}
.portal-report-scope {border-top:1px solid var(--line);padding-top:18px;font-size:12px;overflow-wrap:anywhere}
.portal-report-scope summary {cursor:pointer}
.portal-history {margin-top:28px}
.portal-history>h2 {font-size:15px;margin-bottom:14px}
.portal-history .panel {padding:0;overflow:hidden}
.portal-history-row {display:flex;align-items:center;gap:16px;width:100%;border:0;border-bottom:1px solid var(--line);border-radius:0;padding:18px 20px;background:transparent;color:var(--text);text-align:left}
.portal-history-row:last-child {border-bottom:0}
.portal-history-row:hover {background:var(--surface-hover)}
.portal-history-row>span {display:flex;align-items:center;gap:12px;min-width:0;flex:1}
.portal-history-row strong {font-size:13px;font-weight:400;overflow-wrap:anywhere}
.portal-history-row small {color:var(--muted);font-size:11px}
.portal-history-row svg {flex-shrink:0;color:var(--muted)}
.portal-empty {color:var(--muted);font-size:13px;margin:0;padding:10px 0}
.portal-no-report {padding:24px 28px;color:var(--muted);font-size:13px}
.portal-client .portal-footer {max-width:1168px;margin:0 auto;padding:20px 24px 40px;text-align:left;font-size:11px;color:var(--muted)}
@media(max-width:1100px){
 .portal-context,.portal-identity {display:none}
 .portal-header-inner {gap:16px}
 .portal-report-header {align-items:flex-start;flex-direction:column;gap:16px}
 .portal-report-actions {flex-wrap:wrap;max-width:100%}
 .portal-metrics {grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:760px){
 .portal-client .portal-header {padding:0 16px}
 .portal-header-inner {min-height:64px;gap:8px;flex-wrap:wrap;padding:12px 0}
 .portal-client .portal-brand .brand-logo {width:120px}
 .portal-account {gap:4px}
 .portal-account .theme-control {max-width:112px}
 .portal-header-inner nav {order:3;width:100%;border-top:1px solid var(--line);padding-top:8px;margin-top:4px}
 .portal-header-inner nav a {min-height:44px;display:flex;align-items:center;padding:8px 14px}
 .portal-client .portal-main {padding:26px 16px 20px}
 .portal-welcome {display:block;margin-bottom:24px}
 .portal-welcome h1 {font-size:23px}
 .portal-welcome .portal-current-period {margin-top:12px;font-size:12px;max-width:none}
 .portal-client .portal-intro {grid-template-columns:minmax(0,1fr);gap:16px;margin-bottom:24px}
 .portal-client .portal-package,.portal-client .portal-services {padding:20px}
 .portal-package-title {margin-bottom:18px}
 .portal-report-header,.portal-report-content {padding:20px}
 .portal-report-header h2 {font-size:18px}
 .portal-report-actions {width:100%;flex-shrink:1}
 .portal-report-actions .field {width:100%;max-width:none}
 .portal-report-actions .button {min-height:44px}
 .portal-report-content {gap:26px}
 .portal-report-content .section-heading {display:block}
 .portal-report-content .section-heading small {display:block;margin-top:6px}
 .portal-summary {padding:14px;gap:10px}
 .portal-metrics {gap:8px}
 .portal-metric {padding:12px}
 .portal-metric>strong {font-size:23px}
 .portal-report-bottom {grid-template-columns:minmax(0,1fr);gap:24px}
 .portal-history-row {gap:8px;flex-wrap:wrap;padding:16px}
 .portal-history-row>span {flex-basis:85%}
 .portal-history-row>small {order:3;width:100%;padding-left:28px}
 .portal-client .portal-footer {padding:12px 16px 28px}
}
@media(max-width:360px){.portal-metrics {grid-template-columns:minmax(0,1fr)}}
/* Portal refinements after comparison with the PDF in the browser. */
.portal-client .portal-brand {align-items:center;gap:10px;text-decoration:none;color:var(--text);font-size:15px}
.portal-client .portal-brand .app-mark {width:30px;height:32px;border-radius:8px}
.portal-client .portal-brand strong {font-weight:600;letter-spacing:-.5px}
.portal-client .theme-control>span.select-control {display:inline-flex;min-width:108px}
.portal-client .portal-intro {align-items:stretch}
.portal-package {display:flex;flex-direction:column}
.portal-package-note {margin-top:auto}
.portal-package dl {margin-bottom:24px}
.portal-service-list li {padding:11px 0}
.portal-service-list li small {display:inline;font-size:12px;margin-left:4px}
.portal-service-more {font-size:12px;margin-top:12px;border-top:1px solid var(--line);padding-top:14px}
.portal-service-more summary {cursor:pointer;color:var(--muted);padding:4px 0}
.portal-service-more[open] summary {margin-bottom:8px}
.portal-metrics {grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr))}
@media(max-width:1100px){.portal-metrics {grid-template-columns:repeat(2,minmax(0,1fr))}.portal-metric:last-child:nth-child(odd){grid-column:1/-1}}
@media(max-width:760px){.portal-package-note{margin-top:0}.portal-service-more summary{min-height:44px;display:flex;align-items:center}.portal-client .portal-brand{font-size:14px;gap:7px}.portal-client .theme-control>span.select-control{min-width:100px}}
@media(max-width:360px){.portal-metrics{grid-template-columns:minmax(0,1fr)}}
.portal-report-content>section,.portal-report-bottom>section {min-width:0}

/* Monthly reporting uses the established application controls and tokens. */
.report-search-fields{display:grid;gap:12px}
.report-search-row{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:16px}
.report-review-fields,.report-review-counts{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
.report-review-summaries{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-top:20px}
.report-review-summaries>*{min-width:0;overflow-wrap:anywhere}
.report-review-summaries h4{font-size:13px;font-weight:600;margin:0 0 8px}
.report-review-summaries p{margin:0;font-size:13px}
.report-review-counts{margin:16px 0;padding:16px 0;border-block:1px solid var(--line)}
.report-review-counts dt{font-size:12px;color:var(--muted)}
.report-review-counts dd{margin:6px 0 0;font-size:16px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.report-review-total{font-size:13px;color:var(--muted);margin:0}.report-review-total strong{color:var(--text)}
.portal-report-content .report-insights-table{width:100%;min-width:0;table-layout:fixed;margin:0}
.report-insights-table th,.report-insights-table td{padding:12px;font-size:13px;overflow-wrap:anywhere}
.report-insights-table th:first-child{width:65%}.report-insights-table .num{font-variant-numeric:tabular-nums}
@media(max-width:760px){.report-review-fields,.report-review-counts{grid-template-columns:repeat(2,minmax(0,1fr))}.report-review-summaries{grid-template-columns:minmax(0,1fr)}.report-search-row{grid-template-columns:minmax(0,1fr);gap:8px;padding-bottom:12px;border-bottom:1px solid var(--line)}.report-insights-table th:first-child{width:55%}.report-insights-table th,.report-insights-table td{padding:10px 8px}}
.report-edit-context{background:var(--surface-soft);padding:16px;border:1px solid var(--line);border-radius:12px;margin-bottom:20px}
.report-edit-context p{margin:8px 0 0;color:var(--muted);font-size:13px}
.report-edit-section{margin:24px 0}.report-edit-section h3{margin:0;font-size:16px}
.report-edit-row .form-grid{grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1fr)}
.report-edit-row[data-row="positions"] .form-grid{grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1fr);align-items:end}
.report-query-name{align-self:center;margin:0;overflow-wrap:anywhere;font-weight:500}
.report-edit-row input[readonly]{color:var(--muted);background:var(--surface-soft)}
.report-query-settings{margin-bottom:24px}.report-query-settings li{overflow-wrap:anywhere}
.report-view .portal-report-content{margin-top:24px}.report-view .portal-metrics{grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr))}
.monthly-position-table table{min-width:0}.monthly-position-table th:first-child{width:60%}.monthly-position-table th:nth-child(2){width:40%}
@media(max-width:760px){.monthly-position-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.monthly-position-table table,.monthly-position-table tbody{display:block;width:100%}.monthly-position-table tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));padding:12px;border-bottom:1px solid var(--line)}.monthly-position-table tbody tr:last-child{border-bottom:0}.monthly-position-table td{border:0;padding:4px 0;text-align:left}.monthly-position-table td:first-child{grid-column:1/-1;font-weight:500;padding-bottom:8px}.monthly-position-table td.num{text-align:left}.monthly-position-table td.num:before{content:attr(data-label);display:block;font-size:12px;color:var(--muted);margin-bottom:4px}}
@media(max-width:760px){.report-edit-row .form-grid,.report-edit-row[data-row="positions"] .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.report-query-name{grid-column:1/-1}.report-edit-row[data-row="google"] .field:first-of-type,.report-edit-row[data-row="website"] .field:first-of-type{grid-column:1/-1}.report-edit-section .section-heading{flex-wrap:wrap;gap:12px}}
@media(max-width:760px){.report-edit-row[data-row="google"] .field:nth-of-type(2),.report-edit-row[data-row="website"] .field:nth-of-type(2){grid-column:1/-1}}
/* Localo uses the existing report typography and theme surfaces. */
.report-localo-maps{display:grid;gap:12px;margin-top:16px}
.report-localo-map{min-width:0;border:1px solid var(--line);border-radius:12px;padding:14px;overflow-wrap:anywhere}
.report-localo-map>summary{cursor:pointer;font-weight:500}
.report-localo-map img{display:block;width:100%;max-width:500px;height:auto;margin:12px 0;border-radius:8px}
.report-localo-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:16px 0}
.report-localo-stats dt{font-size:12px;color:var(--muted)}
.report-localo-stats dd{margin:4px 0 0;font-size:18px;font-variant-numeric:tabular-nums}
.report-localo .check{display:flex;align-items:center;gap:8px;margin:12px 0}
@media(max-width:600px){.report-localo-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media print{.report-localo-map{break-inside:avoid}.report-localo-map>summary{font-weight:600}}

/* Bank postów i kopie publikacji w raportach. */
.post-list {display:grid;gap:16px;min-width:0;}
.post-card {display:grid;grid-template-columns:minmax(140px,240px) minmax(0,1fr);gap:20px;padding:20px;background:var(--surface);border:1px solid var(--line);border-radius:16px;min-width:0;break-inside:avoid;}
.post-image {min-width:0;position:relative;align-self:start;background:var(--surface-soft);border-radius:10px;overflow:hidden;}
.post-image img {display:block;width:100%;height:auto;max-height:320px;object-fit:contain;min-height:80px;}
.post-image-message {display:block;padding:12px;font-size:12px;color:var(--muted);}
.post-copy,.post-copy h3 {min-width:0;overflow-wrap:anywhere;}
.post-copy h3 {margin:0;font-size:16px;}
.post-copy .section-heading {gap:12px;flex-wrap:wrap;}
.post-text {overflow-wrap:anywhere;margin:12px 0 16px;}
.post-copy .actions {flex-wrap:wrap;}
.post-upload-preview {display:block;max-width:100%;max-height:320px;object-fit:contain;margin-top:16px;}
.report-posts>.post-list {margin-top:16px;}
@media(max-width:760px){.post-card{grid-template-columns:minmax(0,1fr);padding:16px;gap:16px}.post-image img{max-height:260px}.post-copy .button{min-height:44px}}

/* Bank postów, 07.11.2026: układ jak Zadania (lista klientów, główna kolumna, szczegóły), plan okresu i siatka postów. */
.bank-lead {margin:0;font-size:13px;color:var(--muted);}
.post-warning,.task-client-group h3.post-warning {color:var(--amber-text);}
.bank-all-avatar {border-color:var(--line);color:var(--muted);}
.bank-plan {display:grid;gap:14px;margin:22px 0 20px;padding:18px 20px;background:var(--surface);border:1px solid var(--line);border-radius:18px;}
.bank-plan-head {display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 12px;}
.bank-plan-head h2 {margin:0;font-size:14px;font-weight:600;}
.bank-plan-progress {font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;}
.bank-plan-status {margin-left:auto;font-size:12px;font-weight:600;}
.bank-plan-status.ok {color:var(--green-text);}
.bank-plan-empty {margin:0;font-size:12px;}
.bank-slots {display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin:0;padding:0;list-style:none;}
.bank-slot {display:grid;gap:3px;min-width:0;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--surface-soft);}
.bank-slot small {font-size:11px;color:var(--muted);}
.bank-slot strong {font-size:12px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.bank-slot>span {display:flex;align-items:center;gap:6px;font-size:11px;color:var(--muted);}
.bank-slot i {flex-shrink:0;width:7px;height:7px;border-radius:2px;background:var(--status-todo);}
.bank-slot.done>span {color:var(--green-text);}
.bank-slot.done i {background:var(--status-done);}
.bank-slot.missing {border-color:var(--red-border);}
.bank-slot.missing>span {color:var(--red-text);}
.bank-slot.missing i {background:transparent;border:1.5px solid var(--red-text);}
.bank-missing-list {display:flex;flex-wrap:wrap;gap:8px;}
.bank-missing {display:inline-flex;align-items:center;gap:10px;min-height:36px;padding:0 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface-soft);color:var(--text);font-size:12px;cursor:pointer;}
.bank-missing:hover {background:var(--surface-hover);}
.bank-toolbar {display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;}
.bank-tabs {display:inline-flex;gap:4px;max-width:100%;padding:4px;overflow-x:auto;border:1px solid var(--line);border-radius:12px;background:var(--surface);}
.bank-tabs button {display:inline-flex;align-items:center;gap:8px;min-height:32px;padding:0 12px;border:0;border-radius:9px;background:transparent;color:var(--muted);font-size:12px;font-weight:600;white-space:nowrap;cursor:pointer;}
.bank-tabs button:hover {color:var(--text);}
.bank-tabs button.active {background:var(--selected-bg);color:var(--text);}
.bank-tabs small {font-size:11px;font-weight:500;color:var(--muted);font-variant-numeric:tabular-nums;}
.bank-search.search {flex:1 1 220px;width:auto;max-width:320px;min-width:180px;min-height:38px;padding:8px 10px;border-radius:12px;gap:7px;}
.post-grid {display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:16px;align-items:start;margin-bottom:8px;}
.post-tile {display:flex;flex-direction:column;min-width:0;padding:0;overflow:hidden;text-align:left;color:var(--text);background:var(--surface);border:1px solid var(--line);border-radius:14px;cursor:pointer;}
.post-tile:hover {border-color:var(--border-strong);}
.post-tile.selected {border-color:var(--text);box-shadow:0 0 0 1px var(--text);}
.post-tile-image,.bank-inspector-image {position:relative;display:flex;align-items:center;justify-content:center;width:100%;aspect-ratio:4/3;overflow:hidden;background:var(--surface-soft);}
.post-tile-image img {display:block;width:100%;height:100%;object-fit:cover;}
.bank-inspector-image img {display:block;width:100%;height:100%;object-fit:contain;}
.post-tile-image .post-image-message,.bank-inspector-image .post-image-message {position:absolute;inset:auto 0 0;padding:8px 10px;font-size:11px;color:var(--muted);}
.post-tile-image.missing,.bank-inspector-image.missing {flex-direction:column;gap:6px;color:var(--amber-text);font-size:12px;font-weight:500;}
.post-tile-image.missing {border-bottom:1px dashed var(--border-strong);}
.post-tile-copy {display:flex;flex-direction:column;gap:6px;min-width:0;padding:12px 14px 14px;}
.post-tile-client {font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.post-tile-copy strong,.post-choice-copy strong {font-size:13px;font-weight:600;line-height:1.35;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.post-tile-text {font-size:12px;line-height:1.5;color:var(--muted);overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.post-tile-meta {display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:4px;}
.post-tile-meta small {font-size:11px;color:var(--muted);white-space:nowrap;}
.post-state {display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:6px;background:var(--neutral-bg);color:var(--neutral-text);font-size:11px;font-weight:500;white-space:nowrap;}
.post-state.noimage {background:var(--amber-bg);color:var(--amber-text);}
.post-state.done {background:var(--green-bg);color:var(--green-text);}
.post-new-tile {display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;min-height:260px;padding:20px;color:var(--text);text-align:center;background:transparent;border:1px dashed var(--border-strong);border-radius:14px;cursor:pointer;}
.post-new-tile:hover {background:var(--surface);}
.post-new-tile>span {display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--surface-muted);}
.post-new-tile strong {font-size:13px;font-weight:600;overflow-wrap:anywhere;}
.post-new-tile small {font-size:11px;line-height:1.5;color:var(--muted);}
.bank-post-meta {display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:-8px 0 16px;}
.bank-post-meta small {font-size:11px;color:var(--muted);}
.bank-inspector-image {margin-bottom:20px;border-radius:12px;}
.bank-inspector-image.missing {border:1px dashed var(--border-strong);}
.bank-publish {display:grid;gap:12px;}
.bank-publish h3 {margin-bottom:0;}
.task-inspector-section.bank-publish p {margin:0;line-height:1.5;}
.bank-publish .field {margin:0;}
.bank-publish-tools {display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px;}
.bank-used {display:grid;gap:8px;margin:0;font-size:12px;}
.bank-used div {display:grid;grid-template-columns:90px minmax(0,1fr);gap:8px;}
.bank-used dt {color:var(--muted);}
.bank-used dd {margin:0;}
.bank-content-heading {display:flex;justify-content:space-between;align-items:baseline;gap:8px;}
.bank-content-heading small {font-size:11px;letter-spacing:0;text-transform:none;font-variant-numeric:tabular-nums;}
.task-inspector-section .bank-post-text {margin:0;font-size:13px;line-height:1.6;overflow-wrap:anywhere;}
.bank-inspector-footer {display:flex;gap:8px;}
.post-form-intro {margin:0 0 18px;}
.post-form {display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:24px;align-items:start;}
.post-form-fields,.post-form-media {display:grid;gap:6px;min-width:0;}
.post-form .field {margin:0;}
.post-form .field-help,.post-choice-date .field-help {margin:0 0 12px;font-size:12px;line-height:1.5;color:var(--muted);}
.post-form .post-content-label {display:flex;justify-content:space-between;gap:8px;}
.post-content-label small {font-weight:400;color:var(--muted);font-variant-numeric:tabular-nums;}
.post-content-label small.overdue {color:var(--red-text);}
.post-media-label {font-size:12px;font-weight:500;line-height:1.6;}
.post-dropzone {position:relative;display:flex;align-items:center;justify-content:center;aspect-ratio:4/3;overflow:hidden;text-align:center;background:var(--surface-soft);border:1.5px dashed var(--border-strong);border-radius:14px;cursor:pointer;}
.post-dropzone:hover,.post-dropzone.dragging {border-color:var(--text);background:var(--surface-hover);}
.post-dropzone:focus-within {outline:2px solid var(--accent);outline-offset:2px;}
.post-dropzone-empty {display:grid;justify-items:center;gap:8px;padding:20px;}
.post-dropzone-empty strong {font-size:14px;font-weight:600;}
.post-dropzone-empty>span:not(.button) {font-size:12px;color:var(--muted);}
.post-dropzone-empty .button {margin-top:4px;pointer-events:none;}
.post-dropzone-preview {position:absolute;inset:0;display:none;}
.post-dropzone.has-image .post-dropzone-preview {display:block;}
.post-dropzone.has-image .post-dropzone-empty {visibility:hidden;}
.post-dropzone-preview img {display:block;width:100%;height:100%;object-fit:contain;background:var(--surface-soft);}
.post-dropzone-preview .post-image-message {position:absolute;inset:auto 0 0;padding:8px 10px;font-size:11px;color:var(--muted);}
.post-dropzone-change {position:absolute;left:8px;right:8px;bottom:8px;display:none;padding:6px 10px;font-size:11px;color:var(--text);background:var(--surface);border:1px solid var(--line);border-radius:8px;}
.post-dropzone.has-image .post-dropzone-change {display:block;}
.post-choices {min-width:0;margin:0 0 16px;padding:0;border:0;}
.post-choices legend {margin-bottom:12px;padding:0;font-size:13px;font-weight:600;}
.post-choice-grid {display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px;}
.post-choice {position:relative;display:flex;flex-direction:column;min-width:0;overflow:hidden;background:var(--surface);border:1px solid var(--line);border-radius:14px;cursor:pointer;}
.post-choice:hover {border-color:var(--border-strong);}
.post-choice input {position:absolute;opacity:0;pointer-events:none;}
.post-choice:has(input:checked) {border-color:var(--text);box-shadow:0 0 0 1px var(--text);}
.post-choice:has(input:focus-visible) {outline:2px solid var(--accent);outline-offset:2px;}
.post-choice-copy {display:grid;gap:6px;min-width:0;padding:12px 14px 14px;}
.post-choice-copy small {font-size:11px;color:var(--muted);}
.post-choice-tick {position:absolute;right:10px;top:10px;display:none;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--primary-bg);color:var(--on-primary);}
.post-choice:has(input:checked) .post-choice-tick {display:grid;}
.post-choice-note {display:grid;align-content:center;gap:10px;padding:18px;background:var(--surface-soft);border:1px dashed var(--border-strong);border-radius:14px;}
.post-choice-note .post-state {justify-self:start;}
.post-choice-note p {margin:0;}
.post-choice-note strong {font-size:13px;overflow-wrap:anywhere;}
.post-choice-tools {display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px;padding:12px 14px;font-size:12px;color:var(--muted);background:var(--surface-soft);border:1px solid var(--line);border-radius:12px;}
.post-choice-tools>span {flex:1 1 220px;min-width:0;overflow-wrap:anywhere;}
.post-choice-tools strong {color:var(--text);}
.post-choice-date {display:grid;grid-template-columns:minmax(0,260px) minmax(0,1fr);gap:16px;align-items:end;}
.post-choice-date .field {margin:0;}
@media(max-width:760px){
 .post-form,.post-choice-date {grid-template-columns:minmax(0,1fr);gap:12px;}
 .bank-plan {margin:16px 0;padding:14px;}
 .bank-slots,.post-grid {grid-template-columns:repeat(2,minmax(0,1fr));}
 .post-grid {gap:12px;}
 .bank-toolbar {align-items:stretch;}
 .bank-tabs {display:grid;grid-template-columns:1.45fr 1.2fr 1fr;width:100%;overflow:visible;}
 .bank-tabs button {flex-direction:column;justify-content:center;gap:0;min-width:0;min-height:48px;padding:4px;line-height:1.3;}
 .bank-search.search {flex:1 1 100%;max-width:none;min-height:44px;}
 .bank-search input {font-size:13px;}
 .post-tile-copy {padding:10px 12px 12px;}
 .post-new-tile {min-height:200px;}
 .bank-publish .button,.bank-inspector-footer .button,.bank-missing,.post-choice-note .button {min-height:44px;}
 .post-choice-grid {grid-template-columns:minmax(0,1fr);}
}
@media(max-width:360px){.post-grid,.bank-slots {grid-template-columns:minmax(0,1fr);}.bank-tabs button {font-size:11px;}}
@media print{.bank-toolbar,.post-new-tile {display:none!important;}}
