/* Presencia — app layer over the Nocturne tokens. Only what inline styles
   cannot express: status colors, responsive layout, hover/pseudo states. */

/* Light, natural retheme: warm off-white grounds, forest-green accent, no violet.
   Overrides the token sheet loaded before this file. */
:root {
  --color-bg: #f4f3ef;
  --color-surface: #ffffff;
  --color-text: #1f2320;
  --color-accent: #3f6b54;
  --color-accent-2: #3f6b54;
  --color-divider: color-mix(in srgb, #1f2320 12%, transparent);

  --color-accent-100: #eaf1ec;
  --color-accent-200: #d4e3d9;
  --color-accent-300: #b0cbbb;
  --color-accent-400: #7fa993;
  --color-accent-500: #5c8a72;
  --color-accent-600: #3f6b54;
  --color-accent-700: #325742;
  --color-accent-800: #274233;
  --color-accent-900: #1b2e24;

  --color-accent-2-100: #eaf1ec;
  --color-accent-2-200: #d4e3d9;
  --color-accent-2-300: #b0cbbb;
  --color-accent-2-400: #7fa993;
  --color-accent-2-500: #5c8a72;
  --color-accent-2-600: #3f6b54;
  --color-accent-2-700: #325742;
  --color-accent-2-800: #274233;
  --color-accent-2-900: #1b2e24;

  --color-neutral-100: #f8f8f6;
  --color-neutral-200: #ededea;
  --color-neutral-300: #dcdcd7;
  --color-neutral-400: #c2c2bc;
  --color-neutral-500: #a0a09a;
  --color-neutral-600: #7d7d77;
  --color-neutral-700: #5c5c57;
  --color-neutral-800: #40403c;
  --color-neutral-900: #2a2a27;

  --shadow-sm: 0 0 0 1px rgba(31, 35, 32, 0.09);
  --shadow-md: 0 1px 2px rgba(31, 35, 32, 0.06), 0 6px 16px rgba(31, 35, 32, 0.08);
  --shadow-lg: 0 0 0 1px rgba(31, 35, 32, 0.06), 0 14px 36px rgba(31, 35, 32, 0.14);
}

.tag-accent, .tag-accent-2 { background: var(--color-accent-100); color: var(--color-accent-700); }
.tag-neutral { background: var(--color-neutral-200); color: var(--color-neutral-700); }
.table th, .text-muted, .card-meta, figcaption, .field > label { color: var(--color-neutral-700); }

.shell { display: grid; grid-template-columns: 232px minmax(0, 1fr); min-height: 100vh; }
.side { border-right: 1px solid var(--color-divider); padding: 14px 12px 24px; display: flex; flex-direction: column; gap: 18px; position: sticky; top: 0; height: 100vh; }
.side-group-label { font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--color-neutral-700); padding: 0 10px 6px; }
.navitem { display: flex; align-items: center; gap: 9px; width: 100%; padding: 8px 10px; border: 0; border-radius: 8px; background: transparent; color: var(--color-neutral-800); font: inherit; font-size: 14px; cursor: pointer; text-align: left; }
.navitem:hover { background: color-mix(in srgb, var(--color-text) 7%, transparent); color: var(--color-text); }
.navitem[aria-current="page"] { background: var(--color-accent-100); color: var(--color-accent-700); box-shadow: inset 2px 0 0 var(--color-accent); }
.navitem .ni-badge { margin-left: auto; font-size: 11px; padding: 1px 7px; border-radius: 999px; background: var(--color-accent-600); color: #fff; }
.navitem .ni-ico { width: 18px; text-align: center; opacity: .85; font-size: 15px; }

.content { padding: 22px 28px 72px; max-width: 1120px; min-width: 0; }
.content .card:has(> .table), .content .card:has(> table.table) { overflow-x: auto; }
.content table.table { min-width: 560px; }

.cal-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 6px; }
.cal-head { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 6px; font-size: 10px; letter-spacing: .08em; text-transform: uppercase; color: var(--color-neutral-700); padding-bottom: 6px; }
.day { background: var(--color-surface); border-radius: 8px; padding: 6px; display: flex; flex-direction: column; gap: 5px; box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--color-text) 7%, transparent); }
.day.is-blank { background: transparent; box-shadow: none; }
.day.is-weekend { background: var(--color-neutral-100); }
.day.is-today { box-shadow: inset 0 0 0 1px var(--color-accent); }
.halves { display: flex; gap: 4px; min-width: 0; }
.half-lbl-long { display: none; }
.pv-list .half-lbl-long { display: inline; }
.pv-list .half-lbl-short { display: none; }
.half { flex: 1 1 0; min-width: 0; overflow: hidden; min-height: 40px; border-radius: 6px; border: 1px dashed color-mix(in srgb, var(--color-text) 14%, transparent); background: transparent; color: var(--color-neutral-600); font: inherit; font-size: 10px; font-weight: 600; letter-spacing: .04em; cursor: pointer; display: flex; align-items: center; justify-content: center; gap: 4px; transition: transform .08s ease, filter .12s ease; }
.half:hover:not(:disabled) { transform: translateY(-1px); box-shadow: 0 1px 3px rgba(31,35,32,.12); }
.half:disabled { cursor: default; }
.half.st-present { border-style: solid; border-color: transparent; background: #e7f0e9; color: #2f6b45; }
.half.st-absent { border-style: solid; border-color: transparent; background: #fbeae6; color: #a8412c; }
.half.st-conge { border-style: solid; border-color: transparent; background: #fbf1e0; color: #8a5c14; }
.half.st-rtt { border-style: solid; border-color: transparent; background: #e6eef3; color: #33607f; }

/* Compact direction — 1b */
.pv-dense .day { padding: 4px; gap: 3px; }
.pv-dense .halves { flex-direction: column; gap: 2px; }
.pv-dense .half { min-height: 17px; font-size: 9px; }

/* List direction — 1c */
.pv-list .cal-head { display: none; }
.pv-list .cal-grid { display: flex; flex-direction: column; gap: 4px; }
.pv-list .day { flex-direction: row; align-items: center; gap: 12px; padding: 7px 10px; }
.pv-list .day.is-blank { display: none; }
.pv-list .halves { flex: 1; max-width: 440px; }
.pv-list .half { min-height: 44px; font-size: 11px; }

.dot { width: 9px; height: 9px; border-radius: 50%; display: inline-block; flex: none; }
.dot.st-present { background: #4b8a63; }
.dot.st-absent { background: #c0563c; }
.dot.st-conge { background: #b8862f; }
.dot.st-rtt { background: #4a7a9b; }
.dot.st-none { background: var(--color-neutral-400); }

.pop { position: fixed; z-index: 90; width: 214px; padding: 6px; border-radius: 10px; background: var(--color-surface); box-shadow: var(--shadow-lg); }
.pop-opt { display: flex; align-items: center; gap: 9px; width: 100%; padding: 9px 8px; border: 0; border-radius: 6px; background: transparent; color: var(--color-text); font: inherit; font-size: 14px; cursor: pointer; text-align: left; }
.pop-opt:hover { background: color-mix(in srgb, var(--color-text) 8%, transparent); }
.pop-opt .kbd { margin-left: auto; font-size: 10px; padding: 1px 5px; border-radius: 4px; color: var(--color-neutral-700); box-shadow: inset 0 0 0 1px var(--color-neutral-300); }

.btn, .chipbtn { white-space: nowrap; }
.chipbtn { display: inline-flex; align-items: center; gap: 7px; padding: 6px 11px; border-radius: 8px; border: 1px solid var(--color-divider); background: transparent; color: var(--color-neutral-800); font: inherit; font-size: 13px; cursor: pointer; }
.chipbtn:hover { background: color-mix(in srgb, var(--color-text) 7%, transparent); }
.chipbtn[aria-pressed="true"] { color: var(--color-accent); box-shadow: inset 0 0 0 1px var(--color-accent); border-color: var(--color-accent); }

.tile { background: var(--color-surface); border-radius: 8px; padding: 12px 14px; display: flex; flex-direction: column; gap: 2px; box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--color-text) 7%, transparent); }
.rowbtn { display: flex; align-items: center; gap: 12px; width: 100%; padding: 11px 12px; border: 0; border-radius: 8px; background: var(--color-surface); color: var(--color-text); font: inherit; font-size: 14px; text-align: left; cursor: pointer; box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--color-text) 7%, transparent); }
.rowbtn:hover { background: color-mix(in srgb, var(--color-text) 10%, transparent); }

.mobile-only { display: none; }

@media (max-width: 900px) {
  .shell { grid-template-columns: 1fr; }
  .side { display: none; }
  .content { padding: 14px 14px 96px; }
  .mobile-only { display: flex; }
  .cal-head { display: none; }
  .cal-grid { display: flex; flex-direction: column; gap: 4px; }
  .day { flex-direction: row; align-items: center; gap: 12px; padding: 7px 10px; }
  .day.is-blank { display: none; }
  .halves { flex: 1; }
  .half-lbl-long { display: inline; }
  .half-lbl-short { display: none; }
  .half { min-height: 44px; font-size: 11px; }
  .pv-dense .halves, .pv-dense .half { flex-direction: row; min-height: 44px; font-size: 11px; }
}
