/* Estilo inspirado en las Human Interface Guidelines de Apple: tipografía del sistema, fondos agrupados,
   superficies traslúcidas solo en la capa flotante (navegación), color con significado y modo oscuro nativo. */
:root{
  color-scheme: light dark;
  --accent:#0071e3; --accent-soft:rgba(0,113,227,.10); --accent-hover:#0062c4;
  --green:#248a3d; --green-soft:rgba(52,199,89,.16);
  --red:#d70015;   --red-soft:rgba(255,59,48,.13);
  --orange:#b25000; --orange-soft:rgba(255,149,0,.18);
  --gray-soft:rgba(120,120,128,.16);
  --ink:#1d1d1f; --muted:#6e6e73; --line:rgba(60,60,67,.13);
  --bg:#f5f5f7; --card:#ffffff; --fill:rgba(118,118,128,.10); --fill-hover:rgba(118,118,128,.16);
  --bar:rgba(255,255,255,.72); --shadow:0 1px 2px rgba(0,0,0,.04),0 4px 16px rgba(0,0,0,.04);
  --r:16px; --r-sm:10px;
  --bs-body-font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","SF Pro Display","Inter","Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --bs-body-color:var(--ink); --bs-body-bg:var(--bg); --bs-primary:#0071e3; --bs-primary-rgb:0,113,227;
  --bs-link-color:var(--accent); --bs-link-hover-color:var(--accent-hover); --bs-border-color:var(--line);
}
[data-bs-theme=dark]{
  --accent:#2997ff; --accent-soft:rgba(41,151,255,.18); --accent-hover:#5ab0ff;
  --green:#30d158; --green-soft:rgba(48,209,88,.20); --red:#ff453a; --red-soft:rgba(255,69,58,.20);
  --orange:#ff9f0a; --orange-soft:rgba(255,159,10,.22); --gray-soft:rgba(235,235,245,.16);
  --ink:#f5f5f7; --muted:#98989d; --line:rgba(84,84,88,.55); --bg:#000; --card:#1c1c1e;
  --fill:rgba(118,118,128,.24); --fill-hover:rgba(118,118,128,.34); --bar:rgba(28,28,30,.72);
  --shadow:none; --bs-body-color:var(--ink); --bs-body-bg:var(--bg); --bs-border-color:var(--line);
}
html{-webkit-text-size-adjust:100%}
body{background:var(--bg);color:var(--ink);font-size:15px;line-height:1.47;letter-spacing:-.008em;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
@media (max-width:991.98px){body{font-size:16px}}
h1,.h1{font-size:2rem;font-weight:700;letter-spacing:-.022em;line-height:1.12}
h2,.h2{font-size:1.3rem;font-weight:600;letter-spacing:-.014em}
.h3,h3{font-weight:650;letter-spacing:-.018em}
a{text-decoration:none} a:hover{text-decoration:underline;text-underline-offset:3px}
.text-muted,.text-secondary,.form-text{color:var(--muted)!important}
.text-primary{color:var(--accent)!important}
code{color:var(--ink);background:var(--fill);padding:.1em .4em;border-radius:6px;font-size:.88em}

/* ---- Botones: rellenos, redondeados, sin bordes duros ---- */
.btn{--bs-btn-border-radius:var(--r-sm);--bs-btn-padding-y:.5rem;--bs-btn-padding-x:1rem;font-weight:500;letter-spacing:-.01em;border-width:0;min-height:36px;transition:background-color .15s,transform .08s,opacity .15s}
.btn:active{transform:scale(.98)}
.btn-lg{--bs-btn-padding-y:.7rem;--bs-btn-padding-x:1.4rem;--bs-btn-font-size:1.02rem;min-height:48px;border-radius:12px}
.btn-sm{--bs-btn-padding-y:.3rem;--bs-btn-padding-x:.7rem;--bs-btn-font-size:.85rem;min-height:30px}
.btn-primary{--bs-btn-bg:var(--accent);--bs-btn-hover-bg:var(--accent-hover);--bs-btn-active-bg:var(--accent-hover);--bs-btn-color:#fff;--bs-btn-hover-color:#fff;--bs-btn-border-color:transparent;--bs-btn-hover-border-color:transparent;--bs-btn-active-border-color:transparent}
.btn-success{--bs-btn-bg:#248a3d;--bs-btn-hover-bg:#1d7433;--bs-btn-active-bg:#1d7433;--bs-btn-border-color:transparent;--bs-btn-hover-border-color:transparent}
.btn-danger{--bs-btn-bg:#d70015;--bs-btn-hover-bg:#b80012;--bs-btn-border-color:transparent;--bs-btn-hover-border-color:transparent}
.btn-warning{--bs-btn-bg:#ff9f0a;--bs-btn-hover-bg:#e68f00;--bs-btn-color:#1d1d1f;--bs-btn-border-color:transparent}
/* Botones "contorno" = tinted (relleno suave con el color del significado) */
.btn-outline-primary,.btn-outline-secondary,.btn-outline-success,.btn-outline-danger,.btn-outline-dark,.btn-light,.btn-outline-light{border-width:0}
.btn-outline-primary{--bs-btn-color:var(--accent);--bs-btn-bg:var(--accent-soft);--bs-btn-hover-bg:var(--accent);--bs-btn-hover-color:#fff;--bs-btn-active-bg:var(--accent);--bs-btn-active-color:#fff}
.btn-outline-secondary,.btn-light{--bs-btn-color:var(--ink);--bs-btn-bg:var(--fill);--bs-btn-hover-bg:var(--fill-hover);--bs-btn-hover-color:var(--ink);--bs-btn-active-bg:var(--fill-hover);--bs-btn-active-color:var(--ink)}
.btn-outline-success{--bs-btn-color:var(--green);--bs-btn-bg:var(--green-soft);--bs-btn-hover-bg:#248a3d;--bs-btn-hover-color:#fff;--bs-btn-active-bg:#248a3d;--bs-btn-active-color:#fff}
.btn-outline-danger{--bs-btn-color:var(--red);--bs-btn-bg:var(--red-soft);--bs-btn-hover-bg:#d70015;--bs-btn-hover-color:#fff;--bs-btn-active-bg:#d70015;--bs-btn-active-color:#fff}
.btn-outline-dark{--bs-btn-color:var(--ink);--bs-btn-bg:var(--fill);--bs-btn-hover-bg:var(--fill-hover);--bs-btn-hover-color:var(--ink)}
.btn-link{border-width:0;min-height:0}
.btn-close{opacity:.5}

/* ---- Campos ---- */
.form-label{font-weight:500;font-size:.8rem;color:var(--muted);margin-bottom:.3rem}
.form-control,.form-select,.input-group-text{background-color:var(--fill);border:1px solid transparent;border-radius:var(--r-sm);color:var(--ink);min-height:40px}
.form-control::placeholder{color:var(--muted);opacity:.7}
.form-control-sm,.form-select-sm{min-height:32px;border-radius:8px}
.form-control:focus,.form-select:focus{background-color:var(--card);border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft);color:var(--ink)}
.form-control:disabled{background:var(--fill);opacity:.7}
.input-group>.form-control,.input-group>.form-select{border-radius:var(--r-sm)}
.input-group>:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}
.input-group>:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}
.input-group-text{color:var(--muted)}
.form-check-input{width:1.15em;height:1.15em;background-color:var(--fill-hover);border-color:transparent}
.form-check-input:checked{background-color:var(--accent);border-color:var(--accent)}
.form-range::-webkit-slider-thumb{background:var(--card);border:.5px solid rgba(0,0,0,.08);box-shadow:0 2px 6px rgba(0,0,0,.25);width:1.5rem;height:1.5rem;margin-top:-.5rem}
.form-range::-webkit-slider-runnable-track{background:var(--fill-hover);height:.5rem;border-radius:1rem}
.form-range::-moz-range-thumb{background:var(--card);border:0;box-shadow:0 2px 6px rgba(0,0,0,.25);width:1.5rem;height:1.5rem}
.form-range::-moz-range-track{background:var(--fill-hover);height:.5rem;border-radius:1rem}
select.form-select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%238e8e93' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}
:focus-visible{outline:3px solid var(--accent-soft);outline-offset:2px;box-shadow:0 0 0 2px var(--accent)}
.form-control:focus-visible,.form-select:focus-visible{box-shadow:0 0 0 4px var(--accent-soft)}

/* ---- Navegación: barra lateral traslúcida (capa flotante) ---- */
.sidebar{width:260px;background:var(--bar);-webkit-backdrop-filter:saturate(180%) blur(28px);backdrop-filter:saturate(180%) blur(28px);color:var(--ink);display:flex;flex-direction:column;border-right:1px solid var(--line)}
.sidebar .brand{padding:1.5rem 1.25rem 1rem;color:var(--ink);font-weight:650;font-size:1.05rem;letter-spacing:-.02em;display:flex;gap:.6rem;align-items:center}
.sidebar .brand i{background:var(--accent);color:#fff;border-radius:9px;padding:.32rem .48rem;font-size:.95rem}
.sidebar .nav{padding:0 .6rem}
.sidebar .nav-link{color:var(--ink);border-radius:9px;padding:.5rem .75rem;margin:.1rem 0;display:flex;gap:.7rem;align-items:center;font-weight:500;font-size:.95rem}
.sidebar .nav-link i{color:var(--accent);font-size:1.05rem;width:1.3rem;text-align:center}
.sidebar .nav-link:hover{background:var(--fill);text-decoration:none}
.sidebar .nav-link.active{background:var(--accent);color:#fff}
.sidebar .nav-link.active i{color:#fff}
.sidebar .foot{margin-top:auto;padding:1rem 1.25rem;border-top:1px solid var(--line);font-size:.82rem;color:var(--muted)}
.sidebar .foot .text-white{color:var(--ink)!important}
.sidebar .foot .btn-outline-light{background:var(--fill);color:var(--ink)}
.offcanvas.sidebar{background:var(--card);width:290px}
@media (min-width:992px){ .sidebar{position:fixed;inset:0 auto 0 0} .main{margin-left:260px} }
.topbar{background:var(--bar);color:var(--ink);-webkit-backdrop-filter:saturate(180%) blur(24px);backdrop-filter:saturate(180%) blur(24px);border-bottom:1px solid var(--line);z-index:1020}
.topbar .btn-outline-light{background:var(--fill);color:var(--accent)}
.main{min-height:100vh}
.page{max-width:1120px;margin:0 auto;padding:1.5rem 1rem 5rem}
@media (min-width:992px){.page{padding:2.5rem 2.5rem 5rem}}
@media (prefers-reduced-transparency:reduce){.sidebar,.topbar{-webkit-backdrop-filter:none;backdrop-filter:none;background:var(--card)}}

/* ---- Superficies ---- */
.card{border:0;border-radius:var(--r);box-shadow:var(--shadow);background:var(--card);color:var(--ink)}
.card-header{background:transparent;border-bottom:1px solid var(--line);font-weight:600;padding:1rem 1.25rem;letter-spacing:-.01em}
.card-body{padding:1.25rem}
.list-group{--bs-list-group-bg:transparent;--bs-list-group-border-color:var(--line);--bs-list-group-color:var(--ink)}
.list-group-item{background:transparent;color:var(--ink);padding:.85rem 1.25rem}
.list-group-flush>.list-group-item{border-color:var(--line)}
.stat{padding:1.1rem 1.25rem}
.stat .label{color:var(--muted);font-size:.8rem;font-weight:500}
.stat .value{font-size:1.9rem;font-weight:700;letter-spacing:-.03em;line-height:1.15;margin-top:.15rem}
.stat .hint{font-size:.78rem;color:var(--muted);margin-top:.2rem}
.stat .icon{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font-size:1rem}
.alert{border:0;border-radius:var(--r-sm);padding:.9rem 1.1rem}
.alert-success{background:var(--green-soft);color:var(--green)} .alert-danger{background:var(--red-soft);color:var(--red)}
.alert-warning{background:var(--orange-soft);color:var(--orange)} .alert-info{background:var(--accent-soft);color:var(--accent)}
.alert-dark{background:var(--gray-soft);color:var(--ink)}
.alert .btn-close{filter:none}
.modal-content{border:0;border-radius:20px;background:var(--card);box-shadow:0 20px 60px rgba(0,0,0,.25)}
.modal-header,.modal-footer{border-color:var(--line)}
.modal-backdrop.show{opacity:.35}

/* ---- Tablas ---- */
.table{--bs-table-bg:transparent;--bs-table-color:var(--ink);--bs-table-border-color:var(--line);margin-bottom:0}
.table thead th{font-size:.78rem;color:var(--muted);font-weight:500;border-bottom:1px solid var(--line);white-space:nowrap;padding:.7rem .9rem}
.table td{vertical-align:middle;border-color:var(--line);padding:.8rem .9rem}
.table>:not(caption)>*>*{background-color:transparent;color:var(--ink)}
.table-hover>tbody>tr:hover>*{background-color:var(--fill)}
.table-responsive{border-radius:0 0 var(--r) var(--r)}

/* ---- Insignias tintadas ---- */
.badge{font-weight:600;border-radius:980px}
.badge-status{font-weight:600;padding:.38em .75em;font-size:.74rem;letter-spacing:0}
.text-bg-success{background:var(--green-soft)!important;color:var(--green)!important}
.text-bg-danger{background:var(--red-soft)!important;color:var(--red)!important}
.text-bg-warning{background:var(--orange-soft)!important;color:var(--orange)!important}
.text-bg-secondary{background:var(--gray-soft)!important;color:var(--muted)!important}
.text-bg-dark{background:var(--ink)!important;color:var(--bg)!important}
.text-bg-primary,.text-bg-info{background:var(--accent-soft)!important;color:var(--accent)!important}
.text-bg-light{background:var(--fill)!important;color:var(--ink)!important;border:0!important}
.text-bg-primary .btn-close-white{filter:none}
.progress{height:6px;border-radius:6px;background:var(--fill-hover);overflow:hidden}
.progress-bar{border-radius:6px;transition:width .35s cubic-bezier(.4,0,.2,1)}
.progress-bar.bg-primary{background:var(--accent)!important}
.progress-bar.bg-success{background:#34c759!important}
.progress-bar.bg-secondary{background:transparent!important}
.border,.border-top,.border-bottom{border-color:var(--line)!important}
.bg-light{background:var(--fill)!important}
.bg-warning-subtle{background:var(--orange-soft)!important;color:var(--ink)}
.bg-primary-subtle{background:var(--accent-soft)!important}
.section-title{font-size:.74rem;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-weight:600}
.border-warning-subtle,.border-danger-subtle,.border-primary{border:0!important}
.card.border-danger-subtle .card-header{color:var(--red)}
.card.border-primary .card-header{color:var(--accent)}

/* ---- Actividades ---- */
.item-card{border-radius:14px;background:var(--card);margin-bottom:1rem;box-shadow:inset 0 0 0 1px var(--line)}
.item-card .item-head{display:flex;gap:.5rem;align-items:center;padding:.7rem .9rem;border-bottom:1px solid var(--line);border-radius:14px 14px 0 0}
.item-card .item-head .form-control{background:transparent;font-weight:600;font-size:1rem}
.item-card .item-head .form-control:focus{background:var(--fill)}
.item-card .handle{color:var(--muted);font-weight:600;min-width:1.8rem}
.item-card .item-body{padding:1rem}
.range-pct{width:100%}

/* ---- Revisor externo ---- */
.review-shell{max-width:860px;margin:0 auto;padding:1.5rem 1rem 4rem}
.review-hero{background:var(--card);color:var(--ink);border-radius:24px;padding:2rem;box-shadow:var(--shadow)}
.review-hero .amount{font-size:2.6rem;font-weight:700;letter-spacing:-.035em;line-height:1.05}
.review-hero .h3{font-weight:700;letter-spacing:-.03em;font-size:1.7rem}
.timeline{list-style:none;padding-left:0;margin:0}
.timeline li{border-left:2px solid var(--line);padding:0 0 1rem 1rem;margin-left:.4rem;position:relative}
.timeline li::before{content:"";position:absolute;left:-6px;top:.35rem;width:10px;height:10px;border-radius:50%;background:var(--accent)}
.code-input{font-size:2rem;letter-spacing:.6rem;text-align:center;font-weight:600}
.link-box{font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace;font-size:.8rem;word-break:break-all;background:var(--fill);border-radius:var(--r-sm);padding:.7rem .85rem;color:var(--ink)}
.auth-wrap{min-height:100vh;display:grid;place-items:center;padding:1rem}
.auth-card{width:100%;max-width:400px}
.auth-card .card{border-radius:22px}
.btn-loading{pointer-events:none;opacity:.7}
.skip-link{position:absolute;left:-999px}.skip-link:focus{left:8px;top:8px;z-index:2000;background:var(--card);padding:.5rem;border-radius:8px}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
@media print{.sidebar,.topbar,.no-print{display:none!important}.main{margin:0!important}}
/* Ajustes finos */
.form-range::-webkit-slider-thumb{background:#fff}
.form-range::-moz-range-thumb{background:#fff}
*{scrollbar-color:var(--fill-hover) transparent}
textarea.form-control{resize:vertical}
/* Selector de apariencia */
:root{color-scheme:light}
[data-bs-theme=dark]{color-scheme:dark}
.theme-toggle{display:flex;background:var(--fill);border-radius:10px;padding:2px;gap:2px}
.theme-toggle button{flex:1;border:0;background:transparent;color:var(--muted);border-radius:8px;padding:.3rem .2rem;font-size:.74rem;font-weight:500;display:flex;flex-direction:column;align-items:center;gap:1px;min-height:44px}
.theme-toggle button i{font-size:1rem}
.theme-toggle button.active{background:var(--card);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.15)}
.theme-toggle-float{position:fixed;top:.75rem;right:.75rem;z-index:1030;width:190px}
.theme-toggle-float button{flex-direction:row;justify-content:center;min-height:32px;gap:.3rem}
.theme-toggle-float button span{display:none}
.sidebar .foot .theme-toggle{margin-bottom:.75rem}
