/* Rota design system — offline system fonts, responsive for phone and desktop. */
:root{color-scheme:light;--ink:#163239;--ink-soft:#36545a;--muted:#7a8c8e;--teal:#25836e;--teal-dark:#155e54;--mint:#e8f3ee;--amber:#a96820;--amber-bg:#fff5e8;--red:#b54845;--red-bg:#fff0ef;--blue:#3978a0;--blue-bg:#eaf4fb;--line:#e4ece8;--paper:#fff;--canvas:#f4f7f5;--sidebar:#102b35;--shadow:0 12px 32px #153a3510;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}
*{box-sizing:border-box}html,body{min-height:100%;margin:0}body{background:var(--canvas);color:var(--ink);font-size:14px}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}.hide{display:none!important}#page-content{min-width:0}.app-shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;z-index:40;width:248px;background:var(--sidebar);color:#dce9e7;display:flex;flex-direction:column;padding:22px 14px 14px;box-shadow:5px 0 20px #09262a12}.brand{display:flex;align-items:center;gap:11px;padding:0 10px 24px;color:white}.brand-mark{width:38px;height:38px;display:grid;place-items:center;border-radius:12px;background:#3d9a7c;color:white;font-size:21px;font-weight:800;box-shadow:inset 0 0 0 1px #ffffff25}.brand strong{display:block;font-size:20px;letter-spacing:-.8px;line-height:1.1}.brand small{display:block;margin-top:4px;color:#91b0ad;font-size:8px;letter-spacing:1.1px;font-weight:700}.workspace-label{padding:0 11px 9px;color:#789794;font-size:8px;letter-spacing:1.1px;font-weight:800}.nav-list{overflow-y:auto;flex:1;padding-bottom:8px}.nav-group-label{padding:17px 11px 7px;color:#73908e;font-size:8px;letter-spacing:1.2px;font-weight:800}.nav-item{display:flex;align-items:center;gap:11px;width:100%;min-height:39px;border:0;border-radius:8px;padding:0 11px;margin:2px 0;background:transparent;color:#b9cfcc;text-align:left;font-size:11px;font-weight:600;transition:background .16s,color .16s}.nav-item:hover{background:#ffffff0c;color:white}.nav-item.active{background:#ffffff16;color:white;box-shadow:inset 3px 0 #55bd96}.nav-icon{width:17px;color:#80a8a1;text-align:center;font-size:15px}.nav-item.active .nav-icon{color:#77d1a9}.nav-count{min-width:18px;height:18px;display:grid;place-items:center;margin-left:auto;border-radius:99px;background:#ffffff16;color:#c9e0dc;font-size:9px}.sidebar-bottom{padding-top:10px;border-top:1px solid #ffffff17}.storage-status{display:flex;align-items:center;gap:9px;padding:12px 10px 10px;color:#e4efed}.status-dot{width:7px;height:7px;flex:0 0 auto;border-radius:50%;background:#55c693;box-shadow:0 0 0 4px #55c69318}.storage-status strong,.profile-button strong{display:block;font-size:9px;font-weight:700}.storage-status small,.profile-button small{display:block;margin-top:3px;color:#89a4a1;font-size:8px}.profile-button{display:flex;align-items:center;gap:9px;width:100%;border:0;border-radius:9px;padding:9px 10px;background:#ffffff09;color:#e2eeec;text-align:left}.profile-button:hover{background:#ffffff13}.avatar{width:27px;height:27px;display:grid;place-items:center;border-radius:50%;background:#d0e9df;color:#195b4f;font-size:11px;font-weight:800}.profile-menu{margin-left:auto;color:#90aaa7;font-size:16px}.main-area{min-height:100vh;margin-left:248px;min-width:0}.mobile-menu{display:none}.topbar{position:sticky;top:0;z-index:20;height:68px;display:flex;align-items:center;gap:14px;padding:0 34px;background:#ffffffed;border-bottom:1px solid var(--line);backdrop-filter:blur(12px)}.breadcrumb{display:flex;align-items:center;gap:9px;margin-right:auto;color:#829193;font-size:10px}.breadcrumb b{color:#ccd6d2;font-weight:500}.breadcrumb strong{color:var(--ink);font-size:10px;font-weight:700}.topbar-actions{display:flex;align-items:center;gap:14px}.period-control{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:9px}.period-control select{min-width:112px;border:1px solid var(--line);border-radius:7px;padding:8px 27px 8px 10px;background:white;color:var(--ink);font-size:10px}.icon-button{position:relative;width:34px;height:34px;border:1px solid var(--line);border-radius:9px;background:white;color:var(--ink-soft);font-size:15px}.icon-button:hover{background:#f2f7f4}.notification-button i{position:absolute;right:6px;top:5px;width:6px;height:6px;border-radius:50%;background:#e26f58}.mobile-menu{display:none}.page-content{width:100%;max-width:1550px;margin:0 auto;padding:32px 34px 52px}.page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin-bottom:24px}.page-heading h1{margin:3px 0 7px;color:var(--ink);font-size:25px;letter-spacing:-.7px;font-weight:750}.page-heading>div:first-child>p:last-child{max-width:680px;margin:0;color:var(--muted);font-size:11px;line-height:1.55}.eyebrow{margin:0;color:#53927b;font-size:8px;letter-spacing:1.35px;font-weight:800}.heading-actions{display:flex;align-items:center;gap:8px}.grid{display:grid;gap:15px}.metric-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin-bottom:16px}.metric-card{min-width:0;min-height:122px;padding:17px 17px 14px;border:1px solid var(--line);border-radius:12px;background:var(--paper);box-shadow:0 3px 12px #193e3710}.metric-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.metric-label{color:#718487;font-size:9px;font-weight:650}.metric-icon{width:28px;height:28px;display:grid;place-items:center;border-radius:9px;background:var(--mint);color:var(--teal);font-size:14px}.metric-icon.blue{background:var(--blue-bg);color:var(--blue)}.metric-icon.amber{background:var(--amber-bg);color:var(--amber)}.metric-icon.red{background:var(--red-bg);color:var(--red)}.metric-value{overflow:hidden;margin-top:11px;color:var(--ink);font-size:22px;font-weight:760;letter-spacing:-.7px;text-overflow:ellipsis;white-space:nowrap}.metric-foot{margin-top:6px;color:#91a0a1;font-size:8px;line-height:1.35}.trend-neutral{color:inherit}.dashboard-grid{grid-template-columns:minmax(0,1.55fr) minmax(255px,.8fr);margin-bottom:15px}.lower-grid{grid-template-columns:minmax(0,1.25fr) minmax(280px,.9fr)}.panel,.table-card{min-width:0;border:1px solid var(--line);border-radius:12px;background:var(--paper);box-shadow:0 3px 12px #193e3708}.panel{padding:19px}.panel-heading,.table-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.panel-heading{margin-bottom:14px}.panel-heading h2,.table-card-head h2{margin:0;color:#25434a;font-size:12px;font-weight:750}.panel-heading p{margin:5px 0 0;color:#89999a;font-size:9px;line-height:1.4}.panel-link{border:0;background:none;color:var(--teal);font-size:9px;font-weight:700;white-space:nowrap}.panel-link:hover,.text-button:hover{color:var(--teal-dark);text-decoration:underline}.chart-area{position:relative;height:205px;padding:9px 0 25px 42px}.chart-y{position:absolute;inset:8px auto 24px 0;display:flex;flex-direction:column;justify-content:space-between;color:#9aa7a8;font-size:8px}.chart-grid-lines{position:absolute;inset:11px 0 28px 42px;display:flex;flex-direction:column;justify-content:space-between;pointer-events:none}.chart-grid-lines span{border-top:1px dashed #e8eeeb}.bar-chart{position:relative;z-index:1;height:100%;display:flex;align-items:stretch;justify-content:space-around}.bar-group{height:100%;display:flex;flex:1;flex-direction:column;align-items:center;justify-content:flex-end;gap:7px}.bar-pair{height:100%;width:min(52px,75%);display:flex;align-items:flex-end;justify-content:center;gap:5px}.bar{display:block;width:13px;min-height:2px;border-radius:4px 4px 1px 1px;background:#63b394}.bar.expense{background:#e6ae68}.bar-label{color:#879697;font-size:8px;white-space:nowrap}.legend{display:flex;gap:16px;color:#7e8d8f;font-size:8px}.legend span{display:flex;align-items:center;gap:6px}.legend i{width:8px;height:8px;border-radius:3px;background:#63b394}.legend i.expense{background:#e6ae68}.profit-card{background:linear-gradient(145deg,#163d42,#12323a);color:#e7f2ef;border-color:#163d42}.profit-card .panel-heading h2{color:#fff}.profit-card .panel-heading p{color:#a1bcba}.mini-pill{border:1px solid #ffffff25;border-radius:99px;padding:5px 8px;color:#a9cfbf;font-size:8px;white-space:nowrap}.profit-main-label{display:block;margin-top:20px;color:#a4c0bc;font-size:9px}.profit-value{margin-top:4px;color:white;font-size:36px;font-weight:780;letter-spacing:-1.3px}.profit-divider{height:1px;margin:15px 0;background:#ffffff20}.profit-detail{display:flex;justify-content:space-between;gap:12px;padding:7px 0;color:#b2c9c6;font-size:9px}.profit-detail strong{color:#fff;font-weight:700;text-align:right}.alert-list{display:flex;flex-direction:column;gap:5px}.alert-row{display:flex;align-items:flex-start;gap:10px;padding:10px 0;border-bottom:1px solid #f0f3f1}.alert-row:last-child{border:0}.alert-symbol{width:25px;height:25px;flex:0 0 auto;display:grid;place-items:center;border-radius:8px;background:var(--amber-bg);color:var(--amber);font-size:12px}.alert-symbol.red{background:var(--red-bg);color:var(--red)}.alert-copy strong{display:block;color:#314e53;font-size:9px}.alert-copy p{margin:4px 0;color:#819193;font-size:8px;line-height:1.45}.alert-time{color:#ab7b49;font-size:7px}.table-card{overflow:hidden}.table-card-head{min-height:52px;padding:14px 17px;border-bottom:1px solid #edf1ef}.table-wrap{width:100%;overflow:auto}table{width:100%;border-collapse:collapse;text-align:left;font-size:9px}thead th{padding:11px 13px;background:#fafcfb;color:#869595;font-size:8px;font-weight:750;letter-spacing:.25px;white-space:nowrap}tbody td{padding:11px 13px;border-top:1px solid #f0f3f1;color:#5d7174;vertical-align:middle}tbody tr:hover{background:#fbfdfc}.cell-main{color:#29464b;font-weight:650}.cell-sub{display:block;margin-top:3px;color:#93a0a1;font-size:8px}.table-primary{display:flex;align-items:center;gap:8px}.monogram{width:24px;height:24px;display:grid;place-items:center;border-radius:50%;background:#e8f4ee;color:#377d68;font-size:9px;font-weight:750}.money{text-align:right;font-variant-numeric:tabular-nums;color:#29464b;font-weight:650}.row-actions{display:flex;justify-content:flex-end;align-items:center;gap:9px;white-space:nowrap}.text-button{border:0;padding:2px;background:transparent;color:#3e8372;font-size:8px;font-weight:700}.text-button.danger{color:#b65955}.badge{display:inline-flex;align-items:center;border-radius:99px;padding:4px 7px;background:#eef2f0;color:#718082;font-size:7px;font-weight:750;white-space:nowrap}.badge.good{background:#e7f4ed;color:#357a5e}.badge.warning{background:#fff3df;color:#a76b24}.badge.danger{background:#fff0ef;color:#b74b47}.badge.info{background:#eaf4fb;color:#407ea0}.badge.neutral{background:#eef1f0;color:#738181}.table-toolbar{display:flex;align-items:center;gap:9px;padding:12px 14px;border-bottom:1px solid #edf1ef}.search-box{display:flex;align-items:center;gap:8px;min-width:180px;max-width:330px;padding:0 10px;border:1px solid var(--line);border-radius:7px;background:white;color:#93a09f}.search-box input{width:100%;height:32px;border:0;outline:0;color:var(--ink);font-size:9px}.filter-select{min-height:32px;border:1px solid var(--line);border-radius:7px;padding:0 9px;background:#fff;color:#52696c;font-size:9px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:190px;padding:25px;text-align:center;color:#8a999a}.empty-icon{display:grid;place-items:center;width:40px;height:40px;margin-bottom:10px;border-radius:13px;background:#eef6f1;color:#4a9078;font-size:19px}.empty-state strong{color:#456066;font-size:11px}.empty-state p{max-width:330px;margin:6px 0 12px;font-size:9px;line-height:1.55}.primary-button,.secondary-button,.danger-button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:36px;border:1px solid transparent;border-radius:8px;padding:0 13px;font-size:9px;font-weight:750;transition:background .15s,border-color .15s,transform .15s}.primary-button{background:var(--teal);color:white;box-shadow:0 3px 8px #25836e25}.primary-button:hover{background:#1d725f;transform:translateY(-1px)}.secondary-button{border-color:#dce7e1;background:#fff;color:#3c6c62}.secondary-button:hover{border-color:#b9d5c8;background:#f4faf6}.danger-button{background:#b74e48;color:white}.danger-button:hover{background:#9e3d39}.primary-button.compact{min-height:36px}.icon-button:focus-visible,.nav-item:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #57b99a66;outline-offset:2px}.settings-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.setting-card{margin-bottom:14px}.setting-card h3{margin:0 0 6px;color:#29474c;font-size:12px}.setting-card>p{margin:0 0 14px;color:#819092;font-size:9px;line-height:1.55}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:11px 0;border-top:1px solid #edf1ef;color:#687d80;font-size:9px}.setting-row strong{color:#36545a;font-size:9px;text-align:right}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.field{display:flex;min-width:0;flex-direction:column;gap:6px}.field.full{grid-column:1/-1}.field label{color:#52696d;font-size:9px;font-weight:700}.field input,.field select,.field textarea{width:100%;min-height:36px;border:1px solid #dfe8e3;border-radius:7px;padding:8px 10px;background:white;color:#29454a;font-size:10px;outline:none}.field textarea{min-height:76px;resize:vertical}.field input:focus,.field select:focus,.field textarea:focus{border-color:#64ad93;box-shadow:0 0 0 3px #66b79518}.field-help{color:#879596;font-size:8px;line-height:1.45}.notice{border:1px solid #deebe3;border-radius:8px;padding:10px 12px;background:#f5faf6;color:#55756b;font-size:9px;line-height:1.55}.notice.warning{border-color:#f2dfbd;background:#fff9ed;color:#8b682f}.notice strong{font-weight:750}.maintenance-row{display:grid;grid-template-columns:minmax(160px,1.4fr) minmax(110px,.8fr) minmax(120px,.9fr) minmax(85px,.55fr) minmax(110px,.65fr);align-items:center;gap:10px;padding:12px 14px;border-top:1px solid #edf1ef;color:#62777a;font-size:9px}.maintenance-head{background:#fafcfb;color:#819193;font-size:8px;font-weight:750}.maintenance-name{display:block;color:#29474c;font-weight:700}.maintenance-meta{display:block;margin-top:4px;color:#8b999a;font-size:8px;line-height:1.35}.tabs{display:flex;gap:7px;margin:14px 0 10px}.tab-button{border-bottom:2px solid #41967b;padding:8px 10px;color:#367762;font-size:9px;font-weight:750}.dropzone{position:relative;display:flex;min-height:190px;flex-direction:column;align-items:center;justify-content:center;border:1.5px dashed #b9d7c9;border-radius:11px;padding:18px;background:#f8fcf9;text-align:center;cursor:pointer}.dropzone:hover,.dropzone.drag{border-color:#4a9c7e;background:#f0f9f3}.dropzone strong{margin-top:8px;color:#42635e;font-size:10px}.dropzone p{max-width:330px;margin:6px 0 12px;color:#819392;font-size:8px;line-height:1.55}.dropzone input[type=file]{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.progress-track{height:4px;overflow:hidden;border-radius:9px;background:#eaf0ed}.progress-track i{display:block;width:0;height:100%;border-radius:inherit;background:#49a182;transition:width .3s}.import-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:13px}.import-summary>div{border:1px solid var(--line);border-radius:8px;padding:10px;text-align:center}.import-summary strong{display:block;color:#31534f;font-size:16px}.import-summary span{display:block;margin-top:3px;color:#849395;font-size:8px}.modal-root:empty{display:none}.modal-backdrop{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;padding:22px;background:#102b35a8;backdrop-filter:blur(3px)}.modal{width:min(860px,100%);max-height:90vh;display:flex;flex-direction:column;overflow:hidden;border:1px solid #e4ece8;border-radius:14px;background:#fff;box-shadow:0 24px 80px #102b3540}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:17px 20px;border-bottom:1px solid #edf1ef}.modal-header h2{margin:0;color:#29474c;font-size:14px}.modal-close{width:30px;height:30px;border:0;border-radius:7px;background:#f2f6f4;color:#627477;font-size:19px}.modal-body{overflow:auto;padding:19px 20px}.modal-footer{display:flex;justify-content:flex-end;gap:8px;padding:13px 20px;border-top:1px solid #edf1ef}.toast-region{position:fixed;right:18px;bottom:18px;z-index:80;display:flex;flex-direction:column;gap:8px}.toast{max-width:min(420px,calc(100vw - 36px));border:1px solid #dce8e2;border-radius:9px;padding:11px 14px;background:#163a3e;color:#fff;box-shadow:var(--shadow);font-size:10px}.toast.error{background:#9d3e3b}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(ellipse at 50% 0,#dceddf 0,transparent 50%),#f2f6f4}.login-card{width:min(440px,100%);border:1px solid var(--line);border-radius:16px;padding:29px 31px;background:#fff;box-shadow:0 24px 70px #183b3c12}.login-mark{margin-bottom:21px}.login-card h1{margin:0;color:#17333a;font-size:22px}.login-copy{margin:8px 0 18px;color:#839092;font-size:11px;line-height:1.6}.login-card .field{margin-top:11px}.login-actions{display:flex;gap:8px;margin:18px 0 13px}.login-actions>*{flex:1}.login-card>small{display:block;color:#8c9a9a;font-size:9px;line-height:1.5}.auth-required .sidebar,.auth-required .topbar,.auth-required .mobile-overlay{display:none!important}.auth-required .main-area{margin:0}.auth-required .page-content{max-width:none;padding:0}.settings-grid .heading-actions{flex-wrap:wrap}.setting-card .field{min-width:0}
@media(max-width:1100px){.metric-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.topbar{padding:0 25px}.page-content{padding:26px 25px 48px}.dashboard-grid{grid-template-columns:minmax(0,1.2fr) minmax(240px,.8fr)}}
@media(max-width:760px){.sidebar{transform:translateX(-100%);transition:transform .22s ease;width:270px}.sidebar.open{transform:translateX(0)}.mobile-overlay.show{display:block;position:fixed;inset:0;background:#0b1e22a8;z-index:30}.main-area{margin-left:0}.topbar{height:62px;padding:0 15px}.mobile-menu{display:block}.breadcrumb{margin-right:auto;margin-left:2px}.topbar-actions{gap:8px}.period-control>span,.notification-button{display:none}.period-control select{max-width:120px;min-width:0}.primary-button.compact{width:36px;height:36px;padding:0}.primary-button.compact span{display:none}.page-content{padding:22px 15px 40px}.page-heading{align-items:flex-start;flex-direction:column;margin-bottom:18px}.page-heading h1{font-size:20px}.page-heading p{max-width:320px;line-height:1.5}.heading-actions .secondary-button{display:none}.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.metric-card{min-height:106px;padding:13px}.metric-value{font-size:18px}.metric-label{font-size:9px}.dashboard-grid,.lower-grid,.settings-grid{grid-template-columns:1fr}.panel{padding:16px}.chart-area{height:175px}.lower-grid{gap:12px}.maintenance-row{grid-template-columns:minmax(110px,1.2fr) minmax(70px,.8fr) 65px;gap:7px;padding:11px 9px;font-size:9px}.maintenance-row>*:nth-child(3),.maintenance-head>*:nth-child(3){display:none}.form-grid{grid-template-columns:1fr}.field.full{grid-column:auto}.modal-backdrop{padding:10px;align-items:flex-end}.modal{max-height:92vh;border-radius:14px 14px 8px 8px}.modal-body{padding:17px}.modal-header{padding:17px}.modal-footer{padding:13px 17px}.import-summary{grid-template-columns:repeat(2,1fr)}.report-kpis{grid-template-columns:1fr}.table-toolbar{flex-wrap:wrap;gap:6px}.search-box{width:100%;max-width:none;flex:1}.table-card-head{padding:14px}.profit-value{font-size:24px}.row-actions{gap:6px}.page-heading .heading-actions{width:100%}.page-heading .heading-actions .secondary-button{display:inline-flex}.table-wrap table{min-width:640px}.login-card{padding:24px 21px}}
@media(max-width:390px){.topbar{gap:7px}.breadcrumb{font-size:9px}.breadcrumb strong{font-size:9px}.topbar-actions{gap:5px}.period-control select{max-width:93px;padding-left:7px}.metric-card{padding:11px}.metric-value{font-size:16px}.metric-foot{font-size:7px}.page-content{padding-right:11px;padding-left:11px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
.nav-item[hidden]{display:none!important}
.bank-reconciliation-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:760px){.bank-reconciliation-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}

