.page-title{font-size:clamp(2rem,4vw,3rem);font-weight:700;line-height:1.2;color:#111827;margin-bottom:1rem;padding-left:.5rem}.widget-title{font-size:clamp(1.6rem,2.5vw,2rem);font-weight:700;line-height:1.2;color:#111827;margin-bottom:.75rem}.section-title{font-size:clamp(1.3rem,1.75vw,1.5rem);font-weight:700;line-height:1.2;color:#111827;margin-bottom:.5rem}.text-muted{font-size:clamp(.8rem,.85vw,.9rem);font-weight:400;line-height:1.5;color:#111827;color:#6b7280}.text-link{font-size:clamp(.95rem,1vw,1.05rem);font-weight:400;line-height:1.5;color:#111827;color:#2563eb;cursor:pointer}.text-link:hover{color:#134cca;text-decoration:underline}body{margin:0;font-family:sans-serif;background:#f5f5f5;color:#2c3e50;height:100%;overflow:hidden}button{border:1px solid #2c3e50;background:#fff;padding:6px 12px;border-radius:8px;cursor:pointer;transition:background-color .5s ease,color .5s ease}button:active{background:#258bcf;color:#fff;border-color:#2383c4;transform:scale(.97)}button:focus,button:focus-visible{outline:none;box-shadow:none}.controller-grid{display:flex;flex-direction:column;margin-bottom:1rem}.controller-grid .controller-row{display:flex;justify-content:space-around;align-items:center;flex-wrap:wrap;gap:1rem}.controller-actions{justify-content:center}.controller-layout{display:flex;flex-direction:column;min-height:100dvh}.app-body{display:flex;flex:1;min-height:0}.screen-container{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}@media (max-width: 750px),(max-height: 600px){.trackpad,.teleport-grid-container{display:none!important}.controller-row{flex-wrap:wrap;gap:1rem}.controller-center{margin-top:.5rem}}.floorplan-viewer{flex:1;overflow:hidden;margin-top:20px;display:flex;flex-direction:column;gap:12px;text-align:center;border-radius:8px;padding:1rem}.floorplan-viewer .floorplan-canvas{position:relative;width:100%;max-width:1200px;aspect-ratio:16/9;margin:0 auto;max-height:calc(100vh - 200px);height:auto;display:flex;align-items:center;justify-content:center;background:#e2e1e1;border:1px solid #ccc;border-radius:8px;box-sizing:border-box;overflow:hidden}.floorplan-viewer .floorplan-canvas .konvajs-content{width:100%!important;height:100%!important;object-fit:contain}.floorplan-viewer .current-location{font-size:1.2rem;font-weight:500;margin-top:.5rem;margin-bottom:.5rem}.path-actions{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;gap:.5rem;z-index:10}.path-actions button{padding:.5rem 1rem;font-weight:700;border-radius:6px;border:none;cursor:pointer}.path-actions .confirm{background:#4caf50;color:#fff}.path-actions .cancel{background:#f44336;color:#fff}.edit-bar{display:flex;justify-content:center;gap:.5rem;margin:1rem 0}.edit-bar button{padding:.5rem .25rem;border:none;border-radius:6px;font-weight:700;cursor:pointer}.edit-bar button.active{background:#3498db;color:#fff}.controller-container{display:flex;flex-direction:column;justify-content:center;width:100%;height:100vh;padding:0 1rem;box-sizing:border-box;border:4px solid #2d2d2d;border-radius:12px;background:linear-gradient(145deg,#3a3a3a,#2b2b2b);box-shadow:0 8px #1a1a1a,inset 0 2px 4px #ffffff1a,inset 0 -2px 4px #0006}.controller-container .controller-header{text-align:center;margin-top:1rem;margin-bottom:2rem;font-family:"Press Start 2P",monospace;font-size:1.8rem;color:#ff4c4c;text-shadow:0 0 6px #ff4c4c}.controller-container .controller-grid{flex:1;display:flex;flex-direction:column;gap:0rem;justify-content:space-between}.controller-container .controller-row{justify-content:space-between;align-items:flex-end;gap:1rem;flex-wrap:nowrap;width:100%}.controller-container .controller-row.teleport-row{position:relative;align-items:flex-start;justify-content:center;min-height:20vh;flex:0 0 20vh}@media (max-width: 1024px){.controller-container{max-width:100%;padding:0 1.5rem}}@media (max-width: 768px){.controller-container{max-width:100%;padding:0 1rem}}@media (max-width: 480px){.controller-container{max-width:100%;padding:0 .5rem}}.controller-section{position:relative;display:flex;flex-direction:column;align-items:center;flex:0 1 auto}.controller-section h3{margin-top:12px;font-family:"Press Start 2P",monospace;font-size:1.2rem;color:#ccc3c3;text-shadow:0 0 4px #000;text-align:center}.controller-center{display:flex;flex-direction:column;align-items:center;flex:1 1 auto;max-width:100%;gap:1rem}.controller-zone,.abxy-container,.dpad-container,.joystick-zone{width:clamp(140px,20vw,220px);height:clamp(140px,20vw,220px);border-radius:50%;background:#f5f5f5;box-shadow:inset 0 0 8px #0003;position:relative;overflow:visible;display:flex;justify-content:center;align-items:center}@media (max-width: 768px){.controller-zone,.abxy-container,.dpad-container,.joystick-zone{width:140px;height:140px}}@media (max-width: 480px){.controller-zone,.abxy-container,.dpad-container,.joystick-zone{width:120px;height:120px}}.joystick-zone{z-index:100;flex:0 0 auto}.joystick-zone.camera{border:2px solid #f89999;box-shadow:0 0 12px #f8999999}.joystick-zone.movement{border:2px solid #c8fac8;box-shadow:0 0 12px #c8fac899}.nipple .back,.nipple .front{background:#b8787899!important;border:2px solid rgb(1,2,0);z-index:9999!important}.dpad-container{background-color:#e4dede}.dpad-button{position:absolute;width:25%;height:25%;border-radius:50%;font-size:1.2em;background-color:#333;color:#fff;border:2px solid #fff;display:flex;justify-content:center;align-items:center;cursor:pointer;transition:transform .15s ease,background-color .2s ease}.dpad-button.up{top:7%;left:37.5%}.dpad-button.down{bottom:7%;left:37.5%}.dpad-button.left{top:37.5%;left:7%}.dpad-button.right{top:37.5%;right:7%}.dpad-button.center{top:37.5%;left:37.5%}.abxy-container{background-color:#e4dede}.abxy-button{position:absolute;width:25%;height:25%;border-radius:50%;font-size:1.2em;background-color:#333;color:#fff;border:2px solid #fff;display:flex;justify-content:center;align-items:center;cursor:pointer;transition:transform .15s ease,background-color .2s ease}.abxy-button.y{top:7%;left:37.5%}.abxy-button.a{bottom:7%;left:37.5%}.abxy-button.x{top:37.5%;left:7%}.abxy-button.b{top:37.5%;right:7%}.action-btn{margin-top:1rem;padding:.5rem 1rem;font-size:.9rem;border-radius:6px;border:2px solid #888;background:#444;color:#fff;font-family:"Press Start 2P",monospace;cursor:pointer;transition:all .15s ease}.action-btn:active{transform:translateY(2px);background:#ff4c4c;border-color:#ff2b2b;color:#fff;text-shadow:0 0 6px rgb(255,120.75,120.75)}.action-btn.left-trigger,.action-btn.right-trigger{background:#444}.controller-actions{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:20px;justify-content:center}.menu-sidebar{position:fixed;top:0;left:-100%;width:260px;height:100%;background:#2b2b2b;border-right:3px solid #2d2d2d;box-shadow:2px 0 8px #0009;display:flex;flex-direction:column;transition:left .3s ease;z-index:1000;overflow-x:hidden}.menu-sidebar.open{left:0}.menu-sidebar .menu-header{display:flex;align-items:center;padding:1rem;border-bottom:2px solid #000}.menu-sidebar .menu-header .menu-btn-inline{background:none;border:none;color:#fff;font-size:1.5rem;cursor:pointer;margin-right:1rem;flex-shrink:0}.menu-sidebar .menu-header h1{font-family:"Press Start 2P",monospace;font-size:clamp(1.1rem,3vw,1.5rem);color:#fff;margin:0;padding-left:.75rem;line-height:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-sidebar .menu-items{display:flex;flex-direction:column;flex:1;overflow-y:auto}.menu-sidebar .menu-items .menu-item{padding:1rem 1rem 1rem 1.5rem;font-family:"Press Start 2P",monospace;font-size:clamp(.8rem,2.5vw,.95rem);color:#fff;cursor:pointer;border-bottom:1px solid #000;word-break:break-word}.menu-sidebar .menu-items .menu-item:hover{background:#3a3a3a}.with-controller-menu .menu-sidebar{position:fixed;top:0;left:-100%;width:clamp(260px,35vw,480px);height:100%;background:#2b2b2b;transition:left .3s ease;z-index:1000;box-shadow:4px 0 20px #0009;overflow-x:hidden}.with-controller-menu .menu-sidebar.open{left:0}.with-controller-menu .screen-container{flex:1;min-height:0;width:100%;display:flex;flex-direction:column}@media (max-width: 768px){.with-controller-menu .menu-sidebar{width:60vw}}@media (max-width: 480px){.with-controller-menu .menu-sidebar{width:80vw}}@media (max-width: 768px){.menu-sidebar{width:60vw}}@media (max-width: 480px){.menu-sidebar{width:75vw}.menu-sidebar .menu-header,.menu-sidebar .menu-item{padding:.75rem 1rem}}.menu-backdrop{position:fixed;inset:0;background:#0006;z-index:999}.menu-btn{position:fixed;top:1rem;left:1rem;background:#444;color:#fff;border:2px solid #888;padding:.5rem .75rem;font-size:1.2rem;cursor:pointer;z-index:1001}.settings-screen{padding:2rem;display:flex;flex-direction:column;align-items:center;gap:1rem;text-align:center}.settings-screen h2{font-size:2rem;margin-bottom:3rem}.settings-screen .settings-section{width:70%;border:1px solid #ccc;background:#f8f8f8;padding:1rem;text-align:left;border-radius:6px}.settings-screen .settings-section h3{margin-bottom:1rem;font-size:1.2rem;font-weight:600;color:#2c3e50;text-align:center}.settings-screen .settings-section .slider-group{display:flex;align-items:center;justify-content:space-between;margin-bottom:2rem}.settings-screen .settings-section .slider-group label{flex:1;font-weight:500;font-size:1rem}.settings-screen .settings-section .slider-group input[type=range]{flex:2;margin:0 1rem}.settings-screen .settings-section .slider-group .slider-value{width:40px;text-align:right;font-weight:500}.settings-screen .settings-section .checkbox-group{display:flex;margin:2rem 0}.settings-screen .settings-section .checkbox-group .checkbox-label{display:flex;align-items:center;gap:.75rem;font-weight:500;font-size:1rem;cursor:pointer}.settings-screen .settings-section .checkbox-group .checkbox-label input[type=checkbox]{transform:scale(1.3);cursor:pointer}.modal-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#00000080;z-index:3000;display:flex;align-items:center;justify-content:center}.modal-panel{background:#fff;padding:2rem;width:90%;max-width:400px;text-align:center;border:1px solid #ccc}.modal-panel h3{margin-bottom:1rem}.modal-panel p{margin-bottom:1.5rem}.modal-panel .modal-actions{display:flex;justify-content:space-around;gap:1rem}.modal-panel .modal-actions .btn{padding:.5rem 1.2rem;border:none;cursor:pointer;font-size:1rem}.modal-panel .modal-actions .btn.cancel{background:#e0e0e0}.modal-panel .modal-actions .btn.confirm{background:#07f;color:#fff}.slider-group{margin-top:12px;text-align:left}.slider-group label{display:block;font-weight:600;font-size:large;margin-bottom:6px;color:#2c3e50}.slider-group input[type=range]{width:70%;margin:0 6px}.slider-group .slider-value{font-weight:500;margin-left:6px}.checkbox-group{display:flex;margin:2rem 0}.checkbox-group .checkbox-label{display:flex;align-items:center;gap:.75rem;font-weight:500;font-size:1rem;cursor:pointer}.checkbox-group .checkbox-label input[type=checkbox]{transform:scale(1.3);cursor:pointer}.trackpad{flex:1 1 auto;min-width:400px;width:80%;height:200px;margin:0 2rem;background:#222;display:flex;-webkit-user-select:none;user-select:none;touch-action:none;border:3px solid #444;border-radius:12px;box-shadow:inset 0 0 8px #0006}.trackpad .trackpad-zone{flex:1;display:flex;align-items:center;justify-content:center;color:#999;font-size:1rem}.trackpad .trackpad-zone.left{border-right:1px solid #444}.trackpad .trackpad-zone.right{border-left:1px solid #444}@media (max-width: 1024px){.trackpad{height:140px;margin:0 1.5rem}}@media (max-width: 768px){.trackpad{height:130px;margin:0 1rem}}@media (max-width: 480px){.trackpad{height:120px;margin:0 .5rem}}.teleport-grid-container{width:100%;box-sizing:border-box}.teleport-grid-header{display:flex;justify-content:flex-end;align-items:center;margin-bottom:.5rem;width:100%;gap:.5rem;flex-wrap:nowrap}.teleport-floor-tabs{display:flex;gap:.5rem;overflow-x:auto;padding-bottom:.25rem;scrollbar-width:thin;scrollbar-color:#444 transparent;flex:1 1 auto;min-width:0;white-space:nowrap;scroll-behavior:smooth;-webkit-overflow-scrolling:touch}.teleport-floor-tabs::-webkit-scrollbar{height:6px}.teleport-floor-tabs::-webkit-scrollbar-track{background:transparent}.teleport-floor-tabs::-webkit-scrollbar-thumb{background:#444;border-radius:3px}.teleport-floor-tabs .floor-tab{background:#333;border:none;color:#fff;padding:.4rem .8rem;border-radius:6px;cursor:pointer;transition:background .2s ease;white-space:nowrap;flex-shrink:0}.teleport-floor-tabs .floor-tab.active{background:#666}.teleport-floor-tabs .floor-tab:hover{background:#555}.teleport-grid-controls{flex:0 0 auto;display:flex;justify-content:flex-end;align-items:center;min-width:6rem}.toggle-btn{background:#444;border:none;color:#fff;padding:.4rem .8rem;border-radius:6px;cursor:pointer;flex-shrink:0}.teleport-grid-scroll{padding-right:4px}.teleport-grid-scroll .simplebar-scrollbar:before{background-color:#535353;border-radius:4px}.teleport-grid-scroll .simplebar-scrollbar.simplebar-visible:before{opacity:1}.teleport-grid-scroll .simplebar-track.simplebar-vertical{background:#2b2b2b;width:8px;border-radius:4px}.teleport-grid-scroll .simplebar-track.simplebar-horizontal{background:#2b2b2b;height:8px;border-radius:4px}.teleport-floor-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.75rem}.teleport-card{background:#222;padding:.5rem;border-radius:8px;text-align:center;cursor:pointer;transition:background .2s ease;display:flex;flex-direction:column;align-items:center}.teleport-card:hover{background:#444}.teleport-card .teleport-img-placeholder{width:100%;height:100px;background:#333;border-radius:6px;display:flex;align-items:center;justify-content:center;margin-bottom:.5rem}.teleport-card .teleport-img-placeholder img{width:100%;height:100%;object-fit:cover;border-radius:6px}.teleport-card .teleport-img-placeholder span{color:#aaa;font-size:.8rem}.teleport-card .teleport-label{font-size:.9rem;color:#fff}.welcome-screen{position:fixed;inset:0;background:#000 no-repeat center center;background-size:cover;color:#fff;display:flex;align-items:center;justify-content:center;z-index:9}.welcome-screen .menu-box{border:2px solid #fff;padding:2rem;min-width:300px;text-align:center;background:#000000de}.welcome-screen .menu-title{font-size:2rem;margin-bottom:1.5rem;padding-bottom:.5rem;border-bottom:2px solid #fff}.welcome-screen .menu-list{display:flex;flex-direction:column;margin-top:1rem}.welcome-screen .menu-list .menu-item{font-size:1.3rem;padding:.75rem 0;border-bottom:1px solid #555;cursor:pointer;transition:background .2s,transform .1s}.welcome-screen .menu-list .menu-item:hover{background:#ffffff26}.welcome-screen .menu-list .menu-item.selected{background:#ffffff40;font-weight:700}.welcome-screen .menu-list .menu-item:last-child{border-bottom:none}.welcome-screen .menu-list.scrollable{max-height:50vh;overflow-y:auto;overflow-x:hidden}.menu-item{font-size:1.3rem;padding:.75rem 0;border-bottom:1px solid #555;cursor:pointer;transition:background .2s,transform .1s}.menu-item:hover{background:#ffffff26}.menu-item.selected{background:#ffffff40;font-weight:700}.menu-item:last-child{border-bottom:none}.welcome-screen .gallery-box{max-height:80vh;overflow:hidden}.welcome-screen .gallery-scroll{max-height:60vh;overflow-y:auto;padding-right:.5rem}.welcome-screen .gallery-section{margin-bottom:2rem}.welcome-screen .gallery-section .gallery-heading{font-size:1.4rem;text-align:left;margin-bottom:.75rem;border-bottom:1px solid #777;padding-bottom:.25rem}.welcome-screen .gallery-section .gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.75rem}.welcome-screen .gallery-section .gallery-grid .gallery-item{cursor:pointer;transition:transform .15s ease}.welcome-screen .gallery-section .gallery-grid .gallery-item img{width:100%;height:100%;border-radius:4px;object-fit:cover}.welcome-screen .gallery-section .gallery-grid .gallery-item:hover{transform:scale(1.03)}.welcome-screen .lightbox-overlay{position:fixed;inset:0;background:#000000e6;display:flex;align-items:center;justify-content:center;z-index:1000;cursor:zoom-out}.welcome-screen .lightbox-overlay .lightbox-content{position:relative;max-width:90%;max-height:90%}.welcome-screen .lightbox-overlay .lightbox-content img{width:100%;height:auto;border-radius:8px;cursor:default}.welcome-screen .lightbox-overlay .lightbox-content .lightbox-close{position:absolute;top:-40px;right:-10px;background:none;border:none;font-size:2rem;color:#fff;cursor:pointer;transition:color .2s}.welcome-screen .lightbox-overlay .lightbox-content .lightbox-close:hover{color:#ccc}*{-webkit-user-select:none;user-select:none;-webkit-user-drag:none;-webkit-tap-highlight-color:transparent}[data-simplebar]{position:relative;flex-direction:column;flex-wrap:wrap;justify-content:flex-start;align-content:flex-start;align-items:flex-start}.simplebar-wrapper{overflow:hidden;width:inherit;height:inherit;max-width:inherit;max-height:inherit}.simplebar-mask{direction:inherit;position:absolute;overflow:hidden;padding:0;margin:0;inset:0;width:auto!important;height:auto!important;z-index:0}.simplebar-offset{direction:inherit!important;box-sizing:inherit!important;resize:none!important;position:absolute;inset:0;padding:0;margin:0;-webkit-overflow-scrolling:touch}.simplebar-content-wrapper{direction:inherit;box-sizing:border-box!important;position:relative;display:block;height:100%;width:auto;max-width:100%;max-height:100%;overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.simplebar-content-wrapper::-webkit-scrollbar,.simplebar-hide-scrollbar::-webkit-scrollbar{display:none;width:0;height:0}.simplebar-content:after,.simplebar-content:before{content:" ";display:table}.simplebar-placeholder{max-height:100%;max-width:100%;width:100%;pointer-events:none}.simplebar-height-auto-observer-wrapper{box-sizing:inherit!important;height:100%;width:100%;max-width:1px;position:relative;float:left;max-height:1px;overflow:hidden;z-index:-1;padding:0;margin:0;pointer-events:none;flex-grow:inherit;flex-shrink:0;flex-basis:0}.simplebar-height-auto-observer{box-sizing:inherit;display:block;opacity:0;position:absolute;top:0;left:0;height:1000%;width:1000%;min-height:1px;min-width:1px;overflow:hidden;pointer-events:none;z-index:-1}.simplebar-track{z-index:1;position:absolute;right:0;bottom:0;pointer-events:none;overflow:hidden}[data-simplebar].simplebar-dragging,[data-simplebar].simplebar-dragging .simplebar-content{pointer-events:none;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}[data-simplebar].simplebar-dragging .simplebar-track{pointer-events:all}.simplebar-scrollbar{position:absolute;left:0;right:0;min-height:10px}.simplebar-scrollbar:before{position:absolute;content:"";background:#000;border-radius:7px;left:2px;right:2px;opacity:0;transition:opacity .2s .5s linear}.simplebar-scrollbar.simplebar-visible:before{opacity:.5;transition-delay:0s;transition-duration:0s}.simplebar-track.simplebar-vertical{top:0;width:11px}.simplebar-scrollbar:before{inset:2px}.simplebar-track.simplebar-horizontal{left:0;height:11px}.simplebar-track.simplebar-horizontal .simplebar-scrollbar{inset:0 auto 0 0;min-height:0;min-width:10px;width:auto}[data-simplebar-direction=rtl] .simplebar-track.simplebar-vertical{right:auto;left:0}.simplebar-dummy-scrollbar-size{direction:rtl;position:fixed;opacity:0;visibility:hidden;height:500px;width:500px;overflow-y:hidden;overflow-x:scroll;-ms-overflow-style:scrollbar!important}.simplebar-dummy-scrollbar-size>div{width:200%;height:200%;margin:10px 0}.simplebar-hide-scrollbar{position:fixed;left:0;visibility:hidden;overflow-y:scroll;scrollbar-width:none;-ms-overflow-style:none}
