/*
 * Nodly visual language — Cuaderno Vivo.
 * Bloop: persona/contexto · Hilo: relación · Nudo: estado/acción · Ficha: información operativa.
 * This layer changes presentation only. Product state and component geometry remain in their modules.
 */

html[data-nodly-theme="light"]{color-scheme:light}
html[data-nodly-theme="dark"]{color-scheme:dark}

html[data-nodly-theme] body.authenticated{
  --ink:#243243;
  --muted:#687789;
  --paper:#f4f1ea;
  --white:#fffdf9;
  --forest:#405f8f;
  --sage:#dce5f0;
  --mint:#e8eef6;
  --teal:#5877a8;
  --sand:#f1e2b8;
  --amber:#c39a42;
  --rose:#d97570;
  --line:#dce1e6;
  --shadow:0 15px 38px rgba(36,50,67,.08);
  --nodly-canvas:#f4f1ea;
  --nodly-surface:#fffdf9;
  --nodly-surface-raised:#ffffff;
  --nodly-surface-soft:#eef1f4;
  --nodly-sidebar:#33445e;
  --nodly-sidebar-soft:#3b506d;
  --nodly-sidebar-text:#f5efe4;
  --nodly-sidebar-muted:#bbc7d4;
  --nodly-active:#f1e2b8;
  --nodly-action:#405f8f;
  --nodly-action-hover:#344f79;
  --nodly-accent:#c39a42;
  --nodly-positive:#6e86a9;
  --nodly-positive-soft:#e7edf5;
  --nodly-danger:#d97570;
  --nodly-field:#fffdf9;
  --nodly-border:#dce1e6;
  --nodly-inset:#f7f5f0;
  background:var(--nodly-canvas);
  color:var(--ink);
}

html[data-nodly-theme="dark"] body.authenticated{
  --ink:#f2eee6;
  --muted:#aeb8c2;
  --paper:#2a3036;
  --white:#323940;
  --forest:#6f8eb9;
  --sage:#3c4954;
  --mint:#37434e;
  --teal:#91a9ca;
  --sand:#4b4434;
  --amber:#d1ad5b;
  --rose:#b96866;
  --line:#47515a;
  --shadow:none;
  --nodly-canvas:#2a3036;
  --nodly-surface:#323940;
  --nodly-surface-raised:#374049;
  --nodly-surface-soft:#3c4650;
  --nodly-sidebar:#303a44;
  --nodly-sidebar-soft:#394754;
  --nodly-sidebar-text:#f3eee5;
  --nodly-sidebar-muted:#aeb9c5;
  --nodly-active:#d0ad60;
  --nodly-action:#5877a8;
  --nodly-action-hover:#6886b4;
  --nodly-accent:#d0ad60;
  --nodly-positive:#9eb4d0;
  --nodly-positive-soft:#3b4a5c;
  --nodly-danger:#b96866;
  --nodly-field:#30373e;
  --nodly-border:#47515a;
  --nodly-inset:#2e353c;
  background:var(--nodly-canvas);
}

