:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;color:#58658f;background:#0c0e62;font-synthesis:none;--purple: #7181c8;--lavender: #ababdc;--blue: #b7d3f4;--pink: #f1cfed;--pale: #f1e5f6}*{box-sizing:border-box}html,body,#root{width:100%;min-height:100%;margin:0}body{overflow:hidden}button,input{font:inherit}button{color:inherit}.app{position:relative;width:100vw;min-height:100svh;overflow:hidden}.main-experience{position:fixed;z-index:1;top:0;right:0;bottom:0;left:0;overflow:hidden;opacity:0;filter:blur(6px);transform:scale(.96);transform-origin:center;pointer-events:none;transition:opacity 1s ease-in-out,transform 1s ease-in-out,filter 1s ease-in-out}.app.intro-transitioning .main-experience,.app.intro-main .main-experience{opacity:1;filter:blur(0);transform:scale(1)}.app.intro-main .main-experience{pointer-events:auto}.intro-screen{position:fixed;z-index:20;top:0;right:0;bottom:0;left:0;overflow:hidden;background:transparent;opacity:1;transition:background-color 80ms linear}.intro-screen.is-transitioning{background:transparent;pointer-events:none}.intro-canvas{display:block;width:100%;height:100%;touch-action:none;cursor:pointer;outline:none;opacity:1;transition:opacity 1s ease-in-out}.intro-screen.is-transitioning .intro-canvas{opacity:0}.intro-canvas:focus-visible{box-shadow:inset 0 0 0 3px #e1e4f5d1}.intro-screen.is-locked .intro-canvas{cursor:default}.intro-screen:before{content:"";position:absolute;z-index:1;top:46%;left:50%;width:min(62vw,81vh);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,rgba(236,240,255,.105) 0 62%,rgba(222,228,255,.035) 75%,transparent 83%);box-shadow:0 0 22px #e1e7ff38,0 0 56px #cad3ff1f,inset 0 0 24px #ffffff1f;translate:-50% -50%;pointer-events:none;opacity:1;transition:opacity .42s ease}.intro-screen.is-broken:before{opacity:0}.intro-screen.is-transitioning .intro-legal{opacity:0}.legal-notice{position:fixed;z-index:12;bottom:clamp(8px,1.4vh,16px);left:50%;width:min(58vw,680px);aspect-ratio:10.4;translate:-50% 0;pointer-events:none}.legal-notice>.legal-notice-art{position:absolute;top:50%;left:50%;width:9.615%;height:1040%;display:block;background:var(--ui-ink, #f4edf5);-webkit-mask-image:var(--legal-notice-mask);mask-image:var(--legal-notice-mask);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;rotate:90deg;translate:-50% -50%;transition:background-color .22s ease}.legal-notice p{margin:0}.intro-legal{z-index:3}.setup-legal{animation:setup-content-in .76s .12s both}@keyframes setup-content-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.setup-reveal{animation:setup-stage-in .76s cubic-bezier(.22,.61,.36,1) both}@keyframes setup-stage-in{0%{opacity:0;transform:translateY(12px) scale(1.006)}to{opacity:1;transform:translateY(0) scale(1)}}.brand{position:fixed;z-index:5;top:clamp(22px,4vw,58px);left:clamp(22px,4vw,62px);pointer-events:none}.artwork-brand{width:clamp(150px,15vw,230px);height:clamp(58px,7vw,96px)}.artwork-brand-mark{display:block;width:100%;height:100%;background:var(--ui-ink, #f4edf5);-webkit-mask-image:var(--brand-mask);mask-image:var(--brand-mask);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;rotate:90deg;scale:6.2;transition:background-color .22s ease}.brand h1{margin:0;color:#7181c8;font-family:Georgia,"Noto Serif SC",serif;font-size:clamp(30px,3.2vw,52px);font-weight:500;letter-spacing:.22em}.brand p{margin:7px 0 0 2px;color:#8793c3;font-family:Georgia,serif;font-size:clamp(9px,.9vw,13px);letter-spacing:.58em}.stage{position:relative;width:100vw;height:100svh;min-width:0;overflow:hidden}.mirror-canvas{display:block;width:100%;height:100%;min-width:0;touch-action:none;outline:none;cursor:grab}.mirror-canvas.phase-active{cursor:crosshair}.mirror-canvas.can-pan{cursor:grab}.mirror-canvas.can-pan:active{cursor:grabbing}.mirror-canvas:focus-visible{box-shadow:inset 0 0 0 3px #7181c8c7}.setup-dock,.action-dock,.result-dock{position:fixed;z-index:6;top:50%;right:max(10px,env(safe-area-inset-right));translate:0 -50%;display:flex;width:clamp(170px,14vw,205px);flex-direction:column;align-items:stretch;gap:9px;padding:10px;border:1px solid var(--dock-border, rgba(255,255,255,.5));border-radius:20px;background:var(--dock-panel, rgba(12,14,98,.2));box-shadow:8px 12px 28px var(--dock-shadow, rgba(0,0,0,.25)),inset 1px 1px 1px #ffffff42;-webkit-backdrop-filter:blur(16px) saturate(112%);backdrop-filter:blur(16px) saturate(112%);opacity:.92;transition:opacity .16s ease,background-color .22s ease,border-color .22s ease}.setup-dock,.action-dock,.result-dock{border-color:var(--dock-border, rgba(255,255,255,.5));color:var(--ui-ink, #66709d);box-shadow:8px 12px 28px var(--dock-shadow, rgba(0,0,0,.25)),inset 1px 1px 1px #ffffff47}.setup-dock .soft-button:not(.primary-button),.action-dock .soft-button:not(.primary-button),.result-dock .soft-button:not(.primary-button){background:var(--dock-button, rgba(218,220,239,.88))}.setup-dock .primary-button,.action-dock .primary-button,.result-dock .primary-button{background:var(--dock-primary, #aeb5e0)}.setup-dock>.soft-button,.action-dock>.soft-button,.result-dock>.soft-button,.setup-dock>.color-picker,.setup-dock>.animation-picker{width:100%}.setup-dock .color-button,.setup-dock .animation-button{width:100%}.setup-dock .soft-button,.action-dock .soft-button,.result-dock .soft-button{min-height:50px;padding-inline:14px}.setup-dock:hover,.setup-dock:focus-within,.action-dock:hover,.action-dock:focus-within,.result-dock:hover,.result-dock:focus-within{opacity:.98}.soft-button{position:relative;min-width:0;min-height:50px;display:inline-flex;align-items:center;justify-content:center;gap:9px;border:1px solid rgba(255,255,255,.56);border-radius:15px;padding:10px 20px;background:color-mix(in srgb,var(--ui-bg, #f1e5f6) 86%,var(--ui-ink, #58658f) 14%);box-shadow:5px 6px 13px #24274429,inset 1px 1px 1px #ffffff57;color:var(--ui-ink, #6170a8);font-weight:550;cursor:pointer;-webkit-user-select:none;user-select:none;transition:transform 90ms ease,box-shadow 90ms ease,opacity 90ms ease}.soft-button:hover{transform:translateY(-1px)}.soft-button:active{transform:translateY(1px);box-shadow:inset 4px 4px 9px #6f76ae33,inset -4px -4px 9px #ffffffad}.soft-button:focus-visible{outline:2px solid #7181c8;outline-offset:3px}.soft-button:disabled{opacity:.34;cursor:not-allowed;transform:none;box-shadow:inset 1px 1px 1px #ffffff1f}.primary-button{min-width:132px;color:#fff;border-color:#ffffff57;background:#7181c8;box-shadow:7px 7px 16px #5c65a347,-4px -4px 13px #ffffff8c,inset 1px 1px 1px #ffffff47}.upload-button{position:relative}.upload-button input{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.upload-button:focus-within{outline:2px solid #7181c8;outline-offset:3px}.animation-picker{position:relative}.animation-button{width:100%;justify-content:space-between;gap:7px;padding-inline:14px}.animation-button-label{font-weight:650}.animation-button-value{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.9em;opacity:.92}.popover-chevron{width:9px;height:9px;flex:0 0 auto;border-right:1.7px solid currentColor;border-bottom:1.7px solid currentColor;rotate:45deg;translate:0 -2px;transition:rotate .15s ease,translate .15s ease}.popover-chevron.is-open{rotate:135deg;translate:2px 0}.animation-popover{position:absolute;z-index:2;top:50%;right:calc(100% + 16px);width:278px;translate:0 -50%;display:grid;gap:7px;padding:10px;border:1px solid var(--dock-border, rgba(255,255,255,.5));border-radius:19px;background:var(--dock-popover, rgba(36,40,96,.76));box-shadow:12px 15px 32px var(--dock-shadow, rgba(0,0,0,.25)),inset 1px 1px 1px #ffffff38;-webkit-backdrop-filter:blur(18px) saturate(112%);backdrop-filter:blur(18px) saturate(112%)}.animation-option{width:100%;min-height:62px;display:grid;grid-template-columns:minmax(0,1fr) 22px;align-items:center;gap:10px;border:1px solid var(--dock-inner-border, rgba(255,255,255,.46));border-radius:13px;padding:9px 10px;background:color-mix(in srgb,var(--ui-bg, #f1e5f6) 88%,var(--ui-ink, #58658f) 12%);box-shadow:3px 4px 9px #373b621f,inset 1px 1px 1px #ffffff57;color:var(--ui-ink, #6170a8);text-align:left;cursor:pointer;transition:transform .1s ease,background-color .12s ease,color .12s ease}.animation-option:hover{transform:translate(-2px)}.animation-option:focus-visible{outline:2px solid #7181c8;outline-offset:2px}.animation-option.is-selected{border-color:#ffffff6b;background:#7181c8;color:#fff;box-shadow:5px 6px 13px #4a549147,inset 1px 1px 1px #ffffff47}.animation-option-copy{min-width:0;display:grid;gap:3px}.animation-option-copy strong{font-size:14px;font-weight:650}.animation-option-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;opacity:.72}.animation-check{font-size:17px;font-weight:700;text-align:center}.color-picker{position:relative}.color-dot{width:19px;height:19px;flex:0 0 auto;border:2px solid rgba(255,255,255,.85);border-radius:50%;box-shadow:0 1px 4px #4b50873d}.color-popover{position:absolute;top:50%;right:calc(100% + 16px);width:276px;translate:0 -50%;padding:16px;border:1px solid var(--dock-border, rgba(255,255,255,.5));border-radius:19px;background:var(--dock-popover, rgba(36,40,96,.76));box-shadow:12px 15px 32px var(--dock-shadow, rgba(0,0,0,.25)),inset 1px 1px 1px #ffffff38;-webkit-backdrop-filter:blur(18px) saturate(112%);backdrop-filter:blur(18px) saturate(112%)}.sv-plane{position:relative;width:100%;aspect-ratio:1.65;overflow:hidden;border-radius:12px;background-image:linear-gradient(to bottom,transparent,#000),linear-gradient(to right,#fff,transparent);box-shadow:inset 2px 2px 7px #4549783d;cursor:crosshair;touch-action:none}.sv-cursor{position:absolute;width:15px;height:15px;translate:-50% -50%;border:2px solid white;border-radius:50%;box-shadow:0 0 0 1px #292d4e8c,0 1px 5px #00000047;pointer-events:none}.hue-range{width:100%;height:17px;margin:13px 0 9px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:999px;background:linear-gradient(to right,#f44,#ff4,#4f4,#4ff,#44f,#f4f,#f44);cursor:pointer}.hue-range::-webkit-slider-thumb{width:17px;height:17px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:2px solid white;border-radius:50%;background:transparent;box-shadow:0 1px 5px #2d305566}.hue-range::-moz-range-thumb{width:15px;height:15px;border:2px solid white;border-radius:50%;background:transparent;box-shadow:0 1px 5px #2d305566}.rgb-row{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.rgb-row label{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:4px;color:#808ab4;font-size:10px}.rgb-row input{width:100%;min-width:0;border:0;border-radius:8px;padding:7px 3px;background:#e9e3f1;box-shadow:inset 3px 3px 7px #6d74a929,inset -3px -3px 7px #ffffffb3;color:#5e6895;text-align:center;outline:none}.hex-value{display:flex;align-items:center;justify-content:center;gap:9px;margin-top:11px;color:#6874a5;font-size:12px;letter-spacing:.12em}.color-preview{width:24px;height:24px;border:2px solid rgba(255,255,255,.82);border-radius:8px;box-shadow:2px 2px 6px #53598f33}.result-dock{gap:8px}.result-dock .soft-button{min-width:0;min-height:46px;padding-inline:12px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:720px){.brand{top:18px;left:20px}.artwork-brand{width:126px;height:54px}.brand h1{font-size:29px}.brand p{font-size:9px}.legal-notice{bottom:max(7px,env(safe-area-inset-bottom));width:min(78vw,520px)}.setup-dock,.action-dock,.result-dock{right:8px;width:138px;gap:7px;padding:8px;border-radius:17px}.setup-dock .soft-button,.action-dock .soft-button,.result-dock .soft-button{min-width:0;min-height:43px;padding:7px 6px;font-size:11px}.setup-dock .color-button{white-space:nowrap}.color-dot{width:15px;height:15px}.color-popover{width:min(276px,calc(100vw - 170px));right:calc(100% + 10px)}.animation-popover{width:min(258px,calc(100vw - 164px));right:calc(100% + 10px)}.animation-option{grid-template-columns:minmax(0,1fr) 18px;gap:7px;min-height:54px;padding:7px 8px}.animation-option-copy strong{font-size:12px}.animation-option-copy small{font-size:9px}}@media(max-height:520px)and (orientation:landscape){.brand{top:13px;left:18px}.brand h1{font-size:23px}.brand p{display:none}.artwork-brand{width:118px;height:42px}.legal-notice{bottom:6px;width:min(72vw,650px)}.setup-dock,.action-dock,.result-dock{right:7px;width:132px;padding:6px;gap:5px}.setup-dock .soft-button,.action-dock .soft-button,.result-dock .soft-button{min-height:34px;padding-block:4px}.color-popover,.animation-popover{right:calc(100% + 8px)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important}.main-experience{transition:opacity .8s ease-in-out,transform .8s ease-in-out,filter .8s ease-in-out!important}.intro-canvas{transition:opacity .8s ease-in-out!important}}
