:root{
  --bg:#f3f4f6; --panel:#fff; --line:#d9dce2; --text:#15171a; --muted:#6f747d;
  --accent:#e5484d; --accent-soft:#fff0f0; --dark:#202327; --stage:#2b2e33; --stage2:#3a3e44;
  --good:#17864a; --warn:#b66a00; --shadow:0 8px 24px rgba(20,22,26,.08);
}
*{box-sizing:border-box} body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;background:var(--bg);color:var(--text)} button,input,select{font:inherit} button{cursor:pointer}
.app-header{height:72px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 22px;position:sticky;top:0;z-index:40}
.brand{display:flex;gap:12px;align-items:center}.brand-mark{width:38px;height:38px;border-radius:12px;background:#111;color:#fff;display:grid;place-items:center;font-size:24px;font-weight:800;transform:rotate(-10deg)}.brand-name{font-weight:800;font-size:19px}.brand-sub{font-size:12px;color:var(--muted);margin-top:2px}.header-actions{display:flex;gap:8px;align-items:center}
button{border:1px solid transparent;border-radius:10px;padding:9px 13px;background:#fff;color:var(--text)}button.ghost{border-color:var(--line);background:#fff}button.primary{background:var(--accent);color:#fff;font-weight:700}button.text-button{border:0;background:transparent;color:var(--accent);font-weight:700}.icon-button{width:38px;height:38px;padding:0;display:grid;place-items:center;border:1px solid var(--line);background:#fff;font-size:22px}.small-button{padding:6px 9px;border:1px solid var(--line);font-size:12px;background:#fff;border-radius:8px}.back-link{border:0;background:transparent;padding:0;color:#555;font-weight:700}
.screen{display:none}.screen.active{display:block}.hero{max-width:760px;margin:54px auto 30px;text-align:center;padding:0 20px}.eyebrow,.kicker{text-transform:uppercase;letter-spacing:.09em;font-size:11px;font-weight:800;color:var(--accent)}.hero h1{font-size:42px;line-height:1.05;margin:8px 0 14px}.lede{color:var(--muted);font-size:18px;line-height:1.55;margin:0 auto;max-width:690px}
.template-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;max-width:1160px;margin:0 auto;padding:0 24px}.template-card{text-align:left;padding:0;overflow:hidden;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow);border-radius:18px;min-height:430px;transition:.15s transform,.15s border-color}.template-card:hover{transform:translateY(-3px);border-color:#b8bcc5}.template-card.featured{border-color:#ef9a9d}.template-copy{padding:20px 22px 24px}.template-copy h2{margin:8px 0 10px;font-size:24px}.template-copy p{margin:0;color:var(--muted);line-height:1.55}.tag{font-size:11px;text-transform:uppercase;letter-spacing:.08em;font-weight:800;color:var(--accent)}.template-visual{height:225px;background:#272a2f;position:relative;overflow:hidden}.mini-frame{position:absolute;width:150px;height:180px;left:50%;top:50%;transform:translate(-50%,-50%);border:8px solid #30221e;box-shadow:0 18px 45px rgba(0,0,0,.3);background:#d7b58d;overflow:hidden}.mini-art{position:absolute;inset:0;background:radial-gradient(circle at 48% 38%,#e9d7be 0 8%,transparent 9%),linear-gradient(145deg,#ae5c3c 0 24%,#e0be86 25% 48%,#46615e 49% 69%,#17191c 70%)}.mini-motion{position:absolute;width:66px;height:66px;border-radius:50%;left:40px;top:52px;border:4px solid rgba(255,255,255,.75);animation:pulse 2s infinite}.mini-fog{position:absolute;inset:40% -30% -10%;background:radial-gradient(ellipse at 30% 50%,rgba(255,255,255,.75),transparent 52%),radial-gradient(ellipse at 70% 40%,rgba(255,255,255,.62),transparent 55%);filter:blur(8px);animation:fogmove 6s linear infinite}.stack-card{position:absolute;width:135px;height:165px;border:2px solid rgba(255,255,255,.8);left:50%;top:50%;background:linear-gradient(145deg,#c17d57,#413a4b)}.stack-card.back{transform:translate(-30%,-58%) perspective(400px) rotateY(-25deg);opacity:.55}.stack-card.mid{transform:translate(-50%,-50%) perspective(400px) rotateY(-25deg);opacity:.75}.stack-card.front{transform:translate(-70%,-42%) perspective(400px) rotateY(-25deg)}.home-footer{text-align:center;padding:28px 20px 60px}
@keyframes pulse{0%,100%{transform:scale(.85);opacity:.4}50%{transform:scale(1.15);opacity:1}}@keyframes fogmove{0%{transform:translateX(-12%)}50%{transform:translateX(12%)}100%{transform:translateX(-12%)}}
.wizard-shell{max-width:820px;margin:36px auto;padding:0 20px}.wizard-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.steps{display:flex;gap:8px}.step-dot{width:9px;height:9px;border-radius:50%;background:#cfd2d8}.step-dot.active{background:var(--accent)}.wizard-card{background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);padding:28px}.wizard-card h1{margin:0 0 10px;font-size:30px}.wizard-card p{color:var(--muted);line-height:1.55}.dropzone{border:2px dashed #c7cad0;border-radius:15px;padding:30px;text-align:center;background:#fafafa;margin:20px 0}.dropzone strong{display:block;font-size:17px;margin-bottom:6px}.dropzone .sub{font-size:13px;color:var(--muted)}.wizard-actions{display:flex;justify-content:space-between;gap:10px;margin-top:24px}.file-health-card{border:1px solid #dce1e6;border-radius:12px;padding:14px 16px;margin-top:14px;background:#f8faf9}.health-good{color:var(--good);font-weight:800}.health-warn{color:var(--warn);font-weight:800}.effect-options{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin:22px 0}.effect-choice{border:1px solid var(--line);border-radius:12px;padding:15px 8px;text-align:center;background:#fff}.effect-choice.selected{border-color:var(--accent);background:var(--accent-soft)}.effect-icon{font-size:28px;display:block;margin-bottom:7px}
.builder-screen.active{display:flex;flex-direction:column;min-height:calc(100vh - 72px)}.builder-toolbar{height:54px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:14px;padding:0 18px}.project-name-wrap{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted)}.project-name-wrap input{border:1px solid var(--line);border-radius:8px;padding:7px 9px;min-width:240px;color:var(--text);font-weight:700}.toolbar-spacer{flex:1}.status-pill{font-size:12px;color:#52575f;background:#f4f5f7;border:1px solid var(--line);padding:6px 10px;border-radius:999px}.status-dot{display:inline-block;width:7px;height:7px;background:#c18300;border-radius:50%;margin-right:6px}
.builder-grid{display:grid;grid-template-columns:230px minmax(360px,1.2fr) minmax(320px,.9fr) 280px;gap:10px;padding:10px;min-height:calc(100vh - 136px)}.panel{background:#fff;border:1px solid var(--line);border-radius:13px;min-width:0;position:relative;overflow:hidden}.panel-heading{padding:15px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:10px}.panel-heading.compact{padding:12px 14px}.panel-heading h2{margin:2px 0 0;font-size:16px}.view-actions{display:flex;gap:6px}.layers-panel{overflow:visible}.add-menu{position:absolute;z-index:60;top:58px;right:10px;width:180px;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow);border-radius:11px;padding:6px}.add-menu.hidden{display:none}.add-menu button{display:block;width:100%;text-align:left;padding:8px;border:0;background:#fff;border-radius:7px}.add-menu button:hover{background:#f3f4f6}.menu-label{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);padding:8px 8px 3px;font-weight:800}.layer-list{padding:8px}.layer-row{display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:8px;align-items:center;border:1px solid transparent;border-radius:10px;padding:7px;cursor:pointer;margin-bottom:5px}.layer-row:hover{background:#f6f7f8}.layer-row.selected{border-color:#f09b9e;background:var(--accent-soft)}.layer-thumb{width:42px;height:42px;border-radius:7px;background:#31343a;overflow:hidden;display:grid;place-items:center;color:#fff;font-size:10px;position:relative}.layer-thumb img,.layer-thumb video{width:100%;height:100%;object-fit:cover}.layer-name{font-size:13px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layer-meta{font-size:10px;color:var(--muted);margin-top:2px}.layer-mini-actions{display:flex;flex-direction:column;gap:2px}.layer-mini-actions button{padding:2px 4px;border:0;background:transparent;color:#777;font-size:12px}.depth-legend{position:absolute;bottom:0;left:0;right:0;background:#fafafa;border-top:1px solid var(--line);display:flex;justify-content:space-between;padding:8px 10px;font-size:9px;color:var(--muted)}.plane-zero{font-weight:800;color:#444}
.front-panel,.profile-panel{display:flex;flex-direction:column}.front-stage-wrap{flex:1;padding:14px;min-height:0;background:#23262a}.front-stage{height:100%;min-height:480px;border-radius:10px;background:radial-gradient(circle at 50% 45%,#41464d,#272a2f 65%);position:relative;overflow:hidden;display:grid;place-items:center;outline:none}.front-stage.guides{background-image:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px),radial-gradient(circle at 50% 45%,#41464d,#272a2f 65%);background-size:32px 32px,32px 32px,auto}.print-shell{width:min(74%,460px);aspect-ratio:var(--print-aspect,4/5);position:relative;box-shadow:0 24px 55px rgba(0,0,0,.42);background:#ddd;overflow:visible}.print-image{position:absolute;inset:0;background-size:cover;background-position:center;background-color:#b8aa96}.window-aperture{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:72%;height:72%;overflow:hidden;background:#0e1012;box-shadow:inset 0 0 24px rgba(0,0,0,.9);display:none;z-index:2}.print-shell.window-mode .window-aperture{display:block}.window-depth-shade{position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 40px rgba(0,0,0,.5);z-index:20}.print-frame-mask{position:absolute;inset:0;z-index:3;pointer-events:none;display:none;background:var(--print-bg);background-size:cover;background-position:center;clip-path:polygon(0 0,100% 0,100% 100%,0 100%,0 0,14% 14%,14% 86%,86% 86%,86% 14%,14% 14%)}.print-shell.window-mode .print-frame-mask{display:none}.layer-root{position:absolute;inset:0;pointer-events:none}.behind-root{z-index:1}.surface-root{z-index:4}.front-root{z-index:5}.scene-layer{position:absolute;left:50%;top:50%;width:74%;height:74%;transform-origin:center;pointer-events:auto;touch-action:none;display:flex;align-items:center;justify-content:center}.scene-layer.selected{outline:2px solid #ff7478;outline-offset:2px}.scene-layer img,.scene-layer video{width:100%;height:100%;object-fit:contain;pointer-events:none}.black-key-media{mix-blend-mode:screen}.black-key-layer{background:transparent}.placeholder-media{width:100%;height:100%;display:grid;place-items:center;background:linear-gradient(135deg,rgba(231,72,77,.75),rgba(39,42,47,.65));border:1px solid rgba(255,255,255,.4);color:#fff;font-weight:800;font-size:13px}.effect-visual{position:absolute;inset:0;overflow:hidden;pointer-events:none}.effect-fog{background:radial-gradient(ellipse at 25% 45%,rgba(255,255,255,.64),transparent 48%),radial-gradient(ellipse at 70% 55%,rgba(230,235,240,.55),transparent 50%);filter:blur(8px);animation:fogmove 6s ease-in-out infinite}.effect-rain{background-image:repeating-linear-gradient(105deg,transparent 0 12px,rgba(190,220,255,.55) 13px 15px,transparent 16px 28px);background-size:150% 150%;animation:rainmove .8s linear infinite}.effect-snow{background-image:radial-gradient(circle,#fff 0 2px,transparent 3px),radial-gradient(circle,#fff 0 1.5px,transparent 2.5px);background-size:28px 28px,42px 42px;background-position:0 0,14px 10px;animation:snowmove 5s linear infinite}.effect-dust{background-image:radial-gradient(circle,rgba(255,223,153,.9) 0 2px,transparent 3px),radial-gradient(circle,rgba(255,255,220,.55) 0 1px,transparent 2px);background-size:38px 38px,54px 54px;animation:dustmove 8s linear infinite}@keyframes rainmove{to{background-position:-70px 150px}}@keyframes snowmove{to{background-position:30px 100px,50px 120px}}@keyframes dustmove{50%{transform:translate(6px,-8px);opacity:.7}}.stage-label{position:absolute;font-size:9px;text-transform:uppercase;letter-spacing:.09em;color:rgba(255,255,255,.42);bottom:10px}.behind-label{left:12px}.front-label{right:12px}.front-help,.profile-help{padding:9px 13px;font-size:11px;color:var(--muted);border-top:1px solid var(--line)}
.profile-stage{flex:1;min-height:480px;position:relative;overflow:hidden;background:linear-gradient(#34383e 0 55%,#2a2d31 56%);perspective:900px}.profile-ground{position:absolute;left:-20%;right:-20%;bottom:-7%;height:48%;background-image:linear-gradient(rgba(255,255,255,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.08) 1px,transparent 1px);background-size:34px 34px;transform:perspective(420px) rotateX(64deg);transform-origin:50% 100%}.profile-world{position:absolute;width:200px;height:260px;left:50%;top:47%;transform-style:preserve-3d;transform:translate(-50%,-50%) rotateX(-7deg) rotateY(-45deg);transition:transform .25s}.profile-plane{position:absolute;left:50%;top:50%;width:128px;height:160px;margin-left:-64px;margin-top:-80px;border:1px solid rgba(255,255,255,.66);background:rgba(255,255,255,.1);transform-style:preserve-3d;box-shadow:0 8px 18px rgba(0,0,0,.18);touch-action:none;cursor:ew-resize;overflow:hidden}.profile-plane.selected{outline:3px solid #ff666b;outline-offset:2px}.profile-plane.print-plane{border:4px solid #f6f6f6;box-shadow:0 0 0 1px #111,0 14px 28px rgba(0,0,0,.4)}.profile-plane img,.profile-plane video{width:100%;height:100%;object-fit:contain;pointer-events:none}.profile-plane.black-key-plane{background:transparent}.profile-plane.black-key-plane video{mix-blend-mode:screen}.profile-plane .placeholder-media{font-size:10px}.profile-effect{position:absolute;inset:0}.profile-plane.effect-volume{border-style:dashed;background:rgba(210,220,230,.13);box-shadow:0 0 25px rgba(230,240,255,.18)}.profile-axis{position:absolute;bottom:12px;left:15px;right:15px;color:rgba(255,255,255,.55);display:flex;justify-content:space-between;font-size:9px;text-transform:uppercase;letter-spacing:.08em}.profile-axis b{color:#fff;font-size:9px}.segmented{display:flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}.segmented button{border:0;border-radius:0;padding:5px 7px;font-size:10px;background:#fff}.segmented button.active{background:#24272b;color:#fff}
.inspector-content{padding:14px;overflow:auto;max-height:calc(100vh - 215px)}.control-group{margin-bottom:16px}.control-group h3{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0 0 9px}.control-row{display:grid;grid-template-columns:48px 1fr 62px;gap:7px;align-items:center;margin:8px 0}.control-row label{font-size:12px;color:#555}.control-row input[type=range]{width:100%}.control-row input[type=number],.control-row select{width:100%;border:1px solid var(--line);border-radius:7px;padding:5px 6px;font-size:12px}.toggle-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:9px 0;font-size:12px}.toggle{appearance:none;width:38px;height:22px;background:#ccc;border-radius:999px;position:relative;transition:.15s}.toggle:checked{background:var(--accent)}.toggle:after{content:"";position:absolute;width:16px;height:16px;border-radius:50%;background:#fff;top:3px;left:3px;transition:.15s}.toggle:checked:after{left:19px}.inspector-note{font-size:11px;line-height:1.45;color:var(--muted);background:#f5f6f7;border-radius:9px;padding:10px}.danger-button{border:1px solid #efb7b9;background:#fff7f7;color:#a6282c;width:100%}.media-button{width:100%;border:1px dashed #bfc3ca;background:#fafafa;margin-top:6px}.mode-cards{display:grid;grid-template-columns:1fr 1fr;gap:7px}.fit-cards{display:grid;grid-template-columns:1fr;gap:7px;margin-bottom:10px}.black-key-row{padding:8px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.black-key-row small{color:var(--muted);font-weight:400}.mode-card{border:1px solid var(--line);background:#fff;padding:9px;text-align:left;font-size:11px}.mode-card.active{border-color:var(--accent);background:var(--accent-soft)}
.modal-backdrop{position:fixed;inset:0;background:rgba(12,14,17,.55);z-index:100;display:grid;place-items:center;padding:20px}.modal-backdrop.hidden{display:none}.modal{width:min(640px,96vw);max-height:82vh;overflow:auto;background:#fff;border-radius:16px;box-shadow:0 20px 60px rgba(0,0,0,.3)}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:16px 18px;border-bottom:1px solid var(--line)}.modal-head h2{margin:0;font-size:20px}.modal-body{padding:18px}.health-list{display:grid;gap:9px}.health-item{border:1px solid var(--line);border-radius:10px;padding:11px 12px}.health-item strong{display:block;margin-bottom:3px}.health-item span{font-size:12px;color:var(--muted)}.mock-url{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:#f3f4f6;border-radius:8px;padding:10px;word-break:break-all}
@media(max-width:1180px){.builder-grid{grid-template-columns:210px minmax(360px,1fr) minmax(300px,.8fr)}.inspector-panel{grid-column:2/4}.inspector-content{max-height:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.control-group{margin:0}.template-grid{grid-template-columns:1fr;max-width:760px}.template-card{min-height:0;display:grid;grid-template-columns:250px 1fr}.template-visual{height:100%;min-height:220px}}
@media(max-width:820px){.app-header{height:auto;align-items:flex-start;padding:12px;gap:10px}.header-actions{flex-wrap:wrap;justify-content:flex-end}.brand-sub{display:none}.builder-grid{grid-template-columns:1fr}.layers-panel,.front-panel,.profile-panel,.inspector-panel{grid-column:auto}.builder-toolbar{height:auto;flex-wrap:wrap;padding:10px}.project-name-wrap input{min-width:160px}.front-stage,.profile-stage{min-height:420px}.inspector-content{display:block}.template-card{display:block}.template-visual{height:200px}.effect-options{grid-template-columns:repeat(2,1fr)}}

/* v0.1.4 — true window plane: the tracked artwork is an invisible anchor, not a smaller portal. */
.print-shell.window-mode .window-aperture{display:block;left:0;top:0;transform:none;width:100%!important;height:100%!important;background:transparent!important;box-shadow:none!important;overflow:hidden;z-index:2}
.print-shell.window-mode .behind-root{overflow:hidden}
.print-shell.window-mode .print-image{pointer-events:none}
.profile-plane.window-print-plane{background:rgba(255,255,255,.025);border:3px dashed rgba(255,255,255,.85);box-shadow:0 0 0 1px rgba(0,0,0,.65),0 10px 24px rgba(0,0,0,.28)}
.profile-plane.window-print-plane img{opacity:.14}
.profile-plane.selected{z-index:50}