/* Theme control */
.auth-theme-toggle,body:not(.authenticated) #themeToggle,body.patient-mode #themeToggle,body.superadmin-mode #themeToggle{display:none!important}
.theme-toggle{min-height:38px;padding:0 12px;border:1px solid var(--nodly-border,#dce1e6);border-radius:12px;background:var(--nodly-surface,#fff);color:var(--ink);display:inline-flex;align-items:center;gap:8px;font-size:10px;font-weight:700;cursor:pointer;transition:background .18s ease,border-color .18s ease,color .18s ease}
.theme-toggle:hover{background:var(--nodly-surface-soft,#eef1f4);border-color:color-mix(in srgb,var(--nodly-accent,#c39a42),var(--nodly-border,#dce1e6) 58%)}
.theme-toggle:focus-visible{outline:3px solid color-mix(in srgb,var(--nodly-accent,#c39a42),transparent 58%);outline-offset:2px}
.theme-toggle svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.55;stroke-linecap:round;stroke-linejoin:round}
html[data-nodly-theme="dark"] .theme-toggle svg{transform:rotate(180deg)}

/* Shell and navigation */
body.authenticated .app-shell,body.authenticated .main-area{background:var(--nodly-canvas)}
body.authenticated .sidebar{background:var(--nodly-sidebar);border-right-color:color-mix(in srgb,var(--nodly-sidebar-text),transparent 84%);color:var(--nodly-sidebar-text)}
body.authenticated .brand strong,body.authenticated .profile-card strong,body.authenticated .profile-name{color:var(--nodly-sidebar-text)}
body.authenticated .brand small,body.authenticated .profile-card small,body.authenticated .profile-mode,body.authenticated .profile-plan,body.authenticated .sidebar-plan small{color:var(--nodly-sidebar-muted)!important}
body.authenticated .brand-mark{background:transparent!important;box-shadow:none!important;color:var(--nodly-accent)!important}
body.authenticated .nodly-app-mark svg{stroke:currentColor!important}
body.authenticated .brand>div:nth-child(2)::after{background:linear-gradient(var(--nodly-accent),var(--nodly-accent)) left center/28px 1px no-repeat,radial-gradient(circle,var(--nodly-accent) 0 2px,transparent 2.2px) right center/6px 6px no-repeat}
body.authenticated .brand-notification{border-color:color-mix(in srgb,var(--nodly-sidebar-text),transparent 76%)!important;background:color-mix(in srgb,var(--nodly-sidebar-text),transparent 92%)!important;color:var(--nodly-sidebar-text)!important}
body.authenticated :is(.main-nav,.patient-nav,.admin-nav) .nav-item{color:var(--nodly-sidebar-muted);border-radius:12px}
body.authenticated :is(.main-nav,.patient-nav,.admin-nav) .nav-item:hover{background:color-mix(in srgb,var(--nodly-sidebar-text),transparent 91%);color:var(--nodly-sidebar-text)}
body.authenticated :is(.main-nav,.patient-nav,.admin-nav) .nav-item.active{background:var(--nodly-active);color:#27364a;box-shadow:inset 3px 0 0 var(--nodly-accent)}
body.authenticated :is(.main-nav,.patient-nav,.admin-nav) .nav-item.active .nodly-nav-icon{color:#27364a}
body.authenticated .nav-label{color:color-mix(in srgb,var(--nodly-sidebar-muted),transparent 18%)}
body.authenticated .profile-card{border-top-color:color-mix(in srgb,var(--nodly-sidebar-text),transparent 84%)}
body.authenticated .profile-card button{color:var(--nodly-sidebar-muted)}
body.authenticated .avatar-green{background:var(--nodly-active);color:#27364a}
body.authenticated .sidebar-plan{background:color-mix(in srgb,var(--nodly-active),transparent 84%);border:1px solid color-mix(in srgb,var(--nodly-active),transparent 60%)}

/* Open-paper canvas and Fichas */
body.authenticated .topbar{background:color-mix(in srgb,var(--nodly-canvas),transparent 6%);border-bottom-color:var(--nodly-border);box-shadow:none}
body.authenticated :is(.search,.timezone-button,.icon-button){background:var(--nodly-field);border-color:var(--nodly-border);color:var(--ink)}
body.authenticated .search input{color:var(--ink)}
body.authenticated .search kbd{background:var(--nodly-inset);border-color:var(--nodly-border);color:var(--muted)}
body.authenticated .view{color:var(--ink)}
body.authenticated :is(.card,.table-card,.analytics-card,.patient-detail-card,.settings-group,.account-section,.finance-panel,.finance-summary-card,.payment-summary-card,.package-card,.billing-card,.integration-card,.week-editor,.agenda-side-card,.availability-side-card,.sky-account-card){background:var(--nodly-surface);border-color:var(--nodly-border);box-shadow:var(--shadow);border-radius:16px 16px 16px 7px}
body.authenticated :is(.primary-button,.accept,.voice-record){background:var(--nodly-action);color:#fff;box-shadow:none}
body.authenticated :is(.primary-button,.accept,.voice-record):hover{background:var(--nodly-action-hover)}
body.authenticated :is(.secondary-button,.soft-button){background:var(--nodly-surface-raised);border-color:var(--nodly-border);color:var(--ink)}
body.authenticated :is(.field,input:not([type="checkbox"]):not([type="radio"]),select,textarea){background:var(--nodly-field);border-color:var(--nodly-border);color:var(--ink)}
body.authenticated :is(.eyebrow,.page-head-gesture,.text-link,.card-title a,.add-range){color:var(--nodly-action)}
body.authenticated :is(.badge,.status-ok,.status-pill,.patient-status,.mobile-patient-status){background:var(--nodly-positive-soft);color:var(--nodly-positive);border-color:color-mix(in srgb,var(--nodly-positive),transparent 68%)}
body.authenticated :is(.switch.on,.segmented button.active){background:var(--nodly-action);color:#fff}
body.authenticated input[type="checkbox"],body.authenticated input[type="radio"]{accent-color:var(--nodly-action)}

/* Hilos and Nudos use the same token everywhere. */
body.authenticated .page-head-gesture,body.authenticated .finance-tabs,body.authenticated .sky-next-eyebrow{--nodly-thread:var(--nodly-action)}
body.authenticated .page-head-gesture{color:var(--nodly-action)}
body.authenticated .patient-admin-tabs button.active::before,body.authenticated .patient-record-tabs button.active::before,body.authenticated .finance-tabs button.active::before,body.authenticated .app-shell .data-table thead th:first-child::before{background:var(--nodly-action)!important}
body.authenticated .patient-admin-tabs button.active::after,body.authenticated .patient-record-tabs button.active::after,body.authenticated .finance-tabs button.active::after,body.authenticated .app-shell .data-table thead th:first-child::after{background:var(--nodly-action)!important}
body.authenticated .data-table th{background:var(--nodly-inset);color:var(--muted);border-color:var(--nodly-border)}
body.authenticated .data-table td,body.authenticated .detail-list-row,body.authenticated .activity{border-color:var(--nodly-border);color:var(--ink)}
body.authenticated .data-table tr:hover td{background:color-mix(in srgb,var(--nodly-action),transparent 94%)}

/* Dashboard: keep the familiar cards, remove green product cues. */
body.authenticated .skydash-home{--sky-blue:#7892b5;--sky-indigo:#52688f;--sky-violet:#696c99;--sky-coral:#c86f6b;--sky-soft:var(--nodly-surface-soft);--sky-ink:var(--ink)}
body.authenticated .sky-agenda-card{background:var(--nodly-surface);border:1px solid var(--nodly-border);color:var(--ink);box-shadow:none;border-radius:18px 18px 18px 8px}
body.authenticated .sky-agenda-card:before,body.authenticated .sky-agenda-card:after{background:color-mix(in srgb,var(--nodly-action),transparent 88%);border-radius:58% 42% 52% 48%/44% 58% 42% 56%}
body.authenticated .sky-card-label,body.authenticated .sky-calendar-day{color:var(--nodly-action)}
body.authenticated .sky-agenda-copy p,body.authenticated .sky-agenda-visual small{color:var(--muted)}
body.authenticated .sky-agenda-copy .primary-button{background:var(--nodly-action)}
body.authenticated .sky-agenda-copy .soft-button{background:var(--nodly-surface-raised);color:var(--nodly-action);border:1px solid var(--nodly-border)}
body.authenticated .sky-agenda-visual{background:var(--nodly-surface-raised);box-shadow:0 14px 30px rgba(24,35,48,.12)}
body.authenticated .sky-agenda-visual i{background:color-mix(in srgb,var(--nodly-action),transparent 76%)}
body.authenticated .sky-agenda-visual b{color:#7892b5}
body.authenticated .sky-kpi{box-shadow:none;border:1px solid color-mix(in srgb,#fff,transparent 75%);border-radius:17px 17px 17px 7px}
body.authenticated .sky-blue{background:#7892b5}.skydash-home .sky-indigo{background:#52688f}.skydash-home .sky-violet{background:#696c99}.skydash-home .sky-coral{background:#c86f6b}
body.authenticated :is(.sky-next-session-pro,.sky-next-session-card,.sky-secondary-grid .activity-card,.sky-account-card){background:var(--nodly-surface)!important;border:1px solid var(--nodly-border)!important;box-shadow:none!important}
body.authenticated .sky-next-time,body.authenticated .sky-next-date{background:#5877a8;color:#fff;box-shadow:none}
body.authenticated .sky-next-access,body.authenticated .sky-next-action{background:var(--nodly-inset)!important;border-color:var(--nodly-border)!important;color:var(--ink)!important}
body.authenticated .sky-whatsapp-icon{background:var(--nodly-positive-soft);color:var(--nodly-positive)}
body.authenticated .sky-membership-ring{background:conic-gradient(var(--nodly-accent) var(--progress),var(--nodly-surface-soft) 0)}
body.authenticated .sky-membership-ring:before{background:var(--nodly-surface)}
body.authenticated .sky-membership-ring strong{color:var(--ink)}
body.authenticated .sky-account-progress{background:var(--nodly-surface-soft)}
body.authenticated .sky-account-progress i{background:var(--nodly-accent)}

/* Modals are Fichas raised above the notebook. */
body.authenticated .modal-backdrop{background:rgba(25,31,37,.62)}
body.authenticated .modal{background:var(--nodly-surface-raised);color:var(--ink);border:1px solid var(--nodly-border);box-shadow:0 28px 70px rgba(14,19,24,.34);border-radius:20px 20px 20px 8px}
body.authenticated .modal-close{background:var(--nodly-surface-soft);color:var(--ink)}
body.authenticated .modal :is(.channel-option,.collection-summary,.billing-form-section,.professional-arca-card,.patient-detail-card){background:var(--nodly-surface);border-color:var(--nodly-border);color:var(--ink)}
body.authenticated .toast{background:var(--nodly-action);color:#fff}

/* Dark graphite — tempered rather than black. */
html[data-nodly-theme="dark"] body.authenticated .topbar{background:rgba(42,48,54,.94)}
html[data-nodly-theme="dark"] body.authenticated :is(.sky-blue,.sky-indigo,.sky-violet,.sky-coral){color:#f7f2e8}
html[data-nodly-theme="dark"] body.authenticated .sky-blue{background:#405c80}
html[data-nodly-theme="dark"] body.authenticated .sky-indigo{background:#3b5272}
html[data-nodly-theme="dark"] body.authenticated .sky-violet{background:#555683}
html[data-nodly-theme="dark"] body.authenticated .sky-coral{background:#9f5557}
html[data-nodly-theme="dark"] body.authenticated .sky-agenda-visual{background:#f0e8d9;color:#25313d}
html[data-nodly-theme="dark"] body.authenticated .sky-agenda-visual small{color:#64707b}
html[data-nodly-theme="dark"] body.authenticated .sky-agenda-copy .soft-button{background:#303b46;color:#c5d3e5}
html[data-nodly-theme="dark"] body.authenticated :is(.analytics-card,.chart-card,.activity-card,.today-card,.patient-card,.settings-card,.availability-card){background:var(--nodly-surface)!important;color:var(--ink);border-color:var(--nodly-border)!important;box-shadow:none!important}
html[data-nodly-theme="dark"] body.authenticated :is(.analytics-icon,.activity-icon,.metric-icon,.entity-symbol,.empty-icon){background:var(--nodly-positive-soft);color:var(--nodly-positive)}
html[data-nodly-theme="dark"] body.authenticated :is(.segmented,.patient-admin-tabs,.patient-record-tabs,.finance-tabs,.toolbar){background:var(--nodly-surface);border-color:var(--nodly-border)}
html[data-nodly-theme="dark"] body.authenticated :is(.finance-summary-card,.payment-kpi,.finance-kpi,.package-stat,.patient-summary article){background:var(--nodly-surface)!important;border-color:var(--nodly-border)!important;color:var(--ink)}
html[data-nodly-theme="dark"] body.authenticated :is(.badge.amber,.status-warning,.attention .badge){background:#51452f;color:#e4c579;border-color:#69583a}
html[data-nodly-theme="dark"] body.authenticated :is(.status-error,.danger,.badge.red){background:#563b3d;color:#e0a2a0;border-color:#70494c}

/* Mobile inherits the same language and keeps all touch targets. */
@media(max-width:768px){
  .theme-toggle{width:42px;min-width:42px;height:42px;padding:0;justify-content:center;border-radius:13px}
  .theme-toggle span{display:none}
  body.authenticated:not(.superadmin-mode) .top-actions{display:flex!important}
  body.authenticated:not(.superadmin-mode) .topbar{background:color-mix(in srgb,var(--nodly-canvas),transparent 7%)}
  body.authenticated:not(.superadmin-mode) .topbar:before{color:var(--ink)}
  body.authenticated:not(.superadmin-mode) .main-area{background:var(--nodly-canvas)}
  body.authenticated:not(.superadmin-mode) .view{color:var(--ink)}
  .mobile-bottom-nav{background:color-mix(in srgb,var(--nodly-surface),transparent 3%);border-top-color:var(--nodly-border);box-shadow:0 -8px 26px rgba(15,21,28,.12)}
  .mobile-bottom-nav button{color:var(--muted)}
  .mobile-bottom-nav button.active{color:var(--nodly-action);background:var(--nodly-positive-soft)}
  .mobile-bottom-nav .mobile-create{color:var(--nodly-action)}
  .mobile-bottom-nav .mobile-create span{background:var(--nodly-action);color:#fff;box-shadow:none}
  .mobile-sheet{background:var(--nodly-surface-raised);color:var(--ink);border:1px solid var(--nodly-border)}
  .mobile-sheet-handle{background:var(--nodly-border)}
  .mobile-sheet header h2,.mobile-greeting h1,.mobile-section-title h2{color:var(--ink)}
  .mobile-sheet header button,.mobile-sheet-action,.mobile-appointment-row,.mobile-quick-grid button,.mobile-patient-card{background:var(--nodly-surface);color:var(--ink);box-shadow:none;border:1px solid var(--nodly-border)}
  .mobile-sheet-action:active,.mobile-sheet-action i,.mobile-empty-day,.mobile-quick-grid i,.mobile-patient-card footer button,.mobile-patient-card footer a{background:var(--nodly-positive-soft);color:var(--nodly-positive)}
  .mobile-next-card{background:var(--nodly-sidebar);color:var(--nodly-sidebar-text);box-shadow:none;border:1px solid color-mix(in srgb,var(--nodly-sidebar-text),transparent 82%)}
  .mobile-next-card>small,.mobile-next-main span{color:var(--nodly-sidebar-muted)}
  .mobile-next-actions button,.mobile-next-actions a{background:var(--nodly-active);color:#27364a}
  .mobile-next-actions .secondary{background:color-mix(in srgb,var(--nodly-sidebar-text),transparent 88%);color:var(--nodly-sidebar-text)}
  .mobile-appointment-row strong,.mobile-patient-card h3,.mobile-patient-facts strong{color:var(--ink)}
  .mobile-appointment-row time,.mobile-section-title button{color:var(--nodly-action)}
  .mobile-patient-facts span{background:var(--nodly-inset)}
  .mobile-patient-directory-head input{background:var(--nodly-field);border-color:var(--nodly-border);color:var(--ink)}
  .mobile-patient-directory-head button,.mobile-patient-card footer button:first-child,.mobile-patient-actions .primary{background:var(--nodly-action);color:#fff}
  body.authenticated:not(.superadmin-mode) .data-table tr{background:var(--nodly-surface);box-shadow:none;border:1px solid var(--nodly-border)!important}
  body.authenticated:not(.superadmin-mode) .data-table td{border-bottom-color:var(--nodly-border)!important}
  .patient-detail-modal .patient-record-tabs{background:var(--nodly-surface-raised)}
  .modal{background:var(--nodly-surface-raised)!important}
}

@media(prefers-reduced-motion:reduce){.theme-toggle{transition:none}}
