/* GenIA Clinic · Caja táctil. Standalone page styles. */
:root { color-scheme: light; }
* { box-sizing: border-box; }
body.caja-touch { --bg:#f3f4f8; --surface:#fff; --soft:#f7f8fc; --ink:#252a3d; --muted:#676e83; --line:#e3e5ef; --accent:#6155d9; --accent-soft:#eeecff; --accent-ink:#5146bd; --warm:#9b5d20; --warm-soft:#fff5e7; --shadow:0 8px 28px #28244906; margin:0; background:var(--bg); color:var(--ink); font-family:Inter,"Segoe UI",Arial,sans-serif; font-size:16px; line-height:1.5; min-height:100dvh; -webkit-text-size-adjust:100%; }
body.caja-touch.genia-dark-theme { color-scheme:dark; --bg:#141722; --surface:#1d2231; --soft:#252b3c; --ink:#f0f1f8; --muted:#adb5ca; --line:#343c51; --accent:#a69aff; --accent-soft:#302c4e; --accent-ink:#c2b9ff; --warm:#edbd83; --warm-soft:#38302c; --shadow:0 8px 28px #00000012; }
[hidden] { display:none !important; }
h1,h2,h3,p { margin:0; }
h1 { font-size:clamp(1.6rem,2.4vw,2rem); line-height:1.18; letter-spacing:-.04em; font-weight:750; }
h2 { font-size:clamp(1.35rem,2.4vw,1.8rem); line-height:1.25; letter-spacing:-.03em; }
h3 { font-size:1rem; }
button,input,select,textarea { font:inherit; }
button,a,summary { -webkit-tap-highlight-color:transparent; touch-action:manipulation; }
button,a.home-link,a.text-link { min-height:48px; border:1px solid var(--line); border-radius:12px; background:var(--surface); color:var(--ink); font-size:.9rem; font-weight:650; line-height:1.35; padding:12px 18px; cursor:pointer; text-decoration:none; display:inline-flex; align-items:center; justify-content:center; gap:8px; }
button:disabled { opacity:.45; cursor:default; }
button:not(:disabled):active,a:active,summary:active { transform:translateY(1px); }
button.primary-action { background:var(--accent); color:#fff; border-color:var(--accent); }
.genia-dark-theme button.primary-action { color:#17132f; }
button.secondary-action { background:var(--soft); }
:focus-visible { outline:3px solid var(--accent); outline-offset:3px; }
input:focus-visible,textarea:focus-visible,select:focus-visible { outline-offset:1px; }
button:hover:not(:disabled),a.home-link:hover,a.text-link:hover { border-color:var(--accent); }
button.primary-action:hover:not(:disabled) { filter:brightness(.96); }
.topbar { display:flex; align-items:center; justify-content:space-between; gap:24px; padding:22px max(24px,calc((100vw - 1440px)/2)); background:var(--surface); border-bottom:1px solid var(--line); }
.eyebrow { font-size:.69rem; letter-spacing:.1em; font-weight:800; text-transform:uppercase; color:var(--accent-ink); margin-bottom:6px; }
.brand-divider { display:inline-block; margin:0 7px; color:var(--muted); }
.source { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.source a.home-link,.source a.text-link { background:transparent; border-color:transparent; color:var(--muted); }
.source .theme-toggle-button { background:var(--soft); }
.caja-records-layout { display:block; width:min(1440px,calc(100% - 48px)); margin:0 auto 40px; }
.caja-workspace-intro { display:flex; gap:12px; align-items:center; justify-content:space-between; margin:22px 0 18px; }
.caja-workspace-intro p { color:var(--muted); font-size:.95rem; }
#cajaRecordsStatus { font-size:.78rem; color:var(--muted); display:flex; align-items:center; gap:8px; }
#cajaRecordsStatus:before { content:""; width:7px; height:7px; border-radius:50%; background:#769888; flex-shrink:0; }
.caja-controls-panel { display:flex; align-items:center; gap:12px; flex-wrap:wrap; padding:0 0 22px; }
.caja-controls-panel.is-collapsed { display:none; }
#addCajaRecordBtn { min-height:56px; padding:14px 24px; font-size:1rem; }
#addCajaRecordBtn span { font-size:1.35rem; font-weight:400; line-height:1; }
#openCajaCalendarBtn { min-height:56px; background:var(--surface); padding:14px 22px; }
.caja-sync-disclosure { position:relative; margin-left:auto; }
.caja-sync-disclosure > summary { min-height:52px; display:flex; align-items:center; gap:12px; padding:12px 18px; color:var(--muted); font-size:.9rem; font-weight:650; cursor:pointer; border-radius:12px; border:1px solid var(--line); background:var(--surface); list-style:none; }
.caja-sync-disclosure > summary:after,.caja-payment-disclosure > summary:after { content:"⌄"; font-size:1.1rem; }
summary::-webkit-details-marker { display:none; }
.caja-sync-disclosure[open] > summary:after,.caja-payment-disclosure[open] > summary:after { transform:rotate(180deg); }
.caja-google-sync { position:absolute; top:calc(100% + 8px); right:0; z-index:20; display:grid; gap:16px; background:var(--surface); border:1px solid var(--line); border-radius:16px; padding:20px; width:330px; max-width:calc(100vw - 48px); box-shadow:0 12px 40px #00000020; }
.caja-google-sync label { display:flex; align-items:center; gap:12px; min-height:48px; font-size:.9rem; cursor:pointer; }
.caja-google-sync input[type=checkbox] { width:24px; height:24px; margin:0; accent-color:var(--accent); flex-shrink:0; }
.caja-google-sync .form-note { font-size:.85rem; }
.caja-day-panel { border:1px solid var(--line); background:var(--surface); border-radius:22px; padding:28px; box-shadow:var(--shadow); min-width:0; }
.caja-day-head { display:flex; justify-content:space-between; align-items:center; gap:20px; padding-bottom:24px; }
.caja-day-head > div { min-width:0; }
#cajaDaySummary { color:var(--muted); font-size:.88rem; margin-top:10px; }
#refreshCajaRecordsBtn { flex-shrink:0; }
.caja-filter-bar { display:flex; align-items:center; gap:24px; padding:20px 0; border-top:1px solid var(--line); }
.caja-filter-bar > div { flex:0 1 360px; min-width:0; }
label { font-size:.82rem; font-weight:650; }
input,select,textarea { border:1px solid var(--line); border-radius:10px; color:var(--ink); background:var(--surface); padding:12px 14px; min-height:50px; width:100%; font-size:16px; }
select { cursor:pointer; padding-right:32px; }
#cajaModalityFilter { margin-top:8px; }
.form-note { color:var(--muted); line-height:1.6; font-size:.85rem; }
.caja-filter-bar .form-note { flex:1; max-width:400px; margin-top:23px; }
.caja-metrics { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; margin:4px 0 22px; }
.caja-metric { display:flex; flex-direction:column; padding:20px; border:1px solid var(--line); border-radius:16px; background:var(--soft); gap:6px; min-width:0; }
.caja-metric > span { font-size:.8rem; color:var(--muted); font-weight:600; }
.caja-metric strong { font-size:clamp(1.5rem,2.5vw,2rem); font-weight:750; letter-spacing:-.04em; overflow-wrap:anywhere; font-variant-numeric:tabular-nums; line-height:1.3; }
.caja-metric small { color:var(--muted); font-size:.72rem; }
.caja-metric:nth-child(2) { background:var(--accent-soft); border-color:transparent; }
.caja-metric:nth-child(2) strong { color:var(--accent-ink); }
.caja-metric-pending { background:var(--warm-soft); border-color:transparent; }
.caja-metric-pending strong { color:var(--warm); }
.caja-payment-disclosure { border:1px solid var(--line); border-radius:14px; margin-bottom:24px; }
.caja-payment-disclosure > summary { display:flex; align-items:center; gap:12px; padding:14px 18px; min-height:56px; cursor:pointer; font-size:.9rem; font-weight:650; list-style:none; }
.caja-payment-disclosure > summary span { margin-left:auto; color:var(--muted); font-weight:400; font-size:.8rem; }
.caja-payments-summary { padding:4px 18px 18px; }
.caja-payments-summary h3 { margin:8px 0 14px; font-size:.9rem; color:var(--muted); }
.caja-payments-summary > p { margin-top:16px; font-size:.85rem; }
.caja-results-toolbar { display:flex; flex-wrap:wrap; align-items:center; gap:10px; margin:0 0 16px; }
.caja-results-toolbar label { display:flex; gap:8px; align-items:center; font-size:.8rem; color:var(--muted); }
#cajaPageSize { width:80px; min-height:48px; }
#cajaPageLabel { margin-left:auto; color:var(--muted); font-size:.8rem; }
.caja-results-toolbar button { min-width:100px; }
.table-wrap { width:100%; overflow:auto; border:1px solid var(--line); border-radius:14px; -webkit-overflow-scrolling:touch; }
table { width:100%; border-collapse:collapse; font-size:.85rem; text-align:left; }
th { background:var(--soft); color:var(--muted); text-transform:uppercase; font-size:.65rem; letter-spacing:.07em; font-weight:700; padding:16px; }
td { padding:18px 16px; border-top:1px solid var(--line); vertical-align:top; line-height:1.55; }
#cajaDayTable > table { min-width:960px; }
#cajaDayRows > tr > td:first-child { min-width:160px; }
#cajaDayRows > tr > td:first-child strong { font-size:.9rem; display:block; }
#cajaDayRows > tr > td:first-child small { color:var(--muted); display:block; margin-top:5px; }
#cajaDayRows > tr > td:nth-child(4) { min-width:210px; max-width:380px; overflow-wrap:anywhere; }
#cajaDayRows > tr > td:nth-child(5),#cajaDayRows > tr > td:nth-child(6) { font-variant-numeric:tabular-nums; white-space:nowrap; font-weight:650; }
#cajaDayRows > tr > td:nth-child(6) { color:var(--warm); }
.caja-modality { display:inline-block; font-size:.7rem; font-weight:600; padding:5px 10px; background:var(--accent-soft); color:var(--accent-ink); border-radius:7px; }
.caja-edit-btn { min-height:48px; min-width:110px; font-size:.8rem; color:var(--accent-ink); border-color:var(--line); background:var(--accent-soft); }
.caja-payment-detail { margin-top:10px; }
.caja-payment-detail > summary { display:flex; align-items:center; min-height:48px; color:var(--accent-ink); cursor:pointer; font-size:.8rem; font-weight:650; text-decoration:underline; text-underline-offset:3px; }
.caja-payment-detail p { font-size:.8rem; margin:8px 0; }
.caja-payments-table { width:100%; min-width:0; }
.caja-payments-table th,.caja-payments-table td { padding:12px; }
.caja-payments-table td:last-child { text-align:right; white-space:nowrap; }
.caja-payment-detail .table-wrap { margin:12px 0; }
.empty { padding:40px 24px; background:var(--soft); border:1px dashed var(--line); border-radius:16px; text-align:center; margin-bottom:20px; }
.empty p { margin-top:8px; color:var(--muted); font-size:.9rem; }
.caja-modal,.caja-calendar-overlay { position:fixed; inset:0; z-index:100; display:grid; place-items:center; padding:24px; background:#12162588; backdrop-filter:blur(6px); }
.caja-calendar-backdrop { position:absolute; inset:0; }
.caja-calendar-dialog,.caja-modal-card { position:relative; background:var(--surface); border:1px solid var(--line); border-radius:24px; padding:28px; width:min(800px,100%); max-height:calc(100dvh - 48px); overflow:auto; box-shadow:0 24px 80px #00000030; overscroll-behavior:contain; }
.caja-calendar-dialog { width:min(520px,100%); }
.caja-modal-close,.caja-calendar-close { position:absolute; top:20px; right:20px; }
.caja-modal-card > h2,.caja-calendar-head h2 { padding-right:90px; }
.caja-calendar-head { margin-bottom:24px; }
.caja-month-field { display:block; margin-bottom:8px; }
#cajaCalendarSummary { margin:14px 0; }
.caja-weekdays,.caja-calendar-grid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:6px; }
.caja-weekdays { margin:16px 0 8px; text-align:center; color:var(--muted); font-size:.75rem; }
.caja-calendar-day,.caja-calendar-blank { min-height:54px; min-width:0; }
.caja-calendar-day { flex-direction:column; padding:5px 1px; gap:0; border-color:transparent; }
.caja-calendar-day strong { font-size:1rem; }
.caja-calendar-day small { font-size:.6rem; color:var(--muted); }
.caja-calendar-day.has-records { background:var(--accent-soft); }
.caja-calendar-day.selected { background:var(--accent); color:#fff; }
.caja-calendar-day.selected small { color:inherit; }
.caja-record-form { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; margin-top:28px; }
.caja-record-form label { display:grid; gap:8px; align-content:start; }
.caja-record-form .wide-field,.caja-record-form .form-note,.caja-edit-actions { grid-column:1 / -1; }
.caja-edit-actions { display:flex; justify-content:flex-end; gap:12px; position:sticky; bottom:-28px; background:var(--surface); padding:18px 0; border-top:1px solid var(--line); margin-top:8px; }
.caja-edit-actions button { min-height:54px; min-width:140px; }
.caja-form-open,body.caja-calendar-open { overflow:hidden; }
.sr-only { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
@media (max-width:1100px), (pointer:coarse) and (max-width:1400px) {
  .topbar { flex-wrap:wrap; gap:18px; }
  .source { margin-left:auto; }
  #cajaDayTable { border:0; border-radius:0; overflow:visible; }
  #cajaDayTable > table { display:block; min-width:0; }
  #cajaDayTable > table > thead { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); }
  #cajaDayRows { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
  #cajaDayRows > tr { display:grid; grid-template-columns:1fr 1fr; border:1px solid var(--line); border-radius:16px; padding:20px; gap:14px 16px; min-width:0; background:var(--surface); }
  #cajaDayRows > tr > td { display:block; padding:0; border:0; min-width:0 !important; max-width:none !important; white-space:normal; overflow-wrap:anywhere; }
  #cajaDayRows > tr > td:before { content:attr(data-label); display:block; color:var(--muted); font-size:.65rem; font-weight:600; text-transform:uppercase; letter-spacing:.06em; margin-bottom:5px; }
  #cajaDayRows > tr > td:first-child { grid-column:1 / -1; padding-bottom:12px; border-bottom:1px solid var(--line); }
  #cajaDayRows > tr > td:first-child strong { font-size:1.05rem; }
  #cajaDayRows > tr > td:nth-child(4) { grid-column:1 / -1; }
  #cajaDayRows > tr > td:nth-child(5),#cajaDayRows > tr > td:nth-child(6) { background:var(--soft); padding:12px; border-radius:10px; }
  #cajaDayRows > tr > td:last-child { grid-column:1 / -1; }
  #cajaDayRows > tr > td:last-child:before { display:none; }
  .caja-edit-btn { width:100%; min-height:50px; }
}
@media (max-width:800px) {
  .topbar { padding:20px 24px; }
  .source { margin:0; }
  .source a.home-link,.source a.text-link { padding:12px; }
  .caja-day-panel { padding:22px; }
  .caja-metric { padding:16px; }
  .caja-sync-disclosure { margin-left:0; }
  .caja-controls-panel { gap:10px; }
  #addCajaRecordBtn,#openCajaCalendarBtn { flex:1 1 auto; }
  .caja-results-toolbar { gap:10px; }
  #cajaPageLabel { flex:1; text-align:right; }
  .caja-results-toolbar button { flex:1 1 100px; }
  .caja-filter-bar { gap:20px; }
}
@media (max-width:600px) {
  .topbar { padding:20px 16px; gap:16px; }
  .source { gap:6px; }
  .source button,.source a.home-link,.source a.text-link { font-size:.78rem; padding:10px; }
  .caja-records-layout { width:calc(100% - 24px); }
  .caja-workspace-intro { align-items:flex-start; flex-direction:column; margin:18px 4px; gap:6px; }
  .caja-workspace-intro p { font-size:.85rem; }
  #addCajaRecordBtn,#openCajaCalendarBtn { flex:1 0 100%; }
  .caja-sync-disclosure { width:100%; }
  .caja-sync-disclosure > summary { justify-content:space-between; }
  .caja-google-sync { width:100%; max-width:none; }
  .caja-day-panel { padding:18px; border-radius:18px; }
  .caja-day-head { align-items:flex-start; flex-wrap:wrap; gap:14px; padding-bottom:20px; }
  .caja-day-head > div { flex:1 0 100%; }
  #refreshCajaRecordsBtn { min-height:48px; }
  .caja-filter-bar { display:block; }
  .caja-filter-bar .form-note { margin-top:12px; }
  .caja-metrics { gap:8px; grid-template-columns:repeat(2,minmax(0,1fr)); }
  .caja-metric:first-child { grid-column:1 / -1; display:grid; grid-template-columns:1fr auto; align-items:center; }
  .caja-metric:first-child small { grid-column:1; }
  .caja-metric:first-child strong { grid-column:2; grid-row:1 / 3; }
  .caja-metric { padding:14px; }
  .caja-metric > span { font-size:.7rem; }
  .caja-metric strong { font-size:1.3rem; }
  .caja-metric small { font-size:.65rem; }
  .caja-payment-disclosure > summary span { display:none; }
  .caja-payment-disclosure > summary:after { margin-left:auto; }
  #cajaDayRows { grid-template-columns:1fr; }
  #cajaDayRows > tr { padding:18px; }
  #cajaPageLabel { flex:1 0 100%; text-align:left; margin-left:0; }
  .caja-modal,.caja-calendar-overlay { padding:10px; }
  .caja-modal-card,.caja-calendar-dialog { padding:20px; max-height:calc(100dvh - 20px); border-radius:18px; }
  .caja-modal-close,.caja-calendar-close { top:14px; right:14px; }
  .caja-calendar-day,.caja-calendar-blank { min-height:48px; }
  .caja-weekdays,.caja-calendar-grid { gap:2px; }
  .caja-record-form { grid-template-columns:1fr; gap:18px; }
  .caja-edit-actions { bottom:-20px; }
  .caja-edit-actions button { min-width:0; flex:1; }
}
@media (prefers-reduced-motion:no-preference) { button,a,summary { transition:background .15s,border-color .15s; } }
/* Keep the first records within reach on landscape tablets. */
#cajaPageSize { width:96px; }
@media (min-width:601px) and (max-height:850px) {
  .topbar { padding-top:16px; padding-bottom:16px; }
  .caja-workspace-intro { margin:16px 0 12px; }
  .caja-controls-panel { padding-bottom:16px; }
  .caja-day-head { padding-bottom:18px; }
  .caja-filter-bar { padding:14px 0; }
  .caja-metrics { margin-bottom:16px; }
  .caja-metric { padding:16px; gap:4px; }
  .caja-metric small { display:none; }
  .caja-payment-disclosure { margin-bottom:16px; }
}
@media (min-width:601px) and (max-width:1000px) {
  .caja-results-toolbar { display:grid; grid-template-columns:minmax(0,1fr) auto auto; }
  .caja-results-toolbar label { grid-column:1; grid-row:1; }
  .caja-results-toolbar button { min-width:100px; }
  #cajaPrevPage { grid-column:2; grid-row:1; }
  #cajaNextPage { grid-column:3; grid-row:1; }
  #cajaPageLabel { grid-column:1 / -1; grid-row:2; margin:0; text-align:left; }
}
@media (max-width:600px) { .caja-calendar-dialog { padding:20px 14px; } }

.caja-view-tabs { display:flex; gap:8px; flex-wrap:wrap; padding-top:20px; }
.caja-view-tabs a { display:inline-flex; align-items:center; gap:8px; min-height:48px; padding:10px 18px; border-radius:12px; text-decoration:none; font-size:.9rem; font-weight:650; color:var(--muted); border:1px solid transparent; }
.caja-view-tabs a[aria-current=page] { color:var(--accent-ink); background:var(--accent-soft); border-color:var(--accent-soft); }
.caja-source-row { overflow-wrap:anywhere; font-size:.75rem; }
.caja-save-notice { padding:14px 18px; margin:0 0 18px; border:1px solid var(--line); background:var(--warm-soft); border-radius:12px; font-size:.9rem; }

.source a.caja-report-link{background:var(--accent-soft);color:var(--accent-ink);border-color:transparent}
