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>
<span class="tema-leyes-label">Leyes de este tema</span>
${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}
</a>`
).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"/>
<title>TAI AGE | Acceso denegado</title>
<link rel="stylesheet" th:href="@{/css/style.css}"/>
<style>
.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>
<link rel="stylesheet" th:href="@{/css/acceso-denegado.css}"/>
</head>
<body>
<div class="denied-wrap">

View File

@ -5,82 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>TAI AGE | Administración de usuarios</title>
<link rel="stylesheet" th:href="@{/css/style.css}"/>
<style>
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>
<link rel="stylesheet" th:href="@{/css/admin.css}"/>
</head>
<body>

View File

@ -4,185 +4,10 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<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 href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;700&display=swap" rel="stylesheet">
<style>
.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>
<link rel="stylesheet" th:href="@{/css/leyes.css}">
</head>
<body>

View File

@ -6,41 +6,7 @@
<title>TAI AGE | Comprar acceso</title>
<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"/>
<style>
.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>
<link rel="stylesheet" th:href="@{/css/pagar.css}"/>
</head>
<body>
<div class="pagar-wrap">

View File

@ -6,18 +6,7 @@
<title>TAI AGE | Pago cancelado</title>
<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"/>
<style>
.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>
<link rel="stylesheet" th:href="@{/css/pago-cancelado.css}"/>
</head>
<body>
<div class="result-wrap">

View File

@ -6,16 +6,7 @@
<title>TAI AGE | Pago completado</title>
<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"/>
<style>
.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>
<link rel="stylesheet" th:href="@{/css/pago-exito.css}"/>
</head>
<body>
<div class="result-wrap">

View File

@ -5,39 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>TAI AGE | Registro</title>
<link rel="stylesheet" th:href="@{/css/style.css}"/>
<style>
.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>
<link rel="stylesheet" th:href="@{/css/registro.css}"/>
</head>
<body>
<div class="auth-wrap">