:root{
  --df-bg:#F6F7FB;
  --df-panel:#FFFFFF;
  --df-border:#E5E7EB;
  --df-text:#111827;
  --df-muted:#6B7280;
  --df-primary:#6B4C9A;
  --df-primary-hover:#5D3E8B;
  --df-focus:rgba(107,76,154,.18);
}

/*
  Accessibility / readability modes
  - df-font-large: larger base font for older users
  - df-density-compact: denser layout for power-users
  - df-contrast: higher contrast palette
*/
html{font-size:16px;}
body{background:var(--df-bg) !important; color:var(--df-text);}

body.df-font-large{font-size:18px;}
body.df-font-large .df-btn{font-size:1rem;padding:.75rem 1.2rem;border-radius:14px;}
body.df-font-large .df-table td, body.df-font-large .df-table th{padding:1rem 1rem;}
body.df-font-large .df-dropzone-title{font-size:1rem;}
body.df-font-large .df-dropzone-sub{font-size:.9rem;}
body.df-font-large header nav a{font-size:1rem !important;}
body.df-font-large input, body.df-font-large select, body.df-font-large textarea{font-size:1rem !important;}

body.df-density-compact .df-card{border-radius:14px;}
body.df-density-compact .df-card.p-5{padding:1.05rem;}
body.df-density-compact .df-btn{padding:.45rem .9rem;border-radius:12px;}
body.df-density-compact .df-table td, body.df-density-compact .df-table th{padding:.65rem .75rem;}

body.df-contrast{
  --df-bg:#FFFFFF;
  --df-panel:#FFFFFF;
  --df-border:#CBD5E1;
  --df-text:#0B1220;
  --df-muted:#334155;
  --df-primary:#4B2F86;
  --df-primary-hover:#3E2671;
  --df-focus:rgba(75,47,134,.25);
}

/* Clear keyboard focus */
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible{
  outline:3px solid var(--df-focus);
  outline-offset:2px;
}

/* Helpful hint box */
.df-help{
  background:rgba(107,76,154,.06);
  border:1px solid rgba(107,76,154,.20);
  border-radius:16px;
  padding:12px 14px;
  color:#2B1E3B;
}
.df-help-title{font-weight:700;}
.df-help ul{margin-top:6px;margin-left:1.2rem;list-style:disc;}
.df-help li{margin:.2rem 0;}

/* Make table rows easier to click */
.df-row-click{cursor:pointer;}
.df-row-click:hover{background:rgba(107,76,154,.04);}

/* Base */
html,body{color:var(--df-text);}

/* Inputs */
input,select,textarea{outline:none;}
input:focus,select:focus,textarea:focus{
  border-color:var(--df-primary) !important;
  box-shadow:0 0 0 3px var(--df-focus);
}

/* Reusable surfaces */
.df-card{
  background:var(--df-panel);
  border:1px solid var(--df-border);
  border-radius:18px;
  box-shadow:0 1px 2px rgba(16,24,40,.06);
}
.df-card:hover{box-shadow:0 6px 18px rgba(16,24,40,.08);}

.df-table-wrap{
  background:var(--df-panel);
  border:1px solid var(--df-border);
  border-radius:18px;
  overflow:auto;
}
.df-table{width:100%; border-collapse:separate; border-spacing:0;}
.df-table thead th{
  background:#F8FAFC;
  color:#475569;
  font-weight:600;
  letter-spacing:.01em;
  white-space:nowrap;
}
.df-table td,.df-table th{padding:.85rem 1rem;}
.df-table tbody tr td{border-top:1px solid #F1F5F9;}
.df-table tbody tr:hover{background:rgba(107,76,154,.04);}

/* Buttons */
.df-btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;border-radius:12px;padding:.55rem 1rem;font-size:.875rem;font-weight:600;line-height:1.2;}
.df-btn-primary{background:var(--df-primary);color:#fff;}
.df-btn-primary:hover{background:var(--df-primary-hover);}
.df-btn-dark{background:#111827;color:#fff;}
.df-btn-dark:hover{background:#0B1220;}
.df-btn-light{background:#F3F4F6;color:#374151;}
.df-btn-light:hover{background:#E5E7EB;}
.df-link{color:var(--df-primary);}
.df-link:hover{text-decoration:underline;}

/* File dropzone */
.df-dropzone{
  border:1px dashed #CBD5E1;
  border-radius:18px;
  background:linear-gradient(180deg,#FFFFFF 0%, #FBFBFE 100%);
  padding:16px;
  cursor:pointer;
}
.df-dropzone:hover{border-color:var(--df-primary);}
.df-dropzone.dragover{
  border-color:var(--df-primary);
  box-shadow:0 0 0 3px var(--df-focus);
}
.df-dropzone-title{font-weight:600;color:#111827;}
.df-dropzone-sub{color:var(--df-muted);font-size:.8rem;margin-top:4px;}
.df-filelist{margin-top:10px;display:flex;flex-direction:column;gap:6px;}
.df-fileitem{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;border:1px solid #EEF2F7;border-radius:12px;background:#FFFFFF;}
.df-fileitem-name{min-width:0;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.875rem;color:#111827;}
.df-fileitem-meta{font-size:.75rem;color:var(--df-muted);white-space:nowrap;}

/* Lightweight "Office" editor (MVP) */
.df-editor-toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:10px;border:1px solid #E5E7EB;border-radius:14px;background:#F9FAFB;}
.df-etsep{width:1px;height:22px;background:#E5E7EB;margin:0 4px;}
.df-etbtn{border:1px solid #E5E7EB;background:#fff;color:#111827;border-radius:10px;padding:6px 10px;font-size:13px;line-height:1;cursor:pointer;}
.df-etbtn:hover{background:#F3F4F6;}
.df-etbtn:active{transform:translateY(1px);}
.df-etbtn-primary{background:#8B6BB1;border-color:#8B6BB1;color:#fff;}
.df-etbtn-primary:hover{background:#6B4C9A;border-color:#6B4C9A;}
.df-editor{margin-top:12px;min-height:65vh;padding:18px;border:1px solid #E5E7EB;border-radius:18px;background:#fff;outline:none;overflow:auto;}
.df-editor:focus{box-shadow:0 0 0 3px rgba(139,107,177,.18);border-color:rgba(139,107,177,.65);}
