/* Shared look for the whole app — same tokens used in the design mockups.
   Loaded by every template via <link rel="stylesheet" href="{{ url_for('static', filename='theme.css') }}">. */

:root{
  --bg: #F5F6F8;
  --surface: #FFFFFF;
  --border: #E3E6EB;
  --text: #12151C;
  --text-2: #6B7280;
  --text-3: #9AA1AC;
  --primary: #2F5EFB;
  --primary-dark: #1E45D1;
  --primary-tint: #EAEFFF;
  --success: #12A150;
  --success-tint: #E7F8EE;
  --warning: #B7791F;
  --warning-tint: #FBF0DD;
  --danger: #D92D20;
  --danger-tint: #FDEDEB;
  --r-sm: 8px;
  --r-md: 12px;
  --r-lg: 16px;
  --shadow: 0 1px 2px rgba(16,24,40,0.04), 0 1px 3px rgba(16,24,40,0.06);
  --shadow-md: 0 2px 4px rgba(16,24,40,0.04), 0 6px 16px rgba(16,24,40,0.08);
  --font-display: 'Space Grotesk', sans-serif;
  --font-body: 'IBM Plex Sans', sans-serif;
}
*{box-sizing:border-box;}
body{margin:0;font-family:var(--font-body);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;}
h1,h2,h3{font-family:var(--font-display);margin:0;}
p{margin:0;}
a{color:var(--primary-dark);}
button{font-family:var(--font-body);cursor:pointer;}
input,select,textarea{font-family:var(--font-body);}

.page{max-width:480px;margin:0 auto;padding:24px 20px 32px;}
.page-narrow{max-width:380px;margin:0 auto;padding:24px 20px;}
.center-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;}

.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow);}
.card-pad{padding:20px;}

.btn{display:flex;align-items:center;justify-content:center;gap:8px;border-radius:var(--r-sm);font-weight:600;font-size:15px;border:none;padding:14px 18px;text-decoration:none;}
.btn-primary{background:var(--primary);color:#fff;}
.btn-primary:disabled,.btn-primary.disabled{background:#B9C4E8;cursor:not-allowed;}
.btn-secondary{background:var(--surface);color:var(--text);border:1px solid var(--border);}
.btn-secondary:disabled,.btn-secondary.disabled{color:var(--text-3);cursor:not-allowed;}
.btn-ghost{background:transparent;color:var(--primary-dark);border:none;padding:8px 4px;font-weight:600;font-size:14px;text-decoration:none;}
.btn-sm{padding:9px 14px;font-size:13px;}
.btn-block{width:100%;}

.chip{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:999px;font-size:12.5px;font-weight:600;white-space:nowrap;}
.chip-pending{background:var(--warning-tint);color:var(--warning);}
.chip-approved{background:var(--success-tint);color:var(--success);}
.chip-rejected{background:var(--danger-tint);color:var(--danger);}
.chip-tagged{background:var(--primary-tint);color:var(--primary-dark);}
.chip-inactive{background:#EEF0F3;color:var(--text-2);}
.chip-role{background:var(--primary-tint);color:var(--primary-dark);}

.label{font-size:13px;font-weight:600;color:var(--text);margin-top:20px;margin-bottom:8px;display:block;}
.field{width:100%;padding:12px 14px;border:1px solid var(--border);border-radius:var(--r-sm);font-size:15px;background:#fff;color:var(--text);margin-bottom:2px;}
.field::placeholder{color:var(--text-3);}
.field-sm{padding:9px 10px;font-size:14px;}

.icon{display:block;flex-shrink:0;}

.avatar{display:flex;align-items:center;justify-content:center;border-radius:999px;font-family:var(--font-display);font-weight:600;flex-shrink:0;}

.flash{background:var(--success-tint);color:var(--success);padding:10px 12px;border-radius:var(--r-sm);font-size:14px;margin-bottom:16px;}
.flash-error{background:var(--danger-tint);color:var(--danger);}
.reminder{background:var(--warning-tint);color:var(--warning);padding:10px 12px;border-radius:var(--r-sm);font-size:13.5px;margin-bottom:16px;display:flex;align-items:center;gap:10px;}

.day-chip{width:26px;height:26px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;}
.day-approved{background:var(--success-tint);color:var(--success);}
.day-pending{background:var(--warning-tint);color:var(--warning);}
.day-rejected{background:var(--danger-tint);color:var(--danger);}
.day-missing{background:var(--danger-tint);color:var(--danger);font-weight:700;}
.day-weekend,.day-upcoming{border:1px dashed var(--border);color:var(--text-3);}

details.emp-card summary{cursor:pointer;list-style:none;}
details.emp-card summary::-webkit-details-marker{display:none;}
details.emp-card .chevron{transition:transform .15s ease;}
details.emp-card[open] .chevron{transform:rotate(180deg);}

/* --- Office/admin shell: left sidebar nav + content area -----------
   Used by the office-manager side of the app (Review Time, Jobs,
   Customers, Employees, Payroll Export, Settings), as opposed to the
   crew-facing screens which stay single-column for a phone. Collapses
   to a horizontal scrolling bar on narrow screens rather than trying
   to cram a vertical sidebar onto a phone width. */
.office-shell{display:flex;min-height:100vh;align-items:flex-start;}
.office-sidebar{width:216px;flex-shrink:0;background:#12151C;border-right:1px solid #12151C;padding:20px 12px;display:flex;flex-direction:column;gap:2px;position:sticky;top:0;height:100vh;overflow-y:auto;}
.office-sidebar-brand{font-family:var(--font-display);font-weight:700;font-size:15px;padding:6px 12px 14px;color:#fff;}
.sidebar-logo-img{display:block;max-height:34px;max-width:184px;}
.office-nav-link{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--r-sm);font-size:14px;font-weight:500;color:#9AA1AC;text-decoration:none;white-space:nowrap;}
.office-nav-link:hover{background:rgba(255,255,255,0.06);color:#fff;}
.office-nav-link.active{background:var(--primary);color:#fff;font-weight:600;}
.office-nav-link.exit{margin-top:auto;color:#6B7280;border-top:1px solid rgba(255,255,255,0.1);padding-top:14px;margin-top:14px;}
.office-content{flex:1;min-width:0;padding:24px;}
@media (max-width:860px){
  .office-shell{flex-direction:column;}
  .office-sidebar{width:100%;height:auto;position:static;flex-direction:row;overflow-x:auto;border-right:none;border-bottom:1px solid var(--border);padding:10px 12px;gap:4px;}
  .office-sidebar-brand{display:none;}
  .office-nav-link{flex-shrink:0;}
  .office-nav-link.exit{margin-top:0;border-top:none;padding-top:10px;}
  .office-content{padding:20px 16px;}
}

/* Simple list rows used on the new Jobs/Customers tabs - name-forward,
   with a status chip and secondary detail line, matching the density
   of the existing Employees list. */
.list-row{display:flex;align-items:center;gap:14px;padding:14px 18px;}
.list-row-main{flex:1;min-width:0;}
.list-row-title{font-size:14.5px;font-weight:600;}
.list-row-meta{font-size:12.5px;color:var(--text-2);margin-top:2px;}
.filter-tabs{display:flex;gap:6px;margin-bottom:14px;flex-wrap:wrap;}
.filter-tab{padding:7px 13px;border-radius:999px;font-size:13px;font-weight:600;text-decoration:none;color:var(--text-2);background:var(--surface);border:1px solid var(--border);}
.filter-tab.active{background:var(--primary);color:#fff;border-color:var(--primary);}
