/* KARVE Studio — focused V17-style sequential workspace. No helper or Worker API changes. */
:root{--kv-orange:#f78a44;--kv-orange-soft:#ffbb88;--kv-bg:#090a0c;--kv-panel:#111215;--kv-border:#2c2e33;--kv-muted:#9b9ea5;--kv-white:#f6f6f7}
#studioProtected[hidden],#studioGate[hidden],#studioLockedInfo[hidden],.kv-stage[hidden],.kv-pair[hidden],.kv-success[hidden],#pairSection[hidden],#stopScan[hidden],#goToCard[hidden],#applyMeter[hidden],#applyResultIcon[hidden],#restartStudio[hidden],#canvasEmpty[hidden],#applyArtwork[hidden]{display:none!important}
.studio-gate-page{min-height:calc(100vh - 180px);padding:clamp(72px,11vw,142px) 0 96px}
.studio-gate-page>.wrap{max-width:1240px}.studio-access-card{max-width:540px;margin:0 auto;background:#111215!important;border:1px solid #303136!important;border-radius:24px!important;padding:clamp(24px,4vw,42px)!important;text-align:center;box-shadow:0 25px 90px #0005}
.studio-access-card .nexa-scanner-progress{stroke:var(--kv-orange)}.studio-access-card .nexa-scanner-tick{color:var(--kv-orange)}
.studio-gate-label{display:block;margin:15px auto 13px}.studio-access-card h2{font-size:clamp(27px,4vw,39px);letter-spacing:-.05em;line-height:1.13;margin:0 0 13px}.studio-gate-note{font-size:13px;color:var(--kv-muted);line-height:1.7;margin:0 auto 27px;max-width:380px}
.studio-key-form .field{text-align:left;margin-bottom:14px}.studio-key-form .btn{width:100%;margin-top:5px}.studio-access-card .status{min-height:25px;color:#b6b7bc;text-align:center;margin-top:19px;font-size:12px}
.studio-gate-links{display:flex;gap:23px;justify-content:center;margin-top:22px;flex-wrap:wrap;font-size:12px}.studio-gate-links a:hover{color:var(--kv-orange)}
#studioProtected{padding:30px 0 75px}.kv-studio{color:var(--kv-white);max-width:1120px;margin:auto;padding:7px 0 25px;scroll-margin-top:90px;animation:kv-reveal .5s ease both}
.kv-studio *{box-sizing:border-box}.kv-topline{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:0 0 31px}.kv-title{display:flex;align-items:center;gap:13px;min-width:0}.kv-title h1{font-size:clamp(27px,4vw,36px);font-weight:720;letter-spacing:-.065em;margin:0;line-height:1.1}.kv-orange-mark{width:10px;height:10px;border-radius:4px;background:var(--kv-orange);transform:rotate(45deg);box-shadow:0 0 24px #fa884477;flex-shrink:0}.kv-verified{font:750 9px ui-monospace,SFMono-Regular,monospace;letter-spacing:.11em;border-radius:100px;padding:9px 12px;border:1px solid #6d4d385c;color:#f7a66e;white-space:nowrap}.kv-verified span{color:#e2b39a}.kv-exit{border:1px solid #33353a;background:transparent;color:#d7d8db;border-radius:10px;padding:12px 16px;font-size:12px;cursor:pointer;white-space:nowrap}.kv-exit:hover{border-color:#8f654c;color:#fff}
.kv-progress{position:relative;margin:0 0 29px;background:#101114;border:1px solid #26272b;border-radius:18px;padding:20px 28px 23px;overflow:hidden}
.kv-progress-track{display:flex;align-items:center;justify-content:space-between;gap:10px;position:relative;z-index:1}
.kv-progress-track:before{content:"";position:absolute;height:2px;top:18px;left:26px;right:26px;background:#303136;z-index:-1}
.kv-progress-item{border:0;background:none;color:#797d84;cursor:pointer;display:flex;align-items:center;flex-direction:column;gap:9px;padding:0;min-width:75px;position:relative;transition:color .25s}
.kv-progress-index{width:37px;height:37px;background:#1b1d20;color:#a1a4aa;border:1px solid #404145;border-radius:50%;display:grid;place-items:center;font:800 12px ui-monospace,monospace;transition:background .3s,border-color .3s,color .3s,box-shadow .3s}
.kv-progress-name{font-size:11px;font-weight:650;letter-spacing:.005em}.kv-progress-item.complete{color:#e9ebef}.kv-progress-item.complete .kv-progress-index{background:#27231f;border-color:#a9734e;color:#ffb583}.kv-progress-item.current{color:var(--kv-white)}.kv-progress-item.current .kv-progress-index{background:var(--kv-orange);border-color:var(--kv-orange);color:#241309;box-shadow:0 0 0 5px #ee80301b,0 0 22px #e7752870;animation:kv-step-pulse 2.7s ease-in-out infinite}.kv-progress-item:disabled{cursor:default}.kv-progress-base{position:absolute;left:calc(28px + 41px);right:calc(28px + 41px);height:2px;top:38px;pointer-events:none}.kv-progress-fill{height:100%;width:0;background:linear-gradient(90deg,#cf662c,#ffa669);transition:width .6s cubic-bezier(.2,.8,.2,1);box-shadow:0 0 13px #f68b4b88}
.kv-stage{animation:kv-reveal .48s cubic-bezier(.2,.8,.2,1) both}.kv-stage-copy{margin:0 auto 25px;max-width:690px;text-align:center}.kv-kicker{display:block;color:var(--kv-orange);font:800 10px ui-monospace,monospace;letter-spacing:.17em;margin-bottom:12px}.kv-stage-copy h2{font-size:clamp(33px,5.7vw,53px);font-weight:730;letter-spacing:-.07em;line-height:1.03;margin:0 0 12px}.kv-stage-copy p{font-size:13px;line-height:1.8;color:#a8abb1;margin:0}.kv-stage-copy p strong{color:#e8e9ea}
.kv-layout{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(240px,.7fr);gap:15px;align-items:start;max-width:980px;margin:0 auto}.kv-panel,.kv-tip{background:var(--kv-panel);border:1px solid var(--kv-border);border-radius:20px;padding:28px;box-shadow:0 15px 47px #0002}.kv-main-panel{min-width:0}.kv-panel-label{display:flex;justify-content:space-between;align-items:center;gap:10px;font:750 10px ui-monospace,monospace;letter-spacing:.13em;color:#858990;margin-bottom:24px}.kv-mini-status{font:750 9px ui-monospace,monospace;letter-spacing:.07em;padding:7px 10px;color:#a4a6aa;background:#ffffff08;border:1px solid #ffffff15;border-radius:99px;white-space:nowrap}.kv-mini-status.is-online{color:#ffc392;background:#fa883516;border-color:#fa883538}
.kv-tip{padding:25px}.kv-tip-icon{width:36px;height:36px;border:1px solid #5e493d;background:#38261e;color:#ffc39b;border-radius:10px;display:grid;place-items:center;font-size:18px}.kv-tip h3{font-size:17px;letter-spacing:-.03em;margin:18px 0 9px}.kv-tip p{font-size:12px;line-height:1.75;color:#a9acb2;margin:8px 0}.kv-links{display:flex;flex-direction:column;gap:9px;margin-top:20px}.kv-links a{font-size:12px;color:#eda16c;text-decoration:none}.kv-links a:hover{color:#fff}.kv-text-button{background:none;color:#f5a26e;border:0;padding:12px 0;cursor:pointer;font-size:12px}
.kv-btn{border-radius:12px;padding:14px 18px;min-height:48px;display:inline-flex;align-items:center;justify-content:center;gap:13px;font-size:13px;font-weight:730;cursor:pointer;transition:transform .2s ease,background .2s ease,border-color .2s ease,color .2s ease;position:relative;text-decoration:none;white-space:normal;text-align:center;line-height:1.15}.kv-btn:not(:disabled):hover{transform:translateY(-2px)}.kv-btn:disabled{opacity:.43;cursor:not-allowed;transform:none}.kv-btn-primary{background:#f99551;border:1px solid #f99551;color:#1e0d06}.kv-btn-primary:not(:disabled):hover{background:#ffc18f;border-color:#ffc18f}.kv-btn-subtle{border:1px solid #4a4c53;background:#1c1e22;color:#ebecee}.kv-btn-subtle:not(:disabled):hover{border-color:#aa7c60}.kv-btn-next{display:flex;margin-top:22px;width:100%;background:#f5f5f5;border:1px solid #f5f5f5;color:#151518}.kv-btn-next:not(:disabled):hover{background:#fff}.kv-panel>.kv-btn-primary{width:100%}.kv-btn.is-loading .kv-btn-label{opacity:.6}.kv-btn.is-loading:after{content:"";display:block;flex-shrink:0;width:14px;height:14px;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;animation:kv-spin .7s linear infinite}.kv-btn.is-loading>span:last-child:not(.kv-btn-label){display:none}
.kv-message{margin:17px 0 0;color:#adb1b8;font-size:12px;line-height:1.7;min-height:21px}.kv-message.is-error{color:#ffad9d}.kv-message.is-success{color:#f9bc91}.kv-message.kv-shake{animation:kv-shake .36s ease}
.kv-illustration{height:194px;position:relative;margin:-4px 0 20px;background:radial-gradient(circle at center,#332119 0%,#151719 49%,transparent 68%);overflow:hidden;border-radius:14px}.kv-orbit{position:absolute;left:50%;top:50%;width:178px;height:132px;border:1px dashed #ae674756;border-radius:50%;transform:translate(-50%,-50%) rotate(-23deg);animation:kv-orbit 14s linear infinite}.kv-orbit-two{width:300px;height:170px;opacity:.5;animation-duration:20s;animation-direction:reverse}.kv-computer,.kv-phone-drawing{position:absolute;display:grid;place-items:center;background:#24282c;border:2px solid #aaa5a0;box-shadow:0 10px 30px #0008;color:#f9ac70}.kv-computer{top:58px;left:calc(50% - 107px);width:100px;height:74px;border-radius:9px}.kv-computer:after{content:"";position:absolute;width:70px;height:5px;background:#8b8f94;bottom:-12px;border-radius:4px}.kv-computer span{font-size:22px}.kv-phone-drawing{top:48px;left:calc(50% + 45px);width:45px;height:90px;border-radius:11px}.kv-phone-drawing span{width:18px;height:3px;background:#9d6d52;border-radius:4px;position:absolute;top:7px}.kv-wire{position:absolute;left:calc(50% + 3px);top:92px;width:39px;border-top:2px dashed #ff985b;filter:drop-shadow(0 0 5px #f90);animation:kv-wire 1.4s infinite}
.kv-pair{margin-top:23px;padding-top:20px;border-top:1px solid #ffffff13;animation:kv-reveal .3s ease}.kv-pair label{display:block;color:#a6a9af;font:750 10px ui-monospace,monospace;letter-spacing:.09em;margin-bottom:12px}.kv-pair-row{display:flex;gap:10px}.kv-pair input{height:50px;background:#181a1d;color:#fff;border:1px solid #4c4e54;border-radius:11px;text-align:center;letter-spacing:.25em;font-size:18px;min-width:0;flex:1}.kv-pair-row button{flex:0 0 auto}.kv-pair input:focus-visible{border-color:var(--kv-orange)}.kv-success{margin-top:20px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#f58a3912;border:1px solid #ff98523d;padding:17px;border-radius:14px;animation:kv-success-pop .55s ease both}.kv-success-icon,.kv-result-icon{background:var(--kv-orange);color:#28140b;width:29px;height:29px;border-radius:50%;display:grid;place-items:center;font-weight:800;box-shadow:0 0 0 5px #f58a3918}.kv-success strong{font-size:13px}.kv-success>span{color:#c4b2a6;font-size:11px;flex:1 1 100%}
.kv-choice-list{display:grid;gap:10px;margin-top:17px}.kv-choice{width:100%;min-height:73px;display:flex;align-items:center;gap:14px;border:1px solid #393a40;background:#1a1b20;color:var(--kv-white);border-radius:13px;cursor:pointer;padding:14px 16px;text-align:left;transition:transform .2s ease,border-color .2s ease,background .2s}.kv-choice:hover{border-color:#997253;transform:translateY(-1px)}.kv-choice.selected{border-color:#f49962;background:#34231b;box-shadow:0 0 0 1px #e98c5240,0 12px 26px #0002}.kv-choice-icon{width:40px;height:40px;border:1px solid #ffffff1c;border-radius:11px;background:#ffffff0c;color:#fdab77;display:grid;place-items:center;font-size:19px;flex-shrink:0}.kv-choice-body{display:flex;flex:1;flex-direction:column;gap:4px;min-width:0}.kv-choice-body strong{font-size:14px;letter-spacing:-.02em;overflow-wrap:anywhere}.kv-choice-body small{font-size:11px;color:#9ca0a7;line-height:1.4}.kv-choice-check{width:24px;height:24px;border:1px solid #56595e;border-radius:50%;display:grid;place-items:center;color:transparent}.kv-choice.selected .kv-choice-check{background:#f99d65;border-color:#f99d65;color:#1f1007}.kv-choice{animation:kv-reveal .34s ease both}.kv-choice:nth-child(2){animation-delay:.06s}.kv-choice:nth-child(3){animation-delay:.12s}.kv-empty{min-height:112px;border:1px dashed #3d4046;display:flex;justify-content:center;align-items:center;text-align:center;border-radius:12px;gap:9px;color:#848991;font-size:12px;padding:20px;line-height:1.6}.kv-empty span{font-size:24px;color:#dd9362}
.kv-scan-scene{height:255px;position:relative;display:grid;place-items:center;overflow:hidden;background:radial-gradient(ellipse at center,#33251f,#17191c 54%,#121315 85%);border:1px solid #303134;border-radius:15px;margin-bottom:20px}.kv-scanner-halo,.kv-scan-ring{position:absolute;width:215px;height:215px;border-radius:50%;border:1px dashed #c58f7042}.kv-scanner-halo{width:320px;height:320px;opacity:.38}.kv-scan-card{height:128px;width:206px;border-radius:13px;border:1px solid #ffffff40;background:linear-gradient(126deg,#24252a,#513628 72%,#c46f3c);box-shadow:0 18px 40px #000b;transform:rotate(-9deg);display:flex;justify-content:space-between;flex-direction:column;padding:19px;z-index:1;position:relative}.kv-scan-card b{font:700 16px sans-serif;letter-spacing:.2em}.kv-scan-chip{height:19px;width:27px;border-radius:4px;border:1px solid #ffffff99;box-shadow:inset 0 0 0 1px #ffffff25}.kv-scan-card i{width:52px;height:4px;background:#ffffff55;border-radius:4px}.kv-scan-beam{position:absolute;left:5%;right:5%;top:12%;height:3px;z-index:2;background:linear-gradient(90deg,transparent,#ff995c,transparent);opacity:0;box-shadow:0 0 21px 4px #e77d3c77}.kv-scan-scene.is-scanning .kv-scan-beam{opacity:1;animation:kv-scan-beam 2.2s ease-in-out infinite}.kv-scan-scene.is-scanning .kv-scan-ring{border-color:#ff9b6477;animation:kv-scanner-pulse 2s ease-in-out infinite}.kv-scan-scene.is-scanning .kv-scan-card{animation:kv-card-hover 3s ease-in-out infinite}.kv-action-group{display:flex;gap:12px;flex-wrap:wrap}.kv-action-group .kv-btn-primary{flex:1}
.kv-artwork-grid{max-width:930px;margin:0 auto}.kv-editor-panel{padding:27px!important}.kv-canvas-stage{position:relative;display:grid;place-items:center;min-height:340px;background:radial-gradient(ellipse at center,#242126,#141619);border:1px solid #34363a;border-radius:18px;padding:clamp(22px,4vw,50px);overflow:hidden}.kv-canvas-stage:before{content:"";position:absolute;inset:0;background-image:linear-gradient(#ffffff06 1px,transparent 1px),linear-gradient(90deg,#ffffff06 1px,transparent 1px);background-size:28px 28px;mask-image:linear-gradient(transparent,#0008,transparent)}#artCanvas{width:min(100%,650px);height:auto;aspect-ratio:1536/969;border-radius:17px;box-shadow:0 19px 60px #000b;display:block;position:relative;cursor:grab;touch-action:none;z-index:1}#artCanvas:active{cursor:grabbing}.kv-canvas-empty{position:absolute;z-index:2;inset:auto;display:flex;flex-direction:column;align-items:center;gap:7px;text-align:center;pointer-events:none;color:#f7f7f7}.kv-canvas-empty strong{font-size:17px;letter-spacing:-.025em}.kv-canvas-empty small{font-size:11px;color:#c0c0c5}.kv-upload-symbol{font-size:23px;width:45px;height:45px;border:1px solid #ffae7855;border-radius:50%;display:grid;place-items:center;color:#ffae78;background:#30251e;margin-bottom:9px}.kv-art-tools{padding:24px 0 5px}.kv-upload-label{cursor:pointer}.kv-zoom{display:flex;align-items:center;gap:14px;margin-top:25px}.kv-zoom label{font-size:12px;color:#a5a6ae;white-space:nowrap}.kv-zoom input{flex:1;min-width:0;accent-color:var(--kv-orange)}.kv-zoom output{min-width:43px;text-align:right;font:750 12px ui-monospace,monospace}
.kv-summary{display:flex;gap:20px;align-items:center;padding:12px 0 22px;border-bottom:1px solid #38393b}.kv-summary-thumb{width:182px;aspect-ratio:1536/969;border-radius:12px;overflow:hidden;background:#25262a;box-shadow:0 15px 35px #0006;flex-shrink:0}.kv-summary-thumb img{display:block;width:100%;height:100%;object-fit:cover}.kv-summary-detail{display:flex;flex-direction:column;gap:8px}.kv-summary-detail span{font:750 9px ui-monospace,monospace;letter-spacing:.12em;color:#93959e}.kv-summary-detail strong{font-size:14px;margin-bottom:7px;overflow-wrap:anywhere}.kv-confirm{display:flex;align-items:flex-start;gap:13px;color:#d4d5d9;font-size:12px;line-height:1.6;margin:23px 0;cursor:pointer}.kv-confirm input{accent-color:var(--kv-orange);margin-top:3px;width:17px;height:17px;flex-shrink:0}.kv-apply-button{width:100%}.kv-apply-meter{height:8px;border-radius:50px;background:#ffffff15;margin:21px 0 0;overflow:hidden}.kv-apply-meter>div{width:0;height:100%;background:linear-gradient(90deg,#d97137,#ffbf87);box-shadow:0 0 16px #ff9d61;transition:width .4s ease}.kv-result-icon{margin:20px auto 0;width:55px;height:55px;font-size:25px;animation:kv-success-pop .7s cubic-bezier(.2,1.1,.2,1) both}
.kv-license-footnote{color:#73777d;text-align:center;margin:34px 0 0;font:750 10px ui-monospace,monospace;letter-spacing:.08em}
@keyframes kv-reveal{from{opacity:0;transform:translateY(13px)}to{opacity:1;transform:translateY(0)}}@keyframes kv-spin{to{transform:rotate(360deg)}}@keyframes kv-step-pulse{50%{box-shadow:0 0 0 9px #ee803010,0 0 25px #e7752888}}@keyframes kv-shake{20%,60%{transform:translateX(-5px)}40%,80%{transform:translateX(5px)}}@keyframes kv-success-pop{from{opacity:0;transform:scale(.7) translateY(9px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes kv-wire{50%{opacity:.4}}@keyframes kv-orbit{to{transform:translate(-50%,-50%) rotate(337deg)}}@keyframes kv-scan-beam{0%,100%{top:13%;opacity:.1}50%{top:86%;opacity:1}}@keyframes kv-scanner-pulse{50%{transform:scale(1.18);opacity:.45}}@keyframes kv-card-hover{50%{transform:translateY(-7px) rotate(-7deg)}}
@media(max-width:850px){.kv-layout{grid-template-columns:1fr}.kv-tip{padding:21px}.kv-progress{padding:18px 12px 20px}.kv-progress-track:before{left:22px;right:22px}.kv-progress-base{left:34px;right:34px;top:36px}.kv-progress-item{min-width:51px}.kv-progress-name{font-size:10px}.kv-studio{padding-inline:3px}}
@media(max-width:540px){.kv-title{flex-wrap:wrap;gap:9px}.kv-title h1{font-size:28px}.kv-verified{font-size:8px;padding:7px 9px}.kv-topline{align-items:flex-start}.kv-exit{padding:9px 11px;font-size:11px}.kv-progress{padding:15px 7px 18px;border-radius:13px}.kv-progress-item{min-width:0;gap:8px;flex:1}.kv-progress-index{width:32px;height:32px}.kv-progress-name{font-size:9px}.kv-progress-track:before{top:15px;left:15px;right:15px}.kv-progress-base{left:23px;right:23px;top:31px}.kv-panel,.kv-tip{padding:20px;border-radius:16px}.kv-stage-copy h2{font-size:34px}.kv-stage-copy p{font-size:12px}.kv-pair-row{flex-direction:column}.kv-artwork-grid .kv-panel{padding:17px!important}.kv-canvas-stage{min-height:215px;padding:17px}.kv-summary{gap:13px}.kv-summary-thumb{width:135px}.kv-choice{padding:11px}.studio-gate-page{padding-top:80px}.studio-access-card{padding:22px!important}.kv-zoom{flex-wrap:wrap}.kv-zoom input{order:3;flex:1 1 100%}}
@media(prefers-reduced-motion:reduce){.kv-studio,.kv-stage,.kv-choice,.kv-success,.kv-result-icon,.kv-progress-item.current .kv-progress-index,.kv-orbit,.kv-wire,.kv-scan-scene.is-scanning .kv-scan-beam,.kv-scan-scene.is-scanning .kv-scan-ring,.kv-scan-scene.is-scanning .kv-scan-card,.kv-btn.is-loading:after{animation:none!important}.kv-progress-fill,.kv-choice,.kv-btn{transition:none!important}}

#studioMain.is-unlocked{padding-top:92px;min-height:calc(100vh - 100px)}
