diff --git a/dist/index.html b/dist/index.html index 9f16905..dafa111 100644 --- a/dist/index.html +++ b/dist/index.html @@ -35,7 +35,16 @@ /* Sobre una franja casi blanca, un hover blanco no se vería: aquí oscurece. */ --hover: rgba(0, 0, 0, 0.06); --btn-hover: rgba(0, 0, 0, 0.08); - --sep: rgba(0, 0, 0, 0.22); /* separador fino entre pestañas inactivas */ + --sep: rgba(0, 0, 0, 0.22); /* aro del favicon mientras carga */ + /* PROFUNDIDAD. La inactiva no lleva un relleno gris —un bloque sólido pesa y compite + con la activa— sino un velo casi imperceptible y una sombra INTERIOR: parece estar un + plano por debajo. Al pasar el ratón cambia de signo, la sombra sale hacia fuera y la + pestaña sube: por eso el hover va hacia el BLANCO de la activa y no hacia el gris. */ + --tab-atras: rgba(0, 0, 0, 0.035); + --tab-atras-sombra: inset 0 1px 1.5px rgba(0, 0, 0, 0.055); + --tab-hover-bg: rgba(255, 255, 255, 0.85); + --tab-hover-sombra: 0 1px 3px rgba(0, 0, 0, 0.10); + --tab-activa-sombra: 0 -1px 4px rgba(0, 0, 0, 0.07); } /* ── Quién decide el tema ── La APP, no Windows: la web elige su modo con su propio botón (clase `dark` en su @@ -57,6 +66,13 @@ --hover: rgba(255, 255, 255, 0.08); --btn-hover: rgba(255, 255, 255, 0.1); --sep: rgba(255, 255, 255, 0.25); + /* En oscuro el movimiento es el mismo pero con luz: la inactiva se hunde con un velo + blanco muy tenue y una sombra negra dentro; al pasar el ratón sube hacia la luz. */ + --tab-atras: rgba(255, 255, 255, 0.035); + --tab-atras-sombra: inset 0 1px 1.5px rgba(0, 0, 0, 0.35); + --tab-hover-bg: rgba(255, 255, 255, 0.10); + --tab-hover-sombra: 0 1px 3px rgba(0, 0, 0, 0.45); + --tab-activa-sombra: 0 -1px 4px rgba(0, 0, 0, 0.35); } } :root.oscuro { @@ -69,6 +85,13 @@ --hover: rgba(255, 255, 255, 0.08); --btn-hover: rgba(255, 255, 255, 0.1); --sep: rgba(255, 255, 255, 0.25); + /* En oscuro el movimiento es el mismo pero con luz: la inactiva se hunde con un velo + blanco muy tenue y una sombra negra dentro; al pasar el ratón sube hacia la luz. */ + --tab-atras: rgba(255, 255, 255, 0.035); + --tab-atras-sombra: inset 0 1px 1.5px rgba(0, 0, 0, 0.35); + --tab-hover-bg: rgba(255, 255, 255, 0.10); + --tab-hover-sombra: 0 1px 3px rgba(0, 0, 0, 0.45); + --tab-activa-sombra: 0 -1px 4px rgba(0, 0, 0, 0.35); } * { box-sizing: border-box; } html, body { @@ -119,53 +142,46 @@ height: 30px; margin-bottom: 5px; padding: 0 6px 0 10px; - border-radius: 9px; /* inactiva: píldora redondeada (hover) */ + border-radius: 9px; /* inactiva: píldora redondeada */ position: relative; - overflow: visible; /* deja asomar las curvas de la base de la activa */ + overflow: visible; /* las sombras viven fuera de la caja */ + transition: background 140ms ease, box-shadow 140ms ease, color 140ms ease; } - .tab:not(.active):hover { background: var(--hover); } - /* Separador fino a la IZQUIERDA de cada inactiva; se oculta pegado a la activa, - al hover y en la primera (igual que Chrome). */ - .tab:not(.active)::before { - content: ""; - position: absolute; - left: -1px; - top: 50%; - transform: translateY(-50%); - width: 1px; - height: 16px; - background: var(--sep); + /* ── PROFUNDIDAD: las que no mandan están detrás ────────────────────────────────── + Antes la inactiva no era nada: texto suelto sobre la franja, al mismo plano que la + activa, y lo único que las separaba era un filete de 1px. Ahora la inactiva se HUNDE + —velo tenue y sombra interior— y al pasar el ratón el gesto se invierte: la sombra sale + hacia fuera y el fondo tira hacia el blanco de la activa, así que la pestaña sube hacia + ti. Es sombra y no relleno a propósito: un bloque gris sólido pesa tanto como la activa + y acaba compitiendo con ella. + Con fondo propio el separador vertical entre pestañas sobra —ya se ve dónde acaba cada + una—, así que se retiró. */ + .tab:not(.active) { + background: var(--tab-atras); + box-shadow: var(--tab-atras-sombra); + } + .tab:not(.active):hover { + background: var(--tab-hover-bg); + box-shadow: var(--tab-hover-sombra); + color: var(--tab-active-fg); } - .tab:first-child::before, - .tab:hover::before, - .tab.active + .tab::before, - .tab:hover + .tab::before { display: none; } .tab.active { background: var(--tab-active-bg); color: var(--tab-active-fg); height: 35px; margin-bottom: 0; /* su base cae 1px SOBRE el borde de la barra y lo tapa */ border-radius: 10px 10px 0 0; + /* Levantada, apenas: la sombra va HACIA ARRIBA porque abajo la pestaña está fundida con + el contenido y una sombra ahí dibujaría una línea donde justamente no debe haberla. */ + box-shadow: var(--tab-activa-sombra); z-index: 1; } - /* Curvas cóncavas de Chrome en la base de la pestaña activa: dos piezas de 8px con - un cuarto de círculo transparente que "derrama" el fondo hacia los lados. */ - .tab.active::before, - .tab.active::after { - content: ""; - position: absolute; - bottom: 0; - width: 8px; - height: 8px; - } - .tab.active::before { - left: -8px; - background: radial-gradient(circle at 0 0, transparent 8px, var(--tab-active-bg) 8.5px); - } - .tab.active::after { - right: -8px; - background: radial-gradient(circle at 8px 0, transparent 8px, var(--tab-active-bg) 8.5px); - } + /* AQUÍ ESTABAN LAS CURVAS CÓNCAVAS DE CHROME: dos piezas de 8px a los lados de la activa + con un cuarto de círculo transparente que derramaba su fondo hacia fuera. El truco de + Chrome funciona porque allí NO hay línea bajo la barra; aquí sí la hay, y esas dos + piezas blancas la partían en dos justo a los costados de la pestaña — la «fluctuación» + de la esquina. La activa ya se funde con el contenido por su propio fondo, que tapa la + línea exactamente por su ancho; sin las piezas no asoma nada. */ /* ── Color de pestaña ──────────────────────────────────────────────────────────── Misma idea que los grupos de Chrome: teñir para agrupar de un vistazo («todo lo de este cliente, en verde»). El color se elige con clic derecho sobre la pestaña ▸ Color, @@ -185,8 +201,6 @@ .tab[data-color="naranja"] { --tc: 250, 144, 62; } .tab[data-color]:not(.active) { background: rgba(var(--tc), 0.18); } .tab[data-color]:not(.active):hover { background: rgba(var(--tc), 0.32); } - /* Con fondo propio el separador vertical sobra: ya se ve dónde acaba cada pestaña. */ - .tab[data-color]:not(.active)::before { display: none; } .tab[data-color].active { box-shadow: inset 0 3px 0 rgb(var(--tc)); } @media (prefers-color-scheme: dark) { :root:not(.claro) .tab[data-color]:not(.active) { background: rgba(var(--tc), 0.36); }