/* FinObra — identidade compartilhada, hierarquia e layout responsivo. */
/* Phase 4: Canonical Design Tokens defer to css/tokens.css (SSOT) */
.ui-workspace, .ui-portal, .ui-auth, .ui-public {
  --text3: #94A3B8; /* Preserved for WCAG AA compliance & Phase 3 ergonomics */
  --sidebar-w: 260px;
  --header-h: 64px;
}
html { text-size-adjust:100%; -webkit-text-size-adjust:100%; scrollbar-gutter:stable; }
body { font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; }
button,a,input,select,textarea,summary { -webkit-tap-highlight-color:transparent; }
:where(button,a,input,select,textarea,summary,[tabindex]):focus-visible { outline:3px solid var(--accent);outline-offset:3px; }
:where(button,a) { touch-action:manipulation; }
button:disabled { cursor:not-allowed;opacity:.55; }
.ui-icon { width:20px;height:20px;flex-shrink:0;vertical-align:middle; }
.ui-workspace .btn,.ui-portal .btn { min-height:40px;font-weight:700;box-shadow:none;line-height:1.3;white-space:normal;border-radius:var(--r-md); }
.ui-workspace .btn-primary,.ui-portal .btn-primary { background:var(--accent);color:#0A0A0A;border:1px solid transparent;box-shadow:none; }
.ui-workspace .btn-primary:hover { background:var(--accent-h);box-shadow:0 4px 16px var(--accent-glow); }
.ui-workspace .btn-secondary { background:var(--bg-secondary);border-color:var(--border-d);color:var(--text); }
.ui-workspace .btn-success { background:var(--accent);color:#0A0A0A;box-shadow:none; }
.ui-workspace .btn-danger { background:#FF3B3B;color:#fff;box-shadow:none; }
.ui-workspace .icon-btn { min-height:40px;min-width:40px;box-shadow:none;border-radius:var(--r-sm); }
.ui-workspace .page-title { font-size:clamp(1.35rem,1.8vw,1.8rem);font-weight:800;letter-spacing:-.035em;line-height:1.25; }
.ui-workspace .page-sub { font-size:.88rem;line-height:1.55;color:var(--text2); }
.ui-workspace .page-header { align-items:center;gap:16px;margin-bottom:24px; }
.ui-workspace .page-actions { align-items:center;gap:8px; }
.ui-workspace .card { background:var(--bg-card);padding:22px;border:1px solid var(--border-s);border-radius:var(--r-lg);box-shadow:none;min-width:0; }
.ui-workspace .card:hover { box-shadow:none;border-color:var(--border-d); }
.ui-workspace .card-title { font-weight:700;font-size:1rem;letter-spacing:-.015em; }
.ui-workspace .card-header { gap:12px;flex-wrap:wrap; }
.ui-workspace .form-control { background:var(--bg-input);border-color:var(--border-d);border-radius:var(--r-md);min-height:42px; }
.ui-workspace .form-label { color:var(--text2);font-weight:600; }
.ui-workspace .sidebar { background:var(--bg-primary);border-color:var(--border-s);height:100dvh; }
.ui-workspace .sidebar-logo { min-height:var(--header-h)!important;padding:18px!important; }
.workspace-brand { display:flex;align-items:center;gap:10px;min-width:0; }
.workspace-brand-mark { width:34px;height:38px;background:#1A1A1A;color:var(--accent);display:grid;place-items:center;border:1px solid var(--border-str);border-radius:var(--r-sm);flex-shrink:0; }
.workspace-brand-name { font-size:1.03rem;font-weight:800;letter-spacing:.02em;text-transform:uppercase; }
.workspace-brand-company { font-size:.73rem;color:var(--text3);max-width:142px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.ui-workspace .sidebar-nav { padding:8px 10px 16px; }
.ui-workspace .nav-section { font-size:.62rem;letter-spacing:.12em;font-weight:700;color:var(--text3);padding:20px 10px 8px;text-transform:uppercase; }
.ui-workspace .nav-item { display:flex;width:100%;border:0;background:transparent;text-align:left;font-family:inherit;border-radius:var(--r-sm);padding:10px;gap:10px;font-size:.83rem;font-weight:500;color:var(--text2);min-height:40px;transition:all var(--t); }
.ui-workspace .nav-item:hover { background:var(--bg-secondary);color:#fff; }
.ui-workspace .nav-item.active { background:rgba(198,255,0,0.08);color:var(--accent);border-left:3px solid var(--accent); }
.ui-workspace .nav-item.active::before { display:none; }
.ui-workspace .nav-item>span:first-child { display:inline-flex;justify-content:center;align-items:center; }
.ui-workspace .sidebar-foot { padding:10px;border-color:var(--border-s); }
.ui-workspace .user-card { width:100%;text-align:left;background:transparent;border:0;color:var(--text);font-family:inherit; }
.ui-workspace .user-av { background:#1A1A1A;color:var(--accent);border:1px solid var(--border-d);border-radius:var(--r-sm); }
.ui-workspace .main-header { height:var(--header-h);padding:0 28px;background:rgba(10,10,10,0.92);backdrop-filter:blur(20px);border-color:var(--border-s);gap:12px;box-shadow:none; }
.ui-workspace .header-title { font-size:.98rem;font-weight:700;letter-spacing:-.02em; }
.ui-workspace .header-sub { color:var(--text3);font-size:.72rem; }
.ui-workspace .header-global-search { min-height:40px;min-width:40px;background:var(--bg-secondary)!important;border-color:var(--border-d)!important;color:var(--text2);border-radius:var(--r-sm); }
.ui-workspace .header-suporte-btn { min-height:40px;min-width:40px;background:transparent!important;border-color:var(--border-d)!important;color:var(--text2)!important;border-radius:var(--r-sm); }
.ui-workspace .suporte-dropdown-menu { background:var(--bg-secondary)!important;border-color:var(--border-d)!important;border-radius:var(--r-md); }
.ui-workspace .main-content { width:calc(100% - var(--sidebar-w));padding:22px 28px 40px;max-width:none; }
.ui-workspace .sidebar-collapsed .main-content { width:100%; }
.workspace-context { display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 26px;padding-bottom:18px;border-bottom:1px solid var(--border-s); }
.workspace-context-label { font-size:.67rem;letter-spacing:.1em;color:var(--text3);font-weight:700; }
.workspace-context .obra-sel-btn { margin-right:auto;min-height:40px;background:var(--bg-secondary);border-color:var(--border-d);border-radius:var(--r-sm);max-width:360px; }
.workspace-context .obra-sel-label { max-width:260px; }
.workspace-context #sync-status-indicator { min-height:36px;cursor:pointer;border-radius:var(--r-sm); }
.ui-workspace .kpi-grid { grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:24px; }
.ui-workspace .kpi-card { padding:20px;min-width:0;background:var(--bg-card);border:1px solid var(--border-s);border-radius:var(--r-lg); }
.ui-workspace .kpi-card:hover { transform:none;box-shadow:none;border-color:var(--border-d); }
.ui-workspace .kpi-label { font-size:.67rem;letter-spacing:.075em;font-weight:700;color:var(--text3);margin:0 40px 14px 0;text-transform:uppercase; }
.ui-workspace .kpi-value { font-size:clamp(1.3rem,1.8vw,1.8rem);letter-spacing:-.04em;line-height:1.2;font-weight:700;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;color:var(--text); }
.ui-workspace .kpi-icon { width:30px;height:30px;top:16px;right:16px;border-radius:var(--r-sm); }
.ui-workspace .kpi-change { font-size:.74rem;color:var(--text3);line-height:1.45; }
.ui-workspace .g2,.ui-workspace .g3,.ui-workspace .g4 { gap:18px;min-width:0; }
.ui-workspace .g2>* { min-width:0; }
.ui-workspace .tbl-wrap,.ui-workspace .table-wrap { max-width:100%;overflow-x:auto;border:1px solid var(--border-s);border-radius:var(--r-md);overscroll-behavior-x:contain; }
.ui-workspace .table-scroll-region { scrollbar-width:auto;scrollbar-color:var(--border-str) var(--bg-primary);scroll-snap-type:none; }
.ui-workspace .table-scroll-region::-webkit-scrollbar { height:12px;width:12px; }
.ui-workspace .table-scroll-region::-webkit-scrollbar-track { background:var(--bg-primary);border-radius:4px; }
.ui-workspace .table-scroll-region::-webkit-scrollbar-thumb { background:var(--border-str);border:2px solid var(--bg-primary);border-radius:4px; }
.ui-workspace .table-scroll-region::-webkit-scrollbar-thumb:hover { background:var(--accent); }
.ui-workspace thead th { color:var(--text2);background:var(--bg-secondary);font-size:.68rem;letter-spacing:.07em;padding:13px 14px;text-transform:uppercase;font-weight:700; }
.ui-workspace tbody td { padding:13px 14px;font-size:.83rem;border-color:var(--border-s); }
.ui-workspace .filters-bar { gap:12px;padding:16px;background:var(--bg-card);border:1px solid var(--border-s);border-radius:var(--r-md); }
.ui-workspace .filters-bar>* { min-width:0; }
.ui-workspace .empty-state { padding:44px 20px!important; }
.ui-workspace .empty-state h3 { color:var(--text);font-size:1.08rem;font-weight:700; }
.ui-workspace .empty-state p { color:var(--text2);max-width:480px;margin:10px auto 20px; }
.ui-workspace .modal-overlay { background:rgba(0,0,0,0.75);backdrop-filter:blur(6px);padding:24px;z-index:1100; }
.ui-workspace .modal { border:1px solid var(--border-d);background:var(--bg-card);border-radius:var(--r-lg);max-height:90dvh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 16px 64px rgba(0,0,0,.85); }
.ui-workspace .modal-header { padding:20px 24px;gap:12px;flex-shrink:0;border-color:var(--border-s); }
.ui-workspace .modal-title { font-size:1.08rem;font-weight:700;letter-spacing:-.02em; }
.ui-workspace .modal-body { min-height:0;overflow-y:auto;padding:24px; }
.ui-workspace .modal-footer { padding:16px 24px;gap:10px;background:var(--bg-secondary);border-color:var(--border-s);flex-shrink:0; }
.ui-workspace .modal-close { min-width:40px;min-height:40px;border-radius:var(--r-sm); }
.ui-workspace.modal-open { overflow:hidden; }
.ui-workspace .toast-container { z-index:1200;max-width:min(440px,calc(100vw - 24px)); }
.mobile-workspace-nav { display:none; }
.ui-workspace .tabs { max-width:100%;overflow-x:auto;flex-wrap:nowrap;scrollbar-width:thin; }
.ui-workspace .tabs>* { flex-shrink:0; }
@media(min-width:1700px) {
  .ui-workspace .main-content { padding:28px 40px 48px; }
  .ui-workspace .kpi-grid { grid-template-columns:repeat(6,minmax(0,1fr)); }
}
@media(min-width:769px) and (max-width:1100px) {
  :root { --sidebar-w:214px; }
  .ui-workspace .main-header { padding:0 20px;gap:8px; }
  .ui-workspace .header-global-search span,.ui-workspace .header-global-search kbd { display:none; }
  .ui-workspace .header-suporte-btn span:not(:first-child) { display:none; }
  .ui-workspace .main-content { padding:20px; }
}
@media(max-width:768px) {
  :root { --header-h:60px; }
  html { scrollbar-gutter:auto; }
  .ui-workspace .main-header { left:0!important;padding:0 12px;gap:8px; }
  .ui-workspace .header-title { font-size:.92rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
  .ui-workspace .header-sub { display:none; }
  .ui-workspace .main-header>.hspacer { min-width:0; }
  .ui-workspace .header-global-search { display:inline-flex!important;justify-content:center;flex-shrink:0; }
  .ui-workspace .header-global-search span,.ui-workspace .header-global-search kbd { display:none; }
  .ui-workspace .header-suporte-btn { padding:8px!important;justify-content:center; }
  .ui-workspace .header-suporte-btn span:not(:first-child) { display:none; }
  .ui-workspace .suporte-dropdown-menu { position:fixed!important;top:64px!important;right:12px!important;max-width:calc(100vw - 24px); }
  .ui-workspace .main-content,.ui-workspace .sidebar-collapsed .main-content { margin-left:0!important;width:100%;padding:16px 16px calc(92px + env(safe-area-inset-bottom)); }
  .ui-workspace .sidebar { width:min(292px,86vw);height:100dvh;transform:translateX(-100%);z-index:1040; }
  .ui-workspace .sidebar.open { transform:translateX(0)!important; }
  .ui-workspace .sidebar-overlay.active { z-index:1030;backdrop-filter:blur(3px); }
  .ui-workspace .nav-item { min-height:44px; }
  .ui-workspace .sidebar-foot { padding-bottom:max(12px,env(safe-area-inset-bottom)); }
  .workspace-context { gap:8px;margin-bottom:20px;padding-bottom:14px; }
  .workspace-context-label { display:none; }
  .workspace-context .obra-sel-btn { max-width:65%;padding:8px 10px;min-height:42px; }
  .workspace-context .obra-sel-label { max-width:none;font-size:.79rem; }
  .workspace-context #sync-status-indicator { max-width:36%;font-size:.66rem!important;white-space:normal!important;text-align:left; }
  .ui-workspace .kpi-grid { grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:18px; }
  .ui-workspace .kpi-card { padding:14px; }
  .ui-workspace .kpi-label { font-size:.62rem;margin:0 0 12px;max-width:calc(100% - 24px);letter-spacing:.04em;min-height:2.7em; }
  .ui-workspace .kpi-value { font-size:clamp(1.12rem,4.5vw,1.55rem);margin-bottom:6px; }
  .ui-workspace .kpi-icon { top:12px;right:10px;width:23px;height:23px;border-radius:7px; }
  .ui-workspace .kpi-icon svg { width:14px;height:14px; }
  .ui-workspace .kpi-change { font-size:.67rem; }
  .ui-workspace .page-title { font-size:1.4rem; }
  .ui-workspace .page-sub { font-size:.82rem; }
  .ui-workspace .page-header { gap:14px;margin-bottom:18px; }
  .ui-workspace .page-actions { width:100%;display:flex!important;flex-wrap:wrap!important;gap:8px; }
  .ui-workspace .page-actions>.btn { flex:1 1 calc(50% - 8px);width:auto;min-width:0;padding:10px 12px;font-size:.8rem; }
  .ui-workspace .page-actions>.btn-primary { flex-basis:100%;order:-1; }
  .ui-workspace .btn,.ui-workspace .btn-sm,.ui-workspace .icon-btn,.ui-workspace .modal-close { min-height:44px; }
  .ui-workspace .icon-btn,.ui-workspace .modal-close { min-width:44px; }
  .ui-workspace .main-header .icon-btn,.ui-workspace .header-global-search,.ui-workspace .header-suporte-btn { min-width:40px;min-height:44px; }
  .ui-workspace .card { padding:16px;border-radius:14px; }
  .ui-workspace .g2,.ui-workspace .g3,.ui-workspace .g4 { grid-template-columns:minmax(0,1fr);gap:14px; }
  .ui-workspace .finance-kpis { grid-template-columns:repeat(2,minmax(0,1fr));gap:10px; }
  .ui-workspace .finance-actions>.btn-success,.ui-workspace .finance-actions>.btn-danger { order:-1; }
  .ui-workspace .page-header { align-items:stretch;text-align:left; }
  .ui-workspace .span2,.ui-workspace .span3 { grid-column:auto; }
  .ui-workspace .form-row { grid-template-columns:minmax(0,1fr); }
  .ui-workspace .form-control { font-size:16px;min-height:46px; }
  .ui-workspace .filters-bar { padding:12px; }
  .ui-workspace .modal-overlay { padding:0;align-items:flex-end; }
  .ui-workspace .modal { width:100%!important;max-width:100%!important;max-height:94dvh;border-radius:22px 22px 0 0; }
  .ui-workspace .modal-header { padding:16px 18px; }
  .ui-workspace .modal-body { padding:18px; }
  .ui-workspace .modal-footer { display:flex;flex-wrap:wrap;padding:14px 18px max(16px,env(safe-area-inset-bottom)); }
  .ui-workspace .modal-footer>.btn { flex:1 1 calc(50% - 10px);width:auto; }
  .ui-workspace .modal-footer>.btn-primary { order:-1; }
  .ui-workspace .toast-container { top:auto;bottom:calc(84px + env(safe-area-inset-bottom));left:12px;right:12px; }
  .mobile-workspace-nav { display:flex;position:fixed;left:0;right:0;bottom:0;background:#122127f5;backdrop-filter:blur(16px);border-top:1px solid #35504e;padding:7px 8px calc(7px + env(safe-area-inset-bottom));z-index:100;gap:4px; }
  .mobile-nav-item { display:flex;flex:1;flex-direction:column;justify-content:center;align-items:center;gap:4px;min-height:48px;min-width:0;border:0;background:transparent;color:var(--text3);font-size:.66rem;font-weight:600;border-radius:10px; }
  .mobile-nav-item.active { background:#234438;color:var(--accent2); }
  .ui-workspace table[data-mobile-cards] { display:block; }
  .ui-workspace table[data-mobile-cards] thead { position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%); }
  .ui-workspace table[data-mobile-cards] tbody { display:grid;gap:10px;padding:0; }
  .ui-workspace table[data-mobile-cards] tbody tr { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:14px;background:var(--bg-card);border-bottom:1px solid var(--border); }
  .ui-workspace table[data-mobile-cards] tbody td { display:block!important;padding:0!important;white-space:normal!important;min-width:0;max-width:none!important;overflow-wrap:anywhere;text-align:left!important;font-size:.8rem; }
  .ui-workspace table[data-mobile-cards] tbody td::before { content:attr(data-label);display:block;color:var(--text3);font-size:.62rem;font-weight:600;margin-bottom:4px;letter-spacing:.02em; }
  .ui-workspace table[data-mobile-cards] tbody td:last-child { grid-column:1/-1; }
  .ui-workspace table[data-mobile-cards] tbody td:last-child>div { flex-wrap:wrap;justify-content:flex-start!important; }
  .ui-workspace table[data-mobile-cards] tfoot { display:block; }
  .ui-workspace table[data-mobile-cards] tfoot tr { display:flex;flex-wrap:wrap; }
}
@media(max-width:360px) {
  .ui-workspace .main-content { padding-left:12px;padding-right:12px; }
  .ui-workspace .main-header { gap:4px;padding:0 8px; }
  .ui-workspace .header-title { max-width:106px; }
}



/* Entrada e páginas complementares: mesma paleta e controles. */
.ui-auth { background:#101c21;--text3:#9fb4b8;--text2:#bdcbd0; }
.ui-auth .panel-left { background:linear-gradient(145deg,#122c26,#1a3730); }
.ui-auth .grid-bg { opacity:.5; }
.ui-auth .orb { display:none; }
.ui-auth .panel-left-content { max-width:660px;width:100%;padding:clamp(32px,5vw,76px); }
.ui-auth .hero-logo-icon { animation:none;filter:none;width:64px;height:64px; }
.ui-auth .hero-logo-text .brand-name { font-size:2rem;letter-spacing:-.04em;background:none;color:#e7ecd7;-webkit-text-fill-color:#e7ecd7; }
.ui-auth .hero-title { font-size:clamp(1.8rem,3vw,3rem);font-weight:600;line-height:1.17;letter-spacing:-.05em; }
.ui-auth .panel-right { background:#101c21;border-left:1px solid #34473d;width:48%;min-width:440px; }
.ui-auth .panel-right::before { display:none; }
.ui-auth .form-wrap { max-width:400px;width:100%; }
.ui-auth .logo-row { margin-bottom:32px!important; }
.ui-auth .welcome-h { font-size:1.55rem;font-weight:650;letter-spacing:-.04em; }
.ui-auth .welcome-p { color:var(--text2);line-height:1.65;font-size:.9rem; }
.ui-auth .inp { border-color:#40555d;background:#17272e;color:#eff6f3;min-height:48px; }
.ui-auth .inp::placeholder { color:#a0b4bb; }
.ui-auth .btn-primary { min-height:48px;background:#8adfba;color:#123525;box-shadow:none;border-radius:10px;font-weight:650; }
.ui-auth .btn-google { min-height:48px;border-color:#486068;background:#1c2d34;color:#eaf4ef; }
.ui-auth .feat { border-color:#3a5447;background:#ffffff04;padding:14px;border-radius:10px; }
.ui-auth .feat-icon { background:#365846;box-shadow:none; }
.ui-auth .feat-text span { color:#b7cbbd;line-height:1.5; }
.ui-auth #register-modal>div,.ui-auth #recovery-modal>div { background:#15262d!important;border-color:#46616b!important;max-height:92dvh;overflow-y:auto; }
.ui-auth #register-modal input,.ui-auth #recovery-modal input { min-height:46px;font-size:16px; }
.ui-public { background:#0e1a20;color:#e7f0ed;--text3:#9fb4bc;--text2:#bdcdd0; }
.ui-public main { width:min(860px,calc(100% - 40px));margin-inline:auto; }
.ui-public header { background:#14272bf5!important;border-color:#3b514c!important; }
.ui-public h1 { letter-spacing:-.04em;line-height:1.2; }
.ui-public p,.ui-public li { line-height:1.85; }
.ui-public .card,.ui-public .main-box { background:#192b30;border-color:#3a5057; }
.ui-portal { background: var(--surface-base, #070d05); }
.ui-portal main { width:100%;max-width:1600px!important; }
@media(max-width:860px) {
  .ui-auth .panel-left { display:none; }
  .ui-auth .panel-right { width:100%;min-width:0;border:0;min-height:100dvh;padding:32px 24px; }
  .ui-auth .form-wrap { max-width:430px; }
}
@media(max-width:600px) {
  .ui-auth .panel-right { align-items:center;padding:28px 20px max(28px,env(safe-area-inset-bottom)); }
  .ui-auth .welcome-h { font-size:1.55rem; }
  .ui-auth #register-modal,.ui-auth #recovery-modal { padding:0!important;align-items:flex-end!important; }
  .ui-auth #register-modal>div,.ui-auth #recovery-modal>div { width:100%!important;max-width:none!important;max-height:94dvh;border-radius:22px 22px 0 0!important;padding:26px 20px max(24px,env(safe-area-inset-bottom))!important; }
  .ui-auth #register-form>div[style*="grid-template-columns"] { grid-template-columns:minmax(0,1fr)!important; }
  .ui-public main { width:calc(100% - 32px);padding:24px 0!important; }
  .ui-public .main-box { padding:22px 16px!important;margin:24px auto!important; }
  .ui-portal main { padding:20px 14px!important; }
  .ui-portal [style*="grid-template-columns:repeat(4"],.ui-portal [style*="grid-template-columns: repeat(4"] { grid-template-columns:repeat(2,minmax(0,1fr))!important; }
}
@media(max-width:600px) {
  .ui-workspace #sinapi-editor { width:100%!important;max-width:100%!important;overflow-y:auto!important;max-height:94dvh!important; }
  .ui-workspace #sinapi-editor>div { flex-shrink:0!important;min-width:0;max-width:100%; }
  .ui-workspace #sinapi-editor>.modal-body { flex:none!important;min-height:240px;max-height:55dvh;overflow:auto!important; }
  .ui-workspace #sinapi-editor .sinapi-editor-totals { width:100%;gap:16px!important; }
  .ui-workspace #sinapi-editor .sinapi-editor-totals>div { flex:1 1 130px; }
  .ui-workspace #sinapi-editor .sinapi-editor-totals>button { width:100%; }
}
@media(prefers-reduced-motion:reduce) {
  *,*::before,*::after { scroll-behavior:auto!important;animation-duration:.01ms!important;transition-duration:.01ms!important;animation-iteration-count:1!important; }
}
