/* ================================================================
   AUTH PAGES — /login/ (tcn-login.php) and /register/ (page-register.php).
   Moved out of the templates. Tokens: tcn-base.css section 0.
   ================================================================ */
/* from tcn-login.php */
.tcn-auth-wrap{max-width:460px;margin:0 auto;padding:130px 20px 120px}
.tcn-auth-box{background:var(--clr-surface,#f7f7f8);border:1px solid var(--clr-border,var(--line));border-radius:var(--radius-lg,14px);padding:48px 40px;position:relative;overflow:hidden}
.tcn-auth-logo{text-align:center;margin-bottom:32px}
.tcn-auth-logo span{display:block;font-family:var(--dp-serif);font-size:2rem;color:var(--clr-text-main);margin-top:8px;letter-spacing: .015em; text-transform: uppercase; }
.tcn-auth-tabs{display:flex;gap:4px;background:var(--paper-2);border:1px solid var(--line);border-radius:999px;padding:4px;margin-bottom:32px}
.tcn-auth-tab{flex:1;text-align:center;padding:10px;border-radius:999px;font-size:.75rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--clr-text-muted,#6b7280);cursor:pointer;transition:background .2s,color .2s;border:none;background:none}
.tcn-auth-tab.active{background:var(--ink);color:var(--inverse)}
.tcn-auth-tab:hover{color:var(--clr-text-main,#0a0a0a)}
.tcn-auth-error{background:rgba(220,38,38,.08);border:1px solid rgba(220,38,38,.25);color:var(--clr-accent,#dc2626);padding:12px 16px;border-radius:var(--radius-md,10px);font-size:.85rem;margin-bottom:20px;text-align:center}
.tcn-auth-field{margin-bottom:20px}
.tcn-auth-field label{display:block;font-size:.65rem;font-weight:800;letter-spacing:.1em;color:var(--clr-text-muted,#6b7280);text-transform:uppercase;margin-bottom:8px}
.tcn-auth-field input{width:100%;padding:14px 16px;rgba(255,255,255,.04);border:1px solid var(--clr-border,var(--line));border-radius:var(--radius-md,10px);color:var(--clr-text-main,#0a0a0a);font-size:.95rem;outline:none;transition:border-color .2s;box-sizing:border-box}
.tcn-auth-field input:focus{border-color:var(--clr-primary,#0d9488)}
.tcn-auth-field input::placeholder{color:var(--clr-text-muted,#6b7280);opacity:.6}
.tcn-auth-remember{display:flex;align-items:center;gap:8px;margin-bottom:24px;font-size:.85rem;color:var(--clr-text-muted,#6b7280)}
.tcn-auth-remember input{width:16px;height:16px;accent-color:var(--clr-primary,#0d9488)}
.tcn-auth-btn{width:100%;padding:16px;background:var(--ink);color:var(--inverse);border:none;border-radius:999px;font-family:var(--dp-sans);font-size:.85rem;font-weight:800;letter-spacing:.05em;cursor:pointer;transition:background .2s}
.tcn-auth-btn:hover{background:var(--accent);color: var(--on-accent)}
.tcn-auth-divider{text-align:center;color:var(--clr-text-muted,#6b7280);font-size:.75rem;margin:24px 0;position:relative}
.tcn-auth-divider::before,.tcn-auth-divider::after{content:'';position:absolute;top:50%;width:35%;height:1px;background:var(--clr-border,var(--line))}
.tcn-auth-divider::before{left:0}
.tcn-auth-divider::after{right:0}
.tcn-auth-footer{text-align:center;margin-top:24px;font-size:.85rem;color:var(--clr-text-muted,#6b7280)}
.tcn-auth-footer a{color:var(--clr-primary,#0d9488);text-decoration:none;font-weight:700}
.tcn-auth-panel{display:none}
.tcn-auth-panel.active{display:block}

/* from page-register.php */
/* ─── Register Page ─── */
.tcn-reg-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:120px 20px 80px;background:var(--clr-bg)}
.tcn-reg-box{width:100%;max-width:480px;background:var(--clr-surface,#f7f7f8);border:1px solid var(--clr-border,var(--line));border-radius:var(--radius-lg,14px);padding:48px 36px;position:relative;overflow:hidden}
.tcn-reg-heading{font-family:var(--dp-serif);font-weight:400;letter-spacing: .015em;font-size:clamp(2rem,3.4vw,2.8rem);text-align:center;margin-bottom:6px;color:var(--clr-text-main,#0a0a0a); text-transform: uppercase; }
.tcn-reg-sub{color:var(--clr-text-muted,#6b7280);text-align:center;font-size:.85rem;margin-bottom:28px;line-height:1.5}
.tcn-reg-label{display:block;font-size:.65rem;font-weight:800;color:var(--clr-text-muted,#6b7280);letter-spacing:.15em;text-transform:uppercase;margin-bottom:6px}
.tcn-reg-input{width:100%;rgba(255,255,255,.04);border:1px solid var(--clr-border,var(--line));border-radius:var(--radius-md,10px);padding:14px 16px;color:var(--clr-text-main,#0a0a0a);font-size:.95rem;font-weight:600;outline:none;transition:border-color .2s;box-sizing:border-box}
.tcn-reg-input:focus{border-color:var(--clr-primary,#0d9488)}
.tcn-reg-input::placeholder{color:var(--clr-text-muted,#6b7280);opacity:.6}
.tcn-reg-code-input{font-family:var(--font-mono,'JetBrains Mono',monospace);letter-spacing:.15em;text-transform:uppercase;font-size:1rem;text-align:center}
.tcn-reg-btn{width:100%;padding:14px;border:none;border-radius:var(--radius-md,10px);font-weight:800;font-size:.9rem;letter-spacing:.08em;cursor:pointer;transition:background .2s,border-color .2s;text-transform:uppercase}
.tcn-reg-btn-primary{background:var(--ink);color:var(--inverse);border-radius:999px}
.tcn-reg-btn-primary:hover{background:var(--accent);color: var(--on-accent)}
.tcn-reg-btn-primary:disabled{opacity:.4;cursor:not-allowed}
.tcn-reg-msg{margin-top:12px;padding:10px 14px;border-radius:var(--radius-sm,6px);font-size:.8rem;font-weight:600;text-align:center;display:none}
.tcn-reg-msg.err{display:block;background:rgba(220,38,38,.08);color:var(--clr-accent,#dc2626);border:1px solid rgba(220,38,38,.16)}
.tcn-reg-msg.ok{display:block;background:var(--clr-primary-soft,rgba(13,148,136,.10));color:var(--clr-primary,#0d9488);border:1px solid var(--clr-primary-soft-border,rgba(13,148,136,.25))}
.tcn-reg-footer{text-align:center;margin-top:20px;font-size:.85rem;color:var(--clr-text-muted,#6b7280)}
.tcn-reg-footer a{color:var(--clr-primary,#0d9488);text-decoration:underline}
.tcn-reg-field{margin-bottom:16px}

/* ─── Code section (collapsible) ─── */
.tcn-reg-code-divider{display:flex;align-items:center;gap:12px;margin:24px 0 16px;color:var(--clr-text-muted,#6b7280);font-size:.7rem;font-weight:700;letter-spacing:.1em}
.tcn-reg-code-divider::before,.tcn-reg-code-divider::after{content:'';flex:1;height:1px;background:var(--clr-border,var(--line))}
.tcn-reg-code-toggle{cursor:pointer;color:var(--clr-text-muted,#6b7280);font-size:.8rem;font-weight:700;background:none;border:1px solid var(--clr-border,var(--line));border-radius:var(--radius-sm,6px);padding:10px 16px;width:100%;text-align:center;transition:border-color .2s,color .2s;letter-spacing:.06em}
.tcn-reg-code-toggle:hover{border-color:var(--clr-primary-soft-border,rgba(13,148,136,.25));color:var(--clr-text-main,#0a0a0a)}
.tcn-reg-code-toggle .arrow{display:inline-block;transition:transform .3s;margin-left:6px}
.tcn-reg-code-toggle.open .arrow{transform:rotate(180deg)}
.tcn-reg-code-section{max-height:0;overflow:hidden;transition:max-height .4s ease,opacity .3s;opacity:0}
.tcn-reg-code-section.open{max-height:250px;opacity:1}
.tcn-reg-code-inner{padding-top:16px}
.tcn-reg-code-row{display:flex;gap:10px;align-items:stretch}
.tcn-reg-code-row .tcn-reg-input{flex:1}
.tcn-reg-code-verify{background:var(--line);color:var(--clr-text-muted,#6b7280);border:1px solid var(--clr-border,var(--line));border-radius:var(--radius-md,10px);padding:0 20px;font-weight:800;font-size:.75rem;letter-spacing:.08em;cursor:pointer;white-space:nowrap;transition:background .2s,color .2s;text-transform:uppercase}
.tcn-reg-code-verify:hover{rgba(255,255,255,.04);color:var(--clr-text-main,#0a0a0a)}
.tcn-reg-code-verify:disabled{opacity:.4;cursor:not-allowed}
.tcn-reg-code-status{margin-top:10px;font-size:.8rem;font-weight:600;text-align:center;min-height:20px}
.tcn-reg-code-status.valid{color:var(--clr-primary,#0d9488)}
.tcn-reg-code-status.invalid{color:var(--clr-accent,#dc2626)}

/* ─── Unlock preview ─── */
.tcn-reg-unlock-info{background:var(--clr-primary-soft,rgba(13,148,136,.10));border:1px solid var(--clr-primary-soft-border,rgba(13,148,136,.25));border-radius:var(--radius-md,10px);padding:14px;margin-top:12px;text-align:center;display:none}
.tcn-reg-unlock-info.show{display:block}
.tcn-reg-unlock-info .dept-name{color:var(--clr-primary,#0d9488);font-weight:800;font-size:.95rem}
.tcn-reg-unlock-info .chan-name{color:var(--clr-cat-green,#16a34a);font-size:.75rem;font-weight:600;opacity:.8;margin-top:4px}
.tcn-reg-unlock-info .lock-icon{font-size:1.2rem;margin-bottom:4px}

@media (max-width:480px){
    .tcn-reg-box{padding:32px 24px}
    .tcn-reg-heading{font-size:1.2rem}
}
