/* Shared visual system for the operator, customer and partner workspaces. */
:root { --fp-bg:#f4f6fb; --fp-bgc:#fff; --fp-text:#17243b; --fp-sub:#627087; --fp-border:#e3e8f1; --fp-blue:#059669; --fp-sidebar:linear-gradient(180deg,#047857 0%,#059669 100%); --fp-sidebar-width:248px; --fp-shadow:0 4px 24px #182b5010; }
html,body { font-family:'DM Sans',system-ui,sans-serif; font-size:14px; background:var(--fp-bg); color:var(--fp-text); }
button,input,select { font:inherit; }
a { color:var(--fp-blue); }
h1,.fp-page-title { font-size:clamp(24px,2.5vw,32px)!important; font-weight:750; letter-spacing:-.035em; margin-bottom:7px; }
h2 { font-size:18px; font-weight:700; letter-spacing:-.02em; }
h3 { font-size:16px; font-weight:700; }
.fp-page-sub,.text-muted { color:var(--fp-sub)!important; }
.fp-page-sub { font-size:14px;line-height:1.6; }
.table input[type="checkbox"] { width:17px;height:17px;accent-color:var(--fp-blue); }
.fp-logo-area { padding:26px 20px; gap:12px; }
.fp-logo-mark { width:42px;height:42px; border-radius:13px;background:#ffffff20; font-size:18px; }
.fp-logo-name { font-size:19px; }
.fp-logo-sub,.fp-nav-section { font-size:11px; }
.fp-logo-sub { color:#b9cbea; }
.fp-nav-section { padding:24px 24px 8px; color:#b9cbea; }
.fp-nav-item { padding:12px 14px;margin:3px 12px;font-size:14px;border-radius:9px; }
.fp-nav-item.active { background:#ffffff18;box-shadow:inset 3px 0 #80b6ff; }
.fp-sidebar-footer { padding:16px 22px; }
.fp-user-email { font-size:12px; }
.fp-topbar { height:72px;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:0 32px;background:#fff;border-bottom:1px solid var(--fp-border); }
.fp-topbar-context { font-size:13px;color:var(--fp-sub);display:flex;align-items:center;gap:10px; }
.fp-topbar-entity { margin-left:6px;padding:3px 10px;border-radius:20px;background:#edf3ff;color:#285bbc;font-size:12px;font-weight:650; }
.fp-topbar-actions { display:flex;align-items:center;gap:18px; }
.fp-topbar a { text-decoration:none; }
.fp-topbar a:hover { text-decoration:underline; }
.fp-preview-banner { padding:9px 24px;text-align:center;background:#eaf0fc;color:#315791;font-size:12px;border-bottom:1px solid #d9e3f6; }
.fp-topbar .fp-menu-toggle { display:none; }
.fp-skip { position:fixed;top:-100px;left:16px;z-index:1000;background:#fff;padding:12px; }
.fp-skip:focus { top:8px; }
#fp-content { width:100%;min-width:0;max-width:1680px;margin:auto;padding:32px 36px 48px; }
.fp-panel { min-width:0; }
.fp-page-head { display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;margin-bottom:26px; }
.fp-eyebrow { text-transform:uppercase;font-size:11px;letter-spacing:.13em;font-weight:750;color:var(--fp-blue);margin-bottom:8px; }
.fp-actions { display:flex;align-items:center;gap:10px;flex-wrap:wrap; }
.btn,.auth-submit { border-radius:8px;font-size:13px;font-weight:650;padding:10px 16px; }
.btn-primary,.auth-submit { background:var(--fp-blue);border-color:var(--fp-blue);color:white;box-shadow:0 3px 8px #05966918; }
.btn-primary:hover { background:#047857;border-color:#047857; }
.btn-outline-secondary { border-color:#d5ddea;color:#34465f;background:#fff; }
.btn-outline-secondary:hover { background:#eef3fb;color:#17243b;border-color:#a7b8d0; }
.btn:disabled { opacity:.55;cursor:not-allowed; }
.btn-icon { width:36px;height:36px;display:inline-grid;place-items:center; }
.form-control,.form-select { min-height:40px;border-radius:8px;border-color:#d9e1ed;font-size:14px; }
.form-label { font-size:12px;font-weight:650;color:#4b5e79; }
.card,.fp-panel { background:white;border:1px solid var(--fp-border);border-radius:14px;box-shadow:var(--fp-shadow);overflow:hidden; }
.card-body { padding:24px; }
.fp-panel-head { display:flex;align-items:center;justify-content:space-between;gap:12px;padding:22px 24px;border-bottom:1px solid #edf0f5; }
.fp-panel-head h2 { margin:0; }
.fp-panel-body { padding:24px; }
.fp-metrics { display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin-bottom:24px; }
.fp-metric { position:relative;display:block;padding:23px;background:#fff;border:1px solid var(--fp-border);border-radius:13px;text-decoration:none;color:var(--fp-text);box-shadow:var(--fp-shadow);text-align:left; }
button.fp-metric { width:100%; }
.fp-metric:hover { border-color:#9cb6ed;transform:translateY(-1px);color:var(--fp-text); }
.fp-metric-label { color:var(--fp-sub);font-size:13px;display:block;margin-bottom:16px; }
.fp-metric-value { font-size:32px;letter-spacing:-.045em;font-weight:750;display:block;line-height:1.2; }
.fp-metric-foot { font-size:12px;color:var(--fp-sub);display:block;margin-top:10px; }
.fp-metric-icon { float:right;background:#ecfdf5;color:#059669;width:36px;height:36px;border-radius:10px;display:grid;place-items:center; }
.fp-metric.warning .fp-metric-icon { background:#fff5e5;color:#a16000; }
.fp-dashboard-grid { display:grid;grid-template-columns:minmax(0,1.65fr) minmax(280px,1fr);gap:24px;margin-bottom:24px; }
.fp-status { display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border-radius:6px;font-size:12px;font-weight:600;line-height:1.4;white-space:nowrap;background:#edf0f5;color:#55637a; }
.fp-status.success { background:#e8f6ef;color:#19734a; }.fp-status.danger { background:#fff0ee;color:#b2362d; }.fp-status.warning { background:#fff5e3;color:#925600; }.fp-status.info { background:#edf3ff;color:#285bbc; }
.badge { font-size:12px!important;text-transform:none;letter-spacing:0; }
.fp-alert-item { display:flex;align-items:flex-start;gap:12px;padding:16px 0;border-bottom:1px solid #edf0f5;color:var(--fp-text);text-decoration:none; }
.fp-alert-item:last-child { border-bottom:0; }
.fp-alert-item p { font-size:13px;color:var(--fp-sub);margin:5px 0 0; }
.fp-alert-item>i { color:#b36e09;font-size:19px; }
.fp-chart { height:220px;display:flex;gap:10px;align-items:stretch;padding-top:22px; }
.fp-chart-month { flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:9px; }
.fp-chart-bars { flex:1;display:flex;align-items:flex-end;justify-content:center;gap:4px;width:100%;border-bottom:1px solid #dfe7f4; }
.fp-chart-bar { width:28%;max-width:28px;background:#2d63df;border-radius:4px 4px 0 0;min-height:0; }
.fp-chart-bar.received { background:#9fb9f3; }
.fp-chart-month span { font-size:12px;color:var(--fp-sub); }
.fp-legend { display:flex;gap:18px;font-size:12px;color:var(--fp-sub);margin-top:14px; }
.fp-legend i { display:inline-block;width:9px;height:9px;background:#2d63df;border-radius:3px;margin-right:5px; }.fp-legend .received { background:#9fb9f3; }
.fp-filterbar { display:flex;gap:12px;flex-wrap:wrap;align-items:end;padding:20px 24px;background:#fff;border-bottom:1px solid var(--fp-border); }
.fp-filterbar label { display:block;font-size:12px;font-weight:650;margin-bottom:6px;color:var(--fp-sub); }
.fp-filterbar .fp-search-field { flex:1;min-width:190px; }
.fp-filterbar .fp-field { min-width:128px;flex:0 1 155px; }
.fp-filterbar .fp-field-wide { min-width:165px;flex:0 1 230px; }
.fp-chip-row { display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:12px 24px;background:#f9fbfe; }
.fp-chip { border:1px solid #dbe5f8;color:#315caa;background:#edf3ff;border-radius:20px;padding:5px 12px;font-size:12px; }
.fp-table-wrap { overflow:auto;max-height:620px; }
.table { margin:0; }
.table th { font-size:11px!important;letter-spacing:.045em;padding:13px 16px;background:#f8faff!important;position:sticky;top:0;z-index:1;white-space:nowrap; }
.table td { font-size:13px;padding:16px;border-color:#edf0f5; }
.table tbody tr:hover { background:#f8faff; }
.table td small { display:block;color:var(--fp-sub);margin-top:4px;font-size:12px; }
.fp-sort { border:0;background:none;color:inherit;font:inherit;letter-spacing:inherit;text-transform:inherit;padding:0;display:inline-flex;align-items:center;gap:7px; }
.fp-document-link { color:#244774;font-weight:700;text-decoration:none; }
.fp-document-link:hover { color:var(--fp-blue);text-decoration:underline; }
.fp-pagination { padding:16px 24px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--fp-border);font-size:12px;color:var(--fp-sub);flex-wrap:wrap; }
.fp-compact .table td { padding:9px 16px; }
.fp-empty { padding:38px 24px;text-align:center; }.fp-empty h3 { margin:16px 0 8px; }.fp-empty p { color:var(--fp-sub);max-width:430px;margin:0 auto 16px;font-size:13px; }
.fp-empty-icon { display:inline-grid;place-items:center;width:56px;height:56px;border-radius:16px;background:#edf3fc;color:#6784b5;font-size:25px; }
.fp-loading { padding:28px;background:white;border:1px solid var(--fp-border);border-radius:14px; }
.fp-skeleton { height:18px;width:100%;margin:15px 0;background:linear-gradient(90deg,#edf1f7,#f8faff,#edf1f7);background-size:200% 100%;animation:fp-shimmer 1.4s infinite;border-radius:6px; }.fp-skeleton.wide { height:80px; }.fp-skeleton.short { width:55%; }
@keyframes fp-shimmer { to { background-position:-200% 0; } }
.fp-tabs { gap:22px;overflow-x:auto; }.fp-tab { font-size:14px;padding:12px 1px;white-space:nowrap; }.fp-tab.active { font-weight:750; }
.fp-breadcrumb { display:flex;gap:8px;font-size:12px;color:var(--fp-sub);margin-bottom:18px; }.fp-breadcrumb a { text-decoration:none; }
.fp-detail-grid { display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:24px;align-items:start; }
.fp-document { padding:36px;background:#fff; }.fp-document .fp-document-heading { display:flex;justify-content:space-between;gap:20px;border-bottom:2px solid #059669;padding-bottom:24px;margin-bottom:24px; }.fp-document h2 { font-size:24px; }.fp-document .fp-parties { display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-bottom:30px; }.fp-document-total { text-align:right;border-top:1px solid var(--fp-border);padding-top:20px;margin-top:16px; }.fp-document-total strong { display:block;font-size:27px;margin-top:5px; }
.fp-paper-wrap { background:#eef2f7;padding:24px 16px 4px; }
.fp-detail-meta { padding:22px; }.fp-detail-meta dl { margin:0; }.fp-detail-meta dt { font-size:12px;color:var(--fp-sub);font-weight:500;margin-top:16px; }.fp-detail-meta dd { margin-top:5px;overflow-wrap:anywhere; }
.fp-event-list { list-style:none;padding:0;margin:0; }.fp-event-list>li { position:relative;border-left:2px solid #dfe8f8;padding:0 0 28px 25px;margin-left:10px; }.fp-event-list>li:before { content:'';position:absolute;width:12px;height:12px;background:#3a6fe0;border:3px solid #e1ebff;border-radius:50%;left:-7px;top:5px; }.fp-event-list time { display:block;color:var(--fp-sub);font-size:12px;margin:6px 0; }.fp-event-list p { font-size:13px; }.fp-event-list pre { background:#f6f8fc;padding:12px;max-height:300px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px; }
.fp-preferences { position:relative; }.fp-preferences>summary { list-style:none;cursor:pointer; }.fp-preferences[open] .fp-preference-body { position:absolute;right:0;top:46px;width:280px;z-index:20;background:white;border:1px solid var(--fp-border);box-shadow:0 12px 40px #17243b25;border-radius:12px;padding:20px; }.fp-preference-body label { display:flex;align-items:center;gap:10px;margin:12px 0;font-size:13px; }
.fp-note { color:var(--fp-sub);font-size:12px;margin:14px 0; }.fp-error { border:1px solid #f0c8c4;background:#fff4f2;color:#90372e;border-radius:10px;padding:16px;display:flex;align-items:center;gap:16px;justify-content:space-between;margin-bottom:20px; }
.fp-customer-grid { display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px; }.fp-customer-card { padding:24px; }.fp-customer-card h2 { margin:14px 0 8px; }.fp-customer-card p { color:var(--fp-sub);font-size:13px; }.fp-avatar { display:grid;place-items:center;width:44px;height:44px;border-radius:12px;background:#ecfdf5;color:#059669;font-size:18px;font-weight:700; }
.fp-company-stats { display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:18px;padding-top:18px;border-top:1px solid var(--fp-border); }.fp-company-stats div { min-width:0; }.fp-company-stats span,.fp-company-stats small { display:block;color:var(--fp-sub);font-size:11px; }.fp-company-stats strong { display:block;margin-top:4px;font-size:22px;line-height:1.1; }
.fp-wizard-nav { display:flex;gap:8px;padding:14px 18px;background:white;border:1px solid var(--fp-border);border-radius:12px;margin-bottom:22px;overflow:auto; }.fp-wizard-nav button { display:flex;gap:8px;align-items:center;border:0;background:none;color:var(--fp-sub);padding:8px 14px;white-space:nowrap; }.fp-wizard-nav button.active { color:var(--fp-blue);background:#ecfdf5;border-radius:8px;font-weight:700; }.fp-wizard-nav span { display:grid;place-items:center;background:#e7edf7;border-radius:50%;width:25px;height:25px; }
.fp-sticky-summary { position:sticky;bottom:12px;background:#fff;border:1px solid #cddbf3;box-shadow:0 5px 30px #142f5b18;border-radius:12px;padding:18px 22px;display:flex;align-items:center;justify-content:space-between;gap:16px;z-index:3;margin-top:18px; }.fp-sticky-summary strong { font-size:23px; }.fp-sticky-summary small { color:var(--fp-sub);display:block; }
:focus-visible { outline:3px solid #69a0fb!important;outline-offset:3px; }.fp-menu-backdrop { display:none; }
h1[tabindex="-1"]:focus { outline:none!important; }
#blazor-error-ui { display:none;position:fixed;bottom:0;left:0;right:0;padding:16px 24px;background:#fff1db;color:#794b09;z-index:1000;box-shadow:0 -3px 20px #182b5018; }
@media(max-width:900px) { .fp-topbar .fp-menu-toggle { display:inline-grid; } }
@media(max-width:1100px) { .fp-metrics { grid-template-columns:repeat(2,minmax(0,1fr)); }.fp-dashboard-grid { grid-template-columns:1fr; }.fp-detail-grid { grid-template-columns:1fr; }.fp-customer-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } #fp-content { padding:26px 24px; } }
@media(max-width:900px) { #fp-wrap { flex-direction:row; }#fp-sidebar { position:fixed;top:0;bottom:0;left:0;width:248px;min-width:248px;height:100dvh;flex-direction:column;align-items:stretch;transform:translateX(-100%);transition:transform .18s;z-index:400; }body.fp-menu-open #fp-sidebar { transform:translateX(0); }body.fp-menu-open .fp-menu-backdrop { display:block;position:fixed;inset:0;background:#10234c70;border:0;z-index:399; }#fp-sidebar .fp-nav { display:block;padding:8px 0;overflow:auto; }#fp-sidebar .fp-nav-section { display:block; }#fp-sidebar .fp-nav-item { margin:3px 12px; }#fp-sidebar .fp-logo-area { padding:24px 20px; }#fp-sidebar .fp-sidebar-footer { padding:20px; }#fp-sidebar .fp-user-info { display:block; }#fp-main { width:100%; }.fp-menu-toggle { display:inline-grid; }.fp-topbar { padding:0 20px;height:64px; }.fp-topbar-context>span { display:none; }.fp-topbar-actions { gap:12px;font-size:12px; } }
@media(max-width:600px) { #fp-content { padding:22px 14px; }.fp-metrics { gap:10px; }.fp-metric { padding:16px; }.fp-metric-value { font-size:26px; }.fp-metric-icon { width:28px;height:28px; }.fp-panel-head,.fp-panel-body,.fp-filterbar { padding:18px; }.fp-filterbar .fp-field { flex:1 1 120px; }.fp-document { padding:20px; }.fp-document .fp-parties { grid-template-columns:1fr; }.fp-customer-grid { grid-template-columns:1fr; }.fp-sticky-summary { flex-wrap:wrap; }.fp-topbar-actions .fp-topbar-search { display:none; }.fp-table-wrap { max-height:520px; }.fp-preferences[open] .fp-preference-body { right:0; }.fp-page-head { align-items:flex-start; } }
@media(prefers-reduced-motion:reduce) { *,*::before,*::after { animation:none!important;transition:none!important;scroll-behavior:auto!important; } }
@media print { #fp-sidebar,.fp-topbar,.fp-breadcrumb,.fp-actions,.fp-tabs,.fp-detail-meta,.fp-page-head,.fp-note { display:none!important; }#fp-main { margin:0!important; }#fp-content { padding:0; }.fp-detail-grid { display:block; }.fp-panel { border:0;box-shadow:none; }.fp-document { padding:0; }.fp-table-wrap { max-height:none;overflow:visible; }.fp-paper-wrap { background:none;padding:0; } }
