:root{--tsb-green:#93c120;--ink:#1f2937;--muted:#64748b;--card:#ffffff;--bg:#f6f8fb}body{background:var(--bg);color:var(--ink);font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.app-nav{background:#fff;border-bottom:1px solid #e5e7eb;box-shadow:0 6px 18px rgba(15,23,42,.04)}.brand-logo{max-height:52px}.nav-link{font-weight:750}.card-soft{border:0;border-radius:22px;box-shadow:0 14px 38px rgba(15,23,42,.08)}.stat-card{border-radius:20px;background:#fff;border:1px solid #eef2f7;padding:1.2rem}.stat-card .num{font-size:2rem;font-weight:900}.btn-tsb{background:var(--tsb-green);border-color:var(--tsb-green);color:#102000;font-weight:900}.btn-tsb:hover{filter:brightness(.95);color:#102000}.kiosk-body{min-height:100vh;background:linear-gradient(135deg,#f8fbf4,#eef5ff);display:flex;align-items:center;justify-content:center;position:relative;overflow-x:hidden}.kiosk-body.kiosk-bg-enabled{background:linear-gradient(rgba(246,248,251,var(--kiosk-overlay,.82)),rgba(246,248,251,var(--kiosk-overlay,.82))),var(--kiosk-bg-image,linear-gradient(135deg,#f8fbf4,#eef5ff)) center center/cover no-repeat fixed}.kiosk-shell{width:min(1024px,96vw);min-height:720px;background:#fff;border:1px solid rgba(148,163,184,.22);border-radius:34px;padding:2rem;box-shadow:0 30px 80px rgba(15,23,42,.14)}.kiosk-shell-frosted{background:rgba(255,255,255,.86);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}.kiosk-logo{max-width:290px}.kiosk-title{font-weight:950;letter-spacing:-.04em}.kiosk-option{border:1px solid #e2e8f0;border-radius:24px;padding:1.4rem;background:#fff;box-shadow:0 14px 38px rgba(15,23,42,.06);transition:.15s}.kiosk-option:hover{transform:translateY(-2px);border-color:var(--tsb-green)}.host-card{display:flex;align-items:center;gap:1rem;border:1px solid #e2e8f0;border-radius:18px;padding:1rem;background:#fff}.host-card img,.avatar{width:64px;height:64px;border-radius:999px;object-fit:cover;background:#e5e7eb}.badge-preview{width:432px;height:288px;background:white;border:2px solid #ddd;position:relative;padding:18px;font-family:Arial,sans-serif}.badge-preview .visitor-word{position:absolute;right:24px;top:24px;font-size:44px;font-weight:900}.badge-preview .photo{position:absolute;left:28px;top:88px;width:138px;height:138px;border-radius:999px;object-fit:cover;background:#e5e7eb}.badge-preview .details{position:absolute;left:185px;top:110px;right:20px}.badge-preview .qr{position:absolute;right:24px;bottom:20px;width:88px;height:88px}.badge-preview .meta{position:absolute;left:28px;bottom:24px;font-size:18px}
@media print{@page{size:3in 2in;margin:0}body{margin:0;background:white}.no-print{display:none!important}.print-badge{width:3in;height:2in;overflow:hidden;page-break-after:avoid}.badge-preview{transform:none;width:3in;height:2in;border:0;padding:.12in}.badge-preview .visitor-word{font-size:.28in;right:.14in;top:.12in}.badge-preview .photo{left:.16in;top:.62in;width:.82in;height:.82in}.badge-preview .details{left:1.1in;top:.72in;right:.12in}.badge-preview .details h2{font-size:.22in}.badge-preview .details p{font-size:.14in}.badge-preview .qr{width:.55in;height:.55in;right:.16in;bottom:.12in}.badge-preview .meta{font-size:.12in;left:.16in;bottom:.15in}}
.kiosk-step-card{border:0;border-radius:24px;background:#fff;box-shadow:0 14px 38px rgba(15,23,42,.08);padding:1.5rem}.kiosk-step-card h2{letter-spacing:-.02em}.visitor-review{background:#f8fafc;border:1px solid #e2e8f0;border-radius:18px;padding:1rem}.signature-pad{touch-action:none}
/* Phase 3.1 visitor wizard */
.kiosk-wizard-shell{width:min(1180px,96vw);min-height:760px}.kiosk-wizard-logo{max-width:220px;max-height:76px}.wizard-progress{display:grid;grid-template-columns:repeat(7,1fr);gap:.5rem}.wizard-dot{border:0;background:transparent;text-align:center;color:#94a3b8;font-weight:800}.wizard-dot span{display:flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:999px;background:#e2e8f0;margin:0 auto .35rem;color:#475569}.wizard-dot small{display:block;font-size:.72rem}.wizard-dot.active span{background:var(--tsb-green);color:#102000;box-shadow:0 8px 20px rgba(147,193,32,.35)}.wizard-dot.active small{color:#0f172a}.wizard-dot.complete span{background:#d9f99d;color:#365314}.wizard-step{display:none}.wizard-step.active{display:block}.step-kicker{text-transform:uppercase;font-size:.85rem;font-weight:950;letter-spacing:.08em;color:#64748b}.wizard-card-narrow{max-width:860px}.visit-type-btn,.staff-select-card{border:2px solid #e2e8f0;border-radius:26px;background:#fff;padding:1.35rem;text-align:left;min-height:164px;box-shadow:0 14px 36px rgba(15,23,42,.06);transition:.15s}.visit-type-btn i{font-size:2.3rem;color:var(--tsb-green);display:block;margin-bottom:.8rem}.visit-type-btn strong,.staff-select-card strong{display:block;font-size:1.25rem}.visit-type-btn span,.staff-select-card span{display:block;color:#64748b;margin-top:.2rem}.visit-type-btn:hover,.staff-select-card:hover,.visit-type-btn.selected,.staff-select-card.selected{border-color:var(--tsb-green);transform:translateY(-2px);box-shadow:0 18px 44px rgba(15,23,42,.1)}.staff-select-card{text-align:center;min-height:210px}.staff-select-card img{width:96px;height:96px;border-radius:999px;object-fit:cover;background:#e5e7eb;margin:0 auto 1rem}.camera-preview{width:100%;max-height:460px;object-fit:cover}.photo-preview{width:min(420px,100%);aspect-ratio:4/3;object-fit:cover;border-radius:24px;background:#e5e7eb}.visitor-suggestions{position:absolute;left:.75rem;right:.75rem;top:100%;z-index:60}.policy-box{max-height:360px;overflow:auto;border:1px solid #e2e8f0;border-radius:18px;background:#f8fafc;padding:1.1rem;font-size:1.05rem;line-height:1.6}.visitor-review-list{display:grid;gap:.75rem}.visitor-review-list div{display:flex;justify-content:space-between;gap:1rem;border-bottom:1px solid #e2e8f0;padding:.8rem 0}.visitor-review-list span{color:#64748b;font-weight:800}.visitor-review-list strong{text-align:right;font-size:1.05rem}.wizard-actions{display:flex;justify-content:space-between;gap:1rem}.signature-pad{height:210px;touch-action:none}
@media (max-width: 768px){.kiosk-shell{padding:1.1rem;border-radius:24px}.wizard-progress{grid-template-columns:repeat(4,1fr);row-gap:.8rem}.wizard-dot small{display:none}.visit-type-btn,.staff-select-card{min-height:auto}.wizard-actions .btn{width:50%}.visitor-review-list div{display:block}.visitor-review-list strong{text-align:left;display:block;margin-top:.25rem}}
.camera-stage{width:100%;max-width:760px;margin:0 auto;overflow:hidden;border-radius:24px;background:#111827}.camera-stage .camera-preview{display:block;width:100%;aspect-ratio:4/3;max-height:520px}.face-guide{position:absolute;left:50%;top:50%;width:min(58%,330px);aspect-ratio:1;border:4px dashed rgba(255,255,255,.82);border-radius:999px;transform:translate(-50%,-50%);box-shadow:0 0 0 999px rgba(15,23,42,.16);pointer-events:none}.camera-status{position:absolute;left:1rem;right:1rem;bottom:1rem;background:rgba(15,23,42,.78);color:#fff;border-radius:999px;padding:.65rem 1rem;font-weight:850}.photo-countdown{position:absolute;inset:0;display:flex!important;align-items:center;justify-content:center;background:rgba(15,23,42,.35);color:#fff;font-size:clamp(5rem,18vw,12rem);font-weight:950;text-shadow:0 12px 35px rgba(0,0,0,.35);z-index:5}.photo-countdown.d-none{display:none!important}.photo-flash{background:rgba(255,255,255,.72);color:#0f172a;text-shadow:none;font-size:clamp(3rem,10vw,7rem)}


/* Phase 3.3 badge layout + photo auto-use */
.badge-page{background:#eef2f7;min-height:100vh;margin:0;padding:24px;display:flex;flex-direction:column;align-items:center;justify-content:flex-start}.badge-toolbar{width:min(900px,96vw);display:flex;gap:.75rem;margin-bottom:1rem}.print-badge{display:flex;align-items:flex-start;justify-content:center}.badge-3x2{width:864px;height:576px;background:#fff;border:4px solid #ddd;position:relative;overflow:hidden;font-family:Inter,Arial,sans-serif;color:#1f2937;box-sizing:border-box}.badge-logo-pill{position:absolute;left:36px;top:34px;width:260px;height:94px;background:var(--tsb-green);border-radius:24px;color:#fff;display:flex;align-items:center;gap:8px;padding:0 26px;box-sizing:border-box}.badge-logo-pill span{font-size:54px;line-height:1;font-weight:950;letter-spacing:-.06em}.badge-logo-pill strong{font-size:16px;line-height:1.08;font-weight:900}.badge-visitor-title{position:absolute;right:44px;top:52px;font-size:88px;line-height:.9;font-weight:950;letter-spacing:.015em}.badge-photo{position:absolute;left:56px;top:175px;width:260px;height:260px;border-radius:999px;object-fit:cover;background:#e5e7eb}.badge-main-details{position:absolute;left:375px;right:44px;top:205px;min-height:110px}.badge-main-details h1{margin:0;font-size:58px;line-height:1.05;font-weight:500;letter-spacing:-.04em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.badge-main-details p{font-size:30px;margin:.25rem 0 0;color:#475569;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.badge-meta{position:absolute;left:56px;bottom:54px;width:500px;font-size:38px;line-height:1.35;letter-spacing:-.035em}.badge-meta strong{font-weight:950}.badge-qr{position:absolute;right:48px;bottom:42px;width:178px;height:178px;object-fit:contain}.photo-preview{display:block;margin-left:auto;margin-right:auto}.photo-preview:not(.d-none)+.d-flex #retakePhoto{margin-inline:auto}
@media print{@page{size:3in 2in;margin:0}html,body{width:3in;height:2in;margin:0!important;padding:0!important;background:white!important;overflow:hidden}.no-print,.badge-toolbar{display:none!important}.print-badge{display:block;width:3in;height:2in;margin:0!important;padding:0!important}.badge-3x2{width:3in;height:2in;border:0;transform:none;box-shadow:none}.badge-logo-pill{left:.12in;top:.11in;width:.9in;height:.32in;border-radius:.08in;padding:0 .08in;gap:.025in}.badge-logo-pill span{font-size:.18in}.badge-logo-pill strong{font-size:.055in;line-height:1.05}.badge-visitor-title{right:.14in;top:.16in;font-size:.32in}.badge-photo{left:.19in;top:.63in;width:.8in;height:.8in}.badge-main-details{left:1.24in;right:.16in;top:.70in;min-height:.35in}.badge-main-details h1{font-size:.23in;line-height:1.05}.badge-main-details p{font-size:.11in;margin-top:.03in}.badge-meta{left:.19in;bottom:.16in;width:1.72in;font-size:.135in;line-height:1.28}.badge-qr{right:.18in;bottom:.15in;width:.58in;height:.58in}}
@media screen and (max-width: 920px){.badge-3x2{transform:scale(.8);transform-origin:top center}.print-badge{height:470px}}
/* Phase 3.4 returning visitor privacy + verification */
.returning-suggestion-item{display:flex!important;align-items:center;gap:.9rem;padding:.85rem 1rem!important;border:0!important;border-bottom:1px solid #e2e8f0!important;text-align:left}.returning-suggestion-photo{width:54px;height:54px;border-radius:999px;object-fit:cover;background:#e5e7eb;flex:0 0 auto}.returning-suggestion-text{display:block;min-width:0}.returning-suggestion-text strong{display:block;font-size:1.05rem;color:#1f2937}.returning-suggestion-text small{display:block;color:#64748b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.returning-verify-backdrop{position:fixed;inset:0;z-index:3000;background:rgba(15,23,42,.55);display:flex;align-items:center;justify-content:center;padding:1rem}.returning-verify-backdrop.d-none{display:none!important}.returning-verify-card{width:min(560px,96vw);background:#fff;border-radius:28px;padding:2rem;box-shadow:0 28px 80px rgba(15,23,42,.28);position:relative}.returning-verify-close{position:absolute;right:1rem;top:.75rem;border:0;background:transparent;font-size:2rem;line-height:1;color:#64748b}.returning-verify-photo{width:112px;height:112px;border-radius:999px;object-fit:cover;background:#e5e7eb;border:4px solid #fff;box-shadow:0 12px 32px rgba(15,23,42,.16)}

/* Phase 3.5 returning visitor thumbnail cleanup */
.returning-suggestion-item{min-height:86px}
.returning-suggestion-photo{width:64px!important;height:64px!important;border:1px solid #e2e8f0;box-shadow:0 6px 18px rgba(15,23,42,.08)}
.returning-suggestion-text small:empty{display:none!important}
.returning-suggestion-text strong{font-size:1.18rem!important;line-height:1.2}


/* Phase 3.7 badge layout refresh */
.badge-3x2{
    width:864px;height:576px;background:#fff;border:4px solid #ddd;position:relative;overflow:hidden;
    font-family:Inter,Arial,sans-serif;color:#1f2937;box-sizing:border-box;
}
.badge-logo-img{position:absolute;left:36px;top:38px;width:245px;height:auto;max-height:92px;object-fit:contain;object-position:left center;}
.badge-visitor-title{position:absolute;right:44px;top:58px;font-size:82px;line-height:.9;font-weight:950;letter-spacing:.015em;}
.badge-photo{position:absolute;left:54px;top:178px;width:235px;height:235px;border-radius:999px;object-fit:cover;background:#e5e7eb;}
.badge-main-details{position:absolute;left:345px;right:42px;top:205px;min-height:160px;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;}
.badge-main-details h1{margin:0;font-size:56px;line-height:1.05;font-weight:650;letter-spacing:-.045em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;}
.badge-main-details p{font-size:25px;margin:12px 0 0;color:#475569;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;}
.badge-reason{display:inline-flex;align-items:center;justify-content:center;margin-top:14px;padding:8px 18px;border-radius:999px;font-size:22px;font-weight:900;line-height:1;background:#e8f4d1;color:#315400;border:2px solid rgba(147,193,32,.35);}
.badge-reason-contractor{background:#fff3dc;color:#7a4300;border-color:#f59e0b55;}
.badge-reason-interview{background:#f1e7ff;color:#5b21b6;border-color:#8b5cf655;}
.badge-reason-sales-visit{background:#dcfce7;color:#166534;border-color:#22c55e55;}
.badge-reason-meeting{background:#e0f2fe;color:#075985;border-color:#0ea5e955;}
.badge-reason-other{background:#f1f5f9;color:#334155;border-color:#94a3b855;}
.badge-meta{position:absolute;left:54px;bottom:48px;width:500px;font-size:34px;line-height:1.34;letter-spacing:-.035em;}
.badge-meta strong{font-weight:950;}
.badge-qr{position:absolute;right:56px;bottom:50px;width:162px;height:162px;object-fit:contain;}
@media print{
    @page{size:3in 2in;margin:0}
    html,body{width:3in;height:2in;margin:0!important;padding:0!important;background:white!important;overflow:hidden}
    .no-print,.badge-toolbar{display:none!important}
    .print-badge{display:block;width:3in;height:2in;margin:0!important;padding:0!important}
    .badge-3x2{width:3in;height:2in;border:0;transform:none;box-shadow:none}
    .badge-logo-img{left:.13in;top:.13in;width:.78in;max-height:.27in;}
    .badge-visitor-title{right:.14in;top:.17in;font-size:.31in;line-height:.9;}
    .badge-photo{left:.18in;top:.62in;width:.74in;height:.74in;}
    .badge-main-details{left:1.08in;right:.14in;top:.60in;min-height:.64in;}
    .badge-main-details h1{font-size:.205in;line-height:1.06;font-weight:650;}
    .badge-reason{margin-top:.045in;padding:.025in .065in;border-radius:.08in;font-size:.075in;border-width:.006in;}
    .badge-main-details p{font-size:.082in;margin-top:.035in;}
    .badge-meta{left:.18in;bottom:.15in;width:1.72in;font-size:.115in;line-height:1.28;}
    .badge-qr{right:.18in;bottom:.16in;width:.53in;height:.53in;}
}
@media screen and (max-width: 920px){.badge-3x2{transform:scale(.8);transform-origin:top center}.print-badge{height:470px}}

/* Phase 3.8 monochrome badge polish for black-and-white Brother printing */
.badge-3x2{
    border:3px solid #d7d7d7;
    border-radius:0;
    color:#1f2937;
}
.badge-logo-img{
    left:42px;
    top:36px;
    width:235px;
    max-height:82px;
    filter:grayscale(1) contrast(1.15);
}
.badge-visitor-title{
    right:48px;
    top:48px;
    font-size:76px;
    letter-spacing:.03em;
}
.badge-photo{
    left:54px;
    top:166px;
    width:245px;
    height:245px;
    filter:grayscale(1) contrast(1.05);
}
.badge-main-details{
    left:350px;
    right:44px;
    top:206px;
    min-height:148px;
    justify-content:flex-start;
}
.badge-main-details h1{
    font-size:52px;
    font-weight:650;
    line-height:1.04;
}
.badge-reason,
.badge-reason-contractor,
.badge-reason-interview,
.badge-reason-sales-visit,
.badge-reason-meeting,
.badge-reason-other{
    margin-top:15px;
    padding:6px 18px;
    font-size:22px;
    font-weight:900;
    letter-spacing:.035em;
    background:#fff;
    color:#1f2937;
    border:3px solid #8b8b8b;
}
.badge-main-details p{
    font-size:24px;
    margin-top:10px;
    color:#374151;
}
.badge-divider{
    position:absolute;
    left:54px;
    right:258px;
    bottom:150px;
    height:2px;
    background:#d0d0d0;
}
.badge-meta{
    left:54px;
    bottom:70px;
    width:590px;
    font-size:31px;
    line-height:1.35;
}
.badge-meta-row{
    display:flex;
    align-items:center;
    gap:14px;
    white-space:nowrap;
}
.badge-meta-row strong{
    min-width:150px;
    font-weight:900;
}
.badge-meta-row span:last-child{
    font-weight:450;
}
.badge-meta-icon{
    width:34px;
    height:34px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    font-size:30px;
    line-height:1;
    color:#111;
    flex:0 0 34px;
}
.badge-qr{
    right:56px;
    bottom:72px;
    width:158px;
    height:158px;
}
.badge-footer{
    position:absolute;
    left:54px;
    right:54px;
    bottom:18px;
    text-align:center;
    font-size:13px;
    letter-spacing:.06em;
    color:#1f2937;
    white-space:nowrap;
}
@media print{
    .badge-3x2{border:0;border-radius:0;color:#111;}
    .badge-logo-img{left:.145in;top:.105in;width:.79in;max-height:.25in;filter:grayscale(1) contrast(1.15);}
    .badge-visitor-title{right:.14in;top:.11in;font-size:.275in;letter-spacing:.025em;}
    .badge-photo{left:.17in;top:.55in;width:.78in;height:.78in;filter:grayscale(1) contrast(1.05);}
    .badge-main-details{left:1.12in;right:.14in;top:.64in;min-height:.47in;}
    .badge-main-details h1{font-size:.19in;line-height:1.04;font-weight:650;}
    .badge-reason,.badge-reason-contractor,.badge-reason-interview,.badge-reason-sales-visit,.badge-reason-meeting,.badge-reason-other{margin-top:.045in;padding:.018in .06in;font-size:.075in;letter-spacing:.03em;background:#fff;color:#111;border:.007in solid #777;}
    .badge-main-details p{font-size:.078in;margin-top:.03in;color:#222;}
    .badge-divider{left:.17in;right:.83in;bottom:.52in;height:.006in;background:#d0d0d0;}
    .badge-meta{left:.17in;bottom:.23in;width:2.0in;font-size:.102in;line-height:1.34;}
    .badge-meta-row{gap:.045in;}
    .badge-meta-row strong{min-width:.50in;font-weight:900;}
    .badge-meta-icon{width:.11in;height:.11in;flex-basis:.11in;font-size:.095in;}
    .badge-qr{right:.16in;bottom:.24in;width:.54in;height:.54in;}
    .badge-footer{left:.17in;right:.17in;bottom:.045in;font-size:.043in;letter-spacing:.045em;}
}
@media screen and (max-width: 920px){.badge-3x2{transform:scale(.8);transform-origin:top center}.print-badge{height:470px}}
