:root{
  --paper:#F6F5F1;
  --paper-alt:#EDEBE3;
  --card:#FFFFFF;
  --ink:#1F2430;
  --ink-soft:#5B6270;
  --ink-faint:#8A8F9B;
  --primary:#2B4C7E;
  --primary-dark:#1D3559;
  --primary-tint:#E7EDF6;
  --accent:#E8873A;
  --accent-tint:#FBEADA;
  --success:#3F8F5F;
  --success-tint:#E4F2E9;
  --danger:#C0443B;
  --danger-tint:#FBE6E4;
  --line:#DEDBD1;
  --radius:10px;
  --shadow:0 1px 2px rgba(31,36,48,0.04), 0 6px 16px rgba(31,36,48,0.06);
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  background:var(--paper);
  color:var(--ink);
  font-family:'Inter',sans-serif;
  -webkit-font-smoothing:antialiased;
  min-height:100vh;
}
h1,h2,h3,.display{font-family:'Space Grotesk',sans-serif;letter-spacing:-0.01em;}
.mono{font-family:'JetBrains Mono',monospace;}
button{font-family:inherit;cursor:pointer;}
input,select,textarea{font-family:inherit;}
a{color:inherit;}
::selection{background:var(--accent-tint);}

/* ---------- Login ---------- */
.login-wrap{ min-height:100vh; display:grid; grid-template-columns:1.1fr 1fr; }
@media (max-width:860px){ .login-wrap{grid-template-columns:1fr;} .login-visual{display:none;} }
.login-visual{
  background:linear-gradient(165deg,var(--primary-dark),var(--primary) 70%);
  position:relative; overflow:hidden;
  display:flex; flex-direction:column; justify-content:space-between; padding:48px;
}
.login-visual .brandmark{color:#fff;}
.login-visual .brandmark .co{font-family:'Space Grotesk',sans-serif; font-weight:700; font-size:22px; letter-spacing:-0.02em;}
.login-visual .brandmark .tag{color:rgba(255,255,255,0.65); font-size:13px; margin-top:4px;}
.calendar-grid{display:grid; grid-template-columns:repeat(7,1fr); gap:8px; padding:8px;}
.calendar-grid .cell{aspect-ratio:1; border-radius:6px; background:rgba(255,255,255,0.08); animation:fadein .6s ease both;}
.calendar-grid .cell.fill{background:var(--accent);}
.calendar-grid .cell.fill2{background:rgba(232,135,58,0.45);}
@keyframes fadein{from{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}
.login-visual .quote{color:rgba(255,255,255,0.85); font-size:15px; max-width:380px; line-height:1.6;}
.login-form-side{display:flex; align-items:center; justify-content:center; padding:32px;}
.login-card{width:100%; max-width:380px;}
.login-card h1{font-size:26px; margin:0 0 6px;}
.login-card p.sub{color:var(--ink-soft); font-size:14px; margin:0 0 28px;}
.field{margin-bottom:16px;}
.field label{display:block; font-size:12.5px; font-weight:600; color:var(--ink-soft); margin-bottom:6px; text-transform:uppercase; letter-spacing:.04em;}
.field input, .field select, .field textarea{
  width:100%; padding:10px 12px; border:1px solid var(--line); border-radius:8px;
  background:var(--card); font-size:14.5px; color:var(--ink);
}
.field input:focus, .field select:focus, .field textarea:focus{
  outline:none; border-color:var(--primary); box-shadow:0 0 0 3px var(--primary-tint);
}
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:6px;
  padding:10px 16px; border-radius:8px; border:1px solid transparent;
  font-size:14px; font-weight:600; transition:transform .05s ease;
}
.btn:active{transform:scale(.98);}
.btn-primary{background:var(--primary); color:#fff;}
.btn-primary:hover{background:var(--primary-dark);}
.btn-accent{background:var(--accent); color:#fff;}
.btn-accent:hover{filter:brightness(0.95);}
.btn-ghost{background:transparent; color:var(--ink); border-color:var(--line);}
.btn-ghost:hover{background:var(--paper-alt);}
.btn-danger{background:var(--danger-tint); color:var(--danger);}
.btn-danger:hover{background:var(--danger); color:#fff;}
.btn-block{width:100%;}
.btn-sm{padding:6px 10px; font-size:12.5px; border-radius:6px;}
.btn[disabled]{opacity:.6; cursor:default;}
.error-msg{background:var(--danger-tint); color:var(--danger); padding:10px 12px; border-radius:8px; font-size:13.5px; margin-bottom:16px;}
.hint-box{background:var(--primary-tint); color:var(--primary-dark); padding:12px 14px; border-radius:8px; font-size:12.5px; margin-top:22px; line-height:1.6;}
.hint-box b{font-family:'JetBrains Mono',monospace;}

/* ---------- App shell ---------- */
.app{display:grid; grid-template-columns:230px 1fr; min-height:100vh;}
@media (max-width:760px){ .app{grid-template-columns:1fr;} .sidebar{display:none;} .app.nav-open .sidebar{display:block; position:fixed; z-index:50; height:100vh;} }
.sidebar{background:var(--primary-dark); color:#fff; padding:22px 16px; display:flex; flex-direction:column; height:100vh; overflow-y:auto;}
.sidebar .brand{font-family:'Space Grotesk',sans-serif; font-weight:700; font-size:17px; padding:0 8px 22px; border-bottom:1px solid rgba(255,255,255,0.12); margin-bottom:18px;}
.sidebar .brand small{display:block; font-family:'Inter',sans-serif; font-weight:400; font-size:11.5px; color:rgba(255,255,255,0.55); margin-top:3px; text-transform:uppercase; letter-spacing:.06em;}
.nav-item{display:flex; align-items:center; gap:10px; padding:10px 12px; border-radius:8px; margin-bottom:2px; font-size:14px; font-weight:500; color:rgba(255,255,255,0.75); cursor:pointer;}
.nav-item svg{width:16px;height:16px;flex-shrink:0;}
.nav-item:hover{background:rgba(255,255,255,0.06); color:#fff;}
.nav-item.active{background:rgba(255,255,255,0.12); color:#fff;}
.sidebar-foot{margin-top:20px; padding-top:16px; border-top:1px solid rgba(255,255,255,0.12); flex-shrink:0;}
.who{padding:0 8px 10px; font-size:12.5px; color:rgba(255,255,255,0.6);}
.who b{color:#fff; display:block; font-size:13.5px; font-weight:600;}
.badge-role{display:inline-block; margin-top:4px; padding:2px 7px; border-radius:20px; background:rgba(255,255,255,0.12); font-size:10.5px; text-transform:uppercase; letter-spacing:.05em; color:rgba(255,255,255,0.85);}
.main{padding:26px 30px 60px; overflow-x:hidden;}
.topbar{display:flex; align-items:center; justify-content:space-between; margin-bottom:22px;}
.topbar h2{font-size:22px; margin:0;}
.topbar .path{font-size:12.5px; color:var(--ink-faint); margin-top:2px;}
.mobile-toggle{display:none; background:var(--card); border:1px solid var(--line); border-radius:8px; padding:8px 10px;}
@media (max-width:760px){ .mobile-toggle{display:inline-flex;} }

.stat-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(160px,1fr)); gap:14px; margin-bottom:26px;}
.stat-card{background:var(--card); border:1px solid var(--line); border-radius:var(--radius); padding:16px 18px; box-shadow:var(--shadow);}
.stat-card .num{font-family:'Space Grotesk',sans-serif; font-size:28px; font-weight:700;}
.stat-card .lbl{font-size:12.5px; color:var(--ink-soft); margin-top:2px;}
.stat-card.accent .num{color:var(--accent);}
.stat-card.danger .num{color:var(--danger);}
.stat-card.success .num{color:var(--success);}
.stat-card.primary .num{color:var(--primary);}
.stat-card.clickable{cursor:pointer; transition:border-color .1s, transform .05s;}
.stat-card.clickable:hover{border-color:var(--primary);}
.stat-card.clickable:active{transform:scale(.98);}
.stat-card.active-stat{border-color:var(--primary); box-shadow:0 0 0 2px var(--primary-tint);}

select.multi-select{padding:4px 6px; border:1px solid var(--line); border-radius:7px; font-size:12.5px; background:var(--card); min-width:150px;}
select.multi-select option{padding:3px 6px;}

.panel{background:var(--card); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow); margin-bottom:20px;}
.panel-head{display:flex; align-items:center; justify-content:space-between; padding:16px 18px; border-bottom:1px solid var(--line);}
.panel-head h3{margin:0; font-size:15.5px;}
.panel-body{padding:16px 18px;}
.panel-body.pad0{padding:0;}

table{width:100%; border-collapse:collapse; font-size:13.5px;}
th{text-align:left; font-size:11px; text-transform:uppercase; letter-spacing:.04em; color:var(--ink-faint); padding:10px 14px; border-bottom:1px solid var(--line); white-space:nowrap;}
td{padding:11px 14px; border-bottom:1px solid var(--line); vertical-align:top;}
tr:last-child td{border-bottom:none;}
tr.row-hover:hover{background:var(--paper-alt);}
.cell-wrap{max-width:220px; overflow:hidden; text-overflow:ellipsis;}
.muted{color:var(--ink-faint);}
.empty-state{padding:40px 18px; text-align:center; color:var(--ink-faint); font-size:13.5px;}
.empty-state b{display:block; color:var(--ink); font-size:15px; margin-bottom:4px; font-family:'Space Grotesk',sans-serif;}

.pill{display:inline-flex; align-items:center; gap:5px; padding:3px 9px; border-radius:20px; font-size:11.5px; font-weight:600;}
.pill-pending{background:var(--accent-tint); color:#a5601c;}
.pill-completed{background:var(--success-tint); color:var(--success);}
.pill-overdue{background:var(--danger-tint); color:var(--danger);}
.pill-soon{background:#FFF4E0; color:#9a6b12;}
.pill-neutral{background:var(--paper-alt); color:var(--ink-soft);}
.pill-priority-high{background:var(--danger-tint); color:var(--danger);}
.pill-priority-medium{background:var(--accent-tint); color:#a5601c;}
.pill-priority-low{background:var(--primary-tint); color:var(--primary-dark);}
.pill-urgent{background:var(--danger); color:#fff; font-weight:700;}
tr.urgent-row{background:linear-gradient(to right, var(--danger-tint) 0, var(--danger-tint) 4px, transparent 4px);}
tr.urgent-row:hover{background:linear-gradient(to right, var(--danger-tint) 0, var(--danger-tint) 4px, var(--paper-alt) 4px);}

.metric-bar{margin-bottom:14px;}
.metric-bar-label{display:flex; justify-content:space-between; font-size:12.5px; color:var(--ink-soft); margin-bottom:5px;}
.metric-bar-label b{color:var(--ink); font-family:'JetBrains Mono',monospace;}
.metric-bar-track{background:var(--paper-alt); border-radius:6px; height:10px; overflow:hidden;}
.metric-bar-fill{height:100%; border-radius:6px; transition:width .3s ease;}
.score-hero{font-family:'Space Grotesk',sans-serif; font-size:52px; font-weight:700; line-height:1;}
.designer-compare-row{padding:16px 18px; border-bottom:1px solid var(--line);}
.designer-compare-row:last-child{border-bottom:none;}
.designer-compare-head{display:flex; justify-content:space-between; align-items:center; margin-bottom:10px;}

.cal-toolbar{display:flex; align-items:center; gap:12px; margin-bottom:16px; flex-wrap:wrap;}
.cal-month-label{font-family:'Space Grotesk',sans-serif; font-weight:700; font-size:16px; min-width:150px; text-align:center;}
.cal-grid{display:grid; grid-template-columns:repeat(7,1fr); gap:6px; margin-bottom:14px;}
.cal-weekday{text-align:center; font-size:11px; color:var(--ink-faint); text-transform:uppercase; letter-spacing:.04em; padding-bottom:4px;}
.cal-cell{position:relative; min-height:88px; border-radius:8px; border:1px solid var(--line); background:#fff; cursor:pointer; padding:6px; transition:box-shadow .1s; overflow:hidden; display:flex; flex-direction:column;}
.cal-cell:hover{box-shadow:0 0 0 2px var(--primary-tint);}
.cal-cell.cal-blank{visibility:hidden; cursor:default; border:none; min-height:0;}
.cal-cell.cal-pending{background:#EDEBE3; border-color:#D8D4C8;}
.cal-cell.cal-completed{background:var(--success-tint); border-color:#BFE0CC;}
.cal-cell.cal-today{outline:2px solid var(--primary); outline-offset:1px;}
.cal-cell.cal-selected{box-shadow:0 0 0 2px var(--accent);}
.cal-daynum{font-size:12.5px; font-weight:600; color:var(--ink); margin-bottom:3px; flex-shrink:0;}
.cal-tasks{display:flex; flex-direction:column; gap:2px; overflow:hidden;}
.cal-task-chip{font-size:10.5px; line-height:1.3; background:rgba(255,255,255,0.7); border-radius:4px; padding:2px 4px; color:var(--ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
.cal-task-chip.done{background:rgba(255,255,255,0.55); text-decoration:line-through; color:var(--ink-soft);}
.cal-more{font-size:10px; color:var(--ink-soft); padding:1px 4px;}
.cal-legend{display:flex; gap:16px; font-size:12px; color:var(--ink-soft); flex-wrap:wrap;}
.cal-legend-item{display:flex; align-items:center; gap:6px;}
.cal-swatch{width:14px; height:14px; border-radius:4px; border:1px solid var(--line); display:inline-block;}
.cal-swatch.cal-empty{background:#fff;}
.cal-swatch.cal-pending{background:#EDEBE3;}
.cal-swatch.cal-completed{background:var(--success-tint);}
@media (max-width:640px){ .cal-cell{min-height:56px;} .cal-task-chip{display:none;} .cal-more{display:none;} }
.deadline-tag{font-family:'JetBrains Mono',monospace; font-size:12.5px;}
.type-tag{display:inline-block; padding:2px 8px; border-radius:6px; background:var(--primary-tint); color:var(--primary-dark); font-size:11.5px; font-weight:600;}

.client-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:14px;}
.client-card{background:var(--card); border:1px solid var(--line); border-radius:var(--radius); padding:16px 18px; box-shadow:var(--shadow); cursor:pointer; transition:border-color .1s;}
.client-card:hover{border-color:var(--primary);}
.client-card h4{margin:0 0 4px; font-size:16px; font-family:'Space Grotesk',sans-serif;}
.client-card .sub{font-size:12px; color:var(--ink-faint); margin-bottom:12px;}
.client-card .mini-stats{display:flex; gap:14px; font-size:12px; color:var(--ink-soft);}
.client-card .mini-stats b{color:var(--ink); font-family:'JetBrains Mono',monospace;}

.toolbar{display:flex; gap:10px; align-items:center; flex-wrap:wrap;}
.toolbar select, .toolbar input[type=text]{padding:8px 10px; border:1px solid var(--line); border-radius:7px; font-size:13px; background:var(--card);}

.modal-overlay{position:fixed; inset:0; background:rgba(31,36,48,0.45); display:flex; align-items:center; justify-content:center; z-index:100; padding:20px;}
.modal{background:var(--card); border-radius:12px; width:100%; max-width:560px; max-height:88vh; overflow-y:auto; box-shadow:0 20px 60px rgba(0,0,0,0.25);}
.modal-head{display:flex; align-items:center; justify-content:space-between; padding:18px 20px; border-bottom:1px solid var(--line);}
.modal-head h3{margin:0; font-size:16.5px;}
.modal-close{background:none; border:none; font-size:20px; color:var(--ink-faint); line-height:1;}
.modal-body{padding:20px;}
.modal-foot{display:flex; justify-content:flex-end; gap:10px; padding:16px 20px; border-top:1px solid var(--line);}
.grid-2{display:grid; grid-template-columns:1fr 1fr; gap:0 14px;}

.breadcrumb-link{color:var(--primary); font-weight:600; cursor:pointer; font-size:13px;}
.breadcrumb-link:hover{text-decoration:underline;}

.toast{position:fixed; bottom:22px; right:22px; background:var(--ink); color:#fff; padding:12px 18px; border-radius:8px; font-size:13.5px; box-shadow:var(--shadow); z-index:200; animation:toastin .2s ease;}
@keyframes toastin{from{opacity:0; transform:translateY(8px)}to{opacity:1; transform:translateY(0)}}

.import-drop{border:1.5px dashed var(--line); border-radius:10px; padding:22px; text-align:center; background:var(--paper-alt);}
.disclose{font-size:11.5px; color:var(--ink-faint); margin-top:10px; line-height:1.5;}
.loading-screen{padding:80px 20px; text-align:center; color:var(--ink-faint); font-family:'Inter',sans-serif;}
