@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Noto+Sans+KR:wght@400;500;600;700&display=swap');
:root{font-family:'DM Sans','Noto Sans KR',sans-serif;color:#3f4538;background:#f6f4ef;font-synthesis:none;--paper:#f6f4ef;--ink:#3f4538;--muted:#919488;--line:#e4e4da;--accent:#ad6547;--olive:#626e4e;--white:#fffcf7}*{box-sizing:border-box}body{margin:0}button,input,a{-webkit-tap-highlight-color:transparent}button,input{font:inherit}button{color:inherit;cursor:pointer}button{border:0;background:none}button:disabled{opacity:.3;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:4px}button:not(:disabled),a,input{touch-action:manipulation}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin:0}[hidden]{display:none!important}svg{width:18px;height:18px;display:block;flex-shrink:0}button{transition:background .18s,color .18s,transform .18s}button:hover:not(:disabled){background:#eaece2}.header{height:80px;display:flex;align-items:center;justify-content:space-between;padding:0 28px;border-bottom:1px solid var(--line);background:var(--paper);position:relative;z-index:10}.brand{display:flex;align-items:center;gap:10px;font-size:27px;font-weight:600;letter-spacing:3px;line-height:1}.brand svg{width:32px;height:36px}.brand-caption{display:block;font-size:7px;letter-spacing:1.55px;margin-top:8px;font-weight:600}.mode-tabs{display:flex;background:#eaece3;padding:4px;border-radius:8px;gap:3px}.mode-tabs button{padding:10px 17px;font-size:12px;border-radius:5px;color:#8c9083;white-space:nowrap}.mode-tabs button span{font-size:10px;margin-right:7px;opacity:.7}.mode-tabs button.active{background:#fffdf7;color:var(--ink);box-shadow:0 1px 5px #383e3610}.header-actions{display:flex;align-items:center;gap:12px}.save-status{font-size:10px;color:var(--muted)}.export-button,.primary-button{display:flex;align-items:center;justify-content:center;gap:9px;background:var(--olive);color:white;border-radius:6px;font-size:11px;padding:12px 15px}.export-button:hover:not(:disabled),.primary-button:hover:not(:disabled){background:#505d40}.icon-button{display:flex;width:34px;height:34px;align-items:center;justify-content:center;border-radius:5px}.workspace{height:calc(100dvh - 80px);min-height:640px;display:grid;grid-template-columns:242px minmax(0,1fr)}.sidebar{border-right:1px solid var(--line);padding:27px 23px 17px;overflow:auto;scrollbar-width:thin;background:var(--paper);z-index:6}.eyebrow{font-size:8px;letter-spacing:1.8px;color:#929687;font-weight:600}.room-heading h1{font-size:19px;font-weight:500;letter-spacing:-.8px;margin-top:10px;display:flex;align-items:center;gap:9px}.orange-dot{width:5px;height:5px;background:#b97556;border-radius:50%}.room-heading p{font-size:11px;color:#94958a;margin-top:10px}.sidebar section{border-top:1px solid var(--line);padding-top:21px;margin-top:24px}.section-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.section-heading h2{font-size:11px;font-weight:600}.section-heading>span{font-size:8px;letter-spacing:1px;color:#a1a393}.section-heading svg{width:15px;height:15px}.mood-grid{display:flex;gap:7px}.mood-card{flex:1;min-width:0;padding:0 0 7px;border:1px solid transparent;border-radius:5px;font-size:8px;white-space:nowrap;color:#777d6b}.mood-card.active{border-color:#7b8668;background:#eaeddf}.mood-colors{display:flex;overflow:hidden;border-radius:4px;margin:4px 4px 8px;height:24px}.mood-colors i{flex:1}.material-heading{display:flex;align-items:center;justify-content:space-between;font-size:10px;margin:16px 0 10px}.material-heading span:last-child{font-size:9px;color:#929585}.swatches{display:flex;gap:10px}.swatches button{width:56px;height:39px;border-radius:4px;position:relative;box-shadow:inset 0 0 0 1px #473f2d10}.swatches:not(.wall-swatches) button{background-image:repeating-linear-gradient(0deg,transparent 0,transparent 4px,#5d422515 5px,#5d422510 6px)}.swatches button.active:after,.item-colors button.active:after{content:'';position:absolute;inset:-4px;border:1px solid #6b7658;border-radius:6px}.wall-swatches button{height:30px}.time-display{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:10px}.time-display strong{font-size:28px;letter-spacing:-1px;font-weight:400}.time-display>span{font-size:9px;color:#929585}input[type=range]{appearance:none;width:100%;height:4px;background:#dfe0d5;border-radius:8px;cursor:pointer;display:block;margin:12px 0}input[type=range]::-webkit-slider-thumb{appearance:none;width:13px;height:13px;border-radius:50%;background:var(--paper);border:2px solid #8a9277;box-shadow:0 1px 4px #373e3820}.sun-slider{background:linear-gradient(90deg,#e5d8b4,#caaa75,#7f8b8f)!important}.range-labels{display:flex;justify-content:space-between;font-size:8px;color:#9a9d8e;margin-bottom:13px}.switch-row{display:flex;justify-content:space-between;align-items:center;margin-top:13px;font-size:10px}.switch{width:28px;height:16px;border-radius:12px;background:#d9dcd0;position:relative;padding:0}.switch:after{content:'';width:10px;height:10px;border-radius:50%;background:#fffdf7;position:absolute;top:3px;left:3px;transition:transform .2s}.switch[aria-checked=true]{background:#7a8566}.switch[aria-checked=true]:after{transform:translateX(12px)}.sidebar-bottom{margin-top:28px;border-top:1px solid var(--line);padding-top:16px}.text-button{display:flex;align-items:center;gap:7px;font-size:9px;padding:5px 0;color:#7d8470}.text-button svg{width:13px;height:13px}.sidebar-bottom p{font-size:8px;color:#a4a696;margin-top:12px}.stage{position:relative;min-width:0;overflow:hidden;background:#eeede5}#viewport{position:absolute;inset:0 0 197px;touch-action:none;outline:none}#viewport canvas{display:block;width:100%;height:100%;touch-action:none}.stage-heading{position:absolute;left:32px;top:29px;pointer-events:none}.stage-heading h2{font-size:25px;letter-spacing:-1.2px;font-weight:400;margin-top:10px}.stage-heading p{font-size:10px;color:#979b8e;margin-top:9px}.stage-tools{position:absolute;right:24px;top:28px;display:flex;gap:10px}.tool-group{display:flex;background:#faf9f2c9;border:1px solid #fffffff0;border-radius:7px;padding:3px;box-shadow:0 2px 10px #333a3310}.tool-group .icon-button{width:31px;height:29px}.tool-group svg{width:15px;height:15px}.scene-meta{position:absolute;left:31px;bottom:249px;display:flex;gap:8px;align-items:center;font-size:8px;letter-spacing:1px;color:#949989;pointer-events:none}.live-dot{width:5px;height:5px;border-radius:50%;background:#889772}.meta-divider{width:1px;height:9px;background:#c9cdbf;margin:0 2px}.canvas-hint{position:absolute;bottom:213px;left:0;width:100%;display:flex;justify-content:center;align-items:center;gap:8px;color:#909785;font-size:9px;pointer-events:none}.canvas-hint svg{width:13px;height:13px}.canvas-hint i{font-style:normal;color:#b2b7a8}.catalog{position:absolute;bottom:0;left:0;right:0;height:197px;background:#faf9f3f5;border-top:1px solid #e0e3d6;padding:0 27px;z-index:4}.catalog-header{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #e8e9df;height:43px;gap:10px}.catalog-tabs{display:flex;height:100%;gap:22px;overflow-x:auto;scrollbar-width:none}.catalog-tabs button{font-size:10px;white-space:nowrap;padding:0;position:relative;color:#919785}.catalog-tabs button[aria-selected=true]{color:#424b38}.catalog-tabs button[aria-selected=true]:after{content:'';position:absolute;bottom:0;left:0;width:100%;height:2px;background:#737f60}.catalog-tabs button span{font-size:8px;color:#a1a995;margin-left:5px}.model-import{display:flex;gap:5px;align-items:center;font-size:10px;white-space:nowrap;color:#777f69}.model-import svg{width:13px;height:13px}.catalog-items{display:flex;gap:10px;overflow:auto;height:122px;align-items:center;scrollbar-width:thin}.furniture-card{width:112px;flex:0 0 112px;height:107px;background:#f0f0e6;border:1px solid #e8eadd;border-radius:6px;padding:0 7px 9px;position:relative;text-align:left}.furniture-card:hover:not(:disabled){background:#e9ecdc;transform:translateY(-2px)}.furniture-card img{display:block;width:100%;height:73px;object-fit:contain}.furniture-card .furniture-name{font-size:9px;display:block;white-space:nowrap}.furniture-card .furniture-en{font-size:7px;color:#9b9f8e;display:block;margin-top:3px}.furniture-card .add-mark{position:absolute;right:7px;top:6px;color:#a0a58f;font-size:15px}.catalog-footer{display:flex;justify-content:space-between;align-items:center;font-size:8px;color:#a2a792}.catalog-footer>span:last-child{letter-spacing:1.7px;font-size:7px}.tiny-plus{margin-right:5px}.inspector{position:absolute;right:24px;top:90px;width:224px;padding:15px 17px 17px;background:#faf9f1f2;backdrop-filter:blur(14px);border:1px solid #ffffff;border-radius:10px;box-shadow:0 6px 24px #48513912;z-index:5;max-height:calc(100% - 302px);overflow:auto}.inspector-header{display:flex;align-items:center;justify-content:space-between}.inspector-header .icon-button{width:24px;height:24px}.inspector-header svg{width:13px;height:13px}.inspector h3{font-size:16px;font-weight:500;margin-top:6px}.item-size{font-size:9px;color:#919683;margin-top:6px}.selection-actions{display:flex;gap:8px;margin-top:15px}.selection-actions button{display:flex;flex:1;justify-content:center;align-items:center;gap:6px;border:1px solid #e0e3d5;border-radius:5px;padding:8px;font-size:10px}.selection-actions svg{width:12px;height:12px}.item-colors{display:flex;gap:8px;margin-bottom:18px}.item-colors button{width:23px;height:23px;border-radius:50%;position:relative}.item-colors button.active:after{border-radius:50%;inset:-3px}.link-editor{border-top:1px solid #e1e4d8;padding-top:13px}.link-editor label{font-size:10px}.link-input{display:flex;align-items:center;background:#fffdf8;border:1px solid #e1e4d8;border-radius:5px;margin-top:8px;padding-right:5px}.link-input input{background:none;border:0;min-width:0;width:100%;padding:9px;font-size:10px;color:var(--ink)}.link-input button{padding:4px}.link-input svg{width:14px;height:14px}.link-editor a{display:flex;align-items:center;gap:5px;font-size:10px;color:#8d6449;margin-top:10px}.link-editor a svg{width:12px;height:12px}.inspector-note{font-size:8px;color:#a0a58f;line-height:1.8;margin-top:15px}.interaction-button{font-size:10px;color:#687451;background:#e7eadc;border-radius:5px;width:100%;padding:9px;margin-bottom:15px}.drag-feedback{position:absolute;left:50%;top:60%;transform:translateX(-50%);font-size:10px;border-radius:5px;padding:8px 12px;background:#faf8ef;box-shadow:0 3px 12px #25302415;pointer-events:none}.drag-feedback.invalid{color:#9c543e;background:#f8e7df}.tour-controls{position:absolute;top:106px;left:32px;display:flex;gap:6px;flex-wrap:wrap;max-width:75%}.tour-controls button{background:#f9f8f0e8;border:1px solid #dce0d1;border-radius:5px;font-size:9px;padding:9px 10px;display:flex;gap:5px;align-items:center}.tour-controls svg{width:12px;height:12px}.range-row{display:block;font-size:10px;margin-top:17px}.range-row output{float:right;color:#8c937d;font-size:10px}.section-note{font-size:9px;color:#939b86;line-height:1.8;margin-bottom:12px}.toast{position:fixed;bottom:218px;left:calc(50% + 100px);transform:translate(-50%,10px);background:#454f3eee;color:#f5f3e8;padding:12px 19px;font-size:11px;border-radius:7px;z-index:40;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;max-width:90vw;white-space:normal;text-align:center}.toast.show{opacity:1;transform:translate(-50%,0)}dialog{border:1px solid #e3e6d6;border-radius:14px;background:#faf9f0;color:var(--ink);padding:38px;width:440px;max-width:calc(100% - 30px);box-shadow:0 20px 80px #2e362b25}dialog::backdrop{background:#3e473c4d;backdrop-filter:blur(5px)}dialog h2{font-weight:400;font-size:27px;letter-spacing:-1px;line-height:1.45;margin:14px 0}dialog p{font-size:12px;line-height:1.9;color:#838d76}dialog dl{font-size:10px;margin:24px 0;line-height:1.7}dialog dt{font-weight:600;margin-top:14px}dialog dd{margin:3px 0;color:#858e78}dialog .primary-button{width:100%;margin-top:23px}.dialog-close{position:absolute;right:12px;top:12px}.form-label{display:block;font-size:11px;margin-top:20px}.form-input{width:100%;padding:11px;border:1px solid #dce0d1;border-radius:5px;background:#fffdf7;color:var(--ink);margin:9px 0}.loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:12px;font-size:12px;color:#849173}.loader-ring{width:19px;height:19px;border:2px solid #d3d9c6;border-top-color:#768465;border-radius:50%;animation:spin 1s linear infinite}.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}.mobile-only{display:none}@keyframes spin{to{transform:rotate(360deg)}}
@media(min-width:1500px){.workspace{grid-template-columns:270px minmax(0,1fr)}.sidebar{padding:32px 28px}.catalog{height:215px}.catalog-items{height:138px}.furniture-card{width:134px;flex-basis:134px;height:119px}.furniture-card img{height:84px}#viewport{bottom:215px}.canvas-hint{bottom:233px}.scene-meta{bottom:272px}.stage-heading{left:40px;top:40px}.stage-heading h2{font-size:31px}}
@media(max-width:1100px){.header{padding:0 18px}.save-status{display:none}.mode-tabs button{padding:10px 11px}.workspace{grid-template-columns:214px minmax(0,1fr)}.sidebar{padding:24px 16px}.stage-heading{left:22px;top:27px}.stage-heading h2{font-size:22px}.stage-tools{right:17px;top:23px}.catalog{padding:0 18px}.catalog-tabs{gap:16px}.inspector{right:17px;width:205px}.swatches button{width:50px}.header-actions{gap:6px}}
@media(max-width:760px){.header{height:64px;padding:0 15px}.brand{font-size:22px;gap:7px}.brand svg{width:25px;height:29px}.brand-caption{font-size:5.5px;letter-spacing:1px;margin-top:6px}.mode-tabs{position:absolute;top:79px;left:15px;z-index:8;box-shadow:0 2px 10px #39443008}.mode-tabs button{font-size:10px;padding:9px 11px}.mode-tabs button span{display:none}.export-button{padding:10px}.export-button>span:last-child{display:none}.workspace{height:calc(100dvh - 64px);min-height:600px;grid-template-columns:1fr}.sidebar{display:none;position:absolute;top:122px;left:14px;bottom:165px;width:235px;max-height:65vh;border:1px solid #e0e5d4;border-radius:10px;box-shadow:0 8px 35px #35412b20;z-index:12}.sidebar.open{display:block}.stage-heading{top:69px;left:19px}.stage-heading .eyebrow{font-size:6px;letter-spacing:1.3px}.stage-heading h2{font-size:22px;margin-top:9px}.stage-heading p{font-size:9px;max-width:230px}.stage-tools{top:14px;right:15px;gap:4px}.stage-tools .tool-group:last-child{position:absolute;right:0;top:49px;flex-direction:column}.stage-tools .icon-button{width:28px;height:29px}.mobile-only{display:flex;background:#faf9f2e0;border:1px solid #fff}.tool-group{padding:2px}.stage-tools svg{width:14px;height:14px}.catalog{height:169px;padding:0 15px}.catalog-header{height:40px}.catalog-tabs{gap:16px;max-width:calc(100% - 89px)}.catalog-tabs button{font-size:9px}.catalog-tabs button span{display:none}.catalog-items{height:107px;gap:8px}.furniture-card{height:94px;flex-basis:103px;width:103px}.furniture-card img{height:61px}.furniture-card .furniture-name{font-size:9px}.catalog-footer{font-size:7px}.catalog-footer>span:last-child{display:none}#viewport{bottom:169px}.canvas-hint{bottom:183px;font-size:8px;gap:5px;white-space:nowrap}.canvas-hint i{display:none}.canvas-hint svg{display:none}.scene-meta{bottom:211px;left:19px;font-size:7px}.inspector{right:14px;top:130px;width:204px;max-height:calc(100% - 316px);padding:12px 14px}.inspector-note{display:none}.tour-controls{top:147px;left:19px;max-width:80%;gap:5px}.tour-controls button{padding:8px;font-size:8px}.toast{left:50%;bottom:188px;font-size:10px}.room-heading h1{font-size:18px}.model-import{font-size:9px}.drag-feedback{top:55%;max-width:90%;font-size:9px}.header-actions{gap:8px}dialog{padding:30px}.header .icon-button{width:28px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
/* Keep off-screen accessibility labels inside the app, including scrolled panels. */
body{height:100dvh;overflow:hidden}.workspace{min-height:0}.sidebar{position:relative;min-height:0}.sr-only{top:0;left:0}
@media(max-width:760px){.sidebar{position:absolute}.workspace{min-height:0}}

/* A quiet music control, separate from the room's project state. */
.music-player{position:relative;z-index:11;display:flex;align-items:center;border:1px solid #dfe3d4;border-radius:7px;background:#eeefe5;flex-shrink:0}
.music-toggle{height:36px;display:flex;align-items:center;justify-content:center;gap:7px;padding:0 10px;border-radius:6px 0 0 6px;font-size:10px;min-width:63px}
.music-settings{width:27px;height:36px;display:grid;place-items:center;padding:0;border-left:1px solid #dfe3d4;border-radius:0 6px 6px 0}
.music-settings svg{width:13px;height:13px;transition:transform .2s}
.music-settings[aria-expanded=true] svg{transform:rotate(180deg)}
.music-player[data-enabled=true]{color:#566640;background:#e5e9d9;border-color:#cbd3ba}
.music-bars{height:16px;width:16px;display:flex;align-items:center;gap:2px}
.music-bars i{display:block;width:2px;height:5px;border-radius:2px;background:currentColor;transform-origin:center}
.music-bars i:nth-child(2){height:13px}.music-bars i:nth-child(3){height:9px}.music-bars i:nth-child(4){height:6px}
.music-player[data-playing=true] .music-bars i{animation:music-wave 1.1s ease-in-out infinite alternate}
.music-player[data-playing=true] .music-bars i:nth-child(2){animation-delay:-.5s}.music-player[data-playing=true] .music-bars i:nth-child(3){animation-delay:-.8s}
@keyframes music-wave{from{transform:scaleY(.45)}to{transform:scaleY(1.15)}}
.music-panel{position:absolute;right:0;top:calc(100% + 12px);width:258px;padding:19px 20px 17px;background:#faf9f3;border:1px solid #e0e4d5;border-radius:11px;box-shadow:0 9px 32px #35412b20;color:var(--ink)}
.music-panel .eyebrow{font-size:7px;letter-spacing:1.1px;white-space:nowrap}
.music-panel h2{display:flex;align-items:center;gap:9px;font-size:21px;font-weight:500;margin:9px 0 5px}
.music-panel h2 span{font-size:7px;font-weight:500;letter-spacing:1px;border:1px solid #dce1d0;border-radius:4px;padding:3px 5px;color:#879176}
.music-panel p{font-size:10px;color:#8b927e;line-height:1.8;min-height:36px}
.music-volume-label{display:flex;justify-content:space-between;align-items:center;margin-top:12px;font-size:10px}
.music-volume-label output{color:#929a84;font-size:10px}
.music-panel input[type=range]{height:4px;margin:15px 0 18px;accent-color:var(--olive)}
.music-loop-note{font-size:8px;color:#9ba28e}
@media(max-width:760px){.music-toggle{min-width:34px;width:34px;padding:0;height:34px}.music-label{display:none}.music-settings{height:34px;width:24px}.music-panel{position:fixed;top:57px;right:14px;width:min(258px,calc(100vw - 28px))}}
