/* DREAM ROOM: scoped, lightweight objects layered over the existing VIB3 app. */
body.room-mode .main>.hero,body.room-mode .main>.section-head,body.room-mode .main>.surface{display:none}
body.room-mode #addWidget,body.room-mode .topbar-actions>.search{display:none}
body.room-mode .main .topbar{margin-bottom:12px}
.dream-page{display:none}
body.room-mode .dream-page{display:block}
.dream-intro{display:flex;align-items:start;justify-content:space-between;gap:18px;padding:17px 6px 18px}
.dream-intro h2{font-size:clamp(30px,4vw,52px);letter-spacing:-.06em;margin:4px 0 10px;font-weight:850}
.dream-intro h2 span{color:var(--pink);font-size:.68em}
.dream-intro p{color:var(--muted);line-height:1.6;max-width:720px;margin:0}
.dream-free-stamp{flex:none;padding:10px 13px;border:1px solid color-mix(in srgb,var(--cyan) 50%,transparent);background:#151d32;border-radius:100px;font-size:10px;font-weight:850;letter-spacing:.1em;color:var(--cyan)}
.room-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:16px}
.room-tools>.tool-btn,.room-tools>.ghost-btn{min-height:42px;padding:10px 13px}
.room-theme-label{display:flex;gap:7px;align-items:center;color:var(--muted);font-size:12px;font-weight:750}
.room-theme-label select{max-width:160px;padding:10px;color:#fff;background:#151a32;border:1px solid #555976;border-radius:11px}
.room-scene{--room-wall:#1e1a42;--room-base:#12102c;--room-light:rgba(116,231,255,.27);--room-accent:#dbabec;position:relative;overflow:hidden;isolation:isolate;width:100%;height:clamp(480px,61vw,735px);border:1px solid rgba(211,227,255,.3);border-radius:28px;background:var(--room-base);box-shadow:0 20px 65px rgba(0,0,0,.32),inset 0 1px rgba(255,255,255,.21);touch-action:pan-y}
.room-scene[data-atmosphere="midnight"]{--room-wall:#0c1731;--room-base:#070d22;--room-light:rgba(89,139,220,.19);--room-accent:#8ab4ed}
.room-scene[data-atmosphere="blush"]{--room-wall:#52324d;--room-base:#2c1934;--room-light:rgba(255,181,163,.29);--room-accent:#ffd5cc}
.room-scene[data-atmosphere="ice"]{--room-wall:#3b4d64;--room-base:#142335;--room-light:rgba(215,243,255,.38);--room-accent:#e8f7ff}
.room-back-wall{position:absolute;inset:0 0 26%;background:linear-gradient(120deg,rgba(255,255,255,.095),transparent 28%,rgba(255,255,255,.018) 72%,rgba(0,0,0,.15)),radial-gradient(ellipse at 40% 13%,var(--room-light),transparent 58%),linear-gradient(165deg,var(--room-wall),var(--room-base));border-bottom:6px solid rgba(255,255,255,.09)}
.room-back-wall:after{content:"";position:absolute;inset:0;border-left:12px solid rgba(0,0,0,.12);border-right:12px solid rgba(0,0,0,.10);box-shadow:inset 0 0 85px rgba(0,0,0,.20);pointer-events:none}
.room-floor{position:absolute;inset:74% -12% -22%;transform:perspective(560px) rotateX(48deg) scale(1.12);transform-origin:50% 0;background:repeating-linear-gradient(90deg,transparent 0 110px,rgba(255,255,255,.055) 111px 112px),linear-gradient(180deg,rgba(255,255,255,.085),transparent 52%),linear-gradient(155deg,var(--room-wall),var(--room-base));box-shadow:inset 0 26px 20px #0002}
.room-floor-edge{position:absolute;inset:74% 0 auto;height:3px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.17),transparent)}
.room-side-light{position:absolute;width:45%;height:80%;top:-15%;right:-8%;background:radial-gradient(circle, var(--room-light),transparent 69%);pointer-events:none;filter:blur(35px)}
.room-items{position:absolute;inset:0;z-index:2}
.room-empty{position:absolute;z-index:1;inset:18% 12% 24%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;text-align:center;color:#ddd9eb;pointer-events:none}
.room-empty[hidden]{display:none!important}
.room-empty strong{font-size:clamp(16px,3vw,25px)}
.room-empty span:last-child{font-size:13px;line-height:1.55}
.room-empty-diamond{font-size:64px;color:var(--room-accent);line-height:1}
.room-prop{position:absolute;width:118px;height:136px;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:3px;transform:translate(-50%,-50%);touch-action:none;cursor:grab;user-select:none;-webkit-user-select:none;outline-offset:5px;z-index:2}
.room-prop:focus-visible{outline:2px solid var(--cyan);border-radius:15px}
.room-prop.dragging{cursor:grabbing;z-index:999!important}
.room-art{position:relative;display:flex;align-items:center;justify-content:center;filter:drop-shadow(0 12px 8px rgba(0,0,0,.38));transition:filter .2s,transform .2s;pointer-events:none}
.room-prop:not(.dragging):hover .room-art{transform:translateY(-4px);filter:drop-shadow(0 16px 10px rgba(0,0,0,.42))}
.room-object-label{font-size:11px;font-weight:750;letter-spacing:.03em;color:#fff;white-space:nowrap;max-width:132px;text-overflow:ellipsis;overflow:hidden;text-shadow:0 2px 5px #000e;padding:5px 8px;background:rgba(6,10,25,.58);border-radius:10px;pointer-events:none}
.room-prop .room-edit,.room-prop .room-remove{pointer-events:auto;position:absolute;top:-11px;background:#161b31;border:1px solid #8285ac;color:white;width:29px;height:29px;border-radius:50%;display:grid;place-items:center;font-size:15px;z-index:4;cursor:pointer}
.room-prop .room-edit{right:9px}.room-prop .room-remove{left:9px}
.room-art.envelope{height:87px;width:113px}
.room-envelope{width:100px;height:65px;position:relative;display:block;perspective:300px;background:linear-gradient(160deg,#fff5ed,#e4bfd8 78%);border-radius:4px 4px 9px 9px;box-shadow:0 7px 1px rgba(0,0,0,.16),inset 0 -2px 7px rgba(104,63,121,.18)}
.room-envelope:before{content:"";position:absolute;inset:0;clip-path:polygon(0 0,50% 55%,100% 0);background:linear-gradient(120deg,#fae3ed,#b9a1d3);z-index:2;transform-origin:50% 0;transition:transform .35s}
.room-envelope:after{content:"◆";position:absolute;left:42%;top:30%;width:21px;height:21px;font-size:12px;text-align:center;line-height:21px;color:#fff;background:linear-gradient(135deg,#c884ad,#9a639f);border-radius:50%;z-index:3;box-shadow:0 1px 4px #66405d88}
.room-prop.opening .room-envelope:before{transform:rotateX(-135deg);z-index:0}
.room-art.memory{height:86px;width:112px}
.room-box{position:relative;width:91px;height:53px;border:2px solid rgba(255,233,196,.35);border-radius:5px 5px 12px 12px;background:linear-gradient(145deg,#b58286,#704765);box-shadow:inset 0 5px 10px #ffffff21,inset -8px -12px 12px #0002}
.room-box:before{content:"";position:absolute;left:-7px;right:-7px;top:-15px;height:23px;border-radius:7px 7px 2px 2px;background:linear-gradient(140deg,#dbadad,#895e81);box-shadow:0 5px 4px #0004;transform-origin:0 100%;transition:transform .35s}
.room-box:after{content:"◆";position:absolute;top:17px;left:40%;font-size:16px;color:#ffe5cd}
.room-prop.opening .room-box:before{transform:rotate(-22deg) translateY(-10px)}
.room-art.photo{height:90px;width:107px}
.room-frame{width:86px;height:88px;border:8px solid #b6a0cb;border-bottom-width:14px;background:#20162b;border-radius:5px;box-shadow:inset 2px 3px 4px #0009,3px 6px 2px #0003;overflow:hidden}
.room-frame img{display:block;width:100%;height:100%;object-fit:cover}
.room-art.lamp,.room-art.plant,.room-art.mirror,.room-art.rug{height:95px;width:110px}
.room-lamp{position:relative;width:90px;height:92px}
.room-lamp:before{content:"";position:absolute;top:0;left:19px;width:54px;height:42px;clip-path:polygon(22% 0,78% 0,100% 100%,0 100%);border-radius:5px;background:linear-gradient(105deg,#f7e6d5,#b8a0c9 65%,#977ba3);box-shadow:0 0 19px #ffefbf22}
.room-lamp:after{content:"";position:absolute;top:43px;left:43px;width:6px;height:40px;background:#bfc2db;box-shadow:0 38px 0 13px #aaa4c1;border-radius:3px}
.room-scene.lamp-on .room-lamp:before{box-shadow:0 0 35px #ffedbe9a;filter:brightness(1.2)}
.room-scene.lamp-on .room-side-light{opacity:1;filter:blur(25px)}
.room-plant{position:relative;font-size:66px;line-height:85px;filter:drop-shadow(0 3px 5px #0005)}
.room-mirror{position:relative;width:67px;height:88px;border:6px solid #cfb9df;border-radius:48% 48% 45% 45%;background:linear-gradient(125deg,#6686a8,#d3def1 45%,#5e7b98);box-shadow:inset 6px 8px 9px #fff6,0 3px 7px #0005}
.room-mirror:after{content:"";position:absolute;top:8px;right:11px;height:52px;width:11px;transform:skew(-22deg);background:#ffffff44}
.room-rug{width:104px;height:53px;border-radius:50%;border:5px solid #baa0ca;background:repeating-radial-gradient(ellipse at center,#65538c 0 7px,#bd92b7 9px 12px);transform:perspective(120px) rotateX(34deg);box-shadow:0 5px 7px #0003}
.room-bottom{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:13px;flex-wrap:wrap}
.room-hint{font-size:13px;color:var(--muted);line-height:1.55;max-width:650px}
.room-save-disclosure{font-size:12px;color:var(--muted);margin-top:12px;line-height:1.6}
body.room-explore .room-tools>*:not(#roomExplore),body.room-explore .room-prop .room-edit,body.room-explore .room-prop .room-remove{display:none}
body.room-explore .room-scene{height:clamp(490px,69vw,790px)}
body.room-explore #roomHint:before{content:"Explore mode. "}
body.price-open{overflow:hidden}
.pricing-overlay{position:fixed;inset:0;z-index:5000;background:rgba(4,6,14,.9);backdrop-filter:blur(9px);-webkit-backdrop-filter:blur(9px);display:grid;place-items:center;padding:18px;overflow:auto}
.pricing-overlay.is-hidden{display:none}
.pricing-panel{width:min(890px,100%);max-height:calc(100dvh - 32px);overflow:auto;overscroll-behavior:contain;border-radius:27px;padding:clamp(22px,4vw,39px);color:#f8f5ff;border:1px solid #77718d;background:radial-gradient(ellipse at 7% 0%,#283d59,transparent 47%),radial-gradient(ellipse at 91% 7%,#55294d,transparent 43%),#111326;box-shadow:0 24px 90px #000a}
.pricing-eyebrow{font-size:11px;font-weight:850;letter-spacing:.18em;color:#89eaf4}
.pricing-panel h2{font-size:clamp(29px,4vw,49px);letter-spacing:-.05em;line-height:1.05;margin:15px 0 13px}
.pricing-panel h2 span{color:#f2a4dc}
.pricing-panel>p{color:#dad4e7;font-size:14px;line-height:1.65}
.pricing-levels{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:22px 0 16px}
.pricing-level{min-height:190px;border:1px solid #544b66;background:rgba(17,14,34,.8);border-radius:17px;padding:16px;display:flex;flex-direction:column;gap:8px}
.pricing-level.free{border-color:#7edce6;background:linear-gradient(140deg,#123b44,#171c37)}
.pricing-level-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.pricing-level-top strong{font-size:12px;letter-spacing:.03em}
.pricing-level-top b{font-size:27px;letter-spacing:-.04em}
.pricing-level p{font-size:13px;line-height:1.5;color:#dfd5eb;margin:2px 0;flex:1}
.pricing-level small{font-size:11px;color:#9ee4eb}
.pricing-truth{font-size:12px!important;color:#c6bbd1!important}
.pricing-enter{display:block;width:100%;min-height:52px;font-size:15px;background:linear-gradient(115deg,#77e9eb,#c09df1 55%,#f29fcf);color:#0c0d1c!important;border:0!important}
.memory-reading{display:grid;gap:15px;line-height:1.7}
.memory-reading .memory-letter{background:linear-gradient(165deg,#fff7ed,#ecd8ed);color:#36213c;padding:25px;border-radius:8px;box-shadow:2px 8px 28px #0002;white-space:pre-wrap;overflow-wrap:anywhere;max-height:55vh;overflow:auto}
.memory-reading .memory-note{border:1px solid #6d6382;background:#171628;padding:21px;border-radius:16px;white-space:pre-wrap;overflow-wrap:anywhere;max-height:45vh;overflow:auto}
.memory-reading img{display:block;max-width:100%;max-height:45vh;border-radius:12px;margin:auto;object-fit:contain}
.memory-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}
@media(max-width:1000px){.nav{grid-template-columns:repeat(5,minmax(0,1fr))}.room-scene{height:clamp(450px,85vw,670px)}}
@media(max-width:680px){.nav{grid-template-columns:repeat(3,minmax(0,1fr))}.topbar-actions{display:flex;flex-wrap:wrap}.topbar-actions .ghost-btn,.topbar-actions .tool-btn{grid-column:auto!important;grid-row:auto!important}.topbar-actions .search{order:9;flex:1 1 100%}.dream-intro{display:block}.dream-free-stamp{display:inline-block;margin-top:13px}.room-tools{gap:8px}.room-tools>button{flex:1 1 44%;font-size:12px;white-space:normal}.room-theme-label{flex:1 1 100%;justify-content:space-between}.room-theme-label select{max-width:65%}.room-scene{height:560px;border-radius:19px}.room-prop{width:87px;height:110px}.room-art{transform:scale(.83);transform-origin:center bottom}.room-prop:not(.dragging):hover .room-art{transform:scale(.83)}.room-object-label{font-size:10px;max-width:95px}.room-prop .room-edit,.room-prop .room-remove{width:27px;height:27px;top:-12px}.pricing-levels{grid-template-columns:1fr}.pricing-level{min-height:0}.pricing-level p{flex:initial}.pricing-panel{max-height:calc(100dvh - 20px)}.pricing-overlay{padding:10px}.room-empty{inset:20% 7% 23%}}
@media(prefers-reduced-motion:reduce){.room-art,.room-envelope:before,.room-box:before{transition:none}}

/* Performance: drag cards don't need to re-blur the entire background on each frame. */
.canvas>.widget.dragging,.room-prop.dragging {backdrop-filter:none!important;-webkit-backdrop-filter:none!important;}
@media (max-width:760px) {
  .canvas>.widget {backdrop-filter:none!important;-webkit-backdrop-filter:none!important;}
}
