/* SmallBooks — app-specific additions on top of sap-theme.css */

.sap-titlebar b{font-weight:700}
.sap-titlebar .tb-sep{opacity:.6}
.sap-titlebar .sync{margin-left:auto;display:flex;align-items:center;gap:6px;background:none;border:0;color:#fff;
  font:inherit;font-size:11px;cursor:pointer;padding:0 4px}
.sap-titlebar .tb-btn{width:22px;height:18px;background:linear-gradient(180deg,#e6eef8,#bccee2);border:1px solid #1f4f80;
  border-radius:2px;color:#153a63;font-size:13px;line-height:1;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center}
.sap-titlebar .tb-btn:hover{background:linear-gradient(180deg,#fff,#d3e0f0)}
.sap-titlebar .tb-btn:disabled{opacity:.6;cursor:default}
.sap-titlebar .tb-btn.spin{animation:sb-spin .8s linear infinite}
@keyframes sb-spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.sap-titlebar .tb-btn.spin{animation:none}}
.dot{width:8px;height:8px;border-radius:50%;background:#cfe1f5;display:inline-block;border:1px solid rgba(0,0,0,.2)}
.dot.ok{background:#7fe08a}.dot.err,.dot.conflict{background:#ff8a8a}.dot.busy,.dot.pending{background:#ffd36b}

.sap-progtitle{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.cmd{display:flex;gap:4px;align-items:center;margin-left:auto;font-weight:400}
.cmd input{width:190px;padding:2px 6px;font-size:12px}

.sap-statusbar .sp{flex:1}
.sb-msg.ok::before{content:"\2714  ";color:var(--green);font-weight:700}
.sb-msg.err{color:#a00;font-weight:700}
.sb-msg.err::before{content:"\2716  ";color:var(--red)}
.sb-msg.warn::before{content:"\26A0  ";color:#b07800}

.toolbar{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-bottom:10px}
.toolbar .sp{flex:1}
.row{display:flex;gap:6px;align-items:center}
.row > select,.row > input{flex:1;min-width:0}
a{color:var(--link)}
.neg{color:var(--red)}
.empty{padding:18px !important;text-align:center;color:var(--muted)}
.note{background:#fff8e1;border:1px solid #e6cf8a;padding:6px 10px;margin-bottom:10px}
.note.info{background:#eaf2fb;border-color:var(--line)}
.acts{white-space:nowrap;text-align:right}
.acts .btn{margin-left:3px}
.mono{font-family:Consolas,Menlo,monospace}

/* status badges */
.st{display:inline-block;padding:1px 7px;font-size:10px;font-weight:700;border-radius:2px;border:1px solid}
.st-draft{color:#555;background:#eee;border-color:#bbb}
.st-open{color:#1a4d80;background:#e3eefa;border-color:#9db6d4}
.st-partial{color:#8a5a00;background:#fff4d6;border-color:#e0c27a}
.st-paid{color:var(--green);background:var(--ok-bg);border-color:#9ccc9e}
.st-overdue{color:#b00;background:var(--bad-bg);border-color:#e3a3a3}
.st-void{color:#777;background:#f3f3f3;border-color:#ccc;text-decoration:line-through}
.st-inactive{color:#777;background:#f3f3f3;border-color:#ccc}

/* forms */
.grid2{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px 14px}
.fld{display:flex;flex-direction:column;gap:3px;min-width:0}
.fld.wide{grid-column:1/-1}
.fld input:not([type=checkbox]),.fld select,.fld textarea{width:100%}
.fld textarea{min-height:54px;resize:vertical}
.req::after{content:" *";color:var(--red)}
.chk{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink)}
fieldset.plain{border:0;margin:0;padding:0;min-width:0}
input[readonly]{background:#f4f6f8}

/* sub-tabs (reports, contacts) */
.subnav{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:10px}
.subnav .navbtn{padding:4px 12px}

/* modal (SAP popup) */
.overlay{position:fixed;inset:0;background:rgba(20,40,70,.35);display:flex;align-items:flex-start;justify-content:center;
  padding:36px 16px;overflow:auto;z-index:50}
.modal{background:var(--bg);border:1px solid #2e69a6;box-shadow:0 8px 30px rgba(0,0,0,.35);width:580px;max-width:100%;
  display:flex;flex-direction:column}
.modal.wide{width:1120px}
.modal .mh{background:linear-gradient(180deg,#6ba0d8,#2e69a6);color:#fff;padding:5px 8px;display:flex;align-items:center;font-weight:700}
.modal .mh .x{margin-left:auto;width:20px;height:18px;background:linear-gradient(180deg,#e6eef8,#bccee2);border:1px solid #1f4f80;
  border-radius:2px;color:#153a63;cursor:pointer;line-height:1;padding:0}
.modal .mb{padding:12px}
.modal .mf{display:flex;gap:6px;justify-content:space-between;padding:8px 12px;border-top:1px solid var(--line2);
  background:linear-gradient(180deg,#eef2f6,#d7dee6);flex-wrap:wrap}
.modal .mf > div{display:flex;gap:6px;flex-wrap:wrap}
.merr{display:none;background:var(--bad-bg);border:1px solid #e3a3a3;color:#900;padding:6px 8px;margin-bottom:10px;font-weight:700}
.merr.on{display:block}
.modal .card{margin-bottom:0}

/* document line editor */
table.lines td{vertical-align:middle;padding:3px 4px}
table.lines input:not([type=checkbox]),table.lines select{width:100%;padding:3px 5px}
table.lines td.num input{text-align:right}
.doc-bottom{display:flex;gap:16px;margin-top:12px;align-items:flex-start;flex-wrap:wrap}
.doc-bottom .fld{flex:1;min-width:240px}
table.totals{width:auto;min-width:280px;margin-left:auto;background:#fff;border:1px solid var(--line)}
table.totals td{border-right:0;padding:4px 10px}
table.totals tr.g td{font-weight:700;color:var(--head);border-top:1px solid var(--alvline);font-size:13px}
table.totals tbody tr:nth-child(even) td,table.totals tbody tr:hover td{background:#fff}
.diff-bad{color:var(--red);font-weight:700}
.diff-ok{color:var(--green);font-weight:700}

/* reports */
table.rpt td.ind{padding-left:22px}
table.rpt tr.sec td{font-weight:700;color:var(--head);background:#eef4fb !important}
table.rpt tr.sub td{font-weight:700}
table.rpt tr.tot td{font-weight:700;border-top:2px solid var(--alvline);background:#f6f9fd !important}
table.rpt tr.chk td{font-size:11px;color:var(--muted)}
.rpt-head{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.rpt-head .t{font-size:14px;font-weight:700;color:var(--head)}
tfoot td{font-weight:700;background:#f2f6fb;border-top:1px solid var(--alvline)}

.cols2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.cols2 > .card{min-width:0}
@media (max-width:980px){.cols2{grid-template-columns:1fr}}
.kpi .box .val.neg{color:var(--red)}
.kpi .box .sub{font-size:11px;color:var(--muted);margin-top:2px}
.kpi .box.click{cursor:pointer}
.kpi .box.click:hover{background:#f6faff}

th.sortable{cursor:pointer;user-select:none}
th.sortable:hover{background:linear-gradient(180deg,#f6f9fd,#d9e6f4)}

@media (max-width:640px){
  .wrap{padding:10px}
  .cmd{margin-left:0;width:100%}
  .cmd input{flex:1;width:auto}
  .overlay{padding:0}
  .modal,.modal.wide{width:100%;min-height:100%;border:0}
  .mstack tfoot,.mstack tfoot tr{display:block}
  .mstack tfoot td{display:flex;justify-content:space-between;border:0}
  .mstack tfoot td:empty{display:none}
  .acts{text-align:left}
  table.totals{width:100%}
  .sap-titlebar .tb-sep,#tb-company{display:none}
}

/* user chip in title bar */
.sap-titlebar .tb-user{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.45);border-radius:2px;color:#fff;font:inherit;
  font-size:11px;padding:0 7px;height:18px;cursor:pointer;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sap-titlebar .tb-user:hover{background:rgba(255,255,255,.2)}
[hidden]{display:none !important}

/* role & user badges */
.st-role-admin{color:#123c66;background:#dbe8f7;border-color:#7fa6d3}
.st-role-accountant{color:#1f5e22;background:#e2f4e2;border-color:#9ccc9e}
.st-role-viewer{color:#555;background:#f0f0f0;border-color:#bbb}
.temp-pw{font-size:24px;letter-spacing:2px;padding:14px;background:#fff;border:1px dashed var(--accent);text-align:center;user-select:all;margin:10px 0}

/* SAP-style log-on screen */
.auth{position:fixed;inset:0;z-index:200;background:linear-gradient(180deg,#e3ebf4,#b4c8df);display:flex;align-items:center;justify-content:center;
  padding:16px;overflow:auto}
.auth-box{width:700px;max-width:100%;background:var(--bg);border:1px solid #2e69a6;box-shadow:0 12px 40px rgba(0,0,0,.3);margin:auto}
.auth-head{background:linear-gradient(180deg,#6ba0d8,#2e69a6);color:#fff;padding:6px 10px;font-weight:700;display:flex;gap:8px;align-items:center}
.auth-body{display:grid;grid-template-columns:210px 1fr;min-height:280px}
.auth-side{background:linear-gradient(160deg,#2e69a6,#123c66);color:#fff;padding:22px 18px;display:flex;flex-direction:column;gap:8px}
.auth-side .logo{font-size:24px;font-weight:700;letter-spacing:.3px}
.auth-side .co{font-size:12px;opacity:.9;word-break:break-word}
.auth-side .fine{margin-top:auto;font-size:10.5px;opacity:.7}
.auth-form{padding:18px 20px;display:flex;flex-direction:column;gap:9px;min-width:0}
.auth-form .intro{margin:0 0 4px;line-height:1.45}
.auth-row{display:grid;grid-template-columns:130px 1fr;align-items:center;gap:8px}
.auth-row > label{font-size:12px;color:var(--ink);text-align:right}
.auth-row input:not([type=checkbox]){width:100%}
.auth-msg{min-height:16px;font-size:12px;margin-left:138px}
.auth-msg.err{color:#a00;font-weight:700}
.auth-msg.ok{color:var(--green)}
.auth-foot{display:flex;justify-content:space-between;align-items:center;padding:7px 12px;border-top:1px solid var(--line2);
  background:linear-gradient(180deg,#eef2f6,#d7dee6);font-size:11px;color:#333;gap:8px;flex-wrap:wrap}
.linkbtn{background:none;border:0;color:var(--link);text-decoration:underline;cursor:pointer;font:inherit;padding:0}
@media (max-width:640px){
  .auth{padding:0;align-items:stretch}
  .auth-box{border:0}
  .auth-body{grid-template-columns:1fr}
  .auth-side{padding:12px 16px}
  .auth-side .fine{display:none}
  .auth-row{grid-template-columns:1fr;gap:3px}
  .auth-row > label{text-align:left}
  .auth-msg{margin-left:0}
  .sap-titlebar .tb-user{max-width:120px}
}
