/* ==========================================================================
   Cannis — pantallas de cuenta · BASE
   --------------------------------------------------------------------------
   El reseteo y el armazón: la pantalla partida en banda de marca y hoja. Prefijo `cu-`. Sin colores
   propios: todo sale de tokens.css.

   La banda es oscura en los DOS temas (está hecha de luz sobre `--cu-fondo-*`); la hoja sigue al tema.
   En computadora la banda queda fija mientras el formulario se desplaza; en el teléfono se vuelve una
   cabecera corta y la hoja se monta sobre su borde.
   ========================================================================== */

*, *::before, *::after { box-sizing: border-box; }

html {
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
    scroll-behavior: smooth;
}

body.cu-body {
    margin: 0;
    min-height: 100vh;
    min-height: 100svh;
    font-family: var(--cu-font);
    font-size: 1rem;
    line-height: 1.55;
    color: var(--cu-tinta);
    background: var(--cu-papel);
    -webkit-font-smoothing: antialiased;
}

/* El reseteo tipográfico va SIN PESO (`:where()`): que cualquier clase de un solo nivel le gane. */
:where(.cu-body) :where(h1, h2, h3, p, ul, ol, dl, figure, fieldset, legend) { margin: 0; padding: 0; }
:where(.cu-body) :where(ul, ol) { list-style: none; }
:where(.cu-body) :where(img, svg) { max-width: 100%; }
:where(.cu-body) :where(button, input, select, textarea) { font: inherit; }

/* Los enlaces toman el color de la marca, SIN peso (`:where()`): un enlace que es un botón (`<a class="cu-btn cu-btn--primario">`) o una tarjeta
   declara su propio color con una sola clase y tiene que ganar. Con `.cu-body a` (0,1,1) el texto de un botón primario salía del color de
   la marca, que en el tema oscuro es el mismo del botón: 1:1, invisible. */
:where(.cu-body) a { color: var(--cu-marca); }

.cu-body :focus-visible {
    outline: 3px solid var(--cu-marca);
    outline-offset: 2px;
}

/* ===== Utilidades ===== */

/* El atributo `hidden` tiene que ganarle a cualquier `display` de una clase (un `.cu-btn { display: inline-flex }` lo dejaba a la vista): los
   controles que sólo crea o muestra el script nacen con `hidden`, y sin script no se tienen que ver. */
.cu-body [hidden] { display: none !important; }

/* Sólo para lectores de pantalla. */
.cu-sr {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
    border: 0;
}

.cu-saltar {
    position: absolute;
    left: 0.75rem;
    top: -4rem;
    z-index: 100;
    padding: 0.7rem 1rem;
    border-radius: var(--cu-radio-sm);
    background: var(--cu-boton);
    color: var(--cu-sobre-boton);
    font-weight: 700;
    text-decoration: none;
}
.cu-saltar:focus { top: 0.75rem; }

.cu-sprite { position: absolute; width: 0; height: 0; overflow: hidden; }

.cu-ico {
    width: 1.25em;
    height: 1.25em;
    flex-shrink: 0;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.7;
    stroke-linecap: round;
    stroke-linejoin: round;
}

/* ===== La pantalla: banda + hoja ===== */

.cu-pantalla {
    min-height: 100vh;
    min-height: 100svh;
    display: grid;
    grid-template-columns: minmax(20rem, 5fr) minmax(0, 7fr);
}

/* ── La banda de marca ───────────────────────────────────────────────────── */

.cu-marca {
    position: sticky;
    top: 0;
    align-self: start;
    height: 100vh;
    height: 100svh;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    gap: var(--cu-s4);
    padding: 3.5rem clamp(2rem, 4vw, 4rem) 2.25rem;
    color: var(--cu-banda-tinta);
    overflow: hidden;
    isolation: isolate;
    /* De arriba hacia abajo: dos anillos finos en la esquina de abajo, la luz de la marca arriba y abajo, y el degradé de fondo. */
    background:
        radial-gradient(circle at 100% 100%,
            transparent 0 279px, var(--cu-banda-anillo) 280px 281px,
            transparent 282px 339px, var(--cu-banda-anillo) 340px 341px,
            transparent 342px),
        radial-gradient(75% 55% at 0% 0%, var(--cu-luz), transparent 70%),
        radial-gradient(60% 50% at 100% 100%, var(--cu-luz), transparent 70%),
        linear-gradient(160deg, var(--cu-fondo-alto) 0%, var(--cu-fondo-bajo) 100%);
}

