/* REP V30.4: ordered consolidation of the approved V30 CSS. Do not change visual tokens. */

/* SOURCE: v30/rep-v30-auth-ui.css */
/* REP V30 / standalone Auth Scene 01, 02, 02V. Staging only, flag OFF. */
#rep-account:has(.rep30-auth){padding:0!important;background:#0e1c22!important;overflow-y:auto;overflow-x:hidden;align-items:stretch;justify-content:center}
#rep-account .account-card:has(.rep30-auth){max-width:none!important;width:100%!important;margin:0!important;padding:0!important;border:none!important;background:transparent!important;border-radius:0!important}
.rep30-auth,.rep30-auth *{box-sizing:border-box}
.rep30-auth{--n:#0e1c22;--fg:#fcfffd;--secondary:#b5c4c8;--p:#c38ef8;--lime:#b7f86c;min-height:100dvh;min-height:100vh;color:var(--fg);background:var(--n);font-family:Nunito,system-ui,sans-serif;display:flex;flex-direction:column;align-items:center;padding:clamp(18px,4vh,36px) 22px max(24px,env(safe-area-inset-bottom));width:100%;font-size:16px;line-height:1.35}
.rep30-header{width:100%;max-width:432px;position:relative;display:flex;flex-direction:column;align-items:center;flex:none;gap:4px;min-height:91px}
.rep30-back{position:absolute;left:0;top:1px;width:45px;height:45px;background:#172c34;border:2px solid #395561;border-radius:14px;display:grid;place-items:center;cursor:pointer;padding:8px}
.rep30-back img{width:22px;height:22px;object-fit:contain}
.rep30-brand{font-size:clamp(35px,8.9vw,46px);font-weight:1000;letter-spacing:-2.6px;color:#fff;line-height:1.05}
.rep30-tag{color:var(--p);font-size:clamp(13px,3.5vw,18px);font-weight:900;text-align:center;line-height:1.18;padding:3px 42px 0}
.rep30-contents{width:100%;max-width:430px;display:flex;flex-direction:column;align-items:center;flex:1;justify-content:center;min-height:0;padding:18px 0}
.rep30-hero{width:min(65vw,245px);max-height:29vh;object-fit:contain;display:block;margin:0 auto clamp(16px,2.7vh,24px)}
.rep30-icon-hero{height:110px;width:110px;border-radius:29px;display:grid;place-items:center;margin:4px 0 24px;background:#20363c;border:2px solid #38545c}
.rep30-icon-hero img{width:72px;height:72px;object-fit:contain}
.rep30-glyph{font-size:67px;line-height:1;color:#b7f86c;font-weight:1000}
.rep30-title{font-size:clamp(25px,7.4vw,37px);font-weight:1000;text-align:center;letter-spacing:-.9px;line-height:1.09;margin:0 0 13px}
.rep30-sub{color:var(--secondary);font-weight:750;text-align:center;font-size:clamp(14px,3.8vw,17px);margin:0 0 clamp(20px,3.3vh,28px);line-height:1.34}
.rep30-actions{width:100%;display:flex;flex-direction:column;gap:15px}
.rep30-btn{width:100%;border:0;border-radius:21px;padding:15px 13px;min-height:63px;display:flex;gap:16px;align-items:center;justify-content:center;background:#fff;color:#152026;font:900 clamp(16px,4vw,19px)/1.2 Nunito,system-ui,sans-serif;box-shadow:0 6px 0 #c7d2d7;cursor:pointer;transition:transform .1s,box-shadow .1s}
.rep30-btn:hover{filter:brightness(.98)}.rep30-btn:active{transform:translateY(4px);box-shadow:0 2px 0 #c7d2d7}
.rep30-btn.lime{background:var(--lime);box-shadow:0 6px 0 #779c42}.rep30-btn.lime:active{box-shadow:0 2px 0 #779c42}
.rep30-btn.blue{background:#769dd8;box-shadow:0 6px 0 #46618d}
.rep30-btn.soft{background:#24363e;box-shadow:0 5px 0 #18272e;color:var(--fg);border:1px solid #47616d}
.rep30-btn img{width:35px;height:35px;object-fit:contain;flex:none}
.rep30-btn:disabled{opacity:.62;cursor:wait}
.rep30-footer{max-width:432px;min-height:44px;width:100%;display:flex;align-items:flex-end;justify-content:center;text-align:center;color:var(--secondary);font-weight:800;padding-bottom:10px;font-size:15px;flex:none}
.rep30-link{border:0;background:transparent;padding:0 5px;color:var(--p);font:900 inherit;cursor:pointer;text-decoration:none;min-height:24px}
.rep30-note{margin:18px 0 0;color:#98abb1;text-align:center;font-size:13px;line-height:1.4}
.rep30-form{display:flex;flex-direction:column;gap:15px;width:100%;max-width:432px;margin:0}
.rep30-field{display:flex;flex-direction:column;gap:6px;color:#e6f0ef;font-size:14px;font-weight:850}
.rep30-field input{font-family:Nunito,system-ui,sans-serif;border-radius:15px;border:2px solid #49616a;background:#14282e;color:#fff;font-size:16px;line-height:1.3;min-height:59px;padding:14px 16px;outline:0;width:100%}
.rep30-field input:focus-visible{border-color:var(--lime);box-shadow:0 0 0 3px rgba(183,248,108,.14)}
.rep30-field input::placeholder{color:#91a2a9}
.rep30-field .rep30-row{display:flex;align-items:center;position:relative}
.rep30-field .rep30-row input{padding-right:79px}
.rep30-visibility{position:absolute;right:8px;border:0;background:transparent;color:var(--p);font-family:inherit;font-weight:900;padding:12px;cursor:pointer}
.rep30-error{color:#ffbdb6;background:#4c282b;border:1px solid #84464c;border-radius:14px;padding:11px 13px;width:100%;font-weight:750;margin:0 0 13px;line-height:1.35}
.rep30-info{background:#20383f;border:1px solid #415f67;border-radius:15px;color:#cfdee0;padding:13px 15px;font-size:14px;line-height:1.4;text-align:center;margin:0 0 18px}
.rep30-inline-links{text-align:center;margin-top:16px}
.rep30-inline-links button{padding:6px;border:0;background:transparent;color:var(--p);font:900 14px Nunito,system-ui,sans-serif;cursor:pointer}
.rep30-auth :is(button,input):focus-visible{outline:3px solid var(--p);outline-offset:3px}
@media(max-height:740px){.rep30-auth{padding-top:13px;padding-bottom:10px}.rep30-header{min-height:71px}.rep30-contents{padding:12px 0}.rep30-hero{width:min(47vw,170px);max-height:21vh;margin-bottom:11px}.rep30-title{margin-bottom:8px}.rep30-sub{margin-bottom:12px}.rep30-actions{gap:11px}.rep30-btn{min-height:54px;border-radius:17px;padding:10px}.rep30-icon-hero{height:85px;width:85px;margin-bottom:14px}.rep30-icon-hero img{width:55px;height:55px}.rep30-form{gap:11px}.rep30-field input{min-height:51px}.rep30-footer{min-height:32px;padding-bottom:3px}}
@media(max-width:340px){.rep30-auth{padding-inline:16px}.rep30-tag{padding-inline:35px}.rep30-btn{font-size:15px;gap:8px}.rep30-btn img{width:30px;height:30px}.rep30-footer{font-size:13px}}
@media(prefers-reduced-motion:reduce){.rep30-btn{transition:none}}

/* SCENA 02V R03: original user-supplied white padlock replaces generic check glyph. */
.rep30-icon-hero img.rep30-lock-icon{width:94px;height:94px;object-fit:contain}
@media(max-height:740px){.rep30-icon-hero img.rep30-lock-icon{width:72px;height:72px}}


/* SOURCE: rep-v30-editor.css */
/* REP V30 — Avatar Editor / R01 — UI layer only (no compositor changes).
   Loaded AFTER V29. Do not change avatar canvas coordinates or reward logic. */
:root{--rep30-ink:#f7fbfd;--rep30-sub:#adbec7;--rep30-bg:#101e25;--rep30-card:#1c333d;--rep30-border:#3a5b68;--rep30-lime:#b7f569;--rep30-purple:#c69cff;--rep30-blue:#6ba9d9;}
html.rep21-editor-open #rep-avatar-overlay .rep21-backdrop{background:#0f1e25!important;}
html.rep21-editor-open #rep-avatar-overlay .rep21-dialog{
 background:#101f27!important;color:var(--rep30-ink);box-shadow:none!important;
 font-family:Nunito,'Nunito Sans',system-ui,sans-serif!important;
}
#rep-avatar-overlay .rep21-header{
 min-height:73px;grid-template-columns:44px minmax(0,1fr) 94px;gap:8px;
 padding:12px 17px 13px!important;background:#101f27!important;border-bottom:1px solid #294551!important;
}
#rep-avatar-overlay .rep21-header h2{font:900 19px/1.1 Nunito,system-ui,sans-serif!important;letter-spacing:-.3px!important}
#rep-avatar-overlay button.rep21-icon-button{background:#203641!important;border:2px solid #456470!important;border-bottom:4px solid #2a434e!important;border-radius:14px!important;width:43px;height:43px;padding:7px;box-shadow:none!important}
#rep-avatar-overlay button.rep21-icon-button img{width:22px;height:22px}
#rep-avatar-overlay button.rep21-save{min-width:90px;height:45px;background:var(--rep30-lime)!important;color:#132319!important;font:900 15px Nunito,system-ui,sans-serif!important;border:0!important;border-bottom:5px solid #79b73d!important;border-radius:15px!important;box-shadow:none!important;transition:transform .14s,border-bottom-width .14s}
#rep-avatar-overlay button.rep21-save:active{transform:translateY(3px)!important;border-bottom-width:2px!important;}
#rep-avatar-overlay .rep21-body{padding:12px 16px 32px!important;background:#101f27!important;scrollbar-width:thin;scrollbar-color:#4d6a73 transparent}
#rep-avatar-overlay .rep21-preview{
 height:clamp(218px,31vh,266px)!important;
 background:#233e49!important;border:2px solid #355766!important;border-radius:24px!important;
 margin:0 0 13px!important;position:relative!important;isolation:isolate;
}
/* An understated flat backdrop disc; no character-specific transforms. */
#rep-avatar-overlay .rep21-preview::after{content:''!important;display:block!important;position:absolute;z-index:0;left:50%;top:55%;width:230px;height:230px;max-width:82%;border-radius:50%;transform:translate(-50%,-50%);background:#315662!important;pointer-events:none}
#rep-avatar-overlay .rep30-preview-caption{position:absolute;top:13px;left:14px;z-index:3;color:#c3d7de;background:#162e38;border:1px solid #456873;border-radius:9px;padding:6px 9px;font:900 10px/1 Nunito,system-ui,sans-serif;letter-spacing:.5px}
#rep-avatar-overlay #rep21-preview{z-index:1!important;width:min(300px,78vw)!important;height:min(300px,78vw)!important;margin-bottom:-32px!important;}
#rep-avatar-overlay .rep21-preview .rep22-stage,
#rep-avatar-overlay .rep21-preview .rep23-portrait-clip{background:transparent!important;box-shadow:none!important;}
#rep-avatar-overlay .rep21-sex{gap:9px;margin:0 0 13px!important}
#rep-avatar-overlay .rep21-sex button{min-height:45px;padding:9px 5px;font:900 13px Nunito,system-ui,sans-serif!important;border:2px solid #345762!important;border-bottom:4px solid #26414b!important;border-radius:14px!important;background:#1c343e!important;color:#afc4cd!important;box-shadow:none!important}
#rep-avatar-overlay .rep21-sex button.is-current{background:#315246!important;border-color:#8fd391!important;border-bottom-color:#4e8a62!important;color:#ecffe3!important;box-shadow:none!important}
/* Single horizontal rail: all 8 categories remain available and visible by scrolling. */
#rep-avatar-overlay .rep21-tabs{display:flex!important;grid-template-columns:none!important;gap:8px!important;overflow-x:auto!important;overflow-y:hidden!important;overscroll-behavior-inline:contain;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding:1px 0 9px!important;margin:0 0 10px!important;border:0!important;}
#rep-avatar-overlay .rep21-tabs::-webkit-scrollbar{display:none}
#rep-avatar-overlay .rep21-tabs button{box-sizing:border-box;flex:0 0 75px;min-width:75px!important;height:73px;min-height:73px!important;display:flex!important;flex-direction:column!important;gap:5px;justify-content:center;align-items:center;padding:7px 3px 5px!important;scroll-snap-align:start;border:2px solid #355664!important;border-bottom:4px solid #233e48!important;border-radius:14px!important;background:#1d3540!important;color:#b7cad1;transition:transform .12s,background .12s;}
#rep-avatar-overlay .rep21-tabs button.is-current{background:#384661!important;border-color:#ba9df2!important;border-bottom-color:#7864aa!important;color:#ffffff!important}
#rep-avatar-overlay .rep21-tabs button img{width:32px!important;height:31px!important;object-fit:contain!important;filter:none!important;opacity:.92!important;}
#rep-avatar-overlay .rep21-tabs button.is-current img{opacity:1!important}
#rep-avatar-overlay .rep30-tab-caption{display:block;max-width:100%;font:900 9px/1.1 Nunito,system-ui,sans-serif!important;letter-spacing:.15px;text-align:center;white-space:nowrap}
#rep-avatar-overlay .rep21-category-heading{margin:9px 0 10px!important;gap:12px}
#rep-avatar-overlay .rep21-category-heading h3{font:900 17px/1.2 Nunito,system-ui,sans-serif!important;letter-spacing:-.1px;color:#f3f9fb}
#rep-avatar-overlay .rep21-gem-label{display:flex;gap:5px;padding:6px 9px;border-radius:11px;background:#382f4b;border:1px solid #605077;color:#ebc7ff!important;font:900 13px Nunito,system-ui,sans-serif!important;}
#rep-avatar-overlay .rep21-variant{padding:12px 13px 14px!important;border:2px solid #375766!important;background:#1b333e!important;border-radius:18px!important;margin:0 0 15px!important}
#rep-avatar-overlay .rep21-variant-label{font:900 12px Nunito,system-ui,sans-serif!important;color:#c9dce3;letter-spacing:0!important;margin-bottom:11px}
#rep-avatar-overlay .rep21-colors{display:flex!important;gap:10px!important;flex-wrap:wrap;align-items:center}
#rep-avatar-overlay button.rep21-color{box-sizing:border-box;flex:0 0 49px!important;width:49px!important;height:49px!important;min-width:49px!important;border-radius:50%!important;padding:5px!important;max-height:unset!important;background:#25414a!important;border:2px solid #47616a!important;box-shadow:none!important;}
#rep-avatar-overlay button.rep21-color span{border-radius:50%!important;}
#rep-avatar-overlay button.rep21-color.is-active{padding:4px!important;border:3px solid var(--rep30-lime)!important;box-shadow:0 0 0 2px #223e49!important}
#rep-avatar-overlay .rep21-item-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:11px!important;padding-bottom:10px}
#rep-avatar-overlay button.rep21-item,#rep-avatar-overlay button.rep284-choice{min-height:153px!important;padding:12px 7px 10px!important;background:#203a45!important;border:2px solid #3e6070!important;border-bottom:5px solid #2a4854!important;border-radius:18px!important;box-shadow:none!important;color:#f5f9ff!important}
#rep-avatar-overlay button.rep21-item.is-picked,#rep-avatar-overlay button.rep284-choice.is-picked{background:#324b46!important;border-color:#b7f569!important;border-bottom-color:#6d9e4e!important;box-shadow:none!important}
#rep-avatar-overlay .rep21-item-art{height:95px!important;width:95px!important;max-width:100%!important;border-radius:13px!important;background:#284752!important}
#rep-avatar-overlay .rep21-item-art .rep-avatar-stack{width:95px!important;height:95px!important}
#rep-avatar-overlay .rep21-item-name{font:900 13px/1.1 Nunito,system-ui,sans-serif!important;min-height:28px!important;color:#fff}
#rep-avatar-overlay .rep21-item-status{font:900 10px Nunito,system-ui,sans-serif!important;color:#b7f569!important}
#rep-avatar-overlay button.rep21-item:active,#rep-avatar-overlay button.rep284-choice:active{transform:translateY(2px)!important}
#rep-avatar-overlay :is(button,a):focus-visible{outline:3px solid #dbb8ff!important;outline-offset:3px!important}
/* Onboarding has no global six-tab navigation; normal profile editor keeps it. */
html.rep21-editor-open.rep30-onboarding #rep-avatar-overlay{inset:0!important;bottom:0!important}
html.rep21-editor-open.rep30-onboarding #rep-avatar-overlay .rep21-backdrop{bottom:0!important}
html.rep21-editor-open.rep30-onboarding #rep-avatar-overlay .rep21-dialog{height:100%!important}
html.rep21-editor-open.rep30-onboarding body > #bottom.bottom{display:none!important;visibility:hidden!important}
@media(max-width:360px){
 #rep-avatar-overlay .rep21-header{grid-template-columns:42px minmax(0,1fr) 82px!important;padding:10px 12px!important;min-height:63px}
 #rep-avatar-overlay .rep21-header h2{font-size:16px!important}
 #rep-avatar-overlay button.rep21-save{min-width:78px;height:40px;font-size:13px!important}
 #rep-avatar-overlay .rep21-body{padding:9px 11px 22px!important}
 #rep-avatar-overlay .rep21-preview{height:190px!important;margin-bottom:10px!important}
 #rep-avatar-overlay .rep21-preview::after{width:180px;height:180px;}
 #rep-avatar-overlay #rep21-preview{width:240px!important;height:240px!important;margin-bottom:-40px!important}
 #rep-avatar-overlay .rep21-tabs button{flex-basis:69px;min-width:69px!important}
 #rep-avatar-overlay .rep21-tabs{gap:6px!important}
 #rep-avatar-overlay .rep21-sex button{min-height:41px}
 #rep-avatar-overlay .rep21-variant{padding:10px!important}
 #rep-avatar-overlay button.rep21-color{flex-basis:43px!important;width:43px!important;height:43px!important;min-width:43px!important}
}
@media(min-width:600px){
 #rep-avatar-overlay .rep21-dialog{max-width:700px}
 #rep-avatar-overlay .rep21-body{max-width:670px;margin:0 auto;width:100%}
 #rep-avatar-overlay .rep21-preview{height:290px!important}
}
@media(prefers-reduced-motion:reduce){#rep-avatar-overlay *{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* Secondary palette for ORIGINAL REP icons: simple 2D color accents, no asset modifications. */
#rep-avatar-overlay .rep21-tabs button[data-rep21-cat="skin"] img{filter:brightness(0) saturate(100%) invert(77%) sepia(31%) saturate(698%) hue-rotate(328deg)!important}
#rep-avatar-overlay .rep21-tabs button[data-rep21-cat="hair"] img{filter:brightness(0) saturate(100%) invert(69%) sepia(32%) saturate(1096%) hue-rotate(185deg)!important}
#rep-avatar-overlay .rep21-tabs button[data-rep21-cat="top"] img{filter:brightness(0) saturate(100%) invert(91%) sepia(28%) saturate(969%) hue-rotate(30deg)!important}
#rep-avatar-overlay .rep21-tabs button[data-rep21-cat="face"] img{filter:brightness(0) saturate(100%) invert(76%) sepia(29%) saturate(681%) hue-rotate(284deg)!important}
#rep-avatar-overlay .rep21-tabs button[data-rep21-cat="eyewear"] img{filter:brightness(0) saturate(100%) invert(71%) sepia(32%) saturate(886%) hue-rotate(153deg)!important}
#rep-avatar-overlay .rep21-tabs button[data-rep21-cat="headwear"] img{filter:brightness(0) saturate(100%) invert(84%) sepia(61%) saturate(824%) hue-rotate(337deg)!important}
#rep-avatar-overlay .rep21-tabs button[data-rep21-cat="emblem"] img{filter:brightness(0) saturate(100%) invert(66%) sepia(31%) saturate(933%) hue-rotate(218deg)!important}
#rep-avatar-overlay .rep21-tabs button[data-rep21-cat="title"] img{filter:brightness(0) saturate(100%) invert(85%) sepia(58%) saturate(665%) hue-rotate(349deg)!important}

/* High-confidence touch targets in every supported viewport. */
#rep-avatar-overlay button.rep21-icon-button{width:48px!important;height:48px!important}
#rep-avatar-overlay button.rep21-save{min-height:46px!important}
@media(max-width:360px){#rep-avatar-overlay button.rep21-save{height:44px!important;min-height:44px!important}#rep-avatar-overlay .rep21-sex button{min-height:44px!important}#rep-avatar-overlay button.rep21-color{flex-basis:44px!important;width:44px!important;height:44px!important;min-width:44px!important}}

/* REP V30 approved appearance refinements, ORIGINAL 1024px avatar layers stay unchanged */
#rep-avatar-overlay .rep30-preview-caption{display:none!important}
#rep-avatar-overlay .rep21-preview{overflow:hidden!important;}
#rep-avatar-overlay .rep21-preview::after{top:73%!important;}
#rep-avatar-overlay #rep21-preview{position:relative!important;z-index:2!important;}
#rep-avatar-overlay button.rep21-icon-button{border-color:#456470!important;box-shadow:none!important;}

/* RC6: a single lime selected state, never purple on top of green. */
#rep-avatar-overlay .rep21-tabs button.is-current{background:#315246!important;border-color:#bafa72!important;border-bottom-color:#76a943!important;}
#rep-avatar-overlay :is(button,a,input):focus-visible{outline:3px solid #bafa72!important;outline-offset:3px!important}
#rep-avatar-overlay button.rep21-icon-button:active{transform:translateY(2px)!important;}


/* SOURCE: v30/rep-v30-flow.css */
/* Isolated flow shell: prevents visual interference with original V29 screens. */
#rep-v30-flow-root[hidden]{display:none!important}
#rep-v30-flow-root{position:fixed;inset:0;z-index:10020;background:#101d23;color:#fff;overflow:auto;overscroll-behavior:contain}
#rep-v30-flow-root .rep30-flow-frame{width:100%;height:100%;height:100dvh;display:block;border:0;background:#101d23}
#rep-v30-flow-root .rep30-flow-sheet{min-height:100%;min-height:100dvh;display:flex;flex-direction:column;padding:calc(17px + env(safe-area-inset-top)) 20px calc(24px + env(safe-area-inset-bottom));max-width:560px;margin:auto;font-family:Nunito,system-ui,sans-serif;background:#101d23}
#rep-v30-flow-root .rep30-flow-back{width:48px;height:48px;display:grid;place-items:center;border:2px solid #3d626d;border-radius:14px;background:#1b333b;padding:9px;cursor:pointer}
#rep-v30-flow-root .rep30-flow-back img{width:24px;height:24px;object-fit:contain}
#rep-v30-flow-root .rep30-flow-body{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:stretch;gap:18px;text-align:center;padding-bottom:8vh}
#rep-v30-flow-root .rep30-flow-brand{font-size:52px;font-weight:900;line-height:1;margin:0}
#rep-v30-flow-root .rep30-flow-tagline{font-size:17px;font-weight:900;color:#c294ff;margin:0 0 22px}
#rep-v30-flow-root .rep30-flow-body h1{font-size:clamp(28px,8vw,38px);font-weight:900;margin:0}
#rep-v30-flow-root .rep30-flow-desc{font-size:16px;line-height:1.35;color:#bbcad1;margin:0 0 8px}
#rep-v30-flow-root .rep30-flow-form{display:flex;flex-direction:column;gap:15px}
#rep-v30-flow-root .rep30-flow-form input{font:800 18px Nunito,system-ui,sans-serif;background:#243a43;border:2px solid #58747d;color:white;min-height:62px;border-radius:18px;padding:14px 19px;outline:0}
#rep-v30-flow-root .rep30-flow-form input:focus-visible{border-color:#c294ff}
#rep-v30-flow-root .rep30-flow-primary{font:900 20px Nunito,system-ui,sans-serif;color:#0c2019;min-height:61px;border:none;border-bottom:6px solid #82b944;background:#bafa72;border-radius:19px;cursor:pointer}
#rep-v30-flow-root .rep30-flow-primary:disabled{opacity:.55}
#rep-v30-flow-root .rep30-flow-primary:active{transform:translateY(3px);border-bottom-width:3px}
#rep-v30-flow-root .rep30-flow-error{color:#ffc1b5;min-height:18px;margin:0}
#rep-v30-flow-root :is(button,input):focus-visible{outline:3px solid #c294ff;outline-offset:3px}
@media(prefers-reduced-motion:reduce){#rep-v30-flow-root *{transition:none!important;animation:none!important}}

/* V30 mandatory migration gate; visible only to authenticated legacy accounts */
#rep-v30-flow-root .rep30-legacy-migrate .rep30-flow-body{gap:17px;padding-top:8vh;padding-bottom:8vh;}
#rep-v30-flow-root .rep30-migrate-symbol{font:900 52px Nunito,system-ui,sans-serif;letter-spacing:-2px;}
#rep-v30-flow-root .rep30-migrate-handle{font:900 20px Nunito,system-ui,sans-serif;color:#c294ff;margin:0 0 10px}
#rep-v30-flow-root .rep30-flow-secondary{font:900 19px Nunito,system-ui,sans-serif;color:white;min-height:60px;border:2px solid #4c6c77;background:#21343c;border-radius:18px;cursor:pointer}
#rep-v30-flow-root .rep30-migrate-logout{border:0;background:none;color:#a9bbc2;text-decoration:underline;cursor:pointer;font:700 15px Nunito,sans-serif;padding:12px}
#rep-v30-flow-root .rep30-email-migrate{width:100%;}
#rep-v30-flow-root .rep30-email-migrate[hidden],#rep-v30-flow-root .rep30-email-migrate input[hidden]{display:none!important}

/* REP V30 RC3: polished username and staged legacy migration scenes. */
#rep-v30-flow-root .rep30-nickname-scene{background:radial-gradient(circle at 50% 50%,#17343b 0%,#101e26 62%,#0b1923 100%);}
#rep-v30-flow-root .rep30-nickname-scene .rep30-flow-body{justify-content:center;gap:15px;padding:0 2px 6vh;}
#rep-v30-flow-root .rep30-nickname-scene .rep30-flow-brand{font-size:55px;}
#rep-v30-flow-root .rep30-nickname-scene .rep30-flow-tagline{margin:0 0 10px;}
#rep-v30-flow-root .rep30-step-pill{align-self:center;padding:8px 13px;border:1px solid #5b4c7c;border-radius:12px;background:#33294a;color:#d4b8ff;font:900 11px/1.2 Nunito,system-ui,sans-serif;letter-spacing:1.1px;}
#rep-v30-flow-root .rep30-nickname-scene h1{font-size:clamp(28px,7.4vw,37px);letter-spacing:-.7px;line-height:1.1;max-width:400px;}
#rep-v30-flow-root .rep30-nickname-scene .rep30-flow-desc{max-width:410px;margin-bottom:13px;}
#rep-v30-flow-root .rep30-nickname-form{width:100%;max-width:425px;gap:12px;margin-top:7px;text-align:left;}
#rep-v30-flow-root .rep30-nickname-label{font:900 12px Nunito,system-ui,sans-serif;letter-spacing:1px;color:#d5e4e8;}
#rep-v30-flow-root .rep30-nick-input-wrap{border:2px solid #526f77;background:#1b333d;display:flex;align-items:center;border-radius:17px;overflow:hidden;min-height:68px;}
#rep-v30-flow-root .rep30-nick-at{font:900 29px Nunito,system-ui,sans-serif;color:#b9f773;padding-left:18px;}
#rep-v30-flow-root .rep30-nick-input-wrap input{margin:0;width:100%;background:none;border:0!important;min-height:66px;padding:15px 14px;font-size:21px;box-shadow:none!important;}
#rep-v30-flow-root .rep30-nick-input-wrap:focus-within{border-color:#bbf66a;box-shadow:0 0 0 3px #b9f77321;}
#rep-v30-flow-root .rep30-nick-availability{min-height:45px;line-height:1.35;text-align:center;font:750 13px Nunito,system-ui,sans-serif;color:#aebfc4;margin:4px 0 12px;}
#rep-v30-flow-root .rep30-nick-availability[data-status="available"]{color:#b9f773;}
#rep-v30-flow-root .rep30-nick-availability[data-status="taken"]{color:#ffc1c0;}
#rep-v30-flow-root .rep30-nickname-form .rep30-flow-primary{width:100%;}
#rep-v30-flow-root .rep30-nickname-form .rep30-flow-error:empty{display:none;}
#rep-v30-flow-root .rep30-finished-scene .rep30-flow-body{gap:17px;}
#rep-v30-flow-root .rep30-finish-mascot{height:min(31vh,225px);width:auto;max-width:80vw;object-fit:contain;}
#rep-v30-flow-root .rep30-legacy-migrate{background:radial-gradient(circle at 50% 35%,#1b3842 0%,#101f29 60%,#0e1c25 100%);}
#rep-v30-flow-root .rep30-legacy-top{width:100%;display:flex;align-items:center;justify-content:space-between;min-height:48px;gap:8px;}
#rep-v30-flow-root .rep30-legacy-logo{font:900 29px Nunito,system-ui,sans-serif;letter-spacing:-1px;}
#rep-v30-flow-root .rep30-step-indicator{font:900 10px Nunito,system-ui,sans-serif;color:#cba9ff;letter-spacing:1px;}
#rep-v30-flow-root .rep30-legacy-body{padding:14px 0 6vh;gap:12px;}
#rep-v30-flow-root .rep30-legacy-art{height:clamp(140px,23vh,230px);width:100%;display:grid;place-items:center;overflow:hidden;}
#rep-v30-flow-root .rep30-legacy-art img{max-height:100%;max-width:65%;object-fit:contain;}
#rep-v30-flow-root .rep30-legacy-migrate h1{font-size:clamp(27px,7.2vw,37px);line-height:1.12;}
#rep-v30-flow-root .rep30-legacy-migrate .rep30-flow-desc{max-width:390px;line-height:1.42;font-size:15px;margin:0;}
#rep-v30-flow-root .rep30-migrate-handle{margin:0 0 4px;background:#30283e;padding:7px 15px;border:1px solid #645081;border-radius:12px;}
#rep-v30-flow-root .rep30-legacy-migrate :is(.rep30-flow-primary,.rep30-flow-secondary){width:100%;max-width:430px;}
#rep-v30-flow-root .rep30-legacy-uuid-note{color:#a9b9c0;font-size:12px;line-height:1.4;margin:0;}
#rep-v30-flow-root .rep30-migrate-v29{font:800 13px Nunito,system-ui,sans-serif;color:#a9bbc2;background:transparent;border:0;text-decoration:underline;padding:5px;}
#rep-v30-flow-root .rep30-legacy-migrate .rep30-flow-error:empty{display:none;}
#rep-v30-flow-root .rep30-legacy-migrate .rep30-flow-error{max-width:410px;}
#rep-v30-flow-root .rep30-legacy-migrate .rep30-email-migrate{max-width:420px;}
#rep-v30-flow-root .rep30-flow-retry .rep30-flow-body{gap:20px;}
@media(max-height:700px){#rep-v30-flow-root .rep30-legacy-body{padding:4px 0 3vh;gap:9px;}#rep-v30-flow-root .rep30-legacy-art{height:120px;}#rep-v30-flow-root .rep30-nickname-scene .rep30-flow-body{padding-bottom:1vh;}}

/* RC3 mobile visual QA: keep migration choices visible on compact phones. */
#rep-v30-flow-root .rep30-legacy-top{display:grid;grid-template-columns:48px 1fr auto;min-height:48px;gap:10px;align-items:center}
#rep-v30-flow-root .rep30-legacy-top .rep30-flow-back{width:46px;height:46px;border-color:#426671;background:#1b3038;box-shadow:none}
#rep-v30-flow-root .rep30-legacy-top .rep30-flow-back img{width:24px;height:24px}
#rep-v30-flow-root .rep30-legacy-logo{justify-self:start;font-size:27px}
#rep-v30-flow-root .rep30-legacy-body{gap:10px;padding:8px 0 4vh}
#rep-v30-flow-root .rep30-legacy-art{height:clamp(112px,19.5vh,184px)}
#rep-v30-flow-root .rep30-legacy-body .rep30-flow-desc{line-height:1.37}
#rep-v30-flow-root .rep30-legacy-body :is(.rep30-flow-primary,.rep30-flow-secondary){min-height:54px;font-size:17px}
#rep-v30-flow-root .rep30-legacy-uuid-note{font-size:11.5px}
#rep-v30-flow-root .rep30-legacy-body .rep30-migrate-logout{padding:5px;min-height:24px;font-size:13px}
#rep-v30-flow-root .rep30-legacy-body .rep30-migrate-v29{padding:4px;font-size:12px}
@media(max-height:780px){
 #rep-v30-flow-root .rep30-legacy-body{gap:8px;padding:0 0 12px}
 #rep-v30-flow-root .rep30-legacy-art{height:clamp(95px,16vh,130px)}
 #rep-v30-flow-root .rep30-legacy-migrate h1{font-size:27px}
 #rep-v30-flow-root .rep30-legacy-body .rep30-flow-desc{font-size:14px}
 #rep-v30-flow-root .rep30-legacy-body :is(.rep30-flow-primary,.rep30-flow-secondary){min-height:49px;font-size:15px}
}
@media(max-width:350px){
 #rep-v30-flow-root .rep30-flow-sheet{padding-left:14px;padding-right:14px}
 #rep-v30-flow-root .rep30-step-indicator{font-size:9px}
 #rep-v30-flow-root .rep30-legacy-body .rep30-flow-desc{font-size:13px}
}
#rep-v30-flow-root .rep30-legacy-art img{display:block;height:100%!important;width:auto!important;max-height:100%!important;max-width:100%!important;object-fit:contain!important;flex:none!important;}
/* Avoid intrinsic 1254px mascot sizing a grid track beyond its clipped container. */
#rep-v30-flow-root .rep30-legacy-art{--rep30-legacy-mascot-size:clamp(112px,19.5vh,184px);height:var(--rep30-legacy-mascot-size)!important;}
#rep-v30-flow-root .rep30-legacy-art img{height:var(--rep30-legacy-mascot-size)!important;width:var(--rep30-legacy-mascot-size)!important;max-height:none!important;max-width:none!important;object-fit:contain!important;}
@media(max-height:780px){#rep-v30-flow-root .rep30-legacy-art{--rep30-legacy-mascot-size:clamp(95px,16vh,130px)}}
/* RC4 compact-height accessibility: keep both migration choices visible or clearly scrollable. */
@media (max-height:620px){
 #rep-v30-flow-root .rep30-legacy-migrate{padding-top:calc(9px + env(safe-area-inset-top));padding-bottom:calc(10px + env(safe-area-inset-bottom));}
 #rep-v30-flow-root .rep30-legacy-top{min-height:42px;}
 #rep-v30-flow-root .rep30-legacy-body{gap:6px;padding:4px 0 8px;justify-content:flex-start;}
 #rep-v30-flow-root .rep30-legacy-art{--rep30-legacy-mascot-size:80px!important;}
 #rep-v30-flow-root .rep30-step-pill{padding:6px 10px;font-size:10px;}
 #rep-v30-flow-root .rep30-legacy-migrate h1{font-size:24px;}
 #rep-v30-flow-root .rep30-legacy-body .rep30-flow-desc{font-size:12.5px;line-height:1.33;}
 #rep-v30-flow-root .rep30-migrate-handle{font-size:17px;padding:5px 12px;margin:0;}
 #rep-v30-flow-root .rep30-legacy-body :is(.rep30-flow-primary,.rep30-flow-secondary){min-height:46px;font-size:14px;}
 #rep-v30-flow-root .rep30-legacy-uuid-note{font-size:10.5px;line-height:1.25;}
 #rep-v30-flow-root .rep30-migrate-logout,#rep-v30-flow-root .rep30-migrate-v29{min-height:22px;font-size:12px;padding:3px;}
}

/* Critical: no V29 dashboard flash while V30 resolves account migration/onboarding. */
html.rep30-entry-pending #app, html.rep30-entry-pending #bottom,
html.rep30-entry-pending #rep-top-shell, html.rep30-entry-pending #rep-web-sidebar{
 visibility:hidden!important;
}


/* SOURCE: v30/rep-v30-rc7-quality.css */
/* REP V30 RC6 — visual token contract and motion parity with V29 */
:root{--rep30-active:#bafa72;--rep30-active-edge:#84ba48;--rep30-outline:#bafa72;--rep30-navy:#101d23;--rep30-panel:#1c333d;--rep30-violet-text:#c294ff;}
html.rep30-enabled,html.rep30-enabled body{background:#101d23!important;color-scheme:dark;}
#rep-splash{background:#101d23!important;}
#rep-splash .rep-splash-brand{color:#bafa72!important;text-shadow:none!important;animation:rep30-logo-in .37s cubic-bezier(.2,.9,.3,1) both;}
@keyframes rep30-logo-in{from{transform:scale(.94);opacity:0}to{transform:scale(1);opacity:1}}
#rep-boot-recovery,#rep-splash .rep-boot-error{font-family:Nunito,system-ui,sans-serif!important;}
.rep-boot-error{max-width:405px;width:100%;padding:24px 22px;background:#1c333d;border:2px solid #3b5967;border-radius:22px;box-shadow:0 6px 0 #0a151c;color:#fff;text-align:center;display:grid;gap:16px;}
.rep-boot-brand{font-size:56px;letter-spacing:-3px;color:#bafa72;font-weight:900;}
.rep-boot-error h1{font-size:22px;line-height:1.18;margin:0;font-weight:900;color:#fff}
.rep-boot-error p{color:#c0d0d6;margin:0;font-size:15px;line-height:1.5}
.rep-boot-error button{min-height:54px;border-radius:16px;border:0;border-bottom:5px solid #84ba48;background:#bafa72;color:#10201c;font:900 16px Nunito,system-ui,sans-serif;cursor:pointer;transition:transform .14s,border-bottom-width .14s;}
.rep-boot-error button:active{transform:translateY(3px);border-bottom-width:2px}
.rep-boot-error small{font-size:11px;color:#a6bbc4}
/* Selection is lime throughout REP, never violet layered over a lime tile. */
#rep-account .rep30-auth :is(button,input):focus-visible,
#rep-v30-flow-root :is(button,input):focus-visible,
#rep-avatar-overlay :is(button,input):focus-visible,
#rep-v30-flow-root .rep30-flow-form input:focus-visible{
  outline:3px solid var(--rep30-outline)!important;outline-offset:3px!important;
}
#rep-v30-flow-root .rep30-nick-input-wrap:focus-within{border-color:var(--rep30-active)!important;box-shadow:0 0 0 3px rgba(186,250,114,.14)!important;}
#rep-avatar-overlay .rep21-tabs button.is-current{background:#315246!important;border-color:var(--rep30-active)!important;border-bottom-color:#63973e!important;color:#f5ffe8!important;}
#rep-avatar-overlay .rep21-sex button.is-current{border-color:var(--rep30-active)!important;border-bottom-color:var(--rep30-active-edge)!important;}
#rep-avatar-overlay button.rep21-item.is-picked,#rep-avatar-overlay button.rep284-choice.is-picked{border-color:var(--rep30-active)!important;}
#rep-avatar-overlay button.rep21-icon-button:focus-visible{outline-offset:2px!important;}
/* Preserve V29 original button transitions. Apply additional motion only to NEW V30 controls. */
#rep-account .rep30-btn,
#rep-v30-flow-root :is(.rep30-flow-primary,.rep30-flow-secondary){
  transition:transform .13s cubic-bezier(.2,.8,.2,1),border-bottom-width .13s ease,box-shadow .13s ease,background-color .15s ease,filter .15s ease!important;
  -webkit-tap-highlight-color:transparent;touch-action:manipulation;
}
#rep-account .rep30-btn:active,
#rep-v30-flow-root :is(.rep30-flow-primary,.rep30-flow-secondary):active{transform:translateY(3px)!important;}
#rep-v30-flow-root .rep30-flow-primary:not(:disabled){border-bottom:6px solid var(--rep30-active-edge)!important;}
#rep-v30-flow-root .rep30-flow-primary:active:not(:disabled){border-bottom-width:3px!important;}
#rep-v30-flow-root .rep30-flow-secondary{border-bottom:5px solid #162933!important;}
#rep-v30-flow-root .rep30-flow-secondary:active{border-bottom-width:2px!important;}
#rep-avatar-overlay .rep21-tabs button.is-current:focus-visible,
#rep-avatar-overlay .rep21-item.is-picked:focus-visible,
#rep-avatar-overlay .rep284-choice.is-picked:focus-visible{outline-color:var(--rep30-active)!important;}
#rep-account .rep30-auth .rep30-visibility{color:#c9dee2!important;}
#rep-account .rep30-auth .rep30-link,#rep-account .rep30-auth .rep30-inline-links button{color:#c294ff;}
#rep-v30-flow-root .rep30-step-pill{color:#cfe6e1;border-color:#466576;background:#23404a;}
#rep-v30-flow-root .rep30-migrate-handle{color:#dcffcc;background:#24463b;border-color:#6fbd70;}
#rep-v30-flow-root .rep30-flow-sheet{overscroll-behavior-y:contain;}
#rep-v30-flow-root .rep30-flow-frame{background:#101d23;}
.rep30-auth{animation:rep30-fade-in .22s ease-out both;}
@keyframes rep30-fade-in{from{opacity:.5;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}
/* Never expose the old dashboard while V30 resolves session details. */
html.rep30-entry-pending #app,html.rep30-entry-pending #bottom,html.rep30-entry-pending #rep-top-shell,html.rep30-entry-pending #rep-web-sidebar{visibility:hidden!important;}
@media(max-height:650px){#rep-v30-flow-root .rep30-flow-sheet{min-height:100dvh;padding-top:max(9px,env(safe-area-inset-top));padding-bottom:max(16px,env(safe-area-inset-bottom));}}
@media(prefers-reduced-motion:reduce){#rep-splash .rep-splash-brand,.rep30-auth{animation:none!important}#rep-account .rep30-btn,#rep-v30-flow-root :is(button,input),#rep-avatar-overlay button{transition:none!important}}

/* Focus for V30: selected/focused elements must not show two colors at once. */
#rep-v30-flow-root .rep30-flow-form input:focus-visible{border-color:#bafa72!important;}
#rep-avatar-overlay .rep21-tabs button.is-current{box-shadow:none!important;}

/* Loader must be above the onboarding iframe (z-index 10020) until it is painted. */
#rep-splash,#rep-boot-recovery{z-index:2147483000!important;}
#rep-splash .rep-boot-error{max-height:calc(100dvh - 32px);overflow-y:auto;}


/* SOURCE: v30/rep-v30-rc8-visual.css */
/* REP V30 RC8 • Fidelity pass against the approved Scene 01/02 designs.
   Overrides NEW onboarding/auth elements only. Original V29 styles and motion remain loaded. */
:root {--rep30-ink:#f9fcfd;--rep30-navy:#101d23;--rep30-lime:#bafa72;--rep30-lime-edge:#7fae46;--rep30-purple:#c294ff;--rep30-secondary:#b8c9d1;--rep30-field-bg:#1c333d;--rep30-line:#506f7a}
#rep-account:has(.rep30-auth){overflow:hidden!important;align-items:stretch!important;justify-content:center!important;padding:0!important;background:var(--rep30-navy)!important}
#rep-account .account-card:has(.rep30-auth){height:100%;min-height:0;overflow:hidden}
#rep-account .rep30-auth{height:100vh;height:100dvh;min-height:0!important;width:100%;padding:calc(24px + env(safe-area-inset-top)) 24px calc(14px + env(safe-area-inset-bottom));background:var(--rep30-navy);overflow:hidden!important;gap:0;font-family:Nunito,system-ui,sans-serif;animation:rep30-fade-in .22s ease-out both}
#rep-account .rep30-header{position:relative;flex:0 0 auto;max-width:430px;width:100%;min-height:50px;gap:0;align-items:center;justify-content:flex-start}
#rep-account .rep30-brand{color:var(--rep30-ink);font:900 45px/.98 Nunito,system-ui,sans-serif;letter-spacing:-2px;text-align:center}
#rep-account .rep30-back{width:44px;height:44px;border:2px solid #446470;background:#1a3039;box-shadow:none;top:0;left:0;border-radius:15px;padding:9px}
#rep-account .rep30-back img{width:24px;height:24px}
#rep-account .rep30-tag{color:var(--rep30-purple);padding:18px 0 0;font:900 15px/1.2 Nunito,system-ui,sans-serif;letter-spacing:0;text-align:center}
#rep-account .rep30-contents{flex:1;min-height:0;max-width:430px;width:100%;padding:0;display:flex;flex-direction:column;justify-content:center;align-items:center;overflow:hidden;overscroll-behavior:contain}
#rep-account .rep30-choice-inner,#rep-account .rep30-email-form-view{width:100%;display:flex;flex-direction:column;align-items:center;min-height:0;text-align:center}
#rep-account .rep30-choice-inner{transform:translateY(-5px)}
#rep-account .rep30-choice-eyebrow{margin:0 0 14px;color:var(--rep30-purple);font:900 14px/1.2 Nunito,system-ui,sans-serif;letter-spacing:1.35px}
#rep-account .rep30-is-choice .rep30-title{font:900 clamp(30px,8.1vw,36px)/1.03 Nunito,system-ui,sans-serif;letter-spacing:-1.1px;margin:0 0 20px;color:#fff}
#rep-account .rep30-is-choice .rep30-sub{font:750 14px/1.42 Nunito,system-ui,sans-serif;color:var(--rep30-secondary);margin:0 0 41px}
#rep-account .rep30-is-choice .rep30-actions{width:100%;max-width:292px;gap:14px}
#rep-account .rep30-is-choice .rep30-btn{min-height:67px;padding:14px 12px;border-radius:20px;font-size:15px;letter-spacing:-.15px;gap:10px}
#rep-account .rep30-is-choice .rep30-btn img{width:27px;height:27px}
#rep-account .rep30-is-choice .rep30-btn.lime img{background:#215141;border-radius:9px;padding:3px;width:34px;height:34px}
#rep-account .rep30-is-choice .rep30-choice-legacy{display:flex;flex-direction:column;gap:3px;align-items:center;margin-top:clamp(12px,5vh,44px);font-size:12px;color:var(--rep30-secondary)}
#rep-account .rep30-choice-legacy button{color:var(--rep30-purple);font:900 12px Nunito,system-ui,sans-serif;background:none;border:0;cursor:pointer}
#rep-account .rep30-footer{margin-top:auto;min-height:62px;align-items:center;padding:8px 0 2px;font:800 15px Nunito,system-ui,sans-serif;gap:4px;color:var(--rep30-secondary)}
#rep-account .rep30-link{color:var(--rep30-purple);font:900 15px Nunito,system-ui,sans-serif;padding:2px 4px;white-space:nowrap}
#rep-account .rep30-btn{border:0;box-shadow:0 6px 0 #c1cbd1;font-family:Nunito,system-ui,sans-serif;font-weight:900;will-change:transform;touch-action:manipulation}
#rep-account .rep30-btn.lime{background:var(--rep30-lime);box-shadow:0 6px 0 var(--rep30-lime-edge);color:#12221a}
#rep-account .rep30-btn:active:not(:disabled){transform:translateY(4px)!important;box-shadow:0 2px 0 #c1cbd1!important}
#rep-account .rep30-btn.lime:active:not(:disabled){box-shadow:0 2px 0 var(--rep30-lime-edge)!important}
#rep-account .rep30-is-form .rep30-header{min-height:104px}
#rep-account .rep30-is-form .rep30-contents{justify-content:center}
#rep-account .rep30-email-form-view{padding-bottom:3px}
#rep-account .rep30-is-form .rep30-icon-hero{margin:0 0 21px;width:80px;height:80px;background:#224a3f;border:2px solid #346c5b;border-radius:23px}
#rep-account .rep30-is-form .rep30-icon-hero img{height:54px;width:54px}
#rep-account .rep30-is-form .rep30-title{font:900 clamp(26px,7.7vw,34px)/1.1 Nunito,system-ui,sans-serif;letter-spacing:-.7px;margin:0 0 15px}
#rep-account .rep30-is-form .rep30-sub{font:800 15px/1.42 Nunito,system-ui,sans-serif;color:var(--rep30-secondary);margin:0 0 29px;max-width:340px}
#rep-account .rep30-is-form .rep30-form{width:100%;gap:0}
#rep-account .rep30-is-form .rep30-field{text-align:left;color:#fff;font:900 15px/1.3 Nunito,system-ui,sans-serif;gap:9px;margin:0 0 19px}
#rep-account .rep30-is-form .rep30-field input{height:61px;min-height:61px;border:2px solid var(--rep30-line);border-radius:13px;background:var(--rep30-field-bg);color:#fff;padding:13px 19px;font:800 16px Nunito,system-ui,sans-serif}
#rep-account .rep30-is-form .rep30-field input::placeholder{color:#91acb7}
#rep-account .rep30-is-form .rep30-row input{padding-right:75px}
#rep-account .rep30-visibility{color:var(--rep30-purple)!important;font:900 13px Nunito,system-ui,sans-serif!important;text-transform:uppercase;right:7px}
#rep-account .rep30-password-hint{margin:-11px 0 24px;text-align:left;color:#9eb6bf;font:800 12px Nunito,system-ui,sans-serif}
#rep-account .rep30-forgot{margin:-10px 0 22px;text-align:right}
#rep-account .rep30-forgot button{border:0;background:none;color:var(--rep30-purple);font:900 12px Nunito,system-ui,sans-serif}
#rep-account .rep30-is-form .rep30-form>.rep30-btn{height:67px;min-height:67px;border-radius:21px;font-size:17px}
#rep-account .rep30-form-note{margin:21px 0 0;font:750 12.5px Nunito,system-ui,sans-serif;color:var(--rep30-secondary)}
#rep-account .rep30-is-info .rep30-contents{gap:14px}
#rep-account .rep30-is-info .rep30-actions{max-width:350px}
#rep-account .rep30-error{position:relative;flex:none;font:750 12.5px/1.35 Nunito,system-ui,sans-serif;width:100%;max-width:350px;margin:0 0 10px;padding:8px 12px}
/* Preserve a visible, single lime keyboard focus ring, never a violet + green stack. */
#rep-account .rep30-auth :is(button,input):focus-visible,
#rep-v30-flow-root :is(button,input):focus-visible{outline:3px solid var(--rep30-lime)!important;outline-offset:3px!important}
#rep-account .rep30-field input:focus-visible{border-color:var(--rep30-lime)!important;box-shadow:none!important}
#rep-account :is(.rep30-btn,.rep30-back,.rep30-link):focus:not(:focus-visible){outline:none!important}
/* User's requested app shell: never scroll the entire scene. During keyboard use,
   ONLY the content panel may scroll to keep the active field reachable. */
#rep-account .rep30-auth.rep30-keyboard-open .rep30-contents{overflow-y:auto;justify-content:flex-start;padding-top:10px;padding-bottom:8px;-webkit-overflow-scrolling:touch}
#rep-account .rep30-auth.rep30-keyboard-open .rep30-footer{display:none}
@media(max-height:780px){
 #rep-account .rep30-auth{padding-top:calc(12px + env(safe-area-inset-top));padding-bottom:calc(7px + env(safe-area-inset-bottom));}
 #rep-account .rep30-is-form .rep30-header{min-height:80px}
 #rep-account .rep30-is-form .rep30-icon-hero{width:64px;height:64px;border-radius:17px;margin-bottom:12px}
 #rep-account .rep30-is-form .rep30-icon-hero img{height:42px;width:42px}
 #rep-account .rep30-is-form .rep30-title{font-size:27px;margin-bottom:9px}
 #rep-account .rep30-is-form .rep30-sub{font-size:13px;margin-bottom:15px}
 #rep-account .rep30-is-form .rep30-field{margin-bottom:12px;gap:6px;font-size:13px}
 #rep-account .rep30-is-form .rep30-field input{height:49px;min-height:49px}
 #rep-account .rep30-password-hint{margin:-8px 0 13px}
 #rep-account .rep30-is-form .rep30-form>.rep30-btn{height:53px;min-height:53px}
 #rep-account .rep30-form-note{margin-top:11px}
 #rep-account .rep30-footer{min-height:47px}
 #rep-account .rep30-is-choice .rep30-sub{margin-bottom:24px}
}
@media(max-height:610px){
 #rep-account .rep30-is-choice .rep30-choice-eyebrow{margin-bottom:6px}
 #rep-account .rep30-is-choice .rep30-title{font-size:26px;margin-bottom:8px}
 #rep-account .rep30-is-choice .rep30-sub{margin-bottom:18px;font-size:12px}
 #rep-account .rep30-is-choice .rep30-btn{min-height:49px;border-radius:15px;padding:8px}
 #rep-account .rep30-is-choice .rep30-actions{gap:10px}
 #rep-account .rep30-choice-legacy{margin-top:9px!important}
 #rep-account .rep30-is-form .rep30-header{min-height:63px}
 #rep-account .rep30-is-form .rep30-icon-hero{width:48px;height:48px;margin-bottom:7px}
 #rep-account .rep30-is-form .rep30-icon-hero img{width:32px;height:32px}
 #rep-account .rep30-is-form .rep30-title{font-size:22px;margin-bottom:6px}
 #rep-account .rep30-is-form .rep30-sub{font-size:11.5px;margin-bottom:10px}
 #rep-account .rep30-is-form .rep30-field{font-size:12px;margin-bottom:7px}
 #rep-account .rep30-is-form .rep30-field input{height:43px;min-height:43px}
 #rep-account .rep30-password-hint{margin:-4px 0 7px;font-size:10px}
 #rep-account .rep30-forgot{margin:-3px 0 7px}
 #rep-account .rep30-is-form .rep30-form>.rep30-btn{height:45px;min-height:45px;font-size:14px}
 #rep-account .rep30-form-note{margin-top:6px;font-size:10px}
 #rep-account .rep30-footer{min-height:33px;font-size:12px}
 #rep-account .rep30-link{font-size:12px}
}
@media(max-width:350px){#rep-account .rep30-auth{padding-inline:14px}#rep-account .rep30-is-form .rep30-tag{font-size:12px}#rep-account .rep30-is-choice .rep30-actions{max-width:280px}}
/* Onboarding and migration use one bounded viewport; scrolling, if necessary on
   very short devices, is inside the content sheet, not the whole PWA. */
#rep-v30-flow-root{overflow:hidden!important;height:100dvh}
#rep-v30-flow-root .rep30-flow-sheet{height:100dvh;min-height:0!important;max-height:100dvh;overflow:hidden;padding-top:calc(14px + env(safe-area-inset-top));padding-bottom:calc(16px + env(safe-area-inset-bottom))}
#rep-v30-flow-root .rep30-flow-body{min-height:0;max-height:100%;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none;padding-bottom:12px!important}
#rep-v30-flow-root .rep30-flow-body::-webkit-scrollbar{display:none}
#rep-v30-flow-root .rep30-flow-sheet .rep30-flow-primary:focus:not(:focus-visible),#rep-v30-flow-root .rep30-flow-sheet .rep30-flow-secondary:focus:not(:focus-visible){outline:none}
#rep-v30-flow-root .rep30-step-pill{background:#23404a;border-color:#466576;color:#d0e8e7}
#rep-v30-flow-root .rep30-nickname-scene{background:#101d23!important}
#rep-v30-flow-root .rep30-nickname-scene .rep30-flow-body{padding:0 5px 5vh!important}
#rep-v30-flow-root .rep30-nickname-scene .rep30-flow-brand{font-size:50px}
#rep-v30-flow-root .rep30-nickname-scene .rep30-flow-tagline{margin-bottom:2px}
#rep-v30-flow-root .rep30-nickname-scene .rep30-flow-form{width:100%}
#rep-v30-flow-root .rep30-nickname-scene .rep30-flow-primary{min-height:61px}
/* Original V29 avatar assets and compositor untouched. The disc sits lower and
   the portrait is clipped at the panel edge (not abruptly inside the panel). */
html.rep30-onboarding #rep-avatar-overlay .rep21-preview::after{top:77%!important}
html.rep30-onboarding #rep-avatar-overlay .rep21-preview{overflow:hidden!important}
html.rep30-onboarding #rep-avatar-overlay .rep30-preview-caption{display:none!important}
/* Keep unique state colors: selected tiles in lime; purple only secondary brand copy. */
#rep-avatar-overlay .rep21-tabs button.is-current{border-color:#bafa72!important;border-bottom-color:#7fae46!important;background:#315246!important;box-shadow:none!important}
#rep-avatar-overlay .rep21-tabs button.is-current:focus-visible{outline-color:#bafa72!important}
@media(prefers-reduced-motion:reduce){#rep-account .rep30-auth{animation:none!important}}
/* Verification/recovery on older 568px viewports: don't clip the explanatory
   text or action buttons just to avoid document scrolling. */
@media(max-height:610px){
 #rep-account .rep30-is-info .rep30-header{min-height:62px}
 #rep-account .rep30-is-info .rep30-contents{gap:4px;padding:0 0 4px}
 #rep-account .rep30-is-info .rep30-icon-hero{width:50px;height:50px;border-radius:14px;margin:0 0 5px}
 #rep-account .rep30-is-info .rep30-icon-hero img{width:35px;height:35px}
 #rep-account .rep30-is-info .rep30-title{font-size:23px;line-height:1.1;margin:0 0 5px}
 #rep-account .rep30-is-info .rep30-sub{font-size:11.8px;line-height:1.25;margin:0 0 5px}
 #rep-account .rep30-is-info .rep30-info{font-size:11px;line-height:1.2;padding:7px 10px;margin:0 0 5px}
 #rep-account .rep30-is-info .rep30-actions{gap:8px}
 #rep-account .rep30-is-info .rep30-btn{min-height:43px;padding:8px;border-radius:13px;font-size:13px;box-shadow:0 4px 0 #c1cbd1}
 #rep-account .rep30-is-info .rep30-btn.lime{box-shadow:0 4px 0 var(--rep30-lime-edge)}
 #rep-account .rep30-is-info .rep30-note{margin:6px 0 0;font-size:10.5px;line-height:1.22}
}
/* Final fidelity corrections: use approved composition; do not restyle V29. */
#rep-account .rep30-is-choice .rep30-title{margin-bottom:15px}
#rep-account .rep30-is-choice .rep30-sub{margin-bottom:37px}
#rep-account .rep30-is-choice .rep30-btn:not(.lime){font-weight:700;letter-spacing:0}
#rep-account .rep30-is-form .rep30-email-form-view{transform:translateY(-7px)}
#rep-account .rep30-is-form .rep30-btn:not(.lime){font-weight:700}
/* On non-keyboard scenes the shell remains fixed; only focused form content may pan. */
#rep-account .rep30-auth{overscroll-behavior:none}
#rep-account .rep30-auth.rep30-keyboard-open .rep30-contents{scrollbar-width:none;overscroll-behavior:contain}
#rep-account .rep30-is-choice .rep30-choice-legacy button:focus-visible{outline-offset:2px!important}
#rep-account .rep30-btn.lime:disabled{transform:none!important;box-shadow:0 6px 0 var(--rep30-lime-edge)!important}
#rep-v30-flow-root .rep30-nickname-form .rep30-flow-primary:disabled{transform:none;box-shadow:0 6px 0 #82b944;cursor:not-allowed}
@media(max-height:780px){#rep-account .rep30-is-form .rep30-email-form-view{transform:translateY(-3px)}}
@media(max-height:610px){#rep-account .rep30-is-choice .rep30-sub{margin-bottom:15px}}
@media(max-height:610px){
 #rep-v30-flow-root .rep30-nickname-scene .rep30-flow-body{gap:7px!important;padding:0 2px!important;justify-content:center}
 #rep-v30-flow-root .rep30-nickname-scene .rep30-flow-brand{font-size:38px}
 #rep-v30-flow-root .rep30-nickname-scene .rep30-flow-tagline{font-size:12px;margin:0!important}
 #rep-v30-flow-root .rep30-nickname-scene h1{font-size:23px;line-height:1.06}
 #rep-v30-flow-root .rep30-nickname-scene .rep30-flow-desc{font-size:12px;line-height:1.25;margin:0}
 #rep-v30-flow-root .rep30-nickname-form{gap:6px;margin:0}
 #rep-v30-flow-root .rep30-nickname-label{font-size:10.5px}
 #rep-v30-flow-root .rep30-nick-input-wrap{min-height:48px}
 #rep-v30-flow-root .rep30-nick-input-wrap input{min-height:47px;padding:9px;font-size:17px}
 #rep-v30-flow-root .rep30-nick-at{font-size:23px;padding-left:12px}
 #rep-v30-flow-root .rep30-nick-availability{min-height:26px;font-size:11px;margin:0}
 #rep-v30-flow-root .rep30-nickname-scene .rep30-flow-primary{min-height:47px;font-size:15px}
 #rep-v30-flow-root .rep30-legacy-body{gap:5px!important;padding:0!important;justify-content:center}
 #rep-v30-flow-root .rep30-legacy-art{--rep30-legacy-mascot-size:66px!important}
 #rep-v30-flow-root .rep30-legacy-migrate h1{font-size:22px}
 #rep-v30-flow-root .rep30-legacy-body .rep30-flow-desc{font-size:11.5px;line-height:1.21}
 #rep-v30-flow-root .rep30-legacy-body :is(.rep30-flow-primary,.rep30-flow-secondary){min-height:41px;font-size:12.5px}
 #rep-v30-flow-root .rep30-legacy-uuid-note{font-size:10px}
 #rep-v30-flow-root .rep30-legacy-top{min-height:37px}
}

/* iOS keyboard: restrict only internal form sheet, never the whole document. */
#rep-account .rep30-auth.rep30-keyboard-open{height:var(--rep30-visible-height,100dvh)!important;max-height:var(--rep30-visible-height,100dvh)!important;padding-bottom:7px!important;justify-content:flex-start}
#rep-account .rep30-auth.rep30-keyboard-open .rep30-header{min-height:48px}
#rep-account .rep30-auth.rep30-keyboard-open .rep30-tag{display:none}
#rep-account .rep30-auth.rep30-keyboard-open .rep30-email-form-view{transform:none}
#rep-account .rep30-auth.rep30-keyboard-open .rep30-icon-hero{display:none}
#rep-account .rep30-auth.rep30-keyboard-open .rep30-title{font-size:22px;margin-bottom:5px}
#rep-account .rep30-auth.rep30-keyboard-open .rep30-sub{font-size:12px;margin-bottom:9px}
/* Pixel alignment against APPROVED Scene 01, 390x844 reference. The form
   (Scene 02) deliberately keeps its own original 24px header inset. */
@media (min-height:700px){
 #rep-account .rep30-is-choice .rep30-back{left:24px}
 #rep-account .rep30-is-choice .rep30-footer{margin-bottom:20px}
}


/* SOURCE: v30/rep-v30-rc9-polish.css */
/* REP V30 RC9 · onboarding polish only; the V29 application is untouched. */
:root{--rep30-rc9-bg:#101d23;--rep30-rc9-lime:#bafa72;--rep30-rc9-line:#526e78}
#rep-account:has(.rep30-auth){position:fixed!important;inset:0!important;height:100dvh!important;overflow:hidden!important;background:var(--rep30-rc9-bg)!important;overscroll-behavior:none}
#rep-account .account-card:has(.rep30-auth){height:100%!important;min-height:0!important;overflow:hidden!important}
#rep-account .rep30-auth{animation:none!important;overflow:hidden!important;background:var(--rep30-rc9-bg)!important;isolation:isolate;padding-top:calc(15px + env(safe-area-inset-top));padding-bottom:calc(12px + env(safe-area-inset-bottom))}
#rep-account .rep30-header{min-height:49px!important;max-height:49px!important;flex:0 0 49px!important;width:100%!important}
#rep-account .rep30-header .rep30-back{position:absolute;top:0!important;left:0!important;z-index:3;width:44px;height:44px;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
#rep-account .rep30-contents{width:100%;overflow:hidden;min-height:0;flex:1;max-height:100%;padding:0!important}
#rep-account .rep30-footer{margin-top:0!important;min-height:43px!important;max-height:56px;flex:none;align-items:end;padding:0 0 5px!important}
/* Scene 02: the top headline box has been removed, not simply recolored. */
#rep-account .rep30-is-choice .rep30-contents{justify-content:stretch!important;align-items:center}
#rep-account .rep30-is-choice .rep30-choice-inner{flex:1;width:100%;height:100%;min-height:0;transform:none!important;display:flex;flex-direction:column;justify-content:space-between;align-items:center;gap:8px;padding:2px 0 8px}
#rep-account .rep30-choice-top{min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;width:100%;flex:1 1 auto}
#rep-account .rep30-choice-mascot{display:block;width:auto;height:clamp(135px,29.3dvh,260px);max-width:min(85vw,275px);max-height:100%;object-fit:contain;flex:0 1 auto;margin:0 auto clamp(8px,1.6dvh,15px);animation:rep30-rc9-jump 2.2s ease-in-out infinite;transform-origin:center 80%;pointer-events:none;-webkit-user-drag:none;user-select:none}
@keyframes rep30-rc9-jump{0%,100%{transform:translateY(0)}48%{transform:translateY(-7px)}68%{transform:translateY(-5px)}}
#rep-account .rep30-is-choice .rep30-choice-eyebrow{margin:0 0 9px!important;font-size:14px;line-height:1.15;flex:none}
#rep-account .rep30-is-choice .rep30-title{margin:0!important;font-size:clamp(28px,7.7vw,36px)!important;line-height:1.08;flex:none}
#rep-account .rep30-choice-bottom{display:flex;flex-direction:column;align-items:center;width:100%;flex:0 0 auto;gap:0;padding-bottom:0}
#rep-account .rep30-is-choice .rep30-sub{margin:0 0 12px!important;font-size:13px!important;line-height:1.36}
#rep-account .rep30-is-choice .rep30-actions{display:flex;flex-direction:column;gap:15px!important;width:min(100%,310px)!important;max-width:310px!important}
#rep-account .rep30-is-choice .rep30-btn{height:60px;min-height:60px!important;max-height:60px;border-radius:18px;padding:11px 10px!important}
#rep-account .rep30-is-choice .rep30-choice-legacy{margin:9px 0 0!important;gap:1px;line-height:1.3}
/* All controls are isolated hit targets; the visual 3D rail is not a tap target. */
#rep-account .rep30-actions{isolation:isolate;gap:15px}
#rep-account .rep30-btn{position:relative;display:flex;align-items:center;justify-content:center;isolation:isolate;flex:none;margin:0!important;transform:translateZ(0);backface-visibility:hidden;touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:transform .13s cubic-bezier(.2,.8,.2,1),box-shadow .13s ease!important;z-index:0}
#rep-account .rep30-btn :is(img,span){pointer-events:none}
#rep-account .rep30-btn:active:not(:disabled){transform:translate3d(0,4px,0)!important;z-index:1}
#rep-account .rep30-btn:disabled{pointer-events:none;opacity:.58;cursor:not-allowed}
#rep-account .rep30-btn.soft{background:#24363e;color:#f9fcfd;border:1px solid #526e78!important;box-shadow:0 5px 0 #18272e!important}
#rep-account .rep30-btn.soft:active:not(:disabled){box-shadow:0 1px 0 #18272e!important}
#rep-account .rep30-btn:is(:focus:not(:focus-visible),:hover):not(:active){filter:none}
/* Approved Scene 03 forms: remove redundant header space and double focus. */
#rep-account .rep30-is-form .rep30-header,#rep-account .rep30-is-info .rep30-header{min-height:49px!important;max-height:49px!important}
#rep-account .rep30-is-form .rep30-email-form-view{transform:none!important}
#rep-account .rep30-is-form .rep30-contents{justify-content:center;overflow:hidden}
#rep-account .rep30-is-form .rep30-field input{
 outline:none!important;outline-offset:0!important;
 box-shadow:none!important;
 border:2px solid var(--rep30-rc9-line)!important;
 appearance:none;-webkit-appearance:none;
}
#rep-account .rep30-is-form .rep30-field input:is(:focus,:focus-visible){border-color:var(--rep30-rc9-lime)!important;box-shadow:none!important;outline:none!important}
#rep-account .rep30-field .rep30-row{isolation:isolate}
#rep-account .rep30-visibility{z-index:2;touch-action:manipulation}
#rep-account :is(.rep30-back,.rep30-visibility,.rep30-link,.rep30-check-link):focus:not(:focus-visible){outline:none!important}
#rep-account :is(.rep30-back,.rep30-btn,.rep30-visibility,.rep30-link,.rep30-check-link):focus-visible{outline:3px solid var(--rep30-rc9-lime)!important;outline-offset:3px!important}
/* Scene 04: restrained countdown and feedback; no large modal/alert. */
#rep-account .rep30-is-info .rep30-contents{gap:8px!important;justify-content:center;overflow:hidden}
#rep-account .rep30-is-info .rep30-sub{margin:0!important}
#rep-account .rep30-is-info .rep30-info{margin:0!important;max-width:360px;width:100%}
#rep-account .rep30-is-info .rep30-actions{gap:14px!important}
#rep-account .rep30-resend-timer{color:var(--rep30-rc9-lime);font:900 13px/1.25 Nunito,system-ui,sans-serif;text-align:center;margin:3px auto 5px;font-variant-numeric:tabular-nums}
#rep-account .rep30-resend-timer[data-ready=true]{color:#b8c9d1}
#rep-account .rep30-resend-status{color:#c9f8ae;font:800 12px/1.3 Nunito,system-ui,sans-serif;min-height:15px;text-align:center;margin:0}
#rep-account .rep30-check-link{border:0;background:none;color:#c294ff;padding:6px 8px;font:900 12px/1.2 Nunito,system-ui,sans-serif;cursor:pointer;touch-action:manipulation}
#rep-account .rep30-is-info .rep30-note{margin:1px 0 0!important}
/* iOS keyboard: visible visual viewport only; the full page must stay pinned. */
#rep-account .rep30-auth.rep30-keyboard-open{height:var(--rep30-visible-height,100dvh)!important;max-height:var(--rep30-visible-height,100dvh)!important;min-height:0!important;transform:translateY(var(--rep30-visual-top,0px))!important;padding-top:7px!important;padding-bottom:4px!important}
#rep-account .rep30-auth.rep30-keyboard-open .rep30-header{min-height:40px!important;max-height:40px!important;flex-basis:40px!important}
#rep-account .rep30-auth.rep30-keyboard-open .rep30-contents{flex:1;min-height:0;overflow-y:auto!important;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;justify-content:flex-start!important;padding:4px 0 12px!important}
#rep-account .rep30-auth.rep30-keyboard-open .rep30-email-form-view{min-height:min-content;flex:none}
#rep-account .rep30-auth.rep30-keyboard-open .rep30-footer{display:none!important}
#rep-account .rep30-auth.rep30-keyboard-open .rep30-icon-hero{display:none!important}
#rep-account .rep30-auth.rep30-keyboard-open .rep30-title{font-size:22px!important;margin-bottom:6px!important}
#rep-account .rep30-auth.rep30-keyboard-open .rep30-sub{font-size:12px!important;margin-bottom:10px!important}
/* Cache iframe scenes in-place, rather than reload them when tapping Back. */
#rep-v30-flow-root{background:#101d23!important;overflow:hidden!important}
#rep-v30-flow-root .rep30-flow-frame[hidden]{display:none!important}
#rep-v30-flow-root .rep30-flow-frame{background:#101d23!important;visibility:visible}
@media(max-height:740px){
 #rep-account .rep30-choice-mascot{height:clamp(115px,26.5dvh,205px);margin-bottom:7px}
 #rep-account .rep30-is-choice .rep30-btn{height:54px;min-height:54px!important}
 #rep-account .rep30-is-choice .rep30-choice-eyebrow{font-size:12px;margin-bottom:6px!important}
 #rep-account .rep30-is-choice .rep30-title{font-size:clamp(25px,7vw,30px)!important}
 #rep-account .rep30-is-choice .rep30-sub{font-size:12px!important;margin-bottom:10px!important}
 #rep-account .rep30-footer{min-height:38px!important}
 #rep-account .rep30-is-info .rep30-icon-hero{width:60px;height:60px;margin:0 0 6px}
 #rep-account .rep30-is-info .rep30-icon-hero img{width:44px;height:44px}
}
@media(max-height:610px){
 #rep-account .rep30-choice-mascot{height:clamp(92px,24dvh,139px)}
 #rep-account .rep30-is-choice .rep30-btn{height:47px;min-height:47px!important}
 #rep-account .rep30-is-choice .rep30-actions{gap:10px!important}
 #rep-account .rep30-choice-inner{gap:3px;padding-bottom:0}
 #rep-account .rep30-is-choice .rep30-title{font-size:25px!important}
 #rep-account .rep30-is-choice .rep30-sub{font-size:11px!important;margin-bottom:6px!important}
 #rep-account .rep30-footer{min-height:29px!important;font-size:12px}
 #rep-account .rep30-is-info .rep30-contents{gap:4px!important}
 #rep-account .rep30-resend-timer{font-size:11px;margin:0}
 #rep-account .rep30-is-info .rep30-actions{gap:8px!important}
 #rep-account .rep30-check-link{font-size:10.5px;padding:2px}
}
@media(prefers-reduced-motion:reduce){#rep-account .rep30-choice-mascot{animation:none!important}}


/* SOURCE: v30/rep-v301-fixes.css */
/* V30.1 — overrides confined to onboarding. The REP V29 app CSS is not edited. */
:root{--rep301-rail-press:4px}
/* Source of black strip fixed in markup: auth controls no longer use the global <header> tag. */
#rep-account .rep30-header{display:flex;position:relative;inset:auto;z-index:auto;max-width:430px;flex:0 0 49px;padding:0!important;background:transparent;border:0;box-shadow:none;min-height:49px;max-height:49px;align-items:flex-start;justify-content:flex-start}
#rep-account .rep30-header .rep30-back{position:relative!important;inset:auto!important;left:auto!important;top:auto!important;margin:0!important;flex:0 0 44px}
/* Shared geometry and permanent image DOM across Scene 02 variants. */
#rep-account .rep30-is-choice .rep30-choice-top{min-height:0;flex:1 1 auto}
#rep-account .rep30-is-choice .rep30-title{height:2.18em;display:flex;align-items:center;justify-content:center}
#rep-account .rep30-is-choice .rep30-choice-bottom{flex:0 0 auto}
#rep-account .rep30-is-choice .rep30-choice-bottom>.rep30-sub{min-height:2.75em;display:flex;align-items:flex-end;justify-content:center;text-align:center;margin-bottom:12px!important}
#rep-account .rep30-is-choice .rep30-choice-legacy{min-height:38px;max-height:38px;justify-content:flex-start}
#rep-account .rep30-is-choice .rep30-choice-legacy[aria-hidden="true"]{visibility:hidden;pointer-events:none}
#rep-account .rep30-is-choice .rep30-choice-legacy button{padding-top:4px}
#rep-account .rep30-footer{gap:4px;align-items:center!important;justify-content:center}
#rep-account .rep30-footer-caption,#rep-account .rep30-footer .rep30-link{display:inline-flex;align-items:center;line-height:20px;min-height:25px;white-space:nowrap;vertical-align:middle}
#rep-account .rep30-footer .rep30-link{position:relative;top:2px}
/* Button email uses plain white vector, without the green internal box. */
#rep-account .rep30-is-choice .rep30-btn.lime img{background:transparent!important;border:0!important;padding:0!important;border-radius:0!important;width:27px!important;height:27px!important}
/* Same original 2.2s gentle bounce, but continuous periodic motion. */
#rep-account .rep30-choice-mascot{animation:rep301-jump 2.2s ease-in-out infinite!important}
@keyframes rep301-jump{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
/* Inherited physical rail press model from the existing V29 rep-v28.6.css. */
#rep-account .rep30-btn{--rep286-rail:#c1cbd1;box-shadow:0 var(--rep301-rail-press) 0 var(--rep286-rail)!important;transition:filter .13s ease,background-color .13s ease,border-color .13s ease,transform .13s ease,box-shadow .13s ease!important}
#rep-account .rep30-btn.lime{--rep286-rail:#6e9f3b}
#rep-account .rep30-btn.soft{--rep286-rail:#18272e}
#rep-account .rep30-btn:not(:disabled):active{transform:translateY(2px)!important;box-shadow:0 2px 0 var(--rep286-rail)!important}
#rep-account .rep30-btn:disabled{opacity:.58}
#rep-account .rep30-auth .rep30-btn img,#rep-account .rep30-auth .rep30-btn span{pointer-events:none}
#rep-account .rep301-recovery-shortcuts{display:flex;gap:10px;justify-content:center;align-items:center;flex-wrap:wrap}
#rep-account .rep301-recovery-shortcuts button{background:transparent;color:#c294ff;border:0;padding:4px;font:800 11px/1.3 Nunito,system-ui,sans-serif}
#rep-account .rep301-send-hint{color:#bafa72;text-align:center;min-height:12px;margin:0;font:800 11px/1.2 Nunito,system-ui,sans-serif}
#rep-account .rep30-is-info .rep30-contents{gap:6px!important}
#rep-account .rep30-is-info .rep30-icon-hero{margin-bottom:3px!important}
#rep-account .rep30-is-info .rep30-title{margin:0!important}
#rep-account .rep30-is-info .rep30-sub{font-size:13px!important;line-height:1.3!important}
#rep-account .rep30-is-info .rep30-info{padding:9px 11px!important;font-size:12px!important}
#rep-account .rep30-is-info .rep30-resend-timer{margin:2px!important}
#rep-account .rep30-is-info .rep30-actions{width:min(100%,310px)!important;max-width:310px;gap:11px!important}
#rep-account .rep30-is-info .rep30-btn{min-height:44px!important;height:44px!important;border-radius:14px!important;padding:7px;font-size:12px!important}
@media(max-height:650px){
 #rep-account .rep30-is-info .rep30-contents{gap:3px!important;justify-content:center}
 #rep-account .rep30-is-info .rep30-icon-hero{height:46px!important;width:46px!important;margin:0!important}
 #rep-account .rep30-is-info .rep30-icon-hero img{width:36px!important;height:36px!important}
 #rep-account .rep30-is-info .rep30-title{font-size:23px!important}
 #rep-account .rep30-is-info .rep30-sub{font-size:11px!important}
 #rep-account .rep301-code-form .rep30-btn{height:38px!important;min-height:38px!important}
 #rep-account .rep301-code-form .rep30-field input{min-height:40px}
 #rep-account .rep30-is-info .rep30-actions{gap:6px!important}
 #rep-account .rep30-is-info .rep30-btn{height:38px!important;min-height:38px!important}
 #rep-account .rep30-footer{min-height:29px!important}
}
@media(prefers-reduced-motion:reduce){#rep-account .rep30-choice-mascot{animation:none!important}}


/* SOURCE: v30/rep-v302-polish.css */
/* REP V30.2 — precise onboarding-only fixes, inherited V29 button physics. */
/* A signed-in but unfinished onboarding account must not show the V29 home as
   the editor/dialog shell swaps. This only affects unfinished onboarding. */
html.rep302-onboarding-route #app,
html.rep302-onboarding-route #bottom{visibility:hidden!important;pointer-events:none!important}
/* Hidden cached iframes must not occupy layout or intercept touches. */
#rep-v30-flow-root .rep30-flow-frame[hidden]{display:none!important;visibility:hidden!important;pointer-events:none!important}
/* Flow is the immediate scene beneath the avatar editor, never Welcome. */
html.rep30-onboarding.rep21-editor-open #rep-avatar-overlay:not(:empty){z-index:10030!important}
/* Existing V29 4px shadow rail and 2px press, no new timing model. */
#rep-v30-flow-root .rep30-nickname-scene .rep30-flow-primary{
 --rep286-rail:#6e9f3b;
 box-sizing:border-box!important;
 border:0!important;border-bottom:2px solid #82b944!important;
 box-shadow:0 var(--rep286-press-depth,4px) 0 var(--rep286-rail)!important;
 transition:filter .13s ease,background-color .13s ease,border-color .13s ease,transform .13s ease,box-shadow .13s ease!important;
 margin-bottom:0!important;
}
#rep-v30-flow-root .rep30-nickname-scene .rep30-flow-primary:not(:disabled):active{
 transform:translateY(2px)!important;box-shadow:0 2px 0 var(--rep286-rail)!important;
}
/* Previous stage's focus must never leak into an open onboarding editor. */
html.rep30-onboarding #rep-avatar-overlay button.rep21-icon-button:not(:focus-visible){outline:0!important}
/* Confirmation is success only when Supabase verified the session. */
#rep-account .rep30-error.rep302-success{color:#bafa72!important;border:1px solid #54764d!important;background:#1c352c!important;text-align:center}
/* One focus ring on nickname wrapper, not an extra violet inner outline. */
#rep-v30-flow-root .rep30-nick-input-wrap input:focus-visible{outline:none!important;box-shadow:none!important}
/* Fit final nickname stage on compact 320×568 iPhones, no document scrolling. */
@media(max-height:620px){
 #rep-v30-flow-root .rep30-nickname-scene{height:100dvh;min-height:0!important;overflow:hidden;padding:12px 15px max(12px,env(safe-area-inset-bottom))!important}
 #rep-v30-flow-root .rep30-nickname-scene .rep30-flow-back{height:42px;width:42px;flex:none}
 #rep-v30-flow-root .rep30-nickname-scene .rep30-flow-body{gap:8px!important;padding:0!important;min-height:0}
 #rep-v30-flow-root .rep30-nickname-scene .rep30-flow-brand{font-size:42px!important}
 #rep-v30-flow-root .rep30-nickname-scene .rep30-flow-tagline{font-size:13px;margin:0!important}
 #rep-v30-flow-root .rep30-nickname-scene h1{font-size:clamp(24px,7.4vw,28px)!important;line-height:1.06}
 #rep-v30-flow-root .rep30-nickname-scene .rep30-flow-desc{font-size:12px!important;line-height:1.25;margin:0!important}
 #rep-v30-flow-root .rep30-nickname-form{gap:6px!important;margin-top:2px!important}
 #rep-v30-flow-root .rep30-nickname-label{font-size:10px}
 #rep-v30-flow-root .rep30-nick-input-wrap{min-height:50px;border-radius:14px}
 #rep-v30-flow-root .rep30-nick-input-wrap input{min-height:48px!important;padding:8px 10px;font-size:17px!important}
 #rep-v30-flow-root .rep30-nick-at{font-size:22px;padding-left:13px}
 #rep-v30-flow-root .rep30-nick-availability{font-size:11px;min-height:25px;margin:0 0 3px!important}
 #rep-v30-flow-root .rep30-nickname-form .rep30-flow-primary{min-height:48px;font-size:16px}
}


/* SOURCE: v30/rep-v303-auth-clean.css */
/* REP V30.3 — auth presentation contract. No V29 CSS touched.
   Layout variants share one grid; only copy swaps. Global #rep-account scope. */
#rep-account .rep30-is-choice .rep30-choice-inner{gap:6px!important;}
#rep-account .rep30-is-choice .rep30-choice-bottom{width:100%;}
#rep-account .rep30-is-choice .rep30-actions{gap:12px!important;width:min(100%,332px)!important;max-width:332px!important;}
#rep-account .rep30-is-choice .rep30-actions .rep303-legacy{
 background:#24373f!important;color:#f7faf8!important;
 border:1px solid #526e78!important;
 box-shadow:0 var(--rep301-rail-press,4px) 0 #18272e!important;
 font-weight:900!important;font-size:clamp(13px,3.7vw,16px)!important;
}
#rep-account .rep30-is-choice .rep30-actions .rep303-legacy:active:not(:disabled){
 transform:translateY(2px)!important;box-shadow:0 2px 0 #18272e!important;
}
#rep-account .rep30-is-choice .rep30-choice-top{flex:1 1 auto;min-height:0;}
#rep-account .rep30-is-choice .rep30-btn{height:clamp(45px,7.05dvh,60px)!important;min-height:clamp(45px,7.05dvh,60px)!important;max-height:60px!important;}
#rep-account .rep30-is-choice .rep30-choice-mascot{height:clamp(86px,25dvh,220px)!important;max-width:min(68vw,245px)!important;}
#rep-account .rep30-is-choice .rep30-title{height:2.2em!important;display:block;}
#rep-account .rep30-footer{display:flex!important;align-items:center!important;justify-content:center!important;flex-wrap:nowrap!important;gap:5px!important;font:800 clamp(12px,3.6vw,15px)/1.2 Nunito,system-ui,sans-serif!important;}
#rep-account .rep30-footer-caption,#rep-account .rep30-footer .rep30-link{position:static!important;top:auto!important;vertical-align:baseline!important;min-height:0!important;line-height:22px!important;display:inline-block!important;padding:0!important;margin:0!important;white-space:nowrap;}
#rep-account .rep30-footer .rep30-link{font-family:Nunito,system-ui,sans-serif!important;color:var(--rep30-purple)!important;font-weight:1000!important;}
#rep-account .rep30-is-form .rep30-email-form-view{gap:0;}
#rep-account .rep30-is-form .rep30-icon-hero{margin:0 auto clamp(13px,2.3dvh,23px)!important;}
#rep-account .rep30-is-form .rep30-title{margin:0 auto clamp(17px,3dvh,27px)!important;}
#rep-account .rep30-is-form .rep30-form{gap:clamp(12px,2.3dvh,19px);}
#rep-account .rep30-is-form .rep30-field{font-size:clamp(12px,3.5vw,14px);margin:0!important;}
#rep-account .rep30-is-form .rep30-forgot{margin:0 0 3px!important;text-align:right;}
#rep-account .rep30-is-form .rep30-forgot button{font-size:13px;min-height:28px;padding:3px 0;}
#rep-account .rep30-form-note,#rep-account .rep30-password-hint,#rep-account .rep30-choice-legacy{display:none!important;}
#rep-account .rep303-existing-options{display:flex;gap:12px;justify-content:center;align-items:center;width:100%;max-width:360px;}
#rep-account .rep303-existing-options button{font:900 clamp(11px,3.2vw,13px)/1.2 Nunito,system-ui,sans-serif;color:#c694ff;background:#24343d;border:1px solid #4f6772;border-radius:12px;min-height:42px;padding:8px 10px;flex:1;touch-action:manipulation;}
#rep-account .rep30-auth .rep30-error{font-size:13px;line-height:1.3;margin:0 0 10px;}
@media(max-height:650px){
 #rep-account .rep30-is-choice .rep30-choice-mascot{height:clamp(78px,20dvh,135px)!important;}
 #rep-account .rep30-is-choice .rep30-actions{gap:9px!important;}
 #rep-account .rep30-is-choice .rep30-btn{height:44px!important;min-height:44px!important;border-radius:14px!important;}
 #rep-account .rep30-is-choice .rep30-title{font-size:25px!important;}
 #rep-account .rep30-is-form .rep30-icon-hero{width:68px!important;height:68px!important;}
 #rep-account .rep30-is-form .rep30-icon-hero img{width:48px;height:48px;}
 #rep-account .rep30-is-form .rep30-title{font-size:clamp(22px,7.1vw,28px)!important;margin-bottom:12px!important;}
 #rep-account .rep30-is-form .rep30-field input{min-height:46px!important;}
 #rep-account .rep30-footer{min-height:31px!important;}
}
@media(prefers-reduced-motion:reduce){#rep-account .rep30-choice-mascot{animation:none!important}}


/* V30.4: physical press state extends the exact V29 rail dynamics, no new style. */
.rep30-btn.rep-is-pressed:not(:disabled),
.rep30-btn:active:not(:disabled){transform:translateY(2px)!important;box-shadow:0 2px 0 var(--rep286-rail,#779c42)!important;}
#rep-v30-flow-root .rep30-flow-primary.rep-is-pressed:not(:disabled),
#rep-v30-flow-root .rep30-flow-secondary.rep-is-pressed:not(:disabled),
#rep-v30-flow-root .rep30-flow-back.rep-is-pressed:not(:disabled){transform:translateY(2px)!important;}
#rep-account .rep30-back.rep-is-pressed:not(:disabled){transform:translateY(2px)!important;}
/* Confirmation is minimal, approved variant A. */
#rep-account .rep30-is-info .rep30-check-link[data-action="login-email"]{min-height:36px;}
/* Keep the smaller iPhone keyboard visible; do not allow document-level scroll. */
#rep-account .rep30-keyboard-open .rep30-contents{overflow-y:auto;overscroll-behavior:contain;}
@media (prefers-reduced-motion:reduce){.rep-is-pressed{transition:none!important}}
