:root{--bg:#151516;--bg-grad:radial-gradient(125% 120% at 50% -8%, #26262a 0%, #141416 58%, #0e0e10 100%);--panel:#1a1a1c;--card:#232326;--card2:#9d5bff12;--hover:#9d5bff26;--line:#ffffff12;--line2:#ffffff21;--track:#35353d;--fg:#f4f4f7;--muted:#9a9aa4;--muted2:#6a6a74;--accent:#7c3aed;--accent-2:#9d5bff;--cyan:#b98cff;--accent-soft:#7c3aed2e;--accent-ring:#9d5bff61;--grad:linear-gradient(103deg,#6d28d9 0%,#9d5bff 48%,#c9a3ff 100%);--serif:Georgia,"Times New Roman",serif;--sans:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;--radius:15px;--shadow-md:0 8px 26px #00000073;--shadow-lg:0 26px 64px #0000009e;--glow:0 8px 30px #7c3aed6b;--ease:cubic-bezier(.22,.68,.2,1);--fast:.14s;--f-size:#79c9ff;--f-angle:#6f7dff;--f-who:#b07cff;--f-where:#4fd1b5;--f-optic:#ffb45c;--f-light:#ffd66b;--f-film:#ff8fa3}*{box-sizing:border-box}html,body{height:100%;margin:0;overflow:hidden}body{background:var(--bg-grad),var(--bg);color:var(--fg);font-family:var(--sans);letter-spacing:-.01em;-webkit-font-smoothing:antialiased;font-size:13px}button,input,select,textarea{letter-spacing:inherit;color:inherit;font-family:inherit}::-webkit-scrollbar{width:11px;height:11px}::-webkit-scrollbar-thumb{border:3px solid var(--panel);background:#2a2a30;border-radius:8px}::-webkit-scrollbar-thumb:hover{background:#3a3a44}::-webkit-scrollbar-track{background:0 0}.app{flex-direction:column;width:100%;height:100vh;display:flex;overflow:hidden}.intro{z-index:50;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#08080ac7;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0;overflow-y:auto}.intro[hidden]{display:none}.intro-box{background:var(--card);border:1px solid var(--line2);width:100%;max-width:470px;box-shadow:var(--shadow-lg);animation:intro-in .32s var(--ease) both;border-radius:18px;padding:28px 30px}@keyframes intro-in{0%{opacity:0;transform:translateY(12px)scale(.985)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.intro-box{animation:none}}.intro-box h2{font-family:var(--serif);letter-spacing:.1px;margin:0 0 10px;font-size:29px;font-weight:400}.intro-lead{color:var(--muted);margin:0 0 18px;font-size:13px;line-height:1.6}.intro-steps{flex-direction:column;gap:9px;margin:0 0 16px;padding-left:20px;display:flex}.intro-steps li{color:var(--muted);font-size:12.5px;line-height:1.55}.intro-steps b{color:var(--fg);font-weight:600}.intro-note{background:var(--card2);border:1px solid var(--line);color:var(--muted2);border-radius:10px;margin:0 0 20px;padding:11px 13px;font-size:11.5px;line-height:1.55}.intro .btn.full{margin-top:0}.topbar{background:linear-gradient(180deg,#1e1e2299,#101012e6),var(--panel);border-bottom:1px solid var(--line);flex:none;align-items:center;gap:16px;height:58px;padding:0 22px;display:flex;position:relative}.topbar:after{content:"";background:linear-gradient(90deg,#0000,#7c3aed99 18%,#c9a3ff99 52%,#0000);height:1.5px;position:absolute;bottom:-1px;left:0;right:0}.logo{color:var(--cyan);align-items:center;gap:9px;display:flex}.wordmark{font-family:var(--serif);letter-spacing:.1px;color:var(--fg);font-size:21px}.grad{background:var(--grad);color:#0000;-webkit-background-clip:text;background-clip:text}.spacer{flex:1}.tg-btn{background:var(--card2);border:1px solid var(--accent-ring);color:var(--cyan);white-space:nowrap;transition:all var(--fast) var(--ease);border-radius:9px;flex:none;align-items:center;gap:7px;padding:6px 13px 6px 11px;font-size:11.5px;font-weight:600;text-decoration:none;display:inline-flex}.tg-btn:hover{background:var(--hover);color:var(--fg);border-color:var(--accent-2);box-shadow:var(--glow)}.tg-btn:focus-visible{outline:2px solid var(--accent-2);outline-offset:2px}.tg-btn svg{flex:none}.tg-btn.ig{color:#ffb08c;border-color:#ff8c5a57}.tg-btn.ig:hover{border-color:#ff9a6c;box-shadow:0 8px 26px #ff8c5a4d}.author{border-top:1px solid var(--line);align-items:center;gap:11px;margin-top:18px;padding-top:16px;display:flex}.author-pic,.author-fallback{object-fit:cover;border:1px solid var(--accent-ring);background:var(--card2);border-radius:50%;flex:none;width:44px;height:44px}.author-fallback{color:var(--cyan);letter-spacing:.04em;justify-content:center;align-items:center;font-size:14px;font-weight:700;display:flex}.author-fallback[hidden]{display:none}.author-txt{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.author-txt b{color:var(--fg);font-size:12.5px;font-weight:600}.author-txt span{color:var(--muted2);font-size:10.5px;line-height:1.4}.author-links{flex:none;gap:6px;display:flex}.author-tg,.author-ig{transition:filter var(--fast) var(--ease);border-radius:8px;padding:6px 12px;font-size:11px;font-weight:600;text-decoration:none}.author-tg{background:var(--grad);color:#fff;box-shadow:var(--glow)}.author-ig{color:#1b1206;background:linear-gradient(103deg,#f0803c,#ff9a6c);box-shadow:0 8px 26px #f0803c4d}.author-tg:hover,.author-ig:hover{filter:brightness(1.1)}.author-tg:focus-visible,.author-ig:focus-visible{outline:2px solid var(--fg);outline-offset:2px}.help-btn{cursor:pointer;background:var(--card2);border:1px solid var(--line2);width:26px;height:26px;color:var(--muted);transition:all var(--fast) var(--ease);border-radius:50%;flex:none;font-size:12px;font-weight:700;line-height:1}.help-btn:hover{color:var(--fg);border-color:var(--accent-2);background:var(--hover)}.help-btn:focus-visible{outline:2px solid var(--accent-2);outline-offset:2px}.kbd-hint{color:var(--muted2);white-space:nowrap;font-size:11.5px}.kbd-hint b{border:1px solid var(--line2);color:var(--muted);background:#24242a;border-radius:6px;margin:0 3px;padding:2px 6px;font-size:10.5px;font-weight:600;display:inline-block}.main{flex:1;min-height:0;display:flex}.viewport{flex:1;justify-content:center;align-items:center;min-width:0;padding:22px;display:flex}.stage{flex-direction:column;justify-content:center;align-items:center;gap:14px;width:100%;height:100%;display:flex}.formula{scrollbar-width:thin;gap:7px;width:100%;max-width:100%;padding:2px 2px 6px;display:flex;overflow-x:auto}.chip{text-align:left;cursor:pointer;background:var(--card);border:1px solid var(--line);border-top:2px solid color-mix(in srgb, var(--h) 70%, transparent);min-width:104px;max-width:190px;transition:border-color var(--fast) var(--ease),background var(--fast) var(--ease),transform var(--fast) var(--ease);border-radius:11px;flex:none;padding:7px 11px 8px}.chip:hover{background:var(--card2);border-color:var(--line2);transform:translateY(-1px)}.chip:focus-visible{outline:2px solid var(--h);outline-offset:2px}.chip-label{letter-spacing:.13em;text-transform:uppercase;color:var(--h);opacity:.85;margin-bottom:3px;font-size:8.5px;font-weight:700;display:block}.chip-value{color:var(--fg);text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:1.35;display:block;overflow:hidden}.chip-value.empty{color:var(--muted2)}.chip.pulse{animation:chip-pulse .5s var(--ease)}@keyframes chip-pulse{0%{background:color-mix(in srgb, var(--h) 22%, var(--card));border-color:var(--h)}to{background:var(--card);border-color:var(--line)}}@media (prefers-reduced-motion:reduce){.chip.pulse{animation:none}.chip:hover{transform:none}}.canvas-wrap{width:100%;max-width:min(100%,calc((100vh - 212px) * var(--ar,1.7778)));aspect-ratio:var(--ar,1.7778);box-shadow:var(--shadow-lg);border:1px solid var(--line);background:#0b0b0d;border-radius:14px;position:relative;overflow:hidden}#scene{touch-action:none;width:100%;height:100%;display:block}.film-frame{pointer-events:none;position:absolute;inset:14px}.film-frame .c{border:1.5px solid #ffffff57;width:16px;height:16px;position:absolute}.film-frame .tl{border-bottom:0;border-right:0;top:0;left:0}.film-frame .tr{border-bottom:0;border-left:0;top:0;right:0}.film-frame .bl{border-top:0;border-right:0;bottom:0;left:0}.film-frame .br{border-top:0;border-left:0;bottom:0;right:0}.thirds{position:absolute;inset:0}.thirds i,.thirds u{background:#ffffff29;position:absolute}.thirds i{width:1px;top:0;bottom:0}.thirds u{height:1px;left:0;right:0}.puck-label{pointer-events:none;white-space:nowrap;border:1px solid var(--accent-ring);color:#e6e6ee;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0e0e12d1;border-radius:8px;padding:3px 9px;font-size:10.5px;font-weight:600;position:absolute;transform:translate(-50%,-50%)}.puck-label[hidden]{display:none}.vp-toggles{gap:6px;display:flex;position:absolute;top:14px;right:14px}.icon-btn{cursor:pointer;border:1px solid var(--line2);width:31px;height:31px;color:var(--muted);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:all var(--fast) var(--ease);background:#141418b8;border-radius:9px;font-size:12px;font-weight:600}.icon-btn:hover{color:var(--fg);border-color:var(--accent-ring)}.icon-btn.is-on{background:var(--grad);color:#fff;box-shadow:var(--glow);border-color:#0000}.viewmode{border:1px solid var(--line2);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#141418b8;border-radius:11px;gap:3px;padding:3px;display:flex;position:absolute;top:14px;left:50%;transform:translate(-50%)}.vm{color:var(--muted);cursor:pointer;transition:all var(--fast) var(--ease);background:0 0;border:0;border-radius:8px;padding:5px 13px;font-size:11.5px;font-weight:600}.vm:hover{color:var(--fg)}.vm.is-on{background:var(--grad);color:#fff;box-shadow:var(--glow)}.caption{white-space:nowrap;border:1px solid var(--line2);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);letter-spacing:.11em;color:#e6e6ee;background:#0e0e12c7;border-radius:9px;padding:6px 14px;font-size:10.5px;font-weight:700;position:absolute;bottom:20px;left:50%;transform:translate(-50%)}.panel{background:var(--panel);border-left:1px solid var(--line);flex-direction:column;flex:none;gap:14px;width:380px;padding:18px;display:flex;overflow-y:auto}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;position:relative}.card:after{content:"";background:linear-gradient(90deg,transparent,color-mix(in srgb, var(--c,var(--accent)) 60%, transparent),transparent);height:1.5px;position:absolute;bottom:-1px;left:16px;right:16px}.card h3{letter-spacing:.13em;text-transform:uppercase;color:var(--muted);align-items:center;gap:7px;margin:0 0 13px;font-size:10.5px;font-weight:700;display:flex}.card h3 i{background:var(--c,var(--accent-2));width:5px;height:5px;box-shadow:0 0 8px var(--c,var(--accent-2));border-radius:50%}.card:first-of-type{--c:var(--f-size)}.card:nth-of-type(2){--c:var(--f-angle)}.card:nth-of-type(3){--c:var(--f-who)}.card:nth-of-type(4){--c:var(--f-optic)}.card:nth-of-type(5){--c:var(--f-light)}.card{animation:card-in .42s var(--ease) both}.card:nth-of-type(2){animation-delay:50ms}.card:nth-of-type(3){animation-delay:.1s}.card:nth-of-type(4){animation-delay:.15s}.card:nth-of-type(5){animation-delay:.2s}@keyframes card-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.card{animation:none}}.aspects{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.ar{cursor:pointer;background:var(--card2);border:1px solid var(--line);color:var(--muted);transition:all var(--fast) var(--ease);border-radius:9px;flex-direction:column;align-items:center;gap:5px;padding:9px 4px;font-size:10.5px;font-weight:600;display:flex}.ar:hover{background:var(--hover);color:var(--fg)}.ar.is-on{background:var(--accent-soft);border-color:var(--accent-2);color:var(--fg);box-shadow:0 0 0 1px var(--accent-ring)}.ar i{opacity:.75;width:var(--w);height:var(--h);border:1.5px solid;border-radius:2px;display:block}.ar.is-on i{opacity:1}.presets{grid-template-columns:1fr 1fr;gap:8px;display:grid}.preset{cursor:pointer;background:var(--card2);border:1px solid var(--line);color:var(--muted);transition:all var(--fast) var(--ease);border-radius:10px;padding:11px 8px;font-size:12px;font-weight:600}.preset:hover{background:var(--hover);color:var(--fg)}.preset.is-on{background:var(--accent-soft);border-color:var(--accent-2);color:var(--fg);box-shadow:0 0 0 1px var(--accent-ring),var(--glow)}.row{color:var(--muted);justify-content:space-between;align-items:center;margin-bottom:8px;font-size:11.5px;display:flex}.row.sub{color:var(--muted2);margin:6px 0;font-size:11px}.lens-note{background:var(--card2);border:1px solid var(--line);color:var(--muted);border-radius:8px;margin:0 0 14px;padding:8px 10px;font-size:10.5px;line-height:1.45}.row output{color:var(--fg);font-variant-numeric:tabular-nums;font-weight:600}input[type=range]{appearance:none;background:var(--track);cursor:pointer;border-radius:3px;outline:none;width:100%;height:4px;margin:0 0 6px}input[type=range]::-webkit-slider-thumb{appearance:none;border:3px solid var(--accent-2);cursor:pointer;width:15px;height:15px;box-shadow:var(--shadow-md);background:#fff;border-radius:50%}input[type=range]::-moz-range-thumb{border:3px solid var(--accent-2);cursor:pointer;width:15px;height:15px;box-shadow:var(--shadow-md);background:#fff;border-radius:50%}.btn,.preset,.seg,.vm,.icon-btn,.chip,.add-subject{position:relative;overflow:hidden}.ripple{pointer-events:none;animation:ripple .55s var(--ease) forwards;background:radial-gradient(circle,#c9a3ff8c 0%,#9d5bff00 70%);border-radius:50%;position:absolute;transform:translate(-50%,-50%)scale(0)}@keyframes ripple{to{opacity:0;transform:translate(-50%,-50%)scale(1)}}.btn.primary{isolation:isolate}.btn.primary:after{content:"";border-radius:inherit;z-index:-1;background:conic-gradient(from var(--spin,0deg),transparent 0deg,#c9a3ff 40deg,#fff 60deg,#c9a3ff 80deg,transparent 130deg,transparent 360deg);-webkit-mask-composite:xor;opacity:0;transition:opacity .2s var(--ease);padding:1px;position:absolute;inset:-1px;-webkit-mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);-webkit-mask-position:0 0,0 0;mask-position:0 0,0 0;-webkit-mask-size:auto,auto;mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.btn.primary.running:after{opacity:1;animation:1s linear spin}@property --spin{syntax:"<angle>";inherits:false;initial-value:0deg}@keyframes spin{to{--spin:360deg}}@media (prefers-reduced-motion:reduce){.ripple{animation:none;display:none}.btn.primary.running:after{opacity:0;animation:none}}.btn{cursor:pointer;border:1px solid var(--line2);background:var(--card2);width:100%;color:var(--muted);transition:all var(--fast) var(--ease);border-radius:10px;padding:11px;font-size:12px;font-weight:600}.btn:hover{background:var(--hover);color:var(--fg);border-color:var(--accent-ring)}.btn+.btn{margin-top:8px}.btn.primary{background:var(--grad);color:#fff;box-shadow:var(--glow);border-color:#0000;padding:13px;font-size:13px}.btn.primary:hover{filter:brightness(1.08)}.btn.full{margin-top:14px}.subject{background:var(--card2);border:1px solid var(--line);border-radius:11px;margin-bottom:9px;padding:12px 13px}.subject .title{color:var(--fg);justify-content:space-between;align-items:center;margin-bottom:10px;font-size:11.5px;font-weight:700;display:flex}.subject .title .acts{align-items:center;gap:4px;display:flex}.subject .title button{color:var(--muted2);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:2px 4px;font-size:15px;line-height:1}.subject .title button[data-remove]:hover{color:#ff7b7b}.subject .title button[data-lock]{border:1px solid var(--line2);transition:all var(--fast) var(--ease);padding:3px 8px;font-size:11px;font-weight:700}.subject .title button[data-lock]:hover{color:var(--fg);border-color:var(--accent-ring)}.subject .title button[data-lock].is-on{background:var(--accent-soft);border-color:var(--accent-2);color:var(--fg)}.add-subject{cursor:pointer;border:1px dashed var(--line2);width:100%;color:var(--muted);transition:all var(--fast) var(--ease);background:0 0;border-radius:10px;padding:12px;font-size:12px;font-weight:600}.add-subject:hover{border-color:var(--accent-2);color:var(--fg);background:var(--card2)}.segmented{border:1px solid var(--line);background:#1b1b1f;border-radius:11px;gap:4px;margin-bottom:13px;padding:4px;display:flex}.segmented.lang{margin-top:13px}.seg{color:var(--muted);cursor:pointer;transition:all var(--fast) var(--ease);background:0 0;border:0;border-radius:8px;flex:1;padding:9px;font-size:11.5px;font-weight:600}.seg:hover{color:var(--fg)}.seg.is-on{background:var(--grad);color:#fff;box-shadow:var(--glow)}.field{margin-bottom:11px}.field label{color:var(--muted);margin-bottom:6px;font-size:11px;display:block}.field input[type=text],.field select{border:1px solid var(--line2);width:100%;transition:border-color var(--fast) var(--ease);background:#1b1b1f;border-radius:9px;outline:none;padding:10px 11px;font-size:12px}.field input[type=text]:focus,.field select:focus{border-color:var(--accent-2);box-shadow:0 0 0 3px var(--accent-soft)}.field select{cursor:pointer;appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 15px),calc(100% - 10px);background-repeat:no-repeat;background-size:5px 5px,5px 5px}.hint-line{color:var(--muted2);margin:6px 0 0;font-size:10.5px;line-height:1.45}.hint-line:empty{display:none}.warn-note{color:#ffc98a;background:#ffb05a17;border:1px solid #ffb05a52;border-radius:8px;margin:0 0 12px;padding:8px 10px;font-size:10.5px;line-height:1.45}.warn-note[hidden]{display:none}.check-row{color:var(--muted);cursor:pointer;align-items:flex-start;gap:8px;padding:3px 0;font-size:11.5px;display:flex}.check-row input{accent-color:var(--accent-2);cursor:pointer;flex:none;width:14px;height:14px;margin-top:1px}.check-row:hover span{color:var(--fg)}.check-row em{color:var(--muted2);font-style:normal}.check-row[hidden]{display:none}.realism{margin-top:13px}.realism-title{letter-spacing:.1em;text-transform:uppercase;color:var(--muted2);margin-bottom:7px;font-size:10.5px;font-weight:700;display:block}.sheet-checks{flex-direction:column;gap:8px;margin-bottom:13px;display:flex}.sheet-checks label{color:var(--muted);cursor:pointer;align-items:center;gap:8px;font-size:11.5px;display:flex}.sheet-checks input{accent-color:var(--accent-2);cursor:pointer;width:14px;height:14px}.sheet-checks label:hover span{color:var(--fg)}.site-foot{color:var(--muted2);flex-direction:column;align-items:flex-start;gap:6px;padding:4px 4px 18px;font-size:10.5px;line-height:1.5;display:flex}.site-foot button{cursor:pointer;color:var(--cyan);text-underline-offset:2px;background:0 0;border:0;padding:0;font-size:10.5px;text-decoration:underline}.site-foot button:hover{color:var(--fg)}.site-foot button:focus-visible{outline:2px solid var(--accent-2);outline-offset:2px;border-radius:3px}.intro-box h4{letter-spacing:.11em;text-transform:uppercase;color:var(--cyan);margin:16px 0 6px;font-size:10.5px;font-weight:700}.intro-box h4:first-of-type{margin-top:10px}.intro-box p{color:var(--muted);margin:0;font-size:11.5px;line-height:1.6}.intro-box ul{flex-direction:column;gap:4px;margin:0;padding-left:18px;display:flex}.intro-box ul li{color:var(--muted);font-size:11.5px;line-height:1.55}.intro-box b{color:var(--fg)}#legal .intro-box .btn{margin-top:22px}.result{margin-top:14px}#prompt-out{resize:vertical;border:1px solid var(--line2);color:#dcdce6;background:#141418;border-radius:10px;outline:none;width:100%;padding:12px;font-size:11.5px;line-height:1.55}.result-actions{align-items:center;gap:10px;margin-top:9px;display:flex}.result-actions .btn{width:auto;margin:0;padding:9px 16px}.hint{color:var(--cyan);font-size:11px}.note{color:var(--muted2);margin:11px 0 0;font-size:10.5px;line-height:1.5}.lang-note{margin:-4px 0 0}@media (width<=1080px){html,body{overflow:auto}.app{height:auto}.main{flex-direction:column}.viewport{padding:14px}.canvas-wrap{max-width:100%}.panel{border-left:0;border-top:1px solid var(--line);width:100%}.topbar{flex-wrap:wrap;gap:6px 10px;height:auto;min-height:58px;padding:8px 14px}.logo{order:1}.spacer{flex:1;order:2;display:block}.tg-btn{order:3;padding:6px 9px}.tg-btn .btn-txt{display:none}.help-btn{order:4}.kbd-hint{white-space:normal;flex-basis:100%;order:5;font-size:11px;line-height:1.5}.wordmark{font-size:18px}.author{flex-wrap:wrap}.author-links{width:100%}.author-links a{text-align:center;flex:1}.caption{white-space:normal;text-align:center;letter-spacing:.06em;max-width:calc(100% - 28px);padding:5px 10px;font-size:9px;bottom:12px}.viewmode .vm{padding:5px 10px;font-size:11px}}
