:root {
--tl-color-bg:        #FAFAF8;
--tl-color-surface:   #FFFFFF;
--tl-color-ink:       #111827;
--tl-color-muted:     #6B7280;
--tl-color-border:    #E5E7EB;
--tl-color-border-strong: #9CA3AF;
--tl-color-accent:    #16A34A; --tl-color-accent-ink:#FFFFFF;
--tl-color-accent-soft: #EAFBF1;
--tl-color-danger:    #B3261E;
--tl-color-danger-soft: #FBEAE9;
--tl-font-display: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
--tl-font-body: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
--tl-radius-sm: 6px;
--tl-radius-md: 8px;
--tl-radius-lg: 12px;
--tl-radius-pill: 999px;
--tl-space-1: 4px;
--tl-space-2: 8px;
--tl-space-3: 12px;
--tl-space-4: 16px;
--tl-space-5: 24px;
--tl-space-6: 32px;
--tl-space-7: 48px;
--tl-space-8: 64px;
--tl-container: 1300px;
} :root {
--tl-color-accent: var(--brand-dark, #16A34A); --tl-color-accent-soft: color-mix(in srgb, var(--brand-dark, #16A34A) 15%, var(--surface, white));
--tl-font-display: var(--font-sans, "Inter", sans-serif);
--tl-font-body: var(--font-sans, "Inter", sans-serif);
--tl-radius-sm: var(--radius-sm, 6px);
--tl-radius-md: var(--radius, 8px);
--tl-radius-lg: var(--radius-lg, 12px);
--tl-radius-pill: var(--radius-pill, 999px);
--tl-color-border: var(--border, #E5E7EB);
--tl-color-bg: var(--bg-soft, #FAFAF8);
--tl-color-surface: var(--surface, #FFFFFF);
--tl-color-ink: var(--text, #111827);
--tl-color-muted: var(--text-muted, #6B7280);
--tl-container: var(--container, 1300px);
} #techlist-app-main,
.techlist-auth,
.techlist-app {
font-family: var(--tl-font-body);
color: var(--tl-color-ink);
-webkit-font-smoothing: antialiased;
}
#techlist-app-main h1,
#techlist-app-main h2,
#techlist-app-main h3,
.techlist-auth h1,
.techlist-app h1,
.techlist-app h2 {
font-family: var(--tl-font-display);
font-weight: 600;
letter-spacing: -0.01em;
line-height: 1.15; color: var(--tl-color-ink);
}
#techlist-app-main {
background: var(--tl-color-bg);
padding: var(--tl-space-8) var(--tl-space-4);
min-height: 60vh;
} #techlist-app-main .techlist-btn,
.techlist-app .techlist-btn,
.techlist-auth .techlist-btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: var(--tl-space-2);
padding: 10px 20px;
border-radius: var(--tl-radius-sm);
border: 1px solid var(--tl-color-border-strong);
background: var(--tl-color-surface);
color: var(--tl-color-ink);
font-family: var(--tl-font-body);
font-size: 14px;
font-weight: 600;
line-height: 1.2;
cursor: pointer;
text-decoration: none;
transition: border-color 120ms ease, background 120ms ease, color 120ms ease;
}
#techlist-app-main .techlist-btn:hover,
.techlist-app .techlist-btn:hover,
.techlist-auth .techlist-btn:hover {
border-color: var(--tl-color-ink);
color: var(--tl-color-ink);
}
#techlist-app-main .techlist-btn:focus-visible,
.techlist-app .techlist-btn:focus-visible,
.techlist-auth .techlist-btn:focus-visible {
outline: 2px solid var(--tl-color-accent);
outline-offset: 2px;
}
#techlist-app-main .techlist-btn--primary,
.techlist-app .techlist-btn--primary,
.techlist-auth .techlist-btn--primary {
background: var(--tl-color-accent);
border-color: var(--tl-color-accent);
color: var(--tl-color-accent-ink);
}
#techlist-app-main .techlist-btn--primary:hover,
.techlist-app .techlist-btn--primary:hover,
.techlist-auth .techlist-btn--primary:hover {
background: color-mix(in srgb, var(--tl-color-accent) 82%, black);
border-color: color-mix(in srgb, var(--tl-color-accent) 82%, black);
color: var(--tl-color-accent-ink);
}
#techlist-app-main .techlist-btn--ghost,
.techlist-app .techlist-btn--ghost,
.techlist-auth .techlist-btn--ghost {
background: transparent;
border-color: transparent;
color: var(--tl-color-muted);
}
#techlist-app-main .techlist-btn--ghost:hover,
.techlist-app .techlist-btn--ghost:hover,
.techlist-auth .techlist-btn--ghost:hover {
background: var(--tl-color-bg);
border-color: var(--tl-color-border);
color: var(--tl-color-ink);
} #techlist-app-main .techlist-btn--outline,
.techlist-app .techlist-btn--outline,
.techlist-auth .techlist-btn--outline {
background: var(--tl-color-surface);
border-color: var(--tl-color-border-strong);
color: var(--tl-color-ink);
}
#techlist-app-main .techlist-btn--outline:hover,
.techlist-app .techlist-btn--outline:hover,
.techlist-auth .techlist-btn--outline:hover {
background: var(--tl-color-accent-soft);
border-color: var(--tl-color-accent);
color: var(--tl-color-accent);
}
#techlist-app-main .techlist-btn--outline[data-saved="1"],
.techlist-app .techlist-btn--outline[data-saved="1"] {
background: var(--tl-color-accent-soft);
border-color: var(--tl-color-accent);
color: var(--tl-color-accent);
}
.techlist-btn--icon {
padding: 9px;
width: 38px;
height: 38px;
} #techlist-app-main .techlist-btn svg,
.techlist-app .techlist-btn svg,
.techlist-auth .techlist-btn svg {
width: 18px !important;
max-width: none !important;
height: 18px;
flex-shrink: 0;
}
.tl-bookmark-icon--filled {
display: none;
}
.techlist-btn[data-saved="1"] .tl-bookmark-icon--outline {
display: none;
}
.techlist-btn[data-saved="1"] .tl-bookmark-icon--filled {
display: block;
}
.techlist-btn--block {
display: flex;
width: 100%;
}
#techlist-app-main .techlist-btn--danger,
.techlist-app .techlist-btn--danger,
.techlist-auth .techlist-btn--danger {
color: var(--tl-color-danger);
border-color: var(--tl-color-danger);
background: var(--tl-color-danger-soft);
}
.techlist-badge {
display: inline-flex;
align-items: center;
gap: 4px;
font-size: 11px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.04em;
padding: 3px 8px;
border-radius: var(--tl-radius-sm);
border: 1px solid var(--tl-color-border-strong);
color: var(--tl-color-muted);
}
.techlist-badge--verified {
color: var(--tl-color-accent);
border-color: var(--tl-color-accent);
background: var(--tl-color-accent-soft);
}
.techlist-badge--pending {
color: #8A6D1F;
border-color: #D8C079;
background: #FBF6E7;
}
.techlist-badge--rejected,
.techlist-badge--suspended {
color: var(--tl-color-danger);
border-color: var(--tl-color-danger);
background: var(--tl-color-danger-soft);
} .tl-field {
display: flex;
flex-direction: column;
gap: 4px;
margin-bottom: var(--tl-space-4);
}
.tl-field label {
font-size: 13px;
font-weight: 600;
color: var(--tl-color-ink); }
.tl-field input,
.tl-field select,
.tl-field textarea {
font-family: var(--tl-font-body);
font-size: 14px;
padding: 9px 11px;
border: 1px solid var(--tl-color-border-strong);
border-radius: var(--tl-radius-sm);
background: var(--tl-color-surface);
color: var(--tl-color-ink);
}
.tl-field input:focus-visible,
.tl-field select:focus-visible,
.tl-field textarea:focus-visible {
outline: 2px solid var(--tl-color-accent);
outline-offset: 1px;
}
.tl-field__hint {
font-size: 12px;
color: var(--tl-color-muted);
} .tl-empty {
padding: var(--tl-space-6);
text-align: center;
color: var(--tl-color-muted);
border: 1px dashed var(--tl-color-border-strong);
border-radius: var(--tl-radius-md);
font-size: 14px;
} .tl-form-error {
background: var(--tl-color-danger-soft);
color: var(--tl-color-danger);
border: 1px solid var(--tl-color-danger);
border-radius: var(--tl-radius-sm);
padding: var(--tl-space-3) var(--tl-space-4);
font-size: 13px;
line-height: 1.5;
margin-bottom: var(--tl-space-4);
}
.tl-form-error:focus {
outline: 2px solid var(--tl-color-danger);
outline-offset: 2px;
}
@media (prefers-reduced-motion: reduce) {
#techlist-app-main *,
.techlist-app * {
animation-duration: 0.001ms !important;
transition-duration: 0.001ms !important;
}
} .tl-sr-only {
position: absolute !important;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}.techlist-auth { max-width: 440px;
margin: 0 auto;
padding: 0 var(--tl-space-4);
}
.techlist-auth__card {
background: var(--tl-color-surface);
border: 1px solid var(--tl-color-border);
border-top: 3px solid var(--tl-color-accent);
border-radius: var(--tl-radius-lg);
padding: var(--tl-space-6) var(--tl-space-5);
box-shadow: var(--shadow-md, 0 4px 12px rgba(0, 0, 0, 0.08));
}
.techlist-auth__form .tl-field {
display: flex;
flex-direction: column;
gap: 6px;
margin-top: var(--tl-space-3);
}
.techlist-auth__form .tl-field label {
margin-top: 0;
}
.techlist-auth__row {
display: flex;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
gap: var(--tl-space-2);
margin-top: var(--tl-space-3);
}
.techlist-auth__row .techlist-auth__checkbox {
margin-top: 0;
}
.techlist-auth__link {
font-size: 13px;
color: var(--tl-color-accent);
font-weight: 600;
text-decoration: none;
}
.techlist-auth__link:hover {
text-decoration: underline;
}
@media (max-width: 480px) {
.techlist-auth__row {
flex-direction: column;
align-items: flex-start;
}
}
.techlist-auth__title {
font-size: 28px;
margin: 0 0 var(--tl-space-2);
}
.techlist-auth__subtitle {
color: var(--tl-color-muted);
font-size: 14px;
line-height: 1.5;
margin: 0 0 var(--tl-space-5);
}
.techlist-auth__error {
background: var(--tl-color-danger-soft);
color: var(--tl-color-danger);
border: 1px solid var(--tl-color-danger);
border-radius: var(--tl-radius-sm);
padding: var(--tl-space-3);
font-size: 13px;
margin-bottom: var(--tl-space-4);
}
.techlist-auth__success {
background: var(--tl-color-accent-soft);
color: var(--tl-color-accent);
border: 1px solid var(--tl-color-accent);
border-radius: var(--tl-radius-sm);
padding: var(--tl-space-3);
font-size: 13px;
line-height: 1.5;
margin-bottom: var(--tl-space-4);
}
.techlist-auth__form {
display: flex;
flex-direction: column;
gap: var(--tl-space-1);
} .techlist-auth .techlist-auth__form label {
display: block;
font-size: 13px;
font-weight: 600;
margin-top: var(--tl-space-3);
color: var(--tl-color-ink);
}
.techlist-auth__form input[type="text"],
.techlist-auth__form input[type="email"],
.techlist-auth__form input[type="password"] {
width: 100%;
font-family: var(--tl-font-body);
font-size: 15px;
padding: 10px 12px;
border: 1px solid var(--tl-color-border-strong);
border-radius: var(--tl-radius-sm);
background: var(--tl-color-surface);
color: var(--tl-color-ink);
}
.techlist-auth__form input:focus-visible {
outline: 2px solid var(--tl-color-accent);
outline-offset: 1px;
border-color: var(--tl-color-accent);
} .tl-password-field {
position: relative;
}
.tl-password-field input[type="password"],
.tl-password-field input[type="text"] {
padding-right: 42px;
}
.tl-password-toggle {
position: absolute;
top: 50%;
right: 4px;
transform: translateY(-50%);
display: flex;
align-items: center;
justify-content: center;
width: 34px;
height: 34px;
padding: 0;
border: none;
background: transparent;
color: var(--tl-color-muted);
cursor: pointer;
border-radius: var(--tl-radius-sm);
}
.tl-password-toggle:hover {
color: var(--tl-color-ink);
}
.tl-password-toggle:focus-visible {
outline: 2px solid var(--tl-color-accent);
outline-offset: 1px;
}
.tl-eye-icon {
width: 20px;
height: 20px;
}
.tl-eye-icon--hide {
display: none;
}
.tl-password-toggle[aria-pressed="true"] .tl-eye-icon--show {
display: none;
}
.tl-password-toggle[aria-pressed="true"] .tl-eye-icon--hide {
display: block;
}
.techlist-auth .techlist-auth__checkbox {
display: flex;
align-items: center;
gap: var(--tl-space-2);
font-size: 13px;
font-weight: 400;
margin-top: var(--tl-space-2);
color: var(--tl-color-ink); }
.techlist-auth__hint {
font-size: 12px;
color: var(--tl-color-muted);
margin: 2px 0 0;
}
.techlist-auth__form .techlist-btn {
margin-top: var(--tl-space-5);
width: 100%;
}
.techlist-auth__footer {
text-align: center;
font-size: 13px;
color: var(--tl-color-muted);
margin: var(--tl-space-5) 0 0;
}
.techlist-auth__footer a {
color: var(--tl-color-accent);
font-weight: 600;
text-decoration: none;
}
.techlist-auth__footer a:hover {
text-decoration: underline;
}