/* Movimiento y comprobación compartidos. Los estados representan datos reales. */
.tv2-ui .tv2-status { display:flex; align-items:center; gap:var(--tv2-space-3); min-width:0; }
.tv2-ui .tv2-status__ring { position:relative; display:grid; place-items:center; width:var(--tv2-status-size); height:var(--tv2-status-size); flex:0 0 var(--tv2-status-size); color:var(--tv2-brand); }
.tv2-ui .tv2-status__ring svg { position:absolute; inset:0; width:100%; height:100%; fill:none; stroke:currentColor; stroke-width:2.5; stroke-linecap:round; }
.tv2-ui .tv2-status__track { stroke:var(--tv2-border); }
.tv2-ui .tv2-status__arc { stroke-dasharray:100; transform:rotate(-90deg); transform-origin:center; transition:stroke-dashoffset var(--tv2-motion-state) var(--tv2-ease); }
.tv2-ui .tv2-status__number { color:var(--tv2-ink); font-size:var(--tv2-text-body); font-weight:var(--tv2-weight-semibold); font-variant-numeric:tabular-nums; }
.tv2-ui .tv2-status__check { stroke-dasharray:100; stroke-dashoffset:100; opacity:0; transition:stroke-dashoffset var(--tv2-motion-state) var(--tv2-ease),opacity var(--tv2-motion-fast); }
.tv2-ui .tv2-status:is([data-state="ready"],[data-state="success"]) .tv2-status__check { opacity:1; stroke-dashoffset:0; }
.tv2-ui .tv2-status:is([data-state="ready"],[data-state="success"]) .tv2-status__number { visibility:hidden; }
.tv2-ui .tv2-status[data-state="error"] .tv2-status__ring { color:var(--tv2-danger); }
.tv2-ui .tv2-status[data-state="working"] .tv2-status__arc { stroke-dasharray:22 78; stroke-dashoffset:0; animation:tv2-status-spin var(--tv2-motion-loop) linear infinite; }
.tv2-ui .tv2-status__copy { min-width:0; display:grid; gap:var(--tv2-space-1); }
.tv2-ui .tv2-status__copy > strong { font-size:var(--tv2-text-sm); font-weight:var(--tv2-weight-semibold); overflow-wrap:anywhere; }
.tv2-ui .tv2-status__copy > .tv2-caption { font-size:var(--tv2-text-xs); }
.tv2-ui [data-tv2-readiness] { display:flex; flex-direction:column; gap:var(--tv2-space-2); padding-block:var(--tv2-space-3); }
.tv2-ui [data-tv2-readiness] > .tv2-status { order:-1; }
.tv2-ui .tv2-disclosure { min-width:0; border:1px solid var(--tv2-border); border-radius:var(--tv2-radius-control); background:var(--tv2-surface); }
.tv2-ui .tv2-disclosure > summary { display:flex; align-items:center; gap:var(--tv2-space-2); cursor:pointer; list-style:none; min-height:var(--tv2-control-touch); padding:var(--tv2-space-2) var(--tv2-space-3); color:var(--tv2-ink); font-size:var(--tv2-text-sm); font-weight:var(--tv2-weight-medium); }
/* La tarjeta desplegable no duplica el padding exterior con el de summary. */
.tv2-ui .tv2-disclosure.tv2-card:not(.tv2-filter-panel) { padding:0; margin-block:0; }
.tv2-ui .tv2-disclosure > summary > span { display:inline-flex; align-items:center; gap:var(--tv2-space-2); margin-left:0; min-width:0; }
.tv2-ui .tv2-disclosure > summary::-webkit-details-marker { display:none; }
.tv2-ui .tv2-disclosure > summary::after { content:'⌄'; margin-left:auto; color:var(--tv2-muted); transition:transform var(--tv2-motion-expand) var(--tv2-ease); }
.tv2-ui .tv2-disclosure > summary[aria-expanded="true"]::after { transform:rotate(180deg); }
.tv2-ui .tv2-disclosure:not(.tv2-filter-panel) > :not(summary):not(.tv2-disclosure__body):not(.tv2-disclosure__content) { margin-inline:var(--tv2-space-3); }
.tv2-ui .tv2-disclosure__body { overflow:hidden; }
.tv2-ui .tv2-disclosure__content { padding:var(--tv2-space-3); padding-top:0; display:grid; gap:var(--tv2-space-3); }
.tv2-ui .tv2-disclosure:has(> summary:hover) { border-color:var(--tv2-border-strong); }
.tv2-ui .tv2-readiness__details { background:var(--tv2-surface-soft); }
.tv2-ui .tv2-readiness__list { list-style:none; padding:0 var(--tv2-space-3) var(--tv2-space-2); margin:0; }
.tv2-ui .tv2-readiness__list button { display:block; text-align:left; width:100%; min-height:var(--tv2-control-touch); border:0; background:transparent; color:var(--tv2-brand-ink); font-size:var(--tv2-text-sm); padding:var(--tv2-space-2) 0; }
.tv2-ui .tv2-readiness__list button:hover { text-decoration:underline; }
.tv2-ui [data-tv2-progress-section] { transition:border-color var(--tv2-motion-fast); }
.tv2-ui [data-tv2-progress-section][data-tv2-section-state="ready"] { border-color:var(--tv2-border-strong); }
.tv2-ui .tv2-choice-group { position:relative; display:flex; flex-wrap:wrap; gap:var(--tv2-space-1); border:1px solid var(--tv2-border); border-radius:var(--tv2-radius-control); background:var(--tv2-surface-soft); padding:var(--tv2-space-1); margin:0; min-width:0; }
.tv2-ui .tv2-choice-group > label { position:relative; z-index:1; flex:1 1 auto; margin:0; cursor:pointer; }
.tv2-ui .tv2-choice-marker { position:absolute; top:0; left:0; pointer-events:none; border:1px solid var(--tv2-border-strong); border-radius:var(--tv2-radius-sm); background:var(--tv2-surface); box-shadow:var(--tv2-shadow); transition:transform var(--tv2-motion-expand) var(--tv2-ease),width var(--tv2-motion-expand),height var(--tv2-motion-expand); }
.tv2-ui .tv2-choice-group input { position:absolute; opacity:0; width:1px; height:1px; }
.tv2-ui .tv2-choice-group label > span { display:flex; align-items:center; justify-content:center; gap:var(--tv2-space-2); min-height:var(--tv2-control-touch); padding:var(--tv2-space-2) var(--tv2-space-3); border:1px solid transparent; border-radius:var(--tv2-radius-sm); font-size:var(--tv2-text-sm); transition:background var(--tv2-motion-fast),border-color var(--tv2-motion-fast),box-shadow var(--tv2-motion-fast); }
.tv2-ui .tv2-choice-group input:checked + span { background:var(--tv2-surface); color:var(--tv2-brand-ink); border-color:var(--tv2-border-strong); box-shadow:var(--tv2-shadow); }
.tv2-ui .tv2-choice-group[data-tv2-choice-ready] input:checked + span { background:transparent; border-color:transparent; box-shadow:none; }
.tv2-ui .tv2-choice-group input:focus-visible + span { outline:2px solid var(--tv2-brand); outline-offset:2px; }
.tv2-ui .tv2-choice-group input:disabled + span { opacity:.55; cursor:not-allowed; }
.tv2-ui fieldset[data-tv2-when] { border:0; margin:0; padding:0; min-width:0; }
.tv2-ui .tv2-flow-stack { display:grid; align-content:start; gap:var(--tv2-space-3); min-width:0; }
.tv2-ui .tv2-flow-layout { display:grid; grid-template-columns:minmax(0,var(--tv2-editor-rail-width)) minmax(0,1fr); gap:var(--tv2-space-5); align-items:start; }
.tv2-ui .tv2-notice:not([hidden]) { animation:tv2-feedback-enter var(--tv2-motion-expand) var(--tv2-ease); }
.tv2-ui .tv2-button[aria-busy="true"]:not(:has(.tv2-loader))::before { content:''; width:var(--tv2-icon-small); height:var(--tv2-icon-small); border:2px solid currentColor; border-right-color:transparent; border-radius:var(--tv2-radius-pill); animation:tv2-status-spin var(--tv2-motion-loop) linear infinite; flex-shrink:0; }
.tv2-ui :is(.tv2-pos-person,.tv2-services-type-option > span,.tv2-pos-agenda-choice,.tv2-check) { transition:background var(--tv2-motion-fast),border-color var(--tv2-motion-fast),box-shadow var(--tv2-motion-fast); }
.tv2-ui .tv2-dialog[open] { animation:tv2-panel-enter var(--tv2-motion-expand) var(--tv2-ease); }
@keyframes tv2-status-spin { from { transform:rotate(-90deg); } to { transform:rotate(270deg); } }
@keyframes tv2-feedback-enter { from { opacity:0; transform:translateY(var(--tv2-motion-shift)); } to { opacity:1; transform:translateY(0); } }
@keyframes tv2-panel-enter { from { opacity:0; transform:translateY(var(--tv2-motion-shift)) scale(.985); } to { opacity:1; transform:translateY(0) scale(1); } }
@media (max-width:760px) { .tv2-ui .tv2-flow-layout { grid-template-columns:minmax(0,1fr); gap:var(--tv2-space-3); } }
@media (prefers-reduced-motion:reduce) { .tv2-ui *, .tv2-ui *::before, .tv2-ui *::after { animation:none !important; transition:none !important; } }
