/* ============================================================================
   Onboarding wizard (Slides 1-3: /register -> /onboarding/scan ->
   /onboarding/xero). Shares tokens.css and app.css's form primitives
   (.field/.input/.btn/.panel/.hint/.flash/.tag-*) — this file only adds the
   shell chrome and the pieces those don't already cover: step dots, the
   card enter animation, and the scan progress bar.
   ========================================================================= */

.ob-shell{min-height:100dvh;display:flex;flex-direction:column;background:var(--paper);}

.ob-top{display:flex;align-items:center;justify-content:space-between;padding:20px 28px;border-bottom:1px solid var(--rule);}
.ob-mark{font-size:15px;font-weight:600;letter-spacing:-.02em;color:var(--ink);}

.ob-dots{display:flex;align-items:center;gap:6px;}
.ob-dot{height:6px;border-radius:99px;background:var(--rule);transition:width .3s ease,background .3s ease;}
.ob-dot.on{width:20px;background:var(--ink);}
.ob-dot:not(.on){width:6px;}

.ob-body{flex:1;display:flex;flex-direction:column;align-items:center;padding:52px 24px 40px;}
.ob-content{width:100%;max-width:480px;display:flex;flex-direction:column;gap:40px;}

.ob-foot{text-align:center;padding:20px 24px;border-top:1px solid var(--rule);}
.ob-skip{background:none;border:none;font-size:13px;color:var(--grey-light);cursor:pointer;padding:4px 8px;border-radius:6px;text-decoration:none;}
.ob-skip:hover{color:var(--ink);}

.ob-h1{font-size:28px;font-weight:600;letter-spacing:-.03em;line-height:1.15;color:var(--ink);margin:0;}
.ob-lede{font-size:14px;color:var(--grey);margin:10px 0 0;line-height:1.5;}

.ob-accent{display:flex;gap:4px;margin-bottom:10px;}
.ob-accent span{width:8px;height:8px;border-radius:2px;background:var(--rule);display:inline-block;}
.ob-accent span.on{background:var(--ink);}

@keyframes ob-fade-up{from{opacity:0;transform:translateY(12px);}to{opacity:1;transform:translateY(0);}}
.ob-fade{animation:ob-fade-up .35s ease forwards;}
.ob-fade-1{animation-delay:.08s;opacity:0;}
.ob-fade-2{animation-delay:.16s;opacity:0;}
.ob-fade-3{animation-delay:.24s;opacity:0;}
.ob-fade-4{animation-delay:.32s;opacity:0;}
.ob-fade-5{animation-delay:.40s;opacity:0;}

.ob-scanbar{height:3px;background:var(--wash);border-radius:2px;overflow:hidden;}
.ob-scanbar-fill{height:100%;width:0;background:var(--ink);border-radius:2px;transition:width .1s linear;}
.ob-scan-row{display:flex;justify-content:space-between;margin-top:8px;font-size:12px;color:var(--grey-light);}

.ob-insight{padding:14px 16px;border-left:3px solid var(--ink);border-radius:0 10px 10px 0;background:var(--wash);display:flex;flex-direction:column;gap:5px;}
.ob-insight-headline{font-size:13.5px;font-weight:600;color:var(--ink);margin:0;letter-spacing:-.01em;}
.ob-insight-body{font-size:12.5px;color:var(--grey);margin:0;line-height:1.5;}

.ob-eyebrow{font-size:11px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--grey-light);margin:0;}

@keyframes ob-spin{to{transform:rotate(360deg);}}
.ob-spinner{width:28px;height:28px;border:2px solid var(--rule);border-top-color:var(--ink);border-radius:50%;animation:ob-spin .7s linear infinite;margin:0 auto;}

.ob-connect-btn{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;padding:13px 20px;font-size:15px;font-weight:500;letter-spacing:-.01em;color:var(--ink);background:var(--paper);border:1.5px solid var(--ink);border-radius:9px;cursor:pointer;}
.ob-connect-btn:hover{background:var(--wash);}

.ob-stat-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;}
.ob-stat{padding:12px;border:1px solid var(--rule);border-radius:8px;display:flex;flex-direction:column;gap:4px;}
.ob-stat-value{font-size:22px;font-weight:700;letter-spacing:-.04em;}
.ob-stat-label{font-size:10.5px;color:var(--grey-light);line-height:1.3;}
