:root{
  --paper:#FFFFFF;
  --paper-raised:#FFFFFF;
  --ink:#14140F;
  --ink-soft:#55524A;
  --pencil:#726D5F;
  --steel:#14140F;
  --line:#DBD7CC;
  --line-soft:#ECE9E0;
  --rule-heavy:#14140F;
  --red:#B23A2E;
  --red-bg:#F7E4E1;
  --amber:#C98A2C;
  --amber-bg:#F7ECD8;
  --green:#4B7A51;
  --green-bg:#E4EEE3;
  --focus:#14140F;
  --radius:2px;
}
*{box-sizing:border-box;}
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:'IBM Plex Sans',sans-serif;
  font-size:14px;
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
::selection{background:var(--ink);color:var(--paper);}
button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, [tabindex]:focus-visible{
  outline:2px solid var(--focus);
  outline-offset:1px;
}
.sheet{
  max-width:1180px;
  margin:0 auto;
  padding:28px 32px 60px;
}

/* ---- title block header ---- */
.title-block{
  border-bottom:3px solid var(--rule-heavy);
  display:flex !important;
  flex-direction:row !important;
  align-items:stretch !important;
  justify-content:space-between;
  gap:0 !important;
  padding-top:4px;
  padding-bottom:0 !important;
}
.title-block .tb-lockup{
  display:flex;
  flex-direction:column;
  justify-content:flex-end;
  padding-bottom:14px;
}
.title-block .practice-logo{
  height:72px;
  width:auto;
  margin-bottom:16px;
}
.title-block h1{
  font-family:'Archivo',sans-serif;
  font-weight:800;
  font-size:27px;
  letter-spacing:-0.01em;
  margin:0;
}
.title-block .tb-fields{
  display:grid;
  grid-auto-flow:column;
  grid-template-rows:1fr 1fr;
  border-left:1px solid var(--rule-heavy);
  flex:none;
}
.title-block .tb-field{
  border-left:1px solid var(--line);
  border-bottom:1px solid var(--line);
  padding:10px 16px;
  min-width:96px;
  display:flex;
  flex-direction:column;
  justify-content:center;
}
.title-block .tb-field:nth-child(-n+4){border-bottom:none;}
.title-block .tb-label{
  font-family:'IBM Plex Mono',monospace;
  font-size:11px;
  letter-spacing:.07em;
  color:var(--pencil);
  text-transform:uppercase;
}
.title-block .tb-value{
  font-family:'IBM Plex Mono',monospace;
  font-size:13px;
  font-weight:500;
  margin-top:2px;
}
.subtitle{
  color:var(--ink-soft);
  font-size:13px;
  margin:10px 0 20px;
  max-width:75ch;
}

.tabs{
  display:flex;
  gap:0;
  border-bottom:1px solid var(--line);
  margin-bottom:24px;
  flex-wrap:wrap;
}
.tab{
  font-family:'IBM Plex Mono',monospace;
  font-weight:500;
  font-size:12px;
  letter-spacing:.03em;
  padding:11px 16px 10px;
  background:none;
  color:var(--ink-soft);
  border:none;
  border-bottom:3px solid transparent;
  margin-bottom:-1px;
  border-radius:0;
  cursor:pointer;
  position:relative;
}
.tab.active{
  background:none;
  color:var(--ink);
  font-weight:600;
  border-bottom-color:var(--ink);
}
.tab .count{
  font-family:'IBM Plex Mono',monospace;
  font-weight:400;
  color:var(--pencil);
  margin-left:5px;
}
.tab .count.flag{color:var(--red);}

.panel{display:none;}
.panel.active{display:block;}