/* Una trama muy tenue que se apaga hacia abajo: textura sin cargar una imagen. */
.cu-marca::after {
    content: '';
    position: absolute;
    inset: 0;
    z-index: -1;
    background-image:
        repeating-linear-gradient(115deg, var(--cu-banda-trama) 0 1px, transparent 1px 26px),
        repeating-linear-gradient(65deg, var(--cu-banda-trama) 0 1px, transparent 1px 34px);
    -webkit-mask-image: linear-gradient(to bottom, #000 0%, transparent 85%);
            mask-image: linear-gradient(to bottom, #000 0%, transparent 85%);
    pointer-events: none;
}

.cu-marca__firma {
    display: flex;
    align-items: center;
    gap: var(--cu-s3);
    min-width: 0;
}

.cu-marca__logo {
    display: block;
    height: var(--cu-logo-alto);
    width: auto;
    max-width: 100%;
    /* El aire que el archivo trae a la izquierda: se le resta para que la primera letra quede a plomo con el texto de abajo. */
    margin-left: calc(var(--cu-logo-alto) * var(--cu-logo-ratio) * var(--cu-logo-sangria) * -1);
}

/* El logo oscuro (o gris) pasa a blanco puro por filtro: así no hace falta un segundo archivo que se desincronice. */
.cu-marca__logo--blanco { filter: brightness(0) invert(1); }

/* El rótulo del producto cuando el logo es el genérico de Cannis: «Cannis | OS». */
.cu-marca__rotulo {
    padding-left: var(--cu-s3);
    border-left: 1px solid var(--cu-banda-linea);
    color: var(--cu-acento);
    font-size: 0.95rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    white-space: nowrap;
}

.cu-marca__lema { max-width: 30rem; }

.cu-marca__sello {
    display: inline-block;
    padding: 0.4rem 0.9rem;
    border: 1px solid var(--cu-banda-linea);
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.05);
    color: var(--cu-acento);
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}

/* El lema es un párrafo y no un <h1>: el título de la pantalla es el de la hoja. */
.cu-marca__titulo {
    margin-top: var(--cu-s3);
    font-size: clamp(2rem, 1.2rem + 2.2vw, 3rem);
    font-weight: 800;
    line-height: 1.08;
    letter-spacing: -0.02em;
    color: var(--cu-banda-tinta);
}

.cu-marca__acento { color: var(--cu-acento); }

.cu-marca__puntos {
    display: flex;
    flex-direction: column;
    gap: var(--cu-s2);
    margin-top: var(--cu-s4);
}

.cu-marca__puntos li {
    display: flex;
    align-items: flex-start;
    gap: var(--cu-s2);
    line-height: 1.45;
    color: var(--cu-banda-tinta);
}

.cu-marca__tilde {
    width: 1.5rem;
    height: 1.5rem;
    padding: 0.3rem;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.10);
    box-shadow: inset 0 0 0 1px var(--cu-banda-linea);
    color: var(--cu-acento);
    stroke-width: 2.4;
}

.cu-marca__pie {
    margin: 0;
    padding-top: var(--cu-s3);
    border-top: 1px solid var(--cu-banda-linea);
    font-size: 0.9rem;
    color: var(--cu-banda-suave);
}

/* ── El lado del formulario ──────────────────────────────────────────────── */

.cu-panel {
    min-width: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: var(--cu-s3);
    padding: var(--cu-s5) var(--cu-s4);
    /* Un dejo de la marca del lado de la banda. */
    background: radial-gradient(90% 60% at 0% 50%, var(--cu-halo), transparent 70%), var(--cu-papel);
}

.cu-panel:focus { outline: none; }

.cu-hoja {
    --cu-ancho: 28rem;

    position: relative;
    width: min(var(--cu-ancho), 100%);
    min-width: 0;
    padding: clamp(1.5rem, 3vw, 2.5rem);
    background: var(--cu-hoja);
    border: 1px solid var(--cu-linea);
    border-radius: var(--cu-radio);
    box-shadow: var(--cu-sombra);
}

.cu-hoja--media { --cu-ancho: 36rem; }
.cu-hoja--ancha { --cu-ancho: 48rem; }

/* El filo de arriba, con la luz de la marca. */
.cu-hoja::before {
    content: '';
    position: absolute;
    inset: 0 0 auto 0;
    height: 3px;
    border-radius: var(--cu-radio) var(--cu-radio) 0 0;
    background: linear-gradient(90deg, var(--cu-marca), var(--cu-boton));
    opacity: 0.9;
}

