This commit is contained in:
Tatiana Villa Ema 2026-05-07 13:00:20 +02:00
parent 0c9d177f79
commit df680fedaf
29 changed files with 17897 additions and 362 deletions

View File

@ -0,0 +1,16 @@
.denied-wrap {
display: flex; align-items: center; justify-content: center;
min-height: 100vh; padding: 2rem; text-align: center;
}
.denied-card {
background: var(--bg-alt); border: 1px solid var(--border);
border-radius: 12px; padding: 3rem 2rem; max-width: 480px; width: 100%;
}
.denied-card h2 { color: var(--error, #f44747); font-size: 1.5rem; margin-bottom: 1rem; }
.denied-card p { color: var(--text-muted); margin-bottom: 1.5rem; line-height: 1.6; }
.denied-card a {
display: inline-block; padding: .6rem 1.4rem; border-radius: 8px;
background: var(--accent); color: #fff; text-decoration: none;
font-weight: 600; transition: opacity .15s;
}
.denied-card a:hover { opacity: .88; }

View File

@ -0,0 +1,73 @@
body { padding-top: var(--topbar-h); }
/* ── Topbar admin ── */
.topbar { background: #1a1a2e; border-bottom-color: #3c3c6e; }
.topbar-brand { color: #c792ea; }
.admin-badge {
font-size: .72rem; font-weight: 700; padding: .15rem .5rem;
background: rgba(199,146,234,.15); color: #c792ea;
border: 1px solid #c792ea; border-radius: 4px;
}
/* ── Layout ── */
.admin-wrap { max-width: 1100px; margin: 2rem auto; padding: 0 1.5rem; }
.admin-wrap h1 { font-size: 1.4rem; color: var(--accent-2); margin-bottom: 1.5rem; }
/* ── Mensajes ── */
.msg-error {
padding: .6rem .9rem; border-radius: 6px; margin-bottom: 1rem;
background: rgba(244,71,71,.12); color: var(--error);
border: 1px solid var(--error); font-size: .88rem;
}
/* ── Nuevo usuario ── */
.nuevo-form {
background: var(--bg-alt); border: 1px solid var(--border);
border-radius: 10px; padding: 1.2rem 1.4rem; margin-bottom: 2rem;
display: flex; flex-wrap: wrap; gap: .8rem; align-items: flex-end;
}
.nuevo-form h3 { width: 100%; font-size: 1rem; color: var(--accent-2); margin-bottom: .2rem; }
.nuevo-form input[type="email"],
.nuevo-form input[type="password"] {
background: var(--bg); border: 1px solid var(--border); border-radius: 6px;
color: var(--text); padding: .45rem .7rem; font-size: .9rem; min-width: 200px;
}
.nuevo-form label.check-label { display: flex; align-items: center; gap: .4rem;
font-size: .88rem; color: var(--text-muted); cursor: pointer; }
.nuevo-btn {
padding: .45rem 1.1rem; border-radius: 6px; border: none;
background: var(--accent); color: #fff; font-weight: 600;
font-size: .9rem; cursor: pointer;
}
/* ── Tabla ── */
.usuarios-table { width: 100%; border-collapse: collapse; font-size: .88rem; }
.usuarios-table th {
background: var(--bg-alt); color: var(--text-muted); font-weight: 700;
text-transform: uppercase; font-size: .72rem; letter-spacing: .06em;
padding: .6rem .9rem; text-align: left; border-bottom: 1px solid var(--border);
}
.usuarios-table td {
padding: .6rem .9rem; border-bottom: 1px solid var(--border);
vertical-align: middle;
}
.usuarios-table tr:hover td { background: var(--bg-hover); }
/* Badges de estado */
.badge {
display: inline-block; font-size: .72rem; font-weight: 700;
padding: .15rem .5rem; border-radius: 4px;
}
.badge-on { background: rgba(106,153,85,.15); color: #6a9955; border: 1px solid #6a9955; }
.badge-off { background: rgba(244,71,71,.1); color: var(--error); border: 1px solid var(--error); }
.badge-admin { background: rgba(199,146,234,.15); color: #c792ea; border: 1px solid #c792ea; }
/* Botones de acción */
.btn-accion {
padding: .3rem .7rem; border-radius: 5px; border: 1px solid var(--border);
background: var(--bg); color: var(--text); font-size: .8rem;
cursor: pointer; transition: border-color .12s, color .12s;
}
.btn-accion:hover { border-color: var(--accent); color: var(--accent-2); }
.btn-accion.danger:hover { border-color: var(--error); color: var(--error); }
.acciones { display: flex; gap: .4rem; flex-wrap: wrap; }

View File

@ -0,0 +1,174 @@
.leyes-layout {
display: flex;
height: calc(100vh - var(--topbar-h));
margin-top: var(--topbar-h);
overflow: hidden;
}
/* ── Panel izquierdo ─── */
.leyes-sidebar {
width: 320px;
flex-shrink: 0;
background: var(--bg-alt);
border-right: 1px solid var(--border);
display: flex;
flex-direction: column;
overflow: hidden;
}
.leyes-sidebar-header {
padding: 1rem 1.1rem .8rem;
border-bottom: 1px solid var(--border);
flex-shrink: 0;
}
.leyes-sidebar-header h2 {
font-size: .9rem;
font-weight: 700;
color: var(--accent-2);
text-transform: uppercase;
letter-spacing: .06em;
margin-bottom: .5rem;
}
.leyes-search {
display: flex;
align-items: center;
background: var(--bg);
border: 1px solid var(--border);
border-radius: 6px;
padding: .35rem .7rem;
gap: .5rem;
}
.leyes-search i { color: var(--text-muted); font-size: .85rem; }
.leyes-search input {
background: none;
border: none;
outline: none;
color: var(--text);
font-size: .85rem;
width: 100%;
}
.leyes-search input::placeholder { color: var(--text-muted); }
.leyes-list {
overflow-y: auto;
flex: 1;
padding: .5rem 0;
}
.ley-grupo-label {
font-size: .7rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: .07em;
color: var(--text-muted);
padding: .7rem 1.1rem .3rem;
}
.ley-item {
display: flex;
flex-direction: column;
gap: .2rem;
padding: .6rem 1.1rem;
cursor: pointer;
border-left: 3px solid transparent;
transition: background .12s, border-color .12s;
}
.ley-item:hover { background: var(--bg-hover); }
.ley-item.active {
background: var(--bg-hover);
border-left-color: var(--accent);
}
.ley-item.hidden { display: none; }
.ley-nombre {
font-size: .87rem;
font-weight: 600;
color: var(--text);
line-height: 1.3;
}
.ley-subtitulo {
font-size: .75rem;
color: var(--text-muted);
}
.ley-badge {
display: inline-block;
font-size: .68rem;
font-weight: 700;
padding: .1rem .4rem;
border-radius: 4px;
background: rgba(0,122,204,.15);
color: var(--accent);
margin-top: .1rem;
width: fit-content;
}
/* ── Panel derecho ─── */
.leyes-viewer {
flex: 1;
display: flex;
flex-direction: column;
overflow: hidden;
}
.leyes-viewer-header {
display: flex;
align-items: center;
gap: .8rem;
padding: .75rem 1.2rem;
background: var(--bg-alt);
border-bottom: 1px solid var(--border);
flex-shrink: 0;
}
.leyes-viewer-title {
font-size: .9rem;
font-weight: 600;
color: var(--text);
flex: 1;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.leyes-viewer-actions {
display: flex;
gap: .5rem;
flex-shrink: 0;
}
.leyes-btn {
display: inline-flex;
align-items: center;
gap: .4rem;
font-size: .8rem;
font-weight: 600;
padding: .35rem .8rem;
border-radius: 6px;
background: var(--bg);
border: 1px solid var(--border);
color: var(--text);
text-decoration: none;
cursor: pointer;
transition: background .12s, border-color .12s;
}
.leyes-btn:hover { background: var(--bg-hover); border-color: var(--accent); color: var(--accent-2); }
.leyes-btn.primary { background: var(--accent); border-color: var(--accent); color: #fff; }
.leyes-btn.primary:hover { background: #0090e8; }
.leyes-viewer iframe {
flex: 1;
border: none;
width: 100%;
height: 100%;
}
.leyes-placeholder {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 1rem;
color: var(--text-muted);
}
.leyes-placeholder i { font-size: 3rem; opacity: .3; }
.leyes-placeholder p { font-size: .95rem; }
/* ── Responsive ─── */
@media (max-width: 700px) {
.leyes-layout { flex-direction: column; height: auto; overflow: auto; }
.leyes-sidebar { width: 100%; height: 260px; border-right: none; border-bottom: 1px solid var(--border); }
.leyes-viewer { height: calc(100vh - var(--topbar-h) - 260px); min-height: 400px; }
}

View File

@ -0,0 +1,33 @@
.pagar-wrap {
display: flex; align-items: center; justify-content: center;
min-height: 100vh; padding: 5rem 1.5rem 2rem;
}
.pagar-card {
background: var(--bg-alt); border: 1px solid var(--border);
border-radius: 14px; padding: 2.5rem 2rem; width: 100%; max-width: 500px;
}
.pagar-card h2 { color: var(--accent-2); font-size: 1.4rem; margin-bottom: .4rem; }
.pagar-precio {
font-size: 2.8rem; font-weight: 700; color: var(--accent);
margin: 1.2rem 0 .3rem;
}
.pagar-precio small { font-size: 1rem; color: var(--text-muted); font-weight: 400; }
.pagar-features { list-style: none; padding: 0; margin: 1.2rem 0 1.8rem; }
.pagar-features li { padding: .4rem 0; color: var(--text-muted); font-size: .9rem; }
.pagar-features li i { color: var(--accent); margin-right: .5rem; width: 1rem; }
.pagar-badge {
display: inline-block; font-size: .75rem; padding: .25rem .7rem;
border-radius: 20px; background: rgba(106,153,85,.15);
color: var(--success, #6a9955); border: 1px solid var(--success, #6a9955);
margin-bottom: 1rem;
}
.btn-stripe {
display: flex; align-items: center; justify-content: center; gap: .6rem;
width: 100%; padding: .8rem; border-radius: 10px; border: none;
background: #635BFF; color: #fff; font-size: 1rem;
font-weight: 700; cursor: pointer; font-family: inherit;
transition: opacity .15s;
}
.btn-stripe:hover { opacity: .88; }
.pagar-footer { margin-top: 1rem; font-size: .78rem; color: var(--text-muted); text-align: center; }
.pagar-footer a { color: var(--accent); }

View File

@ -0,0 +1,10 @@
.result-wrap { display:flex; align-items:center; justify-content:center; min-height:100vh; padding:2rem; text-align:center; }
.result-card { background:var(--bg-alt); border:1px solid var(--border); border-radius:14px; padding:3rem 2rem; max-width:460px; width:100%; }
.result-icon { font-size:3rem; color:var(--text-muted); margin-bottom:1rem; }
.result-card h2 { color:var(--accent-2); font-size:1.4rem; margin-bottom:.8rem; }
.result-card p { color:var(--text-muted); line-height:1.6; margin-bottom:1.5rem; }
.btn-row { display:flex; gap:1rem; justify-content:center; flex-wrap:wrap; }
.btn-row a { display:inline-block; padding:.6rem 1.4rem; border-radius:8px; text-decoration:none; font-weight:700; transition:opacity .15s; }
.btn-primary { background:var(--accent); color:#fff; }
.btn-secondary { background:var(--bg-hover); color:var(--text); }
.btn-row a:hover { opacity:.85; }

View File

@ -0,0 +1,8 @@
.result-wrap { display:flex; align-items:center; justify-content:center; min-height:100vh; padding:2rem; text-align:center; }
.result-card { background:var(--bg-alt); border:1px solid var(--border); border-radius:14px; padding:3rem 2rem; max-width:460px; width:100%; }
.result-icon { font-size:3rem; color:var(--success,#6a9955); margin-bottom:1rem; }
.result-card h2 { color:var(--accent-2); font-size:1.4rem; margin-bottom:.8rem; }
.result-card p { color:var(--text-muted); line-height:1.6; margin-bottom:1.5rem; }
.result-card a { display:inline-block; padding:.65rem 1.6rem; border-radius:8px; background:var(--accent); color:#fff; text-decoration:none; font-weight:700; transition:opacity .15s; }
.result-card a:hover { opacity:.85; }
.result-note { margin-top:1rem; font-size:.8rem; color:var(--text-muted); }

View File

@ -0,0 +1,6 @@
/* Overrides y estilos específicos de la página de registro */
.auth-card { max-width: 420px; }
.auth-card h2 { margin-bottom: .4rem; }
.auth-card p.subtitle { color: var(--text-muted); font-size: .88rem; margin-bottom: 1.5rem; }
.auth-msg.info { background: rgba(0,122,204,.08); color: var(--accent); border: 1px solid var(--accent); }
.hint { font-size: .78rem; color: var(--text-muted); margin-top: .2rem; }

View File

@ -134,7 +134,7 @@ function renderMarkdown(md, tema, bloque, bloqueId, temaNum) {
<i class="fas fa-landmark"></i> <i class="fas fa-landmark"></i>
<span class="tema-leyes-label">Leyes de este tema</span> <span class="tema-leyes-label">Leyes de este tema</span>
${tema.leyes.map(l => ${tema.leyes.map(l =>
`<a class="tema-ley-btn" href="leyes.html?ley=${encodeURIComponent(l.ley)}" target="_blank" rel="noopener"> `<a class="tema-ley-btn" href="/leyes?ley=${encodeURIComponent(l.ley)}" target="_blank" rel="noopener">
<i class="fas fa-file-pdf"></i> ${l.label} <i class="fas fa-file-pdf"></i> ${l.label}
</a>` </a>`
).join('')} ).join('')}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -5,24 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>TAI AGE | Acceso denegado</title> <title>TAI AGE | Acceso denegado</title>
<link rel="stylesheet" th:href="@{/css/style.css}"/> <link rel="stylesheet" th:href="@{/css/style.css}"/>
<style> <link rel="stylesheet" th:href="@{/css/acceso-denegado.css}"/>
.denied-wrap {
display: flex; align-items: center; justify-content: center;
min-height: 100vh; padding: 2rem; text-align: center;
}
.denied-card {
background: var(--bg-alt); border: 1px solid var(--border);
border-radius: 12px; padding: 3rem 2rem; max-width: 480px; width: 100%;
}
.denied-card h2 { color: var(--error, #f44747); font-size: 1.5rem; margin-bottom: 1rem; }
.denied-card p { color: var(--text-muted); margin-bottom: 1.5rem; line-height: 1.6; }
.denied-card a {
display: inline-block; padding: .6rem 1.4rem; border-radius: 8px;
background: var(--accent); color: #fff; text-decoration: none;
font-weight: 600; transition: opacity .15s;
}
.denied-card a:hover { opacity: .88; }
</style>
</head> </head>
<body> <body>
<div class="denied-wrap"> <div class="denied-wrap">

View File

@ -5,82 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>TAI AGE | Administración de usuarios</title> <title>TAI AGE | Administración de usuarios</title>
<link rel="stylesheet" th:href="@{/css/style.css}"/> <link rel="stylesheet" th:href="@{/css/style.css}"/>
<style> <link rel="stylesheet" th:href="@{/css/admin.css}"/>
body { padding-top: var(--topbar-h); }
/* ── Topbar admin ── */
.topbar { background: #1a1a2e; border-bottom-color: #3c3c6e; }
.topbar-brand { color: #c792ea; }
.admin-badge {
font-size: .72rem; font-weight: 700; padding: .15rem .5rem;
background: rgba(199,146,234,.15); color: #c792ea;
border: 1px solid #c792ea; border-radius: 4px;
}
/* ── Layout ── */
.admin-wrap { max-width: 1100px; margin: 2rem auto; padding: 0 1.5rem; }
.admin-wrap h1 { font-size: 1.4rem; color: var(--accent-2); margin-bottom: 1.5rem; }
/* ── Mensajes ── */
.msg-error {
padding: .6rem .9rem; border-radius: 6px; margin-bottom: 1rem;
background: rgba(244,71,71,.12); color: var(--error);
border: 1px solid var(--error); font-size: .88rem;
}
/* ── Nuevo usuario ── */
.nuevo-form {
background: var(--bg-alt); border: 1px solid var(--border);
border-radius: 10px; padding: 1.2rem 1.4rem; margin-bottom: 2rem;
display: flex; flex-wrap: wrap; gap: .8rem; align-items: flex-end;
}
.nuevo-form h3 { width: 100%; font-size: 1rem; color: var(--accent-2); margin-bottom: .2rem; }
.nuevo-form input[type="email"],
.nuevo-form input[type="password"] {
background: var(--bg); border: 1px solid var(--border); border-radius: 6px;
color: var(--text); padding: .45rem .7rem; font-size: .9rem; min-width: 200px;
}
.nuevo-form label.check-label { display: flex; align-items: center; gap: .4rem;
font-size: .88rem; color: var(--text-muted); cursor: pointer; }
.nuevo-btn {
padding: .45rem 1.1rem; border-radius: 6px; border: none;
background: var(--accent); color: #fff; font-weight: 600;
font-size: .9rem; cursor: pointer;
}
/* ── Tabla ── */
.usuarios-table { width: 100%; border-collapse: collapse; font-size: .88rem; }
.usuarios-table th {
background: var(--bg-alt); color: var(--text-muted); font-weight: 700;
text-transform: uppercase; font-size: .72rem; letter-spacing: .06em;
padding: .6rem .9rem; text-align: left; border-bottom: 1px solid var(--border);
}
.usuarios-table td {
padding: .6rem .9rem; border-bottom: 1px solid var(--border);
vertical-align: middle;
}
.usuarios-table tr:hover td { background: var(--bg-hover); }
/* Badges de estado */
.badge {
display: inline-block; font-size: .72rem; font-weight: 700;
padding: .15rem .5rem; border-radius: 4px;
}
.badge-on { background: rgba(106,153,85,.15); color: #6a9955; border: 1px solid #6a9955; }
.badge-off { background: rgba(244,71,71,.1); color: var(--error); border: 1px solid var(--error); }
.badge-admin { background: rgba(199,146,234,.15); color: #c792ea; border: 1px solid #c792ea; }
/* Botones de acción */
.btn-accion {
padding: .3rem .7rem; border-radius: 5px; border: 1px solid var(--border);
background: var(--bg); color: var(--text); font-size: .8rem;
cursor: pointer; transition: border-color .12s, color .12s;
}
.btn-accion:hover { border-color: var(--accent); color: var(--accent-2); }
.btn-accion.danger:hover { border-color: var(--error); color: var(--error); }
.acciones { display: flex; gap: .4rem; flex-wrap: wrap; }
</style>
</head> </head>
<body> <body>

View File

@ -4,185 +4,10 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>TAI AGE | Legislación</title> <title>TAI AGE | Legislación</title>
<link rel="stylesheet" href="css/style.css"> <link rel="stylesheet" th:href="@{/css/style.css}">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css">
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;700&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;700&display=swap" rel="stylesheet">
<style> <link rel="stylesheet" th:href="@{/css/leyes.css}">
.leyes-layout {
display: flex;
height: calc(100vh - var(--topbar-h));
margin-top: var(--topbar-h);
overflow: hidden;
}
/* ── Panel izquierdo ─── */
.leyes-sidebar {
width: 320px;
flex-shrink: 0;
background: var(--bg-alt);
border-right: 1px solid var(--border);
display: flex;
flex-direction: column;
overflow: hidden;
}
.leyes-sidebar-header {
padding: 1rem 1.1rem .8rem;
border-bottom: 1px solid var(--border);
flex-shrink: 0;
}
.leyes-sidebar-header h2 {
font-size: .9rem;
font-weight: 700;
color: var(--accent-2);
text-transform: uppercase;
letter-spacing: .06em;
margin-bottom: .5rem;
}
.leyes-search {
display: flex;
align-items: center;
background: var(--bg);
border: 1px solid var(--border);
border-radius: 6px;
padding: .35rem .7rem;
gap: .5rem;
}
.leyes-search i { color: var(--text-muted); font-size: .85rem; }
.leyes-search input {
background: none;
border: none;
outline: none;
color: var(--text);
font-size: .85rem;
width: 100%;
}
.leyes-search input::placeholder { color: var(--text-muted); }
.leyes-list {
overflow-y: auto;
flex: 1;
padding: .5rem 0;
}
.ley-grupo-label {
font-size: .7rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: .07em;
color: var(--text-muted);
padding: .7rem 1.1rem .3rem;
}
.ley-item {
display: flex;
flex-direction: column;
gap: .2rem;
padding: .6rem 1.1rem;
cursor: pointer;
border-left: 3px solid transparent;
transition: background .12s, border-color .12s;
}
.ley-item:hover { background: var(--bg-hover); }
.ley-item.active {
background: var(--bg-hover);
border-left-color: var(--accent);
}
.ley-item.hidden { display: none; }
.ley-nombre {
font-size: .87rem;
font-weight: 600;
color: var(--text);
line-height: 1.3;
}
.ley-subtitulo {
font-size: .75rem;
color: var(--text-muted);
}
.ley-badge {
display: inline-block;
font-size: .68rem;
font-weight: 700;
padding: .1rem .4rem;
border-radius: 4px;
background: rgba(0,122,204,.15);
color: var(--accent);
margin-top: .1rem;
width: fit-content;
}
/* ── Panel derecho ─── */
.leyes-viewer {
flex: 1;
display: flex;
flex-direction: column;
overflow: hidden;
}
.leyes-viewer-header {
display: flex;
align-items: center;
gap: .8rem;
padding: .75rem 1.2rem;
background: var(--bg-alt);
border-bottom: 1px solid var(--border);
flex-shrink: 0;
}
.leyes-viewer-title {
font-size: .9rem;
font-weight: 600;
color: var(--text);
flex: 1;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.leyes-viewer-actions {
display: flex;
gap: .5rem;
flex-shrink: 0;
}
.leyes-btn {
display: inline-flex;
align-items: center;
gap: .4rem;
font-size: .8rem;
font-weight: 600;
padding: .35rem .8rem;
border-radius: 6px;
background: var(--bg);
border: 1px solid var(--border);
color: var(--text);
text-decoration: none;
cursor: pointer;
transition: background .12s, border-color .12s;
}
.leyes-btn:hover { background: var(--bg-hover); border-color: var(--accent); color: var(--accent-2); }
.leyes-btn.primary { background: var(--accent); border-color: var(--accent); color: #fff; }
.leyes-btn.primary:hover { background: #0090e8; }
.leyes-viewer iframe {
flex: 1;
border: none;
width: 100%;
height: 100%;
}
.leyes-placeholder {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 1rem;
color: var(--text-muted);
}
.leyes-placeholder i { font-size: 3rem; opacity: .3; }
.leyes-placeholder p { font-size: .95rem; }
/* ── Responsive ─── */
@media (max-width: 700px) {
.leyes-layout { flex-direction: column; height: auto; overflow: auto; }
.leyes-sidebar { width: 100%; height: 260px; border-right: none; border-bottom: 1px solid var(--border); }
.leyes-viewer { height: calc(100vh - var(--topbar-h) - 260px); min-height: 400px; }
}
</style>
</head> </head>
<body> <body>

View File

@ -6,41 +6,7 @@
<title>TAI AGE | Comprar acceso</title> <title>TAI AGE | Comprar acceso</title>
<link rel="stylesheet" th:href="@{/css/style.css}"/> <link rel="stylesheet" th:href="@{/css/style.css}"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css"/> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css"/>
<style> <link rel="stylesheet" th:href="@{/css/pagar.css}"/>
.pagar-wrap {
display: flex; align-items: center; justify-content: center;
min-height: 100vh; padding: 5rem 1.5rem 2rem;
}
.pagar-card {
background: var(--bg-alt); border: 1px solid var(--border);
border-radius: 14px; padding: 2.5rem 2rem; width: 100%; max-width: 500px;
}
.pagar-card h2 { color: var(--accent-2); font-size: 1.4rem; margin-bottom: .4rem; }
.pagar-precio {
font-size: 2.8rem; font-weight: 700; color: var(--accent);
margin: 1.2rem 0 .3rem;
}
.pagar-precio small { font-size: 1rem; color: var(--text-muted); font-weight: 400; }
.pagar-features { list-style: none; padding: 0; margin: 1.2rem 0 1.8rem; }
.pagar-features li { padding: .4rem 0; color: var(--text-muted); font-size: .9rem; }
.pagar-features li i { color: var(--accent); margin-right: .5rem; width: 1rem; }
.pagar-badge {
display: inline-block; font-size: .75rem; padding: .25rem .7rem;
border-radius: 20px; background: rgba(106,153,85,.15);
color: var(--success, #6a9955); border: 1px solid var(--success, #6a9955);
margin-bottom: 1rem;
}
.btn-stripe {
display: flex; align-items: center; justify-content: center; gap: .6rem;
width: 100%; padding: .8rem; border-radius: 10px; border: none;
background: #635BFF; color: #fff; font-size: 1rem;
font-weight: 700; cursor: pointer; font-family: inherit;
transition: opacity .15s;
}
.btn-stripe:hover { opacity: .88; }
.pagar-footer { margin-top: 1rem; font-size: .78rem; color: var(--text-muted); text-align: center; }
.pagar-footer a { color: var(--accent); }
</style>
</head> </head>
<body> <body>
<div class="pagar-wrap"> <div class="pagar-wrap">

View File

@ -6,18 +6,7 @@
<title>TAI AGE | Pago cancelado</title> <title>TAI AGE | Pago cancelado</title>
<link rel="stylesheet" th:href="@{/css/style.css}"/> <link rel="stylesheet" th:href="@{/css/style.css}"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css"/> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css"/>
<style> <link rel="stylesheet" th:href="@{/css/pago-cancelado.css}"/>
.result-wrap { display:flex; align-items:center; justify-content:center; min-height:100vh; padding:2rem; text-align:center; }
.result-card { background:var(--bg-alt); border:1px solid var(--border); border-radius:14px; padding:3rem 2rem; max-width:460px; width:100%; }
.result-icon { font-size:3rem; color:var(--text-muted); margin-bottom:1rem; }
.result-card h2 { color:var(--accent-2); font-size:1.4rem; margin-bottom:.8rem; }
.result-card p { color:var(--text-muted); line-height:1.6; margin-bottom:1.5rem; }
.btn-row { display:flex; gap:1rem; justify-content:center; flex-wrap:wrap; }
.btn-row a { display:inline-block; padding:.6rem 1.4rem; border-radius:8px; text-decoration:none; font-weight:700; transition:opacity .15s; }
.btn-primary { background:var(--accent); color:#fff; }
.btn-secondary { background:var(--bg-hover); color:var(--text); }
.btn-row a:hover { opacity:.85; }
</style>
</head> </head>
<body> <body>
<div class="result-wrap"> <div class="result-wrap">

View File

@ -6,16 +6,7 @@
<title>TAI AGE | Pago completado</title> <title>TAI AGE | Pago completado</title>
<link rel="stylesheet" th:href="@{/css/style.css}"/> <link rel="stylesheet" th:href="@{/css/style.css}"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css"/> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css"/>
<style> <link rel="stylesheet" th:href="@{/css/pago-exito.css}"/>
.result-wrap { display:flex; align-items:center; justify-content:center; min-height:100vh; padding:2rem; text-align:center; }
.result-card { background:var(--bg-alt); border:1px solid var(--border); border-radius:14px; padding:3rem 2rem; max-width:460px; width:100%; }
.result-icon { font-size:3rem; color:var(--success,#6a9955); margin-bottom:1rem; }
.result-card h2 { color:var(--accent-2); font-size:1.4rem; margin-bottom:.8rem; }
.result-card p { color:var(--text-muted); line-height:1.6; margin-bottom:1.5rem; }
.result-card a { display:inline-block; padding:.65rem 1.6rem; border-radius:8px; background:var(--accent); color:#fff; text-decoration:none; font-weight:700; transition:opacity .15s; }
.result-card a:hover { opacity:.85; }
.result-note { margin-top:1rem; font-size:.8rem; color:var(--text-muted); }
</style>
</head> </head>
<body> <body>
<div class="result-wrap"> <div class="result-wrap">

View File

@ -5,39 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>TAI AGE | Registro</title> <title>TAI AGE | Registro</title>
<link rel="stylesheet" th:href="@{/css/style.css}"/> <link rel="stylesheet" th:href="@{/css/style.css}"/>
<style> <link rel="stylesheet" th:href="@{/css/registro.css}"/>
.auth-wrap {
display: flex; align-items: center; justify-content: center;
min-height: 100vh; padding: 2rem;
}
.auth-card {
background: var(--bg-alt); border: 1px solid var(--border);
border-radius: 12px; padding: 2.5rem 2rem; width: 100%; max-width: 420px;
}
.auth-card h2 { color: var(--accent-2); margin-bottom: .4rem; font-size: 1.4rem; }
.auth-card p.subtitle { color: var(--text-muted); font-size: .88rem; margin-bottom: 1.5rem; }
.auth-field { display: flex; flex-direction: column; gap: .4rem; margin-bottom: 1rem; }
.auth-field label { font-size: .85rem; color: var(--text-muted); }
.auth-field input {
background: var(--bg); border: 1px solid var(--border); border-radius: 6px;
color: var(--text); padding: .55rem .8rem; font-size: .95rem; outline: none;
transition: border-color .15s;
}
.auth-field input:focus { border-color: var(--accent); }
.auth-btn {
width: 100%; padding: .65rem; border-radius: 8px; border: none;
background: var(--accent); color: #fff; font-size: 1rem;
font-weight: 600; cursor: pointer; margin-top: .5rem;
transition: opacity .15s;
}
.auth-btn:hover { opacity: .88; }
.auth-msg { font-size: .85rem; padding: .6rem .9rem; border-radius: 6px; margin-bottom: 1rem; }
.auth-msg.error { background: rgba(244,71,71,.12); color: var(--error); border: 1px solid var(--error); }
.auth-msg.info { background: rgba(0,122,204,.08); color: var(--accent); border: 1px solid var(--accent); }
.auth-footer { margin-top: 1.2rem; text-align: center; font-size: .85rem; color: var(--text-muted); }
.auth-footer a { color: var(--accent); }
.hint { font-size: .78rem; color: var(--text-muted); margin-top: .2rem; }
</style>
</head> </head>
<body> <body>
<div class="auth-wrap"> <div class="auth-wrap">