.section-head{
  display:flex;
  justify-content:space-between;
  align-items:center;
  margin:30px 0 8px;
  gap:10px;
  flex-wrap:wrap;
  padding-bottom:8px;
  border-bottom:1px solid var(--rule-heavy);
}
.section-head:first-child{margin-top:0;}
.section-head h2{
  font-family:'Archivo',sans-serif;
  font-size:16px;
  font-weight:800;
  letter-spacing:.01em;
  text-transform:uppercase;
  margin:0;
  color:var(--ink);
}
.section-head .right{display:flex;align-items:center;gap:10px;}
.party-name-input{
  font-family:'Archivo',sans-serif;
  font-size:16px;
  font-weight:800;
  text-transform:uppercase;
  color:var(--ink);
  border:1px solid transparent;
  background:transparent;
  padding:2px 5px;
  border-radius:2px;
  min-width:80px;
}
.party-name-input:hover{border-color:var(--line);}
.party-name-input:focus{outline:none;border-color:var(--ink);background:var(--paper-raised);}
.btn-move{
  background:transparent;
  border:1px solid var(--line);
  color:var(--ink-soft);
  width:22px;
  height:22px;
  line-height:1;
  font-size:11px;
  border-radius:var(--radius);
  cursor:pointer;
  padding:0;
}
.btn-move:hover:not(:disabled){border-color:var(--ink);color:var(--ink);}
.btn-move:disabled{opacity:.3;cursor:default;}
.party-tag{
  font-family:'IBM Plex Mono',monospace;
  font-size:11px;
  color:var(--ink-soft);
  border:1px solid var(--line);
  border-radius:0;
  padding:2px 8px;
}
.party-tag.warn{color:var(--red);border-color:var(--red);}

button{
  font-family:'IBM Plex Sans',sans-serif;
  font-size:12.5px;
  font-weight:500;
  cursor:pointer;
  border-radius:var(--radius);
}
.btn-ghost{
  font-family:'IBM Plex Mono',monospace;
  background:transparent;
  border:1px solid var(--ink);
  color:var(--ink);
  padding:5px 11px;
  letter-spacing:.02em;
}
.btn-ghost:hover{background:var(--ink);color:var(--paper);}
.btn-add{
  font-family:'IBM Plex Mono',monospace;
  background:var(--ink);
  border:1px solid var(--ink);
  color:var(--paper-raised);
  padding:5px 12px;
  letter-spacing:.02em;
}
.btn-add:hover{background:var(--paper);color:var(--ink);}
.btn-del{
  background:transparent;
  border:none;
  color:var(--pencil);
  font-size:15px;
  line-height:1;
  padding:2px 6px;
}
.btn-del:hover{color:var(--red);}

