.auth-shell{min-height:calc(100vh - var(--site-nav-height));padding:clamp(4rem,8vw,7rem) 0;background:#101112;color:#fff}.auth-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(380px,.7fr);gap:clamp(3rem,8vw,8rem);align-items:start}.auth-intro{padding-top:1rem}.auth-intro h1{max-width:9ch;margin:1rem 0;font-size:clamp(3.4rem,6vw,6.5rem);line-height:.94;letter-spacing:-.055em;color:#fff}.auth-intro>p:not(.hero-badge){max-width:54ch;color:rgba(255,255,255,.65);line-height:1.75}.auth-card{padding:clamp(1.5rem,3vw,2.3rem);border:1px solid rgba(241,205,111,.22);border-radius:26px;background:rgba(255,255,255,.045);box-shadow:0 26px 70px rgba(0,0,0,.24)}.auth-card h2{margin:0 0 .5rem;color:#fff;font-size:1.8rem}.auth-card>p{color:rgba(255,255,255,.6)}.auth-form{display:grid;gap:1rem;margin-top:1.5rem}.auth-field{display:grid;gap:.45rem}.auth-field label{font-weight:700;font-size:.9rem}.auth-field input,.auth-field select,.auth-field textarea{width:100%;min-height:50px;padding:.8rem .9rem;border:1px solid rgba(255,255,255,.15);border-radius:12px;background:#18191a;color:#fff}.auth-field textarea{min-height:130px;resize:vertical}.auth-field input:focus,.auth-field select:focus,.auth-field textarea:focus{outline:2px solid rgba(241,205,111,.45);outline-offset:2px;border-color:var(--color-primary)}.auth-button{min-height:52px;border:1px solid var(--color-primary);border-radius:12px;background:var(--color-primary);color:#17130d;font-weight:800;cursor:pointer}.auth-button:hover{filter:brightness(1.05);transform:translateY(-1px)}.auth-note{padding:.9rem 1rem;border-radius:12px;background:rgba(241,205,111,.09);color:rgba(255,255,255,.75)!important;font-size:.88rem;line-height:1.55}.auth-error,.auth-success{padding:.85rem 1rem;border-radius:12px;font-size:.9rem}.auth-error{background:rgba(204,70,70,.16);border:1px solid rgba(224,100,100,.35);color:#ffd5d5}.auth-success{background:rgba(75,170,108,.15);border:1px solid rgba(102,195,134,.35);color:#d8ffe4}.portal-shell{min-height:calc(100vh - var(--site-nav-height));background:#f4efe5;padding:clamp(3rem,6vw,5rem) 0}.portal-top{display:flex;justify-content:space-between;align-items:center;gap:1.5rem;margin-bottom:2rem}.portal-top h1{margin:.3rem 0 0;font-size:clamp(2.6rem,4vw,4.4rem);line-height:1}.portal-actions{display:flex;flex-wrap:wrap;gap:.7rem}.portal-link{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:.7rem 1rem;border:1px solid rgba(23,19,13,.16);border-radius:999px;background:#fff;color:#17130d;text-decoration:none;font-weight:750}.portal-link.is-primary{background:#161718;color:#fff;border-color:#161718}.admin-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.admin-card{display:block;padding:1.5rem;border:1px solid rgba(23,19,13,.1);border-radius:20px;background:#fff;color:#17130d;text-decoration:none;box-shadow:0 15px 40px rgba(31,24,15,.06)}.admin-card span{color:#a87912;font-size:.72rem;font-weight:850;letter-spacing:.1em;text-transform:uppercase}.admin-card h2{margin:.7rem 0 .5rem;font-size:1.45rem}.admin-card p{margin:0;color:#766c5d;line-height:1.6}.admin-layout{display:grid;grid-template-columns:minmax(320px,.68fr) minmax(0,1.32fr);gap:2rem;align-items:start}.admin-panel{padding:1.4rem;border:1px solid rgba(23,19,13,.1);border-radius:20px;background:#fff}.admin-panel h2{margin-top:0}.admin-form{display:grid;gap:1rem}.admin-form .auth-field input,.admin-form .auth-field select,.admin-form .auth-field textarea{background:#faf8f3;color:#17130d;border-color:rgba(23,19,13,.15)}.admin-table{width:100%;border-collapse:collapse}.admin-table th,.admin-table td{padding:.8rem .6rem;border-bottom:1px solid rgba(23,19,13,.1);text-align:left;vertical-align:top}.admin-table th{font-size:.76rem;text-transform:uppercase;letter-spacing:.06em;color:#827768}.admin-table td{font-size:.9rem}.admin-delete{border:0;background:transparent;color:#a72d2d;font-weight:700;cursor:pointer}.twofa-secret{display:block;padding:1rem;border-radius:12px;background:#0f1011;color:var(--color-primary);font-family:ui-monospace,monospace;word-break:break-all;letter-spacing:.08em}.portal-badge{display:inline-flex;padding:.35rem .6rem;border-radius:999px;background:rgba(181,138,36,.13);color:#7d5a0b;font-size:.73rem;font-weight:800}.review-public-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.review-public-card{padding:1.5rem;border:1px solid rgba(23,19,13,.1);border-radius:20px;background:#fff}.review-stars{color:#b58a24;letter-spacing:.08em}.review-public-card blockquote{margin:1rem 0;color:#5f574d;line-height:1.72}.review-public-card footer strong{display:block}.review-public-card footer span{font-size:.85rem;color:#8a8175}@media(max-width:900px){.auth-grid,.admin-layout{grid-template-columns:1fr}.admin-grid,.review-public-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:620px){.admin-grid,.review-public-grid{grid-template-columns:1fr}.portal-top{align-items:flex-start;flex-direction:column}.auth-card{padding:1.25rem}.admin-panel{overflow-x:auto}}.twofa-panel{max-width:980px}.twofa-role-note{margin:.6rem 0 0;color:#766c5d}.twofa-setup-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1rem;margin-top:.5rem}.twofa-qr-card,.twofa-manual-card,.twofa-recovery-box{padding:1.25rem;border:1px solid rgba(23,19,13,.1);border-radius:18px;background:#faf8f3}.twofa-qr-card h2,.twofa-manual-card h2,.twofa-recovery-box h2{margin:.2rem 0 .65rem}.twofa-qr-card p,.twofa-manual-card p,.twofa-recovery-box p{color:#70675b;line-height:1.65}.twofa-qr{display:grid;place-items:center;width:min(100%,300px);aspect-ratio:1;margin:1rem auto 0;padding:12px;border:1px solid rgba(23,19,13,.12);border-radius:20px;background:#fff;box-shadow:0 16px 38px rgba(31,24,15,.08)}.twofa-qr svg{display:block;width:100%;height:100%;border-radius:12px}.twofa-confirm-form{max-width:560px;margin-top:1.25rem;padding-top:1.25rem;border-top:1px solid rgba(23,19,13,.1)}.twofa-confirm-form .auth-field input{font-size:1.25rem;letter-spacing:.18em;text-align:center}.twofa-confirm-form .auth-button:disabled{opacity:.45;cursor:not-allowed;transform:none}.twofa-status-row{display:flex;justify-content:space-between;gap:2rem;align-items:center;padding:1.2rem;border:1px solid rgba(59,143,88,.18);border-radius:18px;background:rgba(75,170,108,.07)}.twofa-status-row>div:first-child{position:relative;padding-left:1.6rem}.twofa-status-row p{margin:.35rem 0 0;color:#70675b}.twofa-status-dot{position:absolute;left:0;top:.25rem;width:11px;height:11px;border-radius:50%;background:#3f9d63;box-shadow:0 0 0 5px rgba(63,157,99,.12)}.twofa-status-number{display:grid;min-width:120px;text-align:right}.twofa-status-number strong{font-size:2rem}.twofa-status-number span{font-size:.78rem;color:#766c5d}.twofa-actions-form{display:flex;flex-wrap:wrap;gap:.7rem;margin-top:1rem}.twofa-danger{color:#9f2f2f;border-color:rgba(159,47,47,.24)}.twofa-recovery-box{margin-bottom:1.25rem;border-color:rgba(181,138,36,.25);background:#fffaf0}.twofa-recovery-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem;margin:1rem 0 1.2rem}.twofa-recovery-grid code{padding:.75rem;border:1px dashed rgba(23,19,13,.18);border-radius:10px;background:#fff;color:#17130d;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:1rem;text-align:center;letter-spacing:.06em}.auth-error code{color:inherit;word-break:break-all}.auth-error strong{color:inherit}@media(max-width:760px){.twofa-setup-grid{grid-template-columns:1fr}.twofa-status-row{align-items:flex-start;flex-direction:column}.twofa-status-number{text-align:left}.twofa-recovery-grid{grid-template-columns:1fr}}@media print{body>*:not(main){display:none!important}.portal-top,.twofa-status-row,.twofa-actions-form,.twofa-setup-grid,.twofa-confirm-form,.auth-error,.auth-success{display:none!important}.twofa-panel{border:0!important;box-shadow:none!important}.twofa-recovery-box{border:0!important}.twofa-recovery-grid{grid-template-columns:repeat(2,1fr)!important}}.page-portal .auth-success{background:linear-gradient(180deg,rgba(228,247,235,.98) 0%,rgba(216,242,224,.98) 100%);border:1px solid rgba(83,167,114,.28);color:#24593a;font-weight:650}.page-portal .auth-note{margin-top:1rem;padding:1rem 1.1rem;border:1px solid rgba(181,138,36,.16);border-radius:14px;background:linear-gradient(180deg,#fcf8ef 0%,#f7efe1 100%);color:#50473b !important;font-size:.92rem;line-height:1.65;box-shadow:inset 0 1px 0 rgba(255,255,255,.72)}.page-portal .auth-note strong{color:#17130d;font-weight:800}.twofa-panel{padding:1.55rem;border-radius:24px;background:rgba(255,255,255,.72);box-shadow:0 22px 54px rgba(31,24,15,.06)}.twofa-recovery-box{margin-bottom:1.4rem;padding:1.35rem 1.35rem 1.45rem;border:1px solid rgba(181,138,36,.24);border-radius:24px;background:linear-gradient(180deg,#fffaf1 0%,#f9f2e5 100%);box-shadow:inset 0 1px 0 rgba(255,255,255,.8)}.twofa-recovery-box .portal-badge{margin-bottom:.35rem}.twofa-recovery-box h2{margin:.2rem 0 .7rem;font-size:clamp(2rem,3.2vw,2.55rem);line-height:1.02;letter-spacing:-.03em}.twofa-recovery-box>p{max-width:70ch;margin-bottom:1.15rem;color:#6d6458;font-size:1.02rem}.twofa-recovery-grid{gap:.65rem;margin:1.1rem 0 1.35rem}.twofa-recovery-grid code{display:flex;align-items:center;justify-content:center;min-height:54px;padding:.9rem 1rem;border:1px dashed rgba(181,138,36,.34);border-radius:14px;background:rgba(255,255,255,.96);box-shadow:0 10px 24px rgba(31,24,15,.04);color:#2a241d;font-size:1.03rem;font-weight:700;letter-spacing:.12em}.twofa-recovery-box .portal-link.is-primary{min-height:50px;padding:.9rem 1.2rem;border-radius:999px;background:#121316;border-color:#121316;box-shadow:0 14px 26px rgba(18,19,22,.12)}.twofa-status-row{padding:1.35rem 1.25rem;border:1px solid rgba(83,167,114,.22);border-radius:22px;background:linear-gradient(180deg,rgba(234,247,238,.94) 0%,rgba(223,241,228,.94) 100%)}.twofa-status-row strong{color:#1c2a20}.twofa-status-row p,.twofa-status-number span{color:#5f695d}.twofa-status-number strong{font-size:clamp(2rem,3vw,2.5rem);line-height:1}.twofa-actions-form{margin-top:1.1rem}.twofa-actions-form .portal-link{min-height:48px;padding-inline:1.15rem}.page-login .auth-intro>p:not(.hero-badge),.page-login .auth-card>p{color:rgba(255,255,255,.78)}.page-login .auth-field label,.page-login .auth-card h2{color:#ffffff}.page-login .auth-field input::placeholder{color:rgba(255,255,255,.54)}.page-login .auth-error{background:rgba(154,33,33,.24);border:1px solid rgba(255,120,120,.28);color:#ffe8e8}.page-login .auth-success{background:rgba(47,123,72,.24);border:1px solid rgba(112,209,148,.26);color:#ebfff1}.page-portal .portal-top>div>p,.page-portal .twofa-role-note,.page-portal .admin-card p,.page-portal .admin-panel p,.page-portal .admin-panel label,.page-portal .admin-table td,.page-portal .admin-table td small,.page-portal .review-public-card blockquote,.page-portal .review-public-card footer span{color:#5f564a}.page-portal .admin-card h2,.page-portal .admin-panel h2,.page-portal .admin-table td strong,.page-portal .review-public-card footer strong,.page-portal .twofa-status-row strong,.page-portal .portal-link,.page-portal .admin-form .auth-field label{color:#17130d}.page-portal .admin-table th{color:#776d60}.page-portal .auth-error{background:linear-gradient(180deg,rgba(251,232,232,.98) 0%,rgba(247,220,220,.98) 100%);border:1px solid rgba(189,92,92,.26);color:#8b3131;font-weight:650}.page-portal .auth-error strong{color:#6e1f1f}.page-portal .auth-error code{color:#6e1f1f;background:rgba(255,255,255,.55);padding:.08rem .3rem;border-radius:6px}.page-portal .auth-success{background:linear-gradient(180deg,rgba(228,247,235,.98) 0%,rgba(216,242,224,.98) 100%);border:1px solid rgba(83,167,114,.28);color:#24593a;font-weight:650}.page-portal .admin-panel,.page-portal .admin-card,.page-portal .review-public-card{box-shadow:0 15px 40px rgba(31,24,15,.05)}.page-portal .admin-form .auth-field input::placeholder,.page-portal .admin-form .auth-field textarea::placeholder{color:#8f8577}.password-create-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.6rem;align-items:stretch}.password-create-row .portal-link{border-radius:12px;white-space:nowrap}.password-tools{display:flex;justify-content:space-between;gap:.8rem;align-items:center;color:#756b5e;font-size:.78rem}.password-copy-button{padding:0;border:0;background:transparent;color:#8a6512;font:inherit;font-weight:800;cursor:pointer}.password-copy-button:hover{text-decoration:underline}.admin-check-option{display:grid;grid-template-columns:auto 1fr;gap:.8rem;align-items:start;padding:1rem;border:1px solid rgba(181,138,36,.18);border-radius:14px;background:#fbf7ee;cursor:pointer}.admin-check-option input{width:18px;height:18px;margin-top:.12rem;accent-color:#b58a24}.admin-check-option span{display:grid;gap:.2rem;color:#17130d}.admin-check-option strong{font-size:.9rem}.admin-check-option small{color:#6e6457;line-height:1.5}.admin-status-badge{display:inline-flex;align-items:center;padding:.32rem .55rem;border-radius:999px;font-size:.72rem;font-weight:800;white-space:nowrap}.admin-status-badge.is-warning{background:#fff1cc;color:#76540b;border:1px solid rgba(181,138,36,.2)}.admin-status-badge.is-ok{background:#e8f5ec;color:#276440;border:1px solid rgba(63,157,99,.16)}@media(max-width:620px){.password-create-row{grid-template-columns:1fr}.password-tools{align-items:flex-start;flex-direction:column}}.page-login .auth-intro .hero-badge{display:inline-flex;align-items:center;width:fit-content;padding:.42rem .72rem;border:1px solid rgba(241,205,111,.38);border-radius:999px;background:rgba(241,205,111,.10);color:#f1cd6f !important;font-size:.74rem;font-weight:800;line-height:1;letter-spacing:.02em}
/* 2FA recovery codes: robust print/PDF layout for portal and admin backend */
@media print {
  body > .admin-app-shell { display: block !important; }
  .admin-sidebar,
  .admin-page-header,
  .admin-security-intro,
  .portal-top,
  .twofa-status-row,
  .twofa-actions-form,
  .twofa-setup-grid,
  .twofa-confirm-form,
  .auth-error,
  .auth-success,
  .twofa-recovery-box .portal-link { display: none !important; }

  .admin-main {
    margin: 0 !important;
    min-height: auto !important;
    background: #fff !important;
  }

  .admin-content,
  .portal-shell,
  .portal-shell .container {
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important;
    background: #fff !important;
  }

  .admin-security-panel.twofa-panel,
  .twofa-panel {
    display: block !important;
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    background: #fff !important;
  }

  .twofa-recovery-box {
    display: block !important;
    width: 100% !important;
    max-width: 180mm !important;
    margin: 12mm auto 0 !important;
    padding: 10mm !important;
    border: 1px solid #d8c58f !important;
    border-radius: 4mm !important;
    background: #fff !important;
    color: #17130d !important;
    box-shadow: none !important;
    break-inside: avoid !important;
    page-break-inside: avoid !important;
  }

  .twofa-recovery-box .portal-badge {
    display: inline-flex !important;
    color: #7d5a0b !important;
    background: #f7edcf !important;
    border: 1px solid #e2cf93 !important;
  }

  .twofa-recovery-box h2,
  .twofa-recovery-box p { color: #17130d !important; }

  .twofa-recovery-grid {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 4mm !important;
    margin: 7mm 0 0 !important;
  }

  .twofa-recovery-grid code {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    min-height: 14mm !important;
    padding: 3mm !important;
    border: 1px dashed #b99746 !important;
    border-radius: 2mm !important;
    background: #fff !important;
    color: #17130d !important;
    font-size: 12pt !important;
    font-weight: 700 !important;
    letter-spacing: .08em !important;
    box-shadow: none !important;
  }
}
