:root{color-scheme:light;--cream: #f8efd9;--paper: #fffaf0;--ink: #3f3024;--muted: #7a6754;--line: #e7d4b0;--mint: #cde7d0;--sage: #6e9f78;--lilac: #d8caef;--peach: #f4b99d;--sky: #cde7f2;--gold: #e9b94f;--shadow: 0 18px 45px rgba(67, 48, 30, .16);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:radial-gradient(circle at 15% 10%,rgba(205,231,208,.82),transparent 24rem),radial-gradient(circle at 92% 8%,rgba(205,231,242,.9),transparent 22rem),linear-gradient(180deg,var(--cream),#fff6e8 74%,#f3eadf)}button,input{font:inherit}button{min-height:2.8rem;display:inline-flex;align-items:center;justify-content:center;gap:.45rem;border:1px solid rgba(63,48,36,.13);border-radius:8px;color:var(--ink);background:#ffffffb8;cursor:pointer;font-weight:800;transition:transform .14s ease,box-shadow .14s ease,background .14s ease}button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 10px 24px #3f30241f}button:disabled{cursor:not-allowed;opacity:.46}.app-shell{min-height:100vh;display:grid;grid-template-columns:minmax(18rem,24rem) minmax(0,1fr);gap:clamp(1rem,3vw,2rem);padding:clamp(.85rem,2vw,1.4rem)}.app-shell.app-shell-full{grid-template-columns:1fr;gap:0;padding:0}.tool-panel{align-self:start;display:grid;gap:1rem;padding:1rem;border:1px solid rgba(63,48,36,.12);border-radius:8px;background:#fffaf0d1;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.title-block{display:flex;gap:.8rem;align-items:center}.mark{width:3rem;aspect-ratio:1;display:grid;place-items:center;border-radius:8px;background:linear-gradient(135deg,var(--mint),#fff1be);color:#52785a}h1{margin:0;font-size:clamp(1.55rem,4vw,2rem);line-height:1;letter-spacing:0}p{margin:.34rem 0 0;color:var(--muted);font-size:.92rem;font-weight:650}.control-group{display:grid;gap:.7rem}.drop-control{min-height:7.6rem;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.85rem;padding:.9rem;border:1px dashed rgba(63,48,36,.22);border-radius:8px;background:#ffffff8c;cursor:pointer;transition:background .14s ease,border-color .14s ease,box-shadow .14s ease,transform .14s ease}.drop-control:hover,.is-dragging .drop-control{transform:translateY(-1px);border-color:#5984608c;background:#ecf8e5c7;box-shadow:0 12px 28px #3f30241c}.drop-control.has-source{border-style:solid;background:#ffffffad}.drop-control input{position:absolute;inline-size:1px;block-size:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.drop-control span:last-child{min-width:0;display:grid;gap:.25rem}.drop-control strong,.drop-control small{overflow-wrap:anywhere}.drop-control strong{color:var(--ink);font-weight:900}.drop-control small{color:var(--muted);font-size:.84rem;font-weight:760}.drop-icon{width:3rem;aspect-ratio:1;display:flex;align-items:center;justify-content:center;border-radius:8px;color:#4f7d58;background:linear-gradient(135deg,var(--mint),#fff3c4)}.action-row{display:grid;grid-template-columns:1fr;gap:.55rem}.primary-action{background:linear-gradient(135deg,var(--sage),#4f91a3);color:#fff}.meta-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem;margin:0}.meta-grid div{min-width:0;padding:.65rem;border:1px solid rgba(63,48,36,.09);border-radius:8px;background:#ffffff80}dt{color:var(--muted);font-size:.72rem;font-weight:800}dd{margin:.2rem 0 0;overflow-wrap:anywhere;font-size:.96rem;font-weight:850}.share-link{display:block;overflow-wrap:anywhere;border-radius:8px;background:#cde7d09e;color:#315f45;padding:.75rem;font-size:.86rem;font-weight:800;text-decoration:none}.preview-panel{position:relative;min-height:calc(100vh - 2.8rem);display:grid;place-items:center;overflow:hidden;border:1px solid rgba(63,48,36,.12);border-radius:8px;background:radial-gradient(circle at 50% 42%,rgba(255,249,225,.22),transparent 17rem),radial-gradient(circle at 50% 100%,rgba(110,159,120,.18),transparent 22rem),linear-gradient(135deg,#13120f,#201d1a 52%,#0c0c0d);box-shadow:var(--shadow);perspective:1000px}.app-shell.app-shell-full .preview-panel{min-height:100vh;border:0;border-radius:0}.preview-panel.is-drop-target:after{content:"";position:absolute;inset:.7rem;border:2px dashed rgba(89,132,96,.55);border-radius:8px;background:#ecf8e538;pointer-events:none}.source-preview,.empty-preview{width:min(38rem,82%);aspect-ratio:1;display:grid;place-items:center;border-radius:8px;background:#ffffff94}.source-preview img,.source-preview video{max-width:100%;max-height:100%;display:block;object-fit:contain}.empty-preview{color:var(--muted);gap:.7rem;font-weight:850}.preview-canvas{display:block;max-width:min(100%,76vw);max-height:calc(100vh - 3.8rem);width:auto;height:auto;image-rendering:auto;box-shadow:0 20px 44px #3f302433}.result-grid{width:min(100%,82rem);max-height:calc(100vh - 3.8rem);display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;gap:.9rem;padding:.9rem;overflow:auto}.result-card{min-width:0;display:grid;gap:.7rem;padding:.75rem;border:1px solid rgba(63,48,36,.12);border-radius:8px;background:#fffaf0db;box-shadow:0 14px 30px #3f30241f}.result-card header{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.result-card h2{margin:0;font-size:1rem;letter-spacing:0}.result-card p{margin-top:.18rem;font-size:.78rem}.result-canvas{display:block;width:100%;height:auto;max-height:58vh;border-radius:6px;background:#fffaf0;box-shadow:0 10px 22px #3f302424}.result-actions{display:grid;grid-template-columns:repeat(2,1fr);gap:.45rem}.installation-room{position:relative;width:min(100%,86rem);min-height:calc(100vh - 4.2rem);display:grid;grid-template-columns:minmax(8rem,13rem) minmax(0,1fr) minmax(8rem,13rem);grid-template-rows:minmax(0,1fr) 5rem;gap:clamp(.6rem,1.8vw,1.2rem);padding:clamp(.8rem,2vw,1.2rem);transform-style:preserve-3d}.gallery-wall{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:minmax(2.3rem,1fr);gap:clamp(.3rem,.7vw,.55rem);align-self:stretch;padding:clamp(.4rem,.9vw,.75rem);border-radius:8px;background:linear-gradient(180deg,#fffaeb0f,#fffaeb04),#00000061;box-shadow:inset 0 0 0 1px #fffaeb14,inset 0 0 38px #00000073}.gallery-wall-left{transform:rotateY(12deg);transform-origin:right center}.gallery-wall-right{transform:rotateY(-12deg);transform-origin:left center}.gallery-tile{position:relative;min-width:0;aspect-ratio:1;display:block;overflow:hidden;border-radius:6px;background:#fffaf014;box-shadow:0 0 0 1px #fffaeb14,0 10px 20px #0000003d,0 0 18px #ffecb314}.gallery-tile img,.gallery-tile video{width:100%;height:100%;display:block;object-fit:cover;filter:saturate(1.08) contrast(1.04)}.gallery-tile span{position:absolute;inset-inline:.2rem;bottom:.18rem;overflow:hidden;border-radius:4px;padding:.08rem .22rem;background:#0f0e0d9e;color:#fffaf0e0;font-size:.56rem;font-weight:850;text-align:center;text-transform:uppercase}.gallery-tile.is-empty{background:linear-gradient(135deg,#fffaeb11,#fffaeb04),#00000057;box-shadow:inset 0 0 0 1px #fffaeb0e,inset 0 0 18px #00000061}.gallery-tile.is-compact{min-width:4.2rem;width:4.2rem}.installation-focus{position:relative;min-width:0;display:grid;place-items:center;padding:clamp(.7rem,1.6vw,1rem);border-radius:8px;background:radial-gradient(circle at 50% 52%,rgba(255,244,210,.16),transparent 22rem),linear-gradient(180deg,#fffaeb12,#fffaeb06);box-shadow:inset 0 0 0 1px #fffaeb14,0 24px 70px #00000061}.focus-glow{position:absolute;width:min(60%,28rem);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,rgba(255,242,196,.28),transparent 68%);filter:blur(14px);pointer-events:none}.installation-source,.installation-empty{position:relative;z-index:1;width:min(34rem,92%);box-shadow:0 0 0 1px #fffaeb26,0 24px 52px #0000005c,0 0 42px #fff0be1f}.installation-empty{color:#fffaf0d1;background:#fffaf014}.drop-slot{position:relative;z-index:2;width:min(34rem,90%);min-height:min(26rem,70vh);display:grid;place-items:center;padding:clamp(1.2rem,4vw,2.4rem);border:1px dashed rgba(255,250,235,.34);border-radius:8px;color:#fffaf0eb;background:radial-gradient(circle at 50% 24%,rgba(255,240,190,.14),transparent 14rem),#fffaf012;box-shadow:inset 0 0 0 1px #fffaeb14,0 24px 52px #0000005c,0 0 42px #fff0be1f;cursor:pointer;transition:transform .16s ease,border-color .16s ease,background .16s ease,box-shadow .16s ease}.drop-slot:hover,.is-dragging .drop-slot{transform:translateY(-2px);border-color:#cde7d0b8;background:radial-gradient(circle at 50% 24%,rgba(205,231,208,.2),transparent 14rem),#fffaf01a;box-shadow:inset 0 0 0 1px #fffaeb1f,0 28px 62px #0006,0 0 54px #cde7d029}.drop-slot input{position:absolute;inline-size:1px;block-size:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.drop-slot-inner{display:grid;justify-items:center;gap:.85rem;text-align:center}.drop-slot-icon{width:4.8rem;aspect-ratio:1;display:grid;place-items:center;border-radius:8px;color:#d8f2db;background:#cde7d01f;box-shadow:inset 0 0 0 1px #cde7d029}.drop-slot strong{max-width:18rem;color:#fffaf0;font-size:clamp(1.35rem,3vw,2.2rem);line-height:1.12;letter-spacing:0}.drop-slot span:last-child{color:#fffaf0b3;font-size:1rem;font-weight:850}.installation-results{position:relative;z-index:1;width:min(100%,54rem);max-height:calc(100vh - 7rem);padding:0}.gallery-floor{grid-column:1 / -1;display:flex;gap:.45rem;align-items:center;justify-content:center;overflow:hidden;padding-inline:2rem;opacity:.74;transform:rotateX(58deg) translateY(-.4rem);transform-origin:top center}.busy-layer{position:absolute;inset:0;display:grid;place-items:center;color:var(--sage);background:#fffaf06b}.busy-layer svg{animation:spin .85s linear infinite}@keyframes spin{to{rotate:360deg}}@media(max-width:820px){.app-shell{grid-template-columns:1fr}.preview-panel{min-height:62vh}.preview-canvas{max-width:100%;max-height:70vh}.result-grid{grid-template-columns:1fr;max-height:none}.installation-room{display:grid;grid-template-columns:1fr;grid-template-rows:auto;min-height:62vh}.gallery-wall{grid-template-columns:repeat(6,minmax(0,1fr));max-height:9rem;overflow:hidden;transform:none}.gallery-floor{display:none}.installation-results{width:100%}}
