/* RAÍZZ grow room 3D: stage, floor-plan editor, tent card, equipment */
.r3d{margin:8px 0 4px;display:grid;gap:10px}
.r3d .rzt-head{padding:0 18px}
.r3d-stage{position:relative;height:min(118vw,520px);margin:0 18px;border:1.5px solid var(--line);border-radius:var(--r);overflow:hidden;background:var(--paper);touch-action:none;box-shadow:var(--sh)}
.r3d-stage.inside{border-color:var(--sun)}
.r3d-cv{display:block;width:100%!important;height:100%!important;outline:none}
.r3d-nothree{position:absolute;inset:0;display:grid;place-items:center;color:var(--ink2);font-size:14px}
.r3d-exit{position:absolute;top:10px;right:10px;z-index:2;display:inline-flex;align-items:center;gap:6px;border:1.5px solid var(--line);background:rgba(255,255,255,.94);border-radius:999px;padding:6px 12px 6px 10px;font:inherit;font-size:14px;color:var(--ink);box-shadow:var(--sh-sm);cursor:pointer}
.r3d-exit .icon{width:18px;height:18px;transform:scaleX(-1)}
.r3d-zoom{position:absolute;bottom:10px;left:10px;z-index:2;display:grid;gap:6px}
.r3d-zoom button{width:36px;height:36px;border-radius:50%;border:1.5px solid var(--line);background:rgba(255,255,255,.94);font:22px/1 var(--body);color:var(--ink);cursor:pointer;box-shadow:var(--sh-sm)}
.r3d-hint{font-size:13px;color:var(--ink2);margin:0;padding:0 18px}
.r3d-row{display:flex;align-items:center;justify-content:space-between;gap:10px}
.r3d-row h3{margin:0;font-size:19px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.r3d-row h3 small{font-size:13px}
/* floor plan */
.r3d-plan{position:relative;margin:0 auto;border:2px solid var(--ink);border-radius:8px;background:var(--sand);overflow:visible;touch-action:none;user-select:none;-webkit-user-select:none}
.r3d-plan-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(58,46,34,.1) 1px,transparent 1px),linear-gradient(90deg,rgba(58,46,34,.1) 1px,transparent 1px);background-size:25px 25px;border-radius:6px}
.r3d-pt{position:absolute;background:#3B3B3B;border:1.5px solid #222;border-radius:4px;color:#fff;display:grid;place-content:center;text-align:center;font-size:12px;line-height:1.2;cursor:grab;box-shadow:0 3px 8px rgba(0,0,0,.25)}
.r3d-pt b{font-size:13px}.r3d-pt span{opacity:.75;font-size:11px}
.r3d-pt.on{background:#4A4A4A;box-shadow:0 0 0 3px rgba(242,183,5,.35),0 3px 8px rgba(0,0,0,.25)}
.r3d-pt.sel{outline:3px solid var(--leaf)}
.r3d-pt .door{position:absolute;left:12%;right:12%;bottom:-2px;height:4px;background:#F2B705;border-radius:2px}
.r3d-pt:not(.on) .door{background:#8A8A8A}
.r3d-dim{position:absolute;font-size:11px;color:var(--ink2);background:var(--paper);padding:0 4px;border-radius:4px}
.r3d-dim.x{top:-18px;left:50%;transform:translateX(-50%)}
.r3d-dim.y{right:-8px;top:50%;transform:translate(100%,-50%) rotate(90deg);transform-origin:left center}
/* equipment */
.r3d-gear{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1.5px solid var(--line);border-radius:14px;background:var(--white)}
.r3d-gear.on{border-color:var(--sun);background:var(--sun-lt)}
.r3d-gear .gk{width:36px;height:36px;border-radius:11px;display:grid;place-items:center;background:var(--sand);color:var(--ink2);flex:none}
.r3d-gear.on .gk{background:var(--sun);color:#fff}
.r3d-gear .gk .icon{width:20px;height:20px}
.r3d-gear .gb{flex:1;min-width:0;display:grid;gap:2px}
.r3d-gear .gb b{font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.r3d-gear .gb small{font-size:12px;color:var(--ink2)}
.r3d-gear .round.sm{box-shadow:none;border-color:transparent;background:transparent}
.rzt-sw.sm{width:50px;height:30px}
.rzt-sw.sm::after{width:22px;height:22px}
.rzt-sw.sm[aria-checked="true"]::after{transform:translateX(-20px)}
.r3d-gform{margin:4px 0}
.r3d-gform .f{font-size:13px}
.r3d-gform input,.r3d-gform select{min-height:42px;padding:8px 10px;font-size:15px}
.r3d-gform select{padding-left:28px}
.r3d-plants{display:grid;gap:8px}
.r3d-pl{display:flex;align-items:center;gap:10px;border:1.5px solid var(--line);border-radius:14px;padding:8px 10px;background:var(--white)}
.r3d-pl a{flex:1;min-width:0;display:grid;text-decoration:none}
.r3d-pl a b{font-size:15px}.r3d-pl a small{font-size:12px;color:var(--ink2)}
.r3d-pl select{width:auto;min-height:38px;padding:6px 28px 6px 10px;font-size:13px;border-radius:10px}
.rzt-card .tile b{font-size:17px}
.r3d-stage::after{content:"";position:absolute;inset:0;pointer-events:none;opacity:.22;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .9 0 0 0 0 .86 0 0 0 0 .8 0 0 0 .18 0'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)'/%3E%3C/svg%3E")}

/* tour bar, joystick */
.r3d-bar{position:absolute;left:10px;right:10px;bottom:10px;z-index:3;display:flex;align-items:center;gap:6px;background:rgba(255,255,255,.92);border:1.5px solid var(--line);border-radius:999px;padding:5px 8px;box-shadow:var(--sh-sm);direction:ltr}
.r3d-bar button{width:36px;height:36px;border-radius:50%;border:0;background:var(--sand);display:grid;place-items:center;cursor:pointer;color:var(--ink);flex:none;touch-action:none}
.r3d-bar button[data-act=play]{background:var(--leaf);color:var(--paper);width:42px;height:42px}
.r3d-bar button[data-act=fwd] .icon{transform:scaleX(-1)}
.r3d-bar .icon{width:20px;height:20px}
.r3d-bar input[type=range]{flex:1;min-width:0;min-height:0;padding:0;border:0;background:transparent;accent-color:var(--leaf);height:28px}
.r3d-joy{position:absolute;left:14px;bottom:14px;z-index:3;width:112px;height:112px;border-radius:50%;background:rgba(255,255,255,.55);border:1.5px solid var(--line);touch-action:none;display:grid;place-items:center;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
.r3d-joy i{width:48px;height:48px;border-radius:50%;background:var(--leaf);box-shadow:0 3px 8px rgba(0,0,0,.25);display:block;pointer-events:none}
.r3d-where{position:absolute;top:10px;right:10px;z-index:3;font-size:13px;background:rgba(255,255,255,.9);border:1.5px solid var(--line);border-radius:999px;padding:4px 10px;pointer-events:none}
.r3d-where:empty{display:none}
.r3d-plan .r3d-win{position:absolute;top:-4px;left:35%;width:30%;height:5px;background:#9CC4E4;border-radius:3px}
.r3d-plan .r3d-rdoor{position:absolute;right:-4px;top:38%;width:5px;height:24%;background:#8B5E3C;border-radius:3px}
/* tent layout (top view) */
.r3d-tplan{position:relative;margin:0 auto;border:2px solid #222;border-radius:6px;background:#2A2A2A;touch-action:none;user-select:none;-webkit-user-select:none;background-image:radial-gradient(rgba(255,255,255,.06) 1px,transparent 1px);background-size:12px 12px}
.r3d-tplan .tdoor{position:absolute;left:11%;right:11%;bottom:-3px;height:5px;background:#F2B705;border-radius:3px}
.r3d-ti{position:absolute;display:grid;place-items:center;border-radius:6px;cursor:grab;font-size:11px;color:#fff;box-shadow:0 2px 6px rgba(0,0,0,.35)}
.r3d-ti .icon{width:16px;height:16px}
.r3d-ti.pot{border-radius:50%;background:radial-gradient(circle at 50% 45%,#5E8F37 0 40%,#3b2a1c 42% 70%,#2b2b2b 72%);border:2px solid #111}
.r3d-ti.pot span{font-size:10px;background:rgba(0,0,0,.55);padding:1px 4px;border-radius:6px;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.r3d-ti.ceiling{background:rgba(231,181,72,.85);border:2px dashed #FFF0C2;color:#3A2E22}
.r3d-ti.floor{background:#5E6B7A;border:2px solid #C9D2DC}
.r3d-ti.wall,.r3d-ti.pole{background:#8A6E4E;border:2px solid #E9CA98}
.r3d-ti.sel{outline:3px solid var(--leaf)}
.r3d-legend{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;color:var(--ink2);padding:0 2px}
.r3d-legend i{display:inline-block;width:12px;height:12px;border-radius:3px;margin-inline-end:4px;vertical-align:middle}
.r3d-legend i.pot{border-radius:50%;background:#5E8F37}.r3d-legend i.ceiling{background:rgba(231,181,72,.9)}.r3d-legend i.floor{background:#5E6B7A}.r3d-legend i.wall{background:#8A6E4E}
input[type=range][data-lvl]{min-height:0;padding:0;border:0;background:transparent;accent-color:var(--leaf)}
