/* LeoFolio Firm workspace and client hours page (leofolio-patch-003-r8). Navy / gold / ivory tokens only. */
.fm-clients{display:grid;gap:14px}
.fm-empty{margin:0;padding:18px 20px;border:1px dashed #CFC8BD;border-radius:16px;background:#FBF7F1;font-size:14.5px;line-height:1.6;color:#1f2937}
.fm-empty a{color:#806331;font-weight:700}
.fm-client{padding:18px 20px;border:1px solid #E7DECF;border-radius:18px;background:#fff;box-shadow:0 10px 26px rgba(14,30,51,.05)}
.fm-client-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:8px 16px}
.fm-client h3{margin:0;font:800 19px/1.25 'Bricolage Grotesque',sans-serif;color:#0E1E33;overflow-wrap:anywhere}
.fm-badge{display:inline-block;margin-left:8px;padding:2px 9px;border-radius:999px;background:#F3EAD9;color:#6B5228;font:700 11.5px/1.6 'DM Sans',sans-serif;letter-spacing:.02em;vertical-align:middle}
.fm-facts{display:flex;flex-wrap:wrap;gap:6px 18px;margin:8px 0 0;padding:0;list-style:none;font-size:13.5px;color:#4b5563}
.fm-facts strong{color:#0E1E33}
.fm-client .op-actions{margin-top:12px}
.fm-client .op-actions a.prl-btn{text-decoration:none}
.fm-hours-panel{margin-top:14px;padding:14px 16px;border-top:1px solid #F1EBE1;display:grid;gap:12px}
.fm-period{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.fm-link{width:100%;box-sizing:border-box;min-height:74px;padding:10px 12px;border:1px solid #CFC8BD;border-radius:11px;font:13px/1.45 'JetBrains Mono',monospace;color:#0E1E33;background:#FBF7F1;resize:vertical;overflow-wrap:anywhere}
.fm-status{margin:0;font-size:13px;font-weight:700;color:#0E1E33;min-height:1em}
.fm-status.fm-error,.fm-error{color:#8A1C24}
.fm-firm-form{max-width:620px}
.fm-logo-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.fm-logo-row input[type=file]{font-size:13px;max-width:100%}
.fm-logo-preview{display:inline-flex;align-items:center;justify-content:center;min-width:120px;height:48px;padding:4px 8px;border:1px dashed #CFC8BD;border-radius:10px;background:#fff;font-size:12px;font-weight:600;color:#70757A}
.fm-logo-preview img{max-width:160px;max-height:40px;display:block}
@media (max-width:640px){.fm-period{grid-template-columns:1fr}}
/* Client hours page */
.fm-hours-body{margin:0;background:#FBF7F1;color:#0E1E33;font-family:'DM Sans',system-ui,sans-serif}
.fm-hours-top{padding:16px 20px;border-bottom:1px solid #E7DECF;background:#fff}
.fm-hours-brand img{height:30px;width:auto;display:block}
.fm-hours-main{max-width:760px;margin:0 auto;padding:28px 16px 40px}
.fm-hours-main h1{margin:0 0 8px;font:800 clamp(26px,5vw,36px)/1.15 'Bricolage Grotesque',sans-serif}
.fm-hours-main .fm-lede{margin:0 0 18px;font-size:15.5px;line-height:1.6;color:#1f2937}
.fm-hours-table{width:100%;border-collapse:collapse;background:#fff;border:1px solid #E7DECF;border-radius:14px;overflow:hidden;font-size:14.5px}
.fm-hours-table th,.fm-hours-table td{padding:10px 12px;border-bottom:1px solid #F1EBE1;text-align:left;vertical-align:middle}
.fm-hours-table th{font-size:12.5px;color:#5B6470;background:#FBF7F1}
.fm-hours-table input{width:100%;max-width:120px;box-sizing:border-box;padding:9px 10px;border:1px solid #CFC8BD;border-radius:10px;font:inherit}
.fm-hours-table small{display:block;color:#5B6470}
.fm-hours-note{display:flex;flex-direction:column;gap:6px;margin:16px 0;font-size:13px;font-weight:700}
.fm-hours-note textarea{min-height:70px;padding:10px 12px;border:1px solid #CFC8BD;border-radius:11px;font:400 14.5px/1.5 'DM Sans',sans-serif}
.fm-hours-btn{display:inline-flex;align-items:center;justify-content:center;padding:12px 18px;border:0;border-radius:12px;background:#0E1E33;color:#FBF7F1;font:700 15px/1 'DM Sans',sans-serif;cursor:pointer;text-decoration:none}
.fm-hours-btn.fm-secondary{background:#fff;color:#0E1E33;border:1.5px solid #0E1E33}
.fm-hours-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}
.fm-hours-reply{margin-top:22px;padding:16px;border:1px solid #EAD3AA;border-radius:16px;background:linear-gradient(135deg,#FBF4E8,#F7EAD6)}
.fm-hours-reply h2{margin:0 0 6px;font:800 20px/1.2 'Bricolage Grotesque',sans-serif}
.fm-hours-foot{max-width:760px;margin:0 auto;padding:0 16px 32px;font-size:12.5px;line-height:1.6;color:#5B6470}
.fm-hours-foot a{color:#806331}
@media (max-width:560px){.fm-hours-table thead{display:none}.fm-hours-table tr{display:grid;grid-template-columns:1fr 1fr;gap:6px 10px;padding:10px 12px;border-bottom:1px solid #F1EBE1}.fm-hours-table td{border:0;padding:0}.fm-hours-table td:first-child{grid-column:1/-1}.fm-hours-table td[data-label]::before{content:attr(data-label);display:block;font-size:12px;font-weight:700;color:#5B6470;margin-bottom:4px}}
.fm-logo-row [hidden],.fm-client [hidden]{display:none!important}

/* leofolio-patch-003-r9: My Payroll dashboard (replaces Workspace, Canada Workspace and Firm Workspace). */
.mp-root { padding-top: calc(66px + 36px); }
.mp-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-end; gap: 20px; margin-bottom: 26px; }
.mp-head h1 { font: 800 clamp(36px, 4.4vw, 54px)/1.02 'Bricolage Grotesque', sans-serif; color: #0E1E33; letter-spacing: -0.025em; margin: 0; }
.mp-head p { margin: 10px 0 0; max-width: 60ch; color: #4B5563; font-size: 17px; }
.mp-head-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.mp-overview { margin-bottom: 30px; }
.mp-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border: 1px solid #E7DECF; border-radius: 18px; background: #fff; overflow: hidden; }
.mp-stats div { padding: 18px 22px; }
.mp-stats div + div { border-left: 1px solid #E7DECF; }
.mp-stats span { display: block; font-size: 13px; font-weight: 700; color: #5B6470; }
.mp-stats strong { display: block; margin-top: 4px; font: 800 30px/1.1 'Bricolage Grotesque', sans-serif; color: #0E1E33; }
.mp-coming { margin-top: 18px; border: 1px solid #E7DECF; border-radius: 18px; background: #fff; padding: 8px 22px 12px; }
.mp-coming h2, .mp-h2 { font: 800 22px/1.2 'Bricolage Grotesque', sans-serif; color: #0E1E33; margin: 14px 0 10px; letter-spacing: -0.01em; }
.mp-coming ul { margin: 0; padding: 0; list-style: none; }
.mp-coming li { display: grid; grid-template-columns: 190px 1fr auto; gap: 14px; align-items: center; padding: 11px 0; border-top: 1px solid #F1EBE1; font-size: 15px; color: #374151; }
.mp-coming li:first-child { border-top: 0; }
.mp-coming time { font-weight: 700; color: #0E1E33; }
.mp-coming em { color: #6B7280; font-style: normal; font-size: 13px; }
.mp-when { padding: 4px 10px; border-radius: 999px; font-size: 12.5px; background: #EEF2F7; color: #0E1E33; white-space: nowrap; }
.mp-when.mp-deposit { background: #FBF1DD; color: #6B5228; }
.mp-companies { margin-bottom: 26px; }
.mp-next { font-size: 14px; color: #4B5563; }
.mp-next strong { color: #0E1E33; }
.mp-empty { padding: 32px; border: 1px dashed #CFC8BD; border-radius: 20px; background: #FFFCF6; }
.mp-empty h2 { margin: 0 0 8px; font: 800 26px/1.2 'Bricolage Grotesque', sans-serif; color: #0E1E33; }
.mp-empty p { margin: 0; max-width: 62ch; color: #4B5563; }
.mp-firm { margin: 0 0 18px; border: 1px solid #E7DECF; border-radius: 18px; background: #fff; }
.mp-firm > summary { cursor: pointer; list-style: none; padding: 18px 22px; display: flex; justify-content: space-between; align-items: center; gap: 16px; }
.mp-firm > summary::-webkit-details-marker { display: none; }
.mp-firm > summary::after { content: "+"; flex: none; width: 30px; height: 30px; display: grid; place-items: center; border-radius: 50%; background: #F3ECE0; font-weight: 700; color: #0E1E33; }
.mp-firm[open] > summary::after { content: "−"; }
.mp-firm > summary strong { display: block; color: #0E1E33; font-size: 17px; }
.mp-firm > summary small { display: block; margin-top: 2px; color: #5B6470; font-size: 14px; }
.mp-firm .fm-firm-form { margin: 0 22px 22px; box-shadow: none; border: 1px solid #F1EBE1; }
.mp-privacy { margin: 0 0 40px; font-size: 13.5px; color: #5B6470; max-width: 80ch; }
.mp-profiles-title { margin-top: 10px; padding-top: 30px; border-top: 1px solid #E7DECF; }
@media (max-width: 720px) {
  .mp-stats { grid-template-columns: 1fr; }
  .mp-stats div + div { border-left: 0; border-top: 1px solid #E7DECF; }
  .mp-coming li { grid-template-columns: 1fr; gap: 4px; }
  .mp-when { justify-self: start; }
}
/* r9: clear the fixed navigation; the shared program shell sets a smaller top padding. */
#workspace-root.mp-root { padding-top: calc(66px + clamp(28px, 4vw, 48px)); }
.mp-root [hidden] { display: none !important; }