.table-wrap{overflow:auto;max-height:65vh;border:1px solid var(--line);background:var(--paper-raised);}
table{
  width:auto;
  table-layout:fixed;
  border-collapse:separate;
  border-spacing:0;
}
th{
  text-align:left;
  font-family:'IBM Plex Sans',sans-serif;
  font-weight:600;
  font-size:11.5px;
  letter-spacing:normal;
  text-transform:none;
  color:var(--ink-soft);
  padding:8px 8px;
  border-bottom:1px solid var(--rule-heavy);
  background:var(--paper-raised);
  white-space:normal;
  word-wrap:break-word;
  overflow-wrap:break-word;
  position:sticky;
  z-index:3;
}
th.th-label{top:0;}
th.th-filter{padding:4px 6px;border-bottom:1px solid var(--line);}
.col-resize-handle{
  position:absolute;
  top:0; right:0; bottom:0;
  width:8px;
  cursor:col-resize;
  z-index:4;
  touch-action:none;
  background:var(--line);
}
.col-resize-handle:hover, .col-resize-handle.active{
  background:var(--ink);
  opacity:.5;
}
td{
  padding:9px 8px;
  border-bottom:1px solid var(--line);
  vertical-align:middle;
  font-size:13px;
}
tr:hover td{background:#FAFAF7;}
tr.overdue td{background:transparent;}
tr.done-row td{background:transparent;}
input[type=text],input[type=date],input[type=number],select{
  width:100%;
  border:1px solid transparent;
  background:transparent;
  font-family:'IBM Plex Sans',sans-serif;
  font-size:12.5px;
  color:var(--ink);
  padding:4px 5px;
  border-radius:2px;
}
input[type=number]{width:44px;}
input:hover,select:hover{border-color:var(--line);}
input:focus,select:focus{outline:none;border-color:var(--ink);background:#fff;}
.cell-textarea{
  width:100%;
  box-sizing:border-box;
  display:block;
  border:1px solid transparent;
  background:transparent;
  font-family:'IBM Plex Sans',sans-serif;
  font-size:13px;
  line-height:1.4;
  color:var(--ink);
  padding:4px 5px;
  border-radius:2px;
  resize:none;
  overflow:hidden;
  white-space:pre-wrap;
  word-break:break-word;
  min-height:1.9em;
}
.cell-textarea:hover{border-color:var(--line);}
.cell-textarea:focus{outline:none;border-color:var(--ink);background:#fff;}
.lead-cell{display:flex;align-items:center;gap:3px;}
.lead-cell input[type=number].unconfirmed{color:var(--red);font-weight:600;}
.lead-cell input[type=checkbox]{width:13px;height:13px;accent-color:var(--red);flex-shrink:0;}
.computed{
  font-family:'IBM Plex Mono',monospace;
  font-size:11.5px;
  padding:4px 5px;
  color:var(--ink-soft);
  white-space:nowrap;
}

/* ---- status signal: dot + label, the one functional accent ---- */
.status-pill{
  display:inline-flex;
  align-items:center;
  gap:6px;
  font-family:'IBM Plex Mono',monospace;
  font-size:10.5px;
  letter-spacing:.02em;
  padding:3px 8px 3px 7px;
  border-radius:2px;
  white-space:nowrap;
}
.status-pill::before{
  content:"";
  width:6px;height:6px;
  border-radius:50%;
  background:currentColor;
  flex:none;
}
.status-pill.overdue{background:var(--red-bg);color:var(--red);}
.status-pill.ok{background:var(--green-bg);color:var(--green);}
.status-pill.pending{background:var(--amber-bg);color:var(--amber);}
.status-pill.neutral{background:var(--red-bg);color:var(--red);}
.status-pill.stamp-in{animation:stamp-in .38s cubic-bezier(.16,1,.3,1);}
@keyframes stamp-in{
  from{transform:scale(.82) rotate(-2deg);opacity:0;}
  to{transform:scale(1) rotate(0);opacity:1;}
}
@media (prefers-reduced-motion: reduce){
  .status-pill.stamp-in{animation:none;}
}

.priority-select{
  font-family:'IBM Plex Mono',monospace;
  font-size:10.5px;
  font-weight:600;
  padding:3px 4px;
  border-radius:2px;
  border:1px solid var(--line);
  cursor:pointer;
  width:100%;
}
.priority-select.priority-high{background:var(--red-bg);color:var(--red);border-color:var(--red);}
.priority-select.priority-medium{background:var(--amber-bg);color:var(--amber);border-color:var(--amber);}
.priority-select.priority-low{background:var(--green-bg);color:var(--green);border-color:var(--green);}
.priority-select.priority-none{background:#fff;color:var(--ink-soft);}
.freeze-select{
  font-family:'IBM Plex Mono',monospace;
  font-size:10.5px;
  font-weight:600;
  padding:3px 4px;
  border-radius:2px;
  border:1px solid var(--line);
  cursor:pointer;
  width:100%;
}
.freeze-select.freeze-freeze{background:var(--line-soft);color:var(--ink);border-color:var(--ink);}
.freeze-select.freeze-approved{background:var(--green-bg);color:var(--green);border-color:var(--green);}
.freeze-select.freeze-none{background:#fff;color:var(--ink-soft);}
.awaiting-select{font-size:11.5px;width:100%;}
.place-order-cell{display:flex;align-items:center;gap:5px;}
.place-order-cell .date-field{flex:1;min-width:0;}
.na-toggle{display:flex;align-items:center;gap:3px;font-size:10.5px;color:var(--ink-soft);white-space:nowrap;flex-shrink:0;}
.na-toggle input[type=checkbox]{width:12px;height:12px;accent-color:var(--ink);flex-shrink:0;}
.date-field{position:relative;display:flex;align-items:center;width:100%;}
.date-field .date-text-input{width:100%;box-sizing:border-box;padding-right:20px;font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--ink);border:1px solid transparent;background:transparent;padding-top:4px;padding-bottom:4px;padding-left:5px;border-radius:2px;}
.date-field .date-text-input:hover{border-color:var(--line);}
.date-field .date-text-input:focus{outline:none;border-color:var(--ink);background:#fff;}
.date-field .date-text-input.invalid{border-color:var(--red);color:var(--red);}
.date-field .date-text-input:disabled{opacity:.45;}
.date-field .date-native-picker{position:absolute;opacity:0;width:1px;height:1px;left:0;top:0;pointer-events:none;padding:0;border:none;}
.date-field .date-pick-btn{position:absolute;right:1px;top:50%;transform:translateY(-50%);background:transparent;border:none;cursor:pointer;font-size:10.5px;padding:2px 3px;line-height:1;color:var(--pencil);border-radius:2px;}
.date-field .date-pick-btn:hover{color:var(--ink);}
th.th-label.sortable{cursor:pointer;user-select:none;}
th.th-label.sortable:hover{color:var(--ink);}
.sort-arrow{font-size:8px;position:relative;top:-1px;}

.col-filter{
  font-family:'IBM Plex Sans',sans-serif;
  font-weight:400;
  font-size:11.5px;
  border:1px solid var(--line);
  border-radius:2px;
  padding:3px 6px;
  width:100%;
  box-sizing:border-box;
  background:var(--paper-raised);
  color:var(--ink);
}
.col-filter:focus{outline:none;border-color:var(--ink);}
.col-filter::placeholder{color:var(--pencil);opacity:.8;}

.foot-note{
  font-family:'IBM Plex Mono',monospace;
  font-size:11px;
  color:var(--pencil);
  margin-top:10px;
}
.save-flag{
  position:fixed;bottom:18px;right:24px;
  font-family:'IBM Plex Mono',monospace;
  font-size:11px;color:var(--ink-soft);
  background:var(--paper-raised);border:1px solid var(--ink);
  padding:5px 10px;border-radius:var(--radius);
  opacity:0;transition:opacity .4s;
}
.save-flag.show{opacity:1;}

/* ---- motion: one authored moment (AFC stamp), plus minimal functional transitions ---- */
body{animation:fade-in .25s ease;}
@keyframes fade-in{from{opacity:0;}to{opacity:1;}}

button, .btn-ghost, .btn-add, .btn-del, .tab{
  transition:background-color .15s ease, border-color .15s ease, color .15s ease, transform .08s ease;
}
button:active, .btn-ghost:active, .btn-add:active{transform:scale(0.97);}

input, select, .col-filter{
  transition:border-color .15s ease, background-color .15s ease;
}

.panel{animation:panel-in .18s ease;}
@keyframes panel-in{from{opacity:0;transform:translateY(4px);}to{opacity:1;transform:translateY(0);}}

tr.new-row{animation:new-row-flash 1.6s ease;}
@keyframes new-row-flash{
  0%{background:var(--amber-bg);}
  100%{background:transparent;}
}

.row-actions{display:flex;align-items:center;justify-content:flex-end;gap:3px;}
.btn-row-move{
  background:transparent;
  border:1px solid var(--line);
  color:var(--ink-soft);
  width:19px;
  height:19px;
  line-height:1;
  font-size:10.5px;
  border-radius:var(--radius);
  cursor:pointer;
  padding:0;
  flex-shrink:0;
}
.btn-row-move:hover:not(:disabled){border-color:var(--ink);color:var(--ink);}
.btn-row-move:disabled{opacity:.3;cursor:default;}

/* ---- renameable / reorderable column headers ---- */
.col-head-row{display:flex;align-items:flex-start;gap:2px;min-height:18px;}
.col-label-textarea{
  flex:1;
  min-width:0;
  width:100%;
  box-sizing:border-box;
  display:block;
  font-family:'IBM Plex Sans',sans-serif;
  font-weight:600;
  font-size:11.5px;
  letter-spacing:normal;
  text-transform:none;
  line-height:1.3;
  color:var(--ink-soft);
  border:1px solid transparent;
  background:transparent;
  padding:2px 3px;
  border-radius:2px;
  resize:none;
  overflow:hidden;
  white-space:normal;
  word-break:break-word;
  min-height:16px;
}
.col-label-textarea:hover{border-color:var(--line);}
.col-label-textarea:focus{outline:none;border-color:var(--ink);background:#fff;color:var(--ink);}
.btn-col-move{
  background:transparent;
  border:none;
  color:var(--pencil);
  width:13px;
  height:16px;
  line-height:1;
  font-size:11px;
  cursor:pointer;
  padding:0;
  flex-shrink:0;
  margin-top:1px;
}
.btn-col-move:hover:not(:disabled){color:var(--ink);}
.btn-col-move:disabled{opacity:.25;cursor:default;}
.btn-col-sort{
  background:transparent;
  border:none;
  color:var(--pencil);
  font-size:9.5px;
  cursor:pointer;
  padding:0 2px;
  flex-shrink:0;
  opacity:.55;
  margin-top:1px;
}
.btn-col-sort:hover{opacity:1;color:var(--ink);}
.btn-col-sort.active{opacity:1;color:var(--ink);}
.col-label-static{flex:1;min-width:0;font-family:'IBM Plex Sans',sans-serif;font-weight:600;font-size:11.5px;letter-spacing:normal;text-transform:none;line-height:1.3;color:var(--ink-soft);padding:2px 3px;white-space:normal;word-break:break-word;}
.btn-col-del{background:transparent;border:none;color:var(--pencil);font-size:12px;cursor:pointer;padding:0 2px;flex-shrink:0;opacity:.55;margin-top:1px;}
.btn-col-del:hover{opacity:1;color:var(--red);}

.status-sub{font-size:10px;color:var(--pencil);margin-top:2px;white-space:normal;}
.computed-orderby{font-family:'IBM Plex Mono',monospace;font-size:11.5px;color:var(--ink-soft);white-space:nowrap;}
.lock-icon{font-size:10px;opacity:.7;cursor:help;}
tr.row-locked textarea, tr.row-locked select, tr.row-locked input{cursor:not-allowed;opacity:.75;}
tr.row-locked .btn-del, tr.row-locked .btn-row-move{opacity:.25;}
#log-table .log-when{font-family:'IBM Plex Mono',monospace;font-size:11px;white-space:nowrap;color:var(--ink-soft);}
#log-table .log-who{font-weight:600;white-space:nowrap;}
#log-table .log-action{white-space:nowrap;}
#log-table .log-detail{color:var(--ink-soft);}
#log-table td{vertical-align:top;padding:5px 8px;font-size:11.5px;}
.floor-name{font-family:'Archivo',sans-serif;font-weight:800;font-size:14px;text-transform:uppercase;}
.room-picker{font-size:11.5px;color:var(--ink-soft);display:flex;align-items:center;gap:6px;}
.room-picker select{font-family:'IBM Plex Sans',sans-serif;font-size:12px;padding:5px 8px;border-radius:var(--radius);border:1px solid var(--line);min-width:240px;}

#login-screen{transition:opacity .2s ease;}

/* ---- mobile ---- */
@media (max-width: 640px){
  .sheet{padding:16px 14px 40px;}
  .title-block{flex-direction:column !important;}
  .title-block .practice-logo{height:56px;}
  .title-block h1{font-size:21px;}
  .title-block .tb-fields{
    border-left:none;
    border-top:1px solid var(--rule-heavy);
    grid-auto-flow:row;
    grid-template-columns:1fr 1fr;
    grid-template-rows:none;
  }
  .title-block .tb-field:nth-child(-n+4){border-bottom:1px solid var(--line);}
  .title-block .tb-field:nth-child(1),.title-block .tb-field:nth-child(3){border-left:none;}
  .tabs{gap:0;}
  .tab{font-size:11.5px;padding:9px 10px 8px;}
  .section-head{gap:8px;}
  .section-head h2{font-size:13px;}
  button, .btn-ghost, .btn-add{padding:8px 12px;font-size:13px;}
  .table-wrap{max-height:55vh;}
  th, td{font-size:12px;}
}

/* ---- export modal ---- */
.export-overlay{position:fixed;inset:0;background:rgba(20,20,15,0.5);display:flex;align-items:center;justify-content:center;z-index:100;padding:20px;}
.export-box{background:var(--paper-raised);border-radius:0;border:1px solid var(--ink);padding:22px;max-width:380px;width:100%;max-height:80vh;overflow:auto;}
.export-box h2{margin:0 0 4px;font-family:'Archivo',sans-serif;font-weight:800;font-size:15px;color:var(--ink);}
.export-links a{font-size:12px;color:var(--ink);text-decoration:underline;cursor:pointer;}
.export-links a:hover{color:var(--pencil);}
.export-checklist label{display:flex;align-items:center;gap:9px;padding:5px 2px;font-size:13px;border-bottom:1px solid var(--line);}
.export-checklist label:last-child{border-bottom:none;}
.export-checklist input{width:15px;height:15px;accent-color:var(--ink);flex-shrink:0;}

/* ---- print / PDF export ---- */
#print-area{display:none;}
@media print{
  body > *:not(#print-area){display:none !important;}
  #print-area{
    display:block !important;
    font-family:'IBM Plex Sans',sans-serif;
    color:#111;
  }
  #print-area h1{font-family:'Archivo',sans-serif;font-weight:800;font-size:18px;margin:0 0 3px;}
  #print-area .print-meta{font-size:10px;color:#555;margin-bottom:16px;}
  #print-area table{width:100%;border-collapse:collapse;table-layout:auto;}
  #print-area th,#print-area td{border:1px solid #999;padding:5px 7px;font-size:10px;text-align:left;white-space:normal;word-break:break-word;vertical-align:top;}
  #print-area th{background:#eee;font-weight:600;}
}