/* «Parte del ecosistema Cannis®» debajo de la hoja: SÓLO en el teléfono, donde la banda no lleva pie. */
.cu-ecosistema {
    display: none;
    margin: 0;
    font-size: 0.9rem;
    color: var(--cu-tinta-suave);
    text-align: center;
}

/* ── Pantallas bajas: la banda deja de ser fija y se estira lo que necesite ── */
@media (max-height: 700px) and (min-width: 901px) {
    .cu-marca {
        position: relative;
        height: auto;
        min-height: 100vh;
        min-height: 100svh;
    }
}

/* ── Pantallas medianas ──────────────────────────────────────────────────── */
@media (max-width: 1100px) and (min-width: 901px) {
    .cu-marca { padding-inline: var(--cu-s4); }
    .cu-marca__titulo { font-size: 1.9rem; }
}

/* ── En el teléfono la banda se convierte en cabecera ───────────────────────
   Ocultarla dejaba la pantalla sin identidad; dejarla entera se comía la primera pantalla antes del
   formulario. Queda corta (firma, sello y lema) y la hoja se monta sobre su borde de abajo. */
@media (max-width: 900px) {
    .cu-pantalla {
        grid-template-columns: minmax(0, 1fr);
        align-content: start;
    }

    .cu-marca {
        position: relative;
        height: auto;
        gap: var(--cu-s3);
        padding: 2.75rem var(--cu-s3) 5.25rem;
        /* Sin los anillos ni la luz de abajo: en la banda corta caían detrás del borde de la hoja y se leían como una franja. */
        background:
            radial-gradient(80% 70% at 0% 0%, var(--cu-luz), transparent 72%),
            linear-gradient(160deg, var(--cu-fondo-alto) 0%, var(--cu-fondo-bajo) 100%);
    }

    .cu-marca__logo { height: calc(var(--cu-logo-alto) * 0.78); }
    .cu-marca__titulo { margin-top: var(--cu-s2); font-size: 1.5rem; }
    .cu-marca__puntos,
    .cu-marca__pie { display: none; }

    .cu-panel {
        justify-content: flex-start;
        padding: 0 1rem var(--cu-s4);
        background: var(--cu-papel);
    }

    .cu-hoja {
        margin-top: -3.75rem;
        padding: 1.5rem 1.25rem;
        z-index: 1;
    }

    .cu-ecosistema { display: block; }
}

/* ── Formato «página» (el registro) ──────────────────────────────────────────
   UNA página con el formulario al medio: una barra de marca arriba (el mismo degradé de la banda, oscuro en los dos temas, para que el
   logo se lea) y debajo la hoja centrada, ancha y con aire. Sin la banda lateral de los ingresos: un formulario largo no vive en media
   pantalla. Se pide con `@section('formato', 'pagina')`. */
.cu-pagina {
    min-height: 100vh;
    min-height: 100svh;
    display: flex;
    flex-direction: column;
    background: radial-gradient(70% 38% at 50% 0%, var(--cu-halo), transparent 72%), var(--cu-papel);
}

.cu-pagina__barra {
    display: flex;
    align-items: center;
    padding: 0.95rem clamp(1rem, 4vw, 3rem);
    background:
        radial-gradient(60% 140% at 0% 0%, var(--cu-luz), transparent 72%),
        linear-gradient(160deg, var(--cu-fondo-alto) 0%, var(--cu-fondo-bajo) 100%);
}

.cu-pagina__firma {
    display: flex;
    align-items: center;
    gap: var(--cu-s3);
    min-width: 0;
    min-height: var(--cu-toque);
    text-decoration: none;
}

.cu-pagina__barra .cu-marca__logo { height: calc(var(--cu-logo-alto) * 0.7); }

.cu-pagina__cuerpo {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--cu-s4);
    padding: clamp(1.5rem, 5vw, 3.5rem) 1rem clamp(2rem, 6vw, 4rem);
}

.cu-pagina__cuerpo:focus { outline: none; }

.cu-pagina .cu-hoja {
    margin-top: 0;
    padding: clamp(1.5rem, 4.5vw, 3.5rem);
    z-index: auto;
}

.cu-pagina .cu-hoja--media { --cu-ancho: 40rem; }
.cu-pagina .cu-hoja--ancha { --cu-ancho: 56rem; }
.cu-pagina .cu-ecosistema { display: block; }

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
}